From 3a834d1a73773f5381dc761e762b4ea65a31d164 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 5 Feb 2020 10:08:39 +0100 Subject: [PATCH] Update frontend (#1477) --- ...de253.js => chunk.4d45ee0a3d852768f97e.js} | 4 ++-- .../panel/chunk.4d45ee0a3d852768f97e.js.gz | Bin 0 -> 31050 bytes ....map => chunk.4d45ee0a3d852768f97e.js.map} | 2 +- .../panel/chunk.c1c599e0ec49ba4de253.js.gz | Bin 31047 -> 0 bytes hassio/api/panel/entrypoint.js | 2 +- hassio/api/panel/entrypoint.js.gz | Bin 1535 -> 1533 bytes hassio/api/panel/entrypoint.js.map | 2 +- hassio/api/panel/manifest.json | 4 ++-- home-assistant-polymer | 2 +- 9 files changed, 8 insertions(+), 8 deletions(-) rename hassio/api/panel/{chunk.c1c599e0ec49ba4de253.js => chunk.4d45ee0a3d852768f97e.js} (79%) create mode 100644 hassio/api/panel/chunk.4d45ee0a3d852768f97e.js.gz rename hassio/api/panel/{chunk.c1c599e0ec49ba4de253.js.map => chunk.4d45ee0a3d852768f97e.js.map} (82%) delete mode 100644 hassio/api/panel/chunk.c1c599e0ec49ba4de253.js.gz diff --git a/hassio/api/panel/chunk.c1c599e0ec49ba4de253.js b/hassio/api/panel/chunk.4d45ee0a3d852768f97e.js similarity index 79% rename from hassio/api/panel/chunk.c1c599e0ec49ba4de253.js rename to hassio/api/panel/chunk.4d45ee0a3d852768f97e.js index 018cc459e..facb59530 100644 --- a/hassio/api/panel/chunk.c1c599e0ec49ba4de253.js +++ b/hassio/api/panel/chunk.4d45ee0a3d852768f97e.js @@ -1,2 +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 .paper-dialog-buttons .warning {\n --mdc-theme-primary: var(--google-red-500);\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"]);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 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"]);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)","switch-checked-color":"var(--primary-color)","switch-checked-button-color":"var(--switch-checked-color, var(--paper-grey-50))","switch-checked-track-color":"var(--switch-checked-color, #000000)","switch-unchecked-button-color":"var(--switch-unchecked-color, var(--paper-grey-50))","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)","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(--paper-card-background-color, 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)"},c=Object(n.c)(o()),l=Object(n.c)(i())},101:function(e,t){},104:function(e,t,r){"use strict";var n=r(5),i=(r(91),r(105),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=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e._themes||(e._themes={});var o=t.default_theme;("default"===r||r&&t.themes[r])&&(o=r);var a=Object.assign({},e._themes);if("default"!==o){var s=Object.assign({},i.a,{},t.themes[o]);Object.keys(s).forEach(function(t){var r="--".concat(t);if(e._themes[r]="",a[r]=s[t],!t.startsWith("rgb")){var n="rgb-".concat(t);if(void 0===s[n]){var i="--".concat(n);e._themes[i]="";var o,c,l,u=(o=s[t],c=o.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(e,t,r,n){return t+t+r+r+n+n}),(l=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(c))?"".concat(parseInt(l[1],16),", ").concat(parseInt(l[2],16),", ").concat(parseInt(l[3],16)):null);null!==u&&(a[i]=u)}}})}if(e.updateStyles?e.updateStyles(a):window.ShadyCSS&&window.ShadyCSS.styleSubtree(e,a),n){var c=document.querySelector("meta[name=theme-color]");if(c){c.hasAttribute("default-content")||c.setAttribute("default-content",c.getAttribute("content"));var l=a["--primary-color"]||c.getAttribute("default-content");c.setAttribute("content",l)}}},c=r(11);r(18),r(104);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(){var e=f(["\n .content {\n height: calc(100% - 64px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n }\n "]);return u=function(){return e},e}function d(){var e=f(['\n \n
\n

',"

\n \n go back\n \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){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e){var t,r=k(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 v(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function b(e){return e.decorators&&e.decorators.length}function g(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function w(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 k(e){var t=function(e,t){if("object"!==l(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==l(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===l(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(!b(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 te=function(){return e},e}function re(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function ne(e,t){return he(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)||pe()}function ie(e){return(ie=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function oe(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ae(e,t){return(ae=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function se(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 ce(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function le(e){return e.decorators&&e.decorators.length}function ue(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function de(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"!==Q(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Q(t)?t:String(t)}function pe(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function he(e){if(Array.isArray(e))return 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(!le(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||"0"===r&&Number(i)>=105;return Object(n.e)(te(),this.addons?this.addons.sort(function(e,t){return e.name>t.name?1:-1}).map(function(t){return Object(n.e)(Z(),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",o&&t.icon?"/api/hassio/addons/".concat(t.slug,"/icon"):void 0)}):Object(n.e)(ee(),this._openStore))}},{kind:"get",static:!0,key:"styles",value:function(){return[i.b,K.a,Object(n.c)(X())]}},{kind:"method",key:"_addonTapped",value:function(e){Object(E.a)(this,"/hassio/addon/".concat(e.currentTarget.addon.slug))}},{kind:"method",key:"_openStore",value:function(){Object(E.a)(this,"/hassio/store")}}]}},n.a),r(22),r(50);function me(){var e=Oe(["\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 me=function(){return e},e}function ye(e){return(ye="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 ve(){var e=Oe(['\n
\n \n
\n ']);return ve=function(){return e},e}function be(){var e=Oe(['\n \n
\n ','\n
'," ",'
\n
\n You are currently running version ','\n
\n
\n
\n "]);return we=function(){return e},e}function ke(){var e=Oe(['\n
\n ',"\n

\n ",'\n

\n
\n ',"\n ","\n ","\n
\n
\n "]);return ke=function(){return e},e}function Ee(){var e=Oe([""]);return Ee=function(){return e},e}function Oe(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function je(e){return(je=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Pe(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function xe(e,t){return(xe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _e(e){var t,r=Ae(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 Se(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Ce(e){return e.decorators&&e.decorators.length}function De(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Te(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 Ae(e){var t=function(e,t){if("object"!==ye(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==ye(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===ye(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(!Ce(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.last_version,"hassio/homeassistant/update","https://".concat(this.hassInfo.last_version.includes("b")?"rc":"www",".home-assistant.io/latest-release-notes/"),"hassio:home-assistant"),this._renderUpdateCard("Supervisor",this.supervisorInfo.version,this.supervisorInfo.last_version,"hassio/supervisor/update","https://github.com//home-assistant/hassio/releases/tag/".concat(this.supervisorInfo.last_version)),this.hassOsInfo?this._renderUpdateCard("Operating System",this.hassOsInfo.version,this.hassOsInfo.version_latest,"hassio/hassos/update","https://github.com//home-assistant/hassos/releases/tag/".concat(this.hassOsInfo.version_latest)):""):Object(n.e)(Ee())}},{kind:"method",key:"_renderUpdateCard",value:function(e,t,r,i,o,a){return r===t?Object(n.e)(ge()):Object(n.e)(be(),a?Object(n.e)(ve(),a):"",e,r,t,o,this.hass,i,this._apiCalled)}},{kind:"method",key:"_apiCalled",value:function(e){if(e.detail.success)this._error="";else{var t=e.detail.response;"object"===ye(t.body)?this._error=t.body.message||"Unknown error":this._error=t.body}}},{kind:"get",static:!0,key:"styles",value:function(){return[i.b,K.a,Object(n.c)(me())]}}]}},n.a);function ze(e){return(ze="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 Re(){var e=Fe(["\n .content {\n margin: 0 auto;\n }\n "]);return Re=function(){return e},e}function Ie(){var e=Fe(['\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 $e=function(){return e},e}function Ke(){var e=nt(['\n \n
\n You don\'t have any snapshots yet.\n
\n
\n ']);return Ke=function(){return e},e}function Qe(){var e=nt(['\n

',"

\n "]);return Qe=function(){return e},e}function Xe(){var e=nt(['\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 rt=function(){return e},e}function nt(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function it(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ot(e,t){return(ot=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function at(e){var t,r=dt(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 st(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function ct(e){return e.decorators&&e.decorators.length}function lt(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function ut(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 dt(e){var t=function(e,t){if("object"!==Je(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Je(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Je(t)?t:String(t)}function ft(e,t,r){return(ft="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=pt(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 pt(e){return(pt=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(!ct(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 "]);return gt=function(){return e},e}function wt(){var e=kt(['\n
\n

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

\n
\n ']);return wt=function(){return e},e}function kt(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Et(e){return(Et=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ot(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function jt(e,t){return(jt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Pt(e){var t,r=Dt(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 xt(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function _t(e){return e.decorators&&e.decorators.length}function St(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Ct(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 Dt(e){var t=function(e,t){if("object"!==mt(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==mt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===mt(t)?t:String(t)}function Tt(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function At(e){if(Array.isArray(e))return e}var zt=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(!_t(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||"0"===t&&Number(r)>=105}},{kind:"get",static:!0,key:"styles",value:function(){return[K.a,Object(n.c)(yt())]}}]}},n.a);customElements.define("hassio-addon-repository",zt);var Rt=r(135);function It(e){return(It="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 Ft(){var e=Ht(["\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 "]);return Ft=function(){return e},e}function Lt(){var e=Ht(['\n \n
\n \n
\n
\n \n Remove\n \n
\n
\n ']);return Lt=function(){return e},e}function Nt(){var e=Ht(['\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 Zt=function(){return e},e}function er(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function tr(e){return(tr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function rr(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 ir(e){var t,r=lr(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 or(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function ar(e){return e.decorators&&e.decorators.length}function sr(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function cr(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 lr(e){var t=function(e,t){if("object"!==Qt(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Qt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Qt(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(!ar(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 fr=function(){return e},e}function pr(){var e=hr(['\n
\n \n \n ',"\n \n
\n "]);return pr=function(){return e},e}function hr(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function mr(e){return(mr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function yr(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function vr(e,t){return(vr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function br(e){var t,r=Or(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 gr(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function wr(e){return e.decorators&&e.decorators.length}function kr(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Er(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 Or(e){var t=function(e,t){if("object"!==ur(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==ur(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===ur(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(!wr(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 xr=function(){return e},e}function _r(){var e=Cr(["\n \n\n \n\n ","\n "]);return _r=function(){return e},e}function Sr(){var e=Cr(["\n \n "]);return Sr=function(){return e},e}function Cr(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Dr(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Tr(e,t){return(Tr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Ar(e){var t,r=Lr(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 zr(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Rr(e){return e.decorators&&e.decorators.length}function Ir(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Fr(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 Lr(e){var t=function(e,t){if("object"!==jr(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==jr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===jr(t)?t:String(t)}function Nr(e,t,r){return(Nr="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=Hr(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 Hr(e){return(Hr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var Ur=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 Wr=function(){return e},e}function Jr(){var e=en(['\n Import from USB\n ']);return Jr=function(){return e},e}function Yr(){var e=en(['\n Shutdown\n ']);return Yr=function(){return e},e}function $r(){var e=en(['\n Reboot\n ']);return $r=function(){return e},e}function Kr(){var e=en(['\n
Error: ',"
\n "]);return Kr=function(){return e},e}function Qr(){var e=en(["\n \n Change hostname\n \n ']);return Qr=function(){return e},e}function Xr(){var e=en(["\n \n Deployment\n ","\n \n "]);return Xr=function(){return e},e}function Zr(){var e=en(['\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 Zr=function(){return e},e}function en(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function tn(e){return(tn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function rn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function nn(e,t){return(nn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function on(e){var t,r=un(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 an(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function sn(e){return e.decorators&&e.decorators.length}function cn(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function ln(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 un(e){var t=function(e,t){if("object"!==Vr(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Vr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Vr(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(!sn(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"!==Vr(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 dn(e){return(dn="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 fn(){var e=gn(["\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 fn=function(){return e},e}function pn(){var e=gn(["\n Join beta channel\n ']);return pn=function(){return e},e}function hn(){var e=gn(["\n Update\n ']);return mn=function(){return e},e}function yn(){var e=gn(['\n
Error: ',"
\n "]);return yn=function(){return e},e}function vn(){var e=gn(["\n \n Channel\n ","\n \n "]);return vn=function(){return e},e}function bn(){var e=gn(['\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 bn=function(){return e},e}function gn(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function wn(e){return(wn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function kn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function En(e,t){return(En=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function On(e){var t,r=Sn(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 jn(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Pn(e){return e.decorators&&e.decorators.length}function xn(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 Sn(e){var t=function(e,t){if("object"!==dn(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==dn(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===dn(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(!Pn(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 An=function(){return e},e}function zn(){var e=Rn(["\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)(mi())]}}]}},n.a),r(119));function Di(e){return(Di="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 Ti(e,t){return Bi(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)||Ui()}function Ai(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function zi(e,t){return(zi=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Ri(e){var t,r=Hi(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 Ii(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Fi(e){return e.decorators&&e.decorators.length}function Li(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Ni(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 Hi(e){var t=function(e,t){if("object"!==Di(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Di(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Di(t)?t:String(t)}function Ui(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function Bi(e){if(Array.isArray(e))return e}function Mi(e,t,r){return(Mi="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=Gi(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 Gi(e){return(Gi=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}customElements.get("paper-icon-button").prototype._keyBindings={};var Vi;!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(!Fi(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=H(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 H(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 a=function(){return e},e}function s(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 c(e){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function l(e,t){for(var r=0;r
\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.c1c599e0ec49ba4de253.js.map \ No newline at end of file +(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 .paper-dialog-buttons .warning {\n --mdc-theme-primary: var(--google-red-500);\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"]);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 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"]);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)","switch-checked-color":"var(--primary-color)","switch-checked-button-color":"var(--switch-checked-color, var(--paper-grey-50))","switch-checked-track-color":"var(--switch-checked-color, #000000)","switch-unchecked-button-color":"var(--switch-unchecked-color, var(--paper-grey-50))","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)","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(--paper-card-background-color, 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)"},c=Object(n.c)(o()),l=Object(n.c)(i())},101:function(e,t){},104:function(e,t,r){"use strict";var n=r(5),i=(r(91),r(105),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=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e._themes||(e._themes={});var o=t.default_theme;("default"===r||r&&t.themes[r])&&(o=r);var a=Object.assign({},e._themes);if("default"!==o){var s=Object.assign({},i.a,{},t.themes[o]);Object.keys(s).forEach(function(t){var r="--".concat(t);if(e._themes[r]="",a[r]=s[t],!t.startsWith("rgb")){var n="rgb-".concat(t);if(void 0===s[n]){var i="--".concat(n);e._themes[i]="";var o,c,l,u=(o=s[t],c=o.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(e,t,r,n){return t+t+r+r+n+n}),(l=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(c))?"".concat(parseInt(l[1],16),", ").concat(parseInt(l[2],16),", ").concat(parseInt(l[3],16)):null);null!==u&&(a[i]=u)}}})}if(e.updateStyles?e.updateStyles(a):window.ShadyCSS&&window.ShadyCSS.styleSubtree(e,a),n){var c=document.querySelector("meta[name=theme-color]");if(c){c.hasAttribute("default-content")||c.setAttribute("default-content",c.getAttribute("content"));var l=a["--primary-color"]||c.getAttribute("default-content");c.setAttribute("content",l)}}},c=r(11);r(18),r(104);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(){var e=f(["\n .content {\n height: calc(100% - 64px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n }\n "]);return u=function(){return e},e}function d(){var e=f(['\n \n
\n

',"

\n \n go back\n \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){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e){var t,r=k(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 v(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function b(e){return e.decorators&&e.decorators.length}function g(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function w(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 k(e){var t=function(e,t){if("object"!==l(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==l(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===l(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(!b(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 te=function(){return e},e}function re(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function ne(e,t){return he(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)||pe()}function ie(e){return(ie=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function oe(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ae(e,t){return(ae=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function se(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 ce(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function le(e){return e.decorators&&e.decorators.length}function ue(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function de(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"!==Q(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Q(t)?t:String(t)}function pe(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function he(e){if(Array.isArray(e))return 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(!le(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||"0"===r&&Number(i)>=105;return Object(n.e)(te(),this.addons?this.addons.sort(function(e,t){return e.name>t.name?1:-1}).map(function(t){return Object(n.e)(Z(),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",o&&t.icon?"/api/hassio/addons/".concat(t.slug,"/icon"):void 0)}):Object(n.e)(ee(),this._openStore))}},{kind:"get",static:!0,key:"styles",value:function(){return[i.b,K.a,Object(n.c)(X())]}},{kind:"method",key:"_addonTapped",value:function(e){Object(E.a)(this,"/hassio/addon/".concat(e.currentTarget.addon.slug))}},{kind:"method",key:"_openStore",value:function(){Object(E.a)(this,"/hassio/store")}}]}},n.a),r(22),r(50);function me(){var e=Oe(["\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 me=function(){return e},e}function ye(e){return(ye="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 ve(){var e=Oe(['\n
\n \n
\n ']);return ve=function(){return e},e}function be(){var e=Oe(['\n \n
\n ','\n
'," ",'
\n
\n You are currently running version ','\n
\n
\n
\n "]);return we=function(){return e},e}function ke(){var e=Oe(['\n
\n ',"\n

\n ",'\n

\n
\n ',"\n ","\n ","\n
\n
\n "]);return ke=function(){return e},e}function Ee(){var e=Oe([""]);return Ee=function(){return e},e}function Oe(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function je(e){return(je=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Pe(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function xe(e,t){return(xe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _e(e){var t,r=Ae(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 Se(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Ce(e){return e.decorators&&e.decorators.length}function De(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Te(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 Ae(e){var t=function(e,t){if("object"!==ye(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==ye(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===ye(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(!Ce(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.last_version,"hassio/homeassistant/update","https://".concat(this.hassInfo.last_version.includes("b")?"rc":"www",".home-assistant.io/latest-release-notes/"),"hassio:home-assistant"),this._renderUpdateCard("Supervisor",this.supervisorInfo.version,this.supervisorInfo.last_version,"hassio/supervisor/update","https://github.com//home-assistant/hassio/releases/tag/".concat(this.supervisorInfo.last_version)),this.hassOsInfo?this._renderUpdateCard("Operating System",this.hassOsInfo.version,this.hassOsInfo.version_latest,"hassio/hassos/update","https://github.com//home-assistant/hassos/releases/tag/".concat(this.hassOsInfo.version_latest)):""):Object(n.e)(Ee())}},{kind:"method",key:"_renderUpdateCard",value:function(e,t,r,i,o,a){return r===t?Object(n.e)(ge()):Object(n.e)(be(),a?Object(n.e)(ve(),a):"",e,r,t,o,this.hass,i,this._apiCalled)}},{kind:"method",key:"_apiCalled",value:function(e){if(e.detail.success)this._error="";else{var t=e.detail.response;"object"===ye(t.body)?this._error=t.body.message||"Unknown error":this._error=t.body}}},{kind:"get",static:!0,key:"styles",value:function(){return[i.b,K.a,Object(n.c)(me())]}}]}},n.a);function ze(e){return(ze="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 Re(){var e=Fe(["\n .content {\n margin: 0 auto;\n }\n "]);return Re=function(){return e},e}function Ie(){var e=Fe(['\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 $e=function(){return e},e}function Ke(){var e=nt(['\n \n
\n You don\'t have any snapshots yet.\n
\n
\n ']);return Ke=function(){return e},e}function Qe(){var e=nt(['\n

',"

\n "]);return Qe=function(){return e},e}function Xe(){var e=nt(['\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 rt=function(){return e},e}function nt(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function it(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ot(e,t){return(ot=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function at(e){var t,r=dt(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 st(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function ct(e){return e.decorators&&e.decorators.length}function lt(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function ut(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 dt(e){var t=function(e,t){if("object"!==Je(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Je(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Je(t)?t:String(t)}function ft(e,t,r){return(ft="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=pt(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 pt(e){return(pt=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(!ct(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 "]);return gt=function(){return e},e}function wt(){var e=kt(['\n
\n

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

\n
\n ']);return wt=function(){return e},e}function kt(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Et(e){return(Et=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ot(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function jt(e,t){return(jt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Pt(e){var t,r=Dt(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 xt(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function _t(e){return e.decorators&&e.decorators.length}function St(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Ct(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 Dt(e){var t=function(e,t){if("object"!==mt(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==mt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===mt(t)?t:String(t)}function Tt(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function At(e){if(Array.isArray(e))return e}var zt=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(!_t(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||"0"===t&&Number(r)>=105}},{kind:"get",static:!0,key:"styles",value:function(){return[K.a,Object(n.c)(yt())]}}]}},n.a);customElements.define("hassio-addon-repository",zt);var Rt=r(135);function It(e){return(It="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 Ft(){var e=Ht(["\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 "]);return Ft=function(){return e},e}function Lt(){var e=Ht(['\n \n
\n \n
\n
\n \n Remove\n \n
\n
\n ']);return Lt=function(){return e},e}function Nt(){var e=Ht(['\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 Zt=function(){return e},e}function er(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function tr(e){return(tr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function rr(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 ir(e){var t,r=lr(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 or(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function ar(e){return e.decorators&&e.decorators.length}function sr(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function cr(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 lr(e){var t=function(e,t){if("object"!==Qt(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Qt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Qt(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(!ar(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 fr=function(){return e},e}function pr(){var e=hr(['\n
\n \n \n ',"\n \n
\n "]);return pr=function(){return e},e}function hr(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function mr(e){return(mr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function yr(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function vr(e,t){return(vr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function br(e){var t,r=Or(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 gr(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function wr(e){return e.decorators&&e.decorators.length}function kr(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Er(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 Or(e){var t=function(e,t){if("object"!==ur(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==ur(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===ur(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(!wr(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 xr=function(){return e},e}function _r(){var e=Cr(["\n \n\n \n\n ","\n "]);return _r=function(){return e},e}function Sr(){var e=Cr(["\n \n "]);return Sr=function(){return e},e}function Cr(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Dr(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Tr(e,t){return(Tr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Ar(e){var t,r=Lr(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 zr(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Rr(e){return e.decorators&&e.decorators.length}function Ir(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Fr(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 Lr(e){var t=function(e,t){if("object"!==jr(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==jr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===jr(t)?t:String(t)}function Nr(e,t,r){return(Nr="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=Hr(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 Hr(e){return(Hr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var Ur=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 Wr=function(){return e},e}function Jr(){var e=en(['\n Import from USB\n ']);return Jr=function(){return e},e}function Yr(){var e=en(['\n Shutdown\n ']);return Yr=function(){return e},e}function $r(){var e=en(['\n Reboot\n ']);return $r=function(){return e},e}function Kr(){var e=en(['\n
Error: ',"
\n "]);return Kr=function(){return e},e}function Qr(){var e=en(["\n \n Change hostname\n \n ']);return Qr=function(){return e},e}function Xr(){var e=en(["\n \n Deployment\n ","\n \n "]);return Xr=function(){return e},e}function Zr(){var e=en(['\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 Zr=function(){return e},e}function en(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function tn(e){return(tn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function rn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function nn(e,t){return(nn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function on(e){var t,r=un(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 an(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function sn(e){return e.decorators&&e.decorators.length}function cn(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function ln(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 un(e){var t=function(e,t){if("object"!==Vr(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Vr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Vr(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(!sn(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"!==Vr(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 dn(e){return(dn="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 fn(){var e=gn(["\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 fn=function(){return e},e}function pn(){var e=gn(["\n Join beta channel\n ']);return pn=function(){return e},e}function hn(){var e=gn(["\n Update\n ']);return mn=function(){return e},e}function yn(){var e=gn(['\n
Error: ',"
\n "]);return yn=function(){return e},e}function vn(){var e=gn(["\n \n Channel\n ","\n \n "]);return vn=function(){return e},e}function bn(){var e=gn(['\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 bn=function(){return e},e}function gn(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function wn(e){return(wn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function kn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function En(e,t){return(En=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function On(e){var t,r=Sn(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 jn(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Pn(e){return e.decorators&&e.decorators.length}function xn(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 Sn(e){var t=function(e,t){if("object"!==dn(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==dn(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===dn(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(!Pn(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 An=function(){return e},e}function zn(){var e=Rn(["\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)(mi())]}}]}},n.a),r(119));function Di(e){return(Di="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 Ti(e,t){return Bi(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)||Ui()}function Ai(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function zi(e,t){return(zi=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Ri(e){var t,r=Hi(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 Ii(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Fi(e){return e.decorators&&e.decorators.length}function Li(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Ni(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 Hi(e){var t=function(e,t){if("object"!==Di(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Di(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Di(t)?t:String(t)}function Ui(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function Bi(e){if(Array.isArray(e))return e}function Mi(e,t,r){return(Mi="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=Gi(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 Gi(e){return(Gi=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}customElements.get("paper-icon-button").prototype._keyBindings={};var Vi;!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(!Fi(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=H(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 H(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 a=function(){return e},e}function s(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 c(e){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function l(e,t){for(var r=0;r
\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.4d45ee0a3d852768f97e.js.map \ No newline at end of file diff --git a/hassio/api/panel/chunk.4d45ee0a3d852768f97e.js.gz b/hassio/api/panel/chunk.4d45ee0a3d852768f97e.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..04eb5373c26d57102ba6d88f05f25cf6552e2faa GIT binary patch literal 31050 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 z zEFiYLPHeJedirpftl59?x#TM6V%fOsqS;OwWZMGs&P&jWN7%SzHwQ}PT%5ObH8pvQ zTmBXU8j_xEY{^qQJIt-DSsc_~*7+~9MT2KsnAz>CGFLQK&uA&Pr4}H(O|xDm&(=!1 zTDgRGY?+Z>Mi%0cG2-^fxdeKCaA0u1eOy!P)|*H$^gn--+&RYL zcz&k(lu0}eydnJzU;g4W^n#obk=qwr(HRnh&fxhO#0->V(HM$pY@+Mqr&6Pzzjd%M zIx02zUc$(MWN!!k;Fn#|l;v+GS|tMoxPVjIvLUkB>QWQRMJ;zwr>djh*YO@jJM=H3 zNq?2|-l&~~h^IIuPHvRFSRxF=2H8g7&}4~uFj89_0rMTZ_UTnB^EGiA^Wu-!sn%>4 zYAGjj288|`W8eGr94?+oDYXP$cU6Bc1~1{>kfd6FlbwVQWpSq2p?#(u z-514in)S)EzFp4Ws|(5u9<@lG$4J|hsa4kUY2tcVc(?dl$g#nPQfjEyf!D+=(9QNU z3cqy>UeCKG=b`Uw#I&Ig{4g86LbXnS);(HZZKHM{*3PuK4&28nP`y1!5~}zk zB?FX`Z&qrM%7e8>rhtP&=hs|{2Fs=_3ba`j1mj9THcirKe9)kXBovMNCO~o9ne_nP z6R@k;@9{)Py#v;Bn&?}y1nZ7LiMpdX^$wpYj{AcEF7ALLnss8X9V8Z04HU<2}{zQuw;1AV!sNMMX9*=Dp-n~ayk=gZ*tzi z$+PXR*`~K&tGWx--`_71h{A6zTT3$2ROs)-lKH!Ygc!Tutz|auD=|R#Of)PrV`<_I zg^O*SiiAuNVks~Nnj2#6%O+1JsXp~CSOC{fc@(^G>*#_hKzta5^N+>RkUo%pYIWo3 zn&X&lB=#xVh!yXLgUQHGusAe!MajfLkUX%_YYq2 z9jvxTaL03fI}P807RGgrCNiVBbiaG7bm)uj5K`0$5_>{xTWKm}C<^AcBU;!?u?%@=2!lJkJ7aCYZsuNqw|`~5^bxbfl`Sq92#Z2Hkct#f7iq^ zh^$rLx>-qObE}dHQe4aPDDf;Fy?^zyPhy!DY&4r|!?~ogM59<1OgfGwjn0Im@}5aa z#reBfRzqT$O$jxwWu+~t+?u2^$9zgGo9X{wx>}OT;r}mZmnf+~?GgT8>uU6$T(3h( z#rD5$dO{@?9Pw;RdQv6SRN5*=`2SAMU|F7D5=OEeVT5L(1jUJgWksdqS->2D%8^SK zP#=2XbDZr|QEoiEShvcshI(?zo(7oH%dsza@ zAdUjd#*4V_nA=Z@P-k>~_<+iUUvoJ^jeaM64isjnh+Rp-4v;yNWbZRP0trKI z8T|$S_&6biDS8y!Bk$2s6Fplx&xlcu9ploaN_H$@!G5WsN;b@l=`Ll#-gscf=7lw8 zc~+k?+02d|du>pmIGE64!Pck9jG2tsp#VAc(VhU}=>#AYGy*pB+|wgig*WnEFCb?% z0)|1@FbdXsnt)=#E$Dt31LMH{FRTZe;{PAx48-=~6WZ|KnMV8n3VrqiO-+;iYE%ZA zwQ&wG^Cky^Pobx&j{}<8jscnq1hP1c1b1d5u@IYk7zBunUFu~dy&096=#{2S0%%3X za^!!rRKqosU_zQn@)fNDO-9hAxEvlKX=P3(d>62iFh%PZ5^x03#yJZ-?VB^73qPi1 zj*H~>w3pnRge4t5h9$Y}kLL6>hY^EfxA+o*8&bm2k6%9#z95eLTHf@;I5lP$*&L=&L)l647>iDUbDHT9^v z14N@g7#SwOzh4d~pxdwJhZo`rcivt~#@-_Z3*$Agvj5b$Ove*`HjI4-;gb4CYp0T~ zrE;p5qA@-fFLvUfyu$rirb!T7n*Zzw1DrEq5z|K$Qc-;~$L?AD9kx!o-1 zIt6!qyh0%1`=+pv{-ey3vpHmm$i8{}+9+WK&+#NS)SXeC6u040ltF+OH1Zn~!(#3< zgkRIvwDxL&oYAsYncp0o~qM~gvHQlc%>ha1_!X_tSC$n}jdZS~&))#?c za?n6=8B2|r>^efq>~xH6Hw>YYu?9g&xcx%#4JKn($R}oR)C6S3_UJ+Q9v?ymv-n!~ zuKb*1;Z+rk($OPkNS?E*@%?0HuimX*v@MQ262zY-0r7PO?>-gPbM@(u9-BSQ5^dFD zn))Q(c0<6HEwU20zS>^MQE+oq%vS-)Oa*VU5DGLMsh&!>f#%GhsS#2vk%L~)nIF^N zstdsQJeQF&&r0Ynp7aH_GA*Tb0*7*1&xp2~D{%+ZgAbiQkNmd!r=lpDvX$6Fo-nrK+Agv06nLS#*mm4WwME7cTW+Z7cfyx&mW!4%v9Q0Ey|!FJtR zc2XlK)^(UEr1$+Cf#>s1?ljmEFOgT8u{}z^mE3$@bcKpjb<8~(QImrL1<&_Pq3Wg* zbW%na+IS*(FY$WlxZpSTul+glV!ZGBW1c@|;zWVUoE#~Tyzn`wv%xaMK6!)v5+=0d z`Dn0n_xg@Di2KD=h%4lR#aol3sJ+H^A7~NxM}mT~m(sm-=Cy{c`_{{kBFToLLF}{M zEMBbEa&5CbTL6%rUSo{O3H=#~x<%zr^~UK#b1CfXR$=F*2;2%YHg9c@rA}p-&S}$S z!#p92KD4HuIePvc{^GkG82?ZkJrld;`mi0rhc< zm4}=Bxx7Mp>31I;HCCQIPV`T+lc;2xw0KS>dbo*bvj8;?f!I%leS)s_2157Q-V zDF(xR4$xmc2noZqETOU~IE39Ks=WOwA(9>9USTyXLJp5K@SL=Ib9G%Waz};x>TEVS z&9BKS^skgnD+f40e+n%G_-g!txNMF5v%+Tw(PMp>v*3OxsxITH?4o*NmwW>QMN2>y z%5r)P|LUyk!Eev@ny1Blp>IU^&^jZ~_{*5iR%8ypM~&y`$yB#*+q}~@h<)dj zL>NlcZK1o^U7Rd1fo&i|0*TI1>bqz0=UGA-ob6;!+7_rOmehej;FXBO#0UW$g?#aUC!B_@atEsj~FE&OI=fP=)K z+)|2Kp_$%>yybl10_Lu;V68Orc_N!ZIcnZq>dhp;i`;X&y<2HEc{px`Z{lP+R>D9a zQs7uHEzUEhSxA4DwiSM8inmH|uvnTi?weACsHhPpTcVjudJtEuEm(b;sal=Dc(MAI zMLtX{{P3?-fxhsb2mLd&5G9B3=laP;kbOrVZ%}M2kppSO1(^88pw1N{B~9}b_mFL9 ztn_CP_D5l<)!>b<;au;27aJdT**la5j}5PMiv@D)l5aVCXnK3-J{d$Kq%*PSJ3-8} z^{`Tc{Ys;EAX?mHpjx9&tb?Vml3(ki0FtiRDXSpWc<}Jm4!X7?23Q`C3ISMQzWjwC zWW9`)AO^kWjUW-e?46($nJ4XAFZwTxE{=D4tbK5qq|Iln#?jzpeHF(fQxBi#h7y+VNJ3Ii3BO+&-{L6|2JAJI@2dG_5P^dyW2V}qZS5HwE5pP37A8M!i z->}NZ->~$t&-nTU@eM&B%p$+L=^&ZQP7r?=R=D$>OK4nT7Mi)v-M%wZ7`S~iC8_0h z9N4zs3hpl`WaoDWd|CQD8|in!0Z?A1DR8;7<2>j|;~}o`d+R-mRgqAF_t_}IET(ji zocSZ6t8rEXpx|%u$A30$*{ow9BFhn*m_SA(sHTiffEk4b7jK#D>nT|t{=huf+haR} z2dk_O__QA$H3;TiZL`;C$Y4CR0DUo4y`T=B4UX)kmAJ!)G#Rpyu3u@!nS-d}V0`b2#Yf{xAqPG`*dwBtKVWS$A1(-G zabtVO^{}E(aXZ?8Dl}OJUq-CIsf$O~`k`&CjbX^)BLXO4TEUqWOEu#_4YO%P$DzO0 zq4|_STl@AVRt_9M5L4fo&T}`xt5_au-5fBe1TVk%&UN}^+355&vu8Pxa!PhO?L>VF4p5?mFL}6KtG8wZd zc335TM_qmATtm#6O1so3>s=Jwk5GKY`ID`rvtkdg@TAs!plm^_2!F}iwO(5lnLh7rUlWdyyaqt2Z|+r~FbJWEGiBtopoAmg?&cVw1R{&_@1CwUed;Ru z{vuG>r;vby1HrV9r5 zyRDH%{bjsXfI2hD%0K#-n>)eZdT*bVjh(prugJ#>hf0k22CuGL#ljp%%H%ST$=UxlI)0k}Op$eU{Mg%fyrqTzQlC-+Xk zZw^$uT#`oj51#l?9>*uZ-U4+O6@`P};v%g{Zv>3P=*Zy zl(N>sbfVWZrNgD1MTBNzHJ5__pvHA@Rq)u3n0oLUKv7as(xvkp>Pb17Ikx7Ft0^+;QB}YTV`;zV+dUv#SQ4j^RIcOi4NNZ0Gbub~j0 zQG^Ma2kehBI$XTWa!rE!Kh>rI%NFX0Qa@J)-=ez#x3k`NYaEKc+D%g?jN`=e4^p;SJWm z2OPzCW!R!@i%KZ@pr{T8ZB3T*>vvI@06l-_SW=;F4RWG4eYjbU-EJ`hy*UUI6j>uX zy~DE=IYI~YYR4%G%#G)7(KfYUr;kjHI=WG2h(@t+f9M)MA&b&YGZC z50Nw<*UO5#erPhDD=Bi3l zReHd`Hnk6R|91c5cmA^(^v|4c=x6>nBRtYrk`SvpckZhc(1!-lNMk-}$f!MiS5=*7 zmv+cr7nSV91xnO+(LCkr=BR&hgsS@{-u>6Dr}o|BsmqF+xWnq%)o;1!?+!B&3(T%7 zGo0#&UW(Q|CG2f0z)7_eRVP)VGFGr+g#dM8_o~Yr4(T{JG7JePB+Hny2Gn19f z>DjO_l3VQNlf{cHI)MB&m`-LMk#tB#p?l&iWqm)o=Bm~!_kHsu7%Lwf?ueu$`#8x< zniOy%>dE3>ah>rf!Y%uhUB7VX??PEBR!&R3ML~OnMp;RTj6?C2aW0vC%+ZJnkxQ!o z&|~3}rFl)qp09VZzPMP{#1m#NEewidw3C@8{&b+1hN2`JETkFMZ%e;Ao>6jmp2eoU z&RRCl5~a|pX}0U+-wq*BDxTian;O5_DTy@mm?nS=Phw=vqDet@2Ft_~QP4XGX)XB@CxrJ7S&dF<1R;-AcNg zv2WM}N!XCDOU4;}cDbqjn=mhEi%4;CVe|c%GG>0A1+|xv^G;%GPuycnA5zKEnO z4UxUF^JI$M+CXB5R^J}DuhE730r&MlX)DsKBi?YX5=c4B4K3p=(8M<94n>3Lakj{r zt&slj345rIUqjehfKNLb0FQ~X$`e?44m`)A06%{-@bFjabFu8=i33{LQ0JfU%NUkz z_=(uGlTc{_5@Apis?Ss|Zud7Wl4|37+_o<87YB1u5HE-?9Y0uR_j}`%40o0_c(RN0 z`wekVh4Q1m1CyvX6sSlBmtra^DFoIBy>>pG5MnsdK;2z>dEQAlX7sKwG>5#bU=t#N1pVba&B@Jvr&;OC*+0#k#pW+ z$*Q-lsuzP&1jq31h-AXoHZ=jY=&I^?|IB++QT;(u}f{-A@Sv|>lh&Da?fAq)Eb2_~>g(6p3Hr=o2k#;CHH z8ed*kY*{W;YcVsm{(mH0t!26Ne;7x&O{^e&V*@*__CLvh`w#A|v!O3ZZfH)x7+vN` znONp=A#Y%(;s=c2j4z|`6x+bhk%wuFZm*oES{u3P;E$~*=xH=OyF{7L7gYRP>f#L; z3sPfRw5Wo^y&Yaxzd&zgLFh-g^LY>8vb8*pK_+OXezc6gKMfslSTP2-J~I`N2Yq`y zYIGuA=p;{to%s*hZXa!WDfj-YxHPT8#6f=QIJ5YOa16X2K9ONTI!`6HlSyUhb+*1# zaY+#(=a2_6hK_}>IFiQjQcc`r`&1D1(O9cb8RGU#f+;bU24M1lgzA*|OdqBchJ#Ul z;fp3}5=c8BN@QU6@<#o7Qjr+bTpY7K(4yz$hPEiz4^_n={AeTCQ*Qa|t{6m{Eti?k zb#Ct|hMkYZRy9u1Gf*Ho1y%|Nwu@~mXX3Jzljv~4*i~l!=*m8I>V^8v#dXeeK!=Kh z2)M<-up_)rztthu*_~Gl>`$9jF$7eX-76A`Z6Vz>x^;)zw1R_HmWR8FEA+x<0NesK zY<+fS^fP-hRB6Q;rKz1Y{LN?`5`Daxbfo#RepeI7Kdh!fTHu!@do#!&S(B5y}fnBShx9dC)#()~VW7NS5s|590%>Ae&8@bFo4!y3Hai{O#?6K-u21Wr}dERRK*A*VOs2?-HycuxR9 zR!9;gZ77K%E(veRPGAqEYrl_Em$*tBeZ?(fs9^`Eij^sILIIGs+tTsSFP$OUp=+4o zk^AAMw{zEU0qLDG+-5%Cy4tL6?6O$;H7b0+QN(+*j58IsHXdfFGl4-{R3P*4 z#lHnU*?JI#Q-A-kj8gu?f3gAg0^_p(JEKb~pybyq_4-}~Ei~3%i^k&(M;3caQpuB* zP0Ko1F{#pOby?L5y<480@Ck{7sG+BiKPPgV7ewu+q%kG!uzjcyjzL zk0+8u6Jjr}u`oX3yy?m6Ys%L{`DTd@?Yf~kh23UOUHy;lrqfI;t^#mr3B*fu=ls(= zNX-n3eDNMdeUZ;MGUiM-`bX7cd>Lzp+N@s=wg3vmhWr|BxdDQ?EmvYYLG6o?Ub~gcO-;r@{AFm1jt9INveb}dv?};Iyt(Q+-m@z<-y#@_;BGYR|u^=YJQa(SsYBf%5Ollra)aHc@d;=mn870=s7EWzML! zx>n=7sUA}Lq(bI2;7VZSK}xb8l{9y2VDGL6dN^zYk|jq?0^U)uaFzr?SD7FsvA1K`x&^43?4p zbD|zGbEGwXnNYQfowQW35_i%~|JPjk9ak+*<_0BI=`0QuY$Mkskh9vy*%x5%ff64EloW z^}05CI7uXlYC1A=YAl^Gl_~!25G%#?xp#I>?6G6gBnUpDm0*-tOi%<>oSp9c+whrd zrZT%T6%_RZ(%nDW`TSu_ zZC??24}C3p3ti`=@-C?Ei&8pv5ADEQ${*G_@Eo|T+sYr7jr%T$aHRN8(tHWTkuT&A z^KR20P)oVx)2#3UAM+{ve$@|sAYscaNw%7(LoB+%6H+?*Fmz@N(Eos@2)v>)Mq+$)UO%d@AkLn zvadx;1ut+`h;4G_vgfWG^H-bQ_v3BQp8^MjHIO(EX|Hv4`(?btcZ|QmcXV)nK>nF_ zfeD9a9+}!Fu06{g6BgK=yG4;^JSq|KH&L+HTa33td0%7TMJOzh^B>j+)!VwMUll|J2nEb&o+p|a=_Dv8V&Yvb1fzqVjl#P2}0LRz2O_(apGl(beFFK zGFz0h)k?23w^0&pRJ9j6W#Ew{_cxy9$};&zKke)1$aZd*XAPT~+BB^9Mci5weoo%y z#$K|q+adHRl%!0eMViGMg0`(sJ6HHY7NhCQjI813>ia^`kN}rcQDOJHjIn@LnTLBb zELKA;S0#l8wX&2_8)ALiMav6?v=gO!5N7)42lH@M@GIErF(*T5-2sWmx~L=wD}?`w zded58qMoX9O`+Z9vK!l2`yfECc80b~d3IGmmy}qGLY#IbSXRmEg%gOO#J13%&O!Uvkb1LZw+8O~uINcff%r~o7V{V#u}R)8q>vYa=vz?WBFFfvU~Btp19Mfw z8gnCp!XJE;opy&g3|=1M@o{GKQgbl0@kzJn3O{;nw`hpYA2yc7$Nql;sS!xE=^}L* zg+7njxMABGH-iwJOIMfI-t0t)bw91#Pg1azm6h<2Gn4Tm>2yhL-PL0fe$099Khgxf z*MxUv?ry-<>uh}f1U-*kz4_f@Z`ncKo!z6Z-2lDAXH?6>a$wGHGdQ>$-Y3e7(K=;j z5QbyPo^3qO%85byXvU(yO!Bo2wx!_kCg}#h=bjl6H)<(ZIYc@L=Fp15e(hw{wkA1wBGnc}-2EA33X`8Eh^LKzacKj-#wlvZ3H zi@l%te0}4BW~WN6*isXTalxcobft|>!`oRw3Q4Ev-l!el`{-bQ-ZY5|-l$TG zZ&Zs2lK!hXK#mk@V3JRz;x;N4i(9t9=SK9YCD38~xoM6Zlgg2fPwg1lqp+)v>Dc>7 zx=J=ykxa}T-vPOC7w(PhPr|?sm;`h4hiR|1C+CTts6zy(em$S^5X}0!@9v6ye0A2?KX%7$Oss= zpy^;0+Jsh(u-3+*eGXUI$VaI3a5+|fC?HL`g+_~0(B+Fjr8NVo=2dMxmu;H4t_p$+ z>b}%3|4YsiZes?z>d=%4Yrz6I#H@WCa(xWeNbviZ`F^Eck0=;DtkS{TFtH-=>%{Se z@s|nhp|kxH9c^6<&-caI%~*vcI%@(hy(*z?5{59nD-JdMHRFcrm%|iNF85!5{`z`b zP(WV}F*8v{?B%V*q9aaU8ufgDXE3GxBpBvLs2g1^WInn+>q%7*3hZmZ z2$?A6oXU^798(yK4Ji>PWygh5=>G@-9l)FiEfVc5e`)0veXi@UmQIOLP%J=@msH)h z&4^ow&x$v_wiLmVbc7P2;1V{Jn52_*95gN`ry{+L&w|y!8CfBzq~sE2#UFY8*-CzR zdQZ-!cPK6k53R{L-Ro}!15IkUE%3h%3#rjQFBqHw;BK+q9jE>e0ShS$9BB_(pB`ZT z53SeuDfmA+GfASoz7X7&fCwibY*=zj;NKUF?|(!?ZcA+S+lEBkj*NgAMMkm^CNO2jh2VDpX0Gu9AF{6(^4F`W1@ zxN&ERhli?M1xnMd6u$vx^N@G!XmbR=$b-^)jg|RM3)3I8#T=Fb#z96V!wY**O1&Iy zbTa-YNn~6<>x2W41C1)->o2kb&|;sX+U4@);Kq1Q5Xah!ySy;0^B6k=lk@b==tO#ATrkeu>!{VWgnM)~G0rLq^gH(p^r@T* z^u;2DdkCulke*y*aO|W~z#dU!28CMGXGnSG$N&wD@h=t@WCL{?u!kPbRN?>5Qn4XD zE&l7Q2{F$6|3NALxr6U1`M>cQb!Y$qX1+cZ7$lDdEF9&(&pAdF2OZoZrPLid)kZ_4 z+i=W&PZ@s;Co(&!Dd8FYZqH;j60)oHRu2|dn=fI>nVsfktBStdy#DRZt^d;vgsJ}l z3_T)i&Avn0zQZ)Ap(qH|LD@PfdLe#wRRP4KeNd}{s~9RGR7*@kLz&XVY>7jurmZ8I zJj^rl@?4$VDe4asDjw>dFls_tg)~rdiN(B0ZvM_tu&Ea zRPFuUay|+qIZUZ3xn67~i@#NTW>K(o{lcE7H?)>YXTxenxqi*)nPag`Jd~1L^f{u7GtLf-I-|q|Hp(DS4a8b1Ltt;B# zi=Ov1mFTRLJn`0IEN|waDt|O~DB9>tPW(A#N`C)`K6U=JKBs5{+Yq7aH9$IO(_3(n z_3gr_{^Y7Xc7fn_*TnF0x{afssZB~^X~*Y8695Q_ja6`nA^=O>)1-9}mm=qlU9xyH z9j0%NM$>k&n+pi+rE7J|eM)(3>?qymTZ(;LYx<{PxU}$)8}roMn7heIdF<%uIQ;g% z?)EAN`Cqi>3%%X08UK$Y=h$(WNV?&qc9qjkx6KDUE+DiT@$|_|e(a#~kn=E|S*9}c zuXbJA9Ktr^?vgg(c4IAZIy_;{el?!h`5=VhwE&Ix^<|HZ%&YiPYrJ8^+93Soy^DzP zP9jG=cH)@xe54yG_$XQL?A(Da+$84e$xt5PP$NQzZD@)e@v4FcPGecI)CAMy%(83~ z+lyyuyIF$K&w)P|2>E@qmFN$!1p7T9Xv@}yR;t3^tPq*vLaY=VQ`S$7ke|_k==>>r z(tEp&TjeAULjnXHMoD$K`4?~JiQ4q*^p?&df#yNkDIJ&QP5cy+C?-rd_N%7|zi-g= zEZ$1P#T;{2in>%OeAph)Hwv%HB2@_58EX9_)oYwl5Qbx3`M@e6d=B53!{l*tyrDDW zF!IDt3aa^iigGJ#Qxe$d*4?2F4}p9j?s-@hT$K&%F-=Uk%Qkonp`a2+_`>t1=b`qI zbx5({gxy^2Yd8a3o~`y#WH0pM)Y6do{bl(E@`-QhY7jk(8UZ#wIbCCqln0UJ5;qk) z560IyiKu5@IQQR-sx{!|#w{7}u2Y^z5;Jo+&p%oEdgmF`(>}}%{V?r|25+DOq=148 zN~EJN_&X<3R4Gx`nz@6jl`_oSXvJ>}N%!xO*`=9PA}n0&I>^Ck`-i;7i$gl@wO(N> z>2PDeu)r(aam?}_7p(X|6oAG5#@AXJ=>5!kI>U$WI_E>nwWSex(@MVd@U#ejsxdmk5yNw)2PC?p z9K#{}A;)SSxxQ@e)ettdShnGtlLZVGX&7LZFIxI_k~pdsT9Yq6;i}P<5#%l=Y~eH8 zoqe+xW^*l5Q652p<54L??F+8i#LH<5$>_0OuvFf_b3i<2CtEd3b4PKl)T+*bwgY+e zTB|}SizA^z;Kxg#!8#srVCrWJXm7&L%*ZV+%Vp+RS4KO1lB3%|-OP|7x=Yfy{7 zrW?&r*!gscz(Dqk@$0ak?;yMB6-xYqU9k&?nj(SEVn8C`;YeM{>vrA7PDjAlgaAbfif+RaYm0;HPlq{t4d9E&hqZ| zfYHp(*MZ+YtT=-~rr|ytM{;A)9|nBUgjCLC$Fb%dKf)uTo2aHfI+A}RX&pD;H=*^M zbCwLSukIiEYzTEFYaLyp!5_yg54;bw-hzCv_kg!vF<0vp*W~%8E^WI!!@;=`I9;MZ z2oZ7`T_xG6E1Oh4A+^uf@9-OrY5Oxm__gL$;P1A{o@OrXyL#xEVk;0+XmY)@USt#S zBJ4JR#w`04td~m=OtF;sr%Yy}*W?!(CB z=SbSMaY8|%58XJ)%W|5y%6vOF5^19f>(-{pr9fA}Z49Sd!n<7-@Cu@soCl0`9gLxG z-hoyizs2r@6NyQwNz95rpGy>~1Su2GoCIb3v(&<1P%gt2tB`lX&{4=Q!L%$eFBh61 z&yXuy3CE(GM<`T*XA_&T7Mf@t!?gUPBbR^hSC6D9AbD9MJUe-rBL08Hzuo`RdU5h{ zG$~zO0~!xqU8b<%5K*`KKV*$?0_hMvbwe`>S5?EMa7qf->@oqvR1xj3po?D?{MRL8 z7+Qc!;p))X9|s2#F%QvevrF^zy{-1);vD0gAYAb)s-qqlBPg5PDpA&YT71CzUJe~W zcUYgFy^tW%es_bQDiE|U#HQC$+t~6!c2Oer83vo9+#^Bwe|KohWKnlpcmus+Epg6_ zA%mop;Qt{(lM#Lwic@E~TSO?5Z9hLCu^>@-)S_unlPrJnq!NLsQn=*>yUsq(Yz9ZqGkOW;hoVi=9$vku|O!JBUSDcx0aOfv|Wa0h>`7)2u8# z(oAM3m0C>2i94teptTBlLz(dBvl@K=U<1?l6g-9h#K5)E1Dyb9t*`Q=BCC|e&(SED z89|59F(Y&ITiVjKQ~Bi~YyL0fYV&DTXJh>6W-T(;5^~V?!|q`iprkb<2Mv@M*5TV=m4EKOTb+;&A(;zpXv_eXcm4 zaOAx3;=5wYK}OA4I$rK&g`WOh85PIf zvGB`hux+%NPF`5+_)upjsh+Pfr6Zs_`2uR4ml{9rI+%N9)l9hCXG|8*31d79&F+Iz z73Ip%=R*}}1o^(lggfSow*rc^_Yy}22o2oJ1ZUKVu@Xmj-Tmku6UfD>1D3Yh|AwE! z8b5Q2tAl-sX35N9J~@Mew7vQIdxtac2xBrUOERqp3p>kbE0$_$Bn{Mt+!cm& ze0@har=}Ugl*O?fKCP`#bZkqkK{K&?QRUJq}KM4-zMQkGT8z2Pd9Xt|O zH50L@!dAzirdjXg?FKHle07oTqduprhd0;h;(-kE`NrzpgO-ZB1p>^Rx-(XYvkIJ= zzX5xYijis}O=Ds{cFz%I=q`_5^=QEP88}P@WM|-f-~erbu4P17XJtiLeMA}4n2Jbe zh7zhv8z*qSXB1Px^BZkJ+l(Tn!n!%bS31I$7tsJFseGk*y2`IRsQ>>|HdYz7+VJ1B z%mYIKS{2m2+^QB%P3Z{5;*%3~DtwS<0pcFB;F`zn`QfD1HPP6@l&96-Of* zrNfxF8i_ar3(G5xs(liL)SvhH6YoU)k<_YWY0qdXNExaF28^;-+I5%Pq*8&Kh@#MC zu>(}HMtH0vsSpmOo@YHC@Q|BEVD^Z21n`QjD$^-ZOgC?8bAN#vvT!{br*KFmYatu# z#A2goNjBTEgX*FQ-el3n90P>C9nFrd{@>()%Vg}giD@=&sA{7j6KQvf zqZe7Iuqk0GtAq??{=QXDGc}Q#1#qr$NH|}*=820N!EGwKB4?tLq>H`*#kQ&Ml8>#$ z&NZ~fuZFEj7rR_E>l~4V&X+Y=v)(_*irX8sCEd*UXx6g<#hJJ_3J>GDSa;Mn*$U)~ zZ?=n`wThuFeL2V@$X?oXxrp>SADyD7nlX1rg?sxFNq?k=&(2Jdrz@6y$BqY5>c?-% z^*^JS3E{<(&XTaR;(L*xIzZp_6o?%%{c+yUpeXUKcSE_4HbpH#R!t;z=@o6_EhCj{ zNEF|fNf)rne~UK(D;WM8Y8AcQkSm) zPzQ-BaSH(~nPjnqnbe=jLd+Vr)&)KdBO@T;jpl#U0VFA1DW_E3w$%T z+Srz#H~J+YQK`UwXrerJ5Xf{-z0PeNj_aGMy16Q*N+Us%hJeuk;38Pao6kn>5M#&j zV7Cl9wQyiSPW-)l$w0+-Jb1-8nYs}F6lvLB0D1zSaBdq^Zi8(ZmDDpG<}tBHS8c>l zNW6 z_H==1Z7zj%1ZwM1hfC{4`Lqh*Y2kReBXNJPfN`Wjn3WF-55LrZtPAHp8rY$us%D5FkYHsgt~O;;ofzH^9#ER zrqwWlKU%ag@Stz=r@yP?z{v!t6izEJN-cD6}D{~uJd%@wIFh2O94KO8=B8@uE`9-j1U(|77TD~Il5O+Zyp zb?|J%&ngm~R|nO$hj+ze&10zP7n%p(c24zI7dZ7-H>kxAZF>WKdDN`GRgfF0SUK0i>vn2PO!tNBlX<&qBV!qxZ>kN$*oo%wzAzjAgWpK+aZ z-h^B}bw*MiTcNFN=<8<7rfuTJq1jGM;nU2= zL*Hi-jYCObD|r{?3T-)JEZ-o=x4g1*gaA&HQ!=QDV!SVRbn`}Te+ycsuF$Q{90p(u z;QmCOuJ)X`QCD$^`rfh3((eS#R@Uw*IX${8%SSjir*jjkNS@ zQ1tFZ;-p(zvhq)Md=LLA&ZHxUv0PT8$oVb>kB=B|mhHeZ?d8nYQ}lK4g6FUyO}%+( z(+^RdC*D*lrg-GFB=}AbSbnYOU)vT6&pW0$TPU|sORM5FA=J8yz^rT9PZxLhvgVM| z0tg`NQ=6r#sBj9$*YfMSgAGQqlP23jhZ)yWEz$?SHYZiVG*VH8Hm*ChQtX>ciCWfo zc*9J7CVA~fZ7*9@ib7cY}2_x21z z;90jFl!<#2x4B;~a|T4sOF3n=%6!csN!6swsLNk&uCuX@0z$LtH#nPKmuJO9Oc|jq z9Gk66=Zk*QL3Y@aLTkOnL>zMqqt_x%FdT%3C);nA7;FvP{N&t&XG7I%{y8fn*~8L2 z3Olbz2LgWVlzX{Y0VLxxFD4~Gr#{|#@qI!gZqx;?&t7rNblX_u9N$=3>) z!*^2q4JNuCkAG#h@Y_FGn1|lA(plIWgH&whM81z_>P4w9osndn?=<3<5+Qdv+5|<9 z<_vMV{-hJRVxs+;_3kqtPmY(@BJ>*Sv6_%bFEN1~fj?&2HwfvIzTW2`IR_SYgmX>Q zBsT2uTYjv$m;m{*4sczBW8f|&oTUJV-g-OO(_4tO!yI`ujdp*Yz;wB^%*fO&`1UAt zLq8cyskh`tpsq+i|MA{5XsTiIPT06qKS%g~-ZNPgLA&fls4T=o%!*)#N{lf?12d1p31izZ9K9Z*VH-0EGKbsXZ2UR1YT?4-RxF z#C#hxvNA8B{WPg*D*G?poA!Jw6A*Lvcj}Rw7#=r=?_o@T$qlCRlaCLoXxsJ0gttZc zCa^5ZtpAD~2!PG+KzLm6Y1f)X+rCf3~~upgRlXiGH~~(I*jKtr_pB@X@cm+ws=)%f>=Xq^<>;ywcW?1(PtKEgs4}Q z#pcCJX4TT5y=ZU7r_q-Uuu8+dk*VEMYuA{344hS4(^x$eeDP9ZfArY;vO9Jd9GM!y zTws%2)Nan+famIrnt{6|`9iI=rLM-p*H$}$(TKx4()TB5z_>+5K7=J&& z=~b&&(uD%TnPFZ*UHJn2`)!~Mk#cg||1~@+UB5h-tM5jCxjQWhPnQjD4ar@~`(nlTIiHI@77W1NexJ(?gDb^&@x z6ixKUMq>$@Df9J3x3xt~^iq}@ialTb-9XLwf8!}f`r`)Dl)HR=38LyC3e4ijpH&o6 zFUG1V&Ti@SH15Zv;6;XWZZ1bNV%Vi(ZY9%&kE}oMHWu>5y7rG|R0m0*D?ubese8A3 z)#smeYEN2>Eis-$ut0iCc8D0gH*e@gbtu61U6x5ovXjnk5`4VCBm&Ez`HUQ|EkTAl zkxuUN;W1-tG)*|=N(fLdHXDTjd~`Puo&bH*_SzPT8gX72H0@Am>RfSxj&zT!QU{&4 z&V3)(fBi(LNrX|BH4djK@JyEKo(5N^#iN09W5FGtwByfEdkCMcTf|)IZOr#c>VD45L9(c^yZ&>2oooUWcSknLA2-Y?fo5}?)CK^Bv) zbF>61n*?62H{{K^&C+lEhVq%F^N%_mQwu@!k4KBVb|14NI_3nLet=yLMDD4?OmtV5 zseetbBq8%vXSEfa_!73k(2F!v3A?6Nucvn(Sn#oq<2Tp&xv-JU(Hu?p{Q0Ovy+*dj zNG^4QO9PlnwyG`~%sJb3DW^tFVa^vv6km0Ces1UgF5pKD8BxCzpB>~83d~v;*wt_F zUGE<QP?+h! zO$f~ig+lX^&*h9R$-bvV+oP<0(O6oA0Zq_O%E@00{`K(tyNhmPG!4{x*n)V ztSD!95E(`}tOR?>dop2kSBYpvY8d1(8OO0i)J+5*`iE^8#v~w11pfDapSkrBuU3b- zdQBG(m&fhz_ltHlCfU``_k%l^*Sq#hxqf_6oaZMFyO>xf_$|SY+oU> zlg-^IpXPCjr}B2Hr}A-{)?Y}4!N?Wi<~!d?baU6gd==MU;k?Gj>Up6{iV<1oN+&aO zi!ZPM1UHEbyf5aZmGU4j;-!`3TD#!td9zK{AbHy*8nehgqj$9xfxpQb_=atw9J2*RusV{Eek>_(a%3wtMiw3Kzs&6MxzMYo=@g6~nJd~>6 zTunYC*maCtF|N+!#Aw0ecO8hF%);NGZF}Dde=@sQHO60`b3ch{;QMkoOm4#n1d=!j zrxOFC^QZ<$v*FKJd>jzwj3*W30S>mny8SYbQvzJ7YBzO0>l&vGio?#nV#stv;S}G- zj$NSTknmdo6rwU?ctX~^fWuQk`{e-1G2>s)>UBg0H(?;h{BpFo%j?1|h+T9#40cpy ztva{!1*M{)FR?u-I)oaY2NaEuHMB|g`DWd>s+L#>$5A*jnl#C~E8C5!kDGC&^D5za zmCDgMwd9r_ruEBh9a9?A3l!?i#vc)u=_5bi3TtCfCnb>fNmIrQ)T+?peaUf0+IS5I z5*RBaHKG{PeT)nT69)A#dy z?WrWNGs;u2C2`FMgch3W=+*J88 zs7DG}TKYlYuV;__-hs|-%5LEuwGl=h_-%XSOB7;bZN_qQ6k#gN3$>vKMcB zv!OB-fGKs+WkU%Ixvr}DYY{Db#V{b98E2Rk7idPVC`csYZRoQ3R~dh9S}>@T1nf67 zyMDI9r~R>3W%A9pa5Tz9;nnMN2o3BMgFp)F@dmHWB%=LiBc(s7hn^*GoKv}JH&h-U z^GQT|&)<}MG7i6x+(UGwk6dPvkk4(tlADKS2A6n z`^8+b1vg_52j-jpn2L8WbS{qw=I3%!pD4l*7|GvQ2 z>iFeAtK^xwjRI#ck6Oucyl}<#40tjG44gJ#wCo${+m!UOD&_0berLtBZSzfUjjBif zg;YSt-Y9Rz_AadveNA3W-uef==7TJ5{^#UV=MR|0)Wt}fI+q&sv=FJN2eofMBVA7~ z&5|Ff3fAR*^0nlqb$jir<=VZVDSh@&d`l;N;r|f!#hW#H4v=AKPUi-734aQ*)u?*+ z9}l&1=2G(T9pMKd?GqcxtU3qXFRWYA;=@b$>#e_7;@X9rV;lp32GYB@A!}n~6F8&3 z+W8_A4F2PRfq@xrAP z_Q``+x4nSBu1yOYfR>E{+Qi3P(0+pq;7j_^?QxaC72`QlD;=#JD8Ia5U6Ipt$U(ar z`sB*ax7e*8!k^m5?d|EACpcfDkUU_$Jgr2&+Vg@dvN+w#y+LW-b3g(Snp8eEYd{N- zZU$=LGr5Jt$Z{4$4>_AhRk!HmbLm;{VS&rr7aOE99;98jWb2;68BEvtdh)^gWY9(n zJ&4djUE^>Kx`&b9dp^4HqU$%ijDa>~oAH1;}ud{e(L%nF zIC<#8^%F%5vXrEzA65R#^X}V*O@HfvMVHoSu#G~0&P=5p!RGGvjCtAHNp$~q zA~K)}Mg{s%77j=+5vQ4w+!rg}No#+?=?4&QtN6i3`&(%}7^My0w^vxSrYVH04%^;{ ztgdqk3!4r3ksz^nd%v7AQGT6vyQIbjI7J2r@oN8#csP=E58GLXE{aqD9*Rf4B8z|6 zm7Ptv0qMp%E;drvbhQJ~!CIn!V2b#SX>fz{x5Ni7Cpdyhzrz}e8}ZAUksrx}l5!gi zsj9A*PUEj6`-+0N24F)xzyUKpSJ8kkuTg;II|Muhq&A%cD?Dudt`K%JWNc`!RcfaX zlNye1t@18~B>^o5sh>Xq_bQ>o|y{a3| zj+DUQ4FL`4kvt)_Ry&~cUGehBw*vTB=xzG$yS(!W6D@SnUhP7bu(g@RfQI&)CVetN zu(GT9iBo$N;RBtyXB1Grg3-rwnD2=RqG zh#%`7!EA%nQ3>&G$MGPxc**Cog)s8u7_aBvWZ>CBQz+5nD+S@9K{fix7bW-7zwNwoevkY5*u1Ui(-3cu`x>VaNqu00tm()< z!)nH~h!L+9lPb1O?IH}bRopVviff*(?CGox<>iR_KH?$^q0T8gJN}R|s zrGT@PJdL*v8cZz2Z#UbYks4zba!#hAP2*WrBT?#10rAN?IrFa1feLVqBeUc$tw$r` zs8OjZZq5^GE}+kZdHcAQpjgZ)u*C=iHKY9)c{U zO#GB=R3H>AZTTC?^TL>?ARyB-fkEbWLZ!(0lphzMWF{EkCTn(CQ9@}^l#+u>coatM zf~@RO@eaNutc1KmgFiu8H*DE{4E`0vCET^);ufWu_vci#uJqb(n1(-85dCIefct$0 zA;TPstp_1PA4-NfkTOjWeLN4=bQwX;5#Uh`c-~2BFDYkV_wxHOtT5 z{z83IG|H;teQLPT_xB}q@$I`w2aJtsn8LgQYA-%Pj8PU0LQ?wx=BcM5%DoG)zTXPM zVCy&D7?8{Gb|wv@J5ubHH=oZII)0B=O13OY>tdG=lft7~ZzNCitqNsva#oOMnX(2c z{GI8ZTd*1B0BgpnKwKoObJ%=z(VKJ1^Da=MY8OKsdB97{&kL;z@Uvz9<&|W1>?fQ$l{VNtCErh2qrM2chx#h*6`D`3Zh+_g~&ISxoFfy9}3YUmbRzrZ3B;+xpj40c~@Ugt^HZ`$3^ zZ`XL0kS^}02LmC&ds9ecqI0(tmYjDXG8&z=A-551$@kciF0PkNQQ$ccbouP(%KHOA z)w|hzPCV}IE5*oDwMPnPbVeD5Rp`Bk3JRgdr%!j>rX0-N0uO3Pg3)$)ye>RPizJTg z5|aY%WI#ptK7J%Nbq4HQ;^&_txdL)WPvR9BhYehLVo+pvDN5JKxeKtUuZ%%+iZO4_ z;6nV3GN!vRNgB(zgC^-0`r*$hfZ3Wh|7wMlUCoXZ3>p-lG+zLJh(&Pr%Y}w;=_w#* z{wd&re+K(I`@US%pERPbr5%m$Ls#&VJt8d!>jBWaQ-kGBg!ks2M!Pm<)}xJ!$o|g9 zndcsC*8LatDl@yci5UZP%kc_)lnQtL`b!Bcob}wc7skoC@!9kQ8p6wb z>jZX!t|D$^E7=jCzgtTWLy5ZU-Np5WsWtv~o;B!Bq}V+^W))NmJtahMUD__O)LSfQ_wo=Sf|8E$@0D?!Gle3!C~bexsZcl|>Up@Ak_%XNl%fe+Xxc}t@o zzFWqm{e5`TZ>A{MG9932nH`{aryZb4-#n7B$a0?&dIt*l`UsWB)5}70p_^WEzUP)F zm+7&?v)OMp{$|>w#+>>lMG`8%i(tB&4v{9xi{pwPGlskY(rmeU_J zF$lGg*q=GhiD=hHBm(GYZ%znt;AUh|L@v^y(%po94VK}Eq%_})Ca_#chbv-MWDkZc z0pYha9iX~4T}z|Oz-2{nLgZN=jc|3ztcKWF?8`-D0fpo<^r%}`3_BDLG6`r0BH3IQ zjzFK~q7cRMolwh;N(p%bOgo2MbqSIP)1nmt6LmH%Od~pQDMZfNj0M(W=$3A%szgjx zF#{#(zMifjP@IW11}RcKr-nU|Z#OfR*2mlOQRm#!$*nNNmp_%Qp$oC9-E%E#Gj zNS9ajb^fyPjD&awf79-?+t^SY{|St?jMBsEb61y$k8VQ6_M|h;D{2A934s~ADm?2L z#nOc!{$_j3#?a zuX7+EXpZ0Kb0B+s_Da}nYV+?<%jx-x*z0>=U}2\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;\n name: string;\n}\n\ninterface HassioHardwareAudioList {\n audio: { input: any; output: any };\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\";\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\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 * localTheme: selected theme.\n * updateMeta: boolean if we should update the theme-color meta element.\n */\nexport const applyThemesOnElement = (\n element,\n themes,\n localTheme,\n updateMeta = false\n) => {\n if (!element._themes) {\n element._themes = {};\n }\n let themeName = themes.default_theme;\n if (localTheme === \"default\" || (localTheme && themes.themes[localTheme])) {\n themeName = localTheme;\n }\n const styles = { ...element._themes };\n if (themeName !== \"default\") {\n const theme = { ...derivedStyles, ...themes.themes[themeName] };\n Object.keys(theme).forEach((key) => {\n const prefixedKey = `--${key}`;\n element._themes[prefixedKey] = \"\";\n styles[prefixedKey] = theme[key];\n if (key.startsWith(\"rgb\")) {\n return;\n }\n const rgbKey = `rgb-${key}`;\n if (theme[rgbKey] !== undefined) {\n return;\n }\n const prefixedRgbKey = `--${rgbKey}`;\n element._themes[prefixedRgbKey] = \"\";\n const rgbValue = hexToRgb(theme[key]);\n if (rgbValue !== null) {\n styles[prefixedRgbKey] = rgbValue;\n }\n });\n }\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 if (!updateMeta) {\n return;\n }\n\n const meta = document.querySelector(\"meta[name=theme-color]\");\n if (meta) {\n if (!meta.hasAttribute(\"default-content\")) {\n meta.setAttribute(\"default-content\", meta.getAttribute(\"content\")!);\n }\n const themeColor =\n styles[\"--primary-color\"] || meta.getAttribute(\"default-content\");\n meta.setAttribute(\"content\", themeColor);\n }\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/hassos/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\";\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 const [major, minor] = this.hass.config.version.split(\".\", 2);\n const ha105pluss =\n Number(major) > 0 || (major === \"0\" && Number(minor) >= 105);\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.last_version\n ? value.version !== value.last_version\n : value.version !== value.version_latest)\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.last_version,\n \"hassio/homeassistant/update\",\n `https://${\n this.hassInfo.last_version.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.last_version,\n \"hassio/supervisor/update\",\n `https://github.com//home-assistant/hassio/releases/tag/${this.supervisorInfo.last_version}`\n )}\n ${this.hassOsInfo\n ? this._renderUpdateCard(\n \"Operating System\",\n this.hassOsInfo.version,\n this.hassOsInfo.version_latest,\n \"hassio/hassos/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 === 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\";\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 const ha105pluss = this._computeHA105plus;\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 ${repo.url}\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 private get _computeHA105plus(): boolean {\n const [major, minor] = this.hass.config.version.split(\".\", 2);\n return Number(major) > 0 || (major === \"0\" && Number(minor) >= 105);\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.last_version}
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.last_version\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 inludes 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
Hass.io
\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,\n true\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 last_version: 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/homeassistant/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","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 +{"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/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","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","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","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","fetchHassioSnapshotInfo","reloadHassioSnapshots","createHassioFullSnapshot","createHassioPartialSnapshot","_common__WEBPACK_IMPORTED_MODULE_0__","regeneratorRuntime","async","_context","prev","next","t0","hassioApiResultExtractor","awrap","callApi","t1","sent","abrupt","snapshots","stop","snapshot","_context2","_context3","data","_context4","_context5","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","_ref","_ref2","_slicedToArray","join","cssText","head","applyThemesOnElement","themes","localTheme","updateMeta","_themes","themeName","default_theme","styles","theme","keys","prefixedKey","startsWith","rgbKey","prefixedRgbKey","hex","checkHex","result","rgbValue","replace","_m","r","g","b","updateStyles","ShadyCSS","styleSubtree","meta","querySelector","hasAttribute","getAttribute","themeColor","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","oldRoute","updateComplete","_this4","tag","_pageEl","_changedProps","_computeTail","page","panelEl","_cache","cacheAll","cache","UpdatingElement","fetchHassioHostInfo","response","fetchHassioHassOsInfo","LOADED","showDialog","root","dialogEl","provideHass","_this$hass$config$ver2","hassio_addons_slicedToArray","config","version","major","minor","ha105pluss","Number","hassio_addons_templateObject","addons","sort","a","name","addon","_addonTapped","description","installed","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","last_version","version_latest","hassio_update_templateObject2","_error","hassio_update_templateObject3","_renderUpdateCard","includes","hassio_update_templateObject","curVersion","lastVersion","apiPath","releaseNotesUrl","hassio_update_templateObject4","_templateObject5","_templateObject6","_apiCalled","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","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","_computeHA105plus","hassio_addon_repository_templateObject","hassio_addon_repository_templateObject2","maintainer","url","hassio_addon_repository_templateObject3","available","hassio_addon_repository_slicedToArray","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","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","parentElement","selectedTheme","parent","customPanel","dockedSidebar","_e$detail","nodeName","routeTail","_supervisorInfo","_hostInfo","_hassInfo","_hassOsInfo","panel","_redirectIngress","fetchHassioSupervisorInfo","fetchHassioHomeAssistantInfo","hassio_main_slicedToArray","addonSlug","awaitAlert","createSessionPromise","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","setHassioAddonSecurity","installHassioAddon","uninstallHassioAddon","_context6","_context7","_context8","_context9","_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","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.4d45ee0a3d852768f97e.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 \"switch-checked-color\": \"var(--primary-color)\",\n \"switch-checked-button-color\":\n \"var(--switch-checked-color, var(--paper-grey-50))\",\n \"switch-checked-track-color\": \"var(--switch-checked-color, #000000)\",\n \"switch-unchecked-button-color\":\n \"var(--switch-unchecked-color, var(--paper-grey-50))\",\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 \"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\":\n \"var(--paper-card-background-color, 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};\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 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\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 .paper-dialog-buttons .warning {\n --mdc-theme-primary: var(--google-red-500);\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","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;\n name: string;\n}\n\ninterface HassioHardwareAudioList {\n audio: { input: any; output: any };\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\";\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\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 * localTheme: selected theme.\n * updateMeta: boolean if we should update the theme-color meta element.\n */\nexport const applyThemesOnElement = (\n element,\n themes,\n localTheme,\n updateMeta = false\n) => {\n if (!element._themes) {\n element._themes = {};\n }\n let themeName = themes.default_theme;\n if (localTheme === \"default\" || (localTheme && themes.themes[localTheme])) {\n themeName = localTheme;\n }\n const styles = { ...element._themes };\n if (themeName !== \"default\") {\n const theme = { ...derivedStyles, ...themes.themes[themeName] };\n Object.keys(theme).forEach((key) => {\n const prefixedKey = `--${key}`;\n element._themes[prefixedKey] = \"\";\n styles[prefixedKey] = theme[key];\n if (key.startsWith(\"rgb\")) {\n return;\n }\n const rgbKey = `rgb-${key}`;\n if (theme[rgbKey] !== undefined) {\n return;\n }\n const prefixedRgbKey = `--${rgbKey}`;\n element._themes[prefixedRgbKey] = \"\";\n const rgbValue = hexToRgb(theme[key]);\n if (rgbValue !== null) {\n styles[prefixedRgbKey] = rgbValue;\n }\n });\n }\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 if (!updateMeta) {\n return;\n }\n\n const meta = document.querySelector(\"meta[name=theme-color]\");\n if (meta) {\n if (!meta.hasAttribute(\"default-content\")) {\n meta.setAttribute(\"default-content\", meta.getAttribute(\"content\")!);\n }\n const themeColor =\n styles[\"--primary-color\"] || meta.getAttribute(\"default-content\");\n meta.setAttribute(\"content\", themeColor);\n }\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/hassos/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\";\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 const [major, minor] = this.hass.config.version.split(\".\", 2);\n const ha105pluss =\n Number(major) > 0 || (major === \"0\" && Number(minor) >= 105);\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.last_version\n ? value.version !== value.last_version\n : value.version !== value.version_latest)\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.last_version,\n \"hassio/homeassistant/update\",\n `https://${\n this.hassInfo.last_version.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.last_version,\n \"hassio/supervisor/update\",\n `https://github.com//home-assistant/hassio/releases/tag/${this.supervisorInfo.last_version}`\n )}\n ${this.hassOsInfo\n ? this._renderUpdateCard(\n \"Operating System\",\n this.hassOsInfo.version,\n this.hassOsInfo.version_latest,\n \"hassio/hassos/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 === 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\";\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 const ha105pluss = this._computeHA105plus;\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 ${repo.url}\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 private get _computeHA105plus(): boolean {\n const [major, minor] = this.hass.config.version.split(\".\", 2);\n return Number(major) > 0 || (major === \"0\" && Number(minor) >= 105);\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.last_version}
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.last_version\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 inludes 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,\n true\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 last_version: 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/homeassistant/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","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/hassio/api/panel/chunk.c1c599e0ec49ba4de253.js.gz b/hassio/api/panel/chunk.c1c599e0ec49ba4de253.js.gz deleted file mode 100644 index 96736f488cb333b7d3a9fa4e8144ff4cc3fc45b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31047 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

&b536Hov67$bP94p4d8wuu>xD%u zH!@X}l{vBgcaixH7}Jn(nduXGFY$f`)sivilgiL>mV9;1IN+mN)!z^|mgwVdD_+ z!E<0eCB8o(-WMk!pW8(vpfOD?&iN;~>6*!*XG-7EpUO`$pz#90lJI|Y>{MVRKR;)C z_Eov)U2}a#!>b`uepiFU4`XjkkqEnbj#PHcKPK3$jTmdxDYhIH*)E`L4s1=l8Aj{M zHf;y9eOlhe{z`}*!d{$T$esj;yUMdR#O)YvjuR4Nt)!oWEzl&@+9G|$uYJgaQghu) zSMw}_ppd-J>_e9KA!w{eo-yFEI!C*JRUKIGk?L+DDzl!K?^zS+%RazR5sS{y@@Pyr zWslWO-L{bBRrhmo67xe~CX~-^O^ZKGm>~#uy@H}F^Ply%p&-3M<4d}WQ!CVYk~WdesVYDMm#jqNDuj%V&_`4Ot0P<&(Cl@h6Q=eSQq zOXr|x*ACJ6h<}!8`8N7c0lHA%4(U*ewqf@*NKgFKx~m3U5Z}8kO(OCMW4R?=+90firc3(VnA`<59XQ z&Ec-Yc@Lu0Z}LR%orAc;W~m}EuSC0i-f_J9>@r#~H(Stuzr`HdQwu|6Afa7W8tE~0 z1+NJSDY?$~=pG}}f+b`!MlL*pf3)>u2X1utVX&v!U(Q)Fz_Uem&YD@|Gil@S(Y}1n zZfg2$jUT{DkL`X92alxn`Z%E5w8#=l?p)Pra(5AZHE6O2JUD|eu5Vm^B=wAse1R@f L+WKWBfdTy=xd+;U diff --git a/hassio/api/panel/entrypoint.js b/hassio/api/panel/entrypoint.js index 3b200386e..9c42165c3 100644 --- a/hassio/api/panel/entrypoint.js +++ b/hassio/api/panel/entrypoint.js @@ -1,2 +1,2 @@ -!function(e){function n(n){for(var t,o,a=n[0],i=n[1],c=0,d=[];ct8}@#_VFr z2V%l`dG~99J!$jKj6%m>CvjEvM!DLW5a{W$4@_wAWZUpgwt-`oNny5p$7)>S9aDlc zEw;Oj`iYDhFt={MQS&*qLT=TL{jGct%0RrIvDw-FmNAWhz@lJ;gdFl22Yb3vBkq~pqm#8grp;~nkk{J>JMOCq*{;; ze$#+Ig``t$eRPCwRHXK@?Z64ryXrb8Ohv9ffbE@#6V7a8)NH0A{ENNm+Btmm-V=r|{8-Ln@#i~;4GM8Dkf<$J7#RY*hQyI^+UdNp0 zaVD!2)h7j6Co+zuip!h>*QtxUW;5ki>Acm2-@mU35{TT)CHlu6Hr z2ie|&d*1n?+Vs%@x=!ALAb&MwLj69&w zuRODt9C70PXj53+wD8{^IwvG^I1t004r4#v*;)sD7)Eqjbl@(CpF)Hn!;{xj5I4~X zn|vbnY@XLtp>YtHXeW z?n|yaM({@VjU#U(KA`|aos153V_cqt4D|9=lQw2?-AEqmFRFJ7Y|Dr=)hzgSD@ z=1g)vM&>i`&KtBpd*XQ38l8O~iq8;-iv{nOVMG#)J~Q5&eVvkv$alT>Ucl=(3UVWl z^$qfLwZ-l6hIrNR3X0pe_C8S7bhd$LY%aWJFg2?b9W+&R59Lv+4}a{eIevQc@#EHi z1Ih8VoMI^HW;zPPBvQJjRuIz7B_T@iw_iyn^j}GrIa+Tl)}b$9?Z*;;vxv+WO_^VEy1PidkXd|1B3_sNE-A(zseSwd_D| zE+&z;zTLYbNI4%b4>*@=Qv}oLD78k}%W;2Zjyb>EqbDEGdL4)XYaE;B|ImJ0v?@eBd0 literal 1535 zcmVpUre~>bpZ64rqn4un~M49Pm+NqK1B#%7%GV8N<%+MT39nsG*yKNA4B3y}cvoWmQ z+@$P6+?pZSKYmQ|`3%UZ3gl`QKeWU?eI-4Mu2Rq|5nb;|iF zEoGgf`fNkinM_lu(rU$l>*Z>())`@o4au|hD(7mosHHB`N)@R@-}4Pwro}4D>wH<} zm98MqiYg_nKviftRjV{#WLc?mkP^_w5>+iA=d~`^<*JmrNEbZSgsnD&SF3E97iwAQ zx`slfInN1OqpCFrC{~=8RhF;nqR`m_aUepKs$#tc4k}+)GS`q5fr1dLl4qRDVyVlz zT&(l7T5zOfNXfKf=ZB0~zo)cJam>Sb17=yblSWL5zguvF$GdDD?0hN(LGv9^BWoORpgF?-lCDzOH_ zy$HM3N-a#^woJ7k-M^>Wi1no9WigNKHWj-S23wf~c_M@`N$C2Y5iI4dF?VD$T~HnS30n3JfMO$$1CZDKOFbF#r}IVY5`J~8r$ zLca>kL2|^2_oGc=apT~>J#=13=5Zj#Jsrk=dS@FQ@nIOzY0-hdB7O)Ff{f2W&xZJk zM%d)@Mh$epoI*~wpNV3_9@_B$QYZ3s0;7L*Xj&aBI!s-2ZTBRM8-wa>auk4nmGJmi zKWQ{(7{=NrHf-s~kCzdvp>7OZ2kXdo27`8;tXkOMlnSo;VbtxOH7@DRB(2Gf2oP-@ z{p*OY*2LR?d54Mkx4fIpzGU%JUWPT%_879iSlzck2Fku9On&$Qx(nM??1oS7 z`e*RRa!Y5S&OlfMK-p?$uA?48S>}OC>}ZOJD<+uD!cX#O=}~AZ>(ROE*o;H{)1VFm z7W*%`?is-w*|(m&jQE5C5Op>>)Qxd@3^LH`TkWF8;L#=;^*Q#mF`v9fLsB(HkA5*n z>GneMAx7pi@6HRfKYQSK)S6s;A2y#M4p$4oFT;o=7=31fIr}0d7sl^;?}I?laT4T} zJTN7^zLrxACEZR(VVFcp*ER}by1gbu3I6gc$;9C+={iT7t;M?N1gAs1d)b}u(S&`U zv|$GQtN4YMCl4;Bi9djOI#PTBahhH3ed3?wH)Tso+0(JG8@VY9%Zl!=Qcq+SUy(?Q z%gR41no&AT(A<|lAN+j_1j{aIi~;xifB)srg1k1B)%Vf)wTYtI8h=~MW7FPmqJP@T zdds3tn(np(*VNmoL112`i-`mE2!X=GwWZTFN z^!92Jd7Ha~-$Xg*5`*7{U1^ZOT(56006C`5ikG% diff --git a/hassio/api/panel/entrypoint.js.map b/hassio/api/panel/entrypoint.js.map index f54915eb4..c4b562ea4 100644 --- a/hassio/api/panel/entrypoint.js.map +++ b/hassio/api/panel/entrypoint.js.map @@ -1 +1 @@ -{"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":"aACA,SAAAA,EAAAC,GAQA,IAPA,IAMAC,EAAAC,EANAC,EAAAH,EAAA,GACAI,EAAAJ,EAAA,GAKAK,EAAA,EAAAC,EAAA,GACQD,EAAAF,EAAAI,OAAoBF,IAC5BH,EAAAC,EAAAE,GACAG,OAAAC,UAAAC,eAAAC,KAAAC,EAAAV,IAAAU,EAAAV,IACAI,EAAAO,KAAAD,EAAAV,GAAA,IAEAU,EAAAV,GAAA,EAEA,IAAAD,KAAAG,EACAI,OAAAC,UAAAC,eAAAC,KAAAP,EAAAH,KACAa,EAAAb,GAAAG,EAAAH,IAKA,IAFAc,KAAAf,GAEAM,EAAAC,QACAD,EAAAU,OAAAV,GAOA,IAAAW,EAAA,GAKAL,EAAA,CACAM,EAAA,GAWA,SAAAC,EAAAlB,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAmB,QAGA,IAAAC,EAAAJ,EAAAhB,GAAA,CACAI,EAAAJ,EACAqB,GAAA,EACAF,QAAA,IAUA,OANAN,EAAAb,GAAAU,KAAAU,EAAAD,QAAAC,IAAAD,QAAAD,GAGAE,EAAAC,GAAA,EAGAD,EAAAD,QAKAD,EAAAI,EAAA,SAAArB,GACA,IAAAsB,EAAA,GAKAC,EAAAb,EAAAV,GACA,OAAAuB,EAGA,GAAAA,EACAD,EAAAX,KAAAY,EAAA,QACK,CAEL,IAAAC,EAAA,IAAAC,QAAA,SAAAC,EAAAC,GACAJ,EAAAb,EAAAV,GAAA,CAAA0B,EAAAC,KAEAL,EAAAX,KAAAY,EAAA,GAAAC,GAGA,IACAI,EADAC,EAAAC,SAAAC,cAAA,UAGAF,EAAAG,QAAA,QACAH,EAAAI,QAAA,IACAhB,EAAAiB,IACAL,EAAAM,aAAA,QAAAlB,EAAAiB,IAEAL,EAAAO,IA1DA,SAAApC,GACA,OAAAiB,EAAAoB,EAAA,UAA8CC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,wBAA2ZpD,GAAA,MAyDzcqD,CAAArD,GAGA,IAAAsD,EAAA,IAAAC,MACA3B,EAAA,SAAA4B,GAEA3B,EAAA4B,QAAA5B,EAAA6B,OAAA,KACAC,aAAA1B,GACA,IAAA2B,EAAAlD,EAAAV,GACA,OAAA4D,EAAA,CACA,GAAAA,EAAA,CACA,IAAAC,EAAAL,IAAA,SAAAA,EAAAM,KAAA,UAAAN,EAAAM,MACAC,EAAAP,KAAAQ,QAAAR,EAAAQ,OAAA5B,IACAkB,EAAAW,QAAA,iBAAAjE,EAAA,cAAA6D,EAAA,KAAAE,EAAA,IACAT,EAAAY,KAAA,iBACAZ,EAAAQ,KAAAD,EACAP,EAAAa,QAAAJ,EACAH,EAAA,GAAAN,GAEA5C,EAAAV,QAAAoE,IAGA,IAAAnC,EAAAoC,WAAA,WACAzC,EAAA,CAAwBkC,KAAA,UAAAE,OAAAnC,KAClB,MACNA,EAAA4B,QAAA5B,EAAA6B,OAAA9B,EACAE,SAAAwC,KAAAC,YAAA1C,GAGA,OAAAJ,QAAA+C,IAAAlD,IAIAL,EAAAwD,EAAA7D,EAGAK,EAAAyD,EAAA3D,EAGAE,EAAA0D,EAAA,SAAAzD,EAAAgD,EAAAU,GACA3D,EAAA4D,EAAA3D,EAAAgD,IACA5D,OAAAwE,eAAA5D,EAAAgD,EAAA,CAA0Ca,YAAA,EAAAC,IAAAJ,KAK1C3D,EAAAgE,EAAA,SAAA/D,GACA,oBAAAgE,eAAAC,aACA7E,OAAAwE,eAAA5D,EAAAgE,OAAAC,YAAA,CAAwDC,MAAA,WAExD9E,OAAAwE,eAAA5D,EAAA,cAAiDkE,OAAA,KAQjDnE,EAAAoE,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAAnE,EAAAmE,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAlF,OAAAmF,OAAA,MAGA,GAFAxE,EAAAgE,EAAAO,GACAlF,OAAAwE,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAAnE,EAAA0D,EAAAa,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAvE,EAAA2E,EAAA,SAAAzE,GACA,IAAAyD,EAAAzD,KAAAoE,WACA,WAA2B,OAAApE,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAF,EAAA0D,EAAAC,EAAA,IAAAA,GACAA,GAIA3D,EAAA4D,EAAA,SAAAgB,EAAAC,GAAsD,OAAAxF,OAAAC,UAAAC,eAAAC,KAAAoF,EAAAC,IAGtD7E,EAAAoB,EAAA,mBAGApB,EAAA8E,GAAA,SAAAC,GAA8D,MAApBC,QAAA3C,MAAA0C,GAAoBA,GAE9D,IAAAE,EAAAC,KAAA,aAAAA,KAAA,iBACAC,EAAAF,EAAAvF,KAAAgF,KAAAO,GACAA,EAAAvF,KAAAd,EACAqG,IAAAG,QACA,QAAAlG,EAAA,EAAgBA,EAAA+F,EAAA7F,OAAuBF,IAAAN,EAAAqG,EAAA/F,IACvC,IAAAU,EAAAuF,EAIAnF,IAAAqF,EAAA,qBCrMAC,OAAOC,iBAAiBC,KAAK,WAE3BxF,EAAAI,EAAA,IAAAoF,KAAAxF,EAAAoE,EAAAM,KAAA,WAEAlE,QAAA+C,IAAA,CAAAvD,EAAAI,EAAA,GAAAJ,EAAAI,EAAA,KAAAoF,KAAAxF,EAAA0E,KAAA,SAEAlE,QAAA+C,IAAA,CAAAvD,EAAAI,EAAA,GAAAJ,EAAAI,EAAA,IAAAJ,EAAAI,EAAA,MAAAoF,KAAAxF,EAAA0E,KAAA,WAGF,IAAMe,EAAU5E,SAASC,cAAc,SACvC2E,EAAQC,UAAR,uMAWA7E,SAASwC,KAAKC,YAAYmC","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\":\"87b1d37fc9b8a6f7e2a6\",\"1\":\"e46c606dd9100816af4e\",\"2\":\"92a11ac1b80e0d7839d2\",\"3\":\"429840c83fad61bc51a8\",\"4\":\"715824f4764bdbe425b1\",\"5\":\"9d371c8143226d4eaaee\",\"7\":\"43e40fd69686ad51301d\",\"8\":\"0b82745c7bdffe5c1404\",\"9\":\"990ee58006b248f55d23\",\"10\":\"c1c599e0ec49ba4de253\",\"11\":\"b60200a57d6f63941b30\",\"12\":\"b2dce600432c76a53d8c\",\"13\":\"8527374a266cecf93aa9\",\"14\":\"f49e500cf58ea310d452\",\"15\":\"d4931d72592ad48ba2be\"}[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 +{"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\":\"87b1d37fc9b8a6f7e2a6\",\"1\":\"e46c606dd9100816af4e\",\"2\":\"92a11ac1b80e0d7839d2\",\"3\":\"429840c83fad61bc51a8\",\"4\":\"715824f4764bdbe425b1\",\"5\":\"9d371c8143226d4eaaee\",\"7\":\"43e40fd69686ad51301d\",\"8\":\"0b82745c7bdffe5c1404\",\"9\":\"990ee58006b248f55d23\",\"10\":\"4d45ee0a3d852768f97e\",\"11\":\"b60200a57d6f63941b30\",\"12\":\"b2dce600432c76a53d8c\",\"13\":\"8527374a266cecf93aa9\",\"14\":\"f49e500cf58ea310d452\",\"15\":\"d4931d72592ad48ba2be\"}[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/hassio/api/panel/manifest.json b/hassio/api/panel/manifest.json index 4dd856e56..4997df598 100644 --- a/hassio/api/panel/manifest.json +++ b/hassio/api/panel/manifest.json @@ -19,8 +19,8 @@ "hassio-icons.js.map": "/api/hassio/app/chunk.0b82745c7bdffe5c1404.js.map", "hassio-ingress-view.js": "/api/hassio/app/chunk.990ee58006b248f55d23.js", "hassio-ingress-view.js.map": "/api/hassio/app/chunk.990ee58006b248f55d23.js.map", - "hassio-main.js": "/api/hassio/app/chunk.c1c599e0ec49ba4de253.js", - "hassio-main.js.map": "/api/hassio/app/chunk.c1c599e0ec49ba4de253.js.map", + "hassio-main.js": "/api/hassio/app/chunk.4d45ee0a3d852768f97e.js", + "hassio-main.js.map": "/api/hassio/app/chunk.4d45ee0a3d852768f97e.js.map", "mdi-icons.js": "/api/hassio/app/chunk.b60200a57d6f63941b30.js", "mdi-icons.js.map": "/api/hassio/app/chunk.b60200a57d6f63941b30.js.map", "roboto.js": "/api/hassio/app/chunk.b2dce600432c76a53d8c.js", diff --git a/home-assistant-polymer b/home-assistant-polymer index cb0d91d12..8518f774d 160000 --- a/home-assistant-polymer +++ b/home-assistant-polymer @@ -1 +1 @@ -Subproject commit cb0d91d1247b3be89c283cd44cf0245e0dbffe92 +Subproject commit 8518f774d44d4b9cd7e9b824dc9e9372e665347d