From 7446e5b838d99929f66069f0025c8ef80a025733 Mon Sep 17 00:00:00 2001 From: eifinger Date: Tue, 22 Oct 2019 10:25:45 +0200 Subject: [PATCH 1/2] mini-graph-card v0.8.1 --- .../mini-graph-card-bundle.js.gz | Bin 23560 -> 23560 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/www/community/mini-graph-card/mini-graph-card-bundle.js.gz b/www/community/mini-graph-card/mini-graph-card-bundle.js.gz index 9d49d87eead791488ab9865b408782ceff8e1128..60048058ef1fa512c9a93158ef27b9a17f19e687 100644 GIT binary patch delta 18 ZcmeC!!Pv2bkzKx Date: Tue, 22 Oct 2019 10:26:22 +0200 Subject: [PATCH 2/2] hacs v0.15.9 --- custom_components/hacs/.translations/es.json | 3 + custom_components/hacs/.translations/ru.json | 2 +- custom_components/hacs/__init__.py | 1 + custom_components/hacs/const.py | 2 +- .../hacs/frontend/experimental/main.js | 938 ------------------ .../hacs/frontend/experimental/main.js.gz | Bin 14457 -> 14528 bytes custom_components/hacs/hacsbase/__init__.py | 7 +- 7 files changed, 9 insertions(+), 944 deletions(-) delete mode 100644 custom_components/hacs/frontend/experimental/main.js diff --git a/custom_components/hacs/.translations/es.json b/custom_components/hacs/.translations/es.json index 33d2eccc..dc936602 100644 --- a/custom_components/hacs/.translations/es.json +++ b/custom_components/hacs/.translations/es.json @@ -39,6 +39,9 @@ }, "title": "HACS (Home Assistant Community Store)" }, + "confirm": { + "delete": "¿Seguro que quieres eliminar \" {item} \"?" + }, "options": { "step": { "user": { diff --git a/custom_components/hacs/.translations/ru.json b/custom_components/hacs/.translations/ru.json index 18e690c7..d9ddbfcd 100644 --- a/custom_components/hacs/.translations/ru.json +++ b/custom_components/hacs/.translations/ru.json @@ -2,7 +2,7 @@ "common": { "appdaemon": "AppDaemon", "appdaemon_apps": "Приложения AppDaemon", - "background_task": "Выполняется фоновая задача, страница перезагрузится, когда все будет готово.", + "background_task": "Выполняется фоновая задача, страница перезагрузится по готовности.", "installed": "установлено", "integration": "Интеграция", "integrations": "Интеграции", diff --git a/custom_components/hacs/__init__.py b/custom_components/hacs/__init__.py index df182b44..ab688cfd 100644 --- a/custom_components/hacs/__init__.py +++ b/custom_components/hacs/__init__.py @@ -242,6 +242,7 @@ async def load_hacs_repository(hacs): repository.versions.installed = const.VERSION repository.status.new = False hacs.repo = repository.repository_object + hacs.data_repo = await hacs().github.get_repo("hacs/default") except ( AIOGitHubException, AIOGitHubRatelimit, diff --git a/custom_components/hacs/const.py b/custom_components/hacs/const.py index 83464e15..051201dc 100644 --- a/custom_components/hacs/const.py +++ b/custom_components/hacs/const.py @@ -1,7 +1,7 @@ """Constants for HACS""" NAME_LONG = "HACS (Home Assistant Community Store)" NAME_SHORT = "HACS" -VERSION = "0.15.7" +VERSION = "0.15.9" DOMAIN = "hacs" PROJECT_URL = "https://github.com/custom-components/hacs/" CUSTOM_UPDATER_LOCATIONS = [ diff --git a/custom_components/hacs/frontend/experimental/main.js b/custom_components/hacs/frontend/experimental/main.js deleted file mode 100644 index 83157736..00000000 --- a/custom_components/hacs/frontend/experimental/main.js +++ /dev/null @@ -1,938 +0,0 @@ -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -function t(t,e,o,s){var i,r=arguments.length,a=r<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,o):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,o,s);else for(var n=t.length-1;n>=0;n--)(i=t[n])&&(a=(r<3?i(a):r>3?i(e,o,a):i(e,o))||a);return r>3&&a&&Object.defineProperty(e,o,a),a -/** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */}const e=new WeakMap,o=t=>"function"==typeof t&&e.has(t),s=void 0!==window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,i=(t,e,o=null)=>{for(;e!==o;){const o=e.nextSibling;t.removeChild(e),e=o}},r={},a={},n=`{{lit-${String(Math.random()).slice(2)}}}`,p=`\x3c!--${n}--\x3e`,c=new RegExp(`${n}|${p}`),l="$lit$";class h{constructor(t,e){this.parts=[],this.element=e;const o=[],s=[],i=document.createTreeWalker(e.content,133,null,!1);let r=0,a=-1,p=0;const{strings:h,values:{length:u}}=t;for(;p0;){const e=h[p],o=y.exec(e)[2],s=o.toLowerCase()+l,i=t.getAttribute(s);t.removeAttribute(s);const r=i.split(c);this.parts.push({type:"attribute",index:a,name:o,strings:r}),p+=r.length-1}}"TEMPLATE"===t.tagName&&(s.push(t),i.currentNode=t.content)}else if(3===t.nodeType){const e=t.data;if(e.indexOf(n)>=0){const s=t.parentNode,i=e.split(c),r=i.length-1;for(let e=0;e{const o=t.length-e.length;return o>=0&&t.slice(o)===e},u=t=>-1!==t.index,m=()=>document.createComment(""),y=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/; -/** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */ -class g{constructor(t,e,o){this.__parts=[],this.template=t,this.processor=e,this.options=o}update(t){let e=0;for(const o of this.__parts)void 0!==o&&o.setValue(t[e]),e++;for(const t of this.__parts)void 0!==t&&t.commit()}_clone(){const t=s?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),e=[],o=this.template.parts,i=document.createTreeWalker(t,133,null,!1);let r,a=0,n=0,p=i.nextNode();for(;a-1||o)&&-1===t.indexOf("--\x3e",i+1);const r=y.exec(t);e+=null===r?t+(o?v:p):t.substr(0,r.index)+r[1]+r[2]+l+r[3]+n}return e+=this.strings[t]}getTemplateElement(){const t=document.createElement("template");return t.innerHTML=this.getHTML(),t}} -/** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */const _=t=>null===t||!("object"==typeof t||"function"==typeof t),b=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class w{constructor(t,e,o){this.dirty=!0,this.element=t,this.name=e,this.strings=o,this.parts=[];for(let t=0;tthis.handleEvent(t)}setValue(t){this.__pendingValue=t}commit(){for(;o(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=r,t(this)}if(this.__pendingValue===r)return;const t=this.__pendingValue,e=this.value,s=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),i=null!=t&&(null==e||s);s&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),i&&(this.__options=T(t),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=t,this.__pendingValue=r}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const T=t=>t&&(A?{capture:t.capture,passive:t.passive,once:t.once}:t.capture); -/** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */const z=new class{handleAttributeExpressions(t,e,o,s){const i=e[0];if("."===i){return new P(t,e.slice(1),o).parts}return"@"===i?[new C(t,e.slice(1),s.eventContext)]:"?"===i?[new $(t,e.slice(1),o)]:new w(t,e,o).parts}handleTextExpression(t){return new x(t)}}; -/** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */function N(t){let e=R.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},R.set(t.type,e));let o=e.stringsArray.get(t.strings);if(void 0!==o)return o;const s=t.strings.join(n);return void 0===(o=e.keyString.get(s))&&(o=new h(t,t.getTemplateElement()),e.keyString.set(s,o)),e.stringsArray.set(t.strings,o),o}const R=new Map,E=new WeakMap; -/** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */ -/** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */ -(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.1.2");const U=(t,...e)=>new f(t,e,"html",z),V=133; -/** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */function M(t,e){const{element:{content:o},parts:s}=t,i=document.createTreeWalker(o,V,null,!1);let r=q(s),a=s[r],n=-1,p=0;const c=[];let l=null;for(;i.nextNode();){n++;const t=i.currentNode;for(t.previousSibling===l&&(l=null),e.has(t)&&(c.push(t),null===l&&(l=t)),null!==l&&p++;void 0!==a&&a.index===n;)a.index=null!==l?-1:a.index-p,a=s[r=q(s,r)]}c.forEach(t=>t.parentNode.removeChild(t))}const O=t=>{let e=11===t.nodeType?0:1;const o=document.createTreeWalker(t,V,null,!1);for(;o.nextNode();)e++;return e},q=(t,e=-1)=>{for(let o=e+1;o`${t}--${e}`;let L=!0;void 0===window.ShadyCSS?L=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),L=!1);const j=t=>e=>{const o=I(e.type,t);let s=R.get(o);void 0===s&&(s={stringsArray:new WeakMap,keyString:new Map},R.set(o,s));let i=s.stringsArray.get(e.strings);if(void 0!==i)return i;const r=e.strings.join(n);if(void 0===(i=s.keyString.get(r))){const o=e.getTemplateElement();L&&window.ShadyCSS.prepareTemplateDom(o,t),i=new h(e,o),s.keyString.set(r,i)}return s.stringsArray.set(e.strings,i),i},D=["html","svg"],W=new Set,B=(t,e,o)=>{W.add(t);const s=o?o.element:document.createElement("template"),i=e.querySelectorAll("style"),{length:r}=i;if(0===r)return void window.ShadyCSS.prepareTemplateStyles(s,t);const a=document.createElement("style");for(let t=0;t{D.forEach(e=>{const o=R.get(I(e,t));void 0!==o&&o.keyString.forEach(t=>{const{element:{content:e}}=t,o=new Set;Array.from(e.querySelectorAll("style")).forEach(t=>{o.add(t)}),M(t,o)})})})(t);const n=s.content;o?function(t,e,o=null){const{element:{content:s},parts:i}=t;if(null==o)return void s.appendChild(e);const r=document.createTreeWalker(s,V,null,!1);let a=q(i),n=0,p=-1;for(;r.nextNode();){for(p++,r.currentNode===o&&(n=O(e),o.parentNode.insertBefore(e,o));-1!==a&&i[a].index===p;){if(n>0){for(;-1!==a;)i[a].index+=n,a=q(i,a);return}a=q(i,a)}}}(o,a,n.firstChild):n.insertBefore(a,n.firstChild),window.ShadyCSS.prepareTemplateStyles(s,t);const p=n.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==p)e.insertBefore(p.cloneNode(!0),e.firstChild);else if(o){n.insertBefore(a,n.firstChild);const t=new Set;t.add(a),M(o,t)}};window.JSCompiler_renameProperty=(t,e)=>t;const F={toAttribute(t,e){switch(e){case Boolean:return t?"":null;case Object:case Array:return null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){switch(e){case Boolean:return null!==t;case Number:return null===t?null:Number(t);case Object:case Array:return JSON.parse(t)}return t}},H=(t,e)=>e!==t&&(e==e||t==t),J={attribute:!0,type:String,converter:F,reflect:!1,hasChanged:H},G=Promise.resolve(!0),K=1,Q=4,X=8,Y=16,Z=32,tt="finalized";class et extends HTMLElement{constructor(){super(),this._updateState=0,this._instanceProperties=void 0,this._updatePromise=G,this._hasConnectedResolver=void 0,this._changedProperties=new Map,this._reflectingProperties=void 0,this.initialize()}static get observedAttributes(){this.finalize();const t=[];return this._classProperties.forEach((e,o)=>{const s=this._attributeNameForProperty(o,e);void 0!==s&&(this._attributeToPropertyMap.set(s,o),t.push(s))}),t}static _ensureClassProperties(){if(!this.hasOwnProperty(JSCompiler_renameProperty("_classProperties",this))){this._classProperties=new Map;const t=Object.getPrototypeOf(this)._classProperties;void 0!==t&&t.forEach((t,e)=>this._classProperties.set(e,t))}}static createProperty(t,e=J){if(this._ensureClassProperties(),this._classProperties.set(t,e),e.noAccessor||this.prototype.hasOwnProperty(t))return;const o="symbol"==typeof t?Symbol():`__${t}`;Object.defineProperty(this.prototype,t,{get(){return this[o]},set(e){const s=this[t];this[o]=e,this._requestUpdate(t,s)},configurable:!0,enumerable:!0})}static finalize(){const t=Object.getPrototypeOf(this);if(t.hasOwnProperty(tt)||t.finalize(),this[tt]=!0,this._ensureClassProperties(),this._attributeToPropertyMap=new Map,this.hasOwnProperty(JSCompiler_renameProperty("properties",this))){const t=this.properties,e=[...Object.getOwnPropertyNames(t),..."function"==typeof Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t):[]];for(const o of e)this.createProperty(o,t[o])}}static _attributeNameForProperty(t,e){const o=e.attribute;return!1===o?void 0:"string"==typeof o?o:"string"==typeof t?t.toLowerCase():void 0}static _valueHasChanged(t,e,o=H){return o(t,e)}static _propertyValueFromAttribute(t,e){const o=e.type,s=e.converter||F,i="function"==typeof s?s:s.fromAttribute;return i?i(t,o):t}static _propertyValueToAttribute(t,e){if(void 0===e.reflect)return;const o=e.type,s=e.converter;return(s&&s.toAttribute||F.toAttribute)(t,o)}initialize(){this._saveInstanceProperties(),this._requestUpdate()}_saveInstanceProperties(){this.constructor._classProperties.forEach((t,e)=>{if(this.hasOwnProperty(e)){const t=this[e];delete this[e],this._instanceProperties||(this._instanceProperties=new Map),this._instanceProperties.set(e,t)}})}_applyInstanceProperties(){this._instanceProperties.forEach((t,e)=>this[e]=t),this._instanceProperties=void 0}connectedCallback(){this._updateState=this._updateState|Z,this._hasConnectedResolver&&(this._hasConnectedResolver(),this._hasConnectedResolver=void 0)}disconnectedCallback(){}attributeChangedCallback(t,e,o){e!==o&&this._attributeToProperty(t,o)}_propertyToAttribute(t,e,o=J){const s=this.constructor,i=s._attributeNameForProperty(t,o);if(void 0!==i){const t=s._propertyValueToAttribute(e,o);if(void 0===t)return;this._updateState=this._updateState|X,null==t?this.removeAttribute(i):this.setAttribute(i,t),this._updateState=this._updateState&~X}}_attributeToProperty(t,e){if(this._updateState&X)return;const o=this.constructor,s=o._attributeToPropertyMap.get(t);if(void 0!==s){const t=o._classProperties.get(s)||J;this._updateState=this._updateState|Y,this[s]=o._propertyValueFromAttribute(e,t),this._updateState=this._updateState&~Y}}_requestUpdate(t,e){let o=!0;if(void 0!==t){const s=this.constructor,i=s._classProperties.get(t)||J;s._valueHasChanged(this[t],e,i.hasChanged)?(this._changedProperties.has(t)||this._changedProperties.set(t,e),!0!==i.reflect||this._updateState&Y||(void 0===this._reflectingProperties&&(this._reflectingProperties=new Map),this._reflectingProperties.set(t,i))):o=!1}!this._hasRequestedUpdate&&o&&this._enqueueUpdate()}requestUpdate(t,e){return this._requestUpdate(t,e),this.updateComplete}async _enqueueUpdate(){let t,e;this._updateState=this._updateState|Q;const o=this._updatePromise;this._updatePromise=new Promise((o,s)=>{t=o,e=s});try{await o}catch(t){}this._hasConnected||await new Promise(t=>this._hasConnectedResolver=t);try{const t=this.performUpdate();null!=t&&await t}catch(t){e(t)}t(!this._hasRequestedUpdate)}get _hasConnected(){return this._updateState&Z}get _hasRequestedUpdate(){return this._updateState&Q}get hasUpdated(){return this._updateState&K}performUpdate(){this._instanceProperties&&this._applyInstanceProperties();let t=!1;const e=this._changedProperties;try{(t=this.shouldUpdate(e))&&this.update(e)}catch(e){throw t=!1,e}finally{this._markUpdated()}t&&(this._updateState&K||(this._updateState=this._updateState|K,this.firstUpdated(e)),this.updated(e))}_markUpdated(){this._changedProperties=new Map,this._updateState=this._updateState&~Q}get updateComplete(){return this._getUpdateComplete()}_getUpdateComplete(){return this._updatePromise}shouldUpdate(t){return!0}update(t){void 0!==this._reflectingProperties&&this._reflectingProperties.size>0&&(this._reflectingProperties.forEach((t,e)=>this._propertyToAttribute(e,this[e],t)),this._reflectingProperties=void 0)}updated(t){}firstUpdated(t){}}et[tt]=!0; -/** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */ -const ot=t=>e=>"function"==typeof e?((t,e)=>(window.customElements.define(t,e),e))(t,e):((t,e)=>{const{kind:o,elements:s}=e;return{kind:o,elements:s,finisher(e){window.customElements.define(t,e)}}})(t,e),st=(t,e)=>"method"!==e.kind||!e.descriptor||"value"in e.descriptor?{kind:"field",key:Symbol(),placement:"own",descriptor:{},initializer(){"function"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(o){o.createProperty(e.key,t)}}:Object.assign({},e,{finisher(o){o.createProperty(e.key,t)}}),it=(t,e,o)=>{e.constructor.createProperty(o,t)};function rt(t){return(e,o)=>void 0!==o?it(t,e,o):st(t,e)} -/** -@license -Copyright (c) 2019 The Polymer Project Authors. All rights reserved. -This code may only be used under the BSD style license found at -http://polymer.github.io/LICENSE.txt The complete set of authors may be found at -http://polymer.github.io/AUTHORS.txt The complete set of contributors may be -found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as -part of the polymer project is also subject to an additional IP rights grant -found at http://polymer.github.io/PATENTS.txt -*/const at="adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,nt=Symbol();class pt{constructor(t,e){if(e!==nt)throw new Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){return void 0===this._styleSheet&&(at?(this._styleSheet=new CSSStyleSheet,this._styleSheet.replaceSync(this.cssText)):this._styleSheet=null),this._styleSheet}toString(){return this.cssText}}const ct=(t,...e)=>{const o=e.reduce((e,o,s)=>e+(t=>{if(t instanceof pt)return t.cssText;if("number"==typeof t)return t;throw new Error(`Value passed to 'css' function must be a 'css' function result: ${t}. Use 'unsafeCSS' to pass non-literal values, but\n take care to ensure page security.`)})(o)+t[s+1],t[0]);return new pt(o,nt)}; -/** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */ -(window.litElementVersions||(window.litElementVersions=[])).push("2.2.1");const lt=t=>t.flat?t.flat(1/0):function t(e,o=[]){for(let s=0,i=e.length;s(t.add(e),t),new Set).forEach(t=>e.unshift(t))}else t&&e.push(t);return e}initialize(){super.initialize(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const t=this.constructor._styles;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?at?this.renderRoot.adoptedStyleSheets=t.map(t=>t.styleSheet):this._needsShimAdoptedStyleSheets=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map(t=>t.cssText),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){super.update(t);const e=this.render();e instanceof f&&this.constructor.render(e,this.renderRoot,{scopeName:this.localName,eventContext:this}),this._needsShimAdoptedStyleSheets&&(this._needsShimAdoptedStyleSheets=!1,this.constructor._styles.forEach(t=>{const e=document.createElement("style");e.textContent=t.cssText,this.renderRoot.appendChild(e)}))}render(){}}ht.finalized=!0,ht.render=(t,e,o)=>{if(!o||"object"!=typeof o||!o.scopeName)throw new Error("The `scopeName` option is required.");const s=o.scopeName,r=E.has(e),a=L&&11===e.nodeType&&!!e.host,n=a&&!W.has(s),p=n?document.createDocumentFragment():e;if(((t,e,o)=>{let s=E.get(e);void 0===s&&(i(e,e.firstChild),E.set(e,s=new x(Object.assign({templateFactory:N},o))),s.appendInto(e)),s.setValue(t),s.commit()})(t,p,Object.assign({templateFactory:j(s)},o)),n){const t=E.get(p);E.delete(p);const o=t.value instanceof g?t.value.template:void 0;B(s,p,o),i(e,e.firstChild),e.appendChild(p),E.set(e,t)}!r&&a&&window.ShadyCSS.styleElement(e.host)};const dt=(t,e)=>{history.replaceState(null,"",e)};const ut=ct` - :host { - @apply --paper-font-body1; - } - - app-header-layout, - ha-app-layout { - background-color: var(--primary-background-color); - } - - app-header, app-toolbar { - background-color: var(--primary-color); - font-weight: 400; - color: var(--text-primary-color, white); - } - - app-toolbar ha-menu-button + [main-title], - app-toolbar ha-paper-icon-button-arrow-prev + [main-title], - app-toolbar paper-icon-button + [main-title] { - margin-left: 24px; - } - - button.link { - background: none; - color: inherit; - border: none; - padding: 0; - font: inherit; - text-align: left; - text-decoration: underline; - cursor: pointer; - } - - .card-actions a { - text-decoration: none; - } - - .card-actions .warning { - --mdc-theme-primary: var(--google-red-500); - } -`,mt=ct` - :host { - font-family: var(--paper-font-body1_-_font-family); -webkit-font-smoothing: var(--paper-font-body1_-_-webkit-font-smoothing); font-size: var(--paper-font-body1_-_font-size); font-weight: var(--paper-font-body1_-_font-weight); line-height: var(--paper-font-body1_-_line-height); - } - - app-header-layout, ha-app-layout { - background-color: var(--primary-background-color); - } - - app-header, app-toolbar, paper-tabs { - background-color: var(--primary-color); - font-weight: 400; - text-transform: uppercase; - color: var(--text-primary-color, white); - } - - paper-tabs { - --paper-tabs-selection-bar-color: #fff; - margin-left: 12px; - } - - app-toolbar ha-menu-button + [main-title], app-toolbar ha-paper-icon-button-arrow-prev + [main-title], app-toolbar paper-icon-button + [main-title] { - margin-left: 24px; - } -`,yt=ct` - :host { - --hacs-status-installed: #126e15; - --hacs-status-pending-restart: #a70000; - --hacs-status-pending-update: #ffab40; - --hacs-status-default: var(--primary-text-color); - --hacs-badge-color: var(--primary-color); - --hacs-badge-text-color: var(--primary-text-color); - } -`,gt=[ut,mt,ct` - :root { - font-family: var(--paper-font-body1_-_font-family); - -webkit-font-smoothing: var(--paper-font-body1_-_-webkit-font-smoothing); - font-size: var(--paper-font-body1_-_font-size); - font-weight: var(--paper-font-body1_-_font-weight); - line-height: var(--paper-font-body1_-_line-height); - } - a { - text-decoration: none; - color: var(--dark-primary-color); - } - h1 { - font-family: var(--paper-font-title_-_font-family); - -webkit-font-smoothing: var(--paper-font-title_-_-webkit-font-smoothing); - white-space: var(--paper-font-title_-_white-space); - overflow: var(--paper-font-title_-_overflow); - text-overflow: var(--paper-font-title_-_text-overflow); - font-size: var(--paper-font-title_-_font-size); - font-weight: var(--paper-font-title_-_font-weight); - line-height: var(--paper-font-title_-_line-height); - @apply --paper-font-title; - } - .title { - margin-bottom: 16px; - padding-top: 4px; - color: var(--primary-text-color); - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - .addition { - color: var(--secondary-text-color); - position: relative; - height: auto; - line-height: 1.2em; - text-overflow: ellipsis; - overflow: hidden; - } - paper-card { - cursor: pointer; - } - ha-card { - margin: 8px; - } - ha-icon { - height: 24px; - width: 24px; - margin-right: 16px; - float: left; - color: var(--primary-text-color); - } - ha-icon.installed { - color: var(--hacs-status-installed); - } - ha-icon.pending-upgrade { - color: var(--hacs-status-pending-update); - } - ha-icon.pending-restart { - color: var(--hacs-status-pending-restart); - } -`,yt];let vt=class extends ht{constructor(){super(...arguments),this.repository_view=!1,this.SearchTerm=""}render(){if("repository"===this.panel)return U` - - `;{const o=this.panel,s=this.configuration;this.SearchTerm=localStorage.getItem("hacs-search");var t=this.SearchTerm,e=this.repositories.filter((function(e){if("installed"!==o){if("172733314"===e.id)return!1;if(e.hide)return!1;if(null!==s.country&&s.country!==e.country)return!1}else if(e.installed)return!0;return e.category===o&&(""===t||(!!e.name.toLowerCase().includes(t)||(!!e.description.toLowerCase().includes(t)||(!!e.full_name.toLowerCase().includes(t)||(!!String(e.authors).toLowerCase().includes(t)||!!String(e.topics).toLowerCase().includes(t))))))}));return U` - - -
- ${e.sort((t,e)=>t.name>e.name?1:-1).map(t=>U` - - ${"Table"!==this.configuration.frontend_mode?U` - -
-
- - -
-
${t.name}
-
${t.description}
-
-
-
-
- - `:U` - - -
- - -
- -
${t.name}
-
${t.description}
-
-
- `} - - - `)} -
- - `}}DoSearch(t){this.SearchTerm=t.composedPath()[0].value.toLowerCase(),localStorage.setItem("hacs-search",this.SearchTerm)}ShowRepository(t){var e;t.composedPath().forEach(t=>{t.RepoID&&(e=t.RepoID)}),this.panel="repository",this.repository=e,this.repository_view=!0,this.requestUpdate(),dt(0,`/hacs/repository/${e}`)}static get styles(){return[gt,ct` - paper-item { - margin-bottom: 24px; - } - paper-item:hover { - outline: 0; - background: var(--table-row-alternative-background-color); - } - .search-bar { - display: block; - width: 92%; - margin-left: 3.4%; - margin-top: 2%; - background-color: var(--primary-background-color); - color: var(--primary-text-color); - line-height: 32px; - border-color: var(--dark-primary-color); - border-width: inherit; - border-bottom-width: thin; - } - - .search-bar-installed, .search-bar-settings { - display: none; - } - - .card-group { - margin-top: 24px; - width: 95%; - margin-left: 2.5%; - } - - .card-group .title { - color: var(--primary-text-color); - margin-bottom: 12px; - } - - .card-group .description { - font-size: 0.5em; - font-weight: 500; - margin-top: 4px; - } - - .card-group paper-card { - --card-group-columns: 3; - width: calc((100% - 12px * var(--card-group-columns)) / var(--card-group-columns)); - margin: 4px; - vertical-align: top; - height: 136px; - } - - @media screen and (max-width: 1200px) and (min-width: 601px) { - .card-group paper-card { - --card-group-columns: 2; - } - } - - @media screen and (max-width: 600px) and (min-width: 0) { - .card-group paper-card { - width: 100%; - margin: 4px 0; - } - .content { - padding: 0; - } - } - `]}};t([rt()],vt.prototype,"hass",void 0),t([rt()],vt.prototype,"repositories",void 0),t([rt()],vt.prototype,"configuration",void 0),t([rt()],vt.prototype,"panel",void 0),t([rt()],vt.prototype,"repository_view",void 0),t([rt()],vt.prototype,"repository",void 0),t([rt()],vt.prototype,"SearchTerm",void 0),vt=t([ot("hacs-panel")],vt); -/** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */ -const ft=new WeakMap,_t=(t=>(...o)=>{const s=t(...o);return e.set(s,!0),s})(t=>e=>{if(!(e instanceof x))throw new Error("unsafeHTML can only be used in text bindings");const o=ft.get(e);if(void 0!==o&&_(t)&&t===o.value&&e.value===o.fragment)return;const s=document.createElement("template");s.innerHTML=t;const i=document.importNode(s.content,!0);e.setValue(i),ft.set(e,{value:t,fragment:i})});let bt=class extends ht{render(){return"0"===String(this.authors.length)?U``:U` -
-

${this.hass.localize("component.hacs.repository.authors")}: - - ${this.authors.map(t=>U` - - ${t.replace("@","")} - `)} - -

-
- `}static get styles(){return[gt,ct` - .autors { - - } - `]}};t([rt()],bt.prototype,"hass",void 0),t([rt()],bt.prototype,"authors",void 0),bt=t([ot("hacs-authors")],bt);let wt=class extends ht{render(){return U` -
-

${this.hass.localize("component.hacs.repository.lovelace_instruction")}:

-
-- url: /community_plugin/${this.repository.full_name.split("/")[1]}/${this.repository.file_name}
-  type: ${void 0!==this.repository.javascript_type?U`${this.repository.javascript_type}`:U`${this.hass.localize("component.hacs.repository.lovelace_no_js_type")}`}
- - -
- `}CopyToLovelaceExampleToClipboard(t){var e=t.composedPath()[4].children[0].children[1].innerText;document.addEventListener("copy",t=>{t.clipboardData.setData("text/plain",e),t.preventDefault(),document.removeEventListener("copy",null)}),document.execCommand("copy")}static get styles(){return[gt,ct` - .lovelace-hint { - - } - .example-title { - margin-block-end: 0em; - } - .yaml { - font-family: monospace, monospace; - font-size: 1em; - border-style: solid; - border-width: thin; - margin: 0; - overflow: auto; - display: inline-flex; - width: calc(100% - 46px); - white-space: pre-wrap; - } - - `]}};t([rt()],wt.prototype,"hass",void 0),t([rt()],wt.prototype,"configuration",void 0),t([rt()],wt.prototype,"repository",void 0),wt=t([ot("hacs-lovelace-hint")],wt);let St=class extends ht{render(){return U` -
-

${this.hass.localize("component.hacs.repository.note_installed")} '${this.repository.local_path}' - - ${"appdaemon"===this.repository.category?U`, - ${this.hass.localize(`component.hacs.repository.note_${this.repository.category}`)}`:""} - - ${"integration"===this.repository.category?U`, - ${this.hass.localize(`component.hacs.repository.note_${this.repository.category}`)}`:""} - - ${"plugin"===this.repository.category?U`, - ${this.hass.localize(`component.hacs.repository.note_${this.repository.category}`)}`:""} - - .

- - ${"plugin"===this.repository.category?U` - - `:""} -
- `}static get styles(){return[gt,ct` - .repository-note { - border-top: 1px solid var(--primary-text-color); - } - p { - font-style: italic; - } - `]}};t([rt()],St.prototype,"hass",void 0),t([rt()],St.prototype,"configuration",void 0),t([rt()],St.prototype,"repository",void 0),St=t([ot("hacs-repository-note")],St);let xt=class extends ht{constructor(){super(...arguments),this.repository_view=!1}ResetSpinner(){this.ActiveSpinnerMainAction=!1,this.ActiveSpinnerUninstall=!1,this.ActiveSpinnerLoader=!1}RepositoryWebSocketAction(t,e){let o;"install"===t?this.ActiveSpinnerMainAction=!0:"uninstall"===t?this.ActiveSpinnerUninstall=!0:this.ActiveSpinnerLoader=!0,o=e?{type:"hacs/repository/data",action:t,repository:this.repository,data:e}:{type:"hacs/repository",action:t,repository:this.repository},this.hass.connection.sendMessagePromise(o).then(t=>{this.repositories=t,this.ResetSpinner(),this.requestUpdate()},t=>{console.error("Message failed!",t),this.ResetSpinner(),this.requestUpdate()})}firstUpdated(){this.repo.updated_info||this.RepositoryWebSocketAction("update"),this.ActiveSpinnerMainAction=!1,this.ActiveSpinnerUninstall=!1}render(){if(void 0===this.repository)return U` - - - `;var t=this.repository,e=this.repositories.filter((function(e){return e.id===t}));if(this.repo=e[0],this.repo.installed)var o=`\n ${this.hass.localize("component.hacs.repository.back_to")} ${this.hass.localize("component.hacs.repository.installed")}\n `;else{if("appdaemon"===this.repo.category)var s="appdaemon_apps";else s=`${this.repo.category}s`;o=`\n ${this.hass.localize("component.hacs.repository.back_to")} ${this.hass.localize(`component.hacs.common.${s}`)}\n `}return U` - -
- - - ${o} - - ${this.ActiveSpinnerLoader?U``:""} -
- - - - - - - - - ${this.hass.localize("component.hacs.repository.update_information")} - - - ${"version"===this.repo.version_or_commit?U` - - ${this.repo.beta?this.hass.localize("component.hacs.repository.hide_beta"):this.hass.localize("component.hacs.repository.show_beta")} - `:""} - - ${this.repo.custom?"":U` - - ${this.hass.localize("component.hacs.repository.hide")} - `} - - - - - ${this.hass.localize("component.hacs.repository.open_issue")} - - - - - - - ${this.hass.localize("component.hacs.repository.flag_this")} - - - - - -
-
- ${this.repo.description} -
-
- ${this.repo.installed?U` -
- ${this.hass.localize("component.hacs.repository.installed")}: ${this.repo.installed_version} -
- `:""} - - ${"0"===String(this.repo.releases.length)?U` -
- ${this.hass.localize("component.hacs.repository.available")}: ${this.repo.available_version} -
- `:U` -
- - - ${this.repo.releases.map(t=>U`${t}`)} - ${this.repo.default_branch} - - -
`} - -
- -
- - -
- - - ${this.ActiveSpinnerMainAction?U``:U` - ${this.hass.localize(`component.hacs.repository.${this.repo.main_action.toLowerCase()}`)} - `} - - - ${this.repo.pending_upgrade?U` - - - ${this.hass.localize("component.hacs.repository.changelog")} - - `:""} - - - - ${this.hass.localize("component.hacs.repository.repository")} - - - - ${this.repo.installed?U` - - ${this.ActiveSpinnerUninstall?U``:U` - ${this.hass.localize("component.hacs.repository.uninstall")} - `} - `:""} - - -
-
- - -
-
- ${_t(this.repo.additional_info)} -
- -
-
- `}RepositoryReload(){this.RepositoryWebSocketAction("update")}RepositoryInstall(){this.RepositoryWebSocketAction("install")}RepositoryUnInstall(){this.RepositoryWebSocketAction("uninstall")}RepositoryBeta(){this.repo.beta?this.RepositoryWebSocketAction("hide_beta"):this.RepositoryWebSocketAction("show_beta")}RepositoryHide(){this.repo.hide?this.RepositoryWebSocketAction("unhide"):this.RepositoryWebSocketAction("hide")}SetVersion(t){var e=t.composedPath()[2].outerText;e&&this.RepositoryWebSocketAction("set_version",e)}GoBackToStore(){this.repository=void 0,this.repo.installed?this.panel="installed":this.panel=this.repo.category,dt(0,`/hacs/${this.panel}`),this.requestUpdate()}static get styles(){return[gt,ct` - paper-dropdown-menu { - width: 250px; - margin-top: -24px; - - } - paper-spinner.loader { - position: absolute; - top: 20%; - left: 50%; - transform: translate(-50%, -50%); - z-index: 99; - width: 300px; - height: 300px; - } - .description { - font-style: italic; - padding-bottom: 16px; - } - .version { - padding-bottom: 8px; - } - .options { - float: right; - width: 40%; - } - .information { - width: 60%; - } - .getBack { - margin-top: 8px; - margin-bottom: 4px; - margin-left: 5%; - } - .right { - float: right; - } - .loading { - text-align: center; - width: 100%; - } - ha-card { - width: 90%; - margin-left: 5%; - } - .link-icon { - color: var(--dark-primary-color); - margin-right: 8px; - } - paper-menu-button { - float: right; - top: -65px; - } - `]}};t([rt()],xt.prototype,"hass",void 0),t([rt()],xt.prototype,"repositories",void 0),t([rt()],xt.prototype,"configuration",void 0),t([rt()],xt.prototype,"repository",void 0),t([rt()],xt.prototype,"panel",void 0),t([rt()],xt.prototype,"repository_view",void 0),t([rt()],xt.prototype,"ActiveSpinnerMainAction",void 0),t([rt()],xt.prototype,"ActiveSpinnerUninstall",void 0),t([rt()],xt.prototype,"ActiveSpinnerLoader",void 0),xt=t([ot("hacs-panel-repository")],xt);let $t=class extends ht{Delete(t){window.confirm(this.hass.localize("component.hacs.confirm.delete","item",t.composedPath()[3].innerText))&&this.hass.connection.sendMessagePromise({type:"hacs/repository",action:"delete",repository:t.composedPath()[4].repoID}).then(t=>{this.repositories=t,this.requestUpdate()},t=>{console.error("Message failed!",t)})}Save(t){this.SaveSpinner=!0,console.log(t.composedPath()[1].children[0].value),console.log(t.composedPath()[1].children[1].selectedItem.category),this.hass.connection.sendMessagePromise({type:"hacs/repository/data",action:"add",repository:t.composedPath()[1].children[0].value,data:t.composedPath()[1].children[1].selectedItem.category}).then(t=>{this.repositories=t,this.SaveSpinner=!1,this.requestUpdate()},t=>{console.error("Message failed!",t)})}render(){return this.custom=this.repositories.filter((function(t){return!!t.custom})),U` - -
-
- - ${this.custom.sort((t,e)=>t.full_name>e.full_name?1:-1).map(t=>U` -
- - ${t.full_name} - - -
- `)} -
-
- -
- - - - - - ${this.configuration.categories.map(t=>U` - - ${this.hass.localize(`component.hacs.common.${t}`)} - `)} - - - - ${this.SaveSpinner?U``:U` - - - `} -
- -
- `}static get styles(){return[gt,ct` - ha-card { - width: 90%; - margin-left: 5%; - } - .custom-repositories { - - } - - .add-repository { - - } - .inputfield { - width: 60%; - } - .category { - position: absolute; - width: 30%; - right: 54px; - bottom: 5px; - } - .saveicon { - color: var(--primary-color); - position: absolute; - right: 0; - bottom: 24px; - } - .listicon { - color: var(--primary-color); - right: 0px; - position: absolute; - } - .loading { - position: absolute; - right: 10px; - bottom: 22px; - } - `]}};t([rt()],$t.prototype,"hass",void 0),t([rt()],$t.prototype,"repositories",void 0),t([rt()],$t.prototype,"custom",void 0),t([rt()],$t.prototype,"configuration",void 0),t([rt()],$t.prototype,"SaveSpinner",void 0),$t=t([ot("hacs-custom-repositories")],$t);let Pt=class extends ht{ResetSpinner(){this.ActiveSpinnerReload=!1,this.ActiveSpinnerUpgradeAll=!1}render(){return U` - - -
-

${this.hass.localize("component.hacs.common.version")}: ${this.configuration.version}

-

${this.hass.localize("component.hacs.common.repositories")}: ${this.repositories.length}

-
- - - - ${this.hass.localize("component.hacs.settings.grid")} - - - ${this.hass.localize("component.hacs.settings.table")} - - - -
-
-
- - - ${this.ActiveSpinnerReload?U``:U` - ${this.hass.localize("component.hacs.settings.reload_data")} - `} - - - - ${this.ActiveSpinnerUpgradeAll?U``:U` - ${this.hass.localize("component.hacs.settings.upgrade_all")} - `} - - - - - ${this.hass.localize("component.hacs.settings.hacs_repo")} - - - - - - ${this.hass.localize("component.hacs.repository.open_issue")} - - -
-
- - - `}SetFeStyleGrid(){this.hass.connection.sendMessage({type:"hacs/settings",action:"set_fe_grid"})}SetFeStyleTable(){this.hass.connection.sendMessage({type:"hacs/settings",action:"set_fe_table"})}ReloadData(){this.ActiveSpinnerReload=!0,console.log("This should reload data, but that is not added.")}UpgradeAll(){this.ActiveSpinnerReload=!0,console.log("This should reload data, but that is not added.")}static get styles(){return[gt,ct` - ha-card { - width: 90%; - margin-left: 5%; - } - mwc-button { - margin: 0 8px 0 8px; - } - `]}};t([rt()],Pt.prototype,"hass",void 0),t([rt()],Pt.prototype,"repositories",void 0),t([rt()],Pt.prototype,"configuration",void 0),t([rt()],Pt.prototype,"ActiveSpinnerReload",void 0),t([rt()],Pt.prototype,"ActiveSpinnerUpgradeAll",void 0),Pt=t([ot("hacs-panel-settings")],Pt);let kt=class extends ht{constructor(){super(...arguments),this.repository_view=!1}getRepositories(){this.hass.connection.sendMessagePromise({type:"hacs/config"}).then(t=>{this.configuration=t,this.requestUpdate()},t=>{console.error("[hacs/config] Message failed!",t)}),this.hass.connection.sendMessagePromise({type:"hacs/repositories"}).then(t=>{this.repositories=t,this.requestUpdate()},t=>{console.error("[hacs/repositories] Message failed!",t)})}firstUpdated(){localStorage.setItem("hacs-search",""),this.panel=this._page,this.getRepositories(),/repository\//i.test(this.panel)?(this.repository_view=!0,this.repository=this.panel.split("/")[1]):this.repository_view=!1,function(){if(customElements.get("hui-view"))return!0;const t=document.createElement("partial-panel-resolver");t.hass=document.querySelector("home-assistant").hass,t.route={path:"/lovelace/"};try{document.querySelector("home-assistant").appendChild(t).catch(t=>{})}catch(e){document.querySelector("home-assistant").removeChild(t)}customElements.get("hui-view")}(),this.hass.connection.sendMessagePromise({type:"hacs/repository"}),this.hass.connection.sendMessagePromise({type:"hacs/config"}),this.hass.connection.subscribeEvents(()=>this.getRepositories(),"hacs/repository"),this.hass.connection.subscribeEvents(()=>this.getRepositories(),"hacs/config")}render(){if(""===this.panel&&(dt(0,"/hacs/installed"),this.panel="installed"),void 0===this.repositories)return U``;/repository\//i.test(this.panel)?(this.repository_view=!0,this.repository=this.panel.split("/")[1],this.panel=this.panel.split("/")[0]):this.repository_view=!1;const t=this.panel;return U` - - - - -
${this.hass.localize("component.hacs.config.title")}
-
- - - - ${this.hass.localize("component.hacs.common.installed")} - - - - ${this.hass.localize("component.hacs.common.integrations")} - - - - ${this.hass.localize("component.hacs.common.plugins")} - - - ${this.configuration.appdaemon?U` - ${this.hass.localize("component.hacs.common.appdaemon_apps")} - `:""} - - ${this.configuration.python_script?U` - ${this.hass.localize("component.hacs.common.python_scripts")} - `:""} - - ${this.configuration.theme?U` - ${this.hass.localize("component.hacs.common.themes")} - `:""} - - - ${this.hass.localize("component.hacs.common.settings")} - - -
- - ${this.panel,U` - - `} - - ${"settings"===this.panel?U` - - `:""} - -
`}handlePageSelected(t){this.repository_view=!1;const e=t.detail.item.getAttribute("page-name");this.panel=e,this.requestUpdate(),e!==this._page&&dt(0,`/hacs/${e}`),function(t,e){const o=e,s=Math.random(),i=Date.now(),r=o.scrollTop,a=0-r;t._currentAnimationId=s,function e(){const n=Date.now()-i;var p;n>200?o.scrollTop=0:t._currentAnimationId===s&&(o.scrollTop=(p=n,-a*(p/=200)*(p-2)+r),requestAnimationFrame(e.bind(t)))}.call(t)}(this,this.shadowRoot.querySelector("app-header-layout").header.scrollTarget)}get _page(){return null===this.route.path.substr(1)?"installed":this.route.path.substr(1)}static get styles(){return[gt,ct` - paper-spinner.loader { - position: absolute; - top: 20%; - left: 50%; - transform: translate(-50%, -50%); - z-index: 99; - width: 300px; - height: 300px; - } - `]}};t([rt()],kt.prototype,"hass",void 0),t([rt()],kt.prototype,"repositories",void 0),t([rt()],kt.prototype,"configuration",void 0),t([rt()],kt.prototype,"route",void 0),t([rt()],kt.prototype,"narrow",void 0),t([rt()],kt.prototype,"panel",void 0),t([rt()],kt.prototype,"repository",void 0),t([rt()],kt.prototype,"repository_view",void 0),kt=t([ot("hacs-frontend")],kt); diff --git a/custom_components/hacs/frontend/experimental/main.js.gz b/custom_components/hacs/frontend/experimental/main.js.gz index 0ab496c0a09686be86b555b6315992a20dbfa494..bfaecf59a40f9e11b0e0a553c17a159a67309f20 100644 GIT binary patch delta 14006 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 delta 13905 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 diff --git a/custom_components/hacs/hacsbase/__init__.py b/custom_components/hacs/hacsbase/__init__.py index 87236867..ea6fead1 100644 --- a/custom_components/hacs/hacsbase/__init__.py +++ b/custom_components/hacs/hacsbase/__init__.py @@ -65,6 +65,7 @@ class Hacs: hacsapi = f"/hacsapi/{token}" repositories = [] repo = None + data_repo = None developer = Developer() data = None configuration = None @@ -253,9 +254,7 @@ async def get_repositories(self): } else: for category in self.common.categories: - remote = await self.repo.get_contents( - f"repositories/{category}", "data" - ) + remote = await self.data_repo.get_contents(category) repositories[category] = json.loads(remote.content) if category == "plugin": org = await self.github.get_org_repos("custom-cards") @@ -281,7 +280,7 @@ async def get_repositories(self): async def load_known_repositories(self): """Load known repositories.""" self.logger.info("Loading known repositories") - blacklist = await self.repo.get_contents("repositories/blacklist", "data") + blacklist = await self.data_repo.get_contents("blacklist") repositories = await self.get_repositories() for item in json.loads(blacklist.content):