4 lines
11 KiB
JavaScript
4 lines
11 KiB
JavaScript
!function(t){var e={};function r(i){if(e[i])return e[i].exports;var s=e[i]={i:i,l:!1,exports:{}};return t[i].call(s.exports,s,s.exports,r),s.l=!0,s.exports}r.m=t,r.c=e,r.d=function(t,e,i){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)r.d(i,s,function(e){return t[e]}.bind(null,s));return i},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,r){"use strict";r.r(e);const i=customElements.get("home-assistant-main")?Object.getPrototypeOf(customElements.get("home-assistant-main")):Object.getPrototypeOf(customElements.get("hui-view")),s=i.prototype.html;i.prototype.css;function n(t,e,r=null){if((t=new Event(t,{bubbles:!0,cancelable:!1,composed:!0})).detail=e||{},r)r.dispatchEvent(t);else{var i=document.querySelector("home-assistant");(i=(i=(i=(i=(i=(i=(i=(i=(i=(i=(i=i&&i.shadowRoot)&&i.querySelector("home-assistant-main"))&&i.shadowRoot)&&i.querySelector("app-drawer-layout partial-panel-resolver"))&&i.shadowRoot||i)&&i.querySelector("ha-panel-lovelace"))&&i.shadowRoot)&&i.querySelector("hui-root"))&&i.shadowRoot)&&i.querySelector("ha-app-layout #view"))&&i.firstElementChild)&&i.dispatchEvent(t)}}const o="custom:";function a(t,e){const r=document.createElement("hui-error-card");return r.setConfig({type:"error",error:t,origConfig:e}),r}function c(t,e){if(!e||"object"!=typeof e||!e.type)return a(`No ${t} type configured`,e);let r=e.type;if(r=r.startsWith(o)?r.substr(o.length):`hui-${r}-${t}`,customElements.get(r))return function(t,e){const r=document.createElement(t);try{r.setConfig(e)}catch(t){return a(t,e)}return r}(r,e);const i=a(`Custom element doesn't exist: ${r}.`,e);i.style.display="None";const s=setTimeout(()=>{i.style.display=""},2e3);return customElements.whenDefined(r).then(()=>{clearTimeout(s),n("ll-rebuild",{},i)}),i}function u(){return document.querySelector("home-assistant").hass}const l=2;class f extends i{static get version(){return l}static get properties(){return{noHass:{type:Boolean}}}setConfig(t){var e;this._config=t,this.el?this.el.setConfig(t):(this.el=this.create(t),this._hass&&(this.el.hass=this._hass),this.noHass&&(e=this,document.querySelector("home-assistant").provideHass(e)))}set config(t){this.setConfig(t)}set hass(t){this._hass=t,this.el&&(this.el.hass=t)}createRenderRoot(){return this}render(){return s`${this.el}`}}const d=function(t,e){const r=Object.getOwnPropertyDescriptors(e.prototype);for(const[e,i]of Object.entries(r))"constructor"!==e&&Object.defineProperty(t.prototype,e,i);const i=Object.getOwnPropertyDescriptors(e);for(const[e,r]of Object.entries(i))"prototype"!==e&&Object.defineProperty(t,e,r);const s=Object.getPrototypeOf(e),n=Object.getOwnPropertyDescriptors(s.prototype);for(const[e,r]of Object.entries(n))"constructor"!==e&&Object.defineProperty(Object.getPrototypeOf(t).prototype,e,r);const o=Object.getOwnPropertyDescriptors(s);for(const[e,r]of Object.entries(o))"prototype"!==e&&Object.defineProperty(Object.getPrototypeOf(t),e,r)},h=customElements.get("card-maker");if(!h||!h.version||h.version<l){class t extends f{create(t){return function(t){return c("card",t)}(t)}getCardSize(){return this.firstElementChild&&this.firstElementChild.getCardSize?this.firstElementChild.getCardSize():1}}h?d(h,t):customElements.define("card-maker",t)}const p=customElements.get("element-maker");if(!p||!p.version||p.version<l){class t extends f{create(t){return function(t){return c("element",t)}(t)}}p?d(p,t):customElements.define("element-maker",t)}const y=customElements.get("entity-row-maker");if(!y||!y.version||y.version<l){class t extends f{create(t){return function(t){const e=new Set(["call-service","divider","section","weblink"]);if(!t)return a("Invalid configuration given.",t);if("string"==typeof t&&(t={entity:t}),"object"!=typeof t||!t.entity&&!t.type)return a("Invalid configuration given.",t);const r=t.type||"default";if(e.has(r)||r.startsWith(o))return c("row",t);const i=t.entity.split(".",1)[0];return Object.assign(t,{type:{alert:"toggle",automation:"toggle",climate:"climate",cover:"cover",fan:"toggle",group:"group",input_boolean:"toggle",input_number:"input-number",input_select:"input-select",input_text:"input-text",light:"toggle",lock:"lock",media_player:"media-player",remote:"toggle",scene:"scene",script:"script",sensor:"sensor",timer:"timer",switch:"toggle",vacuum:"toggle",water_heater:"climate",input_datetime:"input-datetime"}[i]||"text"}),c("entity-row",t)}(t)}}y?d(y,t):customElements.define("entity-row-maker",t)}const g=u().callWS({type:"config/area_registry/list"}),m=u().callWS({type:"config/device_registry/list"}),b=u().callWS({type:"config/entity_registry/list"});async function _(){return window.cardToolsData=window.cardToolsData||{areas:await g,devices:await m,entities:await b},window.cardToolsData}function v(t){const e=window.cardToolsData;let r=[];if(!t)return r;for(const i of e.devices)i.area_id===t.area_id&&r.push(i);return r}function w(t){const e=window.cardToolsData;let r=[];if(!t)return r;for(const i of e.entities)i.device_id===t.id&&r.push(i.entity_id);return r}function O(t,e){if("string"==typeof e&&"string"==typeof t&&(t.startsWith("/")&&t.endsWith("/")||-1!==t.indexOf("*"))){return t.startsWith("/")||(t=`/^${t=t.replace(/\./g,".").replace(/\*/g,".*")}$/`),new RegExp(t.slice(1,-1)).test(e)}if("string"==typeof t){if(t.startsWith("<="))return parseFloat(e)<=parseFloat(t.substr(2));if(t.startsWith(">="))return parseFloat(e)>=parseFloat(t.substr(2));if(t.startsWith("<"))return parseFloat(e)<parseFloat(t.substr(1));if(t.startsWith(">"))return parseFloat(e)>parseFloat(t.substr(1));if(t.startsWith("!"))return parseFloat(e)!=parseFloat(t.substr(1));if(t.startsWith("="))return parseFloat(e)==parseFloat(t.substr(1))}return t===e}function j(t,e){return function(r){const i="string"==typeof r?t.states[r]:t.states[r.entity];if(!r)return!1;for(const[s,n]of Object.entries(e))switch(s.split(" ")[0]){case"options":case"sort":break;case"domain":if(!O(n,i.entity_id.split(".")[0]))return!1;break;case"entity_id":if(!O(n,i.entity_id))return!1;break;case"state":if(!O(n,i.state))return!1;break;case"name":if(!i.attributes.friendly_name||!O(n,i.attributes.friendly_name))return!1;break;case"group":if(!(n.startsWith("group.")&&t.states[n]&&t.states[n].attributes.entity_id&&t.states[n].attributes.entity_id.includes(i.entity_id)))return!1;break;case"attributes":for(const[t,e]of Object.entries(n)){let r=t.split(" ")[0],s=i.attributes;for(;r&&s;){let t;[t,r]=r.split(":"),s=s[t]}if(void 0===s||e&&!O(e,s))return!1}break;case"not":if(j(t,n)(r))return!1;break;case"device":let e=!1;for(const t of window.cardToolsData.devices)O(n,t.name)&&w(t).includes(i.entity_id)&&(e=!0);if(!e)return!1;break;case"area":let s=!1;for(const t of window.cardToolsData.areas)O(n,t.name)&&v(t).flatMap(w).includes(i.entity_id)&&(s=!0);if(!s)return!1;break;default:return!1}return!0}}function k(t,e){return"string"==typeof e&&(e={method:e}),function(r,i){const s="string"==typeof r?t.states[r]:t.states[r.entity],n="string"==typeof i?t.states[i]:t.states[i.entity];if(void 0===s||void 0===n)return 0;const[o,a]=e.reverse?[-1,1]:[1,-1];function c(t,r){return e.ignore_case&&t.toLowerCase&&(t=t.toLowerCase()),e.ignore_case&&r.toLowerCase&&(r=r.toLowerCase()),void 0===t&&void 0===r?0:void 0===t?o:void 0===r?a:t<r?a:t>r?o:0}switch(e.method){case"domain":return c(s.entity_id.split(".")[0],n.entity_id.split(".")[0]);case"entity_id":return c(s.entity_id,n.entity_id);case"friendly_name":case"name":return c(s.attributes.friendly_name||s.entity_id.split(".")[1],n.attributes.friendly_name||n.entity_id.split(".")[1]);case"state":return c(s.state,n.state);case"attribute":let t=s.attributes,r=n.attributes,i=e.attribute;for(;i;){let e;if([e,i]=i.split(":"),t=t[e],r=r[e],void 0===t&&void 0===r)return 0;if(void 0===t)return o;if(void 0===r)return a}return c(t,r);default:return 0}}}_();customElements.define("auto-entities",class extends i{static get properties(){return{hass:{}}}setConfig(t){if(!t||!t.card)throw new Error("Invalid configuration");this._config?(this._config=t,this.hass=this.hass):(this._config=t,this.cardConfig={entities:[],...t.card},this.entities=[])}async _getEntities(){let t=[];if(this._config.entities&&(t=t.concat(this._config.entities).map(t=>"string"==typeof t?{entity:t}:t)),!this.hass||!this._config.filter)return t;if(this._config.filter.include){const e=Object.keys(this.hass.states).map(t=>new Object({entity:t}));for(const r of this._config.filter.include){if(void 0!==r.type){t.push(r);continue}(r.device||r.area)&&await _();let i=e.filter(j(this.hass,r)).map(t=>new Object({...t,...r.options}));void 0!==r.sort&&(i=i.sort(k(this.hass,r.sort))),t=t.concat(i)}}if(this._config.filter.exclude)for(const e of this._config.filter.exclude)t=t.filter(t=>"string"!=typeof t&&void 0===t.entity||!j(this.hass,e)(t));if(this._config.sort&&(t=t.sort(k(this.hass,this._config.sort))),this._config.unique){function e(t,r){return typeof t==typeof r&&("object"!=typeof t?t===r:!Object.keys(t).some(t=>!Object.keys(r).includes(t))&&Object.keys(t).every(i=>e(t[i],r[i])))}let r=[];for(const i of t)r.some(t=>e(t,i))||r.push(i);t=r}return t}set entities(t){(function(t,e){if(t===e)return!0;if(null==t||null==e)return!1;if(t.length!=e.length)return!1;for(var r=0;r<t.length;r++)if(JSON.stringify(t[r])!==JSON.stringify(e[r]))return!1;return!0})(t,this._entities)||(this._entities=t,this.cardConfig={...this.cardConfig,entities:this._entities},0===t.length&&!1===this._config.show_empty?(this.style.display="none",this.style.margin="0"):(this.style.display=null,this.style.margin=null),this.requestUpdate())}get entities(){return this._entities}set cardConfig(t){this._cardConfig=t,this.querySelector("card-maker")&&(this.querySelector("card-maker").config=t)}get cardConfig(){return this._cardConfig}firstUpdated(){this.cardConfig=this._cardConfig}updated(t){t.has("hass")&&this.hass&&setTimeout(()=>this._getEntities().then(t=>this.entities=t),0)}createRenderRoot(){return this}render(){return s`
|
|
<card-maker
|
|
.hass=${this.hass}
|
|
></card-maker>`}getCardSize(){let t=0;return this.querySelector("card-maker")&&this.querySelector("card-maker").getCardSize&&(t=this.querySelector("card-maker").getCardSize()),1===t&&this.entities.length&&(t=this.entities.length),0===t&&this._config.filter&&this._config.filter.include?Object.keys(this._config.filter.include).length:t||1}}),n("ll-rebuild",{})}]); |