From b6ec7a9e6425af14f736db860f7d756fb31e16c6 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 29 Mar 2020 14:35:55 +0200 Subject: [PATCH 1/2] Bump version to 214 --- supervisor/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/supervisor/const.py b/supervisor/const.py index 6c701dc57..25dbb785f 100644 --- a/supervisor/const.py +++ b/supervisor/const.py @@ -3,7 +3,7 @@ from enum import Enum from ipaddress import ip_network from pathlib import Path -SUPERVISOR_VERSION = "213" +SUPERVISOR_VERSION = "214" URL_HASSIO_ADDONS = "https://github.com/home-assistant/hassio-addons" From c94114a566702af14f4a11f67d48c6cf3a0aebb2 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 30 Mar 2020 12:34:21 +0200 Subject: [PATCH 2/2] Update panel (#1616) --- home-assistant-polymer | 2 +- .../api/panel/chunk.045f3417b78f858fff44.js | 2 ++ .../panel/chunk.045f3417b78f858fff44.js.gz | Bin 0 -> 32034 bytes .../panel/chunk.045f3417b78f858fff44.js.map | 1 + .../api/panel/chunk.b38bff4d0774d202dcad.js | 2 ++ .../panel/chunk.b38bff4d0774d202dcad.js.gz | Bin 0 -> 18635 bytes .../panel/chunk.b38bff4d0774d202dcad.js.map | 1 + supervisor/api/panel/entrypoint.js | 2 +- supervisor/api/panel/entrypoint.js.gz | Bin 1531 -> 1530 bytes supervisor/api/panel/entrypoint.js.map | 2 +- supervisor/api/panel/manifest.json | 8 ++++---- 11 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 supervisor/api/panel/chunk.045f3417b78f858fff44.js create mode 100644 supervisor/api/panel/chunk.045f3417b78f858fff44.js.gz create mode 100644 supervisor/api/panel/chunk.045f3417b78f858fff44.js.map create mode 100644 supervisor/api/panel/chunk.b38bff4d0774d202dcad.js create mode 100644 supervisor/api/panel/chunk.b38bff4d0774d202dcad.js.gz create mode 100644 supervisor/api/panel/chunk.b38bff4d0774d202dcad.js.map diff --git a/home-assistant-polymer b/home-assistant-polymer index 554c0b692..ddb525f6c 160000 --- a/home-assistant-polymer +++ b/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 554c0b692d393dc18c37e7abb28c5e178b0d14e2 +Subproject commit ddb525f6cdee0206b7d82c3133f888b1a383f90c diff --git a/supervisor/api/panel/chunk.045f3417b78f858fff44.js b/supervisor/api/panel/chunk.045f3417b78f858fff44.js new file mode 100644 index 000000000..22106c0b5 --- /dev/null +++ b/supervisor/api/panel/chunk.045f3417b78f858fff44.js @@ -0,0 +1,2 @@ +(self.webpackJsonp=self.webpackJsonp||[]).push([[10],{10:function(e,t,r){"use strict";r.d(t,"a",function(){return s}),r.d(t,"b",function(){return c}),r.d(t,"c",function(){return l});var n=r(5);function i(){var e=a(["\n /* prevent clipping of positioned elements */\n paper-dialog-scrollable {\n --paper-dialog-scrollable: {\n -webkit-overflow-scrolling: auto;\n }\n }\n\n /* force smooth scrolling for iOS 10 */\n paper-dialog-scrollable.can-scroll {\n --paper-dialog-scrollable: {\n -webkit-overflow-scrolling: touch;\n }\n }\n\n .paper-dialog-buttons {\n align-items: flex-end;\n padding: 8px;\n }\n\n @media all and (min-width: 450px) {\n ha-paper-dialog {\n min-width: 400px;\n }\n }\n\n @media all and (max-width: 450px), all and (max-height: 500px) {\n paper-dialog,\n ha-paper-dialog {\n margin: 0;\n width: 100% !important;\n max-height: calc(100% - 64px);\n\n position: fixed !important;\n bottom: 0px;\n left: 0px;\n right: 0px;\n overflow: scroll;\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n }\n\n /* mwc-dialog (ha-dialog) styles */\n ha-dialog {\n --mdc-dialog-min-width: 400px;\n --mdc-dialog-max-width: 600px;\n --mdc-dialog-heading-ink-color: var(--primary-text-color);\n --mdc-dialog-content-ink-color: var(--primary-text-color);\n --justify-action-buttons: space-between;\n }\n\n ha-dialog .form {\n padding-bottom: 24px;\n color: var(--primary-text-color);\n }\n\n /* make dialog fullscreen on small screens */\n @media all and (max-width: 450px), all and (max-height: 500px) {\n ha-dialog {\n --mdc-dialog-min-width: 100vw;\n --mdc-dialog-max-height: 100vh;\n --mdc-dialog-shape-radius: 0px;\n --vertial-align-dialog: flex-end;\n }\n }\n mwc-button.warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n .error {\n color: var(--google-red-500);\n }\n"]);return i=function(){return e},e}function o(){var e=a(["\n :host {\n @apply --paper-font-body1;\n }\n\n app-header-layout,\n ha-app-layout {\n background-color: var(--primary-background-color);\n }\n\n app-header,\n app-toolbar {\n background-color: var(--app-header-background-color);\n font-weight: 400;\n color: var(--app-header-text-color, white);\n }\n\n app-toolbar ha-menu-button + [main-title],\n app-toolbar ha-paper-icon-button-arrow-prev + [main-title],\n app-toolbar paper-icon-button + [main-title] {\n margin-left: 24px;\n }\n\n h1 {\n @apply --paper-font-title;\n }\n\n .secondary {\n color: var(--secondary-text-color);\n }\n\n .error {\n color: var(--google-red-500);\n }\n\n .warning {\n color: var(--google-red-500);\n }\n\n mwc-button.warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n\n button.link {\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n font: inherit;\n text-align: left;\n text-decoration: underline;\n cursor: pointer;\n }\n\n .card-actions a {\n text-decoration: none;\n }\n\n .card-actions .warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n\n .layout.horizontal,\n .layout.vertical {\n display: flex;\n }\n .layout.inline {\n display: inline-flex;\n }\n .layout.horizontal {\n flex-direction: row;\n }\n .layout.vertical {\n flex-direction: column;\n }\n .layout.wrap {\n flex-wrap: wrap;\n }\n .layout.no-wrap {\n flex-wrap: nowrap;\n }\n .layout.center,\n .layout.center-center {\n align-items: center;\n }\n .layout.bottom {\n align-items: flex-end;\n }\n .layout.center-justified,\n .layout.center-center {\n justify-content: center;\n }\n .flex {\n flex: 1;\n flex-basis: 0.000000001px;\n }\n .flex-auto {\n flex: 1 1 auto;\n }\n .flex-none {\n flex: none;\n }\n .layout.justified {\n justify-content: space-between;\n }\n"]);return o=function(){return e},e}function a(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var s={"paper-spinner-color":"var(--primary-color)","error-state-color":"var(--error-color)","state-icon-unavailable-color":"var(--disabled-text-color)","sidebar-text-color":"var(--primary-text-color)","sidebar-background-color":"var(--paper-listbox-background-color);","sidebar-selected-text-color":"var(--primary-color)","sidebar-selected-icon-color":"var(--primary-color)","sidebar-icon-color":"rgba(var(--rgb-primary-text-color), 0.6)","switch-checked-color":"var(--primary-color)","switch-checked-button-color":"var(--switch-checked-color, var(--primary-background-color))","switch-checked-track-color":"var(--switch-checked-color, #000000)","switch-unchecked-button-color":"var(--switch-unchecked-color, var(--primary-background-color))","switch-unchecked-track-color":"var(--switch-unchecked-color, #000000)","slider-color":"var(--primary-color)","slider-secondary-color":"var(--light-primary-color)","slider-bar-color":"var(--disabled-text-color)","label-badge-grey":"var(--paper-grey-500)","label-badge-background-color":"var(--card-background-color)","label-badge-text-color":"rgba(var(--rgb-primary-text-color), 0.8)","paper-card-background-color":"var(--card-background-color)","paper-listbox-background-color":"var(--card-background-color)","paper-item-icon-color":"var(--state-icon-color)","paper-item-icon-active-color":"var(--state-icon-active-color)","table-row-background-color":"var(--primary-background-color)","table-row-alternative-background-color":"var(--secondary-background-color)","paper-slider-knob-color":"var(--slider-color)","paper-slider-knob-start-color":"var(--slider-color)","paper-slider-pin-color":"var(--slider-color)","paper-slider-active-color":"var(--slider-color)","paper-slider-secondary-color":"var(--slider-secondary-color)","paper-slider-container-color":"var(--slider-bar-color)","data-table-background-color":"var(--card-background-color)","mdc-theme-primary":"var(--primary-color)","mdc-theme-secondary":"var(--accent-color)","mdc-theme-background":"var(--primary-background-color)","mdc-theme-surface":"var(--card-background-color)","mdc-theme-on-primary":"var(--text-primary-color)","mdc-theme-on-secondary":"var(--text-primary-color)","mdc-theme-on-surface":"var(--primary-text-color)","app-header-text-color":"var(--text-primary-color)","app-header-background-color":"var(--primary-color)","material-body-text-color":"var(--primary-text-color)","material-background-color":"var(--card-background-color)","material-secondary-background-color":"var(--secondary-background-color)"},c=Object(n.c)(o()),l=Object(n.c)(i())},102:function(e,t){},106:function(e,t,r){"use strict";var n=r(5),i=(r(92),r(107),r(47));function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(){var e=c(['\n :host {\n display: block;\n height: 100%;\n background-color: var(--primary-background-color);\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n font-size: 20px;\n height: 65px;\n padding: 0 16px;\n pointer-events: none;\n background-color: var(--app-header-background-color);\n font-weight: 400;\n color: var(--app-header-text-color, white);\n border-bottom: var(--app-header-border-bottom, none);\n box-sizing: border-box;\n }\n\n ha-menu-button,\n ha-paper-icon-button-arrow-prev,\n ::slotted([slot="toolbar-icon"]) {\n pointer-events: auto;\n }\n\n ha-paper-icon-button-arrow-prev.hidden {\n visibility: hidden;\n }\n\n [main-title] {\n margin: 0 0 0 24px;\n line-height: 20px;\n flex-grow: 1;\n }\n\n .content {\n position: relative;\n width: 100%;\n height: calc(100% - 65px);\n overflow-y: auto;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n ']);return a=function(){return e},e}function s(){var e=c(['\n
\n \n \n
\n
\n ']);return s=function(){return e},e}function c(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function d(e,t){return(d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function f(e){var t,r=v(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function p(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function h(e){return e.decorators&&e.decorators.length}function m(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function y(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function v(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===o(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!h(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n "]);return s=function(){return e},e}function c(){var e=u(["\n \n "]);return c=function(){return e},e}function l(){var e=u(["\n \n ",'\n \n
\n \n
\n ']);return l=function(){return e},e}function u(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function d(e){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e){var t,r=g(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function m(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function y(e){return e.decorators&&e.decorators.length}function v(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function b(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function g(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===o(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!y(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n .container {\n position: relative;\n display: inline-block;\n }\n\n mwc-button {\n transition: all 1s;\n }\n\n .success mwc-button {\n --mdc-theme-primary: white;\n background-color: var(--google-green-500);\n transition: none;\n }\n\n .error mwc-button {\n --mdc-theme-primary: white;\n background-color: var(--google-red-500);\n transition: none;\n }\n\n .progress {\n @apply --layout;\n @apply --layout-center-center;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n \n
\n \n \n \n \n
\n ']);return a=function(){return e},e}function s(e,t){for(var r=0;r\n\n \n\n \n\n \n"),document.head.appendChild(a.content);var s={},c=function(e,t){if(t.themes[e]){for(var r,n,o=Object.assign({},i.a,{},t.themes[e]),a={},c={},l=0,u=Object.keys(o);l\n
\n

',"

\n \n go back\n \n
\n \n "]);return f=function(){return e},e}function p(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function h(e){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function y(e,t){return(y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function v(e){var t,r=E(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function b(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function g(e){return e.decorators&&e.decorators.length}function w(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function k(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function E(e){var t=function(e,t){if("object"!==u(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==u(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===u(t)?t:String(t)}(function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!g(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n \n
\n You don\'t have any add-ons installed yet. Head over to\n \n

Add-ons

\n
\n ',"\n
\n
\n "]);return ce=function(){return e},e}function le(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function ue(e){return(ue=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function de(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function fe(e,t){return(fe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function pe(e){var t,r=be(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function he(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function me(e){return e.decorators&&e.decorators.length}function ye(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function ve(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function be(e){var t=function(e,t){if("object"!==ie(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==ie(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===ie(t)?t:String(t)}(function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!me(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;at.name?1:-1}).map(function(t){return Object(n.e)(ae(),t,e._addonTapped,e.hass,t.name,t.description,t.installed!==t.version,t.installed!==t.version?"hassio:arrow-up-bold-circle":"hassio:puzzle","started"!==t.state?"Add-on is stopped":t.installed!==t.version?"New version available":"Add-on is running",t.installed&&t.installed!==t.version?"started"===t.state?"update":"update stopped":t.installed&&"started"===t.state?"running":"stopped",Object(ne.a)(e.hass.config.version,0,105)&&t.icon?"/api/hassio/addons/".concat(t.slug,"/icon"):void 0)}):Object(n.e)(se(),this._openStore))}},{kind:"get",static:!0,key:"styles",value:function(){return[i.b,re.a,Object(n.c)(oe())]}},{kind:"method",key:"_addonTapped",value:function(e){Object(O.a)(this,"/hassio/addon/".concat(e.currentTarget.addon.slug))}},{kind:"method",key:"_openStore",value:function(){Object(O.a)(this,"/hassio/store")}}]}},n.a),r(22),r(50);function ge(){var e=_e(["\n .icon {\n --iron-icon-height: 48px;\n --iron-icon-width: 48px;\n float: right;\n margin: 0 0 2px 10px;\n }\n .update-heading {\n font-size: var(--paper-font-subhead_-_font-size);\n font-weight: 500;\n margin-bottom: 0.5em;\n }\n .warning {\n color: var(--secondary-text-color);\n }\n .card-content {\n height: calc(100% - 47px);\n box-sizing: border-box;\n }\n .card-actions {\n text-align: right;\n }\n .errors {\n color: var(--google-red-500);\n padding: 16px;\n }\n a {\n text-decoration: none;\n }\n "]);return ge=function(){return e},e}function we(e){return(we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ke(){var e=_e(['\n
\n \n
\n ']);return ke=function(){return e},e}function Ee(){var e=_e(['\n \n
\n ','\n
'," ",'
\n
\n You are currently running version ','\n
\n
\n
\n "]);return Pe=function(){return e},e}function je(){var e=_e(['\n
\n ',"\n

\n ",'\n

\n
\n ',"\n ","\n ","\n
\n
\n "]);return je=function(){return e},e}function xe(){var e=_e([""]);return xe=function(){return e},e}function _e(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Se(e){return(Se=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ce(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function De(e,t){return(De=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Te(e){var t,r=Fe(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function Ae(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function ze(e){return e.decorators&&e.decorators.length}function Re(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Ie(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Fe(e){var t=function(e,t){if("object"!==we(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==we(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===we(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!ze(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a1?"Updates Available 🎉":"Update Available 🎉",this._renderUpdateCard("Home Assistant Core",this.hassInfo.version,this.hassInfo.version_latest,"hassio/homeassistant/update","https://".concat(this.hassInfo.version_latest.includes("b")?"rc":"www",".home-assistant.io/latest-release-notes/"),"hassio:home-assistant"),this._renderUpdateCard("Supervisor",this.supervisorInfo.version,this.supervisorInfo.version_latest,"hassio/supervisor/update","https://github.com//home-assistant/hassio/releases/tag/".concat(this.supervisorInfo.version_latest)),this.hassOsInfo?this._renderUpdateCard("Operating System",this.hassOsInfo.version,this.hassOsInfo.version_latest,"hassio/os/update","https://github.com//home-assistant/hassos/releases/tag/".concat(this.hassOsInfo.version_latest)):""):Object(n.e)(xe())}},{kind:"method",key:"_renderUpdateCard",value:function(e,t,r,i,o,a){return r&&r!==t?Object(n.e)(Ee(),a?Object(n.e)(ke(),a):"",e,r,t,o,this.hass,i,this._apiCalled):Object(n.e)(Oe())}},{kind:"method",key:"_apiCalled",value:function(e){if(e.detail.success)this._error="";else{var t=e.detail.response;"object"===we(t.body)?this._error=t.body.message||"Unknown error":this._error=t.body}}},{kind:"get",static:!0,key:"styles",value:function(){return[i.b,re.a,Object(n.c)(ge())]}}]}},n.a);function Le(e){return(Le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Ne(){var e=He(["\n .content {\n margin: 0 auto;\n }\n "]);return Ne=function(){return e},e}function Ue(){var e=He(['\n
\n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n
\n \n
\n \n ']);return Ze=function(){return e},e}function et(){var e=st(['\n \n
\n You don\'t have any snapshots yet.\n
\n
\n ']);return et=function(){return e},e}function tt(){var e=st(['\n

',"

\n "]);return tt=function(){return e},e}function rt(){var e=st(['\n \n

\n Create snapshot\n

\n

\n Snapshots allow you to easily backup and restore all data of your Home\n Assistant instance.\n

\n
\n \n
\n \n Type:\n \n \n Full snapshot\n \n \n Partial snapshot\n \n \n ','\n Security:\n \n
\n \n Create\n \n
\n \n
\n\n

Available snapshots

\n
\n ',"\n
\n
\n "]);return at=function(){return e},e}function st(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function ct(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(l){return void r(l)}s.done?t(c):Promise.resolve(c).then(n,i)}function lt(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){ct(o,n,i,a,s,"next",e)}function s(e){ct(o,n,i,a,s,"throw",e)}a(void 0)})}}function ut(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function dt(e,t){return(dt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function ft(e){var t,r=vt(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function pt(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function ht(e){return e.decorators&&e.decorators.length}function mt(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function yt(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function vt(e){var t=function(e,t){if("object"!==Qe(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Qe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Qe(t)?t:String(t)}function bt(e,t,r){return(bt="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=gt(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function gt(e){return(gt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!ht(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n \n

\n ','\n

\n

\n Maintained by ','
\n \n ','\n \n

\n
\n ',"\n
\n
\n "]);return Pt=function(){return e},e}function jt(){var e=xt(['\n
\n

\n No results found in "','"\n

\n
\n ']);return jt=function(){return e},e}function xt(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function _t(e){return(_t=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function St(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Ct(e,t){return(Ct=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Dt(e){var t,r=It(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function Tt(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function At(e){return e.decorators&&e.decorators.length}function zt(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Rt(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function It(e){var t=function(e,t){if("object"!==kt(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==kt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===kt(t)?t:String(t)}var Ft=function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!At(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n
\n \n
\n
\n \n Remove\n \n
\n \n ']);return Ht=function(){return e},e}function Bt(){var e=Mt(['\n
\n

\n Repositories\n

\n

\n Configure which add-on repositories to fetch data from:\n

\n
\n ','\n\n \n
\n \n \n
\n
\n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n "]);return rr=function(){return e},e}function nr(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function ir(e){return(ir=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function or(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ar(e,t){return(ar=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function sr(e){var t,r=fr(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function cr(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function lr(e){return e.decorators&&e.decorators.length}function ur(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function dr(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function fr(e){var t=function(e,t){if("object"!==er(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==er(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===er(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!lr(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n ']);return vr=function(){return e},e}function br(){var e=gr(['\n
\n \n \n ',"\n \n
\n "]);return br=function(){return e},e}function gr(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function wr(e){return(wr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function kr(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Er(e,t){return(Er=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Or(e){var t,r=Sr(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function Pr(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function jr(e){return e.decorators&&e.decorators.length}function xr(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function _r(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Sr(e){var t=function(e,t){if("object"!==pr(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==pr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===pr(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!jr(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n "]);return Tr=function(){return e},e}function Ar(){var e=Rr(["\n \n\n \n\n ","\n "]);return Ar=function(){return e},e}function zr(){var e=Rr(["\n \n "]);return zr=function(){return e},e}function Rr(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Ir(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(l){return void r(l)}s.done?t(c):Promise.resolve(c).then(n,i)}function Fr(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){Ir(o,n,i,a,s,"next",e)}function s(e){Ir(o,n,i,a,s,"throw",e)}a(void 0)})}}function Lr(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Nr(e,t){return(Nr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Ur(e){var t,r=Vr(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function Hr(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Br(e){return e.decorators&&e.decorators.length}function Mr(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Gr(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Vr(e){var t=function(e,t){if("object"!==Cr(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Cr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Cr(t)?t:String(t)}function qr(e,t,r){return(qr="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=Wr(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function Wr(e){return(Wr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var Jr=function(e,t){return"local"===e.slug?-1:"local"===t.slug?1:"core"===e.slug?-1:"core"===t.slug?1:e.name.toUpperCase()=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;aUpdate
\n ']);return en=function(){return e},e}function tn(){var e=ln(['\n Import from USB\n ']);return tn=function(){return e},e}function rn(){var e=ln(['\n Shutdown\n ']);return rn=function(){return e},e}function nn(){var e=ln(['\n Reboot\n ']);return nn=function(){return e},e}function on(){var e=ln(['\n
Error: ',"
\n "]);return on=function(){return e},e}function an(){var e=ln(["\n \n Change hostname\n \n ']);return an=function(){return e},e}function sn(){var e=ln(["\n \n Deployment\n ","\n \n "]);return sn=function(){return e},e}function cn(){var e=ln(['\n \n
\n

Host system

\n \n \n \n \n \n \n \n \n \n \n ","\n \n
Hostname',"
System","
\n \n Hardware\n \n ',"\n ",'\n
\n
\n ',"\n ","\n ","\n ","\n
\n
\n "]);return cn=function(){return e},e}function ln(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function un(e){return(un=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function dn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function fn(e,t){return(fn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function pn(e){var t,r=bn(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function hn(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function mn(e){return e.decorators&&e.decorators.length}function yn(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function vn(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function bn(e){var t=function(e,t){if("object"!==Xr(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Xr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Xr(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!mn(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:"",n="";return Object.keys(e).forEach(function(i){"object"!==Xr(e[i])?n+="".concat(r,"- ").concat(i,": ").concat(e[i],"\n"):(n+="".concat(r,"- ").concat(i,":\n"),Array.isArray(e[i])?e[i].length&&(n+="".concat(r," - ")+e[i].join("\n".concat(r," - "))+"\n"):n+=t._objectToMarkdown(e[i]," ".concat(r)))}),n}},{kind:"method",key:"_changeHostnameClicked",value:function(){var e=this.hostInfo.hostname,t=prompt("Please enter a new hostname:",e);t&&t!==e&&this.hass.callApi("POST","hassio/host/options",{hostname:t})}}]}},n.a);function gn(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(l){return void r(l)}s.done?t(c):Promise.resolve(c).then(n,i)}function wn(e){return(wn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function kn(){var e=Sn(["\n paper-card {\n height: 100%;\n width: 100%;\n }\n .card-content {\n color: var(--primary-text-color);\n box-sizing: border-box;\n height: calc(100% - 47px);\n }\n .info {\n width: 100%;\n }\n .info td:nth-child(2) {\n text-align: right;\n }\n .errors {\n color: var(--google-red-500);\n margin-top: 16px;\n }\n "]);return kn=function(){return e},e}function En(){var e=Sn(["\n Join beta channel\n ']);return En=function(){return e},e}function On(){var e=Sn(["\n Update\n ']);return Pn=function(){return e},e}function jn(){var e=Sn(['\n
Error: ',"
\n "]);return jn=function(){return e},e}function xn(){var e=Sn(["\n \n Channel\n ","\n \n "]);return xn=function(){return e},e}function _n(){var e=Sn(['\n \n
\n

Supervisor

\n \n \n \n \n \n \n \n \n \n \n ","\n \n
Version',"
Latest version","
\n ",'\n
\n
\n Reload\n ',"\n ","\n ","\n
\n
\n "]);return _n=function(){return e},e}function Sn(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Cn(e){return(Cn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Dn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Tn(e,t){return(Tn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function An(e){var t,r=Ln(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function zn(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Rn(e){return e.decorators&&e.decorators.length}function In(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Fn(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Ln(e){var t=function(e,t){if("object"!==wn(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==wn(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===wn(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!Rn(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a',"
\n "]);return Bn=function(){return e},e}function Mn(){var e=Gn(["\n \n ",'\n
\n
\n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n

Information

\n
\n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n \n \n \n \n Dashboard\n Snapshots\n Add-on store\n System\n \n \n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a200?n.scrollTop=0:t._currentAnimationId===i&&(n.scrollTop=(r=c,-s*(r/=200)*(r-2)+a),requestAnimationFrame(e.bind(t)))}.call(t)}},{kind:"method",key:"refreshClicked",value:function(){"snapshots"===this._page?this.shadowRoot.querySelector("hassio-snapshots").refreshData():this.shadowRoot.querySelector("hassio-addon-store").refreshData()}},{kind:"get",key:"_page",value:function(){return this.route.path.substr(1)}},{kind:"get",static:!0,key:"styles",value:function(){return[i.b,Object(n.c)(xi())]}}]}},n.a),r(121));function Bi(e){return(Bi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Mi(e,t){return eo(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(c){i=!0,o=c}finally{try{n||null==s.return||s.return()}finally{if(i)throw o}}return r}(e,t)||Zi()}function Gi(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(l){return void r(l)}s.done?t(c):Promise.resolve(c).then(n,i)}function Vi(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){Gi(o,n,i,a,s,"next",e)}function s(e){Gi(o,n,i,a,s,"throw",e)}a(void 0)})}}function qi(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Wi(e,t){return(Wi=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Ji(e){var t,r=Xi(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function Yi(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function $i(e){return e.decorators&&e.decorators.length}function Ki(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Qi(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Xi(e){var t=function(e,t){if("object"!==Bi(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Bi(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Bi(t)?t:String(t)}function Zi(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function eo(e){if(Array.isArray(e))return e}function to(e,t,r){return(to="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=ro(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function ro(e){return(ro=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}customElements.get("paper-icon-button").prototype._keyBindings={};var no;!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!$i(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a2&&void 0!==arguments[2]&&arguments[2];r?history.replaceState(null,"",t):history.pushState(null,"",t),Object(n.a)(window,"location-changed",{replace:r})}},41:function(e,t,r){"use strict";var n=r(5),i=(r(22),r(8)),o=r(34),a=[60,60,24,7],s=["second","minute","hour","day"];var c=r(17);function l(e){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function u(e,t){for(var r=0;r2&&void 0!==arguments[2]?arguments[2]:{},i=((n.compareTime||new Date).getTime()-e.getTime())/1e3,o=i>=0?"past":"future";i=Math.abs(i);for(var c=0;c\n \n
\n
\n ']);return _=function(){return e},e}function S(){var e=D(['\n
\n ']);return S=function(){return e},e}function C(){var e=D(["\n ","\n ",'\n
\n
\n ','\n
\n
\n ',"\n ","\n ","\n
\n
\n "]);return C=function(){return e},e}function D(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function T(e){return(T=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function A(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function z(e,t){return(z=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function R(e){var t,r=U(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function I(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function F(e){return e.decorators&&e.decorators.length}function L(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function N(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function U(e){var t=function(e,t){if("object"!==O(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==O(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===O(t)?t:String(t)}customElements.define("ha-relative-time",E);!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!F(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n ']);return s=function(){return e},e}function c(e,t){return!t||"object"!==o(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e,t){for(var r=0;rt||Number(o)===t&&Number(a)>=r}},92:function(e,t,r){"use strict";r(24);var n=r(5),i=r(11),o=r(180),a=function(e){return e.sendMessagePromise({type:"persistent_notification/get"})},s=function(e,t){return e.subscribeEvents(function(){return a(e).then(function(e){return t.setState(e,!0)})},"persistent_notifications_updated")};function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function l(){var e=f(["\n :host {\n position: relative;\n }\n .dot {\n pointer-events: none;\n position: absolute;\n background-color: var(--accent-color);\n width: 12px;\n height: 12px;\n top: 5px;\n right: 2px;\n border-radius: 50%;\n border: 2px solid var(--app-header-background-color);\n }\n "]);return l=function(){return e},e}function u(){var e=f(['\n
\n ']);return u=function(){return e},e}function d(){var e=f(["\n \n ","\n "]);return d=function(){return e},e}function f(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function m(e){var t,r=w(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function y(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function v(e){return e.decorators&&e.decorators.length}function b(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function g(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function w(e){var t=function(e,t){if("object"!==c(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===c(t)?t:String(t)}function k(e,t,r){return(k="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=E(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function E(e){return(E=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!v(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a0},Object(o.a)("_ntf",a,s,e,t))}},{kind:"method",key:"_toggleMenu",value:function(){Object(i.a)(this,"hass-toggle-menu")}},{kind:"get",static:!0,key:"styles",value:function(){return Object(n.c)(l())}}]}},n.a)}}]); +//# sourceMappingURL=chunk.045f3417b78f858fff44.js.map \ No newline at end of file diff --git a/supervisor/api/panel/chunk.045f3417b78f858fff44.js.gz b/supervisor/api/panel/chunk.045f3417b78f858fff44.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..5890d32076cba5066c9aa658b496912adc1659aa GIT binary patch literal 32034 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 P_G{?$i=w6t_{aYNUu1|m literal 0 HcmV?d00001 diff --git a/supervisor/api/panel/chunk.045f3417b78f858fff44.js.map b/supervisor/api/panel/chunk.045f3417b78f858fff44.js.map new file mode 100644 index 000000000..83ffffb60 --- /dev/null +++ b/supervisor/api/panel/chunk.045f3417b78f858fff44.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/resources/styles.ts","webpack:///./src/layouts/hass-subpage.ts","webpack:///./src/components/ha-paper-icon-button-arrow-prev.ts","webpack:///./src/layouts/hass-loading-screen.ts","webpack:///./src/common/dom/fire_event.ts","webpack:///./src/components/buttons/ha-progress-button.js","webpack:///./src/data/hassio/snapshot.ts","webpack:///./src/data/hassio/hardware.ts","webpack:///./hassio/src/dialogs/markdown/show-dialog-hassio-markdown.ts","webpack:///./hassio/src/ansi-to-html.ts","webpack:///./src/dialogs/generic/show-dialog-box.ts","webpack:///./hassio/src/resources/hassio-style.ts","webpack:///./src/resources/ha-style.ts","webpack:///./src/common/dom/apply_themes_on_element.ts","webpack:///./src/layouts/hass-error-screen.ts","webpack:///./src/layouts/hass-router-page.ts","webpack:///./src/data/hassio/host.ts","webpack:///./src/dialogs/make-dialog-manager.ts","webpack:///./src/mixins/provide-hass-lit-mixin.ts","webpack:///./hassio/src/dashboard/hassio-addons.ts","webpack:///./hassio/src/dashboard/hassio-update.ts","webpack:///./hassio/src/dashboard/hassio-dashboard.ts","webpack:///./hassio/src/snapshots/hassio-snapshots.ts","webpack:///./hassio/src/dialogs/snapshot/show-dialog-hassio-snapshot.ts","webpack:///./hassio/src/addon-store/hassio-addon-repository.ts","webpack:///./hassio/src/components/hassio-filter-addons.ts","webpack:///./hassio/src/addon-store/hassio-repositories-editor.ts","webpack:///./src/layouts/loading-screen.ts","webpack:///./hassio/src/components/hassio-search-input.ts","webpack:///./hassio/src/addon-store/hassio-addon-store.ts","webpack:///./hassio/src/system/hassio-host-info.ts","webpack:///./hassio/src/system/hassio-supervisor-info.ts","webpack:///./hassio/src/system/hassio-supervisor-log.ts","webpack:///./hassio/src/system/hassio-system.ts","webpack:///./hassio/src/hassio-tabs-router.ts","webpack:///./hassio/src/hassio-pages-with-tabs.ts","webpack:///./src/common/dom/scroll-to-target.ts","webpack:///./hassio/src/hassio-main.ts","webpack:///./src/data/hassio/addon.ts","webpack:///./src/common/navigate.ts","webpack:///./src/common/datetime/relative_time.ts","webpack:///./src/mixins/localize-mixin.js","webpack:///./src/components/ha-relative-time.js","webpack:///./hassio/src/components/hassio-card-content.ts","webpack:///./src/data/hassio/common.ts","webpack:///./src/components/buttons/ha-call-api-button.js","webpack:///./src/data/hassio/supervisor.ts","webpack:///./src/common/config/version.ts","webpack:///./src/data/persistent_notification.ts","webpack:///./src/components/ha-menu-button.ts","webpack:///./src/common/entity/compute_domain.ts"],"names":["derivedStyles","paper-spinner-color","error-state-color","state-icon-unavailable-color","sidebar-text-color","sidebar-background-color","sidebar-selected-text-color","sidebar-selected-icon-color","sidebar-icon-color","switch-checked-color","switch-checked-button-color","switch-checked-track-color","switch-unchecked-button-color","switch-unchecked-track-color","slider-color","slider-secondary-color","slider-bar-color","label-badge-grey","label-badge-background-color","label-badge-text-color","paper-card-background-color","paper-listbox-background-color","paper-item-icon-color","paper-item-icon-active-color","table-row-background-color","table-row-alternative-background-color","paper-slider-knob-color","paper-slider-knob-start-color","paper-slider-pin-color","paper-slider-active-color","paper-slider-secondary-color","paper-slider-container-color","data-table-background-color","mdc-theme-primary","mdc-theme-secondary","mdc-theme-background","mdc-theme-surface","mdc-theme-on-primary","mdc-theme-on-secondary","mdc-theme-on-surface","app-header-text-color","app-header-background-color","material-body-text-color","material-background-color","material-secondary-background-color","haStyle","css","_templateObject","haStyleDialog","_templateObject2","customElement","property","type","Boolean","html","this","hassio","_backTapped","classMap","hidden","showBackButton","header","history","back","LitElement","paperIconButtonClass","customElements","get","HaPaperIconButtonArrowPrev","_paperIconButtonClass","_getPrototypeOf2","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_getPrototypeOf","call","apply","concat","_assertThisInitialized","_inherits","key","value","_this2","_get","prototype","setTimeout","icon","window","getComputedStyle","direction","define","rootnav","hass","narrow","_templateObject3","_handleBack","_templateObject4","__webpack_require__","d","__webpack_exports__","fireEvent","node","detail","options","event","Event","bubbles","undefined","cancelable","composed","dispatchEvent","HaProgressButton","PolymerElement","Object","progress","disabled","className","classList","$","container","add","remove","addEventListener","ev","buttonTapped","stopPropagation","tempClass","fetchHassioSnapshots","_ref","_asyncToGenerator","regeneratorRuntime","mark","_callee","wrap","_context","prev","next","t0","hassioApiResultExtractor","callApi","t1","sent","abrupt","snapshots","stop","_x","fetchHassioSnapshotInfo","_ref2","_callee2","snapshot","_context2","_x2","_x3","reloadHassioSnapshots","_ref3","_callee3","_context3","_x4","createHassioFullSnapshot","_ref4","_callee4","data","_context4","_x5","_x6","createHassioPartialSnapshot","_ref5","_callee5","_context5","_x7","_x8","fetchHassioHardwareAudio","fetchHassioHardwareInfo","showHassioMarkdownDialog","_src_common_dom_fire_event__WEBPACK_IMPORTED_MODULE_0__","element","dialogParams","dialogTag","dialogImport","e","then","bind","ANSI_HTML_STYLE","parseTextToColoredPre","text","match","pre","document","createElement","re","i","state","bold","italic","underline","strikethrough","foregroundColor","backgroundColor","addSpan","content","span","appendChild","createTextNode","exec","j","index","substring","split","forEach","colorCode","parseInt","showAlertDialog","showConfirmationDialog","_common_dom_fire_event__WEBPACK_IMPORTED_MODULE_0__","loadGenericDialog","Promise","all","showDialogHelper","extra","resolve","origCancel","cancel","origConfirm","confirm","assign","prompt","out","confirmation","hassioStyle","documentContainer","setAttribute","innerHTML","entries","map","_slicedToArray","join","cssText","head","PROCESSED_THEMES","processTheme","themeName","themes","checkHex","result","theme","styles","keys","_i","_Object$keys","prefixedKey","startsWith","rgbKey","rgbValue","replace","_m","r","g","b","prefixedRgbKey","error","HassRouterPage","hass_router_page_decorate","_initialize","_UpdatingElement","_UpdatingElement2","hass_router_page_classCallCheck","hass_router_page_getPrototypeOf","hass_router_page_assertThisInitialized","hass_router_page_inherits","F","kind","decorators","memoizeOne","route","dividerPos","path","indexOf","prefix","substr","changedProps","routerOptions","routes","initialLoad","_initialLoadDone","has","defaultPage","navigate","newPage","subpathStart","extractPage","routeOptions","beforeRender","_currentPage","lastChild","removeChild","loadProm","load","err","console","errorEl","showLoading","created","createLoadingScreen","_currentLoadProm","_createPanel","updatePageEl","_this3","preloadAll","values","hass_router_page_typeof","requestUpdate","_rebuild","oldRoute","updateComplete","_this4","tag","_pageEl","_changedProps","_computeTail","page","panelEl","_cache","cacheAll","cache","UpdatingElement","fetchHassioHostInfo","host_asyncToGenerator","response","fetchHassioHassOsInfo","LOADED","showDialog","make_dialog_manager_asyncToGenerator","root","dialogEl","provideHass","hassio_addons_templateObject","addons","sort","a","name","addon","_addonTapped","description","installed","version","atLeastVersion","config","slug","hassio_addons_templateObject2","_openStore","currentTarget","hassio_update_decorate","_LitElement","_LitElement2","HassioUpdate","hassio_update_classCallCheck","hassio_update_getPrototypeOf","hassio_update_assertThisInitialized","hassio_update_inherits","updatesAvailable","hassInfo","supervisorInfo","hassOsInfo","filter","version_latest","hassio_update_templateObject2","_error","hassio_update_templateObject3","_renderUpdateCard","includes","hassio_update_templateObject","curVersion","lastVersion","apiPath","releaseNotesUrl","_templateObject5","_templateObject6","_apiCalled","hassio_update_templateObject4","success","hassio_update_typeof","body","message","static","_templateObject7","hassio_dashboard_templateObject","hassio_dashboard_templateObject2","HassioSnapshots","checked","_updateSnapshots","hassio_snapshots_templateObject","_snapshotName","_handleTextValueChanged","_snapshotType","_handleRadioValueChanged","hassio_snapshots_templateObject2","_folderList","folder","idx","hassio_snapshots_templateObject3","_folderChecked","_addonList","hassio_snapshots_templateObject4","_addonChecked","_snapshotHasPassword","_handleCheckboxValueChanged","hassio_snapshots_templateObject5","_snapshotPassword","hassio_snapshots_templateObject6","_creatingSnapshot","_createSnapshot","_snapshots","hassio_snapshots_templateObject7","_templateObject8","_snapshotClicked","_computeDetails","date","hassio_snapshots_get","hassio_snapshots_getPrototypeOf","input","getAttribute","curIdx","folders","_data","Date","toLocaleDateString","navigator","language","weekday","year","month","day","password","finish","onDelete","_templateObject9","HassioAddonRepositoryEl","Fuse","caseSensitive","minMatchCharLength","threshold","search","filterAndSort","toUpperCase","repo","_getAddons","hassio_addon_repository_templateObject","hassio_addon_repository_templateObject2","maintainer","url","hassio_addon_repository_templateObject3","available","hassio_addon_repository_templateObject4","HassioRepositoriesEditor","repos","_sortedRepos","hassio_repositories_editor_templateObject","repeat","hassio_repositories_editor_templateObject2","computeRemoveRepoData","_repoUrl","_urlChanged","computeAddRepoData","hassio_repositories_editor_get","hassio_repositories_editor_getPrototypeOf","repoList","addons_repositories","source","list","push","hassio_repositories_editor_templateObject3","loading_screen_templateObject","loading_screen_templateObject2","hassio_search_input_templateObject","_filterInputChanged","hassio_search_input_templateObject2","_clearSearch","String","_filterChanged","target","hassio_search_input_templateObject3","sortRepos","HassioAddonStore","_repos","_addons","_filter","reloadHassioAddons","_loadData","hassio_addon_store_templateObject","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_loop","repository","hassio_addon_store_templateObject3","_iterator","Symbol","iterator","done","hassio_addon_store_templateObject2","hassio_addon_store_get","hassio_addon_store_getPrototypeOf","apiCalled","addonsInfo","fetchHassioAddonsInfo","repositories","alert","hassio_addon_store_templateObject4","hassio_host_info_templateObject","hostInfo","hostname","operating_system","deployment","hassio_host_info_templateObject2","_showHardware","features","hassio_host_info_templateObject3","_changeHostnameClicked","_errors","hassio_host_info_templateObject4","hassio_host_info_templateObject5","hassio_host_info_templateObject6","hassio_host_info_templateObject7","hassio_host_info_templateObject8","hassio_host_info_templateObject9","hassio_host_info_typeof","_objectToMarkdown","title","t2","obj","indent","isArray","curHostname","hassio_supervisor_info_templateObject","channel","hassio_supervisor_info_templateObject2","hassio_supervisor_info_templateObject3","hassio_supervisor_info_templateObject4","hassio_supervisor_info_templateObject5","hassio_supervisor_info_templateObject6","_joinBeta","hassio_supervisor_info_templateObject7","hassio_supervisor_info_typeof","eventdata","_err$body","setSupervisorOption","HassioSupervisorLog","query","hassio_supervisor_log_get","hassio_supervisor_log_getPrototypeOf","hassio_supervisor_log_templateObject","hassio_supervisor_log_templateObject2","_refresh","hassio_supervisor_log_templateObject3","fetchSupervisorLogs","_logContent","hassio_system_templateObject","hassio_system_templateObject2","dashboard","store","system","el","setProperties","HAS_REFRESH_BUTTON","_page","hassio_pages_with_tabs_templateObject","hassio_pages_with_tabs_templateObject2","refreshClicked","handlePageSelected","scroller","animationId","startTime","currentScrollTop","deltaScrollTop","item","shadowRoot","querySelector","scrollTarget","Math","random","now","scrollTop","_currentAnimationId","updateFrame","t","elapsedTime","requestAnimationFrame","refreshData","hassio_pages_with_tabs_templateObject3","_keyBindings","superClass","HassioMain","_fetchData","ingress","hassio_main_get","hassio_main_getPrototypeOf","selectedTheme","newTheme","_themes","updateStyles","ShadyCSS","styleSubtree","applyThemesOnElement","parentElement","default_theme","parent","customPanel","dockedSidebar","_e$detail","nodeName","routeTail","_supervisorInfo","_hostInfo","_hassInfo","_hassOsInfo","panel","_redirectIngress","fetchHassioSupervisorInfo","fetchHassioHomeAssistantInfo","hassio_main_slicedToArray","addonSlug","awaitAlert","createSessionPromise","hassio_main_asyncToGenerator","alertParams","action","createHassioSession","fetchHassioAddonInfo","ingress_url","location","_this5","tries","tryUpdate","min","_superClass","_temp","provide_hass_lit_mixin_classCallCheck","provide_hass_lit_mixin_getPrototypeOf","_defineProperty","provide_hass_lit_mixin_assertThisInitialized","provide_hass_lit_mixin_inherits","__provideHass","provide_hass_lit_mixin_get","fetchHassioAddonChangelog","fetchHassioAddonLogs","setHassioAddonOption","_ref6","_callee6","_context6","_x9","_x10","_x11","setHassioAddonSecurity","_ref7","_callee7","_context7","_x12","_x13","_x14","installHassioAddon","_ref8","_callee8","_context8","_x15","_x16","uninstallHassioAddon","_ref9","_callee9","_context9","_x17","_x18","_dom_fire_event__WEBPACK_IMPORTED_MODULE_0__","_node","replaceState","pushState","tests","langKey","dedupingMixin","_class","_possibleConstructorReturn","localize","Function","computed","HaRelativeTime","ha_relative_time_classCallCheck","ha_relative_time_getPrototypeOf","updateRelative","ha_relative_time_assertThisInitialized","LocalizeMixin","datetime","observer","datetimeObj","parsedDateTime","updateInterval","setInterval","clearInterval","newVal","dom","dateObj","timeDesc","delta","compareTime","getTime","tense","abs","floor","includeTense","relativeTime","showTopbar","topbarClass","iconImage","iconClass","iconTitle","HaCallApiButton","method","_buttonTapped","eventData","resp","progressButton","actionSuccess","actionError","renderRoot","cookie","session","major","minor","_version$split2","haMajor","haMinor","Number","fetchNotifications","conn","sendMessagePromise","subscribeUpdates","subscribeEvents","ntf","setState","HaMenuButton","_attachNotifOnConnect","_subscribeNotifications","_unsubNotifications","hasNotifications","_hasNotifications","states","some","entityId","computeDomain","_toggleMenu","_alwaysVisible","frontendVersion","oldHass","oldNarrow","newNarrow","style","visibility","onChange","connection","notifications","createCollection"],"mappings":"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","file":"chunk.045f3417b78f858fff44.js","sourcesContent":["import { css } from \"lit-element\";\n\nexport const derivedStyles = {\n \"paper-spinner-color\": \"var(--primary-color)\",\n \"error-state-color\": \"var(--error-color)\",\n \"state-icon-unavailable-color\": \"var(--disabled-text-color)\",\n \"sidebar-text-color\": \"var(--primary-text-color)\",\n \"sidebar-background-color\": \"var(--paper-listbox-background-color);\",\n \"sidebar-selected-text-color\": \"var(--primary-color)\",\n \"sidebar-selected-icon-color\": \"var(--primary-color)\",\n \"sidebar-icon-color\": \"rgba(var(--rgb-primary-text-color), 0.6)\",\n \"switch-checked-color\": \"var(--primary-color)\",\n \"switch-checked-button-color\":\n \"var(--switch-checked-color, var(--primary-background-color))\",\n \"switch-checked-track-color\": \"var(--switch-checked-color, #000000)\",\n \"switch-unchecked-button-color\":\n \"var(--switch-unchecked-color, var(--primary-background-color))\",\n \"switch-unchecked-track-color\": \"var(--switch-unchecked-color, #000000)\",\n \"slider-color\": \"var(--primary-color)\",\n \"slider-secondary-color\": \"var(--light-primary-color)\",\n \"slider-bar-color\": \"var(--disabled-text-color)\",\n \"label-badge-grey\": \"var(--paper-grey-500)\",\n \"label-badge-background-color\": \"var(--card-background-color)\",\n \"label-badge-text-color\": \"rgba(var(--rgb-primary-text-color), 0.8)\",\n \"paper-card-background-color\": \"var(--card-background-color)\",\n \"paper-listbox-background-color\": \"var(--card-background-color)\",\n \"paper-item-icon-color\": \"var(--state-icon-color)\",\n \"paper-item-icon-active-color\": \"var(--state-icon-active-color)\",\n \"table-row-background-color\": \"var(--primary-background-color)\",\n \"table-row-alternative-background-color\": \"var(--secondary-background-color)\",\n \"paper-slider-knob-color\": \"var(--slider-color)\",\n \"paper-slider-knob-start-color\": \"var(--slider-color)\",\n \"paper-slider-pin-color\": \"var(--slider-color)\",\n \"paper-slider-active-color\": \"var(--slider-color)\",\n \"paper-slider-secondary-color\": \"var(--slider-secondary-color)\",\n \"paper-slider-container-color\": \"var(--slider-bar-color)\",\n \"data-table-background-color\": \"var(--card-background-color)\",\n \"mdc-theme-primary\": \"var(--primary-color)\",\n \"mdc-theme-secondary\": \"var(--accent-color)\",\n \"mdc-theme-background\": \"var(--primary-background-color)\",\n \"mdc-theme-surface\": \"var(--card-background-color)\",\n \"mdc-theme-on-primary\": \"var(--text-primary-color)\",\n \"mdc-theme-on-secondary\": \"var(--text-primary-color)\",\n \"mdc-theme-on-surface\": \"var(--primary-text-color)\",\n \"app-header-text-color\": \"var(--text-primary-color)\",\n \"app-header-background-color\": \"var(--primary-color)\",\n \"material-body-text-color\": \"var(--primary-text-color)\",\n \"material-background-color\": \"var(--card-background-color)\",\n \"material-secondary-background-color\": \"var(--secondary-background-color)\",\n};\n\nexport const haStyle = css`\n :host {\n @apply --paper-font-body1;\n }\n\n app-header-layout,\n ha-app-layout {\n background-color: var(--primary-background-color);\n }\n\n app-header,\n app-toolbar {\n background-color: var(--app-header-background-color);\n font-weight: 400;\n color: var(--app-header-text-color, white);\n }\n\n app-toolbar ha-menu-button + [main-title],\n app-toolbar ha-paper-icon-button-arrow-prev + [main-title],\n app-toolbar paper-icon-button + [main-title] {\n margin-left: 24px;\n }\n\n h1 {\n @apply --paper-font-title;\n }\n\n .secondary {\n color: var(--secondary-text-color);\n }\n\n .error {\n color: var(--google-red-500);\n }\n\n .warning {\n color: var(--google-red-500);\n }\n\n mwc-button.warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n\n button.link {\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n font: inherit;\n text-align: left;\n text-decoration: underline;\n cursor: pointer;\n }\n\n .card-actions a {\n text-decoration: none;\n }\n\n .card-actions .warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n\n .layout.horizontal,\n .layout.vertical {\n display: flex;\n }\n .layout.inline {\n display: inline-flex;\n }\n .layout.horizontal {\n flex-direction: row;\n }\n .layout.vertical {\n flex-direction: column;\n }\n .layout.wrap {\n flex-wrap: wrap;\n }\n .layout.no-wrap {\n flex-wrap: nowrap;\n }\n .layout.center,\n .layout.center-center {\n align-items: center;\n }\n .layout.bottom {\n align-items: flex-end;\n }\n .layout.center-justified,\n .layout.center-center {\n justify-content: center;\n }\n .flex {\n flex: 1;\n flex-basis: 0.000000001px;\n }\n .flex-auto {\n flex: 1 1 auto;\n }\n .flex-none {\n flex: none;\n }\n .layout.justified {\n justify-content: space-between;\n }\n`;\n\nexport const haStyleDialog = css`\n /* prevent clipping of positioned elements */\n paper-dialog-scrollable {\n --paper-dialog-scrollable: {\n -webkit-overflow-scrolling: auto;\n }\n }\n\n /* force smooth scrolling for iOS 10 */\n paper-dialog-scrollable.can-scroll {\n --paper-dialog-scrollable: {\n -webkit-overflow-scrolling: touch;\n }\n }\n\n .paper-dialog-buttons {\n align-items: flex-end;\n padding: 8px;\n }\n\n @media all and (min-width: 450px) {\n ha-paper-dialog {\n min-width: 400px;\n }\n }\n\n @media all and (max-width: 450px), all and (max-height: 500px) {\n paper-dialog,\n ha-paper-dialog {\n margin: 0;\n width: 100% !important;\n max-height: calc(100% - 64px);\n\n position: fixed !important;\n bottom: 0px;\n left: 0px;\n right: 0px;\n overflow: scroll;\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n }\n\n /* mwc-dialog (ha-dialog) styles */\n ha-dialog {\n --mdc-dialog-min-width: 400px;\n --mdc-dialog-max-width: 600px;\n --mdc-dialog-heading-ink-color: var(--primary-text-color);\n --mdc-dialog-content-ink-color: var(--primary-text-color);\n --justify-action-buttons: space-between;\n }\n\n ha-dialog .form {\n padding-bottom: 24px;\n color: var(--primary-text-color);\n }\n\n /* make dialog fullscreen on small screens */\n @media all and (max-width: 450px), all and (max-height: 500px) {\n ha-dialog {\n --mdc-dialog-min-width: 100vw;\n --mdc-dialog-max-height: 100vh;\n --mdc-dialog-shape-radius: 0px;\n --vertial-align-dialog: flex-end;\n }\n }\n mwc-button.warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n .error {\n color: var(--google-red-500);\n }\n`;\n","import {\n LitElement,\n property,\n TemplateResult,\n html,\n customElement,\n css,\n CSSResult,\n} from \"lit-element\";\nimport \"../components/ha-menu-button\";\nimport \"../components/ha-paper-icon-button-arrow-prev\";\nimport { classMap } from \"lit-html/directives/class-map\";\n\n@customElement(\"hass-subpage\")\nclass HassSubpage extends LitElement {\n @property()\n public header?: string;\n @property({ type: Boolean })\n public showBackButton = true;\n @property({ type: Boolean })\n public hassio = false;\n\n protected render(): TemplateResult {\n return html`\n

\n \n\n
${this.header}
\n \n
\n
\n `;\n }\n\n private _backTapped(): void {\n history.back();\n }\n\n static get styles(): CSSResult {\n return css`\n :host {\n display: block;\n height: 100%;\n background-color: var(--primary-background-color);\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n font-size: 20px;\n height: 65px;\n padding: 0 16px;\n pointer-events: none;\n background-color: var(--app-header-background-color);\n font-weight: 400;\n color: var(--app-header-text-color, white);\n border-bottom: var(--app-header-border-bottom, none);\n box-sizing: border-box;\n }\n\n ha-menu-button,\n ha-paper-icon-button-arrow-prev,\n ::slotted([slot=\"toolbar-icon\"]) {\n pointer-events: auto;\n }\n\n ha-paper-icon-button-arrow-prev.hidden {\n visibility: hidden;\n }\n\n [main-title] {\n margin: 0 0 0 24px;\n line-height: 20px;\n flex-grow: 1;\n }\n\n .content {\n position: relative;\n width: 100%;\n height: calc(100% - 65px);\n overflow-y: auto;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hass-subpage\": HassSubpage;\n }\n}\n","import \"@polymer/paper-icon-button/paper-icon-button\";\nimport { Constructor } from \"../types\";\n// Not duplicate, this is for typing.\n// tslint:disable-next-line\nimport { PaperIconButtonElement } from \"@polymer/paper-icon-button/paper-icon-button\";\n\nconst paperIconButtonClass = customElements.get(\n \"paper-icon-button\"\n) as Constructor;\n\nexport class HaPaperIconButtonArrowPrev extends paperIconButtonClass {\n public hassio?: boolean;\n\n public connectedCallback() {\n super.connectedCallback();\n\n // wait to check for direction since otherwise direction is wrong even though top level is RTL\n setTimeout(() => {\n this.icon =\n window.getComputedStyle(this).direction === \"ltr\"\n ? this.hassio\n ? \"hassio:arrow-left\"\n : \"hass:arrow-left\"\n : this.hassio\n ? \"hassio:arrow-right\"\n : \"hass:arrow-right\";\n }, 100);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-paper-icon-button-arrow-prev\": HaPaperIconButtonArrowPrev;\n }\n}\n\ncustomElements.define(\n \"ha-paper-icon-button-arrow-prev\",\n HaPaperIconButtonArrowPrev\n);\n","import \"@polymer/app-layout/app-toolbar/app-toolbar\";\nimport \"@polymer/paper-spinner/paper-spinner-lite\";\nimport {\n LitElement,\n TemplateResult,\n html,\n CSSResultArray,\n css,\n customElement,\n property,\n} from \"lit-element\";\nimport \"../components/ha-menu-button\";\nimport \"../components/ha-paper-icon-button-arrow-prev\";\nimport { haStyle } from \"../resources/styles\";\nimport { HomeAssistant } from \"../types\";\n\n@customElement(\"hass-loading-screen\")\nclass HassLoadingScreen extends LitElement {\n @property({ type: Boolean }) public rootnav? = false;\n @property() public hass?: HomeAssistant;\n @property() public narrow?: boolean;\n\n protected render(): TemplateResult {\n return html`\n \n ${this.rootnav\n ? html`\n \n `\n : html`\n \n `}\n \n
\n \n
\n `;\n }\n\n private _handleBack() {\n history.back();\n }\n\n static get styles(): CSSResultArray {\n return [\n haStyle,\n css`\n :host {\n display: block;\n height: 100%;\n background-color: var(--primary-background-color);\n }\n .content {\n height: calc(100% - 64px);\n display: flex;\n align-items: center;\n justify-content: center;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hass-loading-screen\": HassLoadingScreen;\n }\n}\n","// Polymer legacy event helpers used courtesy of the Polymer project.\n//\n// Copyright (c) 2017 The Polymer Authors. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\ndeclare global {\n // tslint:disable-next-line\n interface HASSDomEvents {}\n}\n\nexport type ValidHassDomEvent = keyof HASSDomEvents;\n\nexport interface HASSDomEvent extends Event {\n detail: T;\n}\n\n/**\n * Dispatches a custom event with an optional detail value.\n *\n * @param {string} type Name of event type.\n * @param {*=} detail Detail value containing event-specific\n * payload.\n * @param {{ bubbles: (boolean|undefined),\n * cancelable: (boolean|undefined),\n * composed: (boolean|undefined) }=}\n * options Object specifying options. These may include:\n * `bubbles` (boolean, defaults to `true`),\n * `cancelable` (boolean, defaults to false), and\n * `node` on which to fire the event (HTMLElement, defaults to `this`).\n * @return {Event} The new event that was fired.\n */\nexport const fireEvent = (\n node: HTMLElement | Window,\n type: HassEvent,\n detail?: HASSDomEvents[HassEvent],\n options?: {\n bubbles?: boolean;\n cancelable?: boolean;\n composed?: boolean;\n }\n) => {\n options = options || {};\n // @ts-ignore\n detail = detail === null || detail === undefined ? {} : detail;\n const event = new Event(type, {\n bubbles: options.bubbles === undefined ? true : options.bubbles,\n cancelable: Boolean(options.cancelable),\n composed: options.composed === undefined ? true : options.composed,\n });\n (event as any).detail = detail;\n node.dispatchEvent(event);\n return event;\n};\n","import \"@material/mwc-button\";\nimport \"@polymer/paper-spinner/paper-spinner\";\nimport { html } from \"@polymer/polymer/lib/utils/html-tag\";\nimport { PolymerElement } from \"@polymer/polymer/polymer-element\";\n\nclass HaProgressButton extends PolymerElement {\n static get template() {\n return html`\n \n
\n \n \n \n \n
\n `;\n }\n\n static get properties() {\n return {\n hass: {\n type: Object,\n },\n\n progress: {\n type: Boolean,\n value: false,\n },\n\n disabled: {\n type: Boolean,\n value: false,\n },\n };\n }\n\n tempClass(className) {\n var classList = this.$.container.classList;\n classList.add(className);\n setTimeout(() => {\n classList.remove(className);\n }, 1000);\n }\n\n ready() {\n super.ready();\n this.addEventListener(\"click\", (ev) => this.buttonTapped(ev));\n }\n\n buttonTapped(ev) {\n if (this.progress) ev.stopPropagation();\n }\n\n actionSuccess() {\n this.tempClass(\"success\");\n }\n\n actionError() {\n this.tempClass(\"error\");\n }\n\n computeDisabled(disabled, progress) {\n return disabled || progress;\n }\n}\n\ncustomElements.define(\"ha-progress-button\", HaProgressButton);\n","import { HomeAssistant } from \"../../types\";\nimport { HassioResponse, hassioApiResultExtractor } from \"./common\";\n\nexport interface HassioSnapshot {\n slug: string;\n date: string;\n name: string;\n type: \"full\" | \"partial\";\n protected: boolean;\n}\n\nexport interface HassioSnapshotDetail extends HassioSnapshot {\n size: number;\n homeassistant: string;\n addons: Array<{\n slug: \"ADDON_SLUG\";\n name: \"NAME\";\n version: \"INSTALLED_VERSION\";\n size: \"SIZE_IN_MB\";\n }>;\n repositories: string[];\n folders: string[];\n}\n\nexport interface HassioFullSnapshotCreateParams {\n name: string;\n password?: string;\n}\nexport interface HassioPartialSnapshotCreateParams {\n name: string;\n folders: string[];\n addons: string[];\n password?: string;\n}\n\nexport const fetchHassioSnapshots = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/snapshots\"\n )\n ).snapshots;\n};\n\nexport const fetchHassioSnapshotInfo = async (\n hass: HomeAssistant,\n snapshot: string\n) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n `hassio/snapshots/${snapshot}/info`\n )\n );\n};\n\nexport const reloadHassioSnapshots = async (hass: HomeAssistant) => {\n await hass.callApi>(\"POST\", `hassio/snapshots/reload`);\n};\n\nexport const createHassioFullSnapshot = async (\n hass: HomeAssistant,\n data: HassioFullSnapshotCreateParams\n) => {\n await hass.callApi>(\n \"POST\",\n `hassio/snapshots/new/full`,\n data\n );\n};\n\nexport const createHassioPartialSnapshot = async (\n hass: HomeAssistant,\n data: HassioFullSnapshotCreateParams\n) => {\n await hass.callApi>(\n \"POST\",\n `hassio/snapshots/new/partial`,\n data\n );\n};\n","import { HomeAssistant } from \"../../types\";\nimport { HassioResponse, hassioApiResultExtractor } from \"./common\";\n\nexport interface HassioHardwareAudioDevice {\n device?: string | null;\n name: string;\n}\n\ninterface HassioHardwareAudioList {\n audio: {\n input: { [key: string]: string };\n output: { [key: string]: string };\n };\n}\n\nexport interface HassioHardwareInfo {\n serial: string[];\n input: string[];\n disk: string[];\n gpio: string[];\n audio: object;\n}\n\nexport const fetchHassioHardwareAudio = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/hardware/audio\"\n )\n );\n};\n\nexport const fetchHassioHardwareInfo = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/hardware/info\"\n )\n );\n};\n","import { fireEvent } from \"../../../../src/common/dom/fire_event\";\n\nexport interface HassioMarkdownDialogParams {\n title: string;\n content: string;\n}\n\nexport const showHassioMarkdownDialog = (\n element: HTMLElement,\n dialogParams: HassioMarkdownDialogParams\n): void => {\n fireEvent(element, \"show-dialog\", {\n dialogTag: \"dialog-hassio-markdown\",\n dialogImport: () =>\n import(\n /* webpackChunkName: \"dialog-hassio-markdown\" */ \"./dialog-hassio-markdown\"\n ),\n dialogParams,\n });\n};\n","import { css } from \"lit-element\";\n\ninterface State {\n bold: boolean;\n italic: boolean;\n underline: boolean;\n strikethrough: boolean;\n foregroundColor: null | string;\n backgroundColor: null | string;\n}\n\nexport const ANSI_HTML_STYLE = css`\n .bold {\n font-weight: bold;\n }\n .italic {\n font-style: italic;\n }\n .underline {\n text-decoration: underline;\n }\n .strikethrough {\n text-decoration: line-through;\n }\n .underline.strikethrough {\n text-decoration: underline line-through;\n }\n .fg-red {\n color: rgb(222, 56, 43);\n }\n .fg-green {\n color: rgb(57, 181, 74);\n }\n .fg-yellow {\n color: rgb(255, 199, 6);\n }\n .fg-blue {\n color: rgb(0, 111, 184);\n }\n .fg-magenta {\n color: rgb(118, 38, 113);\n }\n .fg-cyan {\n color: rgb(44, 181, 233);\n }\n .fg-white {\n color: rgb(204, 204, 204);\n }\n .bg-black {\n background-color: rgb(0, 0, 0);\n }\n .bg-red {\n background-color: rgb(222, 56, 43);\n }\n .bg-green {\n background-color: rgb(57, 181, 74);\n }\n .bg-yellow {\n background-color: rgb(255, 199, 6);\n }\n .bg-blue {\n background-color: rgb(0, 111, 184);\n }\n .bg-magenta {\n background-color: rgb(118, 38, 113);\n }\n .bg-cyan {\n background-color: rgb(44, 181, 233);\n }\n .bg-white {\n background-color: rgb(204, 204, 204);\n }\n`;\n\nexport function parseTextToColoredPre(text) {\n const pre = document.createElement(\"pre\");\n const re = /\\033(?:\\[(.*?)[@-~]|\\].*?(?:\\007|\\033\\\\))/g;\n let i = 0;\n\n const state: State = {\n bold: false,\n italic: false,\n underline: false,\n strikethrough: false,\n foregroundColor: null,\n backgroundColor: null,\n };\n\n const addSpan = (content) => {\n const span = document.createElement(\"span\");\n if (state.bold) {\n span.classList.add(\"bold\");\n }\n if (state.italic) {\n span.classList.add(\"italic\");\n }\n if (state.underline) {\n span.classList.add(\"underline\");\n }\n if (state.strikethrough) {\n span.classList.add(\"strikethrough\");\n }\n if (state.foregroundColor !== null) {\n span.classList.add(`fg-${state.foregroundColor}`);\n }\n if (state.backgroundColor !== null) {\n span.classList.add(`bg-${state.backgroundColor}`);\n }\n span.appendChild(document.createTextNode(content));\n pre.appendChild(span);\n };\n\n /* eslint-disable no-cond-assign */\n let match;\n // tslint:disable-next-line\n while ((match = re.exec(text)) !== null) {\n const j = match!.index;\n addSpan(text.substring(i, j));\n i = j + match[0].length;\n\n if (match[1] === undefined) {\n continue;\n }\n\n match[1].split(\";\").forEach((colorCode: string) => {\n switch (parseInt(colorCode, 10)) {\n case 0:\n // reset\n state.bold = false;\n state.italic = false;\n state.underline = false;\n state.strikethrough = false;\n state.foregroundColor = null;\n state.backgroundColor = null;\n break;\n case 1:\n state.bold = true;\n break;\n case 3:\n state.italic = true;\n break;\n case 4:\n state.underline = true;\n break;\n case 9:\n state.strikethrough = true;\n break;\n case 22:\n state.bold = false;\n break;\n case 23:\n state.italic = false;\n break;\n case 24:\n state.underline = false;\n break;\n case 29:\n state.strikethrough = false;\n break;\n case 30:\n // foreground black\n state.foregroundColor = null;\n break;\n case 31:\n state.foregroundColor = \"red\";\n break;\n case 32:\n state.foregroundColor = \"green\";\n break;\n case 33:\n state.foregroundColor = \"yellow\";\n break;\n case 34:\n state.foregroundColor = \"blue\";\n break;\n case 35:\n state.foregroundColor = \"magenta\";\n break;\n case 36:\n state.foregroundColor = \"cyan\";\n break;\n case 37:\n state.foregroundColor = \"white\";\n break;\n case 39:\n // foreground reset\n state.foregroundColor = null;\n break;\n case 40:\n state.backgroundColor = \"black\";\n break;\n case 41:\n state.backgroundColor = \"red\";\n break;\n case 42:\n state.backgroundColor = \"green\";\n break;\n case 43:\n state.backgroundColor = \"yellow\";\n break;\n case 44:\n state.backgroundColor = \"blue\";\n break;\n case 45:\n state.backgroundColor = \"magenta\";\n break;\n case 46:\n state.backgroundColor = \"cyan\";\n break;\n case 47:\n state.backgroundColor = \"white\";\n break;\n case 49:\n // background reset\n state.backgroundColor = null;\n break;\n }\n });\n }\n addSpan(text.substring(i));\n\n return pre;\n}\n","import { fireEvent } from \"../../common/dom/fire_event\";\n\ninterface BaseDialogParams {\n confirmText?: string;\n text?: string;\n title?: string;\n}\n\nexport interface AlertDialogParams extends BaseDialogParams {\n confirm?: () => void;\n}\n\nexport interface ConfirmationDialogParams extends BaseDialogParams {\n dismissText?: string;\n confirm?: () => void;\n cancel?: () => void;\n}\n\nexport interface PromptDialogParams extends BaseDialogParams {\n inputLabel?: string;\n inputType?: string;\n defaultValue?: string;\n confirm?: (out?: string) => void;\n}\n\nexport interface DialogParams\n extends ConfirmationDialogParams,\n PromptDialogParams {\n confirm?: (out?: string) => void;\n confirmation?: boolean;\n prompt?: boolean;\n}\n\nexport const loadGenericDialog = () =>\n import(/* webpackChunkName: \"confirmation\" */ \"./dialog-box\");\n\nconst showDialogHelper = (\n element: HTMLElement,\n dialogParams: DialogParams,\n extra?: {\n confirmation?: DialogParams[\"confirmation\"];\n prompt?: DialogParams[\"prompt\"];\n }\n) =>\n new Promise((resolve) => {\n const origCancel = dialogParams.cancel;\n const origConfirm = dialogParams.confirm;\n\n fireEvent(element, \"show-dialog\", {\n dialogTag: \"dialog-box\",\n dialogImport: loadGenericDialog,\n dialogParams: {\n ...dialogParams,\n ...extra,\n cancel: () => {\n resolve(extra?.prompt ? null : false);\n if (origCancel) {\n origCancel();\n }\n },\n confirm: (out) => {\n resolve(extra?.prompt ? out : true);\n if (origConfirm) {\n origConfirm(out);\n }\n },\n },\n });\n });\n\nexport const showAlertDialog = (\n element: HTMLElement,\n dialogParams: AlertDialogParams\n) => showDialogHelper(element, dialogParams);\n\nexport const showConfirmationDialog = (\n element: HTMLElement,\n dialogParams: ConfirmationDialogParams\n) =>\n showDialogHelper(element, dialogParams, { confirmation: true }) as Promise<\n boolean\n >;\n\nexport const showPromptDialog = (\n element: HTMLElement,\n dialogParams: PromptDialogParams\n) =>\n showDialogHelper(element, dialogParams, { prompt: true }) as Promise<\n null | string\n >;\n","import { css } from \"lit-element\";\n\nexport const hassioStyle = css`\n .content {\n margin: 8px;\n }\n h1 {\n color: var(--primary-text-color);\n font-size: 2em;\n margin-bottom: 8px;\n font-family: var(--paper-font-headline_-_font-family);\n -webkit-font-smoothing: var(--paper-font-headline_-_-webkit-font-smoothing);\n font-size: var(--paper-font-headline_-_font-size);\n font-weight: var(--paper-font-headline_-_font-weight);\n letter-spacing: var(--paper-font-headline_-_letter-spacing);\n line-height: var(--paper-font-headline_-_line-height);\n padding-left: 8px;\n }\n .description {\n margin-top: 4px;\n padding-left: 8px;\n }\n .card-group {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n grid-gap: 8px;\n }\n @media screen and (min-width: 640px) {\n .card-group {\n grid-template-columns: repeat(auto-fit, minmax(300px, 0.5fr));\n }\n }\n @media screen and (min-width: 1020px) {\n .card-group {\n grid-template-columns: repeat(auto-fit, minmax(300px, 0.333fr));\n }\n }\n @media screen and (min-width: 1300px) {\n .card-group {\n grid-template-columns: repeat(auto-fit, minmax(300px, 0.25fr));\n }\n }\n ha-call-api-button {\n font-weight: 500;\n color: var(--primary-color);\n }\n .error {\n color: var(--error-color);\n margin-top: 16px;\n }\n`;\n","import \"@polymer/paper-styles/paper-styles\";\nimport \"@polymer/polymer/lib/elements/custom-style\";\nimport { haStyle, haStyleDialog, derivedStyles } from \"./styles\";\n\nconst documentContainer = document.createElement(\"template\");\ndocumentContainer.setAttribute(\"style\", \"display: none;\");\n\ndocumentContainer.innerHTML = `\n \n\n \n\n \n\n \n`;\n\ndocument.head.appendChild(documentContainer.content);\n","import { derivedStyles } from \"../../resources/styles\";\nimport { HomeAssistant, Theme } from \"../../types\";\n\ninterface ProcessedTheme {\n keys: { [key: string]: \"\" };\n styles: { [key: string]: string };\n}\n\nconst hexToRgb = (hex: string): string | null => {\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const checkHex = hex.replace(shorthandRegex, (_m, r, g, b) => {\n return r + r + g + g + b + b;\n });\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(checkHex);\n return result\n ? `${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(\n result[3],\n 16\n )}`\n : null;\n};\n\nlet PROCESSED_THEMES: { [key: string]: ProcessedTheme } = {};\n\n/**\n * Apply a theme to an element by setting the CSS variables on it.\n *\n * element: Element to apply theme on.\n * themes: HASS Theme information\n * selectedTheme: selected theme.\n */\nexport const applyThemesOnElement = (\n element,\n themes: HomeAssistant[\"themes\"],\n selectedTheme?: string\n) => {\n const newTheme = selectedTheme\n ? PROCESSED_THEMES[selectedTheme] || processTheme(selectedTheme, themes)\n : undefined;\n\n if (!element._themes && !newTheme) {\n // No styles to reset, and no styles to set\n return;\n }\n\n // Add previous set keys to reset them, and new theme\n const styles = { ...element._themes, ...newTheme?.styles };\n element._themes = newTheme?.keys;\n\n // Set and/or reset styles\n if (element.updateStyles) {\n element.updateStyles(styles);\n } else if (window.ShadyCSS) {\n // Implement updateStyles() method of Polymer elements\n window.ShadyCSS.styleSubtree(/** @type {!HTMLElement} */ element, styles);\n }\n};\n\nconst processTheme = (\n themeName: string,\n themes: HomeAssistant[\"themes\"]\n): ProcessedTheme | undefined => {\n if (!themes.themes[themeName]) {\n return;\n }\n const theme: Theme = {\n ...derivedStyles,\n ...themes.themes[themeName],\n };\n const styles = {};\n const keys = {};\n for (const key of Object.keys(theme)) {\n const prefixedKey = `--${key}`;\n const value = theme[key];\n styles[prefixedKey] = value;\n keys[prefixedKey] = \"\";\n\n // Try to create a rgb value for this key if it is a hex color\n if (!value.startsWith(\"#\")) {\n // Not a hex color\n continue;\n }\n const rgbKey = `rgb-${key}`;\n if (theme[rgbKey] !== undefined) {\n // Theme has it's own rgb value\n continue;\n }\n const rgbValue = hexToRgb(value);\n if (rgbValue !== null) {\n const prefixedRgbKey = `--${rgbKey}`;\n styles[prefixedRgbKey] = rgbValue;\n keys[prefixedRgbKey] = \"\";\n }\n }\n PROCESSED_THEMES[themeName] = { styles, keys };\n return { styles, keys };\n};\n\nexport const invalidateThemeCache = () => {\n PROCESSED_THEMES = {};\n};\n","import {\n LitElement,\n CSSResultArray,\n css,\n TemplateResult,\n html,\n property,\n customElement,\n} from \"lit-element\";\nimport \"@material/mwc-button\";\nimport \"./hass-subpage\";\n\n@customElement(\"hass-error-screen\")\nclass HassErrorScreen extends LitElement {\n @property()\n public error?: string;\n\n protected render(): TemplateResult {\n return html`\n \n
\n

${this.error}

\n \n go back\n \n
\n
\n `;\n }\n\n private _backTapped(): void {\n history.back();\n }\n\n static get styles(): CSSResultArray {\n return [\n css`\n .content {\n height: calc(100% - 64px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hass-error-screen\": HassErrorScreen;\n }\n}\n","import { UpdatingElement, property, PropertyValues } from \"lit-element\";\nimport \"./hass-error-screen\";\nimport \"./hass-loading-screen\";\nimport { Route } from \"../types\";\nimport { navigate } from \"../common/navigate\";\nimport memoizeOne from \"memoize-one\";\n\nconst extractPage = (path: string, defaultPage: string) => {\n if (path === \"\") {\n return defaultPage;\n }\n const subpathStart = path.indexOf(\"/\", 1);\n return subpathStart === -1\n ? path.substr(1)\n : path.substr(1, subpathStart - 1);\n};\n\nexport interface RouteOptions {\n // HTML tag of the route page.\n tag: string;\n // Function to load the page.\n load?: () => Promise;\n cache?: boolean;\n}\n\nexport interface RouterOptions {\n // The default route to show if path does not define a page.\n defaultPage?: string;\n // If all routes should be preloaded\n preloadAll?: boolean;\n // If a route has been shown, should we keep the element in memory\n cacheAll?: boolean;\n // Should we show a loading spinner while we load the element for the route\n showLoading?: boolean;\n // Promise that resolves when the initial data is loaded which is needed to show any route.\n initialLoad?: () => Promise;\n // Hook that is called before rendering a new route. Allowing redirects.\n // If string returned, that page will be rendered instead.\n beforeRender?: (page: string) => string | undefined;\n routes: {\n // If it's a string, it is another route whose options should be adopted.\n [route: string]: RouteOptions | string;\n };\n}\n\n// Time to wait for code to load before we show loading screen.\nconst LOADING_SCREEN_THRESHOLD = 400; // ms\n\nexport class HassRouterPage extends UpdatingElement {\n @property() public route?: Route;\n\n protected routerOptions!: RouterOptions;\n\n protected _currentPage = \"\";\n private _currentLoadProm?: Promise;\n private _cache = {};\n private _initialLoadDone = false;\n private _computeTail = memoizeOne((route: Route) => {\n const dividerPos = route.path.indexOf(\"/\", 1);\n return dividerPos === -1\n ? {\n prefix: route.prefix + route.path,\n path: \"\",\n }\n : {\n prefix: route.prefix + route.path.substr(0, dividerPos),\n path: route.path.substr(dividerPos),\n };\n });\n\n protected update(changedProps: PropertyValues) {\n super.update(changedProps);\n\n const routerOptions = this.routerOptions || { routes: {} };\n\n if (routerOptions && routerOptions.initialLoad && !this._initialLoadDone) {\n return;\n }\n\n if (!changedProps.has(\"route\")) {\n // Do not update if we have a currentLoadProm, because that means\n // that there is still an old panel shown and we're moving to a new one.\n if (this.lastChild && !this._currentLoadProm) {\n this.updatePageEl(this.lastChild, changedProps);\n }\n return;\n }\n\n const route = this.route;\n const defaultPage = routerOptions.defaultPage;\n\n if (route && route.path === \"\" && defaultPage !== undefined) {\n navigate(this, `${route.prefix}/${defaultPage}`, true);\n }\n\n let newPage = route\n ? extractPage(route.path, defaultPage || \"\")\n : \"not_found\";\n let routeOptions = routerOptions.routes[newPage];\n\n // Handle redirects\n while (typeof routeOptions === \"string\") {\n newPage = routeOptions;\n routeOptions = routerOptions.routes[newPage];\n }\n\n if (routerOptions.beforeRender) {\n const result = routerOptions.beforeRender(newPage);\n if (result !== undefined) {\n newPage = result;\n routeOptions = routerOptions.routes[newPage];\n\n // Handle redirects\n while (typeof routeOptions === \"string\") {\n newPage = routeOptions;\n routeOptions = routerOptions.routes[newPage];\n }\n\n // Update the url if we know where we're mounted.\n if (route) {\n navigate(this, `${route.prefix}/${result}`, true);\n }\n }\n }\n\n if (this._currentPage === newPage) {\n if (this.lastChild) {\n this.updatePageEl(this.lastChild, changedProps);\n }\n return;\n }\n\n if (!routeOptions) {\n this._currentPage = \"\";\n if (this.lastChild) {\n this.removeChild(this.lastChild);\n }\n return;\n }\n\n this._currentPage = newPage;\n const loadProm = routeOptions.load\n ? routeOptions.load()\n : Promise.resolve();\n\n // Check when loading the page source failed.\n loadProm.catch((err) => {\n // tslint:disable-next-line\n console.error(\"Error loading page\", newPage, err);\n\n // Verify that we're still trying to show the same page.\n if (this._currentPage !== newPage) {\n return;\n }\n\n // Removes either loading screen or the panel\n this.removeChild(this.lastChild!);\n\n // Show error screen\n const errorEl = document.createElement(\"hass-error-screen\");\n errorEl.error = `Error while loading page ${newPage}.`;\n this.appendChild(errorEl);\n });\n\n // If we don't show loading screen, just show the panel.\n // It will be automatically upgraded when loading done.\n if (!routerOptions.showLoading) {\n this._createPanel(routerOptions, newPage, routeOptions);\n return;\n }\n\n // We are only going to show the loading screen after some time.\n // That way we won't have a double fast flash on fast connections.\n let created = false;\n\n setTimeout(() => {\n if (created || this._currentPage !== newPage) {\n return;\n }\n\n // Show a loading screen.\n if (this.lastChild) {\n this.removeChild(this.lastChild);\n }\n this.appendChild(this.createLoadingScreen());\n }, LOADING_SCREEN_THRESHOLD);\n\n this._currentLoadProm = loadProm.then(\n () => {\n this._currentLoadProm = undefined;\n // Check if we're still trying to show the same page.\n if (this._currentPage !== newPage) {\n return;\n }\n\n created = true;\n this._createPanel(\n routerOptions,\n newPage,\n // @ts-ignore TS forgot this is not a string.\n routeOptions\n );\n },\n () => {\n this._currentLoadProm = undefined;\n }\n );\n }\n\n protected firstUpdated(changedProps: PropertyValues) {\n super.firstUpdated(changedProps);\n\n const options = this.routerOptions;\n\n if (!options) {\n return;\n }\n\n if (options.preloadAll) {\n Object.values(options.routes).forEach(\n (route) => typeof route === \"object\" && route.load && route.load()\n );\n }\n\n if (options.initialLoad) {\n setTimeout(() => {\n if (!this._initialLoadDone) {\n this.appendChild(this.createLoadingScreen());\n }\n }, LOADING_SCREEN_THRESHOLD);\n\n options.initialLoad().then(() => {\n this._initialLoadDone = true;\n this.requestUpdate(\"route\");\n });\n }\n }\n\n protected createLoadingScreen() {\n return document.createElement(\"hass-loading-screen\");\n }\n\n /**\n * Rebuild the current panel.\n *\n * Promise will resolve when rebuilding is done and DOM updated.\n */\n protected async rebuild(): Promise {\n const oldRoute = this.route;\n\n if (oldRoute === undefined) {\n return;\n }\n\n this.route = undefined;\n await this.updateComplete;\n // Make sure that the parent didn't override this in the meanwhile.\n if (this.route === undefined) {\n this.route = oldRoute;\n }\n }\n\n /**\n * Promise that resolves when the page has rendered.\n */\n protected get pageRendered(): Promise {\n return this.updateComplete.then(() => this._currentLoadProm);\n }\n\n protected createElement(tag: string) {\n return document.createElement(tag);\n }\n\n protected updatePageEl(_pageEl, _changedProps?: PropertyValues) {\n // default we do nothing\n }\n\n protected get routeTail(): Route {\n return this._computeTail(this.route!);\n }\n\n private _createPanel(\n routerOptions: RouterOptions,\n page: string,\n routeOptions: RouteOptions\n ) {\n if (this.lastChild) {\n this.removeChild(this.lastChild);\n }\n\n const panelEl = this._cache[page] || this.createElement(routeOptions.tag);\n this.updatePageEl(panelEl);\n this.appendChild(panelEl);\n\n if (routerOptions.cacheAll || routeOptions.cache) {\n this._cache[page] = panelEl;\n }\n }\n}\n","import { HomeAssistant } from \"../../types\";\nimport { HassioResponse, hassioApiResultExtractor } from \"./common\";\n\nexport type HassioHostInfo = any;\n\nexport interface HassioHassOSInfo {\n version: string;\n version_cli: string;\n version_latest: string;\n version_cli_latest: string;\n board: \"ova\" | \"rpi\";\n}\n\nexport const fetchHassioHostInfo = async (hass: HomeAssistant) => {\n const response = await hass.callApi>(\n \"GET\",\n \"hassio/host/info\"\n );\n return hassioApiResultExtractor(response);\n};\n\nexport const fetchHassioHassOsInfo = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/os/info\"\n )\n );\n};\n","import { HASSDomEvent, ValidHassDomEvent } from \"../common/dom/fire_event\";\nimport { ProvideHassElement } from \"../mixins/provide-hass-lit-mixin\";\n\ndeclare global {\n // for fire event\n interface HASSDomEvents {\n \"show-dialog\": ShowDialogParams;\n \"close-dialog\": undefined;\n }\n // for add event listener\n interface HTMLElementEventMap {\n \"show-dialog\": HASSDomEvent>;\n }\n}\n\ninterface HassDialog extends HTMLElement {\n showDialog(params: T);\n}\n\ninterface ShowDialogParams {\n dialogTag: keyof HTMLElementTagNameMap;\n dialogImport: () => Promise;\n dialogParams: T;\n}\n\nconst LOADED = {};\n\nexport const showDialog = async (\n element: HTMLElement & ProvideHassElement,\n root: ShadowRoot | HTMLElement,\n dialogImport: () => Promise,\n dialogTag: string,\n dialogParams: unknown\n) => {\n if (!(dialogTag in LOADED)) {\n LOADED[dialogTag] = dialogImport().then(() => {\n const dialogEl = document.createElement(dialogTag) as HassDialog;\n element.provideHass(dialogEl);\n root.appendChild(dialogEl);\n return dialogEl;\n });\n }\n const dialogElement = await LOADED[dialogTag];\n dialogElement.showDialog(dialogParams);\n};\n\nexport const makeDialogManager = (\n element: HTMLElement & ProvideHassElement,\n root: ShadowRoot | HTMLElement\n) => {\n element.addEventListener(\n \"show-dialog\",\n async (e: HASSDomEvent>) => {\n const { dialogTag, dialogImport, dialogParams } = e.detail;\n showDialog(element, root, dialogImport, dialogTag, dialogParams);\n }\n );\n};\n","import { UpdatingElement, PropertyValues } from \"lit-element\";\nimport { HomeAssistant, Constructor } from \"../types\";\n\nexport interface ProvideHassElement {\n provideHass(element: HTMLElement);\n}\n\n/* tslint:disable-next-line:variable-name */\nexport const ProvideHassLitMixin = >(\n superClass: T\n) =>\n class extends superClass {\n protected hass!: HomeAssistant;\n /* tslint:disable-next-line:variable-name */\n private __provideHass: HTMLElement[] = [];\n\n public provideHass(el) {\n this.__provideHass.push(el);\n el.hass = this.hass;\n }\n\n protected updated(changedProps: PropertyValues) {\n super.updated(changedProps);\n\n if (changedProps.has(\"hass\")) {\n this.__provideHass.forEach((el) => {\n (el as any).hass = this.hass;\n });\n }\n }\n };\n","import \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\n\nimport { HomeAssistant } from \"../../../src/types\";\nimport { HassioAddonInfo } from \"../../../src/data/hassio/addon\";\nimport { navigate } from \"../../../src/common/navigate\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport \"../components/hassio-card-content\";\nimport { atLeastVersion } from \"../../../src/common/config/version\";\n\n@customElement(\"hassio-addons\")\nclass HassioAddons extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public addons?: HassioAddonInfo[];\n\n protected render(): TemplateResult {\n return html`\n
\n

Add-ons

\n
\n ${!this.addons\n ? html`\n \n
\n You don't have any add-ons installed yet. Head over to\n the add-on store\n to get started!\n
\n
\n `\n : this.addons\n .sort((a, b) => (a.name > b.name ? 1 : -1))\n .map(\n (addon) => html`\n \n
\n \n
\n
\n `\n )}\n
\n
\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n paper-card {\n cursor: pointer;\n }\n `,\n ];\n }\n\n private _addonTapped(ev: any): void {\n navigate(this, `/hassio/addon/${ev.currentTarget.addon.slug}`);\n }\n\n private _openStore(): void {\n navigate(this, \"/hassio/store\");\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addons\": HassioAddons;\n }\n}\n","import {\n LitElement,\n TemplateResult,\n html,\n CSSResult,\n css,\n property,\n customElement,\n} from \"lit-element\";\nimport \"@polymer/iron-icon/iron-icon\";\n\nimport { HomeAssistant } from \"../../../src/types\";\nimport { HassioHassOSInfo } from \"../../../src/data/hassio/host\";\nimport {\n HassioHomeAssistantInfo,\n HassioSupervisorInfo,\n} from \"../../../src/data/hassio/supervisor\";\n\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\n\nimport \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport \"../../../src/components/buttons/ha-call-api-button\";\nimport \"../components/hassio-card-content\";\n\n@customElement(\"hassio-update\")\nexport class HassioUpdate extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public hassInfo: HassioHomeAssistantInfo;\n @property() public hassOsInfo?: HassioHassOSInfo;\n @property() public supervisorInfo: HassioSupervisorInfo;\n @property() private _error?: string;\n\n protected render(): TemplateResult {\n const updatesAvailable: number = [\n this.hassInfo,\n this.supervisorInfo,\n this.hassOsInfo,\n ].filter((value) => {\n return (\n !!value &&\n (value.version_latest\n ? value.version !== value.version_latest\n : value.version_latest\n ? value.version !== value.version_latest\n : false)\n );\n }).length;\n\n if (!updatesAvailable) {\n return html``;\n }\n\n return html`\n
\n ${this._error\n ? html`\n
Error: ${this._error}
\n `\n : \"\"}\n

\n ${updatesAvailable > 1\n ? \"Updates Available 🎉\"\n : \"Update Available 🎉\"}\n

\n
\n ${this._renderUpdateCard(\n \"Home Assistant Core\",\n this.hassInfo.version,\n this.hassInfo.version_latest,\n \"hassio/homeassistant/update\",\n `https://${\n this.hassInfo.version_latest.includes(\"b\") ? \"rc\" : \"www\"\n }.home-assistant.io/latest-release-notes/`,\n \"hassio:home-assistant\"\n )}\n ${this._renderUpdateCard(\n \"Supervisor\",\n this.supervisorInfo.version,\n this.supervisorInfo.version_latest,\n \"hassio/supervisor/update\",\n `https://github.com//home-assistant/hassio/releases/tag/${this.supervisorInfo.version_latest}`\n )}\n ${this.hassOsInfo\n ? this._renderUpdateCard(\n \"Operating System\",\n this.hassOsInfo.version,\n this.hassOsInfo.version_latest,\n \"hassio/os/update\",\n `https://github.com//home-assistant/hassos/releases/tag/${this.hassOsInfo.version_latest}`\n )\n : \"\"}\n
\n
\n `;\n }\n\n private _renderUpdateCard(\n name: string,\n curVersion: string,\n lastVersion: string,\n apiPath: string,\n releaseNotesUrl: string,\n icon?: string\n ): TemplateResult {\n if (!lastVersion || lastVersion === curVersion) {\n return html``;\n }\n return html`\n \n
\n ${icon\n ? html`\n
\n \n
\n `\n : \"\"}\n
${name} ${lastVersion}
\n
\n You are currently running version ${curVersion}\n
\n
\n
\n \n Release notes\n \n \n Update\n \n
\n
\n `;\n }\n\n private _apiCalled(ev) {\n if (ev.detail.success) {\n this._error = \"\";\n return;\n }\n\n const response = ev.detail.response;\n\n typeof response.body === \"object\"\n ? (this._error = response.body.message || \"Unknown error\")\n : (this._error = response.body);\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n .icon {\n --iron-icon-height: 48px;\n --iron-icon-width: 48px;\n float: right;\n margin: 0 0 2px 10px;\n }\n .update-heading {\n font-size: var(--paper-font-subhead_-_font-size);\n font-weight: 500;\n margin-bottom: 0.5em;\n }\n .warning {\n color: var(--secondary-text-color);\n }\n .card-content {\n height: calc(100% - 47px);\n box-sizing: border-box;\n }\n .card-actions {\n text-align: right;\n }\n .errors {\n color: var(--google-red-500);\n padding: 16px;\n }\n a {\n text-decoration: none;\n }\n `,\n ];\n }\n}\n","import {\n LitElement,\n TemplateResult,\n html,\n CSSResult,\n css,\n property,\n customElement,\n} from \"lit-element\";\nimport \"./hassio-addons\";\nimport \"./hassio-update\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { HassioHassOSInfo } from \"../../../src/data/hassio/host\";\nimport {\n HassioSupervisorInfo,\n HassioHomeAssistantInfo,\n} from \"../../../src/data/hassio/supervisor\";\n\n@customElement(\"hassio-dashboard\")\nclass HassioDashboard extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public supervisorInfo!: HassioSupervisorInfo;\n @property() public hassInfo!: HassioHomeAssistantInfo;\n @property() public hassOsInfo!: HassioHassOSInfo;\n\n protected render(): TemplateResult {\n return html`\n
\n \n \n
\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n css`\n .content {\n margin: 0 auto;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-dashboard\": HassioDashboard;\n }\n}\n","import {\n LitElement,\n TemplateResult,\n html,\n CSSResultArray,\n css,\n property,\n PropertyValues,\n customElement,\n} from \"lit-element\";\nimport \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport \"@polymer/paper-checkbox/paper-checkbox\";\nimport \"@polymer/paper-input/paper-input\";\nimport \"@polymer/paper-radio-button/paper-radio-button\";\nimport \"@polymer/paper-radio-group/paper-radio-group\";\n\nimport \"../components/hassio-card-content\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\n\nimport { showHassioSnapshotDialog } from \"../dialogs/snapshot/show-dialog-hassio-snapshot\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport {\n HassioSnapshot,\n fetchHassioSnapshots,\n reloadHassioSnapshots,\n HassioFullSnapshotCreateParams,\n HassioPartialSnapshotCreateParams,\n createHassioFullSnapshot,\n createHassioPartialSnapshot,\n} from \"../../../src/data/hassio/snapshot\";\nimport { HassioSupervisorInfo } from \"../../../src/data/hassio/supervisor\";\nimport { PolymerChangedEvent } from \"../../../src/polymer-types\";\nimport { fireEvent } from \"../../../src/common/dom/fire_event\";\n\n// Not duplicate, used for typing\n// tslint:disable-next-line\nimport { PaperInputElement } from \"@polymer/paper-input/paper-input\";\n// tslint:disable-next-line\nimport { PaperRadioGroupElement } from \"@polymer/paper-radio-group/paper-radio-group\";\n// tslint:disable-next-line\nimport { PaperCheckboxElement } from \"@polymer/paper-checkbox/paper-checkbox\";\n\ninterface CheckboxItem {\n slug: string;\n name: string;\n checked: boolean;\n}\n\n@customElement(\"hassio-snapshots\")\nclass HassioSnapshots extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public supervisorInfo!: HassioSupervisorInfo;\n @property() private _snapshotName = \"\";\n @property() private _snapshotPassword = \"\";\n @property() private _snapshotHasPassword = false;\n @property() private _snapshotType: HassioSnapshot[\"type\"] = \"full\";\n @property() private _snapshots?: HassioSnapshot[] = [];\n @property() private _addonList: CheckboxItem[] = [];\n @property() private _folderList: CheckboxItem[] = [\n {\n slug: \"homeassistant\",\n name: \"Home Assistant configuration\",\n checked: true,\n },\n { slug: \"ssl\", name: \"SSL\", checked: true },\n { slug: \"share\", name: \"Share\", checked: true },\n { slug: \"addons/local\", name: \"Local add-ons\", checked: true },\n ];\n @property() private _creatingSnapshot = false;\n @property() private _error = \"\";\n\n public async refreshData() {\n await reloadHassioSnapshots(this.hass);\n await this._updateSnapshots();\n }\n\n protected render(): TemplateResult {\n return html`\n
\n

\n Create snapshot\n

\n

\n Snapshots allow you to easily backup and restore all data of your Home\n Assistant instance.\n

\n
\n \n
\n \n Type:\n \n \n Full snapshot\n \n \n Partial snapshot\n \n \n ${this._snapshotType === \"full\"\n ? undefined\n : html`\n Folders:\n ${this._folderList.map(\n (folder, idx) => html`\n \n ${folder.name}\n \n `\n )}\n Add-ons:\n ${this._addonList.map(\n (addon, idx) => html`\n \n ${addon.name}\n \n `\n )}\n `}\n Security:\n \n Password protection\n \n ${this._snapshotHasPassword\n ? html`\n \n `\n : undefined}\n ${this._error !== \"\"\n ? html`\n

${this._error}

\n `\n : undefined}\n
\n
\n \n Create\n \n
\n
\n
\n\n

Available snapshots

\n
\n ${this._snapshots === undefined\n ? undefined\n : this._snapshots.length === 0\n ? html`\n \n
\n You don't have any snapshots yet.\n
\n
\n `\n : this._snapshots.map(\n (snapshot) => html`\n \n
\n \n
\n \n `\n )}\n
\n
\n `;\n }\n\n protected firstUpdated(changedProps: PropertyValues) {\n super.firstUpdated(changedProps);\n this._updateSnapshots();\n }\n\n protected updated(changedProps: PropertyValues) {\n if (changedProps.has(\"supervisorInfo\")) {\n this._addonList = this.supervisorInfo.addons\n .map((addon) => ({\n slug: addon.slug,\n name: addon.name,\n checked: true,\n }))\n .sort((a, b) => (a.name < b.name ? -1 : 1));\n }\n }\n\n private _handleTextValueChanged(ev: PolymerChangedEvent) {\n const input = ev.currentTarget as PaperInputElement;\n this[`_${input.name}`] = ev.detail.value;\n }\n\n private _handleCheckboxValueChanged(ev) {\n const input = ev.currentTarget as PaperCheckboxElement;\n this[`_${input.name}`] = input.checked;\n }\n\n private _handleRadioValueChanged(ev: PolymerChangedEvent) {\n const input = ev.currentTarget as PaperRadioGroupElement;\n this[`_${input.getAttribute(\"name\")}`] = ev.detail.value;\n }\n\n private _folderChecked(ev) {\n const { idx, checked } = ev.currentTarget!;\n this._folderList = this._folderList.map((folder, curIdx) =>\n curIdx === idx ? { ...folder, checked } : folder\n );\n }\n\n private _addonChecked(ev) {\n const { idx, checked } = ev.currentTarget!;\n this._addonList = this._addonList.map((addon, curIdx) =>\n curIdx === idx ? { ...addon, checked } : addon\n );\n }\n\n private async _updateSnapshots() {\n try {\n this._snapshots = await fetchHassioSnapshots(this.hass);\n this._snapshots.sort((a, b) => (a.date < b.date ? 1 : -1));\n } catch (err) {\n this._error = err.message;\n }\n }\n\n private async _createSnapshot() {\n this._error = \"\";\n if (this._snapshotHasPassword && !this._snapshotPassword.length) {\n this._error = \"Please enter a password.\";\n return;\n }\n this._creatingSnapshot = true;\n await this.updateComplete;\n\n const name =\n this._snapshotName ||\n new Date().toLocaleDateString(navigator.language, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n\n try {\n if (this._snapshotType === \"full\") {\n const data: HassioFullSnapshotCreateParams = { name };\n if (this._snapshotHasPassword) {\n data.password = this._snapshotPassword;\n }\n await createHassioFullSnapshot(this.hass, data);\n } else {\n const addons = this._addonList\n .filter((addon) => addon.checked)\n .map((addon) => addon.slug);\n const folders = this._folderList\n .filter((folder) => folder.checked)\n .map((folder) => folder.slug);\n\n const data: HassioPartialSnapshotCreateParams = {\n name,\n folders,\n addons,\n };\n if (this._snapshotHasPassword) {\n data.password = this._snapshotPassword;\n }\n await createHassioPartialSnapshot(this.hass, data);\n }\n this._updateSnapshots();\n fireEvent(this, \"hass-api-called\", { success: true, response: null });\n } catch (err) {\n this._error = err.message;\n } finally {\n this._creatingSnapshot = false;\n }\n }\n\n private _computeDetails(snapshot: HassioSnapshot) {\n const type =\n snapshot.type === \"full\" ? \"Full snapshot\" : \"Partial snapshot\";\n return snapshot.protected ? `${type}, password protected` : type;\n }\n\n private _snapshotClicked(ev) {\n showHassioSnapshotDialog(this, {\n slug: ev.currentTarget!.snapshot.slug,\n onDelete: () => this._updateSnapshots(),\n });\n }\n\n static get styles(): CSSResultArray {\n return [\n haStyle,\n hassioStyle,\n css`\n paper-radio-group {\n display: block;\n }\n paper-radio-button {\n padding: 0 0 2px 2px;\n }\n paper-radio-button,\n paper-checkbox,\n paper-input[type=\"password\"] {\n display: block;\n margin: 4px 0 4px 48px;\n }\n .pointer {\n cursor: pointer;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-snapshots\": HassioSnapshots;\n }\n}\n","import { fireEvent } from \"../../../../src/common/dom/fire_event\";\n\nexport interface HassioSnapshotDialogParams {\n slug: string;\n onDelete: () => void;\n}\n\nexport const showHassioSnapshotDialog = (\n element: HTMLElement,\n dialogParams: HassioSnapshotDialogParams\n): void => {\n fireEvent(element, \"show-dialog\", {\n dialogTag: \"dialog-hassio-snapshot\",\n dialogImport: () =>\n import(\n /* webpackChunkName: \"dialog-hassio-snapshot\" */ \"./dialog-hassio-snapshot\"\n ),\n dialogParams,\n });\n};\n","import {\n css,\n TemplateResult,\n html,\n LitElement,\n property,\n CSSResultArray,\n} from \"lit-element\";\nimport \"@polymer/paper-card/paper-card\";\nimport memoizeOne from \"memoize-one\";\n\nimport \"../components/hassio-card-content\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport {\n HassioAddonInfo,\n HassioAddonRepository,\n} from \"../../../src/data/hassio/addon\";\nimport { navigate } from \"../../../src/common/navigate\";\nimport { filterAndSort } from \"../components/hassio-filter-addons\";\nimport { atLeastVersion } from \"../../../src/common/config/version\";\n\nclass HassioAddonRepositoryEl extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public repo!: HassioAddonRepository;\n @property() public addons!: HassioAddonInfo[];\n @property() public filter!: string;\n\n private _getAddons = memoizeOne(\n (addons: HassioAddonInfo[], filter?: string) => {\n if (filter) {\n return filterAndSort(addons, filter);\n }\n return addons.sort((a, b) =>\n a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1\n );\n }\n );\n\n protected render(): TemplateResult {\n const repo = this.repo;\n const addons = this._getAddons(this.addons, this.filter);\n\n if (this.filter && addons.length < 1) {\n return html`\n
\n

\n No results found in \"${repo.name}\"\n

\n
\n `;\n }\n return html`\n
\n

\n ${repo.name}\n

\n

\n Maintained by ${repo.maintainer}
\n \n ${repo.url}\n \n

\n
\n ${addons.map(\n (addon) => html`\n \n
\n \n
\n \n `\n )}\n
\n
\n `;\n }\n\n private _addonTapped(ev) {\n navigate(this, `/hassio/addon/${ev.currentTarget.addon.slug}`);\n }\n\n static get styles(): CSSResultArray {\n return [\n hassioStyle,\n css`\n paper-card {\n cursor: pointer;\n }\n .not_available {\n opacity: 0.6;\n }\n a.repo {\n color: var(--primary-text-color);\n }\n `,\n ];\n }\n}\n\ncustomElements.define(\"hassio-addon-repository\", HassioAddonRepositoryEl);\n","import { HassioAddonInfo } from \"../../../src/data/hassio/addon\";\nimport * as Fuse from \"fuse.js\";\n\nexport function filterAndSort(addons: HassioAddonInfo[], filter: string) {\n const options: Fuse.FuseOptions = {\n keys: [\"name\", \"description\", \"slug\"],\n caseSensitive: false,\n minMatchCharLength: 2,\n threshold: 0.2,\n };\n const fuse = new Fuse(addons, options);\n return fuse.search(filter);\n}\n","import {\n LitElement,\n html,\n CSSResultArray,\n css,\n property,\n TemplateResult,\n customElement,\n PropertyValues,\n} from \"lit-element\";\nimport \"@polymer/iron-icon/iron-icon\";\nimport \"@polymer/paper-card/paper-card\";\nimport \"@polymer/paper-input/paper-input\";\nimport memoizeOne from \"memoize-one\";\n\nimport \"../../../src/components/buttons/ha-call-api-button\";\nimport \"../components/hassio-card-content\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { HassioAddonRepository } from \"../../../src/data/hassio/addon\";\nimport { PolymerChangedEvent } from \"../../../src/polymer-types\";\nimport { repeat } from \"lit-html/directives/repeat\";\n\n@customElement(\"hassio-repositories-editor\")\nclass HassioRepositoriesEditor extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public repos!: HassioAddonRepository[];\n @property() private _repoUrl = \"\";\n\n private _sortedRepos = memoizeOne((repos: HassioAddonRepository[]) =>\n repos\n .filter((repo) => repo.slug !== \"core\" && repo.slug !== \"local\")\n .sort((a, b) => (a.name < b.name ? -1 : 1))\n );\n\n protected render(): TemplateResult {\n const repos = this._sortedRepos(this.repos);\n return html`\n
\n

\n Repositories\n

\n

\n Configure which add-on repositories to fetch data from:\n

\n
\n ${// Use repeat so that the fade-out from call-service-api-button\n // stays with the correct repo after we add/delete one.\n repeat(\n repos,\n (repo) => repo.slug,\n (repo) => html`\n \n
\n \n
\n
\n \n Remove\n \n
\n
\n `\n )}\n\n \n
\n \n \n
\n
\n \n Add\n \n
\n
\n
\n
\n `;\n }\n\n protected updated(changedProps: PropertyValues) {\n super.updated(changedProps);\n\n if (changedProps.has(\"repos\")) {\n this._repoUrl = \"\";\n }\n }\n\n private _urlChanged(ev: PolymerChangedEvent) {\n this._repoUrl = ev.detail.value;\n }\n\n private computeRemoveRepoData(repoList, url) {\n const list = repoList\n .filter((repo) => repo.url !== url)\n .map((repo) => repo.source);\n return { addons_repositories: list };\n }\n\n private computeAddRepoData(repoList, url) {\n const list = repoList ? repoList.map((repo) => repo.source) : [];\n list.push(url);\n return { addons_repositories: list };\n }\n\n static get styles(): CSSResultArray {\n return [\n hassioStyle,\n css`\n .add {\n padding: 12px 16px;\n }\n iron-icon {\n color: var(--secondary-text-color);\n margin-right: 16px;\n display: inline-block;\n }\n paper-input {\n width: calc(100% - 49px);\n display: inline-block;\n margin-top: -4px;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-repositories-editor\": HassioRepositoriesEditor;\n }\n}\n","import \"@polymer/paper-spinner/paper-spinner-lite\";\nimport {\n LitElement,\n TemplateResult,\n html,\n css,\n customElement,\n CSSResult,\n} from \"lit-element\";\n\n@customElement(\"loading-screen\")\nclass LoadingScreen extends LitElement {\n protected render(): TemplateResult {\n return html`\n \n `;\n }\n\n static get styles(): CSSResult {\n return css`\n :host {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"loading-screen\": LoadingScreen;\n }\n}\n","import { TemplateResult, html } from \"lit-html\";\nimport {\n css,\n CSSResult,\n customElement,\n LitElement,\n property,\n} from \"lit-element\";\nimport { fireEvent } from \"../../../src/common/dom/fire_event\";\nimport \"@polymer/iron-icon/iron-icon\";\nimport \"@polymer/paper-input/paper-input\";\nimport \"@polymer/paper-icon-button/paper-icon-button\";\nimport \"@material/mwc-button\";\n\n@customElement(\"hassio-search-input\")\nclass HassioSearchInput extends LitElement {\n @property() private filter?: string;\n\n protected render(): TemplateResult {\n return html`\n
\n \n \n ${this.filter &&\n html`\n \n `}\n \n
\n `;\n }\n\n private async _filterChanged(value: string) {\n fireEvent(this, \"value-changed\", { value: String(value) });\n }\n\n private async _filterInputChanged(e) {\n this._filterChanged(e.target.value);\n }\n\n private async _clearSearch() {\n this._filterChanged(\"\");\n }\n\n static get styles(): CSSResult {\n return css`\n paper-input {\n flex: 1 1 auto;\n margin: 0 16px;\n }\n .search-container {\n display: inline-flex;\n width: 100%;\n align-items: center;\n }\n .prefix {\n margin: 8px;\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-search-input\": HassioSearchInput;\n }\n}\n","import \"./hassio-addon-repository\";\nimport \"./hassio-repositories-editor\";\nimport { TemplateResult, html } from \"lit-html\";\nimport {\n LitElement,\n CSSResult,\n css,\n property,\n PropertyValues,\n} from \"lit-element\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport {\n HassioAddonRepository,\n HassioAddonInfo,\n fetchHassioAddonsInfo,\n reloadHassioAddons,\n} from \"../../../src/data/hassio/addon\";\nimport \"../../../src/layouts/loading-screen\";\nimport \"../components/hassio-search-input\";\n\nconst sortRepos = (a: HassioAddonRepository, b: HassioAddonRepository) => {\n if (a.slug === \"local\") {\n return -1;\n }\n if (b.slug === \"local\") {\n return 1;\n }\n if (a.slug === \"core\") {\n return -1;\n }\n if (b.slug === \"core\") {\n return 1;\n }\n return a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1;\n};\n\nclass HassioAddonStore extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() private _addons?: HassioAddonInfo[];\n @property() private _repos?: HassioAddonRepository[];\n @property() private _filter?: string;\n\n public async refreshData() {\n this._repos = undefined;\n this._addons = undefined;\n this._filter = undefined;\n await reloadHassioAddons(this.hass);\n await this._loadData();\n }\n\n protected render(): TemplateResult {\n if (!this._addons || !this._repos) {\n return html`\n \n `;\n }\n const repos: TemplateResult[] = [];\n\n for (const repo of this._repos) {\n const addons = this._addons!.filter(\n (addon) => addon.repository === repo.slug\n );\n\n if (addons.length === 0) {\n continue;\n }\n\n repos.push(html`\n \n `);\n }\n\n return html`\n \n\n \n\n ${repos}\n `;\n }\n\n protected firstUpdated(changedProps: PropertyValues) {\n super.firstUpdated(changedProps);\n this.addEventListener(\"hass-api-called\", (ev) => this.apiCalled(ev));\n this._loadData();\n }\n\n private apiCalled(ev) {\n if (ev.detail.success) {\n this._loadData();\n }\n }\n\n private async _loadData() {\n try {\n const addonsInfo = await fetchHassioAddonsInfo(this.hass);\n this._repos = addonsInfo.repositories;\n this._repos.sort(sortRepos);\n this._addons = addonsInfo.addons;\n } catch (err) {\n alert(\"Failed to fetch add-on info\");\n }\n }\n\n private async _filterChanged(e) {\n this._filter = e.detail.value;\n }\n\n static get styles(): CSSResult {\n return css`\n hassio-addon-repository {\n margin-top: 24px;\n }\n `;\n }\n}\n\ncustomElements.define(\"hassio-addon-store\", HassioAddonStore);\n","import \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\n\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport {\n HassioHostInfo as HassioHostInfoType,\n HassioHassOSInfo,\n} from \"../../../src/data/hassio/host\";\nimport { fetchHassioHardwareInfo } from \"../../../src/data/hassio/hardware\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { showHassioMarkdownDialog } from \"../dialogs/markdown/show-dialog-hassio-markdown\";\n\nimport \"../../../src/components/buttons/ha-call-api-button\";\n\n@customElement(\"hassio-host-info\")\nclass HassioHostInfo extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public hostInfo!: HassioHostInfoType;\n @property() public hassOsInfo!: HassioHassOSInfo;\n @property() private _errors?: string;\n\n public render(): TemplateResult | void {\n return html`\n \n
\n

Host system

\n \n \n \n \n \n \n \n \n \n \n ${this.hostInfo.deployment\n ? html`\n \n \n \n \n `\n : \"\"}\n \n
Hostname${this.hostInfo.hostname}
System${this.hostInfo.operating_system}
Deployment${this.hostInfo.deployment}
\n \n Hardware\n \n ${this.hostInfo.features.includes(\"hostname\")\n ? html`\n \n Change hostname\n \n `\n : \"\"}\n ${this._errors\n ? html`\n
Error: ${this._errors}
\n `\n : \"\"}\n
\n
\n ${this.hostInfo.features.includes(\"reboot\")\n ? html`\n Reboot\n `\n : \"\"}\n ${this.hostInfo.features.includes(\"shutdown\")\n ? html`\n Shutdown\n `\n : \"\"}\n ${this.hostInfo.features.includes(\"hassos\")\n ? html`\n Import from USB\n `\n : \"\"}\n ${this.hostInfo.version !== this.hostInfo.version_latest\n ? html`\n Update\n `\n : \"\"}\n
\n
\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n paper-card {\n height: 100%;\n width: 100%;\n }\n .card-content {\n color: var(--primary-text-color);\n box-sizing: border-box;\n height: calc(100% - 47px);\n }\n .info {\n width: 100%;\n }\n .info td:nth-child(2) {\n text-align: right;\n }\n .errors {\n color: var(--google-red-500);\n margin-top: 16px;\n }\n mwc-button.info {\n max-width: calc(50% - 12px);\n }\n table.info {\n margin-bottom: 10px;\n }\n .warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n `,\n ];\n }\n\n protected firstUpdated(): void {\n this.addEventListener(\"hass-api-called\", (ev) => this._apiCalled(ev));\n }\n\n private _apiCalled(ev): void {\n if (ev.detail.success) {\n this._errors = undefined;\n return;\n }\n\n const response = ev.detail.response;\n\n this._errors =\n typeof response.body === \"object\"\n ? response.body.message || \"Unknown error\"\n : response.body;\n }\n\n private async _showHardware(): Promise {\n try {\n const content = this._objectToMarkdown(\n await fetchHassioHardwareInfo(this.hass)\n );\n showHassioMarkdownDialog(this, {\n title: \"Hardware\",\n content,\n });\n } catch (err) {\n showHassioMarkdownDialog(this, {\n title: \"Hardware\",\n content: \"Error getting hardware info\",\n });\n }\n }\n\n private _objectToMarkdown(obj, indent = \"\"): string {\n let data = \"\";\n Object.keys(obj).forEach((key) => {\n if (typeof obj[key] !== \"object\") {\n data += `${indent}- ${key}: ${obj[key]}\\n`;\n } else {\n data += `${indent}- ${key}:\\n`;\n if (Array.isArray(obj[key])) {\n if (obj[key].length) {\n data +=\n `${indent} - ` + obj[key].join(`\\n${indent} - `) + \"\\n\";\n }\n } else {\n data += this._objectToMarkdown(obj[key], ` ${indent}`);\n }\n }\n });\n\n return data;\n }\n\n private _changeHostnameClicked(): void {\n const curHostname = this.hostInfo.hostname;\n const hostname = prompt(\"Please enter a new hostname:\", curHostname);\n if (hostname && hostname !== curHostname) {\n this.hass.callApi(\"POST\", \"hassio/host/options\", { hostname });\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-host-info\": HassioHostInfo;\n }\n}\n","import \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\n\nimport { fireEvent } from \"../../../src/common/dom/fire_event\";\nimport {\n HassioSupervisorInfo as HassioSupervisorInfoType,\n setSupervisorOption,\n SupervisorOptions,\n} from \"../../../src/data/hassio/supervisor\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\n\nimport \"../../../src/components/buttons/ha-call-api-button\";\n\n@customElement(\"hassio-supervisor-info\")\nclass HassioSupervisorInfo extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public supervisorInfo!: HassioSupervisorInfoType;\n @property() private _errors?: string;\n\n public render(): TemplateResult | void {\n return html`\n \n
\n

Supervisor

\n \n \n \n \n \n \n \n \n \n \n ${this.supervisorInfo.channel !== \"stable\"\n ? html`\n \n \n \n \n `\n : \"\"}\n \n
Version${this.supervisorInfo.version}
Latest version${this.supervisorInfo.version_latest}
Channel${this.supervisorInfo.channel}
\n ${this._errors\n ? html`\n
Error: ${this._errors}
\n `\n : \"\"}\n
\n
\n Reload\n ${this.supervisorInfo.version !== this.supervisorInfo.version_latest\n ? html`\n Update\n `\n : \"\"}\n ${this.supervisorInfo.channel === \"beta\"\n ? html`\n Leave beta channel\n `\n : \"\"}\n ${this.supervisorInfo.channel === \"stable\"\n ? html`\n Join beta channel\n `\n : \"\"}\n
\n
\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n paper-card {\n height: 100%;\n width: 100%;\n }\n .card-content {\n color: var(--primary-text-color);\n box-sizing: border-box;\n height: calc(100% - 47px);\n }\n .info {\n width: 100%;\n }\n .info td:nth-child(2) {\n text-align: right;\n }\n .errors {\n color: var(--google-red-500);\n margin-top: 16px;\n }\n `,\n ];\n }\n\n protected firstUpdated(): void {\n this.addEventListener(\"hass-api-called\", (ev) => this._apiCalled(ev));\n }\n\n private _apiCalled(ev): void {\n if (ev.detail.success) {\n this._errors = undefined;\n return;\n }\n\n const response = ev.detail.response;\n\n this._errors =\n typeof response.body === \"object\"\n ? response.body.message || \"Unknown error\"\n : response.body;\n }\n\n private async _joinBeta() {\n if (\n !confirm(`WARNING:\nBeta releases are for testers and early adopters and can contain unstable code changes. Make sure you have backups of your data before you activate this feature.\n\nThis includes beta releases for:\n- Home Assistant (Release Candidates)\n- Hass.io supervisor\n- Host system`)\n ) {\n return;\n }\n try {\n const data: SupervisorOptions = { channel: \"beta\" };\n await setSupervisorOption(this.hass, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._errors = `Error joining beta channel, ${err.body?.message || err}`;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-supervisor-info\": HassioSupervisorInfo;\n }\n}\n","import \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n query,\n} from \"lit-element\";\n\nimport { ANSI_HTML_STYLE, parseTextToColoredPre } from \"../ansi-to-html\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { fetchSupervisorLogs } from \"../../../src/data/hassio/supervisor\";\n\n@customElement(\"hassio-supervisor-log\")\nclass HassioSupervisorLog extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() private _error?: string;\n @query(\"#content\") private _logContent!: HTMLDivElement;\n\n public async connectedCallback(): Promise {\n super.connectedCallback();\n await this._loadData();\n }\n\n public render(): TemplateResult | void {\n return html`\n \n ${this._error\n ? html`\n
${this._error}
\n `\n : \"\"}\n
\n
\n Refresh\n
\n
\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n ANSI_HTML_STYLE,\n css`\n paper-card {\n width: 100%;\n }\n pre {\n white-space: pre-wrap;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n `,\n ];\n }\n\n private async _loadData(): Promise {\n this._error = undefined;\n try {\n const content = await fetchSupervisorLogs(this.hass);\n while (this._logContent.lastChild) {\n this._logContent.removeChild(this._logContent.lastChild as Node);\n }\n this._logContent.appendChild(parseTextToColoredPre(content));\n } catch (err) {\n this._error = `Failed to get supervisor logs, ${err.body?.message ||\n err}`;\n }\n }\n\n private async _refresh(): Promise {\n await this._loadData();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-supervisor-log\": HassioSupervisorLog;\n }\n}\n","import \"@polymer/paper-menu-button/paper-menu-button\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\n\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport {\n HassioHostInfo,\n HassioHassOSInfo,\n} from \"../../../src/data/hassio/host\";\nimport { HassioSupervisorInfo } from \"../../../src/data/hassio/supervisor\";\nimport { HomeAssistant } from \"../../../src/types\";\n\nimport \"./hassio-host-info\";\nimport \"./hassio-supervisor-info\";\nimport \"./hassio-supervisor-log\";\n\n@customElement(\"hassio-system\")\nclass HassioSystem extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public supervisorInfo!: HassioSupervisorInfo;\n @property() public hostInfo!: HassioHostInfo;\n @property() public hassOsInfo!: HassioHassOSInfo;\n\n public render(): TemplateResult | void {\n return html`\n
\n

Information

\n
\n \n \n
\n

System log

\n \n
\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n .content {\n margin: 8px;\n color: var(--primary-text-color);\n }\n .title {\n margin-top: 24px;\n color: var(--primary-text-color);\n font-size: 2em;\n padding-left: 8px;\n margin-bottom: 8px;\n }\n hassio-supervisor-log {\n width: 100%;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-system\": HassioSystem;\n }\n}\n","import {\n HassRouterPage,\n RouterOptions,\n} from \"../../src/layouts/hass-router-page\";\nimport { customElement, property } from \"lit-element\";\nimport { PolymerElement } from \"@polymer/polymer\";\nimport { HomeAssistant } from \"../../src/types\";\n// Don't codesplit it, that way the dashboard always loads fast.\nimport \"./dashboard/hassio-dashboard\";\n// Don't codesplit the others, because it breaks the UI when pushed to a Pi\nimport \"./snapshots/hassio-snapshots\";\nimport \"./addon-store/hassio-addon-store\";\nimport \"./system/hassio-system\";\nimport { HassioHostInfo, HassioHassOSInfo } from \"../../src/data/hassio/host\";\nimport {\n HassioSupervisorInfo,\n HassioHomeAssistantInfo,\n} from \"../../src/data/hassio/supervisor\";\n\n@customElement(\"hassio-tabs-router\")\nclass HassioTabsRouter extends HassRouterPage {\n @property() public hass!: HomeAssistant;\n @property() public supervisorInfo: HassioSupervisorInfo;\n @property() public hostInfo: HassioHostInfo;\n @property() public hassInfo: HassioHomeAssistantInfo;\n @property() public hassOsInfo!: HassioHassOSInfo;\n\n protected routerOptions: RouterOptions = {\n routes: {\n dashboard: {\n tag: \"hassio-dashboard\",\n },\n snapshots: {\n tag: \"hassio-snapshots\",\n },\n store: {\n tag: \"hassio-addon-store\",\n },\n system: {\n tag: \"hassio-system\",\n },\n },\n };\n\n protected updatePageEl(el) {\n if (\"setProperties\" in el) {\n // As long as we have Polymer pages\n (el as PolymerElement).setProperties({\n hass: this.hass,\n supervisorInfo: this.supervisorInfo,\n hostInfo: this.hostInfo,\n hassInfo: this.hassInfo,\n hassOsInfo: this.hassOsInfo,\n });\n } else {\n el.hass = this.hass;\n el.supervisorInfo = this.supervisorInfo;\n el.hostInfo = this.hostInfo;\n el.hassInfo = this.hassInfo;\n el.hassOsInfo = this.hassOsInfo;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-tabs-router\": HassioTabsRouter;\n }\n}\n","import {\n LitElement,\n TemplateResult,\n html,\n CSSResultArray,\n css,\n customElement,\n property,\n} from \"lit-element\";\nimport \"@polymer/app-layout/app-header-layout/app-header-layout\";\nimport \"@polymer/app-layout/app-header/app-header\";\nimport \"@polymer/app-layout/app-toolbar/app-toolbar\";\nimport \"@polymer/paper-icon-button/paper-icon-button\";\nimport \"@polymer/paper-tabs/paper-tab\";\nimport \"@polymer/paper-tabs/paper-tabs\";\n\nimport \"../../src/components/ha-menu-button\";\nimport \"../../src/resources/ha-style\";\nimport \"./hassio-tabs-router\";\n\nimport scrollToTarget from \"../../src/common/dom/scroll-to-target\";\n\nimport { haStyle } from \"../../src/resources/styles\";\nimport { HomeAssistant, Route } from \"../../src/types\";\nimport { navigate } from \"../../src/common/navigate\";\nimport { HassioHostInfo, HassioHassOSInfo } from \"../../src/data/hassio/host\";\nimport {\n HassioSupervisorInfo,\n HassioHomeAssistantInfo,\n} from \"../../src/data/hassio/supervisor\";\n\nconst HAS_REFRESH_BUTTON = [\"store\", \"snapshots\"];\n\n@customElement(\"hassio-pages-with-tabs\")\nclass HassioPagesWithTabs extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public narrow!: boolean;\n @property() public route!: Route;\n @property() public supervisorInfo!: HassioSupervisorInfo;\n @property() public hostInfo!: HassioHostInfo;\n @property() public hassInfo!: HassioHomeAssistantInfo;\n @property() public hassOsInfo!: HassioHassOSInfo;\n\n protected render(): TemplateResult {\n const page = this._page;\n return html`\n \n \n \n \n
Supervisor
\n ${HAS_REFRESH_BUTTON.includes(page)\n ? html`\n \n `\n : undefined}\n
\n \n Dashboard\n Snapshots\n Add-on store\n System\n \n
\n \n
\n `;\n }\n\n private handlePageSelected(ev) {\n const newPage = ev.detail.item.getAttribute(\"page-name\");\n if (newPage !== this._page) {\n navigate(this, `/hassio/${newPage}`);\n }\n\n scrollToTarget(\n this,\n // @ts-ignore\n this.shadowRoot!.querySelector(\"app-header-layout\").header.scrollTarget\n );\n }\n\n private refreshClicked() {\n if (this._page === \"snapshots\") {\n // @ts-ignore\n this.shadowRoot.querySelector(\"hassio-snapshots\").refreshData();\n } else {\n // @ts-ignore\n this.shadowRoot.querySelector(\"hassio-addon-store\").refreshData();\n }\n }\n\n private get _page() {\n return this.route.path.substr(1);\n }\n\n static get styles(): CSSResultArray {\n return [\n haStyle,\n css`\n :host {\n color: var(--primary-text-color);\n --paper-card-header-color: var(--primary-text-color);\n }\n paper-tabs {\n margin-left: 12px;\n --paper-tabs-selection-bar-color: var(--text-primary-color, #fff);\n text-transform: uppercase;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-pages-with-tabs\": HassioPagesWithTabs;\n }\n}\n","/**\n * Scroll to a specific y coordinate.\n *\n * Copied from paper-scroll-header-panel.\n *\n * @method scroll\n * @param {number} top The coordinate to scroll to, along the y-axis.\n * @param {boolean} smooth true if the scroll position should be smoothly adjusted.\n */\nexport default function scrollToTarget(element, target) {\n // the scroll event will trigger _updateScrollState directly,\n // However, _updateScrollState relies on the previous `scrollTop` to update the states.\n // Calling _updateScrollState will ensure that the states are synced correctly.\n const top = 0;\n const scroller = target;\n const easingFn = function easeOutQuad(t, b, c, d) {\n /* eslint-disable no-param-reassign, space-infix-ops, no-mixed-operators */\n t /= d;\n return -c * t * (t - 2) + b;\n /* eslint-enable no-param-reassign, space-infix-ops, no-mixed-operators */\n };\n const animationId = Math.random();\n const duration = 200;\n const startTime = Date.now();\n const currentScrollTop = scroller.scrollTop;\n const deltaScrollTop = top - currentScrollTop;\n element._currentAnimationId = animationId;\n (function updateFrame() {\n const now = Date.now();\n const elapsedTime = now - startTime;\n if (elapsedTime > duration) {\n scroller.scrollTop = top;\n } else if (element._currentAnimationId === animationId) {\n scroller.scrollTop = easingFn(\n elapsedTime,\n currentScrollTop,\n deltaScrollTop,\n duration\n );\n requestAnimationFrame(updateFrame.bind(element));\n }\n }.call(element));\n}\n","import { customElement, PropertyValues, property } from \"lit-element\";\nimport { PolymerElement } from \"@polymer/polymer\";\nimport \"@polymer/paper-icon-button\";\n\nimport \"../../src/resources/ha-style\";\nimport { applyThemesOnElement } from \"../../src/common/dom/apply_themes_on_element\";\nimport { fireEvent } from \"../../src/common/dom/fire_event\";\nimport {\n HassRouterPage,\n RouterOptions,\n} from \"../../src/layouts/hass-router-page\";\nimport { HomeAssistant } from \"../../src/types\";\nimport {\n fetchHassioSupervisorInfo,\n fetchHassioHomeAssistantInfo,\n HassioSupervisorInfo,\n HassioHomeAssistantInfo,\n createHassioSession,\n HassioPanelInfo,\n} from \"../../src/data/hassio/supervisor\";\nimport {\n fetchHassioHostInfo,\n fetchHassioHassOsInfo,\n HassioHostInfo,\n HassioHassOSInfo,\n} from \"../../src/data/hassio/host\";\nimport { fetchHassioAddonInfo } from \"../../src/data/hassio/addon\";\nimport { makeDialogManager } from \"../../src/dialogs/make-dialog-manager\";\nimport { ProvideHassLitMixin } from \"../../src/mixins/provide-hass-lit-mixin\";\n// Don't codesplit it, that way the dashboard always loads fast.\nimport \"./hassio-pages-with-tabs\";\nimport { navigate } from \"../../src/common/navigate\";\nimport {\n showAlertDialog,\n AlertDialogParams,\n} from \"../../src/dialogs/generic/show-dialog-box\";\n\n// The register callback of the IronA11yKeysBehavior inside paper-icon-button\n// is not called, causing _keyBindings to be uninitiliazed for paper-icon-button,\n// causing an exception when added to DOM. When transpiled to ES5, this will\n// break the build.\ncustomElements.get(\"paper-icon-button\").prototype._keyBindings = {};\n\n@customElement(\"hassio-main\")\nclass HassioMain extends ProvideHassLitMixin(HassRouterPage) {\n @property() public hass!: HomeAssistant;\n @property() public panel!: HassioPanelInfo;\n @property() public narrow!: boolean;\n\n protected routerOptions: RouterOptions = {\n // Hass.io has a page with tabs, so we route all non-matching routes to it.\n defaultPage: \"dashboard\",\n initialLoad: () => this._fetchData(),\n showLoading: true,\n routes: {\n dashboard: {\n tag: \"hassio-pages-with-tabs\",\n cache: true,\n },\n snapshots: \"dashboard\",\n store: \"dashboard\",\n system: \"dashboard\",\n addon: {\n tag: \"hassio-addon-view\",\n load: () =>\n import(\n /* webpackChunkName: \"hassio-addon-view\" */ \"./addon-view/hassio-addon-view\"\n ),\n },\n ingress: {\n tag: \"hassio-ingress-view\",\n load: () =>\n import(\n /* webpackChunkName: \"hassio-ingress-view\" */ \"./ingress-view/hassio-ingress-view\"\n ),\n },\n },\n };\n @property() private _supervisorInfo: HassioSupervisorInfo;\n @property() private _hostInfo: HassioHostInfo;\n @property() private _hassOsInfo?: HassioHassOSInfo;\n @property() private _hassInfo: HassioHomeAssistantInfo;\n\n protected firstUpdated(changedProps: PropertyValues) {\n super.firstUpdated(changedProps);\n\n applyThemesOnElement(\n this.parentElement,\n this.hass.themes,\n this.hass.selectedTheme || this.hass.themes.default_theme\n );\n this.addEventListener(\"hass-api-called\", (ev) => this._apiCalled(ev));\n // Paulus - March 17, 2019\n // We went to a single hass-toggle-menu event in HA 0.90. However, the\n // supervisor UI can also run under older versions of Home Assistant.\n // So here we are going to translate toggle events into the appropriate\n // open and close events. These events are a no-op in newer versions of\n // Home Assistant.\n this.addEventListener(\"hass-toggle-menu\", () => {\n fireEvent(\n (window.parent as any).customPanel,\n // @ts-ignore\n this.hass.dockedSidebar ? \"hass-close-menu\" : \"hass-open-menu\"\n );\n });\n // Paulus - March 19, 2019\n // We changed the navigate event to fire directly on the window, as that's\n // where we are listening for it. However, the older panel_custom will\n // listen on this element for navigation events, so we need to forward them.\n window.addEventListener(\"location-changed\", (ev) =>\n // @ts-ignore\n fireEvent(this, ev.type, ev.detail, {\n bubbles: false,\n })\n );\n\n // Forward haptic events to parent window.\n window.addEventListener(\"haptic\", (ev) => {\n // @ts-ignore\n fireEvent(window.parent, ev.type, ev.detail, {\n bubbles: false,\n });\n });\n\n makeDialogManager(this, document.body);\n }\n\n protected updatePageEl(el) {\n // the tabs page does its own routing so needs full route.\n const route =\n el.nodeName === \"HASSIO-PAGES-WITH-TABS\" ? this.route : this.routeTail;\n\n if (\"setProperties\" in el) {\n // As long as we have Polymer pages\n (el as PolymerElement).setProperties({\n hass: this.hass,\n narrow: this.narrow,\n supervisorInfo: this._supervisorInfo,\n hostInfo: this._hostInfo,\n hassInfo: this._hassInfo,\n hassOsInfo: this._hassOsInfo,\n route,\n });\n } else {\n el.hass = this.hass;\n el.narrow = this.narrow;\n el.supervisorInfo = this._supervisorInfo;\n el.hostInfo = this._hostInfo;\n el.hassInfo = this._hassInfo;\n el.hassOsInfo = this._hassOsInfo;\n el.route = route;\n }\n }\n\n private async _fetchData() {\n if (this.panel.config && this.panel.config.ingress) {\n await this._redirectIngress(this.panel.config.ingress);\n return;\n }\n\n const [supervisorInfo, hostInfo, hassInfo] = await Promise.all([\n fetchHassioSupervisorInfo(this.hass),\n fetchHassioHostInfo(this.hass),\n fetchHassioHomeAssistantInfo(this.hass),\n ]);\n this._supervisorInfo = supervisorInfo;\n this._hostInfo = hostInfo;\n this._hassInfo = hassInfo;\n\n if (this._hostInfo.features && this._hostInfo.features.includes(\"hassos\")) {\n this._hassOsInfo = await fetchHassioHassOsInfo(this.hass);\n }\n }\n\n private async _redirectIngress(addonSlug: string) {\n // When we trigger a navigation, we sleep to make sure we don't\n // show the hassio dashboard before navigating away.\n const awaitAlert = async (\n alertParams: AlertDialogParams,\n action: () => void\n ) => {\n await new Promise((resolve) => {\n alertParams.confirm = resolve;\n showAlertDialog(this, alertParams);\n });\n action();\n await new Promise((resolve) => setTimeout(resolve, 1000));\n };\n\n const createSessionPromise = createHassioSession(this.hass).then(\n () => true,\n () => false\n );\n\n let addon;\n\n try {\n addon = await fetchHassioAddonInfo(this.hass, addonSlug);\n } catch (err) {\n await awaitAlert(\n {\n text: \"Unable to fetch add-on info to start Ingress\",\n title: \"Hass.io\",\n },\n () => history.back()\n );\n\n return;\n }\n\n if (!addon.ingress_url) {\n await awaitAlert(\n {\n text: \"Add-on does not support Ingress\",\n title: addon.name,\n },\n () => history.back()\n );\n\n return;\n }\n\n if (addon.state !== \"started\") {\n await awaitAlert(\n {\n text: \"Add-on is not running. Please start it first\",\n title: addon.name,\n },\n () => navigate(this, `/hassio/addon/${addon.slug}`, true)\n );\n\n return;\n }\n\n if (!(await createSessionPromise)) {\n await awaitAlert(\n {\n text: \"Unable to create an Ingress session\",\n title: addon.name,\n },\n () => history.back()\n );\n\n return;\n }\n\n location.assign(addon.ingress_url);\n // await a promise that doesn't resolve, so we show the loading screen\n // while we load the next page.\n await new Promise(() => undefined);\n }\n\n private _apiCalled(ev) {\n if (!ev.detail.success) {\n return;\n }\n\n let tries = 1;\n\n const tryUpdate = () => {\n this._fetchData().catch(() => {\n tries += 1;\n setTimeout(tryUpdate, Math.min(tries, 5) * 1000);\n });\n };\n\n tryUpdate();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-main\": HassioMain;\n }\n}\n","import { HomeAssistant } from \"../../types\";\nimport { HassioResponse, hassioApiResultExtractor } from \"./common\";\n\nexport interface HassioAddonInfo {\n name: string;\n slug: string;\n description: string;\n repository: \"core\" | \"local\" | string;\n version: string;\n state: \"none\" | \"started\" | \"stopped\";\n installed: string | undefined;\n detached: boolean;\n available: boolean;\n build: boolean;\n url: string | null;\n icon: boolean;\n logo: boolean;\n}\n\nexport interface HassioAddonDetails extends HassioAddonInfo {\n name: string;\n slug: string;\n description: string;\n long_description: null | string;\n auto_update: boolean;\n url: null | string;\n detached: boolean;\n available: boolean;\n arch: \"armhf\" | \"aarch64\" | \"i386\" | \"amd64\";\n machine: any;\n homeassistant: string;\n version_latest: string;\n boot: \"auto\" | \"manual\";\n build: boolean;\n options: object;\n network: null | object;\n network_description: null | object;\n host_network: boolean;\n host_pid: boolean;\n host_ipc: boolean;\n host_dbus: boolean;\n privileged: any;\n apparmor: \"disable\" | \"default\" | \"profile\";\n devices: string[];\n auto_uart: boolean;\n icon: boolean;\n logo: boolean;\n changelog: boolean;\n hassio_api: boolean;\n hassio_role: \"default\" | \"homeassistant\" | \"manager\" | \"admin\";\n homeassistant_api: boolean;\n auth_api: boolean;\n full_access: boolean;\n protected: boolean;\n rating: \"1-6\";\n stdin: boolean;\n webui: null | string;\n gpio: boolean;\n kernel_modules: boolean;\n devicetree: boolean;\n docker_api: boolean;\n audio: boolean;\n audio_input: null | string;\n audio_output: null | string;\n services_role: string[];\n discovery: string[];\n ip_address: string;\n ingress: boolean;\n ingress_panel: boolean;\n ingress_entry: null | string;\n ingress_url: null | string;\n}\n\nexport interface HassioAddonsInfo {\n addons: HassioAddonInfo[];\n repositories: HassioAddonRepository[];\n}\n\nexport interface HassioAddonSetSecurityParams {\n protected?: boolean;\n}\n\nexport interface HassioAddonRepository {\n slug: string;\n name: string;\n source: string;\n url: string;\n maintainer: string;\n}\n\nexport interface HassioAddonSetOptionParams {\n audio_input?: string | null;\n audio_output?: string | null;\n options?: object | null;\n boot?: \"auto\" | \"manual\";\n auto_update?: boolean;\n ingress_panel?: boolean;\n network?: object | null;\n}\n\nexport const reloadHassioAddons = async (hass: HomeAssistant) => {\n await hass.callApi>(\"POST\", `hassio/addons/reload`);\n};\n\nexport const fetchHassioAddonsInfo = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\"GET\", `hassio/addons`)\n );\n};\n\nexport const fetchHassioAddonInfo = async (\n hass: HomeAssistant,\n slug: string\n) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n `hassio/addons/${slug}/info`\n )\n );\n};\n\nexport const fetchHassioAddonChangelog = async (\n hass: HomeAssistant,\n slug: string\n) => {\n return hass.callApi(\"GET\", `hassio/addons/${slug}/changelog`);\n};\n\nexport const fetchHassioAddonLogs = async (\n hass: HomeAssistant,\n slug: string\n) => {\n return hass.callApi(\"GET\", `hassio/addons/${slug}/logs`);\n};\n\nexport const setHassioAddonOption = async (\n hass: HomeAssistant,\n slug: string,\n data: HassioAddonSetOptionParams\n) => {\n await hass.callApi>(\n \"POST\",\n `hassio/addons/${slug}/options`,\n data\n );\n};\n\nexport const setHassioAddonSecurity = async (\n hass: HomeAssistant,\n slug: string,\n data: HassioAddonSetSecurityParams\n) => {\n await hass.callApi>(\n \"POST\",\n `hassio/addons/${slug}/security`,\n data\n );\n};\n\nexport const installHassioAddon = async (hass: HomeAssistant, slug: string) => {\n return hass.callApi>(\n \"POST\",\n `hassio/addons/${slug}/install`\n );\n};\n\nexport const uninstallHassioAddon = async (\n hass: HomeAssistant,\n slug: string\n) => {\n await hass.callApi>(\n \"POST\",\n `hassio/addons/${slug}/uninstall`\n );\n};\n","import { fireEvent } from \"./dom/fire_event\";\n\ndeclare global {\n // for fire event\n interface HASSDomEvents {\n \"location-changed\": {\n replace: boolean;\n };\n }\n}\n\nexport const navigate = (\n _node: any,\n path: string,\n replace: boolean = false\n) => {\n if (__DEMO__) {\n if (replace) {\n history.replaceState(null, \"\", `${location.pathname}#${path}`);\n } else {\n window.location.hash = path;\n }\n } else {\n if (replace) {\n history.replaceState(null, \"\", path);\n } else {\n history.pushState(null, \"\", path);\n }\n }\n fireEvent(window, \"location-changed\", {\n replace,\n });\n};\n","import { LocalizeFunc } from \"../translations/localize\";\n\n/**\n * Calculate a string representing a date object as relative time from now.\n *\n * Example output: 5 minutes ago, in 3 days.\n */\nconst tests = [60, 60, 24, 7];\nconst langKey = [\"second\", \"minute\", \"hour\", \"day\"];\n\nexport default function relativeTime(\n dateObj: Date,\n localize: LocalizeFunc,\n options: {\n compareTime?: Date;\n includeTense?: boolean;\n } = {}\n): string {\n const compareTime = options.compareTime || new Date();\n let delta = (compareTime.getTime() - dateObj.getTime()) / 1000;\n const tense = delta >= 0 ? \"past\" : \"future\";\n delta = Math.abs(delta);\n\n let timeDesc;\n\n for (let i = 0; i < tests.length; i++) {\n if (delta < tests[i]) {\n delta = Math.floor(delta);\n timeDesc = localize(\n `ui.components.relative_time.duration.${langKey[i]}`,\n \"count\",\n delta\n );\n break;\n }\n\n delta /= tests[i];\n }\n\n if (timeDesc === undefined) {\n delta = Math.floor(delta);\n timeDesc = localize(\n \"ui.components.relative_time.duration.week\",\n \"count\",\n delta\n );\n }\n\n return options.includeTense === false\n ? timeDesc\n : localize(`ui.components.relative_time.${tense}`, \"time\", timeDesc);\n}\n","import { dedupingMixin } from \"@polymer/polymer/lib/utils/mixin\";\n/**\n * Polymer Mixin to enable a localize function powered by language/resources from hass object.\n *\n * @polymerMixin\n */\nexport default dedupingMixin(\n (superClass) =>\n class extends superClass {\n static get properties() {\n return {\n hass: Object,\n\n /**\n * Translates a string to the current `language`. Any parameters to the\n * string should be passed in order, as follows:\n * `localize(stringKey, param1Name, param1Value, param2Name, param2Value)`\n */\n localize: {\n type: Function,\n computed: \"__computeLocalize(hass.localize)\",\n },\n };\n }\n\n __computeLocalize(localize) {\n return localize;\n }\n }\n);\n","import { dom } from \"@polymer/polymer/lib/legacy/polymer.dom\";\nimport { PolymerElement } from \"@polymer/polymer/polymer-element\";\n\nimport relativeTime from \"../common/datetime/relative_time\";\n\nimport LocalizeMixin from \"../mixins/localize-mixin\";\n\n/*\n * @appliesMixin LocalizeMixin\n */\nclass HaRelativeTime extends LocalizeMixin(PolymerElement) {\n static get properties() {\n return {\n hass: Object,\n datetime: {\n type: String,\n observer: \"datetimeChanged\",\n },\n\n datetimeObj: {\n type: Object,\n observer: \"datetimeObjChanged\",\n },\n\n parsedDateTime: Object,\n };\n }\n\n constructor() {\n super();\n this.updateRelative = this.updateRelative.bind(this);\n }\n\n connectedCallback() {\n super.connectedCallback();\n // update every 60 seconds\n this.updateInterval = setInterval(this.updateRelative, 60000);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n clearInterval(this.updateInterval);\n }\n\n datetimeChanged(newVal) {\n this.parsedDateTime = newVal ? new Date(newVal) : null;\n\n this.updateRelative();\n }\n\n datetimeObjChanged(newVal) {\n this.parsedDateTime = newVal;\n\n this.updateRelative();\n }\n\n updateRelative() {\n const root = dom(this);\n if (!this.parsedDateTime) {\n root.innerHTML = this.localize(\"ui.components.relative_time.never\");\n } else {\n root.innerHTML = relativeTime(this.parsedDateTime, this.localize);\n }\n }\n}\n\ncustomElements.define(\"ha-relative-time\", HaRelativeTime);\n","import {\n LitElement,\n TemplateResult,\n html,\n CSSResult,\n css,\n property,\n customElement,\n} from \"lit-element\";\nimport \"@polymer/iron-icon/iron-icon\";\n\nimport \"../../../src/components/ha-relative-time\";\nimport { HomeAssistant } from \"../../../src/types\";\n\n@customElement(\"hassio-card-content\")\nclass HassioCardContent extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public title!: string;\n @property() public description?: string;\n @property({ type: Boolean }) public available: boolean = true;\n @property({ type: Boolean }) public showTopbar: boolean = false;\n @property() public topbarClass?: string;\n @property() public datetime?: string;\n @property() public iconTitle?: string;\n @property() public iconClass?: string;\n @property() public icon = \"hass:help-circle\";\n @property() public iconImage?: string;\n\n protected render(): TemplateResult {\n return html`\n ${this.showTopbar\n ? html`\n
\n `\n : \"\"}\n ${this.iconImage\n ? html`\n
\n \n
\n
\n `\n : html`\n \n `}\n
\n
\n ${this.title}\n
\n
\n ${this.description}\n ${/* treat as available when undefined */\n this.available === false ? \" (Not available)\" : \"\"}\n ${this.datetime\n ? html`\n \n `\n : undefined}\n
\n
\n `;\n }\n\n static get styles(): CSSResult {\n return css`\n iron-icon {\n margin-right: 24px;\n margin-left: 8px;\n margin-top: 12px;\n float: left;\n color: var(--secondary-text-color);\n }\n iron-icon.update {\n color: var(--paper-orange-400);\n }\n iron-icon.running,\n iron-icon.installed {\n color: var(--paper-green-400);\n }\n iron-icon.hassupdate,\n iron-icon.snapshot {\n color: var(--paper-item-icon-color);\n }\n iron-icon.not_available {\n color: var(--google-red-500);\n }\n .title {\n color: var(--primary-text-color);\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n .addition {\n color: var(--secondary-text-color);\n overflow: hidden;\n position: relative;\n height: 2.4em;\n line-height: 1.2em;\n }\n ha-relative-time {\n display: block;\n }\n .icon_image img {\n max-height: 40px;\n max-width: 40px;\n margin-top: 4px;\n margin-right: 16px;\n float: left;\n }\n .icon_image.stopped,\n .icon_image.not_available {\n filter: grayscale(1);\n }\n .dot {\n position: absolute;\n background-color: var(--paper-orange-400);\n width: 12px;\n height: 12px;\n top: 8px;\n right: 8px;\n border-radius: 50%;\n }\n .topbar {\n position: absolute;\n width: 100%;\n height: 2px;\n top: 0;\n left: 0;\n border-top-left-radius: 2px;\n border-top-right-radius: 2px;\n }\n .topbar.installed {\n background-color: var(--primary-color);\n }\n .topbar.update {\n background-color: var(--accent-color);\n }\n .topbar.unavailable {\n background-color: var(--error-color);\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-card-content\": HassioCardContent;\n }\n}\n","export interface HassioResponse {\n data: T;\n result: \"ok\";\n}\n\nexport const hassioApiResultExtractor = (response: HassioResponse) =>\n response.data;\n","import { LitElement, html } from \"lit-element\";\n\nimport \"./ha-progress-button\";\nimport { fireEvent } from \"../../common/dom/fire_event\";\n\nclass HaCallApiButton extends LitElement {\n render() {\n return html`\n \n `;\n }\n\n constructor() {\n super();\n this.method = \"POST\";\n this.data = {};\n this.disabled = false;\n this.progress = false;\n }\n\n static get properties() {\n return {\n hass: {},\n progress: Boolean,\n path: String,\n method: String,\n data: {},\n disabled: Boolean,\n };\n }\n\n get progressButton() {\n return this.renderRoot.querySelector(\"ha-progress-button\");\n }\n\n async _buttonTapped() {\n this.progress = true;\n const eventData = {\n method: this.method,\n path: this.path,\n data: this.data,\n };\n\n try {\n const resp = await this.hass.callApi(this.method, this.path, this.data);\n this.progress = false;\n this.progressButton.actionSuccess();\n eventData.success = true;\n eventData.response = resp;\n } catch (err) {\n this.progress = false;\n this.progressButton.actionError();\n eventData.success = false;\n eventData.response = err;\n }\n\n fireEvent(this, \"hass-api-called\", eventData);\n }\n}\n\ncustomElements.define(\"ha-call-api-button\", HaCallApiButton);\n","import { HomeAssistant, PanelInfo } from \"../../types\";\nimport { HassioResponse, hassioApiResultExtractor } from \"./common\";\n\nexport type HassioHomeAssistantInfo = any;\nexport type HassioSupervisorInfo = any;\n\nexport type HassioPanelInfo = PanelInfo<\n | undefined\n | {\n ingress?: string;\n }\n>;\n\nexport interface CreateSessionResponse {\n session: string;\n}\n\nexport interface SupervisorOptions {\n channel: \"beta\" | \"dev\" | \"stable\";\n}\n\nexport const fetchHassioHomeAssistantInfo = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/core/info\"\n )\n );\n};\n\nexport const fetchHassioSupervisorInfo = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/supervisor/info\"\n )\n );\n};\n\nexport const fetchSupervisorLogs = async (hass: HomeAssistant) => {\n return hass.callApi(\"GET\", \"hassio/supervisor/logs\");\n};\n\nexport const createHassioSession = async (hass: HomeAssistant) => {\n const response = await hass.callApi>(\n \"POST\",\n \"hassio/ingress/session\"\n );\n document.cookie = `ingress_session=${response.data.session};path=/api/hassio_ingress/`;\n};\n\nexport const setSupervisorOption = async (\n hass: HomeAssistant,\n data: SupervisorOptions\n) => {\n await hass.callApi>(\n \"POST\",\n \"hassio/supervisor/options\",\n data\n );\n};\n","export const atLeastVersion = (\n version: string,\n major: number,\n minor: number\n): boolean => {\n const [haMajor, haMinor] = version.split(\".\", 2);\n return (\n Number(haMajor) > major ||\n (Number(haMajor) === major && Number(haMinor) >= minor)\n );\n};\n","import {\n createCollection,\n Connection,\n HassEntity,\n} from \"home-assistant-js-websocket\";\n\nexport interface PersitentNotificationEntity extends HassEntity {\n notification_id?: string;\n created_at?: string;\n title?: string;\n message?: string;\n}\n\nexport interface PersistentNotification {\n created_at: string;\n message: string;\n notification_id: string;\n title: string;\n status: \"read\" | \"unread\";\n}\n\nconst fetchNotifications = (conn) =>\n conn.sendMessagePromise({\n type: \"persistent_notification/get\",\n });\n\nconst subscribeUpdates = (conn, store) =>\n conn.subscribeEvents(\n () => fetchNotifications(conn).then((ntf) => store.setState(ntf, true)),\n \"persistent_notifications_updated\"\n );\n\nexport const subscribeNotifications = (\n conn: Connection,\n onChange: (notifications: PersistentNotification[]) => void\n) =>\n createCollection(\n \"_ntf\",\n fetchNotifications,\n subscribeUpdates,\n conn,\n onChange\n );\n","import \"@polymer/paper-icon-button/paper-icon-button\";\nimport {\n property,\n TemplateResult,\n LitElement,\n html,\n customElement,\n CSSResult,\n css,\n} from \"lit-element\";\n\nimport { fireEvent } from \"../common/dom/fire_event\";\nimport { HomeAssistant } from \"../types\";\nimport { UnsubscribeFunc } from \"home-assistant-js-websocket\";\nimport { subscribeNotifications } from \"../data/persistent_notification\";\nimport { computeDomain } from \"../common/entity/compute_domain\";\n\n@customElement(\"ha-menu-button\")\nclass HaMenuButton extends LitElement {\n @property({ type: Boolean }) public hassio = false;\n @property() public narrow!: boolean;\n @property() public hass!: HomeAssistant;\n @property() private _hasNotifications = false;\n private _alwaysVisible = false;\n private _attachNotifOnConnect = false;\n private _unsubNotifications?: UnsubscribeFunc;\n\n public connectedCallback() {\n super.connectedCallback();\n if (this._attachNotifOnConnect) {\n this._attachNotifOnConnect = false;\n this._subscribeNotifications();\n }\n }\n\n public disconnectedCallback() {\n super.disconnectedCallback();\n if (this._unsubNotifications) {\n this._attachNotifOnConnect = true;\n this._unsubNotifications();\n this._unsubNotifications = undefined;\n }\n }\n\n protected render(): TemplateResult {\n const hasNotifications =\n (this.narrow || this.hass.dockedSidebar === \"always_hidden\") &&\n (this._hasNotifications ||\n Object.keys(this.hass.states).some(\n (entityId) => computeDomain(entityId) === \"configurator\"\n ));\n return html`\n \n ${hasNotifications\n ? html`\n
\n `\n : \"\"}\n `;\n }\n\n protected firstUpdated(changedProps) {\n super.firstUpdated(changedProps);\n if (!this.hassio) {\n return;\n }\n // This component is used on Hass.io too, but Hass.io might run the UI\n // on older frontends too, that don't have an always visible menu button\n // in the sidebar.\n this._alwaysVisible =\n (Number((window.parent as any).frontendVersion) || 0) < 20190710;\n }\n\n protected updated(changedProps) {\n super.updated(changedProps);\n\n if (!changedProps.has(\"narrow\") && !changedProps.has(\"hass\")) {\n return;\n }\n\n const oldHass = changedProps.get(\"hass\") as HomeAssistant | undefined;\n const oldNarrow =\n changedProps.get(\"narrow\") ||\n (oldHass && oldHass.dockedSidebar === \"always_hidden\");\n const newNarrow =\n this.narrow || this.hass.dockedSidebar === \"always_hidden\";\n\n if (oldNarrow === newNarrow) {\n return;\n }\n\n this.style.visibility =\n newNarrow || this._alwaysVisible ? \"initial\" : \"hidden\";\n\n if (!newNarrow) {\n this._hasNotifications = false;\n if (this._unsubNotifications) {\n this._unsubNotifications();\n this._unsubNotifications = undefined;\n }\n return;\n }\n\n this._subscribeNotifications();\n }\n\n private _subscribeNotifications() {\n this._unsubNotifications = subscribeNotifications(\n this.hass.connection,\n (notifications) => {\n this._hasNotifications = notifications.length > 0;\n }\n );\n }\n\n private _toggleMenu(): void {\n fireEvent(this, \"hass-toggle-menu\");\n }\n\n static get styles(): CSSResult {\n return css`\n :host {\n position: relative;\n }\n .dot {\n pointer-events: none;\n position: absolute;\n background-color: var(--accent-color);\n width: 12px;\n height: 12px;\n top: 5px;\n right: 2px;\n border-radius: 50%;\n border: 2px solid var(--app-header-background-color);\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-menu-button\": HaMenuButton;\n }\n}\n","export const computeDomain = (entityId: string): string => {\n return entityId.substr(0, entityId.indexOf(\".\"));\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/supervisor/api/panel/chunk.b38bff4d0774d202dcad.js b/supervisor/api/panel/chunk.b38bff4d0774d202dcad.js new file mode 100644 index 000000000..dfc1473f7 --- /dev/null +++ b/supervisor/api/panel/chunk.b38bff4d0774d202dcad.js @@ -0,0 +1,2 @@ +(self.webpackJsonp=self.webpackJsonp||[]).push([[7],{179:function(e,t,r){"use strict";r.r(t);r(111),r(127),r(48),r(24),r(82);var n=r(5),i=r(27),o=r(15),a=r(10),s=(r(137),r(18),r(19),r(173),r(174),r(138),r(118));function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function l(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t","\n "]);return p=function(){return e},e}function h(){var e=y(["\n ","\n "]);return h=function(){return e},e}function m(){var e=y(['\n
',"
\n "]);return m=function(){return e},e}function v(){var e=y(['\n \n
\n ','\n\n \n \n \n \n \n \n
\n
\n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n ".concat(t.codeMirrorCss,"\n .CodeMirror {\n height: var(--code-mirror-height, auto);\n direction: var(--code-mirror-direction, ltr);\n }\n .CodeMirror-scroll {\n max-height: var(--code-mirror-max-height, --code-mirror-height);\n }\n .CodeMirror-gutters {\n border-right: 1px solid var(--paper-input-container-color, var(--secondary-text-color));\n background-color: var(--paper-dialog-background-color, var(--primary-background-color));\n transition: 0.2s ease border-right;\n }\n :host(.error-state) .CodeMirror-gutters {\n border-color: var(--error-state-color, red);\n }\n .CodeMirror-focused .CodeMirror-gutters {\n border-right: 2px solid var(--paper-input-container-focus-color, var(--primary-color));\n }\n .CodeMirror-linenumber {\n color: var(--paper-dialog-color, var(--primary-text-color));\n }\n .rtl .CodeMirror-vscrollbar {\n right: auto;\n left: 0px;\n }\n .rtl-gutter {\n width: 20px;\n }\n "),this.codemirror=r(n,{value:this._value,lineNumbers:!0,tabSize:2,mode:this.mode,autofocus:!1!==this.autofocus,viewportMargin:1/0,extraKeys:{Tab:"indentMore","Shift-Tab":"indentLess"},gutters:this._calcGutters()}),this._setScrollBarDirection(),this.codemirror.on("changes",function(){return i._onChange()});case 9:case"end":return e.stop()}},e,this)}),function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){F(o,n,i,a,s,"next",e)}function s(e){F(o,n,i,a,s,"throw",e)}a(void 0)})});return function(){return t.apply(this,arguments)}}()},{kind:"method",key:"_onChange",value:function(){var e=this.value;e!==this._value&&(this._value=e,Object(C.a)(this,"value-changed",{value:this._value}))}},{kind:"method",key:"_calcGutters",value:function(){return this.rtl?["rtl-gutter","CodeMirror-linenumbers"]:[]}},{kind:"method",key:"_setScrollBarDirection",value:function(){this.codemirror&&this.codemirror.getWrapperElement().classList.toggle("rtl",this.rtl)}}]}},n.b);var G=function(e){requestAnimationFrame(function(){return setTimeout(e,0)})};function Y(){var e=K(["\n

","

\n "]);return Y=function(){return e},e}function J(){var e=K(["\n ","\n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;aInvalid YAML
\n ']);return ue=function(){return e},e}function fe(){var e=he(['\n
',"
\n "]);return fe=function(){return e},e}function pe(){var e=he(['\n \n
\n \n
\n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a bit more top margin */\n font-weight: 500;\n overflow: hidden;\n text-transform: uppercase;\n text-overflow: ellipsis;\n transition: background-color 0.3s ease-in-out;\n text-transform: var(--ha-label-badge-label-text-transform, uppercase);\n }\n .label-badge .label.big span {\n font-size: 90%;\n padding: 10% 12% 7% 12%; /* push smaller text a bit down to center vertically */\n }\n .badge-container .title {\n margin-top: 1em;\n font-size: var(--ha-label-badge-title-font-size, 0.9em);\n width: var(--ha-label-badge-title-width, 5em);\n font-weight: var(--ha-label-badge-title-font-weight, 400);\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: normal;\n }\n "]);return Ie=function(){return e},e}function He(){var e=Ve(['\n
',"
\n "]);return He=function(){return e},e}function Ne(){var e=Ve(['\n \n ',"\n
\n "]);return Ne=function(){return e},e}function Me(){var e=Ve(["\n ","\n "]);return Me=function(){return e},e}function Ue(){var e=Ve(['\n \n ']);return Ue=function(){return e},e}function Le(){var e=Ve(['\n
\n
\n \n ',"\n ","\n
\n ","\n
\n ","\n
\n "]);return Le=function(){return e},e}function Ve(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Be(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function qe(e,t){return(qe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function We(e){var t,r=Qe(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function Ge(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Ye(e){return e.decorators&&e.decorators.length}function Je(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Ke(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Qe(e){var t=function(e,t){if("object"!==Fe(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Fe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Fe(t)?t:String(t)}function Xe(e,t,r){return(Xe="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=Ze(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function Ze(e){return(Ze=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}customElements.define("ha-icon",Re);var $e=function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!Ye(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a4)}),!this.icon||this.value||this.image?"":Object(n.e)(Ue(),this.icon),this.value&&!this.image?Object(n.e)(Me(),this.value):"",this.label?Object(n.e)(Ne(),Object(_e.a)({label:!0,big:this.label.length>5}),this.label):"",this.description?Object(n.e)(He(),this.description):"")}},{kind:"get",static:!0,key:"styles",value:function(){return[Object(n.c)(Ie())]}},{kind:"method",key:"updated",value:function(e){Xe(Ze(r.prototype),"updated",this).call(this,e),e.has("image")&&(this.shadowRoot.getElementById("badge").style.backgroundImage=this.image?"url(".concat(this.image,")"):"")}}]}},n.a);customElements.define("ha-label-badge",$e);r(88),r(94),r(41);var et=r(37),tt=r(119),rt=r(85);function nt(e){return(nt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function it(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(l){return void r(l)}s.done?t(c):Promise.resolve(c).then(n,i)}function ot(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){it(o,n,i,a,s,"next",e)}function s(e){it(o,n,i,a,s,"throw",e)}a(void 0)})}}function at(){var e=Ut(["\n :host {\n display: block;\n }\n paper-card {\n display: block;\n margin-bottom: 16px;\n }\n paper-card.warning {\n background-color: var(--google-red-500);\n color: white;\n --paper-card-header-color: white;\n }\n paper-card.warning mwc-button {\n --mdc-theme-primary: white !important;\n }\n .warning {\n color: var(--google-red-500);\n --mdc-theme-primary: var(--google-red-500);\n }\n .light-color {\n color: var(--secondary-text-color);\n }\n .addon-header {\n font-size: 24px;\n color: var(--paper-card-header-color, --primary-text-color);\n }\n .addon-version {\n float: right;\n font-size: 15px;\n vertical-align: middle;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n .description {\n margin-bottom: 16px;\n }\n .logo img {\n max-height: 60px;\n margin: 16px 0;\n display: block;\n }\n .state {\n display: flex;\n margin: 33px 0;\n }\n .state div {\n width: 180px;\n display: inline-block;\n }\n .state iron-icon {\n width: 16px;\n height: 16px;\n color: var(--secondary-text-color);\n }\n ha-switch {\n display: flex;\n }\n iron-icon.running {\n color: var(--paper-green-400);\n }\n iron-icon.stopped {\n color: var(--google-red-300);\n }\n ha-call-api-button {\n font-weight: 500;\n color: var(--primary-color);\n }\n .right {\n float: right;\n }\n ha-markdown img {\n max-width: 100%;\n }\n protection-enable mwc-button {\n --mdc-theme-primary: white;\n }\n .description a,\n ha-markdown a {\n color: var(--primary-color);\n }\n .red {\n --ha-label-badge-color: var(--label-badge-red, #df4c1e);\n }\n .blue {\n --ha-label-badge-color: var(--label-badge-blue, #039be5);\n }\n .green {\n --ha-label-badge-color: var(--label-badge-green, #0da035);\n }\n .yellow {\n --ha-label-badge-color: var(--label-badge-yellow, #f4b400);\n }\n .security {\n margin-bottom: 16px;\n }\n .card-actions {\n display: flow-root;\n }\n .security h3 {\n margin-bottom: 8px;\n font-weight: normal;\n }\n .security ha-label-badge {\n cursor: pointer;\n margin-right: 4px;\n --iron-icon-height: 45px;\n }\n "]);return at=function(){return e},e}function st(){var e=Ut(['\n \n
\n \n This add-on is not available on your system.\n

\n ']);return ct=function(){return e},e}function lt(){var e=Ut(["\n ","\n \n Install\n \n "]);return lt=function(){return e},e}function dt(){var e=Ut(['\n \n \n Open web UI\n \n \n ']);return ut=function(){return e},e}function ft(){var e=Ut(["\n \n Start\n \n ']);return ft=function(){return e},e}function pt(){var e=Ut(['\n \n Restart\n \n \n Stop\n \n ']);return pt=function(){return e},e}function ht(){var e=Ut(['\n \n Rebuild\n \n ']);return ht=function(){return e},e}function mt(){var e=Ut(['\n ',"
\n "]);return vt=function(){return e},e}function yt(){var e=Ut(['\n
\n
\n Protection mode\n \n \n \n Grant the add-on elevated system access.\n \n \n
\n \n
Show in sidebar
\n \n
Start on boot
\n \n
\n
\n
Auto update
\n \n ']);return kt=function(){return e},e}function Et(){var e=Ut(["\n \n ']);return Et=function(){return e},e}function Ot(){var e=Ut(["\n \n ']);return Ot=function(){return e},e}function jt(){var e=Ut(["\n \n ']);return jt=function(){return e},e}function _t(){var e=Ut(["\n \n ']);return _t=function(){return e},e}function Pt(){var e=Ut(["\n \n ']);return xt=function(){return e},e}function Dt(){var e=Ut(["\n \n ']);return Dt=function(){return e},e}function At(){var e=Ut(["\n \n ']);return At=function(){return e},e}function Ct(){var e=Ut(['\n
\n ${this.description\n ? html`\n
${this.description}
\n `\n : \"\"}\n
\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n css`\n .badge-container {\n display: inline-block;\n text-align: center;\n vertical-align: top;\n }\n .label-badge {\n position: relative;\n display: block;\n margin: 0 auto;\n width: var(--ha-label-badge-size, 2.5em);\n text-align: center;\n height: var(--ha-label-badge-size, 2.5em);\n line-height: var(--ha-label-badge-size, 2.5em);\n font-size: var(--ha-label-badge-font-size, 1.5em);\n border-radius: 50%;\n border: 0.1em solid var(--ha-label-badge-color, var(--primary-color));\n color: var(--label-badge-text-color, rgb(76, 76, 76));\n\n white-space: nowrap;\n background-color: var(--label-badge-background-color, white);\n background-size: cover;\n transition: border 0.3s ease-in-out;\n }\n .label-badge .value {\n font-size: 90%;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .label-badge .value.big {\n font-size: 70%;\n }\n .label-badge .label {\n position: absolute;\n bottom: -1em;\n /* Make the label as wide as container+border. (parent_borderwidth / font-size) */\n left: -0.2em;\n right: -0.2em;\n line-height: 1em;\n font-size: 0.5em;\n }\n .label-badge .label span {\n box-sizing: border-box;\n max-width: 100%;\n display: inline-block;\n background-color: var(--ha-label-badge-color, var(--primary-color));\n color: var(--ha-label-badge-label-color, white);\n border-radius: 1em;\n padding: 9% 16% 8% 16%; /* mostly apitalized text, not much descenders => bit more top margin */\n font-weight: 500;\n overflow: hidden;\n text-transform: uppercase;\n text-overflow: ellipsis;\n transition: background-color 0.3s ease-in-out;\n text-transform: var(--ha-label-badge-label-text-transform, uppercase);\n }\n .label-badge .label.big span {\n font-size: 90%;\n padding: 10% 12% 7% 12%; /* push smaller text a bit down to center vertically */\n }\n .badge-container .title {\n margin-top: 1em;\n font-size: var(--ha-label-badge-title-font-size, 0.9em);\n width: var(--ha-label-badge-title-width, 5em);\n font-weight: var(--ha-label-badge-title-font-weight, 400);\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: normal;\n }\n `,\n ];\n }\n\n protected updated(changedProperties: PropertyValues): void {\n super.updated(changedProperties);\n if (changedProperties.has(\"image\")) {\n this.shadowRoot!.getElementById(\"badge\")!.style.backgroundImage = this\n .image\n ? `url(${this.image})`\n : \"\";\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-label-badge\": HaLabelBadge;\n }\n}\n\ncustomElements.define(\"ha-label-badge\", HaLabelBadge);\n","import \"@material/mwc-button\";\nimport \"@polymer/iron-icon/iron-icon\";\nimport \"@polymer/paper-card/paper-card\";\nimport \"@polymer/paper-tooltip/paper-tooltip\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\nimport { classMap } from \"lit-html/directives/class-map\";\n\nimport \"../../../src/components/buttons/ha-call-api-button\";\nimport \"../../../src/components/buttons/ha-progress-button\";\nimport \"../../../src/components/ha-label-badge\";\nimport \"../../../src/components/ha-markdown\";\nimport \"../../../src/components/ha-switch\";\nimport \"../components/hassio-card-content\";\n\nimport { fireEvent } from \"../../../src/common/dom/fire_event\";\nimport {\n HassioAddonDetails,\n HassioAddonSetOptionParams,\n HassioAddonSetSecurityParams,\n setHassioAddonOption,\n setHassioAddonSecurity,\n uninstallHassioAddon,\n installHassioAddon,\n fetchHassioAddonChangelog,\n} from \"../../../src/data/hassio/addon\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { navigate } from \"../../../src/common/navigate\";\nimport { showHassioMarkdownDialog } from \"../dialogs/markdown/show-dialog-hassio-markdown\";\nimport { atLeastVersion } from \"../../../src/common/config/version\";\n\nconst PERMIS_DESC = {\n rating: {\n title: \"Add-on Security Rating\",\n description:\n \"Hass.io provides a security rating to each of the add-ons, which indicates the risks involved when using this add-on. The more access an add-on requires on your system, the lower the score, thus raising the possible security risks.\\n\\nA score is on a scale from 1 to 6. Where 1 is the lowest score (considered the most insecure and highest risk) and a score of 6 is the highest score (considered the most secure and lowest risk).\",\n },\n host_network: {\n title: \"Host Network\",\n description:\n \"Add-ons usually run in their own isolated network layer, which prevents them from accessing the network of the host operating system. In some cases, this network isolation can limit add-ons in providing their services and therefore, the isolation can be lifted by the add-on author, giving the add-on full access to the network capabilities of the host machine. This gives the add-on more networking capabilities but lowers the security, hence, the security rating of the add-on will be lowered when this option is used by the add-on.\",\n },\n homeassistant_api: {\n title: \"Home Assistant API Access\",\n description:\n \"This add-on is allowed to access your running Home Assistant instance directly via the Home Assistant API. This mode handles authentication for the add-on as well, which enables an add-on to interact with Home Assistant without the need for additional authentication tokens.\",\n },\n full_access: {\n title: \"Full Hardware Access\",\n description:\n \"This add-on is given full access to the hardware of your system, by request of the add-on author. Access is comparable to the privileged mode in Docker. Since this opens up possible security risks, this feature impacts the add-on security score negatively.\\n\\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on.\",\n },\n hassio_api: {\n title: \"Hass.io API Access\",\n description:\n \"The add-on was given access to the Hass.io API, by request of the add-on author. By default, the add-on can access general version information of your system. When the add-on requests 'manager' or 'admin' level access to the API, it will gain access to control multiple parts of your Hass.io system. This permission is indicated by this badge and will impact the security score of the addon negatively.\",\n },\n docker_api: {\n title: \"Full Docker Access\",\n description:\n \"The add-on author has requested the add-on to have management access to the Docker instance running on your system. This mode gives the add-on full access and control to your entire Hass.io system, which adds security risks, and could damage your system when misused. Therefore, this feature impacts the add-on security score negatively.\\n\\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on.\",\n },\n host_pid: {\n title: \"Host Processes Namespace\",\n description:\n \"Usually, the processes the add-on runs, are isolated from all other system processes. The add-on author has requested the add-on to have access to the system processes running on the host system instance, and allow the add-on to spawn processes on the host system as well. This mode gives the add-on full access and control to your entire Hass.io system, which adds security risks, and could damage your system when misused. Therefore, this feature impacts the add-on security score negatively.\\n\\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on.\",\n },\n apparmor: {\n title: \"AppArmor\",\n description:\n \"AppArmor ('Application Armor') is a Linux kernel security module that restricts add-ons capabilities like network access, raw socket access, and permission to read, write, or execute specific files.\\n\\nAdd-on authors can provide their security profiles, optimized for the add-on, or request it to be disabled. If AppArmor is disabled, it will raise security risks and therefore, has a negative impact on the security score of the add-on.\",\n },\n auth_api: {\n title: \"Home Assistant Authentication\",\n description:\n \"An add-on can authenticate users against Home Assistant, allowing add-ons to give users the possibility to log into applications running inside add-ons, using their Home Assistant username/password. This badge indicates if the add-on author requests this capability.\",\n },\n ingress: {\n title: \"Ingress\",\n description:\n \"This add-on is using Ingress to embed its interface securely into Home Assistant.\",\n },\n};\n\n@customElement(\"hassio-addon-info\")\nclass HassioAddonInfo extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public addon!: HassioAddonDetails;\n @property() private _error?: string;\n @property({ type: Boolean }) private _installing = false;\n\n protected render(): TemplateResult {\n return html`\n ${this._computeUpdateAvailable\n ? html`\n \n
\n \n ${!this.addon.available\n ? html`\n

\n This update is no longer compatible with your system.\n

\n `\n : \"\"}\n
\n
\n \n Update\n \n ${this.addon.changelog\n ? html`\n \n Changelog\n \n `\n : \"\"}\n
\n
\n `\n : \"\"}\n ${!this.addon.protected\n ? html`\n \n
\n Protection mode on this add-on is disabled! This gives the add-on full access to the entire system, which adds security risks, and could damage your system when used incorrectly. Only disable the protection mode if you know, need AND trust the source of this add-on.\n
\n
\n Enable Protection mode\n
\n
\n \n `\n : \"\"}\n\n \n
\n
\n ${this.addon.name}\n
\n ${this.addon.version\n ? html`\n ${this.addon.version}\n ${this._computeIsRunning\n ? html`\n \n `\n : html`\n \n `}\n `\n : html`\n ${this.addon.version_latest}\n `}\n
\n
\n
\n ${this.addon.logo\n ? html`\n \n \n \n `\n : \"\"}\n
\n \n ${this.addon.host_network\n ? html`\n \n `\n : \"\"}\n ${this.addon.full_access\n ? html`\n \n `\n : \"\"}\n ${this.addon.homeassistant_api\n ? html`\n \n `\n : \"\"}\n ${this._computeHassioApi\n ? html`\n \n `\n : \"\"}\n ${this.addon.docker_api\n ? html`\n \n `\n : \"\"}\n ${this.addon.host_pid\n ? html`\n \n `\n : \"\"}\n ${this.addon.apparmor\n ? html`\n \n `\n : \"\"}\n ${this.addon.auth_api\n ? html`\n \n `\n : \"\"}\n ${this.addon.ingress\n ? html`\n \n `\n : \"\"}\n
\n\n ${this.addon.version\n ? html`\n
\n
Start on boot
\n \n
\n
\n
Auto update
\n \n
\n ${this.addon.ingress\n ? html`\n
\n
Show in sidebar
\n \n ${this._computeCannotIngressSidebar\n ? html`\n \n This option requires Home Assistant 0.92 or\n later.\n \n `\n : \"\"}\n
\n `\n : \"\"}\n ${this._computeUsesProtectedOptions\n ? html`\n
\n
\n Protection mode\n \n \n \n Grant the add-on elevated system access.\n \n \n
\n \n
\n `\n : \"\"}\n `\n : \"\"}\n ${this._error\n ? html`\n
${this._error}
\n `\n : \"\"}\n
\n
\n ${this.addon.version\n ? html`\n \n Uninstall\n \n ${this.addon.build\n ? html`\n \n Rebuild\n \n `\n : \"\"}\n ${this._computeIsRunning\n ? html`\n \n Restart\n \n \n Stop\n \n `\n : html`\n \n Start\n \n `}\n ${this._computeShowWebUI\n ? html`\n \n \n Open web UI\n \n \n `\n : \"\"}\n ${this._computeShowIngressUI\n ? html`\n \n Open web UI\n \n `\n : \"\"}\n `\n : html`\n ${!this.addon.available\n ? html`\n

\n This add-on is not available on your system.\n

\n `\n : \"\"}\n \n Install\n \n `}\n
\n \n\n ${this.addon.long_description\n ? html`\n \n
\n \n
\n
\n `\n : \"\"}\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n :host {\n display: block;\n }\n paper-card {\n display: block;\n margin-bottom: 16px;\n }\n paper-card.warning {\n background-color: var(--google-red-500);\n color: white;\n --paper-card-header-color: white;\n }\n paper-card.warning mwc-button {\n --mdc-theme-primary: white !important;\n }\n .warning {\n color: var(--google-red-500);\n --mdc-theme-primary: var(--google-red-500);\n }\n .light-color {\n color: var(--secondary-text-color);\n }\n .addon-header {\n font-size: 24px;\n color: var(--paper-card-header-color, --primary-text-color);\n }\n .addon-version {\n float: right;\n font-size: 15px;\n vertical-align: middle;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n .description {\n margin-bottom: 16px;\n }\n .logo img {\n max-height: 60px;\n margin: 16px 0;\n display: block;\n }\n .state {\n display: flex;\n margin: 33px 0;\n }\n .state div {\n width: 180px;\n display: inline-block;\n }\n .state iron-icon {\n width: 16px;\n height: 16px;\n color: var(--secondary-text-color);\n }\n ha-switch {\n display: flex;\n }\n iron-icon.running {\n color: var(--paper-green-400);\n }\n iron-icon.stopped {\n color: var(--google-red-300);\n }\n ha-call-api-button {\n font-weight: 500;\n color: var(--primary-color);\n }\n .right {\n float: right;\n }\n ha-markdown img {\n max-width: 100%;\n }\n protection-enable mwc-button {\n --mdc-theme-primary: white;\n }\n .description a,\n ha-markdown a {\n color: var(--primary-color);\n }\n .red {\n --ha-label-badge-color: var(--label-badge-red, #df4c1e);\n }\n .blue {\n --ha-label-badge-color: var(--label-badge-blue, #039be5);\n }\n .green {\n --ha-label-badge-color: var(--label-badge-green, #0da035);\n }\n .yellow {\n --ha-label-badge-color: var(--label-badge-yellow, #f4b400);\n }\n .security {\n margin-bottom: 16px;\n }\n .card-actions {\n display: flow-root;\n }\n .security h3 {\n margin-bottom: 8px;\n font-weight: normal;\n }\n .security ha-label-badge {\n cursor: pointer;\n margin-right: 4px;\n --iron-icon-height: 45px;\n }\n `,\n ];\n }\n\n private get _computeHassioApi(): boolean {\n return (\n this.addon.hassio_api &&\n (this.addon.hassio_role === \"manager\" ||\n this.addon.hassio_role === \"admin\")\n );\n }\n\n private get _computeApparmorClassName(): string {\n if (this.addon.apparmor === \"profile\") {\n return \"green\";\n }\n if (this.addon.apparmor === \"disable\") {\n return \"red\";\n }\n return \"\";\n }\n\n private _showMoreInfo(ev): void {\n const id = ev.target.getAttribute(\"id\");\n showHassioMarkdownDialog(this, {\n title: PERMIS_DESC[id].title,\n content: PERMIS_DESC[id].description,\n });\n }\n\n private get _computeIsRunning(): boolean {\n return this.addon?.state === \"started\";\n }\n\n private get _computeUpdateAvailable(): boolean | \"\" {\n return (\n this.addon &&\n !this.addon.detached &&\n this.addon.version &&\n this.addon.version !== this.addon.version_latest\n );\n }\n\n private get _pathWebui(): string | null {\n return (\n this.addon.webui &&\n this.addon.webui.replace(\"[HOST]\", document.location.hostname)\n );\n }\n\n private get _computeShowWebUI(): boolean | \"\" | null {\n return !this.addon.ingress && this.addon.webui && this._computeIsRunning;\n }\n\n private _openIngress(): void {\n navigate(this, `/hassio/ingress/${this.addon.slug}`);\n }\n\n private get _computeShowIngressUI(): boolean {\n return this.addon.ingress && this._computeIsRunning;\n }\n\n private get _computeCannotIngressSidebar(): boolean {\n return (\n !this.addon.ingress || !atLeastVersion(this.hass.config.version, 0, 92)\n );\n }\n\n private get _computeUsesProtectedOptions(): boolean {\n return (\n this.addon.docker_api || this.addon.full_access || this.addon.host_pid\n );\n }\n\n private async _startOnBootToggled(): Promise {\n this._error = undefined;\n const data: HassioAddonSetOptionParams = {\n boot: this.addon.boot === \"auto\" ? \"manual\" : \"auto\",\n };\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon option, ${err.body?.message || err}`;\n }\n }\n\n private async _autoUpdateToggled(): Promise {\n this._error = undefined;\n const data: HassioAddonSetOptionParams = {\n auto_update: !this.addon.auto_update,\n };\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon option, ${err.body?.message || err}`;\n }\n }\n\n private async _protectionToggled(): Promise {\n this._error = undefined;\n const data: HassioAddonSetSecurityParams = {\n protected: !this.addon.protected,\n };\n try {\n await setHassioAddonSecurity(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"security\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon security option, ${err.body?.message ||\n err}`;\n }\n }\n\n private async _panelToggled(): Promise {\n this._error = undefined;\n const data: HassioAddonSetOptionParams = {\n ingress_panel: !this.addon.ingress_panel,\n };\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon option, ${err.body?.message || err}`;\n }\n }\n\n private async _openChangelog(): Promise {\n this._error = undefined;\n try {\n const content = await fetchHassioAddonChangelog(\n this.hass,\n this.addon.slug\n );\n showHassioMarkdownDialog(this, {\n title: \"Changelog\",\n content,\n });\n } catch (err) {\n this._error = `Failed to get addon changelog, ${err.body?.message ||\n err}`;\n }\n }\n\n private async _installClicked(): Promise {\n this._error = undefined;\n this._installing = true;\n try {\n await installHassioAddon(this.hass, this.addon.slug);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"install\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to install addon, ${err.body?.message || err}`;\n }\n this._installing = false;\n }\n\n private async _uninstallClicked(): Promise {\n if (!confirm(\"Are you sure you want to uninstall this add-on?\")) {\n return;\n }\n this._error = undefined;\n try {\n await uninstallHassioAddon(this.hass, this.addon.slug);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"uninstall\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to uninstall addon, ${err.body?.message || err}`;\n }\n }\n}\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addon-info\": HassioAddonInfo;\n }\n}\n","import \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n query,\n} from \"lit-element\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport {\n HassioAddonDetails,\n fetchHassioAddonLogs,\n} from \"../../../src/data/hassio/addon\";\nimport { ANSI_HTML_STYLE, parseTextToColoredPre } from \"../ansi-to-html\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\n\n@customElement(\"hassio-addon-logs\")\nclass HassioAddonLogs extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public addon!: HassioAddonDetails;\n @property() private _error?: string;\n @query(\"#content\") private _logContent!: any;\n\n public async connectedCallback(): Promise {\n super.connectedCallback();\n await this._loadData();\n }\n\n protected render(): TemplateResult {\n return html`\n \n ${this._error\n ? html`\n
${this._error}
\n `\n : \"\"}\n
\n
\n Refresh\n
\n
\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n ANSI_HTML_STYLE,\n css`\n :host,\n paper-card {\n display: block;\n }\n pre {\n overflow-x: auto;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n `,\n ];\n }\n\n private async _loadData(): Promise {\n this._error = undefined;\n try {\n const content = await fetchHassioAddonLogs(this.hass, this.addon.slug);\n while (this._logContent.lastChild) {\n this._logContent.removeChild(this._logContent.lastChild as Node);\n }\n this._logContent.appendChild(parseTextToColoredPre(content));\n } catch (err) {\n this._error = `Failed to get addon logs, ${err.body?.message || err}`;\n }\n }\n\n private async _refresh(): Promise {\n await this._loadData();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addon-logs\": HassioAddonLogs;\n }\n}\n","import \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n PropertyValues,\n TemplateResult,\n} from \"lit-element\";\n\nimport { PaperInputElement } from \"@polymer/paper-input/paper-input\";\n\nimport { HomeAssistant } from \"../../../src/types\";\nimport {\n HassioAddonDetails,\n HassioAddonSetOptionParams,\n setHassioAddonOption,\n} from \"../../../src/data/hassio/addon\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport { fireEvent } from \"../../../src/common/dom/fire_event\";\n\ninterface NetworkItem {\n description: string;\n container: string;\n host: number | null;\n}\n\ninterface NetworkItemInput extends PaperInputElement {\n container: string;\n}\n\n@customElement(\"hassio-addon-network\")\nclass HassioAddonNetwork extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public addon!: HassioAddonDetails;\n @property() private _error?: string;\n @property() private _config?: NetworkItem[];\n\n public connectedCallback(): void {\n super.connectedCallback();\n this._setNetworkConfig();\n }\n\n protected render(): TemplateResult {\n if (!this._config) {\n return html``;\n }\n\n return html`\n \n
\n ${this._error\n ? html`\n
${this._error}
\n `\n : \"\"}\n\n \n \n \n \n \n \n \n ${this._config!.map((item) => {\n return html`\n \n \n \n \n \n `;\n })}\n \n
ContainerHostDescription
${item.container}\n \n ${item.description}
\n
\n
\n \n Reset to defaults\n \n Save\n
\n
\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n :host {\n display: block;\n }\n paper-card {\n display: block;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n .card-actions {\n display: flex;\n justify-content: space-between;\n }\n `,\n ];\n }\n\n protected update(changedProperties: PropertyValues): void {\n super.update(changedProperties);\n if (changedProperties.has(\"addon\")) {\n this._setNetworkConfig();\n }\n }\n\n private _setNetworkConfig(): void {\n const network = this.addon.network || {};\n const description = this.addon.network_description || {};\n const items: NetworkItem[] = Object.keys(network).map((key) => {\n return {\n container: key,\n host: network[key],\n description: description[key],\n };\n });\n this._config = items.sort((a, b) => (a.container > b.container ? 1 : -1));\n }\n\n private async _configChanged(ev: Event): Promise {\n const target = ev.target as NetworkItemInput;\n this._config!.forEach((item) => {\n if (\n item.container === target.container &&\n item.host !== parseInt(String(target.value), 10)\n ) {\n item.host = target.value ? parseInt(String(target.value), 10) : null;\n }\n });\n }\n\n private async _resetTapped(): Promise {\n const data: HassioAddonSetOptionParams = {\n network: null,\n };\n\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon network configuration, ${err.body\n ?.message || err}`;\n }\n }\n\n private async _saveTapped(): Promise {\n this._error = undefined;\n const networkconfiguration = {};\n this._config!.forEach((item) => {\n networkconfiguration[item.container] = parseInt(String(item.host), 10);\n });\n\n const data: HassioAddonSetOptionParams = {\n network: networkconfiguration,\n };\n\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon network configuration, ${err.body\n ?.message || err}`;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addon-network\": HassioAddonNetwork;\n }\n}\n","import \"@polymer/app-layout/app-header-layout/app-header-layout\";\nimport \"@polymer/app-layout/app-header/app-header\";\nimport \"@polymer/app-layout/app-toolbar/app-toolbar\";\nimport \"@polymer/paper-icon-button/paper-icon-button\";\nimport \"@polymer/paper-spinner/paper-spinner-lite\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\n\nimport { HomeAssistant, Route } from \"../../../src/types\";\nimport {\n HassioAddonDetails,\n fetchHassioAddonInfo,\n} from \"../../../src/data/hassio/addon\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\n\nimport \"./hassio-addon-audio\";\nimport \"./hassio-addon-config\";\nimport \"./hassio-addon-info\";\nimport \"./hassio-addon-logs\";\nimport \"./hassio-addon-network\";\n\n@customElement(\"hassio-addon-view\")\nclass HassioAddonView extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public route!: Route;\n @property() public addon?: HassioAddonDetails;\n\n protected render(): TemplateResult {\n if (!this.addon) {\n return html`\n \n `;\n }\n return html`\n \n
\n \n\n ${this.addon && this.addon.version\n ? html`\n \n\n ${this.addon.audio\n ? html`\n \n `\n : \"\"}\n ${this.addon.network\n ? html`\n \n `\n : \"\"}\n\n \n `\n : \"\"}\n
\n
\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n :host {\n color: var(--primary-text-color);\n --paper-card-header-color: var(--primary-text-color);\n }\n .content {\n padding: 24px 0 32px;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n hassio-addon-info,\n hassio-addon-network,\n hassio-addon-audio,\n hassio-addon-config {\n margin-bottom: 24px;\n width: 600px;\n }\n hassio-addon-logs {\n max-width: calc(100% - 8px);\n min-width: 600px;\n }\n @media only screen and (max-width: 600px) {\n hassio-addon-info,\n hassio-addon-network,\n hassio-addon-audio,\n hassio-addon-config,\n hassio-addon-logs {\n max-width: 100%;\n min-width: 100%;\n }\n }\n `,\n ];\n }\n\n protected async firstUpdated(): Promise {\n await this._routeDataChanged(this.route);\n this.addEventListener(\"hass-api-called\", (ev) => this._apiCalled(ev));\n }\n\n private async _apiCalled(ev): Promise {\n const path: string = ev.detail.path;\n\n if (!path) {\n return;\n }\n\n if (path === \"uninstall\") {\n history.back();\n } else {\n await this._routeDataChanged(this.route);\n }\n }\n\n private async _routeDataChanged(routeData: Route): Promise {\n const addon = routeData.path.substr(1);\n try {\n const addoninfo = await fetchHassioAddonInfo(this.hass, addon);\n this.addon = addoninfo;\n } catch {\n this.addon = undefined;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addon-view\": HassioAddonView;\n }\n}\n","import { UpdatingElement, property, customElement } from \"lit-element\";\n// eslint-disable-next-line import/no-webpack-loader-syntax\n// @ts-ignore\n// tslint:disable-next-line: no-implicit-dependencies\nimport markdownWorker from \"workerize-loader!../resources/markdown_worker\";\nimport { fireEvent } from \"../common/dom/fire_event\";\n\nlet worker: any | undefined;\n\n@customElement(\"ha-markdown\")\nclass HaMarkdown extends UpdatingElement {\n @property() public content = \"\";\n @property({ type: Boolean }) public allowSvg = false;\n\n protected update(changedProps) {\n super.update(changedProps);\n\n if (!worker) {\n worker = markdownWorker();\n }\n\n this._render();\n }\n\n private async _render() {\n this.innerHTML = await worker.renderMarkdown(\n this.content,\n {\n breaks: true,\n gfm: true,\n tables: true,\n },\n {\n allowSvg: this.allowSvg,\n }\n );\n\n this._resize();\n\n const walker = document.createTreeWalker(\n this,\n 1 /* SHOW_ELEMENT */,\n null,\n false\n );\n\n while (walker.nextNode()) {\n const node = walker.currentNode;\n\n // Open external links in a new window\n if (\n node instanceof HTMLAnchorElement &&\n node.host !== document.location.host\n ) {\n node.target = \"_blank\";\n node.rel = \"noreferrer\";\n\n // protect referrer on external links and deny window.opener access for security reasons\n // (see https://mathiasbynens.github.io/rel-noopener/)\n node.rel = \"noreferrer noopener\";\n\n // Fire a resize event when images loaded to notify content resized\n } else if (node) {\n node.addEventListener(\"load\", this._resize);\n }\n }\n }\n\n private _resize = () => fireEvent(this, \"iron-resize\");\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-markdown\": HaMarkdown;\n }\n}\n","\n\t\t\t\tvar addMethods = require(\"../../node_modules/workerize-loader/dist/rpc-wrapper.js\")\n\t\t\t\tvar methods = [\"renderMarkdown\"]\n\t\t\t\tmodule.exports = function() {\n\t\t\t\t\tvar w = new Worker(__webpack_public_path__ + \"a1ebfa0a88593a3b571c.worker.js\", { name: \"[hash].worker.js\" })\n\t\t\t\t\taddMethods(w, methods)\n\t\t\t\t\t\n\t\t\t\t\treturn w\n\t\t\t\t}\n\t\t\t","import {\n customElement,\n CSSResult,\n css,\n query,\n html,\n property,\n} from \"lit-element\";\nimport \"@material/mwc-switch\";\nimport { style } from \"@material/mwc-switch/mwc-switch-css\";\n// tslint:disable-next-line\nimport { Switch } from \"@material/mwc-switch\";\nimport { Constructor } from \"../types\";\nimport { forwardHaptic } from \"../data/haptics\";\nimport { ripple } from \"@material/mwc-ripple/ripple-directive\";\n// tslint:disable-next-line\nconst MwcSwitch = customElements.get(\"mwc-switch\") as Constructor;\n\n@customElement(\"ha-switch\")\nexport class HaSwitch extends MwcSwitch {\n // Generate a haptic vibration.\n // Only set to true if the new value of the switch is applied right away when toggling.\n // Do not add haptic when a user is required to press save.\n @property({ type: Boolean }) public haptic = false;\n @query(\"slot\") private _slot!: HTMLSlotElement;\n\n protected firstUpdated() {\n super.firstUpdated();\n this.style.setProperty(\n \"--mdc-theme-secondary\",\n \"var(--switch-checked-color)\"\n );\n this.classList.toggle(\n \"slotted\",\n Boolean(this._slot.assignedNodes().length)\n );\n this.addEventListener(\"change\", () => {\n if (this.haptic) {\n forwardHaptic(\"light\");\n }\n });\n }\n\n protected render() {\n return html`\n
\n
\n \n
\n \n
\n
\n
\n \n `;\n }\n\n protected static get styles(): CSSResult[] {\n return [\n style,\n css`\n :host {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n .mdc-switch.mdc-switch--checked .mdc-switch__thumb {\n background-color: var(--switch-checked-button-color);\n border-color: var(--switch-checked-button-color);\n }\n .mdc-switch.mdc-switch--checked .mdc-switch__track {\n background-color: var(--switch-checked-track-color);\n border-color: var(--switch-checked-track-color);\n }\n .mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb {\n background-color: var(--switch-unchecked-button-color);\n border-color: var(--switch-unchecked-button-color);\n }\n .mdc-switch:not(.mdc-switch--checked) .mdc-switch__track {\n background-color: var(--switch-unchecked-track-color);\n border-color: var(--switch-unchecked-track-color);\n }\n :host(.slotted) .mdc-switch {\n margin-right: 24px;\n }\n `,\n ];\n }\n\n private _haChangeHandler(e: Event) {\n this.mdcFoundation.handleChange(e);\n // catch \"click\" event and sync properties\n this.checked = this.formElement.checked;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-switch\": HaSwitch;\n }\n}\n","/**\n * Broadcast haptic feedback requests\n */\n\nimport { fireEvent, HASSDomEvent } from \"../common/dom/fire_event\";\n\n// Allowed types are from iOS HIG.\n// https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/feedback/#haptics\n// Implementors on platforms other than iOS should attempt to match the patterns (shown in HIG) as closely as possible.\nexport type HapticType =\n | \"success\"\n | \"warning\"\n | \"failure\"\n | \"light\"\n | \"medium\"\n | \"heavy\"\n | \"selection\";\n\ndeclare global {\n // for fire event\n interface HASSDomEvents {\n haptic: HapticType;\n }\n\n interface GlobalEventHandlersEventMap {\n haptic: HASSDomEvent;\n }\n}\n\nexport const forwardHaptic = (hapticType: HapticType) => {\n fireEvent(window, \"haptic\", hapticType);\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/supervisor/api/panel/entrypoint.js b/supervisor/api/panel/entrypoint.js index 5e57b1d14..d3c630c08 100644 --- a/supervisor/api/panel/entrypoint.js +++ b/supervisor/api/panel/entrypoint.js @@ -1,2 +1,2 @@ -!function(e){function n(n){for(var t,o,a=n[0],i=n[1],f=0,u=[];f)`P3)j>au!#r*OhCG4uM|gbD%?wH)F$FX#>X$lS1$Lfi<|r2c`sPz1Sai z>L)U4LEpIJPA!+z2)S1W_P6qTs9bcm#u@i;hUh4}zuoD-TXP2M9->ONZD^UHi-p~r z!(!1#=e|3J{(@R4^9R9q-T)UgI%w!OiENldks<8eK{U9~Q9`v?ROrsGpDm?*)Eyh; zLK@OxbWmIdX2oS)@L~591LI@RsL<{8fm(3A)qy`paDO(|bvw^$g$IdCQ)t!}S224; z7MEezJu-o3ntYylnPtysL-EpzEB*`{Oa$U(X1p$q5ob==Jsfsu7rzq1Q9L-Rr}(*j zf<8mr!ALKKhPwbmbZR;XpQLG2c$vhAJzfq2-MtVXBpp3#m=d+A`V(juRTiX!-?ZRw zA?YgHoE^dVM%7W;4xAvpQ`cL=Nw_=R(}DSHPY(MDH5MkHm3 zwACwLAH!y%^O97@UjGo0<%JhyBg=K3X1vbJ64zR8a+DGmWF7M?NwaO5r@2yfsmeSd zEGY<7ki>kItazM3nXdUJEeT5tBJ*rhOP-gptRPNTNxDr5%L-CwJdri8VGVMH6e?F0 zVXK1hRn4n3Ua9R$C92w1X(kEV6r@bIrBYeVH=C?Zcv4rgCTxp3)MhQSy3C=BA=$1I zDbd`#Agio|d<|)um)mNaY}T3N=m$q7*-E8ZyeT(Z)U#D6H$x1%m~P{oZ`8J2%OtL# z;xSipRk5R;(=c?RfNn#O5dWp#={ z%@MQmF|P7jtv4XktX`*To9A0HV5uxg^nFK$5T@#=#@hOgwZ`t6IeXL8h>Qjg7yi^5 zSqt5_Evs6P_TN)&g#9GtO)*dHHWj-O8e5roejk?;DS5iI4d(Kn=+0F+5jhZkvY zz&)RQQSGYe1YIX@K#)J99OMhedJ4!AmLyQJX`znZ>yRwXk`xG*OF{{&A}vqI^ea#7 zIY&PcKI#+(4;KF0L+6BK4hLdb(P8YTThr75ABNGpUUcAQkDo$>PKFmRryy>^5jNRe zsDTccQ^@G<6H#o~Q#&3(){#7)LD#=JHfndnB9LuJ~lGd+Gi( z-Q$I?GY|$HplrL)^QZ@3mYK&AGpZtD_6ZgX{}(-LdS;r+dNghxo1w3N>cwHeLiah- z9U};lee1~Eh)-SsdYz00bz@wfgA82A6T%_L&Fwy7YbyE!3B@V8${I`m&j^Biq<2J4~|oDSjsZFkmX1@yK5y+P5V#;|1_m>h6SC} z-E{}HQ9Dm_eKP;MHr@U8NZg%_aYt;5BDk^gp~L!si461iL*qW8lG-)0ZDa@aZdQr3 z&CSsjLB{zAJmFk!bP-Iqv#e|6ov+77;+XT>BSMDvntWkITRLFQfAsF%kAu$iwt~MP g7RCMNpMMs}U?0w=(GDNk=p@ho2djGzLY4~v0KF^l>;M1& literal 1531 zcmVM1v1HTBv5T3gK+}OQf`q zx_zTuNJBb|0L5uwR-BdvA2v@pFg^#33f)%ks0G(s9r%3&4@YBNxACf0c#=3Zg=TGW z6|*z5I1R(*tOO`=#(dFbmObwc#X~Eu_%m%V5r~&J<9%t&ICH{oVYk7!_>~Zj`T(h( z^5?b*VurSZQC$wkdj}!WMpr;a zCS}O9)hn#$w3+BQC)K{!A0je8@q(;mxy;jy*LhjuvzDtIt;7Xc#ym^XY@Oz5u2fyB zGEWFg3IY`*F<&GL9%oRdOTJ1=!qS4sJX_V0=VdG_h|@)qu2aIYg47vLWX)?>f?S}4 z%2h?!q9A-x^D2!OYQ0d2s@7GSNy1j>e5sO^T4xKM@^qE*OvNk0*62g6mNKi$9LgAy z^)itX!_5n_$V$kUkfwRLuGYzFnMsZ~JVJ~o%~yz!Bf@pENMnx>A*Sm%=jf(f$|SC! z;xSjqL5yWmSFq$fOOpy6F4B5kAtyy^TxRJ4VvfRjlE(^jfgD7+$TL7>X&R?-mDMRG zHAl|E=eWviwOoNrvwE4Tb)K)ufTc1g(ff`JAxza#jkWa~YmMDB&$s8NMr1U2y70T! z$Xe*WZCTZVwEv!JBkU(DZ;E+px2f2T(Adhv>k}b_j(peuj9@8ujlLztM4(K1IXp;v z3+{R6i)vFv2k1I^3xfO^?Vw&T)>A;{FeibMO$&AOPKRV}=A=NfoD)h|6=``urC)hr zuQ}rMbnjCb+*tT;51kW|IUI;#MTfDU?o3k$d>BS_z39MQ5I>~|L53%9ryy?P5jMqK zsDTc6r;yRjXR_F^r*_ zrk%~EHFD-(&f-PxYW za*Joa&OjIhK-qexFQXoOS!SL~%;<`U3nrM&{9p9!=~-zi>nXVN*bIIBQ*RCv7P>Em z?ifLe>|00PW_&^ch&mYq>c+f0CmHDFU5#^F;}LHf?OFD+F<-omhNx_GJ;uc>rJFO$ z`5fubym#K9{n?Ymv(@Mv`%rv_Ib1yWxHKb@VD_2z?#!DjISYQ*``#;f8%IHIC#+8eTzhdu#54%IMCt5RJ`+WCl~SO3^{9qI)Qhvik7H&gkQ(l#d^`{u@Y+ zZ_6o%l5VD>&`ctyYnuu}y187468!B~k`Db>(q)b|8-sPx2~LM_`?fpp(S^B>T0evS zwfIFXj}B}|Bew_ra-_Hj!ZfFKfCxYrWJ-zoHQ@&MW_{ zYC`ESL9<`}d~lB~5G=c>(HiXU|NWOg3-V5vrhW`g?{p9-qusTVho*fjf`6LQIKzTY z>h8J&+o+9~xjvZxU7POVdKB&s#<)E;MG@Ru`PgB7z$AwE_n~p0NJ;G)**3C+dUJ7! zvd!(@6+y=NNIc+NZgde$r=zTE)V&<{XW^LhyFF5dcba@ {\n // eslint-disable-next-line\n import(/* webpackChunkName: \"roboto\" */ \"../../src/resources/roboto\");\n // eslint-disable-next-line\n import(/* webpackChunkName: \"hassio-icons\" */ \"./resources/hassio-icons\");\n // eslint-disable-next-line\n import(/* webpackChunkName: \"hassio-main\" */ \"./hassio-main\");\n});\n\nconst styleEl = document.createElement(\"style\");\nstyleEl.innerHTML = `\nbody {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-weight: 400;\n margin: 0;\n padding: 0;\n height: 100vh;\n}\n`;\ndocument.head.appendChild(styleEl);\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./hassio/src/entrypoint.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","6","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","0","1","2","3","4","5","7","8","9","10","11","12","13","14","15","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","self","oldJsonpFunction","slice","s","window","loadES5Adapter","then","styleEl","innerHTML"],"mappings":"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","file":"entrypoint.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t6: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"chunk.\" + {\"0\":\"7ab69340d9bb40dda79e\",\"1\":\"610423483939ffdbfb92\",\"2\":\"ece210525014eb36073b\",\"3\":\"a947da09b1ace1352383\",\"4\":\"d402ad0de6ea5da0f9fc\",\"5\":\"05d0c315f85f2fc8c34a\",\"7\":\"b38bff4d0774d202dcad\",\"8\":\"af76a4db9eb1e2862aae\",\"9\":\"54be96e339b8c82764a0\",\"10\":\"045f3417b78f858fff44\",\"11\":\"381907f8b6a21cec010f\",\"12\":\"b2dce600432c76a53d8c\",\"13\":\"70a435e100109291f210\",\"14\":\"594ef9f33131c4d33409\",\"15\":\"7ac9df67ea34d63f8998\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/api/hassio/app/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = self[\"webpackJsonp\"] = self[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","window.loadES5Adapter().then(() => {\n // eslint-disable-next-line\n import(/* webpackChunkName: \"roboto\" */ \"../../src/resources/roboto\");\n // eslint-disable-next-line\n import(/* webpackChunkName: \"hassio-icons\" */ \"./resources/hassio-icons\");\n // eslint-disable-next-line\n import(/* webpackChunkName: \"hassio-main\" */ \"./hassio-main\");\n});\n\nconst styleEl = document.createElement(\"style\");\nstyleEl.innerHTML = `\nbody {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-weight: 400;\n margin: 0;\n padding: 0;\n height: 100vh;\n}\n`;\ndocument.head.appendChild(styleEl);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/supervisor/api/panel/manifest.json b/supervisor/api/panel/manifest.json index e38d004bf..ccb7dc7d5 100644 --- a/supervisor/api/panel/manifest.json +++ b/supervisor/api/panel/manifest.json @@ -13,14 +13,14 @@ "dialog-hassio-snapshot.js.map": "/api/hassio/app/chunk.05d0c315f85f2fc8c34a.js.map", "entrypoint.js": "/api/hassio/app/entrypoint.js", "entrypoint.js.map": "/api/hassio/app/entrypoint.js.map", - "hassio-addon-view.js": "/api/hassio/app/chunk.66f27f84503037304f17.js", - "hassio-addon-view.js.map": "/api/hassio/app/chunk.66f27f84503037304f17.js.map", + "hassio-addon-view.js": "/api/hassio/app/chunk.b38bff4d0774d202dcad.js", + "hassio-addon-view.js.map": "/api/hassio/app/chunk.b38bff4d0774d202dcad.js.map", "hassio-icons.js": "/api/hassio/app/chunk.af76a4db9eb1e2862aae.js", "hassio-icons.js.map": "/api/hassio/app/chunk.af76a4db9eb1e2862aae.js.map", "hassio-ingress-view.js": "/api/hassio/app/chunk.54be96e339b8c82764a0.js", "hassio-ingress-view.js.map": "/api/hassio/app/chunk.54be96e339b8c82764a0.js.map", - "hassio-main.js": "/api/hassio/app/chunk.7b1a3970d90b4082531e.js", - "hassio-main.js.map": "/api/hassio/app/chunk.7b1a3970d90b4082531e.js.map", + "hassio-main.js": "/api/hassio/app/chunk.045f3417b78f858fff44.js", + "hassio-main.js.map": "/api/hassio/app/chunk.045f3417b78f858fff44.js.map", "mdi-icons.js": "/api/hassio/app/chunk.381907f8b6a21cec010f.js", "mdi-icons.js.map": "/api/hassio/app/chunk.381907f8b6a21cec010f.js.map", "roboto.js": "/api/hassio/app/chunk.b2dce600432c76a53d8c.js",