From 99d4021f4728641c913716486a4bd32a57fe0e42 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen <paulus@paulusschoutsen.nl> Date: Fri, 4 Aug 2017 22:58:19 -0700 Subject: [PATCH] Update frontend --- homeassistant/components/frontend/version.py | 2 +- .../www_static/home-assistant-polymer | 2 +- .../www_static/panels/ha-panel-config.html | 2 +- .../www_static/panels/ha-panel-config.html.gz | Bin 12564 -> 3784 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 5191 -> 5138 bytes 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 52bb5d9c1b5..211b1cecc8b 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -7,7 +7,7 @@ FINGERPRINTS = { "mdi.html": "e91f61a039ed0a9936e7ee5360da3870", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-automation.html": "6c3a3345b63f3a36d32f43cff3e10c53", - "panels/ha-panel-config.html": "59ca4cda820260616e9de5324edf6d05", + "panels/ha-panel-config.html": "3d7ef351e5154bbc909662a20ce812e2", "panels/ha-panel-dev-event.html": "d409e7ab537d9fe629126d122345279c", "panels/ha-panel-dev-info.html": "b0e55eb657fd75f21aba2426ac0cedc0", "panels/ha-panel-dev-mqtt.html": "94b222b013a98583842de3e72d5888c6", diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 572f92fd1ec..95b73203b06 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 572f92fd1ecbc31d3d9c3d349f268b6b15158141 +Subproject commit 95b73203b0649bdd824d269204b422714e9aa778 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html index edb382e5b1d..65b79bebba5 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html @@ -1 +1 @@ -<html><head></head><body><div hidden="" by-polymer-bundler=""><dom-module id="ha-config-section-core" assetpath="core/"><template><style include="iron-flex ha-style">.validate-container{@apply (--layout-vertical);@apply (--layout-center-center);height:140px;}.validate-result{color:var(--google-green-500);font-weight:500;margin-bottom:1em;}.config-invalid{margin:1em 0;}.config-invalid .text{color:var(--google-red-500);font-weight:500;}.config-invalid paper-button{float:right;}.validate-log{white-space:pre-wrap;}</style><ha-config-section is-wide="[[isWide]]"><span slot="header">Server Management</span> <span slot="introduction">Changing your configuration can be a tiresome process. We know. This section will try to make your life a little bit easier.</span><paper-card heading="Configuration Validation"><div class="card-content">Validate your configuration if you recently made some changes to your configuration and want to make sure that it is all valid.<template is="dom-if" if="[[!validateLog]]"><div class="validate-container"><template is="dom-if" if="[[!validating]]"><div class="validate-result" id="result">[[validateResult]]</div><paper-button raised="" on-tap="validateConfig">check config</paper-button></template><template is="dom-if" if="[[validating]]"><paper-spinner active=""></paper-spinner></template></div></template><template is="dom-if" if="[[validateLog]]"><div class="config-invalid"><span class="text">Configuration invalid.</span><paper-button raised="" on-tap="validateConfig">check config</paper-button></div><div id="configLog" class="validate-log">[[validateLog]]</div></template></div></paper-card><paper-card heading="Configuration Reloading"><div class="card-content">Some parts of Home Assistant can reload without requiring a restart. Hitting reload will unload their current configuration and load the new one.</div><div class="card-actions"><ha-call-service-button hass="[[hass]]" domain="homeassistant" service="reload_core_config">Reload Core</ha-call-service-button><ha-call-service-button hass="[[hass]]" domain="group" service="reload" hidden$="[[!groupLoaded(hass)]]">Reload Groups</ha-call-service-button><ha-call-service-button hass="[[hass]]" domain="automation" service="reload" hidden$="[[!automationLoaded(hass)]]">Reload Automation</ha-call-service-button><ha-call-service-button hass="[[hass]]" domain="script" service="reload" hidden$="[[!scriptLoaded(hass)]]">Reload Scripts</ha-call-service-button></div></paper-card><paper-card heading="Server Management"><div class="card-content">Control your Home Assistant server… from Home Assistant.</div><div class="card-actions warning"><ha-call-service-button class="warning" hass="[[hass]]" domain="homeassistant" service="restart">Restart</ha-call-service-button><ha-call-service-button class="warning" hass="[[hass]]" domain="homeassistant" service="stop">Stop</ha-call-service-button></div></paper-card></ha-config-section></template></dom-module><script>Polymer({is:"ha-config-section-core",properties:{hass:{type:Object},isWide:{type:Boolean,value:!1},validating:{type:Boolean,value:!1},validateResult:{type:String,value:""},validateLog:{type:String,value:""}},groupLoaded:function(i){return window.hassUtil.isComponentLoaded(i,"group")},automationLoaded:function(i){return window.hassUtil.isComponentLoaded(i,"automation")},scriptLoaded:function(i){return window.hassUtil.isComponentLoaded(i,"script")},validateConfig:function(){this.validating=!0,this.validateLog="",this.validateResult="";var i=this;this.hass.callApi("POST","config/core/check_config").then(function(t){i.validating=!1,(i.configValid="valid"===t.result)?i.validateResult="Valid!":i.validateLog=t.errors})}});</script><dom-module id="ha-entity-config"><template><style include="iron-flex ha-style">paper-card{display:block;}.device-picker{@apply (--layout-horizontal);padding-bottom:24px;}.form-placeholder{@apply (--layout-vertical);@apply (--layout-center-center);height:96px;}[hidden]:{display:none;};.card-actions{@apply (--layout-horizontal);@apply (--layout-justified);}</style><paper-card><div class="card-content"><div class="device-picker"><paper-dropdown-menu label="[[label]]" class="flex" disabled="[[!entities.length]]"><paper-listbox slot="dropdown-content" selected="{{selectedEntity}}"><template is="dom-repeat" items="[[entities]]" as="state"><paper-item>[[computeSelectCaption(state)]]</paper-item></template></paper-listbox></paper-dropdown-menu></div><div class="form-container"><template is="dom-if" if="[[computeShowPlaceholder(formState)]]"><div class="form-placeholder"><template is="dom-if" if="[[computeShowNoDevices(formState)]]">No entities found! :-(</template><template is="dom-if" if="[[computeShowSpinner(formState)]]"><paper-spinner active="" alt="[[formState]]"></paper-spinner>[[formState]]</template></div></template><div hidden$="[[!computeShowForm(formState)]]" id="form"></div></div></div><div class="card-actions"><paper-button on-tap="saveEntity" disabled="[[computeShowPlaceholder(formState)]]">SAVE</paper-button><template is="dom-if" if="[[allowDelete]]"><paper-button class="warning" on-tap="deleteEntity" disabled="[[computeShowPlaceholder(formState)]]">DELETE</paper-button></template></div></paper-card></template></dom-module><script>Polymer({is:"ha-entity-config",properties:{hass:{type:Object,observer:"hassChanged"},label:{type:String,value:"Device"},entities:{type:Array,observer:"entitiesChanged"},allowDelete:{type:Boolean,value:!1},selectedEntity:{type:Number,value:-1,observer:"entityChanged"},formState:{type:String,value:"no-devices"},config:{type:Object}},attached:function(){this.formEl=document.createElement(this.config.component),this.formEl.hass=this.hass,this.$.form.appendChild(this.formEl),this.entityChanged(this.selectedEntity)},computeSelectCaption:function(t){return this.config.computeSelectCaption?this.config.computeSelectCaption(t):window.hassUtil.computeStateName(t)},computeShowNoDevices:function(t){return"no-devices"===t},computeShowSpinner:function(t){return"loading"===t||"saving"===t},computeShowPlaceholder:function(t){return"editing"!==t},computeShowForm:function(t){return"editing"===t},hassChanged:function(t){this.formEl&&(this.formEl.hass=t)},entitiesChanged:function(t,e){if(0!==t.length)if(e){var i=e[this.selectedEntity].entity_id,n=t.findIndex(function(t){return t.entity_id===i});-1===n?this.selectedEntity=0:n!==this.selectedEntity&&(this.selectedEntity=n)}else this.selectedEntity=0;else this.formState="no-devices"},entityChanged:function(t){if(this.entities&&this.formEl){var e=this.entities[t];this.formState="loading";var i=this;this.formEl.loadEntity(e).then(function(){i.formState="editing"})}},saveEntity:function(){this.formState="saving";var t=this;this.formEl.saveEntity().then(function(){t.formState="editing"})}});</script><dom-module id="paper-radio-button" assetpath="../../bower_components/paper-radio-button/"><template strip-whitespace=""><style>:host{display:inline-block;line-height:0;white-space:nowrap;cursor:pointer;@apply --paper-font-common-base;--calculated-paper-radio-button-size:var(--paper-radio-button-size, 16px);--calculated-paper-radio-button-ink-size:var(--paper-radio-button-ink-size, -1px);}:host(:focus){outline:none;}#radioContainer{@apply --layout-inline;@apply --layout-center-center;position:relative;width:var(--calculated-paper-radio-button-size);height:var(--calculated-paper-radio-button-size);vertical-align:middle;@apply --paper-radio-button-radio-container;}#ink{position:absolute;top:50%;left:50%;right:auto;width:var(--calculated-paper-radio-button-ink-size);height:var(--calculated-paper-radio-button-ink-size);color:var(--paper-radio-button-unchecked-ink-color, var(--primary-text-color));opacity:0.6;pointer-events:none;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);}#ink[checked]{color:var(--paper-radio-button-checked-ink-color, var(--primary-color));}#offRadio, #onRadio{position:absolute;box-sizing:border-box;top:0;left:0;width:100%;height:100%;border-radius:50%;}#offRadio{border:2px solid var(--paper-radio-button-unchecked-color, var(--primary-text-color));background-color:var(--paper-radio-button-unchecked-background-color, transparent);transition:border-color 0.28s;}#onRadio{background-color:var(--paper-radio-button-checked-color, var(--primary-color));-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform ease 0.28s;transition:transform ease 0.28s;will-change:transform;}:host([checked]) #offRadio{border-color:var(--paper-radio-button-checked-color, var(--primary-color));}:host([checked]) #onRadio{-webkit-transform:scale(0.5);transform:scale(0.5);}#radioLabel{line-height:normal;position:relative;display:inline-block;vertical-align:middle;margin-left:var(--paper-radio-button-label-spacing, 10px);white-space:normal;color:var(--paper-radio-button-label-color, var(--primary-text-color));@apply --paper-radio-button-label;}:host([checked]) #radioLabel{@apply --paper-radio-button-label-checked;}:host-context([dir="rtl"]) #radioLabel{margin-left:0;margin-right:var(--paper-radio-button-label-spacing, 10px);}#radioLabel[hidden]{display:none;}:host([disabled]) #offRadio{border-color:var(--paper-radio-button-unchecked-color, var(--primary-text-color));opacity:0.5;}:host([disabled][checked]) #onRadio{background-color:var(--paper-radio-button-unchecked-color, var(--primary-text-color));opacity:0.5;}:host([disabled]) #radioLabel{opacity:0.65;}</style><div id="radioContainer"><div id="offRadio"></div><div id="onRadio"></div></div><div id="radioLabel"><slot></slot></div></template><script>Polymer({is:"paper-radio-button",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"radio","aria-checked":!1,tabindex:0},properties:{ariaActiveAttribute:{type:String,value:"aria-checked"}},ready:function(){this._rippleContainer=this.$.radioContainer},attached:function(){Polymer.RenderStatus.afterNextRender(this,function(){if("-1px"===this.getComputedStyleValue("--calculated-paper-radio-button-ink-size").trim()){var e=parseFloat(this.getComputedStyleValue("--calculated-paper-radio-button-size").trim()),t=Math.floor(3*e);t%2!=e%2&&t++,this.updateStyles({"--paper-radio-button-ink-size":t+"px"})}})}});</script></dom-module><dom-module id="paper-radio-group" assetpath="../../bower_components/paper-radio-group/"><template><style>:host{display:inline-block;}:host ::slotted(*){padding:var(--paper-radio-group-item-padding, 12px);}</style><slot></slot></template></dom-module><script>Polymer({is:"paper-radio-group",behaviors:[Polymer.IronMenubarBehavior],hostAttributes:{role:"radiogroup",tabindex:0},properties:{attrForSelected:{type:String,value:"name"},selectedAttribute:{type:String,value:"checked"},selectable:{type:String,value:"paper-radio-button"},allowEmptySelection:{type:Boolean,value:!1}},select:function(e){var t=this._valueToItem(e);if(!t||!t.hasAttribute("disabled")){if(this.selected){var i=this._valueToItem(this.selected);if(this.selected==e){if(!this.allowEmptySelection)return void(i&&(i.checked=!0));e=""}i&&(i.checked=!1)}Polymer.IronSelectableBehavior.select.apply(this,[e]),this.fire("paper-radio-group-changed")}},_activateFocusedItem:function(){this._itemActivate(this._valueForItem(this.focusedItem),this.focusedItem)},_onUpKey:function(e){this._focusPrevious(),e.preventDefault(),this._activateFocusedItem()},_onDownKey:function(e){this._focusNext(),e.preventDefault(),this._activateFocusedItem()},_onLeftKey:function(e){Polymer.IronMenubarBehaviorImpl._onLeftKey.apply(this,arguments),this._activateFocusedItem()},_onRightKey:function(e){Polymer.IronMenubarBehaviorImpl._onRightKey.apply(this,arguments),this._activateFocusedItem()}});</script><script>var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};!function(t){"use strict";"function"==typeof define&&define.amd?define(t):"undefined"!=typeof module&&void 0!==module.exports?module.exports=t():window.Sortable=t()}(function(){"use strict";function t(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be HTMLElement, and not "+{}.toString.call(t);this.el=t,this.options=e=_({},e),t[V]=this;var n={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(t.nodeName)?"li":">*",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0}};for(var o in n)!(o in e)&&(e[o]=n[o]);at(e);for(var i in this)"_"===i.charAt(0)&&"function"==typeof this[i]&&(this[i]=this[i].bind(this));this.nativeDraggable=!e.forceFallback&&K,r(t,"mousedown",this._onTapStart),r(t,"touchstart",this._onTapStart),r(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(r(t,"dragover",this),r(t,"dragenter",this)),it.push(this._onDragOver),e.store&&this.sort(e.store.get(this))}function e(t,e){"clone"!==t.lastPullMode&&(e=!0),C&&C.state!==e&&(l(C,"display",e?"none":""),e||C.state&&(t.options.group.revertClone?(E.insertBefore(C,x),t._animate(w,C)):E.insertBefore(C,w)),C.state=e)}function n(t,e,n){if(t){n=n||z;do{if(">*"===e&&t.parentNode===n||m(t,e))return t}while(t=o(t))}return null}function o(t){var e=t.host;return e&&e.nodeType?e:t.parentNode}function i(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.preventDefault()}function r(t,e,n){t.addEventListener(e,n,J)}function a(t,e,n){t.removeEventListener(e,n,J)}function s(t,e,n){if(t)if(t.classList)t.classList[n?"add":"remove"](e);else{var o=(" "+t.className+" ").replace(H," ").replace(" "+e+" "," ");t.className=(o+(n?" "+e:"")).replace(H," ")}}function l(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return z.defaultView&&z.defaultView.getComputedStyle?n=z.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in o||(e="-webkit-"+e),o[e]=n+("string"==typeof n?"":"px")}}function c(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i<r;i++)n(o[i],i);return o}return[]}function d(t,e,n,o,i,r,a){t=t||e[V];var s=z.createEvent("Event"),l=t.options,c="on"+n.charAt(0).toUpperCase()+n.substr(1);s.initEvent(n,!0,!0),s.to=e,s.from=i||e,s.item=o||e,s.clone=C,s.oldIndex=r,s.newIndex=a,e.dispatchEvent(s),l[c]&&l[c].call(t,s)}function h(t,e,n,o,i,r,a,s){var l,c,d=t[V],h=d.options.onMove;return(l=z.createEvent("Event")).initEvent("move",!0,!0),l.to=e,l.from=t,l.dragged=n,l.draggedRect=o,l.related=i||e,l.relatedRect=r||e.getBoundingClientRect(),l.willInsertAfter=s,t.dispatchEvent(l),h&&(c=h.call(d,l,a)),c}function u(t){t.draggable=!1}function f(){tt=!1}function p(t,e){var n=t.lastElementChild.getBoundingClientRect();return e.clientY-(n.top+n.height)>5||e.clientX-(n.left+n.width)>5}function g(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;n--;)o+=e.charCodeAt(n);return o.toString(36)}function v(t,e){var n=0;if(!t||!t.parentNode)return-1;for(;t&&(t=t.previousElementSibling);)"TEMPLATE"===t.nodeName.toUpperCase()||">*"!==e&&!m(t,e)||n++;return n}function m(t,e){if(t){var n=(e=e.split(".")).shift().toUpperCase(),o=new RegExp("\\s("+e.join("|")+")(?=\\s)","g");return!(""!==n&&t.nodeName.toUpperCase()!=n||e.length&&((" "+t.className+" ").match(o)||[]).length!=e.length)}return!1}function b(t,e){var n,o;return function(){void 0===n&&(n=arguments,o=this,setTimeout(function(){1===n.length?t.call(o,n[0]):t.apply(o,n),n=void 0},e))}}function _(t,e){if(t&&e)for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function y(t){return Q?Q(t).clone(!0)[0]:Z&&Z.dom?Z.dom(t).cloneNode(!0):t.cloneNode(!0)}function D(t){for(var e=t.getElementsByTagName("input"),n=e.length;n--;){var o=e[n];o.checked&&ot.push(o)}}if("undefined"==typeof window||!window.document)return function(){throw new Error("Sortable.js requires a window with a document")};var w,T,S,C,E,x,N,k,B,Y,O,X,A,M,P,R,I,L,F,U,j={},H=/\s+/g,W=/left|right|inline/,V="Sortable"+(new Date).getTime(),q=window,z=q.document,G=q.parseInt,Q=q.jQuery||q.Zepto,Z=q.Polymer,J=!1,K=!!("draggable"in z.createElement("div")),$=function(t){return!navigator.userAgent.match(/Trident.*rv[ :]?11\./)&&(t=z.createElement("x"),t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents)}(),tt=!1,et=Math.abs,nt=Math.min,ot=[],it=[],rt=b(function(t,e,n){if(n&&e.scroll){var o,i,r,a,s,l,c=n[V],d=e.scrollSensitivity,h=e.scrollSpeed,u=t.clientX,f=t.clientY,p=window.innerWidth,g=window.innerHeight;if(B!==n&&(k=e.scroll,B=n,Y=e.scrollFn,!0===k)){k=n;do{if(k.offsetWidth<k.scrollWidth||k.offsetHeight<k.scrollHeight)break}while(k=k.parentNode)}k&&(o=k,i=k.getBoundingClientRect(),r=(et(i.right-u)<=d)-(et(i.left-u)<=d),a=(et(i.bottom-f)<=d)-(et(i.top-f)<=d)),r||a||(a=(g-f<=d)-(f<=d),((r=(p-u<=d)-(u<=d))||a)&&(o=q)),j.vx===r&&j.vy===a&&j.el===o||(j.el=o,j.vx=r,j.vy=a,clearInterval(j.pid),o&&(j.pid=setInterval(function(){if(l=a?a*h:0,s=r?r*h:0,"function"==typeof Y)return Y.call(c,s,l,t);o===q?q.scrollTo(q.pageXOffset+s,q.pageYOffset+l):(o.scrollTop+=l,o.scrollLeft+=s)},24)))}},30),at=function(t){function e(t,e){return void 0!==t&&!0!==t||(t=n.name),"function"==typeof t?t:function(n,o){var i=o.options.group.name;return e?t:t&&(t.join?t.indexOf(i)>-1:i==t)}}var n={},o=t.group;o&&"object"==(void 0===o?"undefined":_typeof(o))||(o={name:o}),n.name=o.name,n.checkPull=e(o.pull,!0),n.checkPut=e(o.put),n.revertClone=o.revertClone,t.group=n};t.prototype={constructor:t,_onTapStart:function(t){var e,o=this,i=this.el,r=this.options,a=r.preventOnFilter,s=t.type,l=t.touches&&t.touches[0],c=(l||t).target,h=t.target.shadowRoot&&t.path[0]||c,u=r.filter;if(D(i),!w&&!("mousedown"===s&&0!==t.button||r.disabled)&&(c=n(c,r.draggable,i))&&N!==c){if(e=v(c,r.draggable),"function"==typeof u){if(u.call(this,t,c,this))return d(o,h,"filter",c,i,e),void(a&&t.preventDefault())}else if(u&&(u=u.split(",").some(function(t){if(t=n(h,t.trim(),i))return d(o,t,"filter",c,i,e),!0})))return void(a&&t.preventDefault());r.handle&&!n(h,r.handle,i)||this._prepareDragStart(t,l,c,e)}},_prepareDragStart:function(t,e,n,o){var i,a=this,l=a.el,h=a.options,f=l.ownerDocument;n&&!w&&n.parentNode===l&&(L=t,E=l,T=(w=n).parentNode,x=w.nextSibling,N=n,R=h.group,M=o,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,w.style["will-change"]="transform",i=function(){a._disableDelayedDrag(),w.draggable=a.nativeDraggable,s(w,h.chosenClass,!0),a._triggerDragStart(t,e),d(a,E,"choose",w,E,M)},h.ignore.split(",").forEach(function(t){c(w,t.trim(),u)}),r(f,"mouseup",a._onDrop),r(f,"touchend",a._onDrop),r(f,"touchcancel",a._onDrop),r(f,"pointercancel",a._onDrop),r(f,"selectstart",a),h.delay?(r(f,"mouseup",a._disableDelayedDrag),r(f,"touchend",a._disableDelayedDrag),r(f,"touchcancel",a._disableDelayedDrag),r(f,"mousemove",a._disableDelayedDrag),r(f,"touchmove",a._disableDelayedDrag),r(f,"pointermove",a._disableDelayedDrag),a._dragStartTimer=setTimeout(i,h.delay)):i())},_disableDelayedDrag:function(){var t=this.el.ownerDocument;clearTimeout(this._dragStartTimer),a(t,"mouseup",this._disableDelayedDrag),a(t,"touchend",this._disableDelayedDrag),a(t,"touchcancel",this._disableDelayedDrag),a(t,"mousemove",this._disableDelayedDrag),a(t,"touchmove",this._disableDelayedDrag),a(t,"pointermove",this._disableDelayedDrag)},_triggerDragStart:function(t,e){(e=e||("touch"==t.pointerType?t:null))?(L={target:w,clientX:e.clientX,clientY:e.clientY},this._onDragStart(L,"touch")):this.nativeDraggable?(r(w,"dragend",this),r(E,"dragstart",this._onDragStart)):this._onDragStart(L,!0);try{z.selection?setTimeout(function(){z.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(){if(E&&w){var e=this.options;s(w,e.ghostClass,!0),s(w,e.dragClass,!1),t.active=this,d(this,E,"start",w,E,M)}else this._nulling()},_emulateDragOver:function(){if(F){if(this._lastX===F.clientX&&this._lastY===F.clientY)return;this._lastX=F.clientX,this._lastY=F.clientY,$||l(S,"display","none");var t=z.elementFromPoint(F.clientX,F.clientY),e=t,n=it.length;if(e)do{if(e[V]){for(;n--;)it[n]({clientX:F.clientX,clientY:F.clientY,target:t,rootEl:e});break}t=e}while(e=e.parentNode);$||l(S,"display","")}},_onTouchMove:function(e){if(L){var n=this.options,o=n.fallbackTolerance,i=n.fallbackOffset,r=e.touches?e.touches[0]:e,a=r.clientX-L.clientX+i.x,s=r.clientY-L.clientY+i.y,c=e.touches?"translate3d("+a+"px,"+s+"px,0)":"translate("+a+"px,"+s+"px)";if(!t.active){if(o&&nt(et(r.clientX-this._lastX),et(r.clientY-this._lastY))<o)return;this._dragStarted()}this._appendGhost(),U=!0,F=r,l(S,"webkitTransform",c),l(S,"mozTransform",c),l(S,"msTransform",c),l(S,"transform",c),e.preventDefault()}},_appendGhost:function(){if(!S){var t,e=w.getBoundingClientRect(),n=l(w),o=this.options;s(S=w.cloneNode(!0),o.ghostClass,!1),s(S,o.fallbackClass,!0),s(S,o.dragClass,!0),l(S,"top",e.top-G(n.marginTop,10)),l(S,"left",e.left-G(n.marginLeft,10)),l(S,"width",e.width),l(S,"height",e.height),l(S,"opacity","0.8"),l(S,"position","fixed"),l(S,"zIndex","100000"),l(S,"pointerEvents","none"),o.fallbackOnBody&&z.body.appendChild(S)||E.appendChild(S),t=S.getBoundingClientRect(),l(S,"width",2*e.width-t.width),l(S,"height",2*e.height-t.height)}},_onDragStart:function(t,e){var n=t.dataTransfer,o=this.options;this._offUpEvents(),R.checkPull(this,this,w,t)&&((C=y(w)).draggable=!1,C.style["will-change"]="",l(C,"display","none"),s(C,this.options.chosenClass,!1),E.insertBefore(C,w),d(this,E,"clone",w)),s(w,o.dragClass,!0),e?("touch"===e?(r(z,"touchmove",this._onTouchMove),r(z,"touchend",this._onDrop),r(z,"touchcancel",this._onDrop),r(z,"pointermove",this._onTouchMove),r(z,"pointerup",this._onDrop)):(r(z,"mousemove",this._onTouchMove),r(z,"mouseup",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,50)):(n&&(n.effectAllowed="move",o.setData&&o.setData.call(this,n,w)),r(z,"drop",this),setTimeout(this._dragStarted,0))},_onDragOver:function(o){var i,r,a,s,c=this.el,d=this.options,u=d.group,g=t.active,v=R===u,m=!1,b=d.sort;if(void 0!==o.preventDefault&&(o.preventDefault(),!d.dragoverBubble&&o.stopPropagation()),!w.animated&&(U=!0,g&&!d.disabled&&(v?b||(s=!E.contains(w)):I===this||(g.lastPullMode=R.checkPull(this,g,w,o))&&u.checkPut(this,g,w,o))&&(void 0===o.rootEl||o.rootEl===this.el))){if(rt(o,d,this.el),tt)return;if(i=n(o.target,d.draggable,c),r=w.getBoundingClientRect(),I!==this&&(I=this,m=!0),s)return e(g,!0),T=E,void(C||x?E.insertBefore(w,C||x):b||E.appendChild(w));if(0===c.children.length||c.children[0]===S||c===o.target&&p(c,o)){if(0!==c.children.length&&c.children[0]!==S&&c===o.target&&(i=c.lastElementChild),i){if(i.animated)return;a=i.getBoundingClientRect()}e(g,v),!1!==h(E,c,w,r,i,a,o)&&(w.contains(c)||(c.appendChild(w),T=c),this._animate(r,w),i&&this._animate(a,i))}else if(i&&!i.animated&&i!==w&&void 0!==i.parentNode[V]){O!==i&&(O=i,X=l(i),A=l(i.parentNode));var _=(a=i.getBoundingClientRect()).right-a.left,y=a.bottom-a.top,D=W.test(X.cssFloat+X.display)||"flex"==A.display&&0===A["flex-direction"].indexOf("row"),N=i.offsetWidth>w.offsetWidth,k=i.offsetHeight>w.offsetHeight,B=(D?(o.clientX-a.left)/_:(o.clientY-a.top)/y)>.5,Y=i.nextElementSibling,M=!1;if(D){var P=w.offsetTop,L=i.offsetTop;M=P===L?i.previousElementSibling===w&&!N||B&&N:i.previousElementSibling===w||w.previousElementSibling===i?(o.clientY-a.top)/y>.5:L>P}else m||(M=Y!==w&&!k||B&&k);var F=h(E,c,w,r,i,a,o,M);!1!==F&&(1!==F&&-1!==F||(M=1===F),tt=!0,setTimeout(f,30),e(g,v),w.contains(c)||(M&&!Y?c.appendChild(w):i.parentNode.insertBefore(w,M?Y:i)),T=w.parentNode,this._animate(r,w),this._animate(a,i))}}},_animate:function(t,e){var n=this.options.animation;if(n){var o=e.getBoundingClientRect();1===t.nodeType&&(t=t.getBoundingClientRect()),l(e,"transition","none"),l(e,"transform","translate3d("+(t.left-o.left)+"px,"+(t.top-o.top)+"px,0)"),e.offsetWidth,l(e,"transition","all "+n+"ms"),l(e,"transform","translate3d(0,0,0)"),clearTimeout(e.animated),e.animated=setTimeout(function(){l(e,"transition",""),l(e,"transform",""),e.animated=!1},n)}},_offUpEvents:function(){var t=this.el.ownerDocument;a(z,"touchmove",this._onTouchMove),a(z,"pointermove",this._onTouchMove),a(t,"mouseup",this._onDrop),a(t,"touchend",this._onDrop),a(t,"pointerup",this._onDrop),a(t,"touchcancel",this._onDrop),a(t,"pointercancel",this._onDrop),a(t,"selectstart",this)},_onDrop:function(e){var n=this.el,o=this.options;clearInterval(this._loopId),clearInterval(j.pid),clearTimeout(this._dragStartTimer),a(z,"mousemove",this._onTouchMove),this.nativeDraggable&&(a(z,"drop",this),a(n,"dragstart",this._onDragStart)),this._offUpEvents(),e&&(U&&(e.preventDefault(),!o.dropBubble&&e.stopPropagation()),S&&S.parentNode&&S.parentNode.removeChild(S),E!==T&&"clone"===t.active.lastPullMode||C&&C.parentNode&&C.parentNode.removeChild(C),w&&(this.nativeDraggable&&a(w,"dragend",this),u(w),w.style["will-change"]="",s(w,this.options.ghostClass,!1),s(w,this.options.chosenClass,!1),d(this,E,"unchoose",w,E,M),E!==T?(P=v(w,o.draggable))>=0&&(d(null,T,"add",w,E,M,P),d(this,E,"remove",w,E,M,P),d(null,T,"sort",w,E,M,P),d(this,E,"sort",w,E,M,P)):w.nextSibling!==x&&(P=v(w,o.draggable))>=0&&(d(this,E,"update",w,E,M,P),d(this,E,"sort",w,E,M,P)),t.active&&(null!=P&&-1!==P||(P=M),d(this,E,"end",w,E,M,P),this.save()))),this._nulling()},_nulling:function(){E=w=T=S=x=C=N=k=B=L=F=U=P=O=X=I=R=t.active=null,ot.forEach(function(t){t.checked=!0}),ot.length=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragover":case"dragenter":w&&(this._onDragOver(t),i(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],o=this.el.children,i=0,r=o.length,a=this.options;i<r;i++)n(t=o[i],a.draggable,this.el)&&e.push(t.getAttribute(a.dataIdAttr)||g(t));return e},sort:function(t){var e={},o=this.el;this.toArray().forEach(function(t,i){var r=o.children[i];n(r,this.options.draggable,o)&&(e[t]=r)},this),t.forEach(function(t){e[t]&&(o.removeChild(e[t]),o.appendChild(e[t]))})},save:function(){var t=this.options.store;t&&t.set(this)},closest:function(t,e){return n(t,e||this.options.draggable,this.el)},option:function(t,e){var n=this.options;if(void 0===e)return n[t];n[t]=e,"group"===t&&at(n)},destroy:function(){var t=this.el;t[V]=null,a(t,"mousedown",this._onTapStart),a(t,"touchstart",this._onTapStart),a(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(a(t,"dragover",this),a(t,"dragenter",this)),Array.prototype.forEach.call(t.querySelectorAll("[draggable]"),function(t){t.removeAttribute("draggable")}),it.splice(it.indexOf(this._onDragOver),1),this._onDrop(),this.el=t=null}},r(z,"touchmove",function(e){t.active&&e.preventDefault()});try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){J={capture:!1,passive:!1}}}))}catch(t){}return t.utils={on:r,off:a,css:l,find:c,is:function(t,e){return!!n(t,e,t)},extend:_,throttle:b,closest:n,toggleClass:s,clone:y,index:v},t.create=function(e,n){return new t(e,n)},t.version="1.6.0",t});</script><dom-module id="sortable-js" assetpath="../../bower_components/polymer-sortablejs/"><template><content></content></template></dom-module><script>"use strict";Polymer({is:"sortable-js",properties:{group:{type:String,value:function(){return Math.random()},observer:"groupChanged"},sort:{type:Boolean,value:!0,observer:"sortChanged"},disabled:{type:Boolean,value:!1,observer:"disabledChanged"},store:{type:Object,value:null,observer:"storeChanged"},handle:{type:String,value:null,observer:"handleChanged"},scrollSensitivity:{type:Number,value:30,observer:"scrollSensitivityChanged"},scrollSpeed:{type:Number,value:10,observer:"scrollSpeedChanged"},ghostClass:{type:String,value:"sortable-ghost",observer:"ghostClassChanged"},chosenClass:{type:String,value:"sortable-chosen",observer:"chosenClassChanged"},ignore:{type:String,value:"a, img",observer:"ignoreChanged"},filter:{type:Object,value:null,observer:"filterChanged"},animation:{type:Number,value:0,observer:"animationChanged"},dropBubble:{type:Boolean,value:!1,observer:"dropBubbleChanged"},dragoverBubble:{type:Boolean,value:!1,observer:"dragoverBubbleChanged"},dataIdAttr:{type:String,value:"data-id",observer:"dataIdAttrChanged"},delay:{type:Number,value:0,observer:"delayChanged"},forceFallback:{type:Boolean,value:!1,observer:"forceFallbackChanged"},fallbackClass:{type:String,value:"sortable-fallback",observer:"fallbackClassChanged"},fallbackOnBody:{type:Boolean,value:!1,observer:"fallbackOnBodyChanged"},draggable:{},scroll:{}},created:function(){Object.defineProperties(this,{draggable:{get:function(){return this._draggable||this.getAttribute("draggable")||">*"},set:function(e){this._draggable=e,this.draggableChanged(e)}},scroll:{get:function(){return this._scroll||JSON.parse(this.getAttribute("scroll")||"true")},set:function(e){this._scroll=e,this.scrollChanged(e)}}})},attached:function(){this.initialize()},detached:function(){this.destroy()},initialize:function(){var e=this.querySelectorAll("template[is='dom-repeat']"),t=e[e.length-1],o={};Object.keys(this.properties).forEach(function(e){o[e]=this[e]}.bind(this));var a=this,s={onUpdate:function(e){t&&t.splice("items",e.newIndex,0,t.splice("items",e.oldIndex,1)[0]),a.fire("update",e)},onAdd:function(e){if(t){var o=e.from.querySelectorAll("template[is='dom-repeat']"),s=o[o.length-1].items[e.oldIndex];t.splice("items",e.newIndex,0,s)}a.fire("add",e)},onRemove:function(e){t&&t.splice("items",e.oldIndex,1)[0],a.fire("remove",e)},onChoose:function(e){a.fire("choose",e)},onStart:function(e){a.fire("start",e)},onEnd:function(e){a.fire("end",e)},onSort:function(e){a.fire("sort",e)},onFilter:function(e){a.fire("filter",e)},onMove:function(e){a.fire("move",e)},onClone:function(e){a.fire("clone",e)}};Object.keys(s).forEach(function(e){o[e]=s[e]}),this.sortable=Sortable.create(this,o)},destroy:function(){this.sortable&&this.sortable.destroy()},groupChanged:function(e){this.sortable&&this.sortable.option("group",e)},sortChanged:function(e){this.sortable&&this.sortable.option("sort",e)},disabledChanged:function(e){this.sortable&&this.sortable.option("disabled",e)},storeChanged:function(e){this.sortable&&this.sortable.option("store",e)},handleChanged:function(e){this.sortable&&this.sortable.option("handle",e)},scrollChanged:function(e){this.sortable&&this.sortable.option("scroll",e)},scrollSensitivityChanged:function(e){this.sortable&&this.sortable.option("scrollSensitivity",e)},scrollSpeedChanged:function(e){this.sortable&&this.sortable.option("scrollSpeed",e)},draggableChanged:function(e){this.sortable&&this.sortable.option("draggable",e)},ghostClassChanged:function(e){this.sortable&&this.sortable.option("ghostClass",e)},chosenClassChanged:function(e){this.sortable&&this.sortable.option("chosenClass",e)},ignoreChanged:function(e){this.sortable&&this.sortable.option("ignore",e)},filterChanged:function(e){this.sortable&&this.sortable.option("filter",e)},animationChanged:function(e){this.sortable&&this.sortable.option("animation",e)},dropBubbleChanged:function(e){this.sortable&&this.sortable.option("dropBubble",e)},dragoverBubbleChanged:function(e){this.sortable&&this.sortable.option("dragoverBubble",e)},dataIdAttrChanged:function(e){this.sortable&&this.sortable.option("dataIdAttr",e)},delayChanged:function(e){this.sortable&&this.sortable.option("delay",e)},forceFallbackChanged:function(e){this.sortable&&this.sortable.option("forceFallback",e)},fallbackClassChanged:function(e){this.sortable&&this.sortable.option("fallbackClass",e)},fallbackOnBodyChanged:function(e){this.sortable&&this.sortable.option("fallbackOnBody",e)}});</script><dom-module id="ha-form-style"><template><style>.form-group{@apply (--layout-horizontal);@apply (--layout-center);padding:8px 16px;}.form-group label{@apply (--layout-flex-2);}.form-group .form-control{@apply (--layout-flex-1);}.form-group.vertical{@apply (--layout-vertical);@apply (--layout-start);}paper-dropdown-menu.form-control{margin:-9px 0;}</style></template></dom-module><dom-module id="ha-form-group" assetpath="group/"><template><style include="iron-flex ha-style ha-form-style">.entities-header{@apply (--layout-horizontal);@apply (--layout-justified);@apply (--layout-center);width:100%;}.drag-handle{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab;}.sortable-chosen .drag-handle, .sortable-ghost{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing;}sortable-js{width:100%;}.entity-row{@apply (--layout-horizontal);@apply (--layout-center);padding:4px 0;border-top:1px solid rgba(0, 0, 0, .12);}.entity-row:first-child{border-top:1px solid rgba(0, 0, 0, 0);}.entity-row.sortable-chosen{background-color:var(--paper-grey-200);border-top:1px solid rgba(0, 0, 0, 0);}.entity-row .unknown{padding-left:56px;}.entity-row paper-icon-button{visibility:hidden;}.entity-row:not(.sortable-chosen):hover paper-icon-button{visibility:visible;}</style><div class="form-group"><paper-input class="form-control flex" label="Name" value="{{entityName}}"></paper-input></div><div class="form-group"><label>Type</label><paper-radio-group selected="{{entityType}}" class="form-control"><paper-radio-button name="group">Group</paper-radio-button><paper-radio-button name="view">View</paper-radio-button></paper-radio-group></div><div class="form-group vertical entities"><div class="entities-header"><label>Entities (drag to reorder):</label></div><sortable-js class="form-control" on-choose="handleRowChosen" handle=".drag-handle"><template is="dom-repeat" items="{{entityChildren}}"><div class="entity-row"><iron-icon icon="mdi:drag-vertical" class="drag-handle"></iron-icon><template is="dom-if" if="[[!item.state]]"><div class="unknown flex">Unknown entity [[item.entity_id]]</div></template><template is="dom-if" if="[[item.state]]" restamp=""><state-info state-obj="[[item]]" class="flex"></state-info></template></div></template></sortable-js></div></template></dom-module><script>Polymer({is:"ha-form-group",properties:{hass:{type:Object},entity:{type:Object},entityName:{type:String,value:""},entityType:{type:String},entityChildren:{type:Object}},handleRowChosen:function(t){t.detail&&window.navigator.vibrate&&window.navigator.vibrate(50)},loadEntity:function(t){var i=this.hass.states;return this.entity=t,this.entityName=t.attributes.friendly_name||"",this.entityType=t.attributes.view?"view":"group",this.entityChildren=t.attributes.entity_id.map(function(t){return i[t]||{state:!1,entity_id:t,attributes:{}}}),Promise.resolve()},saveEntity:function(){var t={name:this.entityName,view:"view"===this.entityType,entities:this.entityChildren.map(function(t){return t.entity_id})},i=this.entity.entity_id.split(".")[1];return this.hass.callApi("POST","config/group/config/"+i,t)}});</script><dom-module id="ha-config-section-group" assetpath="group/"><template><ha-config-section is-wide="[[isWide]]"><span slot="header">Groups & Views</span> <span slot="introduction">Use groups to organize your entities and make Home Assistant really your own.<br><br>Got more groups than you can handle? Create views to manage your groups.</span><ha-entity-config hass="[[hass]]" label="Group" entities="[[entities]]" config="[[entityConfig]]"></ha-entity-config></ha-config-section></template></dom-module><script>Polymer({is:"ha-config-section-group",properties:{hass:{type:Object},isWide:{type:Boolean,value:!1},entities:{type:Array,computed:"computeEntities(hass)"},entityConfig:{type:Object,value:{component:"ha-form-group",computeSelectCaption:function(t){return window.hassUtil.computeStateName(t)+(t.attributes.view?" (view)":"")}}}},computeEntities:function(t){return Object.keys(t.states).map(function(e){return t.states[e]}).filter(function(t){return"group"===window.hassUtil.computeDomain(t)&&!t.attributes.auto}).sort(window.hassUtil.sortByName)}});</script><dom-module id="ha-config-section-hassbian" assetpath="hassbian/"><template><style include="iron-flex ha-style">.header{font-size:16px;margin-bottom:1em;}.header .status{font-size:14px;float:right;}.card-actions paper-button{color:var(--default-primary-color);font-weight:500;}</style><ha-config-section is-wide="[[isWide]]"><span slot="header">Bring Hassbian to the next level</span> <span slot="introduction">Discover exciting add-ons to enhance your Home Assistant installation. Add an MQTT server or control a connected TV via HDMI-CEC.</span><template is="dom-if" if="[[suiteStatus]]"><template is="dom-repeat" items="[[computeSuiteKeys(suiteStatus)]]" as="suiteKey"><paper-card><div class="card-content"><div class="header">[[computeTitle(suiteKey)]] <span class="status">[[computeSuiteStatus(suiteStatus, suiteKey)]]</span></div>[[computeSuiteDescription(suiteStatus, suiteKey)]]</div><div class="card-actions"><paper-button on-tap="suiteMoreInfoTapped">LEARN MORE</paper-button><template is="dom-if" if="[[computeShowInstall(suiteStatus, suiteKey)]]"><paper-button on-tap="suiteActionTapped">INSTALL</paper-button></template></div></paper-card></template></template></ha-config-section></template></dom-module><script>Polymer({is:"ha-config-section-hassbian",properties:{hass:{type:Object},isWide:{type:Boolean},suiteStatus:{type:Object,value:null}},updateStatus:function(){this.hass.callApi("GET","config/hassbian/suites").then(function(t){this.suiteStatus=t;for(var e=!1,s=Object.keys(t),i=0;i<s.length;i++)if("installing"===t[s[i]].state){e=!0;break}e&&this.async(this.updateStatus,5e3)}.bind(this))},attached:function(){this.updateStatus=this.updateStatus.bind(this),this.updateStatus()},computeSuiteKeys:function(t){return Object.keys(t).sort(function(e,s){var i="installing"===t[e].state,n="installing"===t[s].state;if(i&&n);else{if(i)return-1;if(n)return 1}return e<s?-1:e>s?1:0})},computeSuiteDescription:function(t,e){return t[e].description},computeTitle:function(t){return t.substr(0,1).toUpperCase()+t.substr(1)},computeSuiteStatus:function(t,e){var s=t[e].state.replace(/_/," ");return s.substr(0,1).toUpperCase()+s.substr(1)},computeShowStatus:function(t,e){var s=t[e].state;return"installing"!==s&&"not_installed"!==s},computeShowInstall:function(t,e){return"not_installed"===t[e].state},suiteMoreInfoTapped:function(){},suiteActionTapped:function(){this.hass.callApi("POST","config/hassbian/suites/openzwave/install").then(this.updateStatus)}});</script><dom-module id="ha-form-zwave-device" assetpath="z-wave/"><template><style include="iron-flex ha-style ha-form-style"></style><div class="form-group"><paper-checkbox checked="{{entityIgnored}}" class="form-control">Exclude from Home Assistant</paper-checkbox></div><div class="form-group"><paper-dropdown-menu class="form-control flex" label="Polling intensity" disabled="[[entityIgnored]]"><paper-listbox slot="dropdown-content" selected="{{entityPollingIntensity}}"><paper-item>Do not poll (0)</paper-item><paper-item>Poll every time (1)</paper-item><paper-item>Poll every other time (2)</paper-item></paper-listbox></paper-dropdown-menu></div></template></dom-module><script>Polymer({is:"ha-form-zwave-device",properties:{hass:{type:Object},entity:{type:Object},entityIgnored:{type:Boolean},entityPollingIntensity:{type:Number}},loadEntity:function(t){this.entity=t;var i=this;return this.hass.callApi("GET","config/zwave/device_config/"+t.entity_id).then(function(t){i.entityIgnored=t.ignored||!1,i.entityPollingIntensity=t.polling_intensity||0})},saveEntity:function(){var t={ignored:this.entityIgnored,polling_intensity:this.entityPollingIntensity};return this.hass.callApi("POST","config/zwave/device_config/"+this.entity.entity_id,t)}});</script><dom-module id="ha-config-section-zwave" assetpath="z-wave/"><template><ha-config-section is-wide="[[isWide]]"><span slot="header">Z-Wave</span> <span slot="introduction">Z-Wave devices contain a lot of options. These controls will allow you to get into the nitty gritty details.</span><ha-entity-config hass="[[hass]]" entities="[[entities]]" config="[[entityConfig]]"></ha-entity-config></ha-config-section></template></dom-module><script>Polymer({is:"ha-config-section-zwave",properties:{hass:{type:Object},isWide:{type:Boolean,value:!1},entities:{type:Array,computed:"computeEntities(hass)"},entityConfig:{type:Object,value:{component:"ha-form-zwave-device",computeSelectCaption:function(t){return window.hassUtil.computeStateName(t)+" ("+window.hassUtil.computeDomain(t)+")"}}}},computeEntities:function(t){return Object.keys(t.states).map(function(e){return t.states[e]}).filter(function(t){return!t.attributes.hidden&&"node_id"in t.attributes}).sort(window.hassUtil.sortByName)}});</script></div><dom-module id="ha-panel-config"><template><style include="iron-flex ha-style">.content{padding-bottom:32px;}.border{margin:32px auto 0;border-bottom:1px solid rgba(0, 0, 0, 0.12);max-width:1040px;}.narrow .border{max-width:640px;}</style><iron-media-query query="(min-width: 1040px)" query-matches="{{wide}}"></iron-media-query><iron-media-query query="(min-width: 1296px)" query-matches="{{wideSidebar}}"></iron-media-query><app-header-layout has-scrolling-region=""><app-header slot="header" fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Configuration</div></app-toolbar></app-header><div class$="[[computeClasses(isWide)]]"><ha-config-section-group is-wide="[[isWide]]" hass="[[hass]]"></ha-config-section-group><ha-config-section-core is-wide="[[isWide]]" hass="[[hass]]"></ha-config-section-core><template is="dom-if" if="[[computeIsHassbianLoaded(hass)]]"><div class="border"></div><ha-config-section-hassbian is-wide="[[isWide]]" hass="[[hass]]"></ha-config-section-hassbian></template><template is="dom-if" if="[[computeIsZwaveLoaded(hass)]]"><div class="border"></div><ha-config-section-zwave is-wide="[[isWide]]" hass="[[hass]]"></ha-config-section-zwave></template></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-config",properties:{hass:{type:Object},narrow:{type:Boolean},showMenu:{type:Boolean,value:!1},wide:{type:Boolean},wideSidebar:{type:Boolean},isWide:{type:Boolean,computed:"computeIsWide(showMenu, wideSidebar, wide)"}},computeIsWide:function(e,o,n){return e?o:n},computeClasses:function(e){return e?"content":"content narrow"},computeIsHassbianLoaded:function(e){return window.hassUtil.isComponentLoaded(e,"config.hassbian")},computeIsZwaveLoaded:function(e){return window.hassUtil.isComponentLoaded(e,"config.zwave")}});</script></body></html> \ No newline at end of file +<html><head></head><body><div hidden="" by-polymer-bundler=""><dom-module id="ha-config-section-core" assetpath="core/"><template><style include="iron-flex ha-style">.validate-container{@apply (--layout-vertical);@apply (--layout-center-center);height:140px;}.validate-result{color:var(--google-green-500);font-weight:500;margin-bottom:1em;}.config-invalid{margin:1em 0;}.config-invalid .text{color:var(--google-red-500);font-weight:500;}.config-invalid paper-button{float:right;}.validate-log{white-space:pre-wrap;}</style><ha-config-section is-wide="[[isWide]]"><span slot="header">Server Management</span> <span slot="introduction">Changing your configuration can be a tiresome process. We know. This section will try to make your life a little bit easier.</span><paper-card heading="Configuration Validation"><div class="card-content">Validate your configuration if you recently made some changes to your configuration and want to make sure that it is all valid.<template is="dom-if" if="[[!validateLog]]"><div class="validate-container"><template is="dom-if" if="[[!validating]]"><div class="validate-result" id="result">[[validateResult]]</div><paper-button raised="" on-tap="validateConfig">check config</paper-button></template><template is="dom-if" if="[[validating]]"><paper-spinner active=""></paper-spinner></template></div></template><template is="dom-if" if="[[validateLog]]"><div class="config-invalid"><span class="text">Configuration invalid.</span><paper-button raised="" on-tap="validateConfig">check config</paper-button></div><div id="configLog" class="validate-log">[[validateLog]]</div></template></div></paper-card><paper-card heading="Configuration Reloading"><div class="card-content">Some parts of Home Assistant can reload without requiring a restart. Hitting reload will unload their current configuration and load the new one.</div><div class="card-actions"><ha-call-service-button hass="[[hass]]" domain="homeassistant" service="reload_core_config">Reload Core</ha-call-service-button><ha-call-service-button hass="[[hass]]" domain="group" service="reload" hidden$="[[!groupLoaded(hass)]]">Reload Groups</ha-call-service-button><ha-call-service-button hass="[[hass]]" domain="automation" service="reload" hidden$="[[!automationLoaded(hass)]]">Reload Automation</ha-call-service-button><ha-call-service-button hass="[[hass]]" domain="script" service="reload" hidden$="[[!scriptLoaded(hass)]]">Reload Scripts</ha-call-service-button></div></paper-card><paper-card heading="Server Management"><div class="card-content">Control your Home Assistant server… from Home Assistant.</div><div class="card-actions warning"><ha-call-service-button class="warning" hass="[[hass]]" domain="homeassistant" service="restart">Restart</ha-call-service-button><ha-call-service-button class="warning" hass="[[hass]]" domain="homeassistant" service="stop">Stop</ha-call-service-button></div></paper-card></ha-config-section></template></dom-module><script>Polymer({is:"ha-config-section-core",properties:{hass:{type:Object},isWide:{type:Boolean,value:!1},validating:{type:Boolean,value:!1},validateResult:{type:String,value:""},validateLog:{type:String,value:""}},groupLoaded:function(i){return window.hassUtil.isComponentLoaded(i,"group")},automationLoaded:function(i){return window.hassUtil.isComponentLoaded(i,"automation")},scriptLoaded:function(i){return window.hassUtil.isComponentLoaded(i,"script")},validateConfig:function(){this.validating=!0,this.validateLog="",this.validateResult="";var i=this;this.hass.callApi("POST","config/core/check_config").then(function(t){i.validating=!1,(i.configValid="valid"===t.result)?i.validateResult="Valid!":i.validateLog=t.errors})}});</script><dom-module id="ha-config-section-hassbian" assetpath="hassbian/"><template><style include="iron-flex ha-style">.header{font-size:16px;margin-bottom:1em;}.header .status{font-size:14px;float:right;}.card-actions paper-button{color:var(--default-primary-color);font-weight:500;}</style><ha-config-section is-wide="[[isWide]]"><span slot="header">Bring Hassbian to the next level</span> <span slot="introduction">Discover exciting add-ons to enhance your Home Assistant installation. Add an MQTT server or control a connected TV via HDMI-CEC.</span><template is="dom-if" if="[[suiteStatus]]"><template is="dom-repeat" items="[[computeSuiteKeys(suiteStatus)]]" as="suiteKey"><paper-card><div class="card-content"><div class="header">[[computeTitle(suiteKey)]] <span class="status">[[computeSuiteStatus(suiteStatus, suiteKey)]]</span></div>[[computeSuiteDescription(suiteStatus, suiteKey)]]</div><div class="card-actions"><paper-button on-tap="suiteMoreInfoTapped">LEARN MORE</paper-button><template is="dom-if" if="[[computeShowInstall(suiteStatus, suiteKey)]]"><paper-button on-tap="suiteActionTapped">INSTALL</paper-button></template></div></paper-card></template></template></ha-config-section></template></dom-module><script>Polymer({is:"ha-config-section-hassbian",properties:{hass:{type:Object},isWide:{type:Boolean},suiteStatus:{type:Object,value:null}},updateStatus:function(){this.hass.callApi("GET","config/hassbian/suites").then(function(t){this.suiteStatus=t;for(var e=!1,s=Object.keys(t),i=0;i<s.length;i++)if("installing"===t[s[i]].state){e=!0;break}e&&this.async(this.updateStatus,5e3)}.bind(this))},attached:function(){this.updateStatus=this.updateStatus.bind(this),this.updateStatus()},computeSuiteKeys:function(t){return Object.keys(t).sort(function(e,s){var i="installing"===t[e].state,n="installing"===t[s].state;if(i&&n);else{if(i)return-1;if(n)return 1}return e<s?-1:e>s?1:0})},computeSuiteDescription:function(t,e){return t[e].description},computeTitle:function(t){return t.substr(0,1).toUpperCase()+t.substr(1)},computeSuiteStatus:function(t,e){var s=t[e].state.replace(/_/," ");return s.substr(0,1).toUpperCase()+s.substr(1)},computeShowStatus:function(t,e){var s=t[e].state;return"installing"!==s&&"not_installed"!==s},computeShowInstall:function(t,e){return"not_installed"===t[e].state},suiteMoreInfoTapped:function(){},suiteActionTapped:function(){this.hass.callApi("POST","config/hassbian/suites/openzwave/install").then(this.updateStatus)}});</script><dom-module id="ha-entity-config"><template><style include="iron-flex ha-style">paper-card{display:block;}.device-picker{@apply (--layout-horizontal);padding-bottom:24px;}.form-placeholder{@apply (--layout-vertical);@apply (--layout-center-center);height:96px;}[hidden]:{display:none;};.card-actions{@apply (--layout-horizontal);@apply (--layout-justified);}</style><paper-card><div class="card-content"><div class="device-picker"><paper-dropdown-menu label="[[label]]" class="flex" disabled="[[!entities.length]]"><paper-listbox slot="dropdown-content" selected="{{selectedEntity}}"><template is="dom-repeat" items="[[entities]]" as="state"><paper-item>[[computeSelectCaption(state)]]</paper-item></template></paper-listbox></paper-dropdown-menu></div><div class="form-container"><template is="dom-if" if="[[computeShowPlaceholder(formState)]]"><div class="form-placeholder"><template is="dom-if" if="[[computeShowNoDevices(formState)]]">No entities found! :-(</template><template is="dom-if" if="[[computeShowSpinner(formState)]]"><paper-spinner active="" alt="[[formState]]"></paper-spinner>[[formState]]</template></div></template><div hidden$="[[!computeShowForm(formState)]]" id="form"></div></div></div><div class="card-actions"><paper-button on-tap="saveEntity" disabled="[[computeShowPlaceholder(formState)]]">SAVE</paper-button><template is="dom-if" if="[[allowDelete]]"><paper-button class="warning" on-tap="deleteEntity" disabled="[[computeShowPlaceholder(formState)]]">DELETE</paper-button></template></div></paper-card></template></dom-module><script>Polymer({is:"ha-entity-config",properties:{hass:{type:Object,observer:"hassChanged"},label:{type:String,value:"Device"},entities:{type:Array,observer:"entitiesChanged"},allowDelete:{type:Boolean,value:!1},selectedEntity:{type:Number,value:-1,observer:"entityChanged"},formState:{type:String,value:"no-devices"},config:{type:Object}},attached:function(){this.formEl=document.createElement(this.config.component),this.formEl.hass=this.hass,this.$.form.appendChild(this.formEl),this.entityChanged(this.selectedEntity)},computeSelectCaption:function(t){return this.config.computeSelectCaption?this.config.computeSelectCaption(t):window.hassUtil.computeStateName(t)},computeShowNoDevices:function(t){return"no-devices"===t},computeShowSpinner:function(t){return"loading"===t||"saving"===t},computeShowPlaceholder:function(t){return"editing"!==t},computeShowForm:function(t){return"editing"===t},hassChanged:function(t){this.formEl&&(this.formEl.hass=t)},entitiesChanged:function(t,e){if(0!==t.length)if(e){var i=e[this.selectedEntity].entity_id,n=t.findIndex(function(t){return t.entity_id===i});-1===n?this.selectedEntity=0:n!==this.selectedEntity&&(this.selectedEntity=n)}else this.selectedEntity=0;else this.formState="no-devices"},entityChanged:function(t){if(this.entities&&this.formEl){var e=this.entities[t];this.formState="loading";var i=this;this.formEl.loadEntity(e).then(function(){i.formState="editing"})}},saveEntity:function(){this.formState="saving";var t=this;this.formEl.saveEntity().then(function(){t.formState="editing"})}});</script><dom-module id="ha-form-style"><template><style>.form-group{@apply (--layout-horizontal);@apply (--layout-center);padding:8px 16px;}.form-group label{@apply (--layout-flex-2);}.form-group .form-control{@apply (--layout-flex-1);}.form-group.vertical{@apply (--layout-vertical);@apply (--layout-start);}paper-dropdown-menu.form-control{margin:-9px 0;}</style></template></dom-module><dom-module id="ha-form-zwave-device" assetpath="z-wave/"><template><style include="iron-flex ha-style ha-form-style"></style><div class="form-group"><paper-checkbox checked="{{entityIgnored}}" class="form-control">Exclude from Home Assistant</paper-checkbox></div><div class="form-group"><paper-dropdown-menu class="form-control flex" label="Polling intensity" disabled="[[entityIgnored]]"><paper-listbox slot="dropdown-content" selected="{{entityPollingIntensity}}"><paper-item>Do not poll (0)</paper-item><paper-item>Poll every time (1)</paper-item><paper-item>Poll every other time (2)</paper-item></paper-listbox></paper-dropdown-menu></div></template></dom-module><script>Polymer({is:"ha-form-zwave-device",properties:{hass:{type:Object},entity:{type:Object},entityIgnored:{type:Boolean},entityPollingIntensity:{type:Number}},loadEntity:function(t){this.entity=t;var i=this;return this.hass.callApi("GET","config/zwave/device_config/"+t.entity_id).then(function(t){i.entityIgnored=t.ignored||!1,i.entityPollingIntensity=t.polling_intensity||0})},saveEntity:function(){var t={ignored:this.entityIgnored,polling_intensity:this.entityPollingIntensity};return this.hass.callApi("POST","config/zwave/device_config/"+this.entity.entity_id,t)}});</script><dom-module id="ha-config-section-zwave" assetpath="z-wave/"><template><ha-config-section is-wide="[[isWide]]"><span slot="header">Z-Wave</span> <span slot="introduction">Z-Wave devices contain a lot of options. These controls will allow you to get into the nitty gritty details.</span><ha-entity-config hass="[[hass]]" entities="[[entities]]" config="[[entityConfig]]"></ha-entity-config></ha-config-section></template></dom-module><script>Polymer({is:"ha-config-section-zwave",properties:{hass:{type:Object},isWide:{type:Boolean,value:!1},entities:{type:Array,computed:"computeEntities(hass)"},entityConfig:{type:Object,value:{component:"ha-form-zwave-device",computeSelectCaption:function(t){return window.hassUtil.computeStateName(t)+" ("+window.hassUtil.computeDomain(t)+")"}}}},computeEntities:function(t){return Object.keys(t.states).map(function(e){return t.states[e]}).filter(function(t){return!t.attributes.hidden&&"node_id"in t.attributes}).sort(window.hassUtil.sortByName)}});</script></div><dom-module id="ha-panel-config"><template><style include="iron-flex ha-style">.content{padding-bottom:32px;}.border{margin:32px auto 0;border-bottom:1px solid rgba(0, 0, 0, 0.12);max-width:1040px;}.narrow .border{max-width:640px;}</style><iron-media-query query="(min-width: 1040px)" query-matches="{{wide}}"></iron-media-query><iron-media-query query="(min-width: 1296px)" query-matches="{{wideSidebar}}"></iron-media-query><app-header-layout has-scrolling-region=""><app-header slot="header" fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Configuration</div></app-toolbar></app-header><div class$="[[computeClasses(isWide)]]"><ha-config-section-core is-wide="[[isWide]]" hass="[[hass]]"></ha-config-section-core><template is="dom-if" if="[[computeIsHassbianLoaded(hass)]]"><div class="border"></div><ha-config-section-hassbian is-wide="[[isWide]]" hass="[[hass]]"></ha-config-section-hassbian></template><template is="dom-if" if="[[computeIsZwaveLoaded(hass)]]"><div class="border"></div><ha-config-section-zwave is-wide="[[isWide]]" hass="[[hass]]"></ha-config-section-zwave></template></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-config",properties:{hass:{type:Object},narrow:{type:Boolean},showMenu:{type:Boolean,value:!1},wide:{type:Boolean},wideSidebar:{type:Boolean},isWide:{type:Boolean,computed:"computeIsWide(showMenu, wideSidebar, wide)"}},computeIsWide:function(e,o,n){return e?o:n},computeClasses:function(e){return e?"content":"content narrow"},computeIsHassbianLoaded:function(e){return window.hassUtil.isComponentLoaded(e,"config.hassbian")},computeIsZwaveLoaded:function(e){return window.hassUtil.isComponentLoaded(e,"config.zwave")}});</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html.gz index 7325c68ccac6295aec5f673a61d70cb18d753626..c0775a559c9ce95012b6f3f68aba3dc323b30a19 100644 GIT binary patch literal 3784 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 literal 12564 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 diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index e033471390e..8e3e57b15c5 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -37,7 +37,7 @@ /* eslint-disable indent, no-unused-vars, no-multiple-empty-lines, max-nested-callbacks, space-before-function-paren, quotes, comma-spacing */ 'use strict'; -var precacheConfig = [["/","91486fe0099ad4d5d5a9b11cfdf70b7b"],["/Users/paulus/dev/python/home-assistant/homeassistant/components/frontend/www_static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["/Users/paulus/dev/python/home-assistant/homeassistant/components/frontend/www_static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["/Users/paulus/dev/python/home-assistant/homeassistant/components/frontend/www_static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["/Users/paulus/dev/python/home-assistant/homeassistant/components/frontend/www_static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["/Users/paulus/dev/python/home-assistant/homeassistant/components/frontend/www_static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["/Users/paulus/dev/python/home-assistant/homeassistant/components/frontend/www_static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["/Users/paulus/dev/python/home-assistant/homeassistant/components/frontend/www_static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["/frontend/panels/dev-event-d409e7ab537d9fe629126d122345279c.html","936814991f2a5e23d61d29f0d40f81b8"],["/frontend/panels/dev-info-b0e55eb657fd75f21aba2426ac0cedc0.html","1fa953b0224470f70d4e87bbe4dff191"],["/frontend/panels/dev-mqtt-94b222b013a98583842de3e72d5888c6.html","dc3ddfac58397feda97317358f0aecbb"],["/frontend/panels/dev-service-61b164e0c0964782a539cba7008bb716.html","86e4a07af018a9e020e3ab822c924a44"],["/frontend/panels/dev-state-7948d3dba058f31517d880df8ed0e857.html","ff8156bb1a52490fcc07466556fce0e1"],["/frontend/panels/dev-template-f47b6910d8e4880e22cc508ca452f9b6.html","9aa0675e01373c6bc2737438bb84a9ec"],["/frontend/panels/map-c2544fff3eedb487d44105cf94b335ec.html","113c5bf9a68a74c62e50cd354034e78b"],["/static/compatibility-1686167ff210e001f063f5c606b2e74b.js","6ee7b5e2dd82b510c3bd92f7e215988e"],["/static/core-2a7d01e45187c7d4635da05065b5e54e.js","90a0a8a6a6dd0ca41b16f40e7d23924d"],["/static/frontend-da3a65fd69361319864767a3ce0b4b9d.html","18b3bebc403a3b2a686c3d6f3482b1f6"],["/static/mdi-e91f61a039ed0a9936e7ee5360da3870.html","5e587bc82719b740a4f0798722a83aee"]]; +var precacheConfig = [["/","91486fe0099ad4d5d5a9b11cfdf70b7b"],["/frontend/panels/dev-event-d409e7ab537d9fe629126d122345279c.html","936814991f2a5e23d61d29f0d40f81b8"],["/frontend/panels/dev-info-b0e55eb657fd75f21aba2426ac0cedc0.html","1fa953b0224470f70d4e87bbe4dff191"],["/frontend/panels/dev-mqtt-94b222b013a98583842de3e72d5888c6.html","dc3ddfac58397feda97317358f0aecbb"],["/frontend/panels/dev-service-61b164e0c0964782a539cba7008bb716.html","86e4a07af018a9e020e3ab822c924a44"],["/frontend/panels/dev-state-7948d3dba058f31517d880df8ed0e857.html","ff8156bb1a52490fcc07466556fce0e1"],["/frontend/panels/dev-template-f47b6910d8e4880e22cc508ca452f9b6.html","9aa0675e01373c6bc2737438bb84a9ec"],["/frontend/panels/map-c2544fff3eedb487d44105cf94b335ec.html","113c5bf9a68a74c62e50cd354034e78b"],["/static/compatibility-1686167ff210e001f063f5c606b2e74b.js","6ee7b5e2dd82b510c3bd92f7e215988e"],["/static/core-2a7d01e45187c7d4635da05065b5e54e.js","90a0a8a6a6dd0ca41b16f40e7d23924d"],["/static/frontend-da3a65fd69361319864767a3ce0b4b9d.html","18b3bebc403a3b2a686c3d6f3482b1f6"],["/static/mdi-e91f61a039ed0a9936e7ee5360da3870.html","5e587bc82719b740a4f0798722a83aee"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"]]; var cacheName = 'sw-precache-v3--' + (self.registration ? self.registration.scope : ''); diff --git a/homeassistant/components/frontend/www_static/service_worker.js.gz b/homeassistant/components/frontend/www_static/service_worker.js.gz index 27397d1f46c07143c8f9e4f1f9c67066b1cc9780..ad9cd6b4422bc7867e326957e389e9885d6cefc0 100644 GIT binary patch literal 5138 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 AhyVZp literal 5191 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 B`L_T7 -- GitLab