From aee9b5ad91d7c2c55bfd873040386cd85984ebf8 Mon Sep 17 00:00:00 2001 From: Home Assistant Version Control Date: Sun, 23 Aug 2026 20:53:46 +0000 Subject: [PATCH] 7 files --- www/community/lovelace-wallpanel/wallpanel.js | 2 +- .../lovelace-wallpanel/wallpanel.js.gz | Bin 68417 -> 68439 bytes .../simple-thermostat.debug.js | 909 ++++++++++++++++-- .../simple-thermostat.debug.js.gz | Bin 58839 -> 62874 bytes .../simple-thermostat/simple-thermostat.js | 640 ++++++++++-- .../simple-thermostat/simple-thermostat.js.gz | Bin 46957 -> 50219 bytes zigbee2mqtt/state.json | 46 +- 7 files changed, 1406 insertions(+), 191 deletions(-) diff --git a/www/community/lovelace-wallpanel/wallpanel.js b/www/community/lovelace-wallpanel/wallpanel.js index 29ada67f..c300c54a 100644 --- a/www/community/lovelace-wallpanel/wallpanel.js +++ b/www/community/lovelace-wallpanel/wallpanel.js @@ -1 +1 @@ -!function(){"use strict";function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function n(n){for(var r=1;r0&&e[0]<4?1:+(e[0]+e[1])),!t&&r&&(!(e=r.match(/Edge\/(\d+)/))||e[1]>=74)&&(e=r.match(/Chrome\/(\d+)/))&&(t=+e[1]),Y=t}function Ee(){if($)return X;$=1;var e=we(),t=v(),n=s().String;return X=!!Object.getOwnPropertySymbols&&!t(function(){var t=Symbol("symbol detection");return!n(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&e&&e<41})}function xe(){if(Q)return J;Q=1;var e=Ee();return J=e&&!Symbol.sham&&"symbol"==typeof Symbol.iterator}function Se(){if(K)return Z;K=1;var e=Ae(),t=ve(),n=_e(),r=xe(),i=Object;return Z=r?function(e){return"symbol"==typeof e}:function(r){var o=e("Symbol");return t(o)&&n(o.prototype,i(r))}}function Ce(){if(te)return ee;te=1;var e=String;return ee=function(t){try{return e(t)}catch(e){return"Object"}}}function Ie(){if(re)return ne;re=1;var e=ve(),t=Ce(),n=TypeError;return ne=function(r){if(e(r))return r;throw new n(t(r)+" is not a function")}}function Te(){if(oe)return ie;oe=1;var e=Ie(),t=me();return ie=function(n,r){var i=n[r];return t(i)?void 0:e(i)}}function Re(){if(se)return ae;se=1;var e=_(),t=ve(),n=ye(),r=TypeError;return ae=function(i,o){var a,s;if("string"===o&&t(a=i.toString)&&!n(s=e(a,i)))return s;if(t(a=i.valueOf)&&!n(s=e(a,i)))return s;if("string"!==o&&t(a=i.toString)&&!n(s=e(a,i)))return s;throw new r("Can't convert object to primitive value")}}var ke,Oe,Pe,Me,Le,Be,De,Ue,Fe,Ne,je,We,ze,He,Ge,qe,Ye,Ve,Xe,$e,Je,Qe,Ze,Ke,et={exports:{}};function tt(){return Oe?ke:(Oe=1,ke=!1)}function nt(){if(Me)return Pe;Me=1;var e=s(),t=Object.defineProperty;return Pe=function(n,r){try{t(e,n,{value:r,configurable:!0,writable:!0})}catch(t){e[n]=r}return r}}function rt(){if(Le)return et.exports;Le=1;var e=tt(),t=s(),n=nt(),r="__core-js_shared__",i=et.exports=t[r]||n(r,{});return(i.versions||(i.versions=[])).push({version:"3.43.0",mode:e?"pure":"global",copyright:"© 2014-2025 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.43.0/LICENSE",source:"https://github.com/zloirock/core-js"}),et.exports}function it(){if(De)return Be;De=1;var e=rt();return Be=function(t,n){return e[t]||(e[t]=n||{})}}function ot(){if(Fe)return Ue;Fe=1;var e=ge(),t=Object;return Ue=function(n){return t(e(n))}}function at(){if(je)return Ne;je=1;var e=he(),t=ot(),n=e({}.hasOwnProperty);return Ne=Object.hasOwn||function(e,r){return n(t(e),r)}}function st(){if(ze)return We;ze=1;var e=he(),t=0,n=Math.random(),r=e(1.1.toString);return We=function(e){return"Symbol("+(void 0===e?"":e)+")_"+r(++t+n,36)}}function ct(){if(Ge)return He;Ge=1;var e=s(),t=it(),n=at(),r=st(),i=Ee(),o=xe(),a=e.Symbol,c=t("wks"),l=o?a.for||a:a&&a.withoutSetter||r;return He=function(e){return n(c,e)||(c[e]=i&&n(a,e)?a[e]:l("Symbol."+e)),c[e]}}function lt(){if(Ye)return qe;Ye=1;var e=_(),t=ye(),n=Se(),r=Te(),i=Re(),o=ct(),a=TypeError,s=o("toPrimitive");return qe=function(o,c){if(!t(o)||n(o))return o;var l,u=r(o,s);if(u){if(void 0===c&&(c="default"),l=e(u,o,c),!t(l)||n(l))return l;throw new a("Can't convert object to primitive value")}return void 0===c&&(c="number"),i(o,c)}}function ut(){if(Xe)return Ve;Xe=1;var e=lt(),t=Se();return Ve=function(n){var r=e(n,"string");return t(r)?r:r+""}}function ht(){if(Je)return $e;Je=1;var e=s(),t=ye(),n=e.document,r=t(n)&&t(n.createElement);return $e=function(e){return r?n.createElement(e):{}}}function dt(){if(Ze)return Qe;Ze=1;var e=y(),t=v(),n=ht();return Qe=!e&&!t(function(){return 7!==Object.defineProperty(n("div"),"a",{get:function(){return 7}}).a})}function ft(){if(Ke)return p;Ke=1;var e=y(),t=_(),n=le(),r=ue(),i=pe(),o=ut(),a=at(),s=dt(),c=Object.getOwnPropertyDescriptor;return p.f=e?c:function(e,l){if(e=i(e),l=o(l),s)try{return c(e,l)}catch(e){}if(a(e,l))return r(!t(n.f,e,l),e[l])},p}var mt,gt,pt,vt,yt,At,_t,bt={};function wt(){if(gt)return mt;gt=1;var e=y(),t=v();return mt=e&&t(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})}function Et(){if(vt)return pt;vt=1;var e=ye(),t=String,n=TypeError;return pt=function(r){if(e(r))return r;throw new n(t(r)+" is not an object")}}function xt(){if(yt)return bt;yt=1;var e=y(),t=dt(),n=wt(),r=Et(),i=ut(),o=TypeError,a=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c="enumerable",l="configurable",u="writable";return bt.f=e?n?function(e,t,n){if(r(e),t=i(t),r(n),"function"==typeof e&&"prototype"===t&&"value"in n&&u in n&&!n[u]){var o=s(e,t);o&&o[u]&&(e[t]=n.value,n={configurable:l in n?n[l]:o[l],enumerable:c in n?n[c]:o[c],writable:!1})}return a(e,t,n)}:a:function(e,n,s){if(r(e),n=i(n),r(s),t)try{return a(e,n,s)}catch(e){}if("get"in s||"set"in s)throw new o("Accessors not supported");return"value"in s&&(e[n]=s.value),e},bt}function St(){if(_t)return At;_t=1;var e=y(),t=xt(),n=ue();return At=e?function(e,r,i){return t.f(e,r,n(1,i))}:function(e,t,n){return e[t]=n,e}}var Ct,It,Tt,Rt,kt,Ot,Pt,Mt,Lt,Bt,Dt,Ut,Ft,Nt,jt,Wt={exports:{}};function zt(){if(It)return Ct;It=1;var e=y(),t=at(),n=Function.prototype,r=e&&Object.getOwnPropertyDescriptor,i=t(n,"name"),o=i&&"something"===function(){}.name,a=i&&(!e||e&&r(n,"name").configurable);return Ct={EXISTS:i,PROPER:o,CONFIGURABLE:a}}function Ht(){if(Rt)return Tt;Rt=1;var e=he(),t=ve(),n=rt(),r=e(Function.toString);return t(n.inspectSource)||(n.inspectSource=function(e){return r(e)}),Tt=n.inspectSource}function Gt(){if(Mt)return Pt;Mt=1;var e=it(),t=st(),n=e("keys");return Pt=function(e){return n[e]||(n[e]=t(e))}}function qt(){return Bt?Lt:(Bt=1,Lt={})}function Yt(){if(Ut)return Dt;Ut=1;var e,t,n,r=function(){if(Ot)return kt;Ot=1;var e=s(),t=ve(),n=e.WeakMap;return kt=t(n)&&/native code/.test(String(n))}(),i=s(),o=ye(),a=St(),c=at(),l=rt(),u=Gt(),h=qt(),d="Object already initialized",f=i.TypeError,m=i.WeakMap;if(r||l.state){var g=l.state||(l.state=new m);g.get=g.get,g.has=g.has,g.set=g.set,e=function(e,t){if(g.has(e))throw new f(d);return t.facade=e,g.set(e,t),t},t=function(e){return g.get(e)||{}},n=function(e){return g.has(e)}}else{var p=u("state");h[p]=!0,e=function(e,t){if(c(e,p))throw new f(d);return t.facade=e,a(e,p,t),t},t=function(e){return c(e,p)?e[p]:{}},n=function(e){return c(e,p)}}return Dt={set:e,get:t,has:n,enforce:function(r){return n(r)?t(r):e(r,{})},getterFor:function(e){return function(n){var r;if(!o(n)||(r=t(n)).type!==e)throw new f("Incompatible receiver, "+e+" required");return r}}}}function Vt(){if(Ft)return Wt.exports;Ft=1;var e=he(),t=v(),n=ve(),r=at(),i=y(),o=zt().CONFIGURABLE,a=Ht(),s=Yt(),c=s.enforce,l=s.get,u=String,h=Object.defineProperty,d=e("".slice),f=e("".replace),m=e([].join),g=i&&!t(function(){return 8!==h(function(){},"length",{value:8}).length}),p=String(String).split("String"),A=Wt.exports=function(e,t,n){"Symbol("===d(u(t),0,7)&&(t="["+f(u(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!r(e,"name")||o&&e.name!==t)&&(i?h(e,"name",{value:t,configurable:!0}):e.name=t),g&&n&&r(n,"arity")&&e.length!==n.arity&&h(e,"length",{value:n.arity});try{n&&r(n,"constructor")&&n.constructor?i&&h(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var a=c(e);return r(a,"source")||(a.source=m(p,"string"==typeof t?t:"")),e};return Function.prototype.toString=A(function(){return n(this)&&l(this).source||a(this)},"toString"),Wt.exports}function Xt(){if(jt)return Nt;jt=1;var e=ve(),t=xt(),n=Vt(),r=nt();return Nt=function(i,o,a,s){s||(s={});var c=s.enumerable,l=void 0!==s.name?s.name:o;if(e(a)&&n(a,l,s),s.global)c?i[o]=a:r(o,a);else{try{s.unsafe?i[o]&&(c=!0):delete i[o]}catch(e){}c?i[o]=a:t.f(i,o,{value:a,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return i}}var $t,Jt,Qt,Zt,Kt,en,tn,nn,rn,on,an,sn,cn,ln,un,hn,dn,fn={};function mn(){if(Zt)return Qt;Zt=1;var e=function(){if(Jt)return $t;Jt=1;var e=Math.ceil,t=Math.floor;return $t=Math.trunc||function(n){var r=+n;return(r>0?t:e)(r)}}();return Qt=function(t){var n=+t;return n!=n||0===n?0:e(n)}}function gn(){if(en)return Kt;en=1;var e=mn(),t=Math.max,n=Math.min;return Kt=function(r,i){var o=e(r);return o<0?t(o+i,0):n(o,i)}}function pn(){if(nn)return tn;nn=1;var e=mn(),t=Math.min;return tn=function(n){var r=e(n);return r>0?t(r,9007199254740991):0}}function vn(){if(on)return rn;on=1;var e=pn();return rn=function(t){return e(t.length)}}function yn(){if(ln)return cn;ln=1;var e=he(),t=at(),n=pe(),r=function(){if(sn)return an;sn=1;var e=pe(),t=gn(),n=vn(),r=function(r){return function(i,o,a){var s=e(i),c=n(s);if(0===c)return!r&&-1;var l,u=t(a,c);if(r&&o!=o){for(;c>u;)if((l=s[u++])!=l)return!0}else for(;c>u;u++)if((r||u in s)&&s[u]===o)return r||u||0;return!r&&-1}};return an={includes:r(!0),indexOf:r(!1)}}().indexOf,i=qt(),o=e([].push);return cn=function(e,a){var s,c=n(e),l=0,u=[];for(s in c)!t(i,s)&&t(c,s)&&o(u,s);for(;a.length>l;)t(c,s=a[l++])&&(~r(u,s)||o(u,s));return u}}function An(){return hn?un:(hn=1,un=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"])}function _n(){if(dn)return fn;dn=1;var e=yn(),t=An().concat("length","prototype");return fn.f=Object.getOwnPropertyNames||function(n){return e(n,t)},fn}var bn,wn,En,xn,Sn,Cn,In,Tn,Rn,kn,On,Pn,Mn,Ln,Bn,Dn,Un,Fn,Nn,jn,Wn,zn,Hn,Gn,qn,Yn,Vn,Xn,$n,Jn,Qn,Zn,Kn,er,tr,nr,rr,ir,or,ar,sr,cr,lr={};function ur(){return bn||(bn=1,lr.f=Object.getOwnPropertySymbols),lr}function hr(){if(En)return wn;En=1;var e=Ae(),t=he(),n=_n(),r=ur(),i=Et(),o=t([].concat);return wn=e("Reflect","ownKeys")||function(e){var t=n.f(i(e)),a=r.f;return a?o(t,a(e)):t}}function dr(){if(Sn)return xn;Sn=1;var e=at(),t=hr(),n=ft(),r=xt();return xn=function(i,o,a){for(var s=t(o),c=r.f,l=n.f,u=0;uy&&l(o,arguments[y]),o});if(x.prototype=w,"Error"!==_?i?i(x,E):o(x,E,{name:!0}):h&&v in b&&(a(x,b,v),a(x,b,"prepareStackTrace")),o(x,b),!d)try{w.name!==_&&n(w,"name",_),w.constructor=x}catch(e){}return x}},ar}!function(){if(cr)return a;cr=1;var e=mr(),t=s(),n=gr(),r=Tr(),i="WebAssembly",o=t[i],c=7!==new Error("e",{cause:7}).cause,l=function(t,n){var i={};i[t]=r(t,n,c),e({global:!0,constructor:!0,arity:1,forced:c},i)},u=function(t,n){if(o&&o[t]){var a={};a[t]=r(i+"."+t,n,c),e({target:i,stat:!0,constructor:!0,arity:1,forced:c},a)}};l("Error",function(e){return function(t){return n(e,this,arguments)}}),l("EvalError",function(e){return function(t){return n(e,this,arguments)}}),l("RangeError",function(e){return function(t){return n(e,this,arguments)}}),l("ReferenceError",function(e){return function(t){return n(e,this,arguments)}}),l("SyntaxError",function(e){return function(t){return n(e,this,arguments)}}),l("TypeError",function(e){return function(t){return n(e,this,arguments)}}),l("URIError",function(e){return function(t){return n(e,this,arguments)}}),u("CompileError",function(e){return function(t){return n(e,this,arguments)}}),u("LinkError",function(e){return function(t){return n(e,this,arguments)}}),u("RuntimeError",function(e){return function(t){return n(e,this,arguments)}})}();var Rr,kr,Or,Pr,Mr,Lr,Br,Dr,Ur,Fr,Nr,jr,Wr,zr,Hr,Gr,qr,Yr={};function Vr(){if(kr)return Rr;kr=1;var e=de();return Rr=Array.isArray||function(t){return"Array"===e(t)}}function Xr(){if(Pr)return Or;Pr=1;var e=TypeError;return Or=function(t){if(t>9007199254740991)throw e("Maximum allowed index exceeded");return t}}function $r(){if(Lr)return Mr;Lr=1;var e=de(),t=he();return Mr=function(n){if("Function"===e(n))return t(n)}}function Jr(){if(Dr)return Br;Dr=1;var e=$r(),t=Ie(),n=A(),r=e(e.bind);return Br=function(e,i){return t(e),void 0===i?e:n?r(e,i):function(){return e.apply(i,arguments)}},Br}function Qr(){if(jr)return Nr;jr=1;var e=he(),t=v(),n=ve(),r=wr(),i=Ae(),o=Ht(),a=function(){},s=i("Reflect","construct"),c=/^\s*(?:class|function)\b/,l=e(c.exec),u=!c.test(a),h=function(e){if(!n(e))return!1;try{return s(a,[],e),!0}catch(e){return!1}},d=function(e){if(!n(e))return!1;switch(r(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return u||!!l(c,o(e))}catch(e){return!0}};return d.sham=!0,Nr=!s||t(function(){var e;return h(h.call)||!h(Object)||!h(function(){e=!0})||e})?d:h}function Zr(){if(zr)return Wr;zr=1;var e=Vr(),t=Qr(),n=ye(),r=ct()("species"),i=Array;return Wr=function(o){var a;return e(o)&&(a=o.constructor,(t(a)&&(a===i||e(a.prototype))||n(a)&&null===(a=a[r]))&&(a=void 0)),void 0===a?i:a}}function Kr(){if(Gr)return Hr;Gr=1;var e=Zr();return Hr=function(t,n){return new(e(t))(0===n?0:n)}}!function(){if(qr)return Yr;qr=1;var e=mr(),t=function(){if(Fr)return Ur;Fr=1;var e=Vr(),t=vn(),n=Xr(),r=Jr(),i=function(o,a,s,c,l,u,h,d){for(var f,m,g=l,p=0,v=!!h&&r(h,d);p0&&e(f)?(m=t(f),g=i(o,a,f,m,g,u-1)-1):(n(g+1),o[g]=f),g++),p++;return g};return Ur=i}(),n=ot(),r=vn(),i=mn(),o=Kr();e({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,a=n(this),s=r(a),c=o(a,0);return c.length=t(c,a,a,s,0,void 0===e?1:i(e)),c}})}();var ei,ti,ni,ri={};!function(){if(ni)return ri;ni=1;var e=mr(),t=ot(),n=vn(),r=function(){if(ti)return ei;ti=1;var e=y(),t=Vr(),n=TypeError,r=Object.getOwnPropertyDescriptor,i=e&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();return ei=i?function(e,i){if(t(e)&&!r(e,"length").writable)throw new n("Cannot set read only .length");return e.length=i}:function(e,t){return e.length=t}}(),i=Xr();e({target:"Array",proto:!0,arity:1,forced:v()(function(){return 4294967297!==[].push.call({length:4294967296},1)})||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function(e){var o=t(this),a=n(o),s=arguments.length;i(a+s);for(var c=0;c0;)r[s]=r[--s];s!==c++&&(r[s]=a)}else for(var l=t(o/2),u=n(e(r,0,l),i),h=n(e(r,l),i),d=u.length,f=h.length,m=0,g=0;m3)){if(h)return!0;if(f)return f<603;var e,t,n,r,i="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)m.push({k:t+r,v:n})}for(m.sort(function(e,t){return t.v-e.v}),r=0;ra(n)?1:-1}}(e)),s=i(u),l=0;lu;)n.f(e,a=c[u++],s[a]);return e},Ui}(),r=An(),i=qt(),o=Ni(),a=ht(),s=Gt(),c="prototype",l="script",u=s("IE_PROTO"),h=function(){},d=function(e){return"<"+l+">"+e+""},f=function(e){e.write(d("")),e.close();var t=e.parentWindow.Object;return e=null,t},m=function(){try{e=new ActiveXObject("htmlfile")}catch(e){}var t,n,i;m="undefined"!=typeof document?document.domain&&e?f(e):(n=a("iframe"),i="java"+l+":",n.style.display="none",o.appendChild(n),n.src=String(i),(t=n.contentWindow.document).open(),t.write(d("document.F=Object")),t.close(),t.F):f(e);for(var s=r.length;s--;)delete m[c][r[s]];return m()};return i[u]=!0,Pi=Object.create||function(e,r){var i;return null!==e?(h[c]=t(e),i=new h,h[c]=null,i[u]=e):i=m(),void 0===r?i:n.f(i,r)}}function Wi(){if(Bi)return Li;Bi=1;var e=ct(),t=ji(),n=xt().f,r=e("unscopables"),i=Array.prototype;return void 0===i[r]&&n(i,r,{configurable:!0,value:t(null)}),Li=function(e){i[r][e]=!0}}Di||(Di=1,Wi()("flat"));var zi,Hi,Gi,qi,Yi,Vi,Xi,$i,Ji,Qi,Zi,Ki,eo,to,no,ro,io,oo,ao,so,co,lo,uo,ho,fo,mo,go,po,vo,yo,Ao,_o,bo,wo={};function Eo(){return Hi?zi:(Hi=1,zi="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView)}function xo(){if(qi)return Gi;qi=1;var e=Vt(),t=xt();return Gi=function(n,r,i){return i.get&&e(i.get,r,{getter:!0}),i.set&&e(i.set,r,{setter:!0}),t.f(n,r,i)}}function So(){if(Vi)return Yi;Vi=1;var e=Xt();return Yi=function(t,n,r){for(var i in n)e(t,i,n[i],r);return t}}function Co(){if($i)return Xi;$i=1;var e=_e(),t=TypeError;return Xi=function(n,r){if(e(r,n))return n;throw new t("Incorrect invocation")}}function Io(){if(Qi)return Ji;Qi=1;var e=mn(),t=pn(),n=RangeError;return Ji=function(r){if(void 0===r)return 0;var i=e(r),o=t(i);if(i!==o)throw new n("Wrong length or index");return o}}function To(){if(ro)return no;ro=1;var e=Ki?Zi:(Ki=1,Zi=Math.sign||function(e){var t=+e;return 0===t||t!=t?t:t<0?-1:1}),t=function(){if(to)return eo;to=1;var e=4503599627370496;return eo=function(t){return t+e-e}}(),n=Math.abs;return no=function(r,i,o,a){var s=+r,c=n(s),l=e(s);if(co||h!=h?l*(1/0):l*h}}function Ro(){if(so)return ao;so=1;var e=Array,t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;return ao={pack:function(a,s,c){var l,u,h,d=e(c),f=8*c-s-1,m=(1<>1,p=23===s?n(2,-24)-n(2,-77):0,v=a<0||0===a&&1/a<0?1:0,y=0;for((a=t(a))!=a||a===1/0?(u=a!=a?1:0,l=m):(l=r(i(a)/o),a*(h=n(2,-l))<1&&(l--,h*=2),(a+=l+g>=1?p/h:p*n(2,1-g))*h>=2&&(l++,h/=2),l+g>=m?(u=0,l=m):l+g>=1?(u=(a*h-1)*n(2,s),l+=g):(u=a*n(2,g-1)*n(2,s),l=0));s>=8;)d[y++]=255&u,u/=256,s-=8;for(l=l<0;)d[y++]=255&l,l/=256,f-=8;return d[y-1]|=128*v,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,a=(1<>1,c=o-7,l=i-1,u=e[l--],h=127&u;for(u>>=7;c>0;)h=256*h+e[l--],c-=8;for(r=h&(1<<-c)-1,h>>=-c,c+=t;c>0;)r=256*r+e[l--],c-=8;if(0===h)h=1-s;else{if(h===a)return r?NaN:u?-1/0:1/0;r+=n(2,t),h-=s}return(u?-1:1)*r*n(2,h-t)}}}function ko(){if(ho)return uo;ho=1;var e=at(),t=ve(),n=ot(),r=Gt(),i=function(){if(lo)return co;lo=1;var e=v();return co=!e(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})}(),o=r("IE_PROTO"),a=Object,s=a.prototype;return uo=i?a.getPrototypeOf:function(r){var i=n(r);if(e(i,o))return i[o];var c=i.constructor;return t(c)&&i instanceof c?c.prototype:i instanceof a?s:null}}function Oo(){if(mo)return fo;mo=1;var e=ot(),t=gn(),n=vn();return fo=function(r){for(var i=e(this),o=n(i),a=arguments.length,s=t(a>1?arguments[1]:void 0,o),c=a>2?arguments[2]:void 0,l=void 0===c?o:t(c,o);l>s;)i[s++]=r;return i},fo}function Po(){if(po)return go;po=1;var e=xt().f,t=at(),n=ct()("toStringTag");return go=function(r,i,o){r&&!o&&(r=r.prototype),r&&!t(r,n)&&e(r,n,{configurable:!0,value:i})}}function Mo(){if(yo)return vo;yo=1;var e=s(),t=he(),n=y(),r=Eo(),i=zt(),o=St(),a=xo(),c=So(),l=v(),u=Co(),h=mn(),d=pn(),f=Io(),m=function(){if(oo)return io;oo=1;var e=To();return io=Math.fround||function(t){return e(t,1.1920928955078125e-7,34028234663852886e22,11754943508222875e-54)}}(),g=Ro(),p=ko(),A=Ar(),_=Oo(),b=bi(),w=br(),E=dr(),x=Po(),S=Yt(),C=i.PROPER,I=i.CONFIGURABLE,T="ArrayBuffer",R="DataView",k="prototype",O="Wrong index",P=S.getterFor(T),M=S.getterFor(R),L=S.set,B=e[T],D=B,U=D&&D[k],F=e[R],N=F&&F[k],j=Object.prototype,W=e.Array,z=e.RangeError,H=t(_),G=t([].reverse),q=g.pack,Y=g.unpack,V=function(e){return[255&e]},X=function(e){return[255&e,e>>8&255]},$=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},J=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},Q=function(e){return q(m(e),23,4)},Z=function(e){return q(e,52,8)},K=function(e,t,n){a(e[k],t,{configurable:!0,get:function(){return n(this)[t]}})},ee=function(e,t,n,r){var i=M(e),o=f(n),a=!!r;if(o+t>i.byteLength)throw new z(O);var s=i.bytes,c=o+i.byteOffset,l=b(s,c,c+t);return a?l:G(l)},te=function(e,t,n,r,i,o){var a=M(e),s=f(n),c=r(+i),l=!!o;if(s+t>a.byteLength)throw new z(O);for(var u=a.bytes,h=s+a.byteOffset,d=0;d>24)},setUint8:function(e,t){ie(this,e,t<<24>>24)}},{unsafe:!0})}else U=(D=function(e){u(this,U);var t=f(e);L(this,{type:T,bytes:H(W(t),0),byteLength:t}),n||(this.byteLength=t,this.detached=!1)})[k],N=(F=function(e,t,r){u(this,N),u(e,U);var i=P(e),o=i.byteLength,a=h(t);if(a<0||a>o)throw new z("Wrong offset");if(a+(r=void 0===r?o-a:d(r))>o)throw new z("Wrong length");L(this,{type:R,buffer:e,byteLength:r,byteOffset:a,bytes:i.bytes}),n||(this.buffer=e,this.byteLength=r,this.byteOffset=a)})[k],n&&(K(D,"byteLength",P),K(F,"buffer",M),K(F,"byteLength",M),K(F,"byteOffset",M)),c(N,{getInt8:function(e){return ee(this,1,e)[0]<<24>>24},getUint8:function(e){return ee(this,1,e)[0]},getInt16:function(e){var t=ee(this,2,e,arguments.length>1&&arguments[1]);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=ee(this,2,e,arguments.length>1&&arguments[1]);return t[1]<<8|t[0]},getInt32:function(e){return J(ee(this,4,e,arguments.length>1&&arguments[1]))},getUint32:function(e){return J(ee(this,4,e,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(e){return Y(ee(this,4,e,arguments.length>1&&arguments[1]),23)},getFloat64:function(e){return Y(ee(this,8,e,arguments.length>1&&arguments[1]),52)},setInt8:function(e,t){te(this,1,e,V,t)},setUint8:function(e,t){te(this,1,e,V,t)},setInt16:function(e,t){te(this,2,e,X,t,arguments.length>2&&arguments[2])},setUint16:function(e,t){te(this,2,e,X,t,arguments.length>2&&arguments[2])},setInt32:function(e,t){te(this,4,e,$,t,arguments.length>2&&arguments[2])},setUint32:function(e,t){te(this,4,e,$,t,arguments.length>2&&arguments[2])},setFloat32:function(e,t){te(this,4,e,Q,t,arguments.length>2&&arguments[2])},setFloat64:function(e,t){te(this,8,e,Z,t,arguments.length>2&&arguments[2])}});return x(D,T),x(F,R),vo={ArrayBuffer:D,DataView:F}}function Lo(){if(_o)return Ao;_o=1;var e=Ae(),t=xo(),n=ct(),r=y(),i=n("species");return Ao=function(n){var o=e(n);r&&o&&!o[i]&&t(o,i,{configurable:!0,get:function(){return this}})}}!function(){if(bo)return wo;bo=1;var e=mr(),t=s(),n=Mo(),r=Lo(),i="ArrayBuffer",o=n[i];e({global:!0,constructor:!0,forced:t[i]!==o},{ArrayBuffer:o}),r(i)}();var Bo,Do={};!function(){if(Bo)return Do;Bo=1;var e=mr(),t=$r(),n=v(),r=Mo(),i=Et(),o=gn(),a=pn(),s=r.ArrayBuffer,c=r.DataView,l=c.prototype,u=t(s.prototype.slice),h=t(l.getUint8),d=t(l.setUint8);e({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:n(function(){return!new s(2).slice(1,void 0).byteLength})},{slice:function(e,t){if(u&&void 0===t)return u(i(this),e);for(var n=i(this).byteLength,r=o(e,n),l=o(void 0===t?n:t,n),f=new s(a(l-r)),m=new c(this),g=new c(f),p=0;r92||"NODE"===r&&n>94||"BROWSER"===r&&n>97)return!1;var e=new ArrayBuffer(8),t=i(e,{transfer:[e]});return 0!==e.byteLength||8!==t.byteLength})}function ua(){if(na)return ta;na=1;var e,t,n,r,i=s(),o=ca(),a=la(),c=i.structuredClone,l=i.ArrayBuffer,u=i.MessageChannel,h=!1;if(a)h=function(e){c(e,{transfer:[e]})};else if(l)try{u||(e=o("worker_threads"))&&(u=e.MessageChannel),u&&(t=new u,n=new l(2),r=function(e){t.port1.postMessage(null,[e])},2===n.byteLength&&(r(n),0===n.byteLength&&(h=r)))}catch(e){}return ta=h}function ha(){if(ia)return ra;ia=1;var e=s(),t=he(),n=pr(),r=Io(),i=function(){if(Yo)return qo;Yo=1;var e=Go(),t=TypeError;return qo=function(n){if(e(n))throw new t("ArrayBuffer is detached");return n}}(),o=Ho(),a=ua(),c=la(),l=e.structuredClone,u=e.ArrayBuffer,h=e.DataView,d=Math.min,f=u.prototype,m=h.prototype,g=t(f.slice),p=n(f,"resizable","get"),v=n(f,"maxByteLength","get"),y=t(m.getInt8),A=t(m.setInt8);return ra=(c||a)&&function(e,t,n){var s,f=o(e),m=void 0===t?f:r(t),_=!p||!p(e);if(i(e),c&&(e=l(e,{transfer:[e]}),f===m&&(n||_)))return e;if(f>=m&&(!n||_))s=g(e,0,m);else{var b=n&&!_&&v?{maxByteLength:v(e)}:void 0;s=new u(m,b);for(var w=new h(e),E=new h(s),x=d(m,f),S=0;S=0;i--)if(void 0!==t[i])try{r=e(t[i].iterator,n,r)}catch(e){n="throw",r=e}if("throw"===n)throw r;return r}}function Ga(){if(Oa)return ka;Oa=1;var e=_(),t=ji(),n=St(),r=So(),i=ct(),o=Yt(),a=Te(),s=ba().IteratorPrototype,c=Wa(),l=za(),u=Ha(),h=i("toStringTag"),d="IteratorHelper",f="WrapForValidIterator",m="normal",g="throw",p=o.set,v=function(n){var i=o.getterFor(n?f:d);return r(t(s),{next:function(){var e=i(this);if(n)return e.nextHandler();if(e.done)return c(void 0,!0);try{var t=e.nextHandler();return e.returnHandlerResult?t:c(t,e.done)}catch(t){throw e.done=!0,t}},return:function(){var t=i(this),r=t.iterator;if(t.done=!0,n){var o=a(r,"return");return o?e(o,r):c(void 0,!0)}if(t.inner)try{l(t.inner.iterator,m)}catch(e){return l(r,g,e)}if(t.openIters)try{u(t.openIters,m)}catch(e){return l(r,g,e)}return r&&l(r,m),c(void 0,!0)}})},y=v(!0),A=v(!1);return n(A,h,"Iterator Helper"),ka=function(e,t,n){var r=function(r,i){i?(i.iterator=r.iterator,i.next=r.next):i=r,i.type=t?f:d,i.returnHandlerResult=!!n,i.nextHandler=e,i.counter=0,i.done=!1,p(this,i)};return r.prototype=t?y:A,r}}function qa(){if(Ma)return Pa;Ma=1;var e=Et(),t=za();return Pa=function(n,r,i,o){try{return o?r(e(i)[0],i[1]):r(i)}catch(e){t(n,"throw",e)}}}function Ya(){return Ba?La:(Ba=1,La=function(e,t){var n="function"==typeof Iterator&&Iterator.prototype[e];if(n)try{n.call({next:null},t).next()}catch(e){return!0}})}function Va(){if(Ua)return Da;Ua=1;var e=s();return Da=function(t,n){var r=e.Iterator,i=r&&r.prototype,o=i&&i[t],a=!1;if(o)try{o.call({next:function(){return{done:!0}},return:function(){a=!0}},-1)}catch(e){e instanceof n||(a=!1)}if(!a)return o}}!function(){if(Fa)return Na;Fa=1;var e=mr(),t=_(),n=Ie(),r=Et(),i=ja(),o=Ga(),a=qa(),s=tt(),c=za(),l=Ya(),u=Va(),h=!s&&!l("filter",function(){}),d=!s&&!h&&u("filter",TypeError),f=s||h||d,m=o(function(){for(var e,n,i=this.iterator,o=this.predicate,s=this.next;;){if(e=r(t(s,i)),this.done=!!e.done)return;if(n=e.value,a(i,o,[n,this.counter++],!0))return n}});e({target:"Iterator",proto:!0,real:!0,forced:f},{filter:function(e){r(this);try{n(e)}catch(e){c(this,"throw",e)}return d?t(d,this,e):new m(i(this),{predicate:e})}})}();var Xa,$a,Ja,Qa,Za,Ka,es,ts,ns,rs,is,os={};function as(){return $a?Xa:($a=1,Xa={})}function ss(){if(Qa)return Ja;Qa=1;var e=ct(),t=as(),n=e("iterator"),r=Array.prototype;return Ja=function(e){return void 0!==e&&(t.Array===e||r[n]===e)}}function cs(){if(Ka)return Za;Ka=1;var e=wr(),t=Te(),n=me(),r=as(),i=ct()("iterator");return Za=function(o){if(!n(o))return t(o,i)||t(o,"@@iterator")||r[e(o)]}}function ls(){if(ts)return es;ts=1;var e=_(),t=Ie(),n=Et(),r=Ce(),i=cs(),o=TypeError;return es=function(a,s){var c=arguments.length<2?i(a):s;if(t(c))return n(e(c,a));throw new o(r(a)+" is not iterable")},es}function us(){if(rs)return ns;rs=1;var e=Jr(),t=_(),n=Et(),r=Ce(),i=ss(),o=vn(),a=_e(),s=ls(),c=cs(),l=za(),u=TypeError,h=function(e,t){this.stopped=e,this.result=t},d=h.prototype;return ns=function(f,m,g){var p,v,y,A,_,b,w,E=g&&g.that,x=!(!g||!g.AS_ENTRIES),S=!(!g||!g.IS_RECORD),C=!(!g||!g.IS_ITERATOR),I=!(!g||!g.INTERRUPTED),T=e(m,E),R=function(e){return p&&l(p,"normal"),new h(!0,e)},k=function(e){return x?(n(e),I?T(e[0],e[1],R):T(e[0],e[1])):I?T(e,R):T(e)};if(S)p=f.iterator;else if(C)p=f;else{if(!(v=c(f)))throw new u(r(f)+" is not iterable");if(i(v)){for(y=0,A=o(f);A>y;y++)if((_=k(f[y]))&&a(d,_))return _;return new h(!1)}p=s(f,v)}for(b=S?f.next:p.next;!(w=t(b,p)).done;){try{_=k(w.value)}catch(e){l(p,"throw",e)}if("object"==typeof _&&_&&a(d,_))return _}return new h(!1)}}!function(){if(is)return os;is=1;var e=mr(),t=_(),n=us(),r=Ie(),i=Et(),o=ja(),a=za(),s=Va()("forEach",TypeError);e({target:"Iterator",proto:!0,real:!0,forced:s},{forEach:function(e){i(this);try{r(e)}catch(e){a(this,"throw",e)}if(s)return t(s,this,e);var c=o(this),l=0;n(c,function(t){e(t,l++)},{IS_RECORD:!0})}})}();var hs,ds={};!function(){if(hs)return ds;hs=1;var e=mr(),t=_(),n=Ie(),r=Et(),i=ja(),o=Ga(),a=qa(),s=za(),c=Ya(),l=Va(),u=tt(),h=!u&&!c("map",function(){}),d=!u&&!h&&l("map",TypeError),f=u||h||d,m=o(function(){var e=this.iterator,n=r(t(this.next,e));if(!(this.done=!!n.done))return a(e,this.mapper,[n.value,this.counter++],!0)});e({target:"Iterator",proto:!0,real:!0,forced:f},{map:function(e){r(this);try{n(e)}catch(e){s(this,"throw",e)}return d?t(d,this,e):new m(i(this),{mapper:e})}})}();var fs,ms,gs,ps={};!function(){if(gs)return ps;gs=1;var e=mr(),t=Ae(),n=gr(),r=_(),i=he(),o=v(),a=ve(),s=Se(),c=bi(),l=function(){if(ms)return fs;ms=1;var e=he(),t=Vr(),n=ve(),r=de(),i=Er(),o=e([].push);return fs=function(e){if(n(e))return e;if(t(e)){for(var a=e.length,s=[],c=0;cb)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")})}!function(){if(Ms)return Ls;Ms=1;var e=y(),t=s(),n=he(),r=fr(),i=br(),o=St(),a=ji(),c=_n().f,l=_e(),u=function(){if(_s)return As;_s=1;var e=ye(),t=de(),n=ct()("match");return As=function(r){var i;return e(r)&&(void 0!==(i=r[n])?!!i:"RegExp"===t(r))}}(),h=Er(),d=Ds(),f=Us(),m=_r(),g=Xt(),p=v(),A=at(),_=Yt().enforce,b=Lo(),w=ct(),E=Fs(),x=Ns(),S=w("match"),C=t.RegExp,I=C.prototype,T=t.SyntaxError,R=n(I.exec),k=n("".charAt),O=n("".replace),P=n("".indexOf),M=n("".slice),L=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,B=/a/g,D=/a/g,U=new C(B)!==B,F=f.MISSED_STICKY,N=f.UNSUPPORTED_Y,j=e&&(!U||F||E||x||p(function(){return D[S]=!1,C(B)!==B||C(D)===D||"/a/i"!==String(C(B,"i"))}));if(r("RegExp",j)){for(var W=function(e,t){var n,r,s,c,f,m,g=l(I,this),p=u(e),v=void 0===t,y=[],b=e;if(!g&&p&&v&&e.constructor===W)return e;if((p||l(I,e))&&(e=e.source,v&&(t=d(b))),e=void 0===e?"":h(e),t=void 0===t?"":h(t),b=e,E&&"dotAll"in B&&(r=!!t&&P(t,"s")>-1)&&(t=O(t,/s/g,"")),n=t,F&&"sticky"in B&&(s=!!t&&P(t,"y")>-1)&&N&&(t=O(t,/y/g,"")),x&&(c=function(e){for(var t,n=e.length,r=0,i="",o=[],s=a(null),c=!1,l=!1,u=0,h="";r<=n;r++){if("\\"===(t=k(e,r)))t+=k(e,++r);else if("]"===t)c=!1;else if(!c)switch(!0){case"["===t:c=!0;break;case"("===t:if(i+=t,"?:"===M(e,r+1,r+3))continue;R(L,M(e,r+1))&&(r+=2,l=!0),u++;continue;case">"===t&&l:if(""===h||A(s,h))throw new T("Invalid capture group name");s[h]=!0,o[o.length]=[h,u],l=!1,h="";continue}l?h+=t:i+=t}return[i,o]}(e),e=c[0],y=c[1]),f=i(C(e,t),g?this:I,W),(r||s||y.length)&&(m=_(f),r&&(m.dotAll=!0,m.raw=W(function(e){for(var t,n=e.length,r=0,i="",o=!1;r<=n;r++)"\\"!==(t=k(e,r))?o||"."!==t?("["===t?o=!0:"]"===t&&(o=!1),i+=t):i+="[\\s\\S]":i+=t+k(e,++r);return i}(e),n)),s&&(m.sticky=!0),y.length&&(m.groups=y)),e!==b)try{o(f,"source",""===b?"(?:)":b)}catch(e){}return f},z=c(C),H=0;z.length>H;)m(W,C,z[H++]);I.constructor=W,W.prototype=I,g(t,"RegExp",W,{constructor:!0})}b("RegExp")}();var js,Ws={};!function(){if(js)return Ws;js=1;var e=y(),t=Fs(),n=de(),r=xo(),i=Yt().get,o=RegExp.prototype,a=TypeError;e&&t&&r(o,"dotAll",{configurable:!0,get:function(){if(this!==o){if("RegExp"===n(this))return!!i(this).dotAll;throw new a("Incompatible receiver, RegExp required")}}})}();var zs,Hs,Gs,qs={};function Ys(){if(Hs)return zs;Hs=1;var e,t,n=_(),r=he(),i=Er(),o=Bs(),a=Us(),s=it(),c=ji(),l=Yt().get,u=Fs(),h=Ns(),d=s("native-string-replace",String.prototype.replace),f=RegExp.prototype.exec,m=f,g=r("".charAt),p=r("".indexOf),v=r("".replace),y=r("".slice),A=(t=/b*/g,n(f,e=/a/,"a"),n(f,t,"a"),0!==e.lastIndex||0!==t.lastIndex),b=a.BROKEN_CARET,w=void 0!==/()??/.exec("")[1];return(A||w||b||u||h)&&(m=function(e){var t,r,a,s,u,h,_,E=this,x=l(E),S=i(e),C=x.raw;if(C)return C.lastIndex=E.lastIndex,t=n(m,C,S),E.lastIndex=C.lastIndex,t;var I=x.groups,T=b&&E.sticky,R=n(o,E),k=E.source,O=0,P=S;if(T&&(R=v(R,"y",""),-1===p(R,"g")&&(R+="g"),P=y(S,E.lastIndex),E.lastIndex>0&&(!E.multiline||E.multiline&&"\n"!==g(S,E.lastIndex-1))&&(k="(?: "+k+")",P=" "+P,O++),r=new RegExp("^(?:"+k+")",R)),w&&(r=new RegExp("^"+k+"$(?!\\s)",R)),A&&(a=E.lastIndex),s=n(f,T?r:E,P),T?s?(s.input=y(s.input,O),s[0]=y(s[0],O),s.index=E.lastIndex,E.lastIndex+=s[0].length):E.lastIndex=0:A&&s&&(E.lastIndex=E.global?s.index+s[0].length:a),w&&s&&s.length>1&&n(d,s[0],r,function(){for(u=1;u=f?e?"":void 0:(l=o(h,d))<55296||l>56319||d+1===f||(u=o(h,d+1))<56320||u>57343?e?i(h,d):l:e?a(h,d,d+2):u-56320+(l-55296<<10)+65536}};return Js={codeAt:s(!1),charAt:s(!0)}}function sc(){if(Ks)return Zs;Ks=1;var e=ac().charAt;return Zs=function(t,n,r){return n+(r?e(t,n).length:1)}}function cc(){if(tc)return ec;tc=1;var e=he(),t=ot(),n=Math.floor,r=e("".charAt),i=e("".replace),o=e("".slice),a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,s=/\$([$&'`]|\d{1,2})/g;return ec=function(e,c,l,u,h,d){var f=l+e.length,m=u.length,g=s;return void 0!==h&&(h=t(h),g=a),i(d,g,function(t,i){var a;switch(r(i,0)){case"$":return"$";case"&":return e;case"`":return o(c,0,l);case"'":return o(c,f);case"<":a=h[o(i,1,-1)];break;default:var s=+i;if(0===s)return t;if(s>m){var d=n(s/10);return 0===d?t:d<=m?void 0===u[d-1]?r(i,1):u[d-1]+r(i,1):t}a=u[s-1]}return void 0===a?"":a})}}!function(){if(ic)return oc;ic=1;var e=gr(),t=_(),n=he(),r=function(){if($s)return Xs;$s=1,Vs();var e=_(),t=Xt(),n=Ys(),r=v(),i=ct(),o=St(),a=i("species"),s=RegExp.prototype;return Xs=function(c,l,u,h){var d=i(c),f=!r(function(){var e={};return e[d]=function(){return 7},7!==""[c](e)}),m=f&&!r(function(){var e=!1,t=/a/;return"split"===c&&((t={}).constructor={},t.constructor[a]=function(){return t},t.flags="",t[d]=/./[d]),t.exec=function(){return e=!0,null},t[d](""),!e});if(!f||!m||u){var g=/./[d],p=l(d,""[c],function(t,r,i,o,a){var c=r.exec;return c===n||c===s.exec?f&&!a?{done:!0,value:e(g,r,i,o)}:{done:!0,value:e(t,i,r,o)}:{done:!1}});t(String.prototype,c,p[0]),t(s,d,p[1])}h&&o(s[d],"sham",!0)}}(),i=v(),o=Et(),a=ve(),s=ye(),c=mn(),l=pn(),u=Er(),h=ge(),d=sc(),f=Te(),m=cc(),g=Ds(),p=function(){if(rc)return nc;rc=1;var e=_(),t=Et(),n=ve(),r=de(),i=Ys(),o=TypeError;return nc=function(a,s){var c=a.exec;if(n(c)){var l=e(c,a,s);return null!==l&&t(l),l}if("RegExp"===r(a))return e(i,a,s);throw new o("RegExp#exec called on incompatible receiver")}}(),y=ct()("replace"),A=Math.max,b=Math.min,w=n([].concat),E=n([].push),x=n("".indexOf),S=n("".slice),C=function(e){return void 0===e?e:String(e)},I="$0"==="a".replace(/./,"$0"),T=!!/./[y]&&""===/./[y]("a","$0");r("replace",function(n,r,i){var v=T?"$":"$0";return[function(e,n){var i=h(this),o=s(e)?f(e,y):void 0;return o?t(o,e,i,n):t(r,u(i),e,n)},function(t,n){var s=o(this),h=u(t);if("string"==typeof n&&-1===x(n,v)&&-1===x(n,"$<")){var f=i(r,s,h,n);if(f.done)return f.value}var y=a(n);y||(n=u(n));var _,I=u(g(s)),T=-1!==x(I,"g");T&&(_=-1!==x(I,"u"),s.lastIndex=0);for(var R,k=[];null!==(R=p(s,h))&&(E(k,R),T);){""===u(R[0])&&(s.lastIndex=d(h,l(s.lastIndex),_))}for(var O="",P=0,M=0;M=P&&(O+=S(h,P,D)+L,P=D+B.length)}return O+S(h,P)}]},!!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")})||!I||T)}();var lc,uc,hc,dc,fc,mc,gc,pc={};function vc(){return uc?lc:(uc=1,lc="\t\n\v\f\r                 \u2028\u2029\ufeff")}!function(){if(gc)return pc;gc=1;var e=mr(),t=function(){if(dc)return hc;dc=1;var e=he(),t=ge(),n=Er(),r=vc(),i=e("".replace),o=RegExp("^["+r+"]+"),a=RegExp("(^|[^"+r+"])["+r+"]+$"),s=function(e){return function(r){var s=n(t(r));return 1&e&&(s=i(s,o,"")),2&e&&(s=i(s,a,"$1")),s}};return hc={start:s(1),end:s(2),trim:s(3)}}().trim,n=function(){if(mc)return fc;mc=1;var e=zt().PROPER,t=v(),n=vc();return fc=function(r){return t(function(){return!!n[r]()||"​…᠎"!=="​…᠎"[r]()||e&&n[r].name!==r})}}();e({target:"String",proto:!0,forced:n("trim")},{trim:function(){return t(this)}})}();var yc,Ac,_c,bc,wc,Ec,xc,Sc,Cc,Ic,Tc,Rc,kc,Oc,Pc,Mc,Lc,Bc,Dc,Uc,Fc,Nc,jc,Wc,zc,Hc,Gc,qc,Yc={exports:{}};function Vc(){if(Ac)return yc;Ac=1;var e=ct()("iterator"),t=!1;try{var n=0,r={next:function(){return{done:!!n++}},return:function(){t=!0}};r[e]=function(){return this},Array.from(r,function(){throw 2})}catch(e){}return yc=function(n,r){try{if(!r&&!t)return!1}catch(e){return!1}var i=!1;try{var o={};o[e]=function(){return{next:function(){return{done:i=!0}}}},n(o)}catch(e){}return i}}function Xc(){if(bc)return _c;bc=1;var e,t,n,r=Eo(),i=y(),o=s(),a=ve(),c=ye(),l=at(),u=wr(),h=Ce(),d=St(),f=Xt(),m=xo(),g=_e(),p=ko(),v=Ar(),A=ct(),_=st(),b=Yt(),w=b.enforce,E=b.get,x=o.Int8Array,S=x&&x.prototype,C=o.Uint8ClampedArray,I=C&&C.prototype,T=x&&p(x),R=S&&p(S),k=Object.prototype,O=o.TypeError,P=A("toStringTag"),M=_("TYPED_ARRAY_TAG"),L="TypedArrayConstructor",B=r&&!!v&&"Opera"!==u(o.opera),D=!1,U={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},N=function(e){var t=p(e);if(c(t)){var n=E(t);return n&&l(n,L)?n[L]:N(t)}},j=function(e){if(!c(e))return!1;var t=u(e);return l(U,t)||l(F,t)};for(e in U)(n=(t=o[e])&&t.prototype)?w(n)[L]=t:B=!1;for(e in F)(n=(t=o[e])&&t.prototype)&&(w(n)[L]=t);if((!B||!a(T)||T===Function.prototype)&&(T=function(){throw new O("Incorrect invocation")},B))for(e in U)o[e]&&v(o[e],T);if((!B||!R||R===k)&&(R=T.prototype,B))for(e in U)o[e]&&v(o[e].prototype,R);if(B&&p(I)!==R&&v(I,R),i&&!l(R,P))for(e in D=!0,m(R,P,{configurable:!0,get:function(){return c(this)?this[M]:void 0}}),U)o[e]&&d(o[e],M,e);return _c={NATIVE_ARRAY_BUFFER_VIEWS:B,TYPED_ARRAY_TAG:D&&M,aTypedArray:function(e){if(j(e))return e;throw new O("Target is not a typed array")},aTypedArrayConstructor:function(e){if(a(e)&&(!v||g(T,e)))return e;throw new O(h(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(i){if(n)for(var a in U){var s=o[a];if(s&&l(s.prototype,e))try{delete s.prototype[e]}catch(n){try{s.prototype[e]=t}catch(e){}}}R[e]&&!n||f(R,e,n?t:B&&S[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,a;if(i){if(v){if(n)for(r in U)if((a=o[r])&&l(a,e))try{delete a[e]}catch(e){}if(T[e]&&!n)return;try{return f(T,e,n?t:B&&T[e]||t)}catch(e){}}for(r in U)!(a=o[r])||a[e]&&!n||f(a,e,t)}},getTypedArrayConstructor:N,isView:function(e){if(!c(e))return!1;var t=u(e);return"DataView"===t||l(U,t)||l(F,t)},isTypedArray:j,TypedArray:T,TypedArrayPrototype:R}}function $c(){if(Sc)return xc;Sc=1;var e=ye(),t=Math.floor;return xc=Number.isInteger||function(n){return!e(n)&&isFinite(n)&&t(n)===n}}function Jc(){if(Ic)return Cc;Ic=1;var e=mn(),t=RangeError;return Cc=function(n){var r=e(n);if(r<0)throw new t("The argument can't be less than 0");return r}}function Qc(){if(Rc)return Tc;Rc=1;var e=Jc(),t=RangeError;return Tc=function(n,r){var i=e(n);if(i%r)throw new t("Wrong offset");return i}}function Zc(){if(Oc)return kc;Oc=1;var e=Math.round;return kc=function(t){var n=e(t);return n<0?0:n>255?255:255&n}}function Kc(){if(Mc)return Pc;Mc=1;var e=Qr(),t=Ce(),n=TypeError;return Pc=function(r){if(e(r))return r;throw new n(t(r)+" is not a constructor")}}function el(){if(Bc)return Lc;Bc=1;var e=wr();return Lc=function(t){var n=e(t);return"BigInt64Array"===n||"BigUint64Array"===n}}function tl(){if(Uc)return Dc;Uc=1;var e=lt(),t=TypeError;return Dc=function(n){var r=e(n,"number");if("number"==typeof r)throw new t("Can't convert number to bigint");return BigInt(r)}}function nl(){if(Nc)return Fc;Nc=1;var e=Jr(),t=_(),n=Kc(),r=ot(),i=vn(),o=ls(),a=cs(),s=ss(),c=el(),l=Xc().aTypedArrayConstructor,u=tl();return Fc=function(h){var d,f,m,g,p,v,y,A,_=n(this),b=r(h),w=arguments.length,E=w>1?arguments[1]:void 0,x=void 0!==E,S=a(b);if(S&&!s(S))for(A=(y=o(b,S)).next,b=[];!(v=t(A,y)).done;)b.push(v.value);for(x&&w>2&&(E=e(E,arguments[2])),f=i(b),m=new(l(_))(f),g=c(m),d=0;f>d;d++)p=x?E(b[d],d):b[d],m[d]=g?u(p):+p;return m},Fc}function rl(){if(Hc)return zc;Hc=1;var e=vn();return zc=function(t,n,r){for(var i=0,o=arguments.length>2?r:e(n),a=new t(o);o>i;)a[i]=n[i++];return a},zc}function il(){if(Gc)return Yc.exports;Gc=1;var e=mr(),t=s(),n=_(),r=y(),i=function(){if(Ec)return wc;Ec=1;var e=s(),t=v(),n=Vc(),r=Xc().NATIVE_ARRAY_BUFFER_VIEWS,i=e.ArrayBuffer,o=e.Int8Array;return wc=!r||!t(function(){o(1)})||!t(function(){new o(-1)})||!n(function(e){new o,new o(null),new o(1.5),new o(e)},!0)||t(function(){return 1!==new o(new i(2),1,void 0).length})}(),o=Xc(),a=Mo(),c=Co(),l=ue(),u=St(),h=$c(),d=pn(),f=Io(),m=Qc(),g=Zc(),p=ut(),A=at(),b=wr(),w=ye(),E=Se(),x=ji(),S=_e(),C=Ar(),I=_n().f,T=nl(),R=function(){if(Wc)return jc;Wc=1;var e=Jr(),t=he(),n=fe(),r=ot(),i=vn(),o=Kr(),a=t([].push),s=function(t){var s=1===t,c=2===t,l=3===t,u=4===t,h=6===t,d=7===t,f=5===t||h;return function(m,g,p,v){for(var y,A,_=r(m),b=n(_),w=i(b),E=e(g,p),x=0,S=v||o,C=s?S(m,w):c||d?S(m,0):void 0;w>x;x++)if((f||x in b)&&(A=E(y=b[x],x,_),t))if(s)C[x]=A;else if(A)switch(t){case 3:return!0;case 5:return y;case 6:return x;case 2:a(C,y)}else switch(t){case 4:return!1;case 7:a(C,y)}return h?-1:l||u?u:C}};return jc={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}}().forEach,k=Lo(),O=xo(),P=xt(),M=ft(),L=rl(),B=Yt(),D=br(),U=B.get,F=B.set,N=B.enforce,j=P.f,W=M.f,z=t.RangeError,H=a.ArrayBuffer,G=H.prototype,q=a.DataView,Y=o.NATIVE_ARRAY_BUFFER_VIEWS,V=o.TYPED_ARRAY_TAG,X=o.TypedArray,$=o.TypedArrayPrototype,J=o.isTypedArray,Q="BYTES_PER_ELEMENT",Z="Wrong length",K=function(e,t){O(e,t,{configurable:!0,get:function(){return U(this)[t]}})},ee=function(e){var t;return S(G,e)||"ArrayBuffer"===(t=b(e))||"SharedArrayBuffer"===t},te=function(e,t){return J(e)&&!E(t)&&t in e&&h(+t)&&t>=0},ne=function(e,t){return t=p(t),te(e,t)?l(2,e[t]):W(e,t)},re=function(e,t,n){return t=p(t),!(te(e,t)&&w(n)&&A(n,"value"))||A(n,"get")||A(n,"set")||n.configurable||A(n,"writable")&&!n.writable||A(n,"enumerable")&&!n.enumerable?j(e,t,n):(e[t]=n.value,e)};return r?(Y||(M.f=ne,P.f=re,K($,"buffer"),K($,"byteOffset"),K($,"byteLength"),K($,"length")),e({target:"Object",stat:!0,forced:!Y},{getOwnPropertyDescriptor:ne,defineProperty:re}),Yc.exports=function(r,o,a){var s=r.match(/\d+/)[0]/8,l=r+(a?"Clamped":"")+"Array",h="get"+r,p="set"+r,v=t[l],y=v,A=y&&y.prototype,_={},b=function(e,t){j(e,t,{get:function(){return function(e,t){var n=U(e);return n.view[h](t*s+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,n){var r=U(e);r.view[p](t*s+r.byteOffset,a?g(n):n,!0)}(this,t,e)},enumerable:!0})};Y?i&&(y=o(function(e,t,r,i){return c(e,A),D(w(t)?ee(t)?void 0!==i?new v(t,m(r,s),i):void 0!==r?new v(t,m(r,s)):new v(t):J(t)?L(y,t):n(T,y,t):new v(f(t)),e,y)}),C&&C(y,X),R(I(v),function(e){e in y||u(y,e,v[e])}),y.prototype=A):(y=o(function(e,t,r,i){c(e,A);var o,a,l,u=0,h=0;if(w(t)){if(!ee(t))return J(t)?L(y,t):n(T,y,t);o=t,h=m(r,s);var g=t.byteLength;if(void 0===i){if(g%s)throw new z(Z);if((a=g-h)<0)throw new z(Z)}else if((a=d(i)*s)+h>g)throw new z(Z);l=a/s}else l=f(t),o=new H(a=l*s);for(F(e,{buffer:o,byteOffset:h,byteLength:a,length:l,view:new q(o)});u=0?a:o+a;return s<0||s>=o?void 0:i[s]})}();var sl,cl={};!function(){if(sl)return cl;sl=1;var e=Xc(),t=Oo(),n=tl(),r=wr(),i=_(),o=he(),a=v(),s=e.aTypedArray,c=e.exportTypedArrayMethod,l=o("".slice);c("fill",function(e){var o=arguments.length;s(this);var a="Big"===l(r(this),0,3)?n(e):+e;return i(t,this,a,o>1?arguments[1]:void 0,o>2?arguments[2]:void 0)},a(function(){var e=0;return new Int8Array(2).fill({valueOf:function(){return e++}}),1!==e}))}();var ll,ul,hl,dl={};function fl(){if(ul)return ll;ul=1;var e=Jr(),t=fe(),n=ot(),r=vn(),i=function(i){var o=1===i;return function(a,s,c){for(var l,u=n(a),h=t(u),d=r(h),f=e(s,c);d-- >0;)if(f(l=h[d],d,u))switch(i){case 0:return l;case 1:return d}return o?-1:void 0}};return ll={findLast:i(0),findLastIndex:i(1)}}!function(){if(hl)return dl;hl=1;var e=Xc(),t=fl().findLast,n=e.aTypedArray;(0,e.exportTypedArrayMethod)("findLast",function(e){return t(n(this),e,arguments.length>1?arguments[1]:void 0)})}();var ml,gl={};!function(){if(ml)return gl;ml=1;var e=Xc(),t=fl().findLastIndex,n=e.aTypedArray;(0,e.exportTypedArrayMethod)("findLastIndex",function(e){return t(n(this),e,arguments.length>1?arguments[1]:void 0)})}();var pl,vl={};!function(){if(pl)return vl;pl=1;var e=s(),t=_(),n=Xc(),r=vn(),i=Qc(),o=ot(),a=v(),c=e.RangeError,l=e.Int8Array,u=l&&l.prototype,h=u&&u.set,d=n.aTypedArray,f=n.exportTypedArrayMethod,m=!a(function(){var e=new Uint8ClampedArray(2);return t(h,e,{length:1,0:3},1),3!==e[1]}),g=m&&n.NATIVE_ARRAY_BUFFER_VIEWS&&a(function(){var e=new l(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]});f("set",function(e){d(this);var n=i(arguments.length>1?arguments[1]:void 0,1),a=o(e);if(m)return t(h,this,a,n);var s=this.length,l=r(a),u=0;if(l+n>s)throw new c("Wrong length");for(;u0&&1/n<0?1:-1:t>n}}(e))},!p||g)}();var _l,bl,wl,El={};function xl(){if(bl)return _l;bl=1;var e=vn();return _l=function(t,n){for(var r=e(t),i=new n(r),o=0;o=s||l<0)throw new n("Incorrect index");for(var u=new i(s),h=0;h=t.length)return e.target=null,a(void 0,!0);switch(e.kind){case"keys":return a(n,!1);case"values":return a(t[n],!1)}return a([n,t[n]],!1)},"values");var d=n.Arguments=n.Array;if(t("keys"),t("values"),t("entries"),!s&&c&&"values"!==d.name)try{i(d,"name",{value:"values"})}catch(e){}return jl}!function(){if(zl)return Hl;zl=1;var e=s(),t=Ml?Pl:(Ml=1,Pl={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}),n=function(){if(Bl)return Ll;Bl=1;var e=ht()("span").classList,t=e&&e.constructor&&e.constructor.prototype;return Ll=t===Object.prototype?void 0:t}(),r=Yl(),i=St(),o=Po(),a=ct()("iterator"),c=r.values,l=function(e,n){if(e){if(e[a]!==c)try{i(e,a,c)}catch(t){e[a]=c}if(o(e,n,!0),t[n])for(var s in r)if(e[s]!==r[s])try{i(e,s,r[s])}catch(t){e[s]=r[s]}}};for(var u in t)l(e[u]&&e[u].prototype,u);l(n,"DOMTokenList")}();var Vl,Xl,$l,Jl,Ql,Zl={};function Kl(){if(Xl)return Vl;Xl=1;var e=y(),t=v(),n=Et(),r=xr(),i=Error.prototype.toString,o=t(function(){if(e){var t=Object.create(Object.defineProperty({},"name",{get:function(){return this===t}}));if("true"!==i.call(t))return!0}return"2: 1"!==i.call({message:1,name:2})||"Error"!==i.call({})});return Vl=o?function(){var e=n(this),t=r(e.name,"Error"),i=r(e.message);return t?i?t+": "+i:t:i}:i}function eu(){return Jl?$l:(Jl=1,$l={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}})}!function(){if(Ql)return Zl;Ql=1;var e=mr(),t=Ae(),n=ca(),r=v(),i=ji(),o=ue(),a=xt().f,s=Xt(),c=xo(),l=at(),u=Co(),h=Et(),d=Kl(),f=xr(),m=eu(),g=Cr(),p=Yt(),A=y(),_=tt(),b="DOMException",w="DATA_CLONE_ERR",E=t("Error"),x=t(b)||function(){try{(new(t("MessageChannel")||n("worker_threads").MessageChannel)).port1.postMessage(new WeakMap)}catch(e){if(e.name===w&&25===e.code)return e.constructor}}(),S=x&&x.prototype,C=E.prototype,I=p.set,T=p.getterFor(b),R="stack"in new E(b),k=function(e){return l(m,e)&&m[e].m?m[e].c:0},O=function(){u(this,P);var e=arguments.length,t=f(e<1?void 0:arguments[0]),n=f(e<2?void 0:arguments[1],"Error"),r=k(n);if(I(this,{type:b,name:n,message:t,code:r}),A||(this.name=n,this.message=t,this.code=r),R){var i=new E(t);i.name=b,a(this,"stack",o(1,g(i.stack,1)))}},P=O.prototype=i(C),M=function(e){return{enumerable:!0,configurable:!0,get:e}},L=function(e){return M(function(){return T(this)[e]})};A&&(c(P,"code",L("code")),c(P,"message",L("message")),c(P,"name",L("name"))),a(P,"constructor",o(1,O));var B=r(function(){return!(new x instanceof E)}),D=B||r(function(){return C.toString!==d||"2: 1"!==String(new x(1,2))}),U=B||r(function(){return 25!==new x(1,"DataCloneError").code}),F=B||25!==x[w]||25!==S[w],N=_?D||U||F:B;e({global:!0,constructor:!0,forced:N},{DOMException:N?O:x});var j=t(b),W=j.prototype;for(var z in D&&(_||x===j)&&s(W,"toString",d),U&&A&&x===j&&c(W,"code",M(function(){return k(h(this).name)})),m)if(l(m,z)){var H=m[z],G=H.s,q=o(6,H.c);l(j,G)||a(j,G,q),l(W,G)||a(W,G,q)}}();var tu,nu={};!function(){if(tu)return nu;tu=1;var e=mr(),t=s(),n=Ae(),r=ue(),i=xt().f,o=at(),a=Co(),c=br(),l=xr(),u=eu(),h=Cr(),d=y(),f=tt(),m="DOMException",g=n("Error"),p=n(m),v=function(){a(this,A);var e=arguments.length,t=l(e<1?void 0:arguments[0]),n=l(e<2?void 0:arguments[1],"Error"),o=new p(t,n),s=new g(t);return s.name=m,i(o,"stack",r(1,h(s.stack,1))),c(o,this,v),o},A=v.prototype=p.prototype,_="stack"in new g(m),b="stack"in new p(1,2),w=p&&d&&Object.getOwnPropertyDescriptor(t,m),E=!(!w||w.writable&&w.configurable),x=_&&!E&&!b;e({global:!0,constructor:!0,forced:f||x},{DOMException:x?v:p});var S=n(m),C=S.prototype;if(C.constructor!==S)for(var I in f||i(C,"constructor",r(1,S)),u)if(o(u,I)){var T=u[I],R=T.s;o(S,R)||i(S,R,r(6,T.c))}}();var ru,iu={};!function(){if(ru)return iu;ru=1;var e=Ae(),t="DOMException";Po()(e(t),t)}();var ou,au={};!function(){if(ou)return au;ou=1;var e=mr(),t=s(),n=xo(),r=y(),i=TypeError,o=Object.defineProperty,a=t.self!==t;try{if(r){var c=Object.getOwnPropertyDescriptor(t,"self");!a&&c&&c.get&&c.enumerable||n(t,"self",{get:function(){return t},set:function(e){if(this!==t)throw new i("Illegal invocation");o(t,"self",{value:e,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})}else e({global:!0,simple:!0,forced:a},{self:t})}catch(e){}}();var su,cu,lu,uu,hu,du,fu,mu,gu,pu,vu,yu={},Au={};function _u(){if(lu)return cu;lu=1;var e=v(),t=ct(),n=y(),r=tt(),i=t("iterator");return cu=!e(function(){var e=new URL("b?a=1&b=2&c=3","https://a"),t=e.searchParams,o=new URLSearchParams("a=1&a=2&b=3"),a="";return e.pathname="c%20d",t.forEach(function(e,n){t.delete("b"),a+=n+e}),o.delete("a",2),o.delete("b",void 0),r&&(!e.toJSON||!o.has("a",1)||o.has("a",2)||!o.has("a",void 0)||o.has("b"))||!t.size&&(r||!n)||!t.sort||"https://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[i]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==a||"x"!==new URL("https://x",void 0).host})}function bu(){if(fu)return du;fu=1;var e=Jr(),t=_(),n=ot(),r=qa(),i=ss(),o=Qr(),a=vn(),s=_a(),c=ls(),l=cs(),u=Array;return du=function(h){var d=n(h),f=o(this),m=arguments.length,g=m>1?arguments[1]:void 0,p=void 0!==g;p&&(g=e(g,m>2?arguments[2]:void 0));var v,y,A,_,b,w,E=l(d),x=0;if(!E||this===u&&i(E))for(v=a(d),y=f?new this(v):u(v);v>x;x++)w=p?g(d[x],x):d[x],s(y,x,w);else for(y=f?new this:[],b=(_=c(d,E)).next;!(A=t(b,_)).done;x++)w=p?r(_,g,[A.value,x],!0):A.value,s(y,x,w);return y.length=x,y},du}function wu(){if(gu)return mu;gu=1;var e=he(),t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=RangeError,a=e(r.exec),s=Math.floor,c=String.fromCharCode,l=e("".charCodeAt),u=e([].join),h=e([].push),d=e("".replace),f=e("".split),m=e("".toLowerCase),g=function(e){return e+22+75*(e<26)},p=function(e,t,n){var r=0;for(e=n?s(e/700):e>>1,e+=s(e/t);e>455;)e=s(e/35),r+=36;return s(r+36*e/(e+38))},v=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=f&&a<_&&(_=a);var b=A+1;if(_-f>s((t-m)/b))throw new o(i);for(m+=(_-f)*b,f=_,r=0;rt)throw new o(i);if(a===f){for(var w=m,E=36;;){var x=E<=v?1:E>=v+26?26:E-v;if(wc;){if(t=+arguments[c++],n(t,1114111)!==t)throw new r(t+" is not a valid code point");o[c]=t<65536?i(t):i(55296+((t-=65536)>>10),t%1024+56320)}return a(o,"")}})}();var e=mr(),t=s(),n=Pu(),r=Ae(),i=_(),o=he(),a=y(),c=_u(),l=Xt(),u=xo(),h=So(),d=Po(),f=Gl(),m=Yt(),g=Co(),p=ve(),v=at(),A=Jr(),b=wr(),w=Et(),E=ye(),x=Er(),S=ji(),C=ue(),I=ls(),T=cs(),R=Wa(),k=Eu(),O=ct(),P=wi(),M=O("iterator"),L="URLSearchParams",B=L+"Iterator",D=m.set,U=m.getterFor(L),F=m.getterFor(B),N=n("fetch"),j=n("Request"),W=n("Headers"),z=j&&j.prototype,H=W&&W.prototype,G=t.TypeError,q=t.encodeURIComponent,Y=String.fromCharCode,V=r("String","fromCodePoint"),X=parseInt,$=o("".charAt),J=o([].join),Q=o([].push),Z=o("".replace),K=o([].shift),ee=o([].splice),te=o("".split),ne=o("".slice),re=o(/./.exec),ie=/\+/g,oe=/^[0-9a-f]+$/i,ae=function(e,t){var n=ne(e,t,t+2);return re(oe,n)?X(n,16):NaN},se=function(e){for(var t=0,n=128;n>0&&0!==(e&n);n>>=1)t++;return t},ce=function(e){var t=null;switch(e.length){case 1:t=e[0];break;case 2:t=(31&e[0])<<6|63&e[1];break;case 3:t=(15&e[0])<<12|(63&e[1])<<6|63&e[2];break;case 4:t=(7&e[0])<<18|(63&e[1])<<12|(63&e[2])<<6|63&e[3]}return t>1114111?null:t},le=function(e){for(var t=(e=Z(e,ie," ")).length,n="",r=0;rt){n+="%",r++;continue}var o=ae(e,r+1);if(o!=o){n+=i,r++;continue}r+=2;var a=se(o);if(0===a)i=Y(o);else{if(1===a||a>4){n+="�",r++;continue}for(var s=[o],c=1;ct||"%"!==$(e,r));){var l=ae(e,r+1);if(l!=l){r+=3;break}if(l>191||l<128)break;Q(s,l),r+=2,c++}if(s.length!==a){n+="�";continue}var u=ce(s);null===u?n+="�":i=V(u)}}n+=i,r++}return n},de=/[!'()~]|%20/g,fe={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},me=function(e){return fe[e]},ge=function(e){return Z(q(e),de,me)},pe=f(function(e,t){D(this,{type:B,target:U(e).entries,index:0,kind:t})},L,function(){var e=F(this),t=e.target,n=e.index++;if(!t||n>=t.length)return e.target=null,R(void 0,!0);var r=t[n];switch(e.kind){case"keys":return R(r.key,!1);case"values":return R(r.value,!1)}return R([r.key,r.value],!1)},!0),_e=function(e){this.entries=[],this.url=null,void 0!==e&&(E(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===$(e,0)?ne(e,1):e:x(e)))};_e.prototype={type:L,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,n,r,o,a,s,c,l=this.entries,u=T(e);if(u)for(n=(t=I(e,u)).next;!(r=i(n,t)).done;){if(a=(o=I(w(r.value))).next,(s=i(a,o)).done||(c=i(a,o)).done||!i(a,o).done)throw new G("Expected sequence with length 2");Q(l,{key:x(s.value),value:x(c.value)})}else for(var h in e)v(e,h)&&Q(l,{key:h,value:x(e[h])})},parseQuery:function(e){if(e)for(var t,n,r=this.entries,i=te(e,"&"),o=0;o0?arguments[0]:void 0));a||(this.size=e.entries.length)},we=be.prototype;if(h(we,{append:function(e,t){var n=U(this);k(arguments.length,2),Q(n.entries,{key:x(e),value:x(t)}),a||this.length++,n.updateURL()},delete:function(e){for(var t=U(this),n=k(arguments.length,1),r=t.entries,i=x(e),o=n<2?void 0:arguments[1],s=void 0===o?o:x(o),c=0;ct.key?1:-1}),e.updateURL()},forEach:function(e){for(var t,n=U(this).entries,r=A(e,arguments.length>1?arguments[1]:void 0),i=0;i1?Se(arguments[1]):{})}}),p(j)){var Ce=function(e){return g(this,z),new j(e,arguments.length>1?Se(arguments[1]):{})};z.constructor=Ce,Ce.prototype=z,e({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Ce})}}return Iu={URLSearchParams:be,getState:U}}function Lu(){if(Ru)return yu;Ru=1,function(){if(su)return Au;su=1;var e=ac().charAt,t=Er(),n=Yt(),r=ql(),i=Wa(),o="String Iterator",a=n.set,s=n.getterFor(o);r(String,"String",function(e){a(this,{type:o,string:t(e),index:0})},function(){var t,n=s(this),r=n.string,o=n.index;return o>=r.length?i(void 0,!0):(t=e(r,o),n.index+=t.length,i(t,!1))})}();var e,t=mr(),n=y(),r=_u(),i=s(),o=Jr(),a=he(),c=Xt(),l=xo(),u=Co(),h=at(),d=function(){if(hu)return uu;hu=1;var e=y(),t=he(),n=_(),r=v(),i=Fi(),o=ur(),a=le(),s=ot(),c=fe(),l=Object.assign,u=Object.defineProperty,h=t([].concat);return uu=!l||r(function(){if(e&&1!==l({b:1},l(u({},"a",{enumerable:!0,get:function(){u(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},n={},r=Symbol("assign detection"),o="abcdefghijklmnopqrst";return t[r]=7,o.split("").forEach(function(e){n[e]=e}),7!==l({},t)[r]||i(l({},n)).join("")!==o})?function(t,r){for(var l=s(t),u=arguments.length,d=1,f=o.f,m=a.f;u>d;)for(var g,p=c(arguments[d++]),v=f?h(i(p),f(p)):i(p),y=v.length,A=0;y>A;)g=v[A++],e&&!n(m,p,g)||(l[g]=p[g]);return l}:l,uu}(),f=bu(),m=bi(),g=ac().codeAt,p=wu(),A=Er(),b=Po(),w=Eu(),E=Mu(),x=Yt(),S=x.set,C=x.getterFor("URL"),I=E.URLSearchParams,T=E.getState,R=i.URL,k=i.TypeError,O=i.parseInt,P=Math.floor,M=Math.pow,L=a("".charAt),B=a(/./.exec),D=a([].join),U=a(1.1.toString),F=a([].pop),N=a([].push),j=a("".replace),W=a([].shift),z=a("".split),H=a("".slice),G=a("".toLowerCase),q=a([].unshift),Y="Invalid scheme",V="Invalid host",X="Invalid port",$=/[a-z]/i,J=/[\d+-.a-z]/i,Q=/\d/,Z=/^0x/i,K=/^[0-7]+$/,ee=/^\d+$/,te=/^[\da-f]+$/i,ne=/[\0\t\n\r #%/:<>?@[\\\]^|]/,re=/[\0\t\n\r #/:<>?@[\\\]^|]/,ie=/^[\u0000-\u0020]+/,oe=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,ae=/[\t\n\r]/g,se=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)q(t,e%256),e=P(e/256);return D(t,".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n?r:t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=U(e[n],16),n<7&&(t+=":")));return"["+t+"]"}return e},ce={},ue=d({},ce,{" ":1,'"':1,"<":1,">":1,"`":1}),de=d({},ue,{"#":1,"?":1,"{":1,"}":1}),me=d({},de,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),ge=function(e,t){var n=g(e,0);return n>32&&n<127&&!h(t,e)?e:encodeURIComponent(e)},pe={ftp:21,file:null,http:80,https:443,ws:80,wss:443},ve=function(e,t){var n;return 2===e.length&&B($,L(e,0))&&(":"===(n=L(e,1))||!t&&"|"===n)},ye=function(e){var t;return e.length>1&&ve(H(e,0,2))&&(2===e.length||"/"===(t=L(e,2))||"\\"===t||"?"===t||"#"===t)},Ae=function(e){return"."===e||"%2e"===G(e)},_e=function(e){return".."===(e=G(e))||"%2e."===e||".%2e"===e||"%2e%2e"===e},be={},we={},Ee={},xe={},Se={},Ce={},Ie={},Te={},Re={},ke={},Oe={},Pe={},Me={},Le={},Be={},De={},Ue={},Fe={},Ne={},je={},We={},ze=function(e,t,n){var r,i,o,a=A(e);if(t){if(i=this.parse(a))throw new k(i);this.searchParams=null}else{if(void 0!==n&&(r=new ze(n,!0)),i=this.parse(a,null,r))throw new k(i);(o=T(new I)).bindURL(this),this.searchParams=o}};ze.prototype={type:"URL",parse:function(t,n,r){var i,o,a,s,c=this,l=n||be,u=0,d="",g=!1,p=!1,v=!1;for(t=A(t),n||(c.scheme="",c.username="",c.password="",c.host=null,c.port=null,c.path=[],c.query=null,c.fragment=null,c.cannotBeABaseURL=!1,t=j(t,ie,""),t=j(t,oe,"$1")),t=j(t,ae,""),i=f(t);u<=i.length;){switch(o=i[u],l){case be:if(!o||!B($,o)){if(n)return Y;l=Ee;continue}d+=G(o),l=we;break;case we:if(o&&(B(J,o)||"+"===o||"-"===o||"."===o))d+=G(o);else{if(":"!==o){if(n)return Y;d="",l=Ee,u=0;continue}if(n&&(c.isSpecial()!==h(pe,d)||"file"===d&&(c.includesCredentials()||null!==c.port)||"file"===c.scheme&&!c.host))return;if(c.scheme=d,n)return void(c.isSpecial()&&pe[c.scheme]===c.port&&(c.port=null));d="","file"===c.scheme?l=Le:c.isSpecial()&&r&&r.scheme===c.scheme?l=xe:c.isSpecial()?l=Te:"/"===i[u+1]?(l=Se,u++):(c.cannotBeABaseURL=!0,N(c.path,""),l=Ne)}break;case Ee:if(!r||r.cannotBeABaseURL&&"#"!==o)return Y;if(r.cannotBeABaseURL&&"#"===o){c.scheme=r.scheme,c.path=m(r.path),c.query=r.query,c.fragment="",c.cannotBeABaseURL=!0,l=We;break}l="file"===r.scheme?Le:Ce;continue;case xe:if("/"!==o||"/"!==i[u+1]){l=Ce;continue}l=Re,u++;break;case Se:if("/"===o){l=ke;break}l=Fe;continue;case Ce:if(c.scheme=r.scheme,o===e)c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=m(r.path),c.query=r.query;else if("/"===o||"\\"===o&&c.isSpecial())l=Ie;else if("?"===o)c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=m(r.path),c.query="",l=je;else{if("#"!==o){c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=m(r.path),c.path.length--,l=Fe;continue}c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=m(r.path),c.query=r.query,c.fragment="",l=We}break;case Ie:if(!c.isSpecial()||"/"!==o&&"\\"!==o){if("/"!==o){c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,l=Fe;continue}l=ke}else l=Re;break;case Te:if(l=Re,"/"!==o||"/"!==L(d,u+1))continue;u++;break;case Re:if("/"!==o&&"\\"!==o){l=ke;continue}break;case ke:if("@"===o){g&&(d="%40"+d),g=!0,a=f(d);for(var y=0;y65535)return X;c.port=c.isSpecial()&&w===pe[c.scheme]?null:w,d=""}if(n)return;l=Ue;continue}return X}d+=o;break;case Le:if(c.scheme="file","/"===o||"\\"===o)l=Be;else{if(!r||"file"!==r.scheme){l=Fe;continue}switch(o){case e:c.host=r.host,c.path=m(r.path),c.query=r.query;break;case"?":c.host=r.host,c.path=m(r.path),c.query="",l=je;break;case"#":c.host=r.host,c.path=m(r.path),c.query=r.query,c.fragment="",l=We;break;default:ye(D(m(i,u),""))||(c.host=r.host,c.path=m(r.path),c.shortenPath()),l=Fe;continue}}break;case Be:if("/"===o||"\\"===o){l=De;break}r&&"file"===r.scheme&&!ye(D(m(i,u),""))&&(ve(r.path[0],!0)?N(c.path,r.path[0]):c.host=r.host),l=Fe;continue;case De:if(o===e||"/"===o||"\\"===o||"?"===o||"#"===o){if(!n&&ve(d))l=Fe;else if(""===d){if(c.host="",n)return;l=Ue}else{if(s=c.parseHost(d))return s;if("localhost"===c.host&&(c.host=""),n)return;d="",l=Ue}continue}d+=o;break;case Ue:if(c.isSpecial()){if(l=Fe,"/"!==o&&"\\"!==o)continue}else if(n||"?"!==o)if(n||"#"!==o){if(o!==e&&(l=Fe,"/"!==o))continue}else c.fragment="",l=We;else c.query="",l=je;break;case Fe:if(o===e||"/"===o||"\\"===o&&c.isSpecial()||!n&&("?"===o||"#"===o)){if(_e(d)?(c.shortenPath(),"/"===o||"\\"===o&&c.isSpecial()||N(c.path,"")):Ae(d)?"/"===o||"\\"===o&&c.isSpecial()||N(c.path,""):("file"===c.scheme&&!c.path.length&&ve(d)&&(c.host&&(c.host=""),d=L(d,0)+":"),N(c.path,d)),d="","file"===c.scheme&&(o===e||"?"===o||"#"===o))for(;c.path.length>1&&""===c.path[0];)W(c.path);"?"===o?(c.query="",l=je):"#"===o&&(c.fragment="",l=We)}else d+=ge(o,de);break;case Ne:"?"===o?(c.query="",l=je):"#"===o?(c.fragment="",l=We):o!==e&&(c.path[0]+=ge(o,ce));break;case je:n||"#"!==o?o!==e&&("'"===o&&c.isSpecial()?c.query+="%27":c.query+="#"===o?"%23":ge(o,ce)):(c.fragment="",l=We);break;case We:o!==e&&(c.fragment+=ge(o,ue))}u++}},parseHost:function(e){var t,n,r;if("["===L(e,0)){if("]"!==L(e,e.length-1))return V;if(t=function(e){var t,n,r,i,o,a,s,c=[0,0,0,0,0,0,0,0],l=0,u=null,h=0,d=function(){return L(e,h)};if(":"===d()){if(":"!==L(e,1))return;h+=2,u=++l}for(;d();){if(8===l)return;if(":"!==d()){for(t=n=0;n<4&&B(te,d());)t=16*t+O(d(),16),h++,n++;if("."===d()){if(0===n)return;if(h-=n,l>6)return;for(r=0;d();){if(i=null,r>0){if(!("."===d()&&r<4))return;h++}if(!B(Q,d()))return;for(;B(Q,d());){if(o=O(d(),10),null===i)i=o;else{if(0===i)return;i=10*i+o}if(i>255)return;h++}c[l]=256*c[l]+i,2!==++r&&4!==r||l++}if(4!==r)return;break}if(":"===d()){if(h++,!d())return}else if(d())return;c[l++]=t}else{if(null!==u)return;h++,u=++l}}if(null!==u)for(a=l-u,l=7;0!==l&&a>0;)s=c[l],c[l--]=c[u+a-1],c[u+--a]=s;else if(8!==l)return;return c}(H(e,1,-1)),!t)return V;this.host=t}else if(this.isSpecial()){if(e=p(e),B(ne,e))return V;if(t=function(e){var t,n,r,i,o,a,s,c=z(e,".");if(c.length&&""===c[c.length-1]&&c.length--,(t=c.length)>4)return e;for(n=[],r=0;r1&&"0"===L(i,0)&&(o=B(Z,i)?16:8,i=H(i,8===o?1:2)),""===i)a=0;else{if(!B(10===o?ee:8===o?K:te,i))return e;a=O(i,o)}N(n,a)}for(r=0;r=M(256,5-t))return null}else if(a>255)return null;for(s=F(n),r=0;r1?arguments[1]:void 0,i=S(t,new ze(e,!1,r));n||(t.href=i.serialize(),t.origin=i.getOrigin(),t.protocol=i.getProtocol(),t.username=i.getUsername(),t.password=i.getPassword(),t.host=i.getHost(),t.hostname=i.getHostname(),t.port=i.getPort(),t.pathname=i.getPathname(),t.search=i.getSearch(),t.searchParams=i.getSearchParams(),t.hash=i.getHash())},Ge=He.prototype,qe=function(e,t){return{get:function(){return C(this)[e]()},set:t&&function(e){return C(this)[t](e)},configurable:!0,enumerable:!0}};if(n&&(l(Ge,"href",qe("serialize","setHref")),l(Ge,"origin",qe("getOrigin")),l(Ge,"protocol",qe("getProtocol","setProtocol")),l(Ge,"username",qe("getUsername","setUsername")),l(Ge,"password",qe("getPassword","setPassword")),l(Ge,"host",qe("getHost","setHost")),l(Ge,"hostname",qe("getHostname","setHostname")),l(Ge,"port",qe("getPort","setPort")),l(Ge,"pathname",qe("getPathname","setPathname")),l(Ge,"search",qe("getSearch","setSearch")),l(Ge,"searchParams",qe("getSearchParams")),l(Ge,"hash",qe("getHash","setHash"))),c(Ge,"toJSON",function(){return C(this).serialize()},{enumerable:!0}),c(Ge,"toString",function(){return C(this).serialize()},{enumerable:!0}),R){var Ye=R.createObjectURL,Ve=R.revokeObjectURL;Ye&&c(He,"createObjectURL",o(Ye,R)),Ve&&c(He,"revokeObjectURL",o(Ve,R))}return b(He,"URL"),t({global:!0,constructor:!0,forced:!r,sham:!n},{URL:He}),yu}ku||(ku=1,Lu());var Bu,Du={};!function(){if(Bu)return Du;Bu=1;var e=mr(),t=_();e({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return t(URL.prototype.toString,this)}})}();var Uu;Uu||(Uu=1,Mu());var Fu,Nu={};!function(){if(Fu)return Nu;Fu=1;var e=Xt(),t=he(),n=Er(),r=Eu(),i=URLSearchParams,o=i.prototype,a=t(o.append),s=t(o.delete),c=t(o.forEach),l=t([].push),u=new i("a=1&a=2&b=3");u.delete("a",1),u.delete("b",void 0),u+""!="a=2"&&e(o,"delete",function(e){var t=arguments.length,i=t<2?void 0:arguments[1];if(t&&void 0===i)return s(this,e);var o=[];c(this,function(e,t){l(o,{key:t,value:e})}),r(t,1);for(var u,h=n(e),d=n(i),f=0,m=0,g=!1,p=o.length;f=n;){const e=nh.keys().next().value;nh.delete(e)}nh.set(e,t)}}const ih={};let oh=null,ah=null,sh=null,ch=null,lh=null,uh=null,hh=null;function dh(e){return e&&"object"==typeof e&&!Array.isArray(e)}function fh(e){const t=[];return JSON.stringify(e,function(e,n){if("object"==typeof n&&null!==n){if(-1!==t.indexOf(n))return;t.push(n)}return n})}const mh={messages:[],logLevelConsole:"warning",logLevelSystem:"error",systemTargetLogLevel:"",addMessage:function(e,t){if(!Xu.debug)return;const n={level:e,date:(new Date).toISOString(),text:"",objs:[],stack:""},r=new Error;r.stack&&(n.stack=r.stack.toString().replace(/^Error\r?\n/,""));for(let e=0;e1e3&&mh.messages.shift()},systemLog(e,t){ah&&ah.hass&&ah.hass.callService("system_log","write",{logger:"frontend.wallpanel".concat(ch?"."+ch:""),message:t,level:mh.systemTargetLogLevel||e},void 0,!1).catch(()=>{})},downloadMessages:function(){const e=new Blob([fh(mh.messages)],{type:"text/plain"}),t=URL.createObjectURL(e),n=document.createElement("a");n.href=t,n.target="_blank",n.download="wallpanel_log.txt",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(t),0)},purgeMessages:function(){mh.messages=[]},debug:function(){["debug"].includes(mh.logLevelConsole)&&console.debug.apply(this,arguments),["debug"].includes(mh.logLevelSystem)&&mh.systemLog("debug",fh(arguments)),mh.addMessage("debug",arguments)},info:function(){["debug","info"].includes(mh.logLevelConsole)&&console.info.apply(this,arguments),["debug","info"].includes(mh.logLevelSystem)&&mh.systemLog("info",fh(arguments)),mh.addMessage("info",arguments)},log:function(){mh.info.apply(this,arguments)},warning:function(){["debug","info","warning"].includes(mh.logLevelConsole)&&console.warn.apply(this,arguments),["debug","info","warning"].includes(mh.logLevelSystem)&&mh.systemLog("warning",fh(arguments)),mh.addMessage("warning",arguments)},warn:function(){mh.warning.apply(this,arguments)},error:function(){if(["debug","info","warning","error"].includes(mh.logLevelConsole)&&console.error.apply(this,arguments),["debug","info","warning","error"].includes(mh.logLevelSystem)&&mh.systemLog("error",fh(arguments)),mh.addMessage("error",arguments),Xu.alert_errors){const e="Wallpanel error: ".concat(fh(arguments));Ku?Ku.showMessage("error","Error",e,1e4):alert(e)}},err:function(){mh.error.apply(this,arguments)}};class gh{constructor(){this.enabled=!1,this.error=null,this.nativeWakeLockSupported="wakeLock"in navigator,this._lock=null,this._player=null,this._isPlaying=!1,this._onWakeLockRelease=null;const e=()=>{mh.debug("handleVisibilityChange"),this.enabled&&!document.hidden&&this.enable()};if(document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e),!this.nativeWakeLockSupported){const e="data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAA1NtZGF0AAACrwYF//+r3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2NCByMzA5NSBiYWVlNDAwIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyMiAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOi0zOi0zIGFuYWx5c2U9MHgzOjB4MTEzIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0yLjAwOjAuNzAgbWl4ZWRfcmVmPTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0xIGNxbT0wIGRlYWR6b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS00IHRocmVhZHM9MSBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MiBrZXlpbnQ9MjUwIGtleWludF9taW49MSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmNfbG9va2FoZWFkPTQwIHJjPWNyZiBtYnRyZWU9MSBjcmY9MjMuMCBxY29tcD0wLjYwIHFwbWluPTAgcXBtYXg9NjkgcXBzdGVwPTQgaXBfcmF0aW89MS40MCBhcT0xOjEuMjAAgAAAABFliIQAF85//vfUt8yy7VNwgQAAAAlBmiRsQXzn/vAAAAAJQZ5CeIL5z4aBAAAACQGeYXRBfOeGgAAAAAkBnmNqQXznhoEAAAAPQZpoSahBaJlMCC+c//7xAAAAC0GehkURLBfOf4aBAAAACQGepXRBfOeGgQAAAAkBnqdqQXznhoAAAAAPQZqpSahBbJlMCC+c//7wAAADs21vb3YAAABsbXZoZAAAAAAAAAAAAAAAAAAAA+gAACcQAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAALddHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAQAAAAAAACcQAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAIAAAACAAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAAnEAAAgAAAAQAAAAACVW1kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAQAAAAoAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAgBtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAHAc3RibAAAAMBzdHNkAAAAAAAAAAEAAACwYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAIAAgASAAAAEgAAAAAAAAAARVMYXZjNTkuMzcuMTAwIGxpYngyNjQAAAAAAAAAAAAAABj//wAAADZhdmNDAWQACv/hABlnZAAKrNlfllwEQAAAAwBAAAADAIPEiWWAAQAGaOvjxMhM/fj4AAAAABBwYXNwAAAAAQAAAAEAAAAUYnRydAAAAAAAAAKiAAACogAAABhzdHRzAAAAAAAAAAEAAAAKAABAAAAAABRzdHNzAAAAAAAAAAEAAAABAAAAYGN0dHMAAAAAAAAACgAAAAEAAIAAAAAAAQABQAAAAAABAACAAAAAAAEAAAAAAAAAAQAAQAAAAAABAAFAAAAAAAEAAIAAAAAAAQAAAAAAAAABAABAAAAAAAEAAIAAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAAKAAAAAQAAADxzdHN6AAAAAAAAAAAAAAAKAAACyAAAAA0AAAANAAAADQAAAA0AAAATAAAADwAAAA0AAAANAAAAEwAAABRzdGNvAAAAAAAAAAEAAAAwAAAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAtaWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1OS4yNy4xMDA=";this._player=document.createElement("video"),this._player.setAttribute("id","ScreenWakeLockVideo"),this._player.setAttribute("src",e),this._player.setAttribute("playsinline",""),this._player.setAttribute("muted",""),this._player.style.display="none",document.getElementById("ScreenWakeLockVideo")||document.body.appendChild(this._player),this._player.addEventListener("ended",()=>{mh.debug("Video ended"),this.enabled&&this.enable()}),this._player.addEventListener("playing",()=>{mh.debug("Video playing"),this._isPlaying=!0}),this._player.addEventListener("pause",()=>{mh.debug("Video pause"),this._isPlaying=!1})}}enable(){if(this.nativeWakeLockSupported){if(mh.debug("Requesting native screen wakelock"),this._lock)return void mh.debug("Screen wakelock already active");navigator.wakeLock.request("screen").then(e=>{mh.debug("Request screen wakelock successful"),this._lock=e,this._onWakeLockRelease=()=>{mh.debug("Screen wakelock released"),this.enabled=!1,this._lock=null},e.addEventListener("release",this._onWakeLockRelease),this.enabled=!0,this.error=null}).catch(e=>{this.enabled=!1,this.error=e,mh.warning("Failed to request screen wakeLock: ".concat(e))})}else{mh.debug("Starting video player"),!this._player.paused&&this._isPlaying&&this._player.pause();const e=this._player.play();e&&e.then(()=>{this.enabled=!0,this.error=null,mh.debug("Video play successful")}).catch(e=>{this.enabled=!1,this.error=e,mh.warning("Failed to play video: ".concat(e))})}}disable(){this.nativeWakeLockSupported?(mh.debug("Releasing native screen wakelock"),this._lock&&(this._onWakeLockRelease&&(this._lock.removeEventListener("release",this._onWakeLockRelease),this._onWakeLockRelease=null),this._lock.release()),this._lock=null):(mh.debug("Stopping video player"),!this._player.paused&&this._isPlaying&&this._player.pause()),this.enabled=!1}}class ph{constructor(){this.enabled=!1,this.error=!1,this.width=64,this.height=48,this.thresholdRatio=.05,this.threshold=this.width*this.height*this.thresholdRatio,this.captureInterval=300,this.motionActive=!1,this.motionStartDelay=0,this.motionStopDelay=2e3,this.motionDetectionRequiredRatio=.8,this.roomSettledRequiredRatio=1,this.motionStopTimeout=null,this.captureTimer=null,this.referenceImageData=null,this.previousImageData=null,this.referenceChangeRatios=[],this.previousChangeRatios=[],this.maxRatioHistorySize=Math.ceil(6e4/this.captureInterval),this.videoElement=document.createElement("video"),this.videoElement.setAttribute("id","wallpanelMotionDetectionVideo"),this.videoElement.style.display="none",document.body.appendChild(this.videoElement),this.canvasElement=document.createElement("canvas"),this.canvasElement.setAttribute("id","wallpanelMotionDetectionCanvas"),this.canvasElement.style.display="none",document.body.appendChild(this.canvasElement),this.context=this.canvasElement.getContext("2d",{willReadFrequently:!0}),this._elementsAppended=!0}compareImageData(e,t){if(!e||!t)return 0;let n=0;const r=e.data,i=t.data;for(let e=0;e=256&&n++}return n/(this.width*this.height)}storeRatio(e,t){for(e.push(t);e.length>this.maxRatioHistorySize;)e.shift()}getRatiosForInterval(e,t){const n=Math.max(1,Math.ceil(t/this.captureInterval));return e.length0&&e.filter(e=>e>=this.thresholdRatio).length/e.length>=t}hasRequiredRatioBelowThreshold(e,t){return e.length>0&&e.filter(e=>e=t}resetMotionState(){this.motionActive=!1,this.motionStopTimeout&&(clearTimeout(this.motionStopTimeout),this.motionStopTimeout=null),this.referenceImageData=null,this.previousImageData=null,this.referenceChangeRatios=[],this.previousChangeRatios=[]}capture(){this.context.globalCompositeOperation="source-over",this.context.drawImage(this.videoElement,0,0,this.width,this.height);const e=this.context.getImageData(0,0,this.width,this.height);if(!this.referenceImageData)return this.referenceImageData=e,void(this.previousImageData=e);const t=this.compareImageData(e,this.referenceImageData),n=this.compareImageData(e,this.previousImageData);this.previousImageData=e,this.storeRatio(this.referenceChangeRatios,t),this.storeRatio(this.previousChangeRatios,n);const r=this.getRatiosForInterval(this.referenceChangeRatios,this.motionStartDelay),i=this.hasRequiredRatioAboveThreshold(r,this.motionDetectionRequiredRatio),o=this.previousChangeRatios.length>=this.maxRatioHistorySize&&this.hasRequiredRatioBelowThreshold(this.previousChangeRatios,this.roomSettledRequiredRatio);i?(this.motionActive||(mh.debug("Motion started"),this.motionActive=!0,Ku.motionDetected()),this.motionStopTimeout&&(clearTimeout(this.motionStopTimeout),this.motionStopTimeout=null)):this.motionActive&&!this.motionStopTimeout&&(this.motionStopTimeout=setTimeout(()=>{mh.debug("Motion stopped"),this.motionActive=!1,this.motionStopTimeout=null,Ku.motionStopped()},this.motionStopDelay)),o&&(mh.info("Room settled, new reference image stored"),this.referenceImageData=e,this.referenceChangeRatios=[])}start(){if(!this.enabled&&!this.error){if(!navigator.mediaDevices)return this.error=!0,void mh.error("No media devices found");this._elementsAppended||(document.body.appendChild(this.videoElement),document.body.appendChild(this.canvasElement),this._elementsAppended=!0),this.enabled=!0,this.width=Xu.camera_motion_detection_capture_width,this.height=Xu.camera_motion_detection_capture_height,this.thresholdRatio=.01*Xu.camera_motion_detection_threshold,this.threshold=this.width*this.height*this.thresholdRatio,this.captureInterval=1e3*Xu.camera_motion_detection_capture_interval,this.motionStartDelay=1e3*Xu.camera_motion_detection_motion_start_delay,this.motionStopDelay=1e3*Xu.camera_motion_detection_motion_stop_delay,this.maxRatioHistorySize=Math.ceil(6e4/this.captureInterval),this.resetMotionState(),this.videoElement.width=this.width,this.videoElement.height=this.height,this.canvasElement.width=this.width,this.canvasElement.height=this.height,Xu.camera_motion_detection_capture_visible?(this.canvasElement.style.position="fixed",this.canvasElement.style.top=0,this.canvasElement.style.left=0,this.canvasElement.style.zIndex=1e4,this.canvasElement.style.border="1px solid black",this.canvasElement.style.display="block"):this.canvasElement.style.display="none",navigator.mediaDevices.getUserMedia({audio:!1,video:{facingMode:{ideal:Xu.camera_motion_detection_facing_mode},width:this.width,height:this.height}}).then(e=>{this.videoElement.srcObject=e;const t=this.videoElement.play();t&&t.catch(e=>{mh.warning("Camera motion detection video play failed: ".concat(e))}),this.enabled&&(this.captureTimer=setInterval(this.capture.bind(this),this.captureInterval))}).catch(e=>{this.enabled=!1,mh.error("Camera motion detection error:",e),this._elementsAppended&&(this.videoElement.remove(),this.canvasElement.remove(),this._elementsAppended=!1)})}}stop(){if(!this.enabled)return;this.enabled=!1,this.resetMotionState(),this.captureTimer&&(clearInterval(this.captureTimer),this.captureTimer=null),this.videoElement.pause();const e=this.videoElement.srcObject;e&&"function"==typeof e.getTracks&&e.getTracks().forEach(e=>{e.stop()}),this.videoElement.srcObject=null,this._elementsAppended&&(this.videoElement.remove(),this.canvasElement.remove(),this._elementsAppended=!1)}}const vh=1592614637;function yh(e){return function(){e=e+1831565813|0;let t=Math.imul(e^e>>>15,1|e);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function Ah(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.random;const n=e.slice();for(let e=n.length-1;e>0;e--){const r=Math.floor(t()*(e+1));[n[e],n[r]]=[n[r],n[e]]}return n}function _h(e){if(!e.shadowRoot)return[null,null];const t=e.shadowRoot.querySelector("ha-web-rtc-player")||e.shadowRoot.querySelector("ha-hls-player");if(!t||!t.shadowRoot)return[t,null];const n=t.shadowRoot.querySelector("video");return[t,n]}function bh(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;rc(e)):dh(t)&&(t=Object.fromEntries(Object.entries(t).map(e=>{let[t,n]=e;return[t,c(n)]}))),"boolean"==typeof e[o]&&(t=null!=t&&["true","on","yes","1"].includes(String(t).toLowerCase())),t}a=c(a),Array.isArray(e[o])&&"string"==typeof a&&(a=a.split(",").map(e=>e.trim())),Object.assign(e,{[o]:a})}}return bh(e,...n)}function wh(){const e=new URLSearchParams(window.location.search),t=Xu;Xu={},bh(Xu,qu),0===Object.keys(Vu).length&&(Vu=Th(),0===Object.keys(Vu).length&&mh.debug("No wallpanel config found in dashboard config")),bh(Xu,Vu);const n={};for(let[t,r]of e)if(t.startsWith("wp_")&&(t=t.substring(3),Yu[t]&&(mh.warn("The configuration option '".concat(t,"' has been renamed to '").concat(Yu[t],"'. Please update your wallpanel configuration accordingly.")),t=Yu[t]),t in qu&&r)){try{r=JSON.parse(r)}catch(e){}const e=qu[t];if(Array.isArray(e))Array.isArray(r)?n[t]=r:n[t]="string"==typeof r?r.split(",").map(e=>e.trim()):[r];else if("boolean"==typeof e)n[t]=["true","on","yes","1"].includes(String(r));else if("number"==typeof e){const e=Number(r);Number.isFinite(e)?n[t]=e:mh.warn("Invalid numeric wp_ param '".concat(t,"': ").concat(r))}else n[t]=r}Xu=bh(Xu,n);const r=Xu.profile;if(Xu.profiles&&r&&Xu.profiles[r]&&(Xu=bh(Xu,Xu.profiles[r]),mh.debug("Profile set from config: ".concat(r))),Xu.profiles&&ch&&Xu.profiles["device.".concat(ch)]){const e="device.".concat(ch);Xu=bh(Xu,Xu.profiles[e]),mh.debug("Profile set from device: ".concat(e))}if(Xu.profiles){const e=[lh,uh,hh];for(let t=0;t{t.tagName.toLowerCase().startsWith("browser-mod-popup")&&t.shadowRoot&&t.shadowRoot.querySelector("ha-dialog")&&e.push(t)}),e):e}function xh(){const e=Eh();return e&&0!=e.length?e[0]:null}function Sh(){if("1"==new URLSearchParams(window.location.search).get("edit"))return mh.debug("Edit mode active"),!1;if(!Xu.enabled)return mh.debug("Wallpanel not enabled in config"),!1;if(Xu.enabled_on_views&&Xu.enabled_on_views.length>0&&Qu&&!Xu.enabled_on_views.includes(Qu))return mh.debug("Wallpanel not enabled on current tab ".concat(Qu)),!1;if(Xu.disable_screensaver_when_assist_active){const e=ah.shadowRoot.querySelector("ha-voice-command-dialog");if(e&&e.shadowRoot&&e.shadowRoot.querySelector("ha-dialog"))return mh.debug("Assist is active, wallpanel disabled"),!1}return Ku&&Ku.disable_screensaver_on_browser_mod_popup_function&&xh()&&Ku.disable_screensaver_on_browser_mod_popup_function(xh())?(mh.debug("Browser mod popup function returned true, wallpanel disabled"),!1):!Xu.disable_screensaver_on_browser_mod_popup||!xh()||(mh.debug("Browser mod popup active, wallpanel disabled"),!1)}function Ch(){return Xu.show_images&&Xu.image_url?Xu.image_url.startsWith("media-entity-video://")?"media-entity-video":Xu.image_url.startsWith("media-entity-image://")?"media-entity-image":Xu.image_url.startsWith("media-source://")?"media-source":Xu.image_url.startsWith("https://api.unsplash")?"unsplash-api":Xu.image_url.startsWith("immich+")?"immich-api":Xu.image_url.startsWith("iframe+")?"iframe":Xu.image_url.startsWith("embed+")?"embed":"url":""}function Ih(){try{return sh.shadowRoot.querySelector("ha-panel-lovelace")}catch(e){mh.error("Failed to get ha-panel-lovelace:",e)}}function Th(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=Ih(),n={};if(t&&t.lovelace){let r;t.lovelace.config&&t.lovelace.config.wallpanel?r=t.lovelace.config.wallpanel:t.lovelace.rawConfig&&t.lovelace.rawConfig.wallpanel&&(r=t.lovelace.rawConfig.wallpanel),r&&(0===e.length&&(e=Object.keys(r)),e.forEach(e=>{(e in qu||e in Yu)&&(n[e]=r[e])}))}return n}function Rh(e){mh.debug("setSidebarVisibility: hidden=".concat(e));try{const t=sh.shadowRoot.querySelector("ha-panel-lovelace");if(t){const n=t.shadowRoot.querySelector("hui-root");if(n){const t=n.shadowRoot.querySelector("ha-menu-button");t&&(e?t.style.display="none":t.style.removeProperty("display"))}}}catch(e){mh.warn(e)}try{const t=sh.shadowRoot.querySelector("ha-drawer");if(t){const n=t.shadowRoot.querySelector(".sidebar-shell")||t.shadowRoot.querySelector("aside"),r=n&&n.classList.contains("sidebar-shell")?"--ha-sidebar-width":"--mdc-drawer-width";n&&(e?(n.style.opacity=0,n.style.maxWidth="0px",sh.style.setProperty(r,"env(safe-area-inset-left)")):(n.style.opacity=1,n.style.maxWidth="",sh.style.removeProperty(r)),window.dispatchEvent(new Event("resize")))}}catch(e){mh.warn(e)}}function kh(e,t){mh.debug("setToolbarVisibility: hideToolbar=".concat(e,", hideActionItems=").concat(t));try{const n=sh.shadowRoot.querySelector("ha-panel-lovelace");if(!n)return;let r=n.shadowRoot.querySelector("hui-root");if(!r)return;r=r.shadowRoot;const i=r.querySelector("#view");let o=r.querySelector("app-toolbar");if(o||(o=r.querySelector("div.toolbar")),e)o.style.setProperty("display","none"),Xu.keep_toolbar_space||(i.style.minHeight="100vh",i.style.marginTop="0",i.style.paddingTop="0");else{o.style.removeProperty("display"),i.style.removeProperty("min-height"),i.style.removeProperty("margin-top"),i.style.removeProperty("padding-top");const e=o.querySelector("div.action-items");t?e.style.setProperty("display","none"):e.style.setProperty("display","flex")}window.dispatchEvent(new Event("resize"))}catch(e){mh.warn(e)}}function Oh(){return void 0!==document.fullscreenElement?Boolean(document.fullscreenElement):void 0!==document.webkitCurrentFullScreenElement&&Boolean(document.webkitCurrentFullScreenElement)}function Ph(){mh.debug("Enter fullscreen");const e=document.documentElement;e.requestFullscreen?e.requestFullscreen().then(()=>{mh.debug("Successfully requested fullscreen")},e=>{mh.debug("Failed to enter fullscreen:",e)}):e.mozRequestFullScreen?e.mozRequestFullScreen():e.msRequestFullscreen?e.msRequestFullscreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen()}function Mh(){const e=customElements.get("hui-view-container"),t=customElements.get("hui-view");if(!e||!t){throw new Error("Failed to get hui-view-container / hui-view from customElements")}class r extends e{}class i extends t{constructor(){super(),this.mediaList=[],this.mediaIndex=-1,this.mediaListDirection="forwards",this.lastMediaListUpdate,this.updatingMediaList=!1,this.updatingMedia=!1,this.lastMediaUpdate=0,this.isPaused=!1,this.displayTime=null,this.mediaTimeElapsedBeforePause=0,this.lastImageUrlEntityValue=null,this.blockEventsUntil=0,this.screensaverStartedAt,this.screensaverStoppedAt=new Date,this.infoBoxContentCreatedDate,this.idleSince=Date.now(),this.lastProfileSet=Xu.profile,this.lastMove=null,this.lastCorner=0,this.translateTimeout=null,this.lastClickTime=0,this.clickCount=0,this.touchStartX=-1,this.touchStartY=-1,this.currentWidth=0,this.currentHeight=0,this.energyCollectionUpdateEnabled=!1,this.energyCollectionUpdateInterval=60,this.lastEnergyCollectionUpdate=0,this.screensaverStopNavigationPathTimeout=null,this.disable_screensaver_on_browser_mod_popup_function=null,this.moreInfoDialogOpenedAt=0,this.timerInterval=null,this.windowEventHandlers=[],this.infoBoxResizeObserver=null,this.screenWakeLock=new gh,this.cameraMotionDetection=new ph,this.lovelace=null,this.__hass=ah.hass||ah.__hass,this.__cards=[],this.__badges=[],this.__views=[],ah.provideHass(this),this.timerInterval=setInterval(this.timer.bind(this),1e3),Zu.hass=this.__hass}set hass(e){mh.debug("Update hass"),this.__hass=e;let t=!1;for(const e in ih){const n=this.__hass.states[e];n&&n.state!=ih[e]&&(ih[e]=n.state,t=!0)}if(!this.updateProfile()&&t&&wh(),!Sh())return;const n=Xu.screensaver_entity;if(n&&this.__hass.states[n]){const e=new Date(this.__hass.states[n].last_changed),t=this.__hass.states[n].state;"off"==t&&this.screensaverStartedAt&&e.getTime()-this.screensaverStartedAt>0?this.stopScreensaver(Xu.fade_out_time_screensaver_entity):"on"==t&&this.screensaverStoppedAt&&e.getTime()-this.screensaverStoppedAt>0&&this.startScreensaver()}this.screensaverRunning()&&(this.__cards.forEach(e=>{e.hass=this.hass}),this.__badges.forEach(e=>{e.hass=this.hass}),this.__views.forEach(e=>{e.hass=this.hass}),"media-entity-image"==Ch()&&this.switchActiveMedia("entity_update"))}get hass(){return this.__hass}setScreensaverEntityState(){const e=Xu.screensaver_entity;if(!e||!this.__hass.states[e])return;if(this.screensaverRunning()&&"on"==this.__hass.states[e].state)return;if(!this.screensaverRunning()&&"off"==this.__hass.states[e].state)return;const t=this.screensaverRunning()?"turn_on":"turn_off";mh.debug("Updating screensaver_entity",e,t),this.__hass.callService("input_boolean",t,{entity_id:e}).then(e=>{mh.debug(e)},e=>{mh.error("Failed to set screensaver entity state:",e)})}setImageURLEntityState(){const e=Xu.image_url_entity;if(!e||!this.__hass.states[e])return;const t=this.getActiveMediaElement();if(!t||!t.mediaUrl)return;const n=t.mediaUrl.substring(0,255);this.lastImageUrlEntityValue!==n&&(mh.debug("Updating image_url_entity",e,n),this.__hass.callService("input_text","set_value",{entity_id:e,value:n}).then(e=>{mh.debug(e),this.lastImageUrlEntityValue=n},e=>{mh.error("Failed to set image url entity state:",e)}))}updateProfile(){const e=Xu.profile_entity;if(e&&this.__hass.states[e]){const t=this.__hass.states[e].state;if(t&&t!=this.lastProfileSet||!t&&this.lastProfileSet)return mh.debug("Set profile to ".concat(t)),this.lastProfileSet=t,wh(),!0}return!1}timer(){Xu.enabled&&Ju&&(this.screensaverRunning()?Xu.disable_screensaver_on_browser_mod_popup&&xh()?this.stopScreensaver(Xu.fade_out_time_browser_mod_popup):this.updateScreensaver():Sh()&&Xu.idle_time>0&&Date.now()-this.idleSince>=1e3*Xu.idle_time&&(Xu.camera_motion_detection_stop_screensaver&&this.cameraMotionDetection&&this.cameraMotionDetection.motionActive||this.startScreensaver()))}setDefaultStyle(){this.messageContainer.removeAttribute("style"),this.messageContainer.style.position="fixed",this.messageContainer.style.top="1rem",this.messageContainer.style.left="1rem",this.messageContainer.style.bottom="1rem",this.messageContainer.style.right="1rem",this.messageContainer.style.alignItems="flex-end",this.messageContainer.style.display="flex",this.messageContainer.style.flexDirection="column",this.messageContainer.style.gap="0.5rem",this.messageContainer.style.zIndex=this.style.zIndex+1,this.messageContainer.style.pointerEvents="none",this.messageContainer.style.visibility="hidden",this.debugBox.removeAttribute("style"),this.debugBox.style.position="fixed",this.debugBox.style.pointerEvents="none",this.debugBox.style.top="0%",this.debugBox.style.left="0%",this.debugBox.style.width="100%",this.debugBox.style.height="100%",this.debugBox.style.background="#00000099",this.debugBox.style.color="#ffffff",this.debugBox.style.zIndex=this.style.zIndex+2,this.debugBox.style.fontFamily="monospace",this.debugBox.style.fontSize="12px",this.debugBox.style.overflowWrap="break-word",this.debugBox.style.overflowY="auto",this.debugBox.style.visibility="hidden",this.screensaverContainer.removeAttribute("style"),this.screensaverContainer.style.position="fixed",this.screensaverContainer.style.pointerEvents="auto",this.screensaverContainer.style.top=0,this.screensaverContainer.style.right=0,this.screensaverContainer.style.bottom=0,this.screensaverContainer.style.left=0,this.screensaverContainer.style.background="#000000",this.screensaverContainer.style.overflow="hidden",this.imageOneContainer.removeAttribute("style"),this.imageOneContainer.style.opacity=0,this.imageOneContainer.style.position="absolute",this.imageOneContainer.style.pointerEvents="none",this.imageOneContainer.style.top=0,this.imageOneContainer.style.left=0,this.imageOneContainer.style.width="100%",this.imageOneContainer.style.height="100%",this.imageOneContainer.style.border="none",this.imageOneBackground.style.position="absolute",this.imageOneBackground.style.pointerEvents="none",this.imageOneBackground.style.top=0,this.imageOneBackground.style.left=0,this.imageOneBackground.style.width="100%",this.imageOneBackground.style.height="100%",this.imageOneBackground.style.border="none",this.imageOne.removeAttribute("style"),this.imageOne.style.position="relative",this.imageOne.style.pointerEvents="none",this.imageOne.style.width="100%",this.imageOne.style.height="100%",this.imageOne.style.border="none",this.imageOneInfoContainer.removeAttribute("style"),this.imageOneInfoContainer.style.position="absolute",this.imageOneInfoContainer.style.pointerEvents="none",this.imageOneInfoContainer.style.top=0,this.imageOneInfoContainer.style.left=0,this.imageOneInfoContainer.style.width="100%",this.imageOneInfoContainer.style.height="100%",this.imageOneInfoContainer.style.border="none",this.imageOneInfo.style.overflowY="auto",this.imageTwoContainer.removeAttribute("style"),this.imageTwoContainer.style.opacity=0,this.imageTwoContainer.style.position="absolute",this.imageTwoContainer.style.pointerEvents="none",this.imageTwoContainer.style.top=0,this.imageTwoContainer.style.left=0,this.imageTwoContainer.style.width="100%",this.imageTwoContainer.style.height="100%",this.imageTwoContainer.style.border="none",this.imageTwoBackground.style.position="absolute",this.imageTwoBackground.style.pointerEvents="none",this.imageTwoBackground.style.top=0,this.imageTwoBackground.style.left=0,this.imageTwoBackground.style.width="100%",this.imageTwoBackground.style.height="100%",this.imageTwoBackground.style.border="none",this.imageTwo.removeAttribute("style"),this.imageTwo.style.position="relative",this.imageTwo.style.pointerEvents="none",this.imageTwo.style.width="100%",this.imageTwo.style.height="100%",this.imageTwo.style.border="none",this.imageTwoInfoContainer.removeAttribute("style"),this.imageTwoInfoContainer.style.position="absolute",this.imageTwoInfoContainer.style.pointerEvents="none",this.imageTwoInfoContainer.style.top=0,this.imageTwoInfoContainer.style.left=0,this.imageTwoInfoContainer.style.width="100%",this.imageTwoInfoContainer.style.height="100%",this.imageTwoInfoContainer.style.border="none",this.imageTwoInfo.style.overflowY="auto",this.screensaverImageOverlay.removeAttribute("style"),this.screensaverImageOverlay.style.position="absolute",this.screensaverImageOverlay.style.top=0,this.screensaverImageOverlay.style.left=0,this.screensaverImageOverlay.style.width="100%",this.screensaverImageOverlay.style.height="100%",this.screensaverImageOverlay.style.background="#00000000",this.infoContainer.removeAttribute("style"),this.infoContainer.style.position="absolute",this.infoContainer.style.pointerEvents="none",this.infoContainer.style.top=0,this.infoContainer.style.left=0,this.infoContainer.style.width="100%",this.infoContainer.style.height="100%",this.infoContainer.style.transition="opacity 2000ms ease-in-out",this.infoContainer.style.padding="25px",this.infoContainer.style.boxSizing="border-box",this.infoBox.removeAttribute("style"),this.infoBox.style.pointerEvents="none",this.infoBox.style.width="fit-content",this.infoBox.style.maxHeight="100%",this.infoBox.style.borderRadius="10px",this.infoBox.style.overflowY="auto",this.infoBox.style.scrollbarWidth="none",this.infoBox.style.setProperty("--wp-card-width","500px"),this.infoBox.style.setProperty("--wp-card-padding","0"),this.infoBox.style.setProperty("--wp-card-margin","5px"),this.infoBox.style.setProperty("--wp-card-backdrop-filter","none"),this.infoBox.style.setProperty("--wp-badges-minwidth","200px"),this.infoBoxPosX.style.pointerEvents="none",this.infoBoxPosX.style.height="100%",this.infoBoxPosX.style.width="100%",this.infoBoxPosY.style.pointerEvents="none",this.infoBoxPosY.style.height="100%",this.infoBoxPosY.style.width="100%",this.infoBoxContent.style.pointerEvents="none",this.infoBoxContent.style.width="fit-content",this.infoBoxContent.style.height="100%",this.infoBoxContent.style.display="grid",this.fixedInfoContainer.removeAttribute("style"),this.fixedInfoContainer.style.position="fixed",this.fixedInfoContainer.style.pointerEvents="none",this.fixedInfoContainer.style.top=0,this.fixedInfoContainer.style.left=0,this.fixedInfoContainer.style.width="100%",this.fixedInfoContainer.style.height="100%",this.fixedInfoBox.style.pointerEvents="none",this.fixedInfoBox.style.cssText=this.infoBox.style.cssText,this.screensaverOverlay.removeAttribute("style"),this.screensaverOverlay.style.position="absolute",this.screensaverOverlay.style.pointerEvents="none",this.screensaverOverlay.style.top=0,this.screensaverOverlay.style.left=0,this.screensaverOverlay.style.width="100%",this.screensaverOverlay.style.height="100%",this.screensaverOverlay.style.background="#00000000"}updateStyle(){this.screensaverOverlay.style.background="#00000000",this.debugBox.style.visibility=Xu.debug?"visible":"hidden",this.debugBox.style.pointerEvents=Xu.debug?"auto":"none",this.style.transition=Xu.fade_in_time>0?"opacity ".concat(Math.round(1e3*Xu.fade_in_time),"ms ease-in-out"):"",this.imageOneContainer.style.transition=Xu.crossfade_time>0?"opacity ".concat(Math.round(1e3*Xu.crossfade_time),"ms ease-in-out"):"",this.imageTwoContainer.style.transition=Xu.crossfade_time>0?"opacity ".concat(Math.round(1e3*Xu.crossfade_time),"ms ease-in-out"):"",this.messageContainer.style.visibility=this.screensaverRunning()?"visible":"hidden",this.screensaverImageOverlay.style.pointerEvents=Xu.content_interaction?"none":"auto";const e=Xu.show_image_info&&Boolean(Xu.image_info_template);if(this.imageOneInfoContainer.style.display=e?"block":"none",this.imageTwoInfoContainer.style.display=e?"block":"none",Xu.info_animation_duration_x?this.infoBoxPosX.style.animation="moveX ".concat(Xu.info_animation_duration_x,"s ").concat(Xu.info_animation_timing_function_x," infinite alternate"):this.infoBoxPosX.style.animation="",Xu.info_animation_duration_y?this.infoBoxPosY.style.animation="moveY ".concat(Xu.info_animation_duration_y,"s ").concat(Xu.info_animation_timing_function_y," infinite alternate"):this.infoBoxPosY.style.animation="",Xu.style)for(const e in Xu.style)if(e.startsWith("wallpanel-")&&"wallpanel-shadow-host"!=e&&"wallpanel-screensaver-info-box-badges"!=e&&"wallpanel-screensaver-info-box-views"!=e&&!th[e]){const t=this.shadowRoot.getElementById(e);if(t){mh.debug("Setting style attributes for element #".concat(e));for(const n in Xu.style[e])mh.debug("Setting style attribute ".concat(n," to ").concat(Xu.style[e][n])),t.style.setProperty(n,Xu.style[e][n]);t==this.infoBox?this.fixedInfoBox.style.cssText=this.infoBox.style.cssText:t==this.infoBoxContent&&(this.fixedInfoBoxContent.style.cssText=this.infoBoxContent.style.cssText)}else mh.error("Element #".concat(e," not found"))}}updateShadowStyle(){const e=getComputedStyle(this.infoContainer),t=this.infoContainer.offsetWidth-parseInt(e.paddingLeft)-parseInt(e.paddingRight)-this.infoBox.offsetWidth,n=this.infoContainer.offsetHeight-parseInt(e.paddingTop)-parseInt(e.paddingBottom)-this.infoBox.offsetHeight;let r="";if(Xu.style){if(Xu.style["wallpanel-shadow-host"])for(const e in Xu.style["wallpanel-shadow-host"])r+="".concat(e,": ").concat(Xu.style["wallpanel-shadow-host"][e],";\n");for(const e in th)Xu.style[e]&&bh(th[e],Xu.style[e])}let i="";for(const e in th){i+=".".concat(e," {\n");for(const t in th[e])i+="".concat(t,": ").concat(th[e][t],";\n");i+="}\n"}this.shadowStyle.innerHTML="\n\t\t\t\t:host {\n\t\t\t\t\t".concat(r,"\n\t\t\t\t}\n\t\t\t\t@keyframes moveX {\n\t\t\t\t\t100% {\n\t\t\t\t\t\ttransform: translate3d(").concat(t,"px, 0, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@keyframes moveY {\n\t\t\t\t\t100% {\n\t\t\t\t\t\ttransform: translate3d(0, ").concat(n,"px, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@keyframes horizontalProgress {\n\t\t\t\t\t0% {\n\t\t\t\t\t\twidth: 0%;\n\t\t\t\t\t}\n\t\t\t\t\t100% {\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@keyframes kenBurnsEffect-experimental {\n\t\t\t\t\t0% {\n\t\t\t\t\t\ttransform: scale(1.0) translateX(calc(var(--hidden-width) / -2 * 1px)) translateY(calc(var(--hidden-height) / -2 * 1px));\n\t\t\t\t\t}\n\t\t\t\t\t50% {\n\t\t\t\t\t\ttransform: scale(var(--ken-burns-zoom));\n\t\t\t\t\t}\n\t\t\t\t\t90% {\n\t\t\t\t\t\ttransform: scale(calc(1.0 + ((var(--ken-burns-zoom) - 1.0)/2))) translateX(calc(var(--hidden-width) / 2 * 1px)) translateY(calc(var(--hidden-height) / 2 * 1px));\n\t\t\t\t\t}\n\t\t\t\t\t100% {\n\t\t\t\t\t\ttransform: scale(1.0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@keyframes kenBurnsEffect-experimental2 {\n\t\t\t\t\t0% {\n\t\t\t\t\t\ttransform: scale(1.0);\n\t\t\t\t\t}\n\t\t\t\t\t25% {\n\t\t\t\t\t\ttransform: scale(calc(1.0 + ((var(--ken-burns-zoom) - 1.0)/2))) translateX(calc(var(--hidden-width) / 2 * 1px)) translateY(calc(var(--hidden-height) / 2 * 1px));\n\t\t\t\t\t}\n\t\t\t\t\t50% {\n\t\t\t\t\t\ttransform: scale(var(--ken-burns-zoom));\n\t\t\t\t\t}\n\t\t\t\t\t75% {\n\t\t\t\t\t\ttransform: scale(calc(1.0 + ((var(--ken-burns-zoom) - 1.0)/2))) translateX(calc(var(--hidden-width) / -2 * 1px)) translateY(calc(var(--hidden-height) / -2 * 1px));\n\t\t\t\t\t}\n\t\t\t\t\t100% {\n\t\t\t\t\t\ttransform: scale(1.0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@keyframes kenBurnsEffect-simple {\n\t\t\t\t\t0% {\n\t\t\t\t\t\ttransform-origin: bottom left;\n\t\t\t\t\t\ttransform: scale(1.0);\n\t\t\t\t\t}\n\t\t\t\t\t100% {\n\t\t\t\t\t\ttransform: scale(var(--ken-burns-zoom));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t").concat(i,"\n\t\t\t\t").concat(Xu.custom_css,"\n\t\t\t")}randomMove(){const e=getComputedStyle(this.infoContainer),t=this.infoContainer.offsetWidth-parseInt(e.paddingLeft)-parseInt(e.paddingRight)-this.infoBox.offsetWidth,n=this.infoContainer.offsetHeight-parseInt(e.paddingTop)-parseInt(e.paddingBottom)-this.infoBox.offsetHeight,r=Math.floor(Math.random()*t),i=Math.floor(Math.random()*n);this.moveInfoBox(r,i)}moveAroundCorners(){let e=null;arguments.length>0&&void 0!==arguments[0]&&arguments[0]?e=0:this.lastCorner=(this.lastCorner+1)%4;const t=getComputedStyle(this.infoContainer),n=[2,3].includes(this.lastCorner)?this.infoContainer.offsetWidth-parseInt(t.paddingLeft)-parseInt(t.paddingRight)-this.infoBox.offsetWidth:0,r=[1,2].includes(this.lastCorner)?this.infoContainer.offsetHeight-parseInt(t.paddingTop)-parseInt(t.paddingBottom)-this.infoBox.offsetHeight:0;this.moveInfoBox(n,r,e)}moveInfoBox(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(this.lastMove=Date.now(),null===n&&(n=Xu.info_move_fade_duration),n>0)if(this.infoBox.animate){const e=[{opacity:1},{opacity:0,offset:.5},{opacity:1}];this.infoBox.animate(e,{duration:Math.round(1e3*n),iterations:1})}else mh.warn("This browser does not support the animate() method, please set info_move_fade_duration to 0");const r=this;let i=Math.round(500*n);i<0&&(i=0),r.translateTimeout&&clearTimeout(r.translateTimeout),r.translateTimeout=setTimeout(function(){r.infoBoxPosX.style.transform="translate3d(".concat(e,"px, 0, 0)"),r.infoBoxPosY.style.transform="translate3d(0, ".concat(t,"px, 0)")},i)}createInfoBoxContent(){mh.debug("Creating info box content");const e=Ih();if(e){if(this.lovelace=e.lovelace||e.__lovelace,this.infoBoxContentCreatedDate=new Date,this.infoBoxContent.innerHTML="",this.__badges=[],this.__cards=[],this.__views=[],this.energyCollectionUpdateEnabled=!1,this.shadowRoot.querySelectorAll(".wp-card").forEach(e=>{e.parentElement.removeChild(e)}),Xu.badges&&Xu.badges.length>0){const e=document.createElement("div");if(e.id="wallpanel-screensaver-info-box-badges",e.classList.add("wp-badges"),e.style.padding="var(--wp-card-padding)",e.style.margin="var(--wp-card-margin)",e.style.textAlign="center",e.style.display="flex",e.style.alignItems="flex-start",e.style.flexWrap="wrap",e.style.justifyContent="center",e.style.gap="8px",e.style.margin="0px",e.style.minWidth="var(--wp-badges-minwidth)",Xu.style[e.id])for(const t in Xu.style[e.id])mh.debug("Setting style attribute ".concat(t," to ").concat(Xu.style[e.id][t])),e.style.setProperty(t,Xu.style[e.id][t]);Xu.badges.forEach(t=>{const n=JSON.parse(JSON.stringify(t));mh.debug("Creating badge:",n);let r={};n.wp_style&&(r=n.wp_style,delete n.wp_style);const i=(this._createBadgeElement?this._createBadgeElement:this.createBadgeElement).bind(this)(n);i.hass=this.hass;for(const e in r)i.style.setProperty(e,r[e]);this.__badges.push(i),e.append(i)}),this.infoBoxContent.appendChild(e)}if(Xu.views&&Xu.views.length>0){const e=document.createElement("div");if(e.id="wallpanel-screensaver-info-box-views",e.classList.add("wp-views"),Xu.style[e.id])for(const t in Xu.style[e.id])mh.debug("Setting style attribute ".concat(t," to ").concat(Xu.style[e.id][t])),e.style.setProperty(t,Xu.style[e.id][t]);const t=this.lovelace.config.views;Xu.views.forEach(n=>{let r=-1;const i=JSON.parse(JSON.stringify(n));for(var o=0;o0&&Xu.cards.forEach(e=>{const t=JSON.parse(JSON.stringify(e));mh.debug("Creating card:",t);let n={};t.wp_style&&(n=t.wp_style,delete t.wp_style),t.type&&t.type.includes("energy")&&(t.collection_key="energy_wallpanel",this.energyCollectionUpdateEnabled=!0);const r=(this._createCardElement?this._createCardElement:this.createCardElement).bind(this)(t);r.hass=this.hass,this.__cards.push(r);let i=this.infoBoxContent;const o=document.createElement("div");o.classList.add("wp-card"),o.style.width="var(--wp-card-width)",o.style.padding="var(--wp-card-padding)",o.style.margin="var(--wp-card-margin)",o.style.backdropFilter="var(--wp-card-backdrop-filter)",Xu.content_interaction?o.style.pointerEvents="auto":o.style.pointerEvents="none";for(const e in n)if("parent"==e){const t=this.shadowRoot.getElementById(n[e]);t&&(i=t)}else o.style.setProperty(e,n[e]);o.append(r),i.appendChild(o)}),setTimeout(this.updateShadowStyle.bind(this),500)}}setDisplayTime(){const e=Xu.display_time,t=this.getActiveMediaElement(!0);t.updateMediaError?this.displayTime=0:t.play_to_end&&!t.loop?this.displayTime=t.duration:this.displayTime=e}getDisplayTime(){return this.displayTime}restartProgressBarAnimation(){if(!this.progressBarContainer)return;if(this.progressBar.style.animation="none",!Xu.show_progress_bar)return;const e=this;setTimeout(function(){e.progressBar.style.animation="horizontalProgress ".concat(e.getDisplayTime(),"s linear"),e.progressBar.style.animationPlayState=e.isPaused?"paused":"running"},25)}restartKenBurnsEffect(){if(!Xu.image_animation_ken_burns||!Xu.image_animation_ken_burns_animations.length)return;const e=this.getActiveMediaElement();e.style.animation="none",e.style.setProperty("--ken-burns-zoom",Xu.image_animation_ken_burns_zoom);let t=Math.floor(1e3*Xu.image_animation_ken_burns_delay);t<50&&(t=50);const n=Math.ceil(Xu.image_animation_ken_burns_duration||1.2*(this.getDisplayTime()+2*Xu.crossfade_time)),r=Xu.image_animation_ken_burns_animations[Math.floor(Math.random()*Xu.image_animation_ken_burns_animations.length)];this.kenburnsDelayStartTimer&&clearTimeout(this.kenburnsDelayStartTimer),e.animationIterationCount=1,this.kenburnsDelayStartTimer=setTimeout(function(){e.style.animation="kenBurnsEffect-".concat(r," ").concat(n,"s linear forwards")},t)}getMediaElement(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.imageOneContainer.style.opacity==(e?1:0)?this.imageOne:this.imageTwo;if(t&&"ha-camera-stream"==n.tagName.toLowerCase()){const e=_h(n)[1];e&&(n=e)}return n}getActiveMediaElement(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getMediaElement(!0,e)}getInactiveMediaElement(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getMediaElement(!1,e)}replaceMediaElement(e,t){if("string"==typeof e.src&&e.src.startsWith("blob:")&&URL.revokeObjectURL(e.src),"function"==typeof e.pause&&e.pause(),"ha-camera-stream"==e.tagName.toLowerCase()){const[t,n]=_h(e);n&&n.pause(),t&&"function"==typeof t.stop&&t.stop()}t=t.toLowerCase();const n=document.createElement(t);return[...e.attributes].filter(e=>"src"!=e.name).forEach(e=>n.setAttribute(e.name,e.value)),n.mediaUrl=e.mediaUrl,n.infoCacheUrl=e.infoCacheUrl,"video"===t&&Object.assign(n,{preload:"auto",muted:!1,volume:Xu.video_volume}),e.replaceWith(n),e===this.imageOne?this.imageOne=n:this.imageTwo=n,e.remove(),n}loadBackgroundImage(e){let t=e.src;const n=e.tagName.toLowerCase();if("ha-camera-stream"===n){const n=_h(e)[1];if(!n||!n.poster)return;t=n.poster}else if("video"===n){const n=document.createElement("canvas");n.width=e.videoWidth,n.height=e.videoHeight;n.getContext("2d").drawImage(e,0,0,n.width,n.height);try{t=n.toDataURL("image/png")}catch(e){t=null,mh.error("Error extracting canvas image:",e)}}let r=this.imageOneBackground;e==this.imageTwo&&(r=this.imageTwoBackground),r.style.backgroundImage=t?"url('".concat(t.replace(/'/g,"%27"),"')"):""}connectedCallback(){this.style.zIndex=Xu.z_index,this.style.visibility="hidden",this.style.opacity=0,this.style.position="fixed",this.timerInterval||(this.timerInterval=setInterval(this.timer.bind(this),1e3)),this.messageContainer=document.createElement("div"),this.messageContainer.id="wallpanel-message-container",this.debugBox=document.createElement("div"),this.debugBox.id="wallpanel-debug-box",this.screensaverContainer=document.createElement("div"),this.screensaverContainer.id="wallpanel-screensaver-container",this.imageOneContainer=document.createElement("div"),this.imageOneContainer.id="wallpanel-screensaver-image-one-container",this.imageOneBackground=document.createElement("div"),this.imageOneBackground.className="wallpanel-screensaver-image-background",this.imageOneBackground.id="wallpanel-screensaver-image-one-background",this.imageOne=document.createElement("img"),this.imageOne.id="wallpanel-screensaver-image-one",this.imageOneInfoContainer=document.createElement("div"),this.imageOneInfoContainer.className="wallpanel-screensaver-image-info-container",this.imageOneInfoContainer.id="wallpanel-screensaver-image-one-info-container",this.imageOneInfo=document.createElement("div"),this.imageOneInfo.className="wallpanel-screensaver-image-info",this.imageOneInfo.id="wallpanel-screensaver-image-one-info",this.imageOneInfoContainer.appendChild(this.imageOneInfo),this.imageOneContainer.appendChild(this.imageOneBackground),this.imageOneContainer.appendChild(this.imageOne),this.imageOneContainer.appendChild(this.imageOneInfoContainer),this.screensaverContainer.appendChild(this.imageOneContainer),this.imageTwoContainer=document.createElement("div"),this.imageTwoContainer.id="wallpanel-screensaver-image-two-container",this.imageTwoBackground=document.createElement("div"),this.imageTwoBackground.className="wallpanel-screensaver-image-background",this.imageTwoBackground.id="wallpanel-screensaver-image-two-background",this.imageTwo=document.createElement("img"),this.imageTwo.id="wallpanel-screensaver-image-two",this.imageTwoInfoContainer=document.createElement("div"),this.imageTwoInfoContainer.className="wallpanel-screensaver-image-info-container",this.imageTwoInfoContainer.id="wallpanel-screensaver-image-two-info-container",this.imageTwoInfo=document.createElement("div"),this.imageTwoInfo.className="wallpanel-screensaver-image-info",this.imageTwoInfo.id="wallpanel-screensaver-image-two-info",this.imageTwoInfoContainer.appendChild(this.imageTwoInfo),this.imageTwoContainer.appendChild(this.imageTwoBackground),this.imageTwoContainer.appendChild(this.imageTwo),this.imageTwoContainer.appendChild(this.imageTwoInfoContainer),this.screensaverContainer.appendChild(this.imageTwoContainer),this.screensaverImageOverlay=document.createElement("div"),this.screensaverImageOverlay.id="wallpanel-screensaver-image-overlay",this.screensaverContainer.appendChild(this.screensaverImageOverlay),this.progressBarContainer=document.createElement("div"),this.progressBarContainer.className="wallpanel-progress",this.progressBar=document.createElement("div"),this.progressBar.className="wallpanel-progress-inner",this.progressBar.id="wallpanel-progress-inner",this.progressBarContainer.appendChild(this.progressBar),Xu.show_progress_bar&&this.screensaverContainer.appendChild(this.progressBarContainer),this.pauseIndicator=document.createElement("div"),this.pauseIndicator.id="wp-pause-indicator",this.pauseIndicator.innerHTML="⏸️",this.pauseIndicator.style.position="absolute",this.pauseIndicator.style.top="1rem",this.pauseIndicator.style.left="1rem",this.pauseIndicator.style.fontSize="4rem",this.pauseIndicator.style.lineHeight="1",this.pauseIndicator.style.color="white",this.pauseIndicator.style.filter="drop-shadow(0 0 8px rgba(0,0,0,0.8))",this.pauseIndicator.style.zIndex="9999",this.pauseIndicator.style.pointerEvents="none",this.pauseIndicator.style.display="none",this.screensaverContainer.appendChild(this.pauseIndicator),this.infoContainer=document.createElement("div"),this.infoContainer.id="wallpanel-screensaver-info-container",this.fixedInfoContainer=document.createElement("div"),this.fixedInfoContainer.id="wallpanel-screensaver-fixed-info-container",this.fixedInfoBox=document.createElement("div"),this.fixedInfoBox.id="wallpanel-screensaver-fixed-info-box",this.fixedInfoBoxContent=document.createElement("div"),this.fixedInfoBoxContent.id="wallpanel-screensaver-fixed-info-box-content",this.screensaverContainer.appendChild(this.infoContainer),this.infoBoxPosX=document.createElement("div"),this.infoBoxPosX.id="wallpanel-screensaver-info-box-pos-x",this.infoBoxPosX.x="0",this.infoBoxPosY=document.createElement("div"),this.infoBoxPosY.id="wallpanel-screensaver-info-box-pos-y",this.infoBoxPosY.y="0",this.infoBox=document.createElement("div"),this.infoBox.id="wallpanel-screensaver-info-box",this.infoBoxContent=document.createElement("div"),this.infoBoxContent.id="wallpanel-screensaver-info-box-content",this.infoBoxContent.style.display="grid",this.infoBox.appendChild(this.infoBoxContent),this.infoBoxPosX.appendChild(this.infoBox),this.infoBoxPosY.appendChild(this.infoBoxPosX),this.infoContainer.appendChild(this.infoBoxPosY),this.fixedInfoBox.appendChild(this.fixedInfoBoxContent),this.fixedInfoContainer.appendChild(this.fixedInfoBox),this.infoContainer.appendChild(this.fixedInfoContainer),this.screensaverOverlay=document.createElement("div"),this.screensaverOverlay.id="wallpanel-screensaver-overlay",this.screensaverContainer.appendChild(this.screensaverOverlay),this.shadowStyle=document.createElement("style");const e=this.attachShadow({mode:"open"});e.appendChild(this.shadowStyle),e.appendChild(this.screensaverContainer),e.appendChild(this.messageContainer),e.appendChild(this.debugBox);const t=this,n=["click","touchstart","touchend","wheel"];Xu.stop_screensaver_on_key_down&&n.push("keydown"),Xu.stop_screensaver_on_mouse_move&&n.push("mousemove");const r=e=>{try{t.handleInteractionEvent(e)}catch(e){mh.error(e.stack)}};n.forEach(function(e){window.addEventListener(e,r,!0),t.windowEventHandlers.push({eventName:e,handler:r,options:!0})});const i=e=>{Xu.disable_context_menu&&t.screensaverRunning()&&e.preventDefault()};window.addEventListener("contextmenu",i),this.windowEventHandlers.push({eventName:"contextmenu",handler:i});const o=()=>{try{const e=this.screensaverContainer.clientWidth,n=this.screensaverContainer.clientHeight;!t.screensaverRunning()||t.currentWidth==e&&t.currentHeight==n||(mh.debug("Size changed from ".concat(t.currentWidth,"x").concat(t.currentHeight," to ").concat(e,"x").concat(n)),t.currentWidth=e,t.currentHeight=n,t.updateShadowStyle(),t.setMediaDimensions())}catch(e){mh.error(e.stack)}};window.addEventListener("resize",o),this.windowEventHandlers.push({eventName:"resize",handler:o});const a=()=>{try{t.screensaverRunning()&&t.moreInfoDialogToForeground()}catch(e){mh.error(e.stack)}};window.addEventListener("hass-more-info",a),this.windowEventHandlers.push({eventName:"hass-more-info",handler:a}),this.infoBoxResizeObserver=new ResizeObserver(()=>{"corners"===Xu.info_move_pattern&&this.moveAroundCorners(!0)}),this.infoBoxResizeObserver.observe(this.infoBoxContent),this.setScreensaverEntityState()}disconnectedCallback(){this.timerInterval&&(clearInterval(this.timerInterval),this.timerInterval=null),this.translateTimeout&&(clearTimeout(this.translateTimeout),this.translateTimeout=null),this.windowEventHandlers.length&&(this.windowEventHandlers.forEach(e=>{let{eventName:t,handler:n,options:r}=e;window.removeEventListener(t,n,r)}),this.windowEventHandlers=[]),this.infoBoxResizeObserver&&(this.infoBoxResizeObserver.disconnect(),this.infoBoxResizeObserver=null)}reconfigure(e){const t=e&&Object.keys(e).length>0;!t||e.hide_toolbar==Xu.hide_toolbar&&e.hide_toolbar_action_icons==Xu.hide_toolbar_action_icons&&e.hide_toolbar_on_subviews==Xu.hide_toolbar_on_subviews&&e.hide_sidebar==Xu.hide_sidebar&&e.fullscreen==Xu.fullscreen||Lh(),Xu.theme&&(mh.info("Apply theme",Xu.theme),Zu.theme=Xu.theme,Zu._applyTheme()),this.updateStyle(),this.screensaverRunning()&&this.createInfoBoxContent(),!Xu.info_move_interval&&t&&e.info_move_interval&&Ku.moveInfoBox(0,0);const n=e.image_url!=Xu.image_url||"immich-api"==Ch()&&(Xu.immich_shared_albums!=e.immich_shared_albums||Xu.immich_memories!=e.immich_memories||Xu.immich_favorites!=e.immich_favorites||JSON.stringify(Xu.immich_album_names)!=JSON.stringify(e.immich_album_names)||JSON.stringify(Xu.immich_tag_names)!=JSON.stringify(e.immich_tag_names)||JSON.stringify(Xu.immich_persons)!=JSON.stringify(e.immich_persons));if(Xu.show_images&&(!this.mediaList||!this.mediaList.length||!t||!e.show_images||n)){const e=this,r=this.screensaverRunning()&&t;n&&(this.mediaList=[],this.mediaIndex=-1),this.updateMediaList(function(){r&&e.switchActiveMedia("reconfigure")},n)}if(Xu.disable_screensaver_on_browser_mod_popup_func)try{this.disable_screensaver_on_browser_mod_popup_function=new Function("bmp",Xu.disable_screensaver_on_browser_mod_popup_func)}catch(e){this.disable_screensaver_on_browser_mod_popup_function=null,mh.error("Invalid disable_screensaver_on_browser_mod_popup_func:",e)}Sh()&&Xu.camera_motion_detection_enabled?this.cameraMotionDetection.start():this.cameraMotionDetection.stop()}getMoreInfoDialog(){const e=ah.shadowRoot.querySelector("ha-more-info-dialog");if(!e)return;const t=e.shadowRoot.querySelector("ha-dialog");return t||void 0}moreInfoDialogToForeground(){const e=this;!function t(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const r=e.getMoreInfoDialog();if(r)return r.style.position="absolute",void(r.style.zIndex=e.style.zIndex+1);n<10&&setTimeout(t,50,n+1)}()}fetchEXIFInfo(e){const t=this;if(nh.get(e.infoCacheUrl))return;const n=document.createElement("img");n.src=e.src,n.mediaUrl=e.mediaUrl,n.infoCacheUrl=e.infoCacheUrl,Vh(n,function(){mh.debug("EXIF data:",n.exifdata),rh(n.infoCacheUrl,n.exifdata),t.setMediaDataInfo(n);const e=n.exifdata.GPSLongitude,r=n.exifdata.GPSLatitude;if(Xu.fetch_address_data&&e&&!isNaN(e[0])&&r&&!isNaN(r[0])){let i="S"==n.exifdata.GPSLatitudeRef?-1:1;const o=r[0]*i+(r[1]*i*60+r[2]*i)/3600;i="W"==n.exifdata.GPSLongitudeRef?-1:1;const a=e[0]*i+(e[1]*i*60+e[2]*i)/3600;mh.debug("Fetching nominatim data for lat=".concat(o," lon=").concat(a));const s=new XMLHttpRequest;s.onload=function(){if(200==this.status||0===this.status){const e=JSON.parse(s.responseText);if(mh.debug("nominatim data:",e),e&&e.address){const r=nh.get(n.infoCacheUrl);r?(r.address=e.address,t.setMediaDataInfo(n)):mh.warn("URL not in cache:",n.infoCacheUrl)}}else mh.error("nominatim error:",this.status,s.status,s.responseText)},s.onerror=function(e){mh.error("nominatim error:",e)},s.ontimeout=function(e){mh.error("nominatim timeout:",e)},s.open("GET","https://nominatim.openstreetmap.org/reverse?lat=".concat(o,"&lon=").concat(a,"&format=json")),s.timeout=15e3,s.send()}})}setMediaDataInfo(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=Xu.show_image_info&&Boolean(Xu.image_info_template);if(this.imageOneInfoContainer.style.display=t?"block":"none",this.imageTwoInfoContainer.style.display=t?"block":"none",!t)return this.imageOneInfo.innerHTML="",void(this.imageTwoInfo.innerHTML="");e||(e=this.getActiveMediaElement());const n=e.infoCacheUrl;let r=e.mediaUrl;if(!n)return void mh.debug("infoCacheUrl missing:",e);if(!r)return void mh.debug("mediaUrl missing:",e);r=decodeURI(r);const i=[];if(this.imageOne.infoCacheUrl==n&&i.push(this.imageOneInfo),this.imageTwo.infoCacheUrl==n&&i.push(this.imageTwoInfo),0==i.length)return;let o=nh.get(n);o||(o={}),o.image||(o.image={}),void 0===o.image.url&&(o.image.url=r);const a=r.replace(/\?[^?]*$/,"").replace(/\/+$/,"");if(void 0===o.image.path&&(o.image.path=a.replace(/^[^:]+:\/\/[^/]+/,"")),void 0===o.image.relativePath){const c="media-source"===Ch()?n.replace(/\?[^?]*$/,"").replace(/\/+$/,""):a;o.image.relativePath=c.replace(Xu.image_url,"").replace(/^\/+/,"")}if(void 0===o.image.filename&&(o.image.filename=a.replace(/^.*[\\/]/,"")),void 0===o.image.folderName){o.image.folderName="";const l=a.split("/");l.length>=2&&(o.image.folderName=l[l.length-2])}o.mediaPosition=this.mediaIndex+1,o.mediaCount=this.mediaList.length,mh.debug("Media info:",o);let s=Xu.image_info_template||"";if("analyze"==s){function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const n=Object.keys(e);n.sort(),n.forEach(n=>{const r=e[n];"object"==typeof r&&null!==r?u(r,n+"."):s+="".concat(t).concat(n,": ").concat(fh(r),"
")})}s="",u(o),this.imageOneInfo.style.pointerEvents="none",this.imageTwoInfo.style.pointerEvents="none",i.forEach(e=>{e.style.pointerEvents="auto"})}else s=s.replace(/\${([^}]+)}/g,(e,t)=>{const n=t.split("||");for(let e=0;e{const t=e.split(":",2);t[0]&&t[1]&&(a[t[0].replace(/\s/g,"")]=t[1].replace(/\s/g,""))}))}}let s="";const c=t.split("|");let l="";for(let e=0;e{s&&(s=s[e])}),s)break}if(s){if(/DateTime/i.test(l)){const e=new Date(s.replace(/(\d\d\d\d):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d)/,"$1-$2-$3T$4:$5:$6"));if(isNaN(e))continue;a||(a={year:"numeric",month:"2-digit",day:"2-digit"}),s=e.toLocaleDateString((ah.hass||ah.__hass).locale.language,a)}return"object"==typeof s&&(s=JSON.stringify(s)),r+s+i}}return""});i.forEach(e=>{e.innerHTML=s,e.style.display="block"})}async updateMediaList(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(!Xu.image_url)return;if(this.updatingMediaList)return;if(!t&&(new Date).getTime()-this.lastMediaListUpdate<1e3*Xu.media_list_update_interval)return;const r=this;let i=null;const o=Ch();if("unsplash-api"==o)i=r.updateMediaListFromUnsplashAPI;else if("immich-api"==o)i=r.updateMediaListFromImmichAPI;else{if("media-source"!=o){let t=Xu.image_url;return"iframe"==o?t=t.replace(/^iframe\+/,""):"embed"==o&&(t=t.replace(/^embed\+/,"")),this.mediaList=[t],void(e&&e())}i=r.updateMediaListFromMediaSource}this.updatingMediaList=!0,this.lastMediaListUpdate=Date.now();try{await i.bind(r)(),mh.debug("Media list from ".concat(o," is now:"),r.mediaList),e&&e()}catch(t){const i=3,a=3e3;if(mh.warn("Failed to update media list from ".concat(o,":"),t),nr.updateMediaList(e,!0,n+1),a);else{const e="Failed to update media list from ".concat(Xu.image_url," after ").concat(i," retries: ").concat(t.message||fh(t));mh.error(e)}}this.updatingMediaList=!1}async findMedias(e){const t=this;mh.debug("findMedias: ".concat(e));const n=[];if(Xu.exclude_filenames)for(const e of Xu.exclude_filenames)n.push(new RegExp(e));try{const r=await t.hass.callWS({type:"media_source/browse_media",media_content_id:e});mh.debug("Found media entry",r);const i=r.children.map(async e=>{const r=e.media_content_id.replace(/^media-source:\/\/[^/]+/,"");for(const e of n)if(e.test(r))return null;return["image","video"].includes(e.media_class)?Xu.exclude_media_types&&Xu.exclude_media_types.includes(e.media_class)?null:e.media_content_id:"directory"==e.media_class?await t.findMedias(e.media_content_id):null});return(await Promise.all(i)).flat().filter(e=>null!==e)}catch(t){throw mh.warn("Error browsing media ".concat(e,":"),t),t}}async updateMediaListFromMediaSource(){const e=Xu.image_url,t=this;try{let n=await t.findMedias(e);n="random"==Xu.media_order?Ah(n):"random_but_synced"==Xu.media_order?Ah(n.slice().sort(),yh(vh)):n.sort(),n.length>Xu.media_list_max_size&&(mh.info("Using only ".concat(Xu.media_list_max_size," of ").concat(n.length," media items")),n=n.slice(0,Xu.media_list_max_size)),t.mediaList=n}catch(e){throw new Error("Failed to update image list from ".concat(Xu.image_url,": ").concat(e.message||fh(e)))}}async updateMediaListFromUnsplashAPI(){const e=[],t="".concat(Xu.image_url,"&count=30");mh.debug("Unsplash API request: ".concat(t));try{const n={method:"GET",headers:{Accept:"application/json"}};"undefined"!=typeof AbortSignal&&void 0!==AbortSignal.timeout&&(mh.debug("Using AbortSignal"),n.signal=AbortSignal.timeout(1e3*Xu.immich_api_request_timeout));const r=await fetch(t,n);if(!r.ok){const e=await r.text();throw new Error("Unsplash API request failed: ".concat(r.status," ").concat(r.statusText," - ").concat(e))}const i=await r.json();mh.debug("Got Unsplash API response"),i.forEach(t=>{mh.debug(t);const n="".concat(t.urls.raw,"&w=${width}&h=${height}&auto=format");e.push(n),rh(n,t)}),this.mediaList=e}catch(e){if("AbortError"===e.name)throw new Error("Unsplash API request timed out: ".concat(t));throw e}}async _immichFetch(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i={headers:{"x-api-key":t,"Content-Type":"application/json",Accept:"application/json"}},o=n(n({},i),r);o.headers=n(n({},i.headers),r.headers),"undefined"!=typeof AbortSignal&&void 0!==AbortSignal.timeout&&(mh.debug("Using AbortSignal"),o.signal=AbortSignal.timeout(1e4)),mh.debug("Immich API request: ".concat(e));try{const t=await fetch(e,o);if(!t.ok){const e=await t.text();throw new Error("Immich API request failed: ".concat(t.status," ").concat(t.statusText," - ").concat(e))}return await t.json()}catch(t){if("AbortError"===t.name)throw new Error("Immich API request timed out: ".concat(e));throw t}}async updateMediaListFromImmichAPI(){if(!Xu.immich_api_keys||!Xu.immich_api_keys.length)throw new Error("No immich_api_key configured");const e=this,t=this.screensaverContainer.clientWidth>=this.screensaverContainer.clientHeight?"landscape":"portrait";let n=Xu.exclude_media_orientation;"auto"==n&&(n="landscape"==t?"portrait":"landscape"),mh.debug("config.exclude_media_orientation=".concat(Xu.exclude_media_orientation,", screenOrientation=").concat(t,", exclude_media_orientation=").concat(n));let r=[];const i={},o=Xu.image_url.replace(/^immich\+/,""),a=[];if(Xu.exclude_filenames)for(const e of Xu.exclude_filenames)a.push(new RegExp(e));function s(e){return null!=e.width&&null!=e.height?{width:e.width,height:e.height}:function(e){if(null==e||!e.exifImageWidth||null==e||!e.exifImageHeight)return null;let t=e.exifImageWidth,n=e.exifImageHeight;if(e.orientation){const r=Number(e.orientation);[5,6,7,8,90,-90].includes(r)&&([t,n]=[n,t])}return{width:t,height:n}}(e.exifInfo)}function c(e){const t=s(e);return t?t.width>=t.height?"landscape":"portrait":null}async function l(t,s){let l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;await async function(t,r){const i=Xu.immich_exclude_tag_names&&Xu.immich_exclude_tag_names.length,a=!!n;for(let n=0;n{var n;const s="image"===(null===(n=t.type)||void 0===n?void 0:n.toLowerCase()),c=s&&!0!==t.isEdited&&(null==t.width||null==t.height||void 0===t.isEdited),l=s&&a&&(null==t.width||null==t.height);if(!t.exifInfo||i&&!t.tags||l||c){mh.debug("Fetching asset info for ".concat(t.id));const n=await e._immichFetch("".concat(o,"/assets/").concat(t.id),r);t.exifInfo=n.exifInfo,t.tags=(n.tags||[]).map(e=>e.value),t.width=n.width,t.height=n.height,t.isEdited=n.isEdited}}))}}(t,s);for(const e of t){mh.debug("Processing immich asset",e);const t=e.type.toLowerCase();if(!["image","video"].includes(t)){mh.debug("Neither image nor video, skipping");continue}if(Xu.exclude_media_types&&Xu.exclude_media_types.includes(t)){mh.debug('Media type "'.concat(t,'" excluded'));continue}let u=!1;for(const t of a)t.test(e.originalFileName)&&(mh.debug('Media item excluded by regex "'.concat(t,'"')),u=!0);if(u)continue;if(Xu.immich_exclude_tag_names&&Xu.immich_exclude_tag_names.length){const t=e.tags.filter(e=>Xu.immich_exclude_tag_names.includes(e));if(t.length>0){mh.debug("Media item excluded due to tag(s): ".concat(t.join(", ")));continue}}if(n){const t=c(e);if(t===n){mh.debug('Media item with orientation "'.concat(t,'" excluded'));continue}}let h="original";"preview"==Xu.immich_resolution&&(h="video"==t?"video/playback":"thumbnail?size=preview");let d="".concat(o,"/assets/").concat(e.id,"/").concat(h);if("image"==t&&(d+=d.includes("?")?"&edited=true":"?edited=true"),r.indexOf(d)>=0)continue;r.push(d);const f=e.exifInfo||{};f.immichApiKey=s,f.mediaType=t,f.image={filename:e.originalFileName,folderName:l},i[d]=f}}try{for(const t of Xu.immich_api_keys)if(mh.debug("Using immich API key ".concat(t)),Xu.immich_persons&&Xu.immich_persons.length){mh.debug("Searching for assets based on persons");const n=Xu.immich_persons.map(e=>(Array.isArray(e)?e:[e]).map(e=>e.toLowerCase())),r={};let i=[],a=1,s=!0;for(;s;){const n=await e._immichFetch("".concat(o,"/people?size=1000&page=").concat(a),t);i=i.concat(n.people),s=n.hasNextPage,a++}i.forEach(e=>{e.name&&e.id&&(r[e.name.toLowerCase()]=e.id)});for(const i of n){const n=[];if(i.forEach(e=>{const t=r[e.toLowerCase()];t?n.push(t):mh.error("Person not found in immich: ".concat(e))}),n.length>0){mh.debug("Searching asset metadata for persons: ",n);let r=1;for(;;){mh.debug("Fetching asset metadata page ".concat(r));const a=await e._immichFetch("".concat(o,"/search/metadata"),t,{method:"POST",body:JSON.stringify({personIds:n,withExif:!0,page:r,size:1e3})});if(mh.debug("Got immich API response",a),!a.assets.count){if(1==r){const e="No media items found in immich that contain all these people: ".concat(i);mh.error(e)}break}if(await l(a.assets.items,t),!a.assets.nextPage)break;r=parseInt(a.assets.nextPage,10)}}}}else if(Xu.immich_memories){mh.debug("Fetching immich memories (on_this_day)");const n=await e._immichFetch("".concat(o,"/memories?type=on_this_day"),t);mh.debug("Got immich API response",n);const r=new Date,i=n.filter(e=>{const t=new Date(e.showAt),n=new Date(e.hideAt);return r>=t&&r<=n});mh.debug("Found ".concat(i.length," visible memories")),await Promise.all(i.map(async e=>{mh.debug("Processing memory:",e),await l(e.assets,t)}))}else if(Xu.immich_favorites){mh.debug("Search for favorites in asset metadata");let n=1;for(;;){mh.debug("Fetching asset metadata page ".concat(n));const r=await e._immichFetch("".concat(o,"/search/metadata"),t,{method:"POST",body:JSON.stringify({isFavorite:!0,withExif:!0,page:n,size:1e3})});if(mh.debug("Got immich API response",r),!r.assets.count){if(1==n){const e="No favorite media items found in immich";mh.error(e)}break}if(await l(r.assets.items,t),!r.assets.nextPage)break;n=parseInt(r.assets.nextPage,10)}}else if(Xu.immich_tag_names&&Xu.immich_tag_names.length){mh.debug("Searching for assets based on tag names");const n=Xu.immich_tag_names.map(e=>e.toLowerCase());mh.debug("Fetching immich tags");const r=await e._immichFetch("".concat(o,"/tags"),t);mh.debug("Got immich API response",r);const i=r.filter(e=>{const t=n.includes(e.name.toLowerCase());return mh.debug("".concat(t?"Adding":"Skipping"," tag: ").concat(e.name)),t}).map(e=>e.id);if(i.length>0){mh.debug("Searching asset metadata for tags: ",i);let r=1;for(;;){mh.debug("Fetching asset metadata page ".concat(r));const a=await e._immichFetch("".concat(o,"/search/metadata"),t,{method:"POST",body:JSON.stringify({tagIds:i,withExif:!0,page:r,size:1e3})});if(mh.debug("Got immich API response",a),!a.assets.count){if(1==r){const e="No media items found in immich that contain these tags: ".concat(n);mh.error(e)}break}if(await l(a.assets.items,t),!a.assets.nextPage)break;r=parseInt(a.assets.nextPage,10)}}else{const e="No matching immich tags found or selected.";mh.error(e)}}else{mh.debug("Searching for assets based on albums");const n=(Xu.immich_album_names||[]).map(e=>e.toLowerCase());mh.debug("Fetching immich albums (shared=".concat(Xu.immich_shared_albums,")"));const r=await e._immichFetch("".concat(o,"/server/version"),t);mh.debug("Immich server version:",r);const i=r.major<3?"shared":"isShared",a=await e._immichFetch("".concat(o,"/albums?").concat(i,"=").concat(Xu.immich_shared_albums),t);mh.debug("Got immich API response",a);const s=a.filter(e=>{const t=!n.length||n.includes(e.albumName.toLowerCase());return mh.debug("".concat(t?"Adding":"Skipping"," album: ").concat(e.albumName)),t});if(s.length>0)for(const n of s){mh.debug("Fetching assets for album: ",n.albumName);let r=1;for(;;){const i=await e._immichFetch("".concat(o,"/search/metadata"),t,{method:"POST",body:JSON.stringify({albumIds:[n.id],withExif:!0,page:r})});if(mh.debug("Got immich album assets (page ".concat(r,")"),i),await l(i.assets.items,t,n.albumName),!i.assets.nextPage)break;r=parseInt(i.assets.nextPage,10)}}else mh.debug("No matching immich albums found or selected.")}!function(){if(0==r.length){const e="No matching media assets found";mh.error(e)}r="random"==Xu.media_order?Ah(r):"random_but_synced"==Xu.media_order?Ah(r.slice().sort(),yh(vh)):r.sort(),r.length>Xu.media_list_max_size&&(mh.info("Using only ".concat(Xu.media_list_max_size," of ").concat(r.length," media items")),r=r.slice(0,Xu.media_list_max_size)),r.forEach(e=>{rh(e,i[e])}),e.mediaList=r}()}catch(e){throw mh.error("Immich API processing failed:",e),e}}fillPlaceholders(e){const t=this.screensaverContainer.clientWidth,n=this.screensaverContainer.clientHeight,r=Date.now(),i=Math.floor(r/1e3);return e=(e=(e=(e=e.replace(/\${width}/g,t)).replace(/\${height}/g,n)).replace(/\${timestamp_ms}/g,r)).replace(/\${timestamp}/g,i)}async updateMediaFromUrl(e,t){var n=this;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Xu.force_load_media_with_fetch&&(o=!0);const a=async e=>{const n=e.tagName.toLowerCase(),r={img:"load",video:"loadeddata",iframe:"load",embed:"load"}[n];if(!r)throw new Error('Unsupported element tag "'.concat(e.tagName,'"'));const a=new Promise((i,o)=>{const a=()=>{e.onerror=null,e.removeEventListener(r,s)},s=async()=>{a();try{"img"===n&&"function"==typeof e.decode&&await e.decode(),i()}catch(e){o(e)}};e.addEventListener(r,s),e.onerror=()=>{a(),o(new Error("Failed to load ".concat(e.tagName,' "').concat(t,'"')))}});if(o)if(Xu.stream_load_media)fetch(t,{headers:i}).then(n=>{if(!n.ok)throw new Error("Failed to load ".concat(e.tagName,' "').concat(t,'": ').concat(n));if(!n.body)throw new Error("Failed to load ".concat(e.tagName,' "').concat(t,'": empty body'));const r=n.body.getReader();return new ReadableStream({start:e=>function t(){return r.read().then(n=>{let{done:r,value:i}=n;if(!r)return e.enqueue(i),t();e.close()})}()})}).then(e=>new Response(e)).then(e=>e.blob()).then(t=>{"string"==typeof e.src&&e.src.startsWith("blob:")&&URL.revokeObjectURL(e.src),e.src=URL.createObjectURL(t)});else{i=i||{};const n=await fetch(t,{headers:i});if(mh.debug("Got respone",n),!n.ok)throw new Error("Failed to load ".concat(e.tagName,' "').concat(t,'": ').concat(n));"string"==typeof e.src&&e.src.startsWith("blob:")&&URL.revokeObjectURL(e.src);const r=await n.blob();e.src=URL.createObjectURL(r)}else e.src=t;return a},s=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;t||(t="img"===e.tagName.toLowerCase()?"video":"img");const i=n.replaceMediaElement(e,t);try{return await a(i),i}catch(e){throw r||e}},c=async(e,t)=>{try{return await a(e),e}catch(n){if(t)return await s(e,null,n);throw n}};return r?r===e.tagName.toLowerCase()?await c(e,!1):await s(e,r):await c(e,!0)}getNextMediaURL(){let e,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.mediaList.length?("random_but_synced"==Xu.media_order?e=Math.floor(Date.now()/(1e3*Xu.display_time))%this.mediaList.length:(e=this.mediaIndex,"forwards"==this.mediaListDirection?e++:e--,e>=this.mediaList.length?e=0:e<0&&(e=this.mediaList.length-1)),t&&(this.mediaIndex=e),this.mediaList[e]):null}async updateMediaFromMediaSource(e){var t;const n=await this.hass.callWS({type:"media_source/resolve_media",media_content_id:e.mediaUrl}),r=null===(t=n.mime_type)||void 0===t?void 0:t.match(/^(image|video)\//),i={image:"img",video:"video"}[null==r?void 0:r[1]]||null;let o=n.url;return o.startsWith("http://")||o.startsWith("https://")||(o="".concat(document.location.origin).concat(o)),mh.debug("Setting image src: ".concat(o)),e.mediaUrl=o,await this.updateMediaFromUrl(e,e.mediaUrl,i)}async updateMediaFromImmichAPI(e){const t=nh.get(e.mediaUrl)||{},n="video"==t.mediaType?"video":"img";return await this.updateMediaFromUrl(e,e.mediaUrl,n,{"x-api-key":t.immichApiKey},!0)}async updateMediaFromMediaEntity(e){const t=e.mediaUrl.match(/^media-entity-(image|video):\/\/(.*)/);if(!t)throw new Error('Invalid URL "'.concat(e.mediaUrl,'"'));const n=t[1],r=t[2],i=this.hass.states[r];if(!i)throw new Error('Entity "'.concat(r,'" not available'));function o(){"media_exif"in i.attributes?rh(e.infoCacheUrl,i.attributes.media_exif):rh(e.infoCacheUrl,i.attributes)}if(oh=i.state,"video"==n)return e.infoCacheUrl=e.mediaUrl,o(),(e=this.replaceMediaElement(e,"ha-camera-stream")).style.visibility="hidden",Object.assign(e,{hass:this.__hass,stateObj:this.__hass.states[r],"allow-exoplayer":!1,controls:!1}),new Promise((t,n)=>{let r=0;e.addEventListener("load",async function e(i){const o=i.currentTarget;o.removeEventListener("load",e),await o.updateComplete;const[a,s]=_h(o);if(!a||!s)return r++,r<=20?void setTimeout(()=>e(i),100):void n(new Error("Failed to initialize camera stream player"));if(a.style.height="100%",s.autoplay=!1,s.muted=!1,s.volume=Xu.video_volume,s.style.maxHeight="100%",s.style.height="100%",s.readyState>=s.HAVE_ENOUGH_DATA)t(o);else{const e=()=>{s.removeEventListener("canplay",e),t(o)};s.addEventListener("canplay",e)}})});{if(!i.attributes||!i.attributes.entity_picture)throw new Error('Entity "'.concat(r,'" has no entity_picture attribute'));const t=i.attributes.entity_picture;let n=t.indexOf("?")>0?"&":"?";return n+=this.fillPlaceholders("width=${width}&height=${height}&ts=${timestamp_ms}"),e.mediaUrl=t+n,e.infoCacheUrl=e.mediaUrl,o(),await this.updateMediaFromUrl(e,e.mediaUrl,"img",null,!0)}}async updateMediaFromUnsplashAPI(e){const t=nh.get(e.mediaUrl);return e.mediaUrl=this.fillPlaceholders(e.mediaUrl),t&&rh(e.mediaUrl,t),await this.updateMediaFromUrl(e,e.mediaUrl,"img")}async updateMediaFromMediaIframe(e){return await this.updateMediaFromUrl(e,e.mediaUrl,"iframe")}async updateMediaFromMediaEmbed(e){return await this.updateMediaFromUrl(e,e.mediaUrl,"embed")}async updateMediaFromOtherSrc(e){return e.mediaUrl=this.fillPlaceholders(e.mediaUrl),await this.updateMediaFromUrl(e,e.mediaUrl)}async updateMedia(e){if(Xu.show_images){this.updatingMedia=!0,e.updateMediaError=!1,e.style.visibility="hidden";try{if(e==this.getActiveMediaElement()){const e=this.getInactiveMediaElement();if("video"===e.tagName.toLowerCase())try{e.pause()}catch(e){mh.debug(e)}else if("ha-camera-stream"===e.tagName.toLowerCase())try{const[t,n]=_h(e);n&&n.pause(),t&&"function"==typeof t.stop&&t.stop()}catch(e){mh.debug(e)}}if(e.mediaUrl=this.getNextMediaURL(),!e.mediaUrl)return;if(e.infoCacheUrl=e.mediaUrl,e="media-source"==Ch()?await this.updateMediaFromMediaSource(e):"unsplash-api"==Ch()?await this.updateMediaFromUnsplashAPI(e):"immich-api"==Ch()?await this.updateMediaFromImmichAPI(e):Ch().startsWith("media-entity")?await this.updateMediaFromMediaEntity(e):"iframe"==Ch()?await this.updateMediaFromMediaIframe(e):"embed"==Ch()?await this.updateMediaFromMediaEmbed(e):await this.updateMediaFromOtherSrc(e)){e.style.visibility="visible";const t="video"===e.tagName.toLowerCase();t&&await new Promise((t,n)=>{if(e.readyState>=e.HAVE_ENOUGH_DATA)t();else{const r=()=>{e.removeEventListener("canplay",r),e.removeEventListener("error",i),t()},i=()=>{e.removeEventListener("canplay",r),e.removeEventListener("error",i),n(new Error("Video failed to load"))};e.addEventListener("canplay",r),e.addEventListener("error",i)}}),"image"===Xu.image_background&&this.loadBackgroundImage(e),!t&&Xu.show_image_info&&/.*\.jpe?g$/i.test(e.mediaUrl.split("?")[0].replace(/\/*$/,""))&&this.fetchEXIFInfo(e)}}catch(t){e.updateMediaError=!0,e.style.visibility="visible",mh.error("Failed to update media from ".concat(e.mediaUrl,":"),t)}finally{this.updatingMedia=!1}return e}}setMediaDimensions(){if(!Xu.calculate_media_size)return;const e=this.getActiveMediaElement(),t=this.getActiveMediaElement(!0);if(mh.debug("Setting dimensions for media element",e),!e.mediaUrl)return;const n=t.tagName.toLowerCase();let r=0,i=0;"video"===n?(r=t.videoWidth,i=t.videoHeight):"img"===n&&(r=t.naturalWidth,i=t.naturalHeight);const o=!r||!i||r>=i?Xu.image_fit_landscape:Xu.image_fit_portrait;e.style.position="absolute",e.style.left="0px",e.style.top="0px",e.style.objectFit=o;const a=this.screensaverContainer.clientWidth,s=this.screensaverContainer.clientHeight;let c=s,l=a,u=0,h=0,d=0,f=0;if(mh.debug("Available size is ".concat(a,"x").concat(s,", media size is ").concat(r,"x").concat(i)),r&&i){const e=a/r,t=s/i,n=a-r*t,m=s-i*e;mh.debug("Diff is ".concat(n,"x").concat(m)),"contain"==o&&n=m?(mh.debug("Using available width"),l=a,c=Math.floor(i*e),d="top"==Xu.media_vertical_align?0:"bottom"==Xu.media_vertical_align?s-c:Math.floor((c-s)/-2),u=Math.max(c-s,0)):(mh.debug("Using available height"),c=s,l=Math.floor(r*t),f="left"==Xu.media_horizontal_align?0:"right"==Xu.media_horizontal_align?a-l:Math.floor((l-a)/-2),h=Math.max(l-a,0))}else"iframe"!==n&&"embed"!==n&&mh.warn("Size not available for media element",t);mh.debug("Setting dimensions: size=".concat(l,"x").concat(c," - position=").concat(f,"x").concat(d," - hidden=").concat(h,"x").concat(u)),e.style.width="".concat(l,"px"),e.style.height="".concat(c,"px"),e.style.top="".concat(d,"px"),e.style.left="".concat(f,"px"),e.style.setProperty("--hidden-width",h),e.style.setProperty("--hidden-height",u)}startPlayingActiveMedia(){const e=this.getActiveMediaElement(),t=this.getActiveMediaElement(!0);if("function"!=typeof t.play)return void this.setDisplayTime();const n=()=>{t._wp_video_playback_listeners&&(Object.entries(t._wp_video_playback_listeners).forEach(e=>{let[n,r]=e;t.removeEventListener(n,r)}),t._wp_video_playback_listeners=null)};if(t.loop=Xu.video_loop&&t.duration{if(this.getActiveMediaElement()===t){if(t.currentTime>Xu.crossfade_time){t.duration-t.currentTime<=Xu.crossfade_time&&(this.switchActiveMedia("display_time_elapsed"),n())}}else n()},r=()=>{this.getActiveMediaElement()===t&&this.switchActiveMedia("media_end"),n()},i=()=>{n()};t._wp_video_playback_listeners={timeupdate:e,ended:r,pause:i},Object.entries(t._wp_video_playback_listeners).forEach(e=>{let[n,r]=e;t.addEventListener(n,r)})}t.play().catch(r=>{n(),e===this.getActiveMediaElement()&&mh.error('Failed to play media "'.concat(e.mediaUrl,'" (src=').concat(t.src,"):"),r)})}async switchActiveMedia(e){this.afterFadeoutTimer&&clearTimeout(this.afterFadeoutTimer);const t=Ch();if(t.startsWith("media-entity")){const t=Xu.image_url.replace(/^media-entity-(image|video):\/\//,""),n=this.hass.states[t];if(!n)return void mh.error('Media entity "'.concat(t,'" not available'));if(oh!=n.state)mh.debug("Media entity ".concat(t," state has changed"));else{if("entity_update"==e)return;if("start"==e||"user_action"==e)mh.debug("Media entity ".concat(t," state unchanged, but eventType = ").concat(e));else{if(!Xu.media_entity_load_unchanged)return this.lastMediaUpdate=Date.now(),this.isPaused&&(this.mediaTimeElapsedBeforePause=0),void this.restartProgressBarAnimation();mh.debug("Media entity ".concat(t," state unchanged, but media_entity_load_unchanged = true"))}}oh=n.state}this.lastMediaUpdate=Date.now(),this.isPaused&&(this.mediaTimeElapsedBeforePause=0);const n=this.getActiveMediaElement();if(("iframe"===t||"embed"===t)&&!Xu.iframe_load_unchanged&&this.getNextMediaURL(!1)==n.mediaUrl)return;let r=0;"start"!=e&&(Xu.crossfade_time>0&&(r=Math.round(1e3*Xu.crossfade_time)),"user_action"==e&&r>250&&(r=250));const i=this.getInactiveMediaElement(),o=await this.updateMedia(i);o&&this._switchActiveMedia(o,r)}_switchActiveMedia(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.lastMediaUpdate=Date.now(),this.isPaused&&(this.mediaTimeElapsedBeforePause=0),this.imageOneContainer.style.transition="opacity ".concat(t,"ms ease-in-out"),this.imageTwoContainer.style.transition="opacity ".concat(t,"ms ease-in-out");let n=this.imageOneContainer,r=this.imageTwoContainer,i=this.imageOne,o=this.imageTwo;e==this.imageOne&&(n=this.imageTwoContainer,r=this.imageOneContainer,i=this.imageTwo,o=this.imageOne),mh.debug("Switching active media to '".concat(r.id,"'")),1!=r.style.opacity&&(r.style.opacity=1),0!=n.style.opacity&&(n.style.opacity=0),"iframe"==o.tagName.toLowerCase()&&Xu.iframe_interaction?o.style.pointerEvents="auto":o.style.pointerEvents="none",this.setMediaDataInfo(),this.setMediaDimensions(),this.setImageURLEntityState(),this.startPlayingActiveMedia(),this.restartProgressBarAnimation(),this.restartKenBurnsEffect(),"video"===i.tagName.toLowerCase()&&(this.afterFadeoutTimer=setTimeout(function(){if("video"===i.tagName.toLowerCase())try{i.pause()}catch(e){mh.debug(e)}},t))}showMessage(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;if(!this.messageContainer)return;const i=document.createElement("div");i.className="wallpanel-message ".concat(e);const o=document.createElement("div");o.className="wallpanel-message-title",o.textContent=t,i.appendChild(o);const a=document.createElement("div");a.className="wallpanel-message-text",a.textContent=n,i.appendChild(a),this.messageContainer.appendChild(i),requestAnimationFrame(()=>i.classList.add("show"));const s=this;setTimeout(()=>s.hideMessage(i),r)}hideMessage(e){e.classList.remove("show"),e.addEventListener("transitionend",()=>e.remove())}hideAllMessages(){const e=this.messageContainer.querySelectorAll(".wallpanel-message");if(!e.length)return!1;const t=this;return e.forEach(e=>t.hideMessage(e)),!0}setupScreensaver(){mh.debug("Setup screensaver"),Xu.keep_screen_on_time>0&&!this.screenWakeLock.enabled&&this.screenWakeLock.enable(),Xu.fullscreen&&!Oh()&&Ph()}async startScreensaver(){if(mh.debug("Start screensaver"),this.screensaverStartedAt=Date.now(),this.screensaverStoppedAt=null,this.currentWidth=this.screensaverContainer.clientWidth,this.currentHeight=this.screensaverContainer.clientHeight,this.setDefaultStyle(),wh(),!Sh())return mh.debug("Wallpanel not active, not starting screensaver"),this.screensaverStartedAt=null,void(this.screensaverStoppedAt=Date.now());if(this.getActiveMediaElement()==this.imageOne?(this.imageOneContainer.style.opacity=1,this.imageTwoContainer.style.opacity=0):(this.imageOneContainer.style.opacity=0,this.imageTwoContainer.style.opacity=1),this.setDisplayTime(),await this.switchActiveMedia("start"),this.setupScreensaver(),Xu.keep_screen_on_time>0){const e=this;setTimeout(function(){e.screensaverRunning()&&!e.screenWakeLock.enabled&&(mh.warning("Keep screen on will not work because the user didn't interact with the document first. https://goo.gl/xX8pDD"),e.showMessage("info","Keep screen on","Please tap the screen for a moment to keep it awake and prevent it from turning off.",15e3))},2e3)}this.lastMove=Date.now(),this.lastMediaUpdate=Date.now(),document.documentElement.style.overflow="hidden",this.isPaused=!1,this.mediaTimeElapsedBeforePause=0,this.pauseIndicator.style.display="none",this.createInfoBoxContent(),this.style.visibility="visible",this.style.opacity=1,this.style.pointerEvents="auto",this.setScreensaverEntityState(),(Xu.screensaver_start_navigation_path||Xu.screensaver_stop_close_browser_mod_popup)&&(this.screensaverStopNavigationPathTimeout=setTimeout(()=>{Xu.screensaver_start_navigation_path&&(eh=!0,function(e){(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&!e.includes("?")&&(e+=window.location.search),history.pushState(null,"",e),ah.dispatchEvent(new Event("location-changed",{bubbles:!0,cancelable:!1,composed:!0}))}(Xu.screensaver_start_navigation_path),setTimeout(()=>{eh=!1},5e3)),Xu.screensaver_stop_close_browser_mod_popup&&Eh().forEach(e=>{e.closeDialog()})},1e3*(Xu.fade_in_time+1)))}screensaverRunning(){return Boolean(this.screensaverStartedAt)&&this.screensaverStartedAt>0}stopScreensaver(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;mh.debug("Stop screensaver"),this.screensaverStartedAt=null,this.screensaverStoppedAt=Date.now(),document.documentElement.style.removeProperty("overflow"),this.screensaverStopNavigationPathTimeout&&clearTimeout(this.screensaverStopNavigationPathTimeout),this.hideAllMessages(),this.debugBox.style.pointerEvents="none",this.style.transition=e>0?"opacity ".concat(Math.round(1e3*e),"ms ease-in-out"):"",this.style.opacity=0,this.style.visibility="hidden",this.style.pointerEvents="none",this.imageOneInfo.style.pointerEvents="none",this.imageTwoInfo.style.pointerEvents="none",this.infoBoxPosX.style.animation="",this.infoBoxPosY.style.animation="",this.idleSince=Date.now(),this.screenWakeLock.enabled&&this.screenWakeLock.disable(),setTimeout(this.setScreensaverEntityState.bind(this),25)}updateScreensaver(){const e=new Date,t=e.getTime();if(this.energyCollectionUpdateEnabled&&t-this.lastEnergyCollectionUpdate>=1e3*this.energyCollectionUpdateInterval&&(this.hass.connection._energy_wallpanel&&this.hass.connection._energy_wallpanel.refresh(),this.lastEnergyCollectionUpdate=t),this.infoBoxContentCreatedDate&&this.infoBoxContentCreatedDate.getDate()!=e.getDate()&&this.createInfoBoxContent(),Xu.info_move_interval>0&&t-this.lastMove>=1e3*Xu.info_move_interval&&("random"===Xu.info_move_pattern?this.randomMove():"corners"===Xu.info_move_pattern?this.moveAroundCorners():mh.error("Unknown info move type ".concat(Xu.info_move_pattern))),Xu.black_screen_after_time>0&&t-this.screensaverStartedAt>=1e3*Xu.black_screen_after_time)mh.debug("Setting screen to black"),this.screensaverOverlay.style.background="#000000";else if(Xu.show_images){let e;e="random_but_synced"==Xu.media_order?Math.floor(t/(1e3*Xu.display_time))!=Math.floor(this.lastMediaUpdate/(1e3*Xu.display_time)):t-this.lastMediaUpdate>=1e3*this.getDisplayTime(),!this.isPaused&&e&&this.switchActiveMedia("display_time_elapsed"),t-this.lastMediaListUpdate>=1e3*Xu.media_list_update_interval&&this.updateMediaList(null,!0),"visible"!=this.imageOneContainer.style.visibility&&(this.imageOneContainer.style.visibility="visible"),"visible"!=this.imageOne.style.visibility&&(this.imageOne.style.visibility="visible"),"visible"!=this.imageTwoContainer.style.visibility&&(this.imageTwoContainer.style.visibility="visible"),"visible"!=this.imageTwo.style.visibility&&(this.imageTwo.style.visibility="visible")}else"hidden"!=this.imageOneContainer.style.visibility&&(this.imageOneContainer.style.visibility="hidden"),"hidden"!=this.imageOne.style.visibility&&(this.imageOne.style.visibility="hidden"),"hidden"!=this.imageTwoContainer.style.visibility&&(this.imageTwoContainer.style.visibility="hidden"),"hidden"!=this.imageTwo.style.visibility&&(this.imageTwo.style.visibility="hidden");if(Xu.close_more_info_dialog_time>0){const e=this.getMoreInfoDialog();if(e){const t=new Date;this.moreInfoDialogOpenedAt?t-this.moreInfoDialogOpenedAt>=1e3*Xu.close_more_info_dialog_time&&e.close():this.moreInfoDialogOpenedAt=t}else this.moreInfoDialogOpenedAt=0}if(Xu.debug){let e="";const t={};for(const e in Xu)["profiles"].includes(e)?t[e]="...":t[e]=Xu[e];if(e+='
Download log
',e+="Version: ".concat(Gu,"
"),e+="User-Agent: ".concat(navigator.userAgent,"
"),e+="Config: ".concat(JSON.stringify(t),"
"),e+="Fullscreen: ".concat(Oh(),"
"),e+="Screensaver started at: ".concat(Ku.screensaverStartedAt,"
"),e+="Screen wake lock: enabled=".concat(this.screenWakeLock.enabled," native=").concat(this.screenWakeLock.nativeWakeLockSupported," lock=").concat(this.screenWakeLock._lock," player=").concat(this.screenWakeLock._player," error=").concat(this.screenWakeLock.error,"
"),this.screenWakeLock._player){const t=this.screenWakeLock._player;e+="Screen wake lock video: readyState=".concat(t.readyState," currentTime=").concat(t.currentTime," paused=").concat(t.paused," ended=").concat(t.ended,"
")}e+="Media list size: ".concat(this.mediaList.length,"
");const n=this.getActiveMediaElement();if(n){e+="Current media: ".concat(n.mediaUrl,"
");const t=nh.get(n.infoCacheUrl);t&&(e+="Media info: ".concat(JSON.stringify(t),"
"))}this.debugBox.innerHTML!==e&&(this.debugBox.innerHTML=e,this.debugBox.querySelector("#download_log").addEventListener("click",function(e){mh.downloadMessages(),e.preventDefault()})),this.debugBox.scrollTop=this.debugBox.scrollHeight}this.screenWakeLock.enabled&&Xu.keep_screen_on_time>0&&t-this.screensaverStartedAt>=1e3*Xu.keep_screen_on_time&&(mh.info("Disable wake lock after ".concat(Xu.keep_screen_on_time," seconds")),this.screenWakeLock.disable())}switchMediaDirection(e){this.mediaListDirection=e,this.switchActiveMedia("user_action")}async nextImage(){if(this.updatingMedia)return void mh.debug("Already switching media");mh.debug("Next image");const e=this.mediaListDirection;this.mediaListDirection="forwards";try{await this.switchActiveMedia("user_action")}finally{this.mediaListDirection=e}}async previousImage(){if(this.updatingMedia)return void mh.debug("Already switching media");mh.debug("Previous image");const e=this.mediaListDirection;this.mediaListDirection="backwards";try{await this.switchActiveMedia("user_action")}finally{this.mediaListDirection=e}}togglePlayPause(){if(mh.debug("Toggle play/pause"),this.screensaverRunning())if(this.isPaused)this.isPaused=!1,this.lastMediaUpdate=Date.now()-(this.mediaTimeElapsedBeforePause||0),this.pauseIndicator.style.display="none",this.progressBar.style.animationPlayState="running",this.startPlayingActiveMedia();else{this.isPaused=!0,this.mediaTimeElapsedBeforePause=Date.now()-this.lastMediaUpdate,this.lastMediaUpdate=Date.now(),this.pauseIndicator.style.display="block",this.progressBar.style.animationPlayState="paused";const e=this.getActiveMediaElement(!0);e&&"function"==typeof e.pause&&e.pause()}}setCameraMotionDetectionEntityState(e){const t=Xu.camera_motion_detection_set_entity;t&&this.__hass.states[t]&&(mh.debug("Updating camera motion detection entity",t,e),this.__hass.callService("input_boolean",e?"turn_on":"turn_off",{entity_id:t}).then(e=>{mh.debug(e)},e=>{mh.error("Failed to set camera motion detection entity state:",e)}))}motionDetected(){Xu.camera_motion_detection_stop_screensaver&&this.screensaverRunning()&&this.stopScreensaver(Xu.fade_out_time_motion_detected),this.setCameraMotionDetectionEntityState(!0)}motionStopped(){this.setCameraMotionDetectionEntityState(!1)}handleInteractionEvent(e){const t=["click","touchend"].includes(e.type),n=Date.now();this.idleSince=n;let r="";if("touchstart"==e.type)return void(e.touches&&e.touches[0]&&(this.touchStartX=e.touches[0].clientX,this.touchStartY=e.touches[0].clientY));if("touchend"==e.type&&this.touchStartX>=0&&e.changedTouches&&e.changedTouches[0]){const t=e.changedTouches[0].clientX-this.touchStartX,n=e.changedTouches[0].clientY-this.touchStartY,i=Math.max(20,.03*window.innerWidth);t>=i&&Math.abs(t)>Math.abs(n)?r="right":t<=-i&&Math.abs(t)>Math.abs(n)&&(r="left"),this.touchStartX=-1,this.touchStartY=-1}if(!this.screensaverRunning())return this.blockEventsUntil>n&&(t&&e.preventDefault(),e.stopImmediatePropagation()),void(t&&this.setupScreensaver());if(t&&this.hideAllMessages())return void(this.blockEventsUntil=n+1e3);let i=e.clientX,o=e.clientY;if(!i&&e.changedTouches&&e.changedTouches[0]&&(i=e.changedTouches[0].clientX),!o&&e.changedTouches&&e.changedTouches[0]&&(o=e.changedTouches[0].clientY),Xu.debug&&i&&i<100&&o&&o<100)return;const a=xh();if(a){const e=[a.shadowRoot.querySelector(".content"),a.shadowRoot.querySelector("ha-dialog-header")];for(let t=0;t=n.left&&i<=n.right&&o>=n.top&&o<=n.bottom)return void mh.debug("Event on browser mod popup:",e[t])}}if(Xu.iframe_interaction&&"iframe"==Ch())return;if(Xu.content_interaction){if(this.getMoreInfoDialog())return;let e=[];e=e.concat(this.__cards||[]),e=e.concat(this.__badges||[]),e=e.concat(this.__views||[]),e.push(this.shadowRoot.getElementById("wallpanel-screensaver-info-box-content")),e.push(this.shadowRoot.getElementById("wallpanel-screensaver-fixed-info-box-content")),"analyze"==Xu.image_info_template&&(e.push(this.imageOneInfo),e.push(this.imageTwoInfo));for(let t=0;t=n.left&&i<=n.right&&o>=n.top&&o<=n.bottom)return void mh.debug("Event on:",e[t])}}let s="";if(r)s="left"==r?"forwards":"backwards",e.stopImmediatePropagation();else if(e instanceof MouseEvent||"TouchEvent"in window&&e instanceof TouchEvent){let n=0,r=0;const a=this.screensaverContainer.getBoundingClientRect();if(i&&(n=(a.right-i)/this.screensaverContainer.clientWidth),o&&(r=(a.bottom-o)/this.screensaverContainer.clientHeight),mh.debug("Event position screensaver:",i,o,a.left,a.right,a.top,a.bottom),r>1||r<0||n>1||n<0)return;if(t&&e.preventDefault(),e.stopImmediatePropagation(),Xu.touch_zone_size_next_image>0&&n<=Xu.touch_zone_size_next_image/100){if(!t)return;s="forwards"}else if(Xu.touch_zone_size_previous_image>0&&n>=(100-Xu.touch_zone_size_previous_image)/100){if(!t)return;s="backwards"}else if(n>=.4&&n<=.6&&r<=.1){const e=new Date;return t&&e-this.lastClickTime<500?(this.clickCount+=1,3==this.clickCount&&(mh.purgeMessages(),Xu.debug=!Xu.debug,this.debugBox.style.visibility=Xu.debug?"visible":"hidden",this.debugBox.style.pointerEvents=Xu.debug?"auto":"none")):this.clickCount=1,void(this.lastClickTime=e)}}s?this.updatingMedia?mh.debug("Already switching media"):(mh.debug("Switching media, direction ".concat(s)),this.mediaListDirection!=s?this.switchMediaDirection(s):this.switchActiveMedia("user_action")):t&&!Xu.stop_screensaver_on_mouse_click||(this.blockEventsUntil=n+1e3*Xu.control_reactivation_time,this.stopScreensaver(Xu.fade_out_time_interaction))}}customElements.get("wallpanel-view-container")||customElements.define("wallpanel-view-container",r),customElements.get("wallpanel-view")||customElements.define("wallpanel-view",i),Zu=document.createElement("wallpanel-view-container"),Ku=document.createElement("wallpanel-view"),Zu.appendChild(Ku),sh.shadowRoot.appendChild(Zu)}function Lh(){mh.debug("activateWallpanel");let e=Xu.hide_toolbar,t=Xu.hide_toolbar_action_icons;if(e&&!Xu.hide_toolbar_on_subviews&&Qu){const n=Ih();if(n&&n.lovelace&&n.lovelace.rawConfig&&n.lovelace.rawConfig.views)for(let r=0;r{mh.debug("Successfully exited fullscreen")},e=>{mh.debug("Failed to exit fullscreen:",e)}):document.mozCancelFullScreen?document.mozCancelFullScreen():document.msRequestFullscreen?document.msRequestFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen())}function Dh(){Ju&&Qu?(wh(),Sh()?Lh():Bh()):Bh()}function Uh(){if(mh.debug("Location changed from '".concat($u,"' to '").concat(window.location.href,"'")),window.location.href==$u)return;$u=window.location.href,Ku&&Ku.screensaverRunning&&Ku.screensaverRunning()&&Xu.stop_screensaver_on_location_change&&(eh?(eh=!1,Ku.screensaverStopNavigationPathTimeout&&clearTimeout(Ku.screensaverStopNavigationPathTimeout)):Ku.stopScreensaver());let e=null,t=null;const n=window.location.pathname.split("/");n.length>1&&(e=n[1],n.length>2&&(t=n[2]));const r=Ju&&e!=Ju;Ju=e,Qu=t,r?(mh.debug("Reset dashboard config"),Vu={},Fh(Dh)):Dh()}function Fh(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=Date.now();null===t&&(t=n);const r=(n-t)/1e3;if(ah=document.querySelector("body > home-assistant"),ah&&ah.shadowRoot&&(sh=ah.shadowRoot.querySelector("home-assistant-main")),!ah||!ah.shadowRoot||!sh)return r>=5?void mh.error("Wallpanel startup failed after ".concat(r," seconds, element home-assistant / home-assistant-main not found.")):void setTimeout(Fh,100,e,t);const i=Ih();if(!(i&&i.lovelace&&i.lovelace.config&&i.lovelace.config))return r>=5?void mh.info("No lovelace config found after ".concat(r," seconds")):void setTimeout(Fh,100,e,t);if(!customElements.get("hui-view"))return r>=5?void mh.error("Wallpanel startup failed after ".concat(r," seconds, hui-view not found.")):void setTimeout(Fh,100,e,t);if(!window.browser_mod){let n=Th(["wait_for_browser_mod_time"]).wait_for_browser_mod_time;if(void 0===n&&(n=qu.wait_for_browser_mod_time),r{let t=null;try{t=e.target.location.href}catch(e){mh.debug(e)}mh.debug("location-changed",t,e),setTimeout(Uh,20)}),window.navigation&&window.navigation.addEventListener("navigate",e=>{let t=null;try{t=e.destination.url}catch(e){mh.debug(e)}mh.debug("navigate",t,e),setTimeout(Uh,30)}),(ah.hass||ah.__hass).connection.subscribeEvents(function(e){mh.debug("lovelace_updated",e),(e.data.url_path?e.data.url_path:"lovelace")==Ju&&(ah.hass||ah.__hass).connection.sendMessagePromise({type:"lovelace/config",url_path:e.data.url_path}).then(e=>{if(Vu={},e.wallpanel)for(const t in e.wallpanel)(t in qu||t in Yu)&&(Vu[t]=e.wallpanel[t]);Dh()})},"lovelace_updated"),setTimeout(Uh,0)})}catch(e){mh.error(e.stack)}var Nh=!1,jh=function(e){return e instanceof jh?e:this instanceof jh?void(this.EXIFwrapped=e):new jh(e)},Wh=jh.Tags={36864:"ExifVersion",40960:"FlashpixVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",37121:"ComponentsConfiguration",37122:"CompressedBitsPerPixel",37500:"MakerNote",37510:"UserComment",40964:"RelatedSoundFile",36867:"DateTimeOriginal",36868:"DateTimeDigitized",37520:"SubsecTime",37521:"SubsecTimeOriginal",37522:"SubsecTimeDigitized",33434:"ExposureTime",33437:"FNumber",34850:"ExposureProgram",34852:"SpectralSensitivity",34855:"ISOSpeedRatings",34856:"OECF",37377:"ShutterSpeedValue",37378:"ApertureValue",37379:"BrightnessValue",37380:"ExposureBias",37381:"MaxApertureValue",37382:"SubjectDistance",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37396:"SubjectArea",37386:"FocalLength",41483:"FlashEnergy",41484:"SpatialFrequencyResponse",41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:"FocalPlaneResolutionUnit",41492:"SubjectLocation",41493:"ExposureIndex",41495:"SensingMethod",41728:"FileSource",41729:"SceneType",41730:"CFAPattern",41985:"CustomRendered",41986:"ExposureMode",41987:"WhiteBalance",41988:"DigitalZoomRation",41989:"FocalLengthIn35mmFilm",41990:"SceneCaptureType",41991:"GainControl",41992:"Contrast",41993:"Saturation",41994:"Sharpness",41995:"DeviceSettingDescription",41996:"SubjectDistanceRange",40965:"InteroperabilityIFDPointer",42016:"ImageUniqueID"},zh=jh.TiffTags={256:"ImageWidth",257:"ImageHeight",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer",40965:"InteroperabilityIFDPointer",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",274:"Orientation",277:"SamplesPerPixel",284:"PlanarConfiguration",530:"YCbCrSubSampling",531:"YCbCrPositioning",282:"XResolution",283:"YResolution",296:"ResolutionUnit",273:"StripOffsets",278:"RowsPerStrip",279:"StripByteCounts",513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",301:"TransferFunction",318:"WhitePoint",319:"PrimaryChromaticities",529:"YCbCrCoefficients",532:"ReferenceBlackWhite",306:"DateTime",270:"ImageDescription",271:"Make",272:"Model",305:"Software",315:"Artist",33432:"Copyright"},Hh=jh.GPSTags={0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude",5:"GPSAltitudeRef",6:"GPSAltitude",7:"GPSTimeStamp",8:"GPSSatellites",9:"GPSStatus",10:"GPSMeasureMode",11:"GPSDOP",12:"GPSSpeedRef",13:"GPSSpeed",14:"GPSTrackRef",15:"GPSTrack",16:"GPSImgDirectionRef",17:"GPSImgDirection",18:"GPSMapDatum",19:"GPSDestLatitudeRef",20:"GPSDestLatitude",21:"GPSDestLongitudeRef",22:"GPSDestLongitude",23:"GPSDestBearingRef",24:"GPSDestBearing",25:"GPSDestDistanceRef",26:"GPSDestDistance",27:"GPSProcessingMethod",28:"GPSAreaInformation",29:"GPSDateStamp",30:"GPSDifferential"},Gh=jh.IFD1Tags={256:"ImageWidth",257:"ImageHeight",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",273:"StripOffsets",274:"Orientation",277:"SamplesPerPixel",278:"RowsPerStrip",279:"StripByteCounts",282:"XResolution",283:"YResolution",284:"PlanarConfiguration",296:"ResolutionUnit",513:"JpegIFOffset",514:"JpegIFByteCount",529:"YCbCrCoefficients",530:"YCbCrSubSampling",531:"YCbCrPositioning",532:"ReferenceBlackWhite"},qh=jh.StringValues={ExposureProgram:{0:"Not defined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},SensingMethod:{1:"Not defined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},SceneType:{1:"Directly photographed"},CustomRendered:{0:"Normal process",1:"Custom process"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},GainControl:{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},SubjectDistanceRange:{0:"Unknown",1:"Macro",2:"Close view",3:"Distant view"},FileSource:{3:"DSC"},Components:{0:"",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"}};function Yh(e){return!!e.exifdata}function Vh(e,t){function n(n){var r=Xh(n);e.exifdata=r||{};var i=function(e){var t=new DataView(e);if(255!=t.getUint8(0)||216!=t.getUint8(1))return!1;var n=2,r=e.byteLength,i=function(e,t){return 56===e.getUint8(t)&&66===e.getUint8(t+1)&&73===e.getUint8(t+2)&&77===e.getUint8(t+3)&&4===e.getUint8(t+4)&&4===e.getUint8(t+5)};for(;n")+8,l=(s=s.substring(s.indexOf("4?f:t+8,a=[],c=0;c4?f:t+8,d-1);case 3:if(1==d)return e.getUint16(t+8,!i);for(o=d>2?f:t+8,a=[],c=0;c>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t+=String.fromCharCode(i);break;case 12:case 13:o=e[n++],t+=String.fromCharCode((31&i)<<6|63&o);break;case 14:o=e[n++],a=e[n++],t+=String.fromCharCode((15&i)<<12|(63&o)<<6|63&a)}return t}(r)}function ed(e,t){if("Exif"!=Kh(e,t,4))return!1;var n,r,i,o,a,s=t+6;if(18761==e.getUint16(s))n=!1;else{if(19789!=e.getUint16(s))return!1;n=!0}if(42!=e.getUint16(s+2,!n))return!1;var c=e.getUint32(s+4,!n);if(c<8)return!1;if((r=Qh(e,s,s+c,zh,n)).ExifIFDPointer)for(i in o=Qh(e,s,s+r.ExifIFDPointer,Wh,n)){switch(i){case"LightSource":case"Flash":case"MeteringMode":case"ExposureProgram":case"SensingMethod":case"SceneCaptureType":case"SceneType":case"CustomRendered":case"WhiteBalance":case"GainControl":case"Contrast":case"Saturation":case"Sharpness":case"SubjectDistanceRange":case"FileSource":o[i]=qh[i][o[i]];break;case"ExifVersion":case"FlashpixVersion":o[i]=String.fromCharCode(o[i][0],o[i][1],o[i][2],o[i][3]);break;case"ComponentsConfiguration":o[i]=qh.Components[o[i][0]]+qh.Components[o[i][1]]+qh.Components[o[i][2]]+qh.Components[o[i][3]]}r[i]=o[i]}if(r.GPSInfoIFDPointer)for(i in a=Qh(e,s,s+r.GPSInfoIFDPointer,Hh,n)){if("GPSVersionID"==i)try{a[i]=a[i][0]+"."+a[i][1]+"."+a[i][2]+"."+a[i][3]}catch(e){}r[i]=a[i]}return r.thumbnail=function(e,t,n,r){var i=function(e,t,n){var r=e.getUint16(t,!n);return e.getUint32(t+2+12*r,!n)}(e,t+n,r);if(!i)return{};if(i>e.byteLength)return{};var o=Qh(e,t,t+i,Gh,r);if(o.Compression)switch(o.Compression){case 6:if(o.JpegIFOffset&&o.JpegIFByteCount){var a=t+o.JpegIFOffset,s=o.JpegIFByteCount;o.blob=new Blob([new Uint8Array(e.buffer,a,s)],{type:"image/jpeg"})}break;case 1:mh.log("Thumbnail image format is TIFF, which is not implemented.");break;default:mh.log("Unknown thumbnail image format '%s'",o.Compression)}else 2==o.PhotometricInterpretation&&mh.log("Thumbnail image format is RGB, which is not implemented.");return o}(e,s,c,n),r}function td(e){var t={};if(1==e.nodeType){if(e.attributes.length>0){t["@attributes"]={};for(var n=0;n0)for(var n=0;n0&&e[0]<4?1:+(e[0]+e[1])),!t&&r&&(!(e=r.match(/Edge\/(\d+)/))||e[1]>=74)&&(e=r.match(/Chrome\/(\d+)/))&&(t=+e[1]),Y=t}function Ee(){if($)return X;$=1;var e=we(),t=v(),n=s().String;return X=!!Object.getOwnPropertySymbols&&!t(function(){var t=Symbol("symbol detection");return!n(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&e&&e<41})}function xe(){if(Q)return J;Q=1;var e=Ee();return J=e&&!Symbol.sham&&"symbol"==typeof Symbol.iterator}function Se(){if(K)return Z;K=1;var e=Ae(),t=ve(),n=_e(),r=xe(),i=Object;return Z=r?function(e){return"symbol"==typeof e}:function(r){var o=e("Symbol");return t(o)&&n(o.prototype,i(r))}}function Ce(){if(te)return ee;te=1;var e=String;return ee=function(t){try{return e(t)}catch(e){return"Object"}}}function Ie(){if(re)return ne;re=1;var e=ve(),t=Ce(),n=TypeError;return ne=function(r){if(e(r))return r;throw new n(t(r)+" is not a function")}}function Te(){if(oe)return ie;oe=1;var e=Ie(),t=me();return ie=function(n,r){var i=n[r];return t(i)?void 0:e(i)}}function Re(){if(se)return ae;se=1;var e=_(),t=ve(),n=ye(),r=TypeError;return ae=function(i,o){var a,s;if("string"===o&&t(a=i.toString)&&!n(s=e(a,i)))return s;if(t(a=i.valueOf)&&!n(s=e(a,i)))return s;if("string"!==o&&t(a=i.toString)&&!n(s=e(a,i)))return s;throw new r("Can't convert object to primitive value")}}var ke,Oe,Pe,Me,Le,Be,De,Ue,Fe,Ne,je,We,ze,He,Ge,qe,Ye,Ve,Xe,$e,Je,Qe,Ze,Ke,et={exports:{}};function tt(){return Oe?ke:(Oe=1,ke=!1)}function nt(){if(Me)return Pe;Me=1;var e=s(),t=Object.defineProperty;return Pe=function(n,r){try{t(e,n,{value:r,configurable:!0,writable:!0})}catch(t){e[n]=r}return r}}function rt(){if(Le)return et.exports;Le=1;var e=tt(),t=s(),n=nt(),r="__core-js_shared__",i=et.exports=t[r]||n(r,{});return(i.versions||(i.versions=[])).push({version:"3.43.0",mode:e?"pure":"global",copyright:"© 2014-2025 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.43.0/LICENSE",source:"https://github.com/zloirock/core-js"}),et.exports}function it(){if(De)return Be;De=1;var e=rt();return Be=function(t,n){return e[t]||(e[t]=n||{})}}function ot(){if(Fe)return Ue;Fe=1;var e=ge(),t=Object;return Ue=function(n){return t(e(n))}}function at(){if(je)return Ne;je=1;var e=he(),t=ot(),n=e({}.hasOwnProperty);return Ne=Object.hasOwn||function(e,r){return n(t(e),r)}}function st(){if(ze)return We;ze=1;var e=he(),t=0,n=Math.random(),r=e(1.1.toString);return We=function(e){return"Symbol("+(void 0===e?"":e)+")_"+r(++t+n,36)}}function ct(){if(Ge)return He;Ge=1;var e=s(),t=it(),n=at(),r=st(),i=Ee(),o=xe(),a=e.Symbol,c=t("wks"),l=o?a.for||a:a&&a.withoutSetter||r;return He=function(e){return n(c,e)||(c[e]=i&&n(a,e)?a[e]:l("Symbol."+e)),c[e]}}function lt(){if(Ye)return qe;Ye=1;var e=_(),t=ye(),n=Se(),r=Te(),i=Re(),o=ct(),a=TypeError,s=o("toPrimitive");return qe=function(o,c){if(!t(o)||n(o))return o;var l,u=r(o,s);if(u){if(void 0===c&&(c="default"),l=e(u,o,c),!t(l)||n(l))return l;throw new a("Can't convert object to primitive value")}return void 0===c&&(c="number"),i(o,c)}}function ut(){if(Xe)return Ve;Xe=1;var e=lt(),t=Se();return Ve=function(n){var r=e(n,"string");return t(r)?r:r+""}}function ht(){if(Je)return $e;Je=1;var e=s(),t=ye(),n=e.document,r=t(n)&&t(n.createElement);return $e=function(e){return r?n.createElement(e):{}}}function dt(){if(Ze)return Qe;Ze=1;var e=y(),t=v(),n=ht();return Qe=!e&&!t(function(){return 7!==Object.defineProperty(n("div"),"a",{get:function(){return 7}}).a})}function ft(){if(Ke)return p;Ke=1;var e=y(),t=_(),n=le(),r=ue(),i=pe(),o=ut(),a=at(),s=dt(),c=Object.getOwnPropertyDescriptor;return p.f=e?c:function(e,l){if(e=i(e),l=o(l),s)try{return c(e,l)}catch(e){}if(a(e,l))return r(!t(n.f,e,l),e[l])},p}var mt,gt,pt,vt,yt,At,_t,bt={};function wt(){if(gt)return mt;gt=1;var e=y(),t=v();return mt=e&&t(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})}function Et(){if(vt)return pt;vt=1;var e=ye(),t=String,n=TypeError;return pt=function(r){if(e(r))return r;throw new n(t(r)+" is not an object")}}function xt(){if(yt)return bt;yt=1;var e=y(),t=dt(),n=wt(),r=Et(),i=ut(),o=TypeError,a=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c="enumerable",l="configurable",u="writable";return bt.f=e?n?function(e,t,n){if(r(e),t=i(t),r(n),"function"==typeof e&&"prototype"===t&&"value"in n&&u in n&&!n[u]){var o=s(e,t);o&&o[u]&&(e[t]=n.value,n={configurable:l in n?n[l]:o[l],enumerable:c in n?n[c]:o[c],writable:!1})}return a(e,t,n)}:a:function(e,n,s){if(r(e),n=i(n),r(s),t)try{return a(e,n,s)}catch(e){}if("get"in s||"set"in s)throw new o("Accessors not supported");return"value"in s&&(e[n]=s.value),e},bt}function St(){if(_t)return At;_t=1;var e=y(),t=xt(),n=ue();return At=e?function(e,r,i){return t.f(e,r,n(1,i))}:function(e,t,n){return e[t]=n,e}}var Ct,It,Tt,Rt,kt,Ot,Pt,Mt,Lt,Bt,Dt,Ut,Ft,Nt,jt,Wt={exports:{}};function zt(){if(It)return Ct;It=1;var e=y(),t=at(),n=Function.prototype,r=e&&Object.getOwnPropertyDescriptor,i=t(n,"name"),o=i&&"something"===function(){}.name,a=i&&(!e||e&&r(n,"name").configurable);return Ct={EXISTS:i,PROPER:o,CONFIGURABLE:a}}function Ht(){if(Rt)return Tt;Rt=1;var e=he(),t=ve(),n=rt(),r=e(Function.toString);return t(n.inspectSource)||(n.inspectSource=function(e){return r(e)}),Tt=n.inspectSource}function Gt(){if(Mt)return Pt;Mt=1;var e=it(),t=st(),n=e("keys");return Pt=function(e){return n[e]||(n[e]=t(e))}}function qt(){return Bt?Lt:(Bt=1,Lt={})}function Yt(){if(Ut)return Dt;Ut=1;var e,t,n,r=function(){if(Ot)return kt;Ot=1;var e=s(),t=ve(),n=e.WeakMap;return kt=t(n)&&/native code/.test(String(n))}(),i=s(),o=ye(),a=St(),c=at(),l=rt(),u=Gt(),h=qt(),d="Object already initialized",f=i.TypeError,m=i.WeakMap;if(r||l.state){var g=l.state||(l.state=new m);g.get=g.get,g.has=g.has,g.set=g.set,e=function(e,t){if(g.has(e))throw new f(d);return t.facade=e,g.set(e,t),t},t=function(e){return g.get(e)||{}},n=function(e){return g.has(e)}}else{var p=u("state");h[p]=!0,e=function(e,t){if(c(e,p))throw new f(d);return t.facade=e,a(e,p,t),t},t=function(e){return c(e,p)?e[p]:{}},n=function(e){return c(e,p)}}return Dt={set:e,get:t,has:n,enforce:function(r){return n(r)?t(r):e(r,{})},getterFor:function(e){return function(n){var r;if(!o(n)||(r=t(n)).type!==e)throw new f("Incompatible receiver, "+e+" required");return r}}}}function Vt(){if(Ft)return Wt.exports;Ft=1;var e=he(),t=v(),n=ve(),r=at(),i=y(),o=zt().CONFIGURABLE,a=Ht(),s=Yt(),c=s.enforce,l=s.get,u=String,h=Object.defineProperty,d=e("".slice),f=e("".replace),m=e([].join),g=i&&!t(function(){return 8!==h(function(){},"length",{value:8}).length}),p=String(String).split("String"),A=Wt.exports=function(e,t,n){"Symbol("===d(u(t),0,7)&&(t="["+f(u(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!r(e,"name")||o&&e.name!==t)&&(i?h(e,"name",{value:t,configurable:!0}):e.name=t),g&&n&&r(n,"arity")&&e.length!==n.arity&&h(e,"length",{value:n.arity});try{n&&r(n,"constructor")&&n.constructor?i&&h(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var a=c(e);return r(a,"source")||(a.source=m(p,"string"==typeof t?t:"")),e};return Function.prototype.toString=A(function(){return n(this)&&l(this).source||a(this)},"toString"),Wt.exports}function Xt(){if(jt)return Nt;jt=1;var e=ve(),t=xt(),n=Vt(),r=nt();return Nt=function(i,o,a,s){s||(s={});var c=s.enumerable,l=void 0!==s.name?s.name:o;if(e(a)&&n(a,l,s),s.global)c?i[o]=a:r(o,a);else{try{s.unsafe?i[o]&&(c=!0):delete i[o]}catch(e){}c?i[o]=a:t.f(i,o,{value:a,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return i}}var $t,Jt,Qt,Zt,Kt,en,tn,nn,rn,on,an,sn,cn,ln,un,hn,dn,fn={};function mn(){if(Zt)return Qt;Zt=1;var e=function(){if(Jt)return $t;Jt=1;var e=Math.ceil,t=Math.floor;return $t=Math.trunc||function(n){var r=+n;return(r>0?t:e)(r)}}();return Qt=function(t){var n=+t;return n!=n||0===n?0:e(n)}}function gn(){if(en)return Kt;en=1;var e=mn(),t=Math.max,n=Math.min;return Kt=function(r,i){var o=e(r);return o<0?t(o+i,0):n(o,i)}}function pn(){if(nn)return tn;nn=1;var e=mn(),t=Math.min;return tn=function(n){var r=e(n);return r>0?t(r,9007199254740991):0}}function vn(){if(on)return rn;on=1;var e=pn();return rn=function(t){return e(t.length)}}function yn(){if(ln)return cn;ln=1;var e=he(),t=at(),n=pe(),r=function(){if(sn)return an;sn=1;var e=pe(),t=gn(),n=vn(),r=function(r){return function(i,o,a){var s=e(i),c=n(s);if(0===c)return!r&&-1;var l,u=t(a,c);if(r&&o!=o){for(;c>u;)if((l=s[u++])!=l)return!0}else for(;c>u;u++)if((r||u in s)&&s[u]===o)return r||u||0;return!r&&-1}};return an={includes:r(!0),indexOf:r(!1)}}().indexOf,i=qt(),o=e([].push);return cn=function(e,a){var s,c=n(e),l=0,u=[];for(s in c)!t(i,s)&&t(c,s)&&o(u,s);for(;a.length>l;)t(c,s=a[l++])&&(~r(u,s)||o(u,s));return u}}function An(){return hn?un:(hn=1,un=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"])}function _n(){if(dn)return fn;dn=1;var e=yn(),t=An().concat("length","prototype");return fn.f=Object.getOwnPropertyNames||function(n){return e(n,t)},fn}var bn,wn,En,xn,Sn,Cn,In,Tn,Rn,kn,On,Pn,Mn,Ln,Bn,Dn,Un,Fn,Nn,jn,Wn,zn,Hn,Gn,qn,Yn,Vn,Xn,$n,Jn,Qn,Zn,Kn,er,tr,nr,rr,ir,or,ar,sr,cr,lr={};function ur(){return bn||(bn=1,lr.f=Object.getOwnPropertySymbols),lr}function hr(){if(En)return wn;En=1;var e=Ae(),t=he(),n=_n(),r=ur(),i=Et(),o=t([].concat);return wn=e("Reflect","ownKeys")||function(e){var t=n.f(i(e)),a=r.f;return a?o(t,a(e)):t}}function dr(){if(Sn)return xn;Sn=1;var e=at(),t=hr(),n=ft(),r=xt();return xn=function(i,o,a){for(var s=t(o),c=r.f,l=n.f,u=0;uy&&l(o,arguments[y]),o});if(x.prototype=w,"Error"!==_?i?i(x,E):o(x,E,{name:!0}):h&&v in b&&(a(x,b,v),a(x,b,"prepareStackTrace")),o(x,b),!d)try{w.name!==_&&n(w,"name",_),w.constructor=x}catch(e){}return x}},ar}!function(){if(cr)return a;cr=1;var e=mr(),t=s(),n=gr(),r=Tr(),i="WebAssembly",o=t[i],c=7!==new Error("e",{cause:7}).cause,l=function(t,n){var i={};i[t]=r(t,n,c),e({global:!0,constructor:!0,arity:1,forced:c},i)},u=function(t,n){if(o&&o[t]){var a={};a[t]=r(i+"."+t,n,c),e({target:i,stat:!0,constructor:!0,arity:1,forced:c},a)}};l("Error",function(e){return function(t){return n(e,this,arguments)}}),l("EvalError",function(e){return function(t){return n(e,this,arguments)}}),l("RangeError",function(e){return function(t){return n(e,this,arguments)}}),l("ReferenceError",function(e){return function(t){return n(e,this,arguments)}}),l("SyntaxError",function(e){return function(t){return n(e,this,arguments)}}),l("TypeError",function(e){return function(t){return n(e,this,arguments)}}),l("URIError",function(e){return function(t){return n(e,this,arguments)}}),u("CompileError",function(e){return function(t){return n(e,this,arguments)}}),u("LinkError",function(e){return function(t){return n(e,this,arguments)}}),u("RuntimeError",function(e){return function(t){return n(e,this,arguments)}})}();var Rr,kr,Or,Pr,Mr,Lr,Br,Dr,Ur,Fr,Nr,jr,Wr,zr,Hr,Gr,qr,Yr={};function Vr(){if(kr)return Rr;kr=1;var e=de();return Rr=Array.isArray||function(t){return"Array"===e(t)}}function Xr(){if(Pr)return Or;Pr=1;var e=TypeError;return Or=function(t){if(t>9007199254740991)throw e("Maximum allowed index exceeded");return t}}function $r(){if(Lr)return Mr;Lr=1;var e=de(),t=he();return Mr=function(n){if("Function"===e(n))return t(n)}}function Jr(){if(Dr)return Br;Dr=1;var e=$r(),t=Ie(),n=A(),r=e(e.bind);return Br=function(e,i){return t(e),void 0===i?e:n?r(e,i):function(){return e.apply(i,arguments)}},Br}function Qr(){if(jr)return Nr;jr=1;var e=he(),t=v(),n=ve(),r=wr(),i=Ae(),o=Ht(),a=function(){},s=i("Reflect","construct"),c=/^\s*(?:class|function)\b/,l=e(c.exec),u=!c.test(a),h=function(e){if(!n(e))return!1;try{return s(a,[],e),!0}catch(e){return!1}},d=function(e){if(!n(e))return!1;switch(r(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return u||!!l(c,o(e))}catch(e){return!0}};return d.sham=!0,Nr=!s||t(function(){var e;return h(h.call)||!h(Object)||!h(function(){e=!0})||e})?d:h}function Zr(){if(zr)return Wr;zr=1;var e=Vr(),t=Qr(),n=ye(),r=ct()("species"),i=Array;return Wr=function(o){var a;return e(o)&&(a=o.constructor,(t(a)&&(a===i||e(a.prototype))||n(a)&&null===(a=a[r]))&&(a=void 0)),void 0===a?i:a}}function Kr(){if(Gr)return Hr;Gr=1;var e=Zr();return Hr=function(t,n){return new(e(t))(0===n?0:n)}}!function(){if(qr)return Yr;qr=1;var e=mr(),t=function(){if(Fr)return Ur;Fr=1;var e=Vr(),t=vn(),n=Xr(),r=Jr(),i=function(o,a,s,c,l,u,h,d){for(var f,m,g=l,p=0,v=!!h&&r(h,d);p0&&e(f)?(m=t(f),g=i(o,a,f,m,g,u-1)-1):(n(g+1),o[g]=f),g++),p++;return g};return Ur=i}(),n=ot(),r=vn(),i=mn(),o=Kr();e({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,a=n(this),s=r(a),c=o(a,0);return c.length=t(c,a,a,s,0,void 0===e?1:i(e)),c}})}();var ei,ti,ni,ri={};!function(){if(ni)return ri;ni=1;var e=mr(),t=ot(),n=vn(),r=function(){if(ti)return ei;ti=1;var e=y(),t=Vr(),n=TypeError,r=Object.getOwnPropertyDescriptor,i=e&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();return ei=i?function(e,i){if(t(e)&&!r(e,"length").writable)throw new n("Cannot set read only .length");return e.length=i}:function(e,t){return e.length=t}}(),i=Xr();e({target:"Array",proto:!0,arity:1,forced:v()(function(){return 4294967297!==[].push.call({length:4294967296},1)})||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function(e){var o=t(this),a=n(o),s=arguments.length;i(a+s);for(var c=0;c0;)r[s]=r[--s];s!==c++&&(r[s]=a)}else for(var l=t(o/2),u=n(e(r,0,l),i),h=n(e(r,l),i),d=u.length,f=h.length,m=0,g=0;m3)){if(h)return!0;if(f)return f<603;var e,t,n,r,i="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)m.push({k:t+r,v:n})}for(m.sort(function(e,t){return t.v-e.v}),r=0;ra(n)?1:-1}}(e)),s=i(u),l=0;lu;)n.f(e,a=c[u++],s[a]);return e},Ui}(),r=An(),i=qt(),o=Ni(),a=ht(),s=Gt(),c="prototype",l="script",u=s("IE_PROTO"),h=function(){},d=function(e){return"<"+l+">"+e+""},f=function(e){e.write(d("")),e.close();var t=e.parentWindow.Object;return e=null,t},m=function(){try{e=new ActiveXObject("htmlfile")}catch(e){}var t,n,i;m="undefined"!=typeof document?document.domain&&e?f(e):(n=a("iframe"),i="java"+l+":",n.style.display="none",o.appendChild(n),n.src=String(i),(t=n.contentWindow.document).open(),t.write(d("document.F=Object")),t.close(),t.F):f(e);for(var s=r.length;s--;)delete m[c][r[s]];return m()};return i[u]=!0,Pi=Object.create||function(e,r){var i;return null!==e?(h[c]=t(e),i=new h,h[c]=null,i[u]=e):i=m(),void 0===r?i:n.f(i,r)}}function Wi(){if(Bi)return Li;Bi=1;var e=ct(),t=ji(),n=xt().f,r=e("unscopables"),i=Array.prototype;return void 0===i[r]&&n(i,r,{configurable:!0,value:t(null)}),Li=function(e){i[r][e]=!0}}Di||(Di=1,Wi()("flat"));var zi,Hi,Gi,qi,Yi,Vi,Xi,$i,Ji,Qi,Zi,Ki,eo,to,no,ro,io,oo,ao,so,co,lo,uo,ho,fo,mo,go,po,vo,yo,Ao,_o,bo,wo={};function Eo(){return Hi?zi:(Hi=1,zi="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView)}function xo(){if(qi)return Gi;qi=1;var e=Vt(),t=xt();return Gi=function(n,r,i){return i.get&&e(i.get,r,{getter:!0}),i.set&&e(i.set,r,{setter:!0}),t.f(n,r,i)}}function So(){if(Vi)return Yi;Vi=1;var e=Xt();return Yi=function(t,n,r){for(var i in n)e(t,i,n[i],r);return t}}function Co(){if($i)return Xi;$i=1;var e=_e(),t=TypeError;return Xi=function(n,r){if(e(r,n))return n;throw new t("Incorrect invocation")}}function Io(){if(Qi)return Ji;Qi=1;var e=mn(),t=pn(),n=RangeError;return Ji=function(r){if(void 0===r)return 0;var i=e(r),o=t(i);if(i!==o)throw new n("Wrong length or index");return o}}function To(){if(ro)return no;ro=1;var e=Ki?Zi:(Ki=1,Zi=Math.sign||function(e){var t=+e;return 0===t||t!=t?t:t<0?-1:1}),t=function(){if(to)return eo;to=1;var e=4503599627370496;return eo=function(t){return t+e-e}}(),n=Math.abs;return no=function(r,i,o,a){var s=+r,c=n(s),l=e(s);if(co||h!=h?l*(1/0):l*h}}function Ro(){if(so)return ao;so=1;var e=Array,t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;return ao={pack:function(a,s,c){var l,u,h,d=e(c),f=8*c-s-1,m=(1<>1,p=23===s?n(2,-24)-n(2,-77):0,v=a<0||0===a&&1/a<0?1:0,y=0;for((a=t(a))!=a||a===1/0?(u=a!=a?1:0,l=m):(l=r(i(a)/o),a*(h=n(2,-l))<1&&(l--,h*=2),(a+=l+g>=1?p/h:p*n(2,1-g))*h>=2&&(l++,h/=2),l+g>=m?(u=0,l=m):l+g>=1?(u=(a*h-1)*n(2,s),l+=g):(u=a*n(2,g-1)*n(2,s),l=0));s>=8;)d[y++]=255&u,u/=256,s-=8;for(l=l<0;)d[y++]=255&l,l/=256,f-=8;return d[y-1]|=128*v,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,a=(1<>1,c=o-7,l=i-1,u=e[l--],h=127&u;for(u>>=7;c>0;)h=256*h+e[l--],c-=8;for(r=h&(1<<-c)-1,h>>=-c,c+=t;c>0;)r=256*r+e[l--],c-=8;if(0===h)h=1-s;else{if(h===a)return r?NaN:u?-1/0:1/0;r+=n(2,t),h-=s}return(u?-1:1)*r*n(2,h-t)}}}function ko(){if(ho)return uo;ho=1;var e=at(),t=ve(),n=ot(),r=Gt(),i=function(){if(lo)return co;lo=1;var e=v();return co=!e(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})}(),o=r("IE_PROTO"),a=Object,s=a.prototype;return uo=i?a.getPrototypeOf:function(r){var i=n(r);if(e(i,o))return i[o];var c=i.constructor;return t(c)&&i instanceof c?c.prototype:i instanceof a?s:null}}function Oo(){if(mo)return fo;mo=1;var e=ot(),t=gn(),n=vn();return fo=function(r){for(var i=e(this),o=n(i),a=arguments.length,s=t(a>1?arguments[1]:void 0,o),c=a>2?arguments[2]:void 0,l=void 0===c?o:t(c,o);l>s;)i[s++]=r;return i},fo}function Po(){if(po)return go;po=1;var e=xt().f,t=at(),n=ct()("toStringTag");return go=function(r,i,o){r&&!o&&(r=r.prototype),r&&!t(r,n)&&e(r,n,{configurable:!0,value:i})}}function Mo(){if(yo)return vo;yo=1;var e=s(),t=he(),n=y(),r=Eo(),i=zt(),o=St(),a=xo(),c=So(),l=v(),u=Co(),h=mn(),d=pn(),f=Io(),m=function(){if(oo)return io;oo=1;var e=To();return io=Math.fround||function(t){return e(t,1.1920928955078125e-7,34028234663852886e22,11754943508222875e-54)}}(),g=Ro(),p=ko(),A=Ar(),_=Oo(),b=bi(),w=br(),E=dr(),x=Po(),S=Yt(),C=i.PROPER,I=i.CONFIGURABLE,T="ArrayBuffer",R="DataView",k="prototype",O="Wrong index",P=S.getterFor(T),M=S.getterFor(R),L=S.set,B=e[T],D=B,U=D&&D[k],F=e[R],N=F&&F[k],j=Object.prototype,W=e.Array,z=e.RangeError,H=t(_),G=t([].reverse),q=g.pack,Y=g.unpack,V=function(e){return[255&e]},X=function(e){return[255&e,e>>8&255]},$=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},J=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},Q=function(e){return q(m(e),23,4)},Z=function(e){return q(e,52,8)},K=function(e,t,n){a(e[k],t,{configurable:!0,get:function(){return n(this)[t]}})},ee=function(e,t,n,r){var i=M(e),o=f(n),a=!!r;if(o+t>i.byteLength)throw new z(O);var s=i.bytes,c=o+i.byteOffset,l=b(s,c,c+t);return a?l:G(l)},te=function(e,t,n,r,i,o){var a=M(e),s=f(n),c=r(+i),l=!!o;if(s+t>a.byteLength)throw new z(O);for(var u=a.bytes,h=s+a.byteOffset,d=0;d>24)},setUint8:function(e,t){ie(this,e,t<<24>>24)}},{unsafe:!0})}else U=(D=function(e){u(this,U);var t=f(e);L(this,{type:T,bytes:H(W(t),0),byteLength:t}),n||(this.byteLength=t,this.detached=!1)})[k],N=(F=function(e,t,r){u(this,N),u(e,U);var i=P(e),o=i.byteLength,a=h(t);if(a<0||a>o)throw new z("Wrong offset");if(a+(r=void 0===r?o-a:d(r))>o)throw new z("Wrong length");L(this,{type:R,buffer:e,byteLength:r,byteOffset:a,bytes:i.bytes}),n||(this.buffer=e,this.byteLength=r,this.byteOffset=a)})[k],n&&(K(D,"byteLength",P),K(F,"buffer",M),K(F,"byteLength",M),K(F,"byteOffset",M)),c(N,{getInt8:function(e){return ee(this,1,e)[0]<<24>>24},getUint8:function(e){return ee(this,1,e)[0]},getInt16:function(e){var t=ee(this,2,e,arguments.length>1&&arguments[1]);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=ee(this,2,e,arguments.length>1&&arguments[1]);return t[1]<<8|t[0]},getInt32:function(e){return J(ee(this,4,e,arguments.length>1&&arguments[1]))},getUint32:function(e){return J(ee(this,4,e,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(e){return Y(ee(this,4,e,arguments.length>1&&arguments[1]),23)},getFloat64:function(e){return Y(ee(this,8,e,arguments.length>1&&arguments[1]),52)},setInt8:function(e,t){te(this,1,e,V,t)},setUint8:function(e,t){te(this,1,e,V,t)},setInt16:function(e,t){te(this,2,e,X,t,arguments.length>2&&arguments[2])},setUint16:function(e,t){te(this,2,e,X,t,arguments.length>2&&arguments[2])},setInt32:function(e,t){te(this,4,e,$,t,arguments.length>2&&arguments[2])},setUint32:function(e,t){te(this,4,e,$,t,arguments.length>2&&arguments[2])},setFloat32:function(e,t){te(this,4,e,Q,t,arguments.length>2&&arguments[2])},setFloat64:function(e,t){te(this,8,e,Z,t,arguments.length>2&&arguments[2])}});return x(D,T),x(F,R),vo={ArrayBuffer:D,DataView:F}}function Lo(){if(_o)return Ao;_o=1;var e=Ae(),t=xo(),n=ct(),r=y(),i=n("species");return Ao=function(n){var o=e(n);r&&o&&!o[i]&&t(o,i,{configurable:!0,get:function(){return this}})}}!function(){if(bo)return wo;bo=1;var e=mr(),t=s(),n=Mo(),r=Lo(),i="ArrayBuffer",o=n[i];e({global:!0,constructor:!0,forced:t[i]!==o},{ArrayBuffer:o}),r(i)}();var Bo,Do={};!function(){if(Bo)return Do;Bo=1;var e=mr(),t=$r(),n=v(),r=Mo(),i=Et(),o=gn(),a=pn(),s=r.ArrayBuffer,c=r.DataView,l=c.prototype,u=t(s.prototype.slice),h=t(l.getUint8),d=t(l.setUint8);e({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:n(function(){return!new s(2).slice(1,void 0).byteLength})},{slice:function(e,t){if(u&&void 0===t)return u(i(this),e);for(var n=i(this).byteLength,r=o(e,n),l=o(void 0===t?n:t,n),f=new s(a(l-r)),m=new c(this),g=new c(f),p=0;r92||"NODE"===r&&n>94||"BROWSER"===r&&n>97)return!1;var e=new ArrayBuffer(8),t=i(e,{transfer:[e]});return 0!==e.byteLength||8!==t.byteLength})}function ua(){if(na)return ta;na=1;var e,t,n,r,i=s(),o=ca(),a=la(),c=i.structuredClone,l=i.ArrayBuffer,u=i.MessageChannel,h=!1;if(a)h=function(e){c(e,{transfer:[e]})};else if(l)try{u||(e=o("worker_threads"))&&(u=e.MessageChannel),u&&(t=new u,n=new l(2),r=function(e){t.port1.postMessage(null,[e])},2===n.byteLength&&(r(n),0===n.byteLength&&(h=r)))}catch(e){}return ta=h}function ha(){if(ia)return ra;ia=1;var e=s(),t=he(),n=pr(),r=Io(),i=function(){if(Yo)return qo;Yo=1;var e=Go(),t=TypeError;return qo=function(n){if(e(n))throw new t("ArrayBuffer is detached");return n}}(),o=Ho(),a=ua(),c=la(),l=e.structuredClone,u=e.ArrayBuffer,h=e.DataView,d=Math.min,f=u.prototype,m=h.prototype,g=t(f.slice),p=n(f,"resizable","get"),v=n(f,"maxByteLength","get"),y=t(m.getInt8),A=t(m.setInt8);return ra=(c||a)&&function(e,t,n){var s,f=o(e),m=void 0===t?f:r(t),_=!p||!p(e);if(i(e),c&&(e=l(e,{transfer:[e]}),f===m&&(n||_)))return e;if(f>=m&&(!n||_))s=g(e,0,m);else{var b=n&&!_&&v?{maxByteLength:v(e)}:void 0;s=new u(m,b);for(var w=new h(e),E=new h(s),x=d(m,f),S=0;S=0;i--)if(void 0!==t[i])try{r=e(t[i].iterator,n,r)}catch(e){n="throw",r=e}if("throw"===n)throw r;return r}}function Ga(){if(Oa)return ka;Oa=1;var e=_(),t=ji(),n=St(),r=So(),i=ct(),o=Yt(),a=Te(),s=ba().IteratorPrototype,c=Wa(),l=za(),u=Ha(),h=i("toStringTag"),d="IteratorHelper",f="WrapForValidIterator",m="normal",g="throw",p=o.set,v=function(n){var i=o.getterFor(n?f:d);return r(t(s),{next:function(){var e=i(this);if(n)return e.nextHandler();if(e.done)return c(void 0,!0);try{var t=e.nextHandler();return e.returnHandlerResult?t:c(t,e.done)}catch(t){throw e.done=!0,t}},return:function(){var t=i(this),r=t.iterator;if(t.done=!0,n){var o=a(r,"return");return o?e(o,r):c(void 0,!0)}if(t.inner)try{l(t.inner.iterator,m)}catch(e){return l(r,g,e)}if(t.openIters)try{u(t.openIters,m)}catch(e){return l(r,g,e)}return r&&l(r,m),c(void 0,!0)}})},y=v(!0),A=v(!1);return n(A,h,"Iterator Helper"),ka=function(e,t,n){var r=function(r,i){i?(i.iterator=r.iterator,i.next=r.next):i=r,i.type=t?f:d,i.returnHandlerResult=!!n,i.nextHandler=e,i.counter=0,i.done=!1,p(this,i)};return r.prototype=t?y:A,r}}function qa(){if(Ma)return Pa;Ma=1;var e=Et(),t=za();return Pa=function(n,r,i,o){try{return o?r(e(i)[0],i[1]):r(i)}catch(e){t(n,"throw",e)}}}function Ya(){return Ba?La:(Ba=1,La=function(e,t){var n="function"==typeof Iterator&&Iterator.prototype[e];if(n)try{n.call({next:null},t).next()}catch(e){return!0}})}function Va(){if(Ua)return Da;Ua=1;var e=s();return Da=function(t,n){var r=e.Iterator,i=r&&r.prototype,o=i&&i[t],a=!1;if(o)try{o.call({next:function(){return{done:!0}},return:function(){a=!0}},-1)}catch(e){e instanceof n||(a=!1)}if(!a)return o}}!function(){if(Fa)return Na;Fa=1;var e=mr(),t=_(),n=Ie(),r=Et(),i=ja(),o=Ga(),a=qa(),s=tt(),c=za(),l=Ya(),u=Va(),h=!s&&!l("filter",function(){}),d=!s&&!h&&u("filter",TypeError),f=s||h||d,m=o(function(){for(var e,n,i=this.iterator,o=this.predicate,s=this.next;;){if(e=r(t(s,i)),this.done=!!e.done)return;if(n=e.value,a(i,o,[n,this.counter++],!0))return n}});e({target:"Iterator",proto:!0,real:!0,forced:f},{filter:function(e){r(this);try{n(e)}catch(e){c(this,"throw",e)}return d?t(d,this,e):new m(i(this),{predicate:e})}})}();var Xa,$a,Ja,Qa,Za,Ka,es,ts,ns,rs,is,os={};function as(){return $a?Xa:($a=1,Xa={})}function ss(){if(Qa)return Ja;Qa=1;var e=ct(),t=as(),n=e("iterator"),r=Array.prototype;return Ja=function(e){return void 0!==e&&(t.Array===e||r[n]===e)}}function cs(){if(Ka)return Za;Ka=1;var e=wr(),t=Te(),n=me(),r=as(),i=ct()("iterator");return Za=function(o){if(!n(o))return t(o,i)||t(o,"@@iterator")||r[e(o)]}}function ls(){if(ts)return es;ts=1;var e=_(),t=Ie(),n=Et(),r=Ce(),i=cs(),o=TypeError;return es=function(a,s){var c=arguments.length<2?i(a):s;if(t(c))return n(e(c,a));throw new o(r(a)+" is not iterable")},es}function us(){if(rs)return ns;rs=1;var e=Jr(),t=_(),n=Et(),r=Ce(),i=ss(),o=vn(),a=_e(),s=ls(),c=cs(),l=za(),u=TypeError,h=function(e,t){this.stopped=e,this.result=t},d=h.prototype;return ns=function(f,m,g){var p,v,y,A,_,b,w,E=g&&g.that,x=!(!g||!g.AS_ENTRIES),S=!(!g||!g.IS_RECORD),C=!(!g||!g.IS_ITERATOR),I=!(!g||!g.INTERRUPTED),T=e(m,E),R=function(e){return p&&l(p,"normal"),new h(!0,e)},k=function(e){return x?(n(e),I?T(e[0],e[1],R):T(e[0],e[1])):I?T(e,R):T(e)};if(S)p=f.iterator;else if(C)p=f;else{if(!(v=c(f)))throw new u(r(f)+" is not iterable");if(i(v)){for(y=0,A=o(f);A>y;y++)if((_=k(f[y]))&&a(d,_))return _;return new h(!1)}p=s(f,v)}for(b=S?f.next:p.next;!(w=t(b,p)).done;){try{_=k(w.value)}catch(e){l(p,"throw",e)}if("object"==typeof _&&_&&a(d,_))return _}return new h(!1)}}!function(){if(is)return os;is=1;var e=mr(),t=_(),n=us(),r=Ie(),i=Et(),o=ja(),a=za(),s=Va()("forEach",TypeError);e({target:"Iterator",proto:!0,real:!0,forced:s},{forEach:function(e){i(this);try{r(e)}catch(e){a(this,"throw",e)}if(s)return t(s,this,e);var c=o(this),l=0;n(c,function(t){e(t,l++)},{IS_RECORD:!0})}})}();var hs,ds={};!function(){if(hs)return ds;hs=1;var e=mr(),t=_(),n=Ie(),r=Et(),i=ja(),o=Ga(),a=qa(),s=za(),c=Ya(),l=Va(),u=tt(),h=!u&&!c("map",function(){}),d=!u&&!h&&l("map",TypeError),f=u||h||d,m=o(function(){var e=this.iterator,n=r(t(this.next,e));if(!(this.done=!!n.done))return a(e,this.mapper,[n.value,this.counter++],!0)});e({target:"Iterator",proto:!0,real:!0,forced:f},{map:function(e){r(this);try{n(e)}catch(e){s(this,"throw",e)}return d?t(d,this,e):new m(i(this),{mapper:e})}})}();var fs,ms,gs,ps={};!function(){if(gs)return ps;gs=1;var e=mr(),t=Ae(),n=gr(),r=_(),i=he(),o=v(),a=ve(),s=Se(),c=bi(),l=function(){if(ms)return fs;ms=1;var e=he(),t=Vr(),n=ve(),r=de(),i=Er(),o=e([].push);return fs=function(e){if(n(e))return e;if(t(e)){for(var a=e.length,s=[],c=0;cb)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")})}!function(){if(Ms)return Ls;Ms=1;var e=y(),t=s(),n=he(),r=fr(),i=br(),o=St(),a=ji(),c=_n().f,l=_e(),u=function(){if(_s)return As;_s=1;var e=ye(),t=de(),n=ct()("match");return As=function(r){var i;return e(r)&&(void 0!==(i=r[n])?!!i:"RegExp"===t(r))}}(),h=Er(),d=Ds(),f=Us(),m=_r(),g=Xt(),p=v(),A=at(),_=Yt().enforce,b=Lo(),w=ct(),E=Fs(),x=Ns(),S=w("match"),C=t.RegExp,I=C.prototype,T=t.SyntaxError,R=n(I.exec),k=n("".charAt),O=n("".replace),P=n("".indexOf),M=n("".slice),L=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,B=/a/g,D=/a/g,U=new C(B)!==B,F=f.MISSED_STICKY,N=f.UNSUPPORTED_Y,j=e&&(!U||F||E||x||p(function(){return D[S]=!1,C(B)!==B||C(D)===D||"/a/i"!==String(C(B,"i"))}));if(r("RegExp",j)){for(var W=function(e,t){var n,r,s,c,f,m,g=l(I,this),p=u(e),v=void 0===t,y=[],b=e;if(!g&&p&&v&&e.constructor===W)return e;if((p||l(I,e))&&(e=e.source,v&&(t=d(b))),e=void 0===e?"":h(e),t=void 0===t?"":h(t),b=e,E&&"dotAll"in B&&(r=!!t&&P(t,"s")>-1)&&(t=O(t,/s/g,"")),n=t,F&&"sticky"in B&&(s=!!t&&P(t,"y")>-1)&&N&&(t=O(t,/y/g,"")),x&&(c=function(e){for(var t,n=e.length,r=0,i="",o=[],s=a(null),c=!1,l=!1,u=0,h="";r<=n;r++){if("\\"===(t=k(e,r)))t+=k(e,++r);else if("]"===t)c=!1;else if(!c)switch(!0){case"["===t:c=!0;break;case"("===t:if(i+=t,"?:"===M(e,r+1,r+3))continue;R(L,M(e,r+1))&&(r+=2,l=!0),u++;continue;case">"===t&&l:if(""===h||A(s,h))throw new T("Invalid capture group name");s[h]=!0,o[o.length]=[h,u],l=!1,h="";continue}l?h+=t:i+=t}return[i,o]}(e),e=c[0],y=c[1]),f=i(C(e,t),g?this:I,W),(r||s||y.length)&&(m=_(f),r&&(m.dotAll=!0,m.raw=W(function(e){for(var t,n=e.length,r=0,i="",o=!1;r<=n;r++)"\\"!==(t=k(e,r))?o||"."!==t?("["===t?o=!0:"]"===t&&(o=!1),i+=t):i+="[\\s\\S]":i+=t+k(e,++r);return i}(e),n)),s&&(m.sticky=!0),y.length&&(m.groups=y)),e!==b)try{o(f,"source",""===b?"(?:)":b)}catch(e){}return f},z=c(C),H=0;z.length>H;)m(W,C,z[H++]);I.constructor=W,W.prototype=I,g(t,"RegExp",W,{constructor:!0})}b("RegExp")}();var js,Ws={};!function(){if(js)return Ws;js=1;var e=y(),t=Fs(),n=de(),r=xo(),i=Yt().get,o=RegExp.prototype,a=TypeError;e&&t&&r(o,"dotAll",{configurable:!0,get:function(){if(this!==o){if("RegExp"===n(this))return!!i(this).dotAll;throw new a("Incompatible receiver, RegExp required")}}})}();var zs,Hs,Gs,qs={};function Ys(){if(Hs)return zs;Hs=1;var e,t,n=_(),r=he(),i=Er(),o=Bs(),a=Us(),s=it(),c=ji(),l=Yt().get,u=Fs(),h=Ns(),d=s("native-string-replace",String.prototype.replace),f=RegExp.prototype.exec,m=f,g=r("".charAt),p=r("".indexOf),v=r("".replace),y=r("".slice),A=(t=/b*/g,n(f,e=/a/,"a"),n(f,t,"a"),0!==e.lastIndex||0!==t.lastIndex),b=a.BROKEN_CARET,w=void 0!==/()??/.exec("")[1];return(A||w||b||u||h)&&(m=function(e){var t,r,a,s,u,h,_,E=this,x=l(E),S=i(e),C=x.raw;if(C)return C.lastIndex=E.lastIndex,t=n(m,C,S),E.lastIndex=C.lastIndex,t;var I=x.groups,T=b&&E.sticky,R=n(o,E),k=E.source,O=0,P=S;if(T&&(R=v(R,"y",""),-1===p(R,"g")&&(R+="g"),P=y(S,E.lastIndex),E.lastIndex>0&&(!E.multiline||E.multiline&&"\n"!==g(S,E.lastIndex-1))&&(k="(?: "+k+")",P=" "+P,O++),r=new RegExp("^(?:"+k+")",R)),w&&(r=new RegExp("^"+k+"$(?!\\s)",R)),A&&(a=E.lastIndex),s=n(f,T?r:E,P),T?s?(s.input=y(s.input,O),s[0]=y(s[0],O),s.index=E.lastIndex,E.lastIndex+=s[0].length):E.lastIndex=0:A&&s&&(E.lastIndex=E.global?s.index+s[0].length:a),w&&s&&s.length>1&&n(d,s[0],r,function(){for(u=1;u=f?e?"":void 0:(l=o(h,d))<55296||l>56319||d+1===f||(u=o(h,d+1))<56320||u>57343?e?i(h,d):l:e?a(h,d,d+2):u-56320+(l-55296<<10)+65536}};return Js={codeAt:s(!1),charAt:s(!0)}}function sc(){if(Ks)return Zs;Ks=1;var e=ac().charAt;return Zs=function(t,n,r){return n+(r?e(t,n).length:1)}}function cc(){if(tc)return ec;tc=1;var e=he(),t=ot(),n=Math.floor,r=e("".charAt),i=e("".replace),o=e("".slice),a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,s=/\$([$&'`]|\d{1,2})/g;return ec=function(e,c,l,u,h,d){var f=l+e.length,m=u.length,g=s;return void 0!==h&&(h=t(h),g=a),i(d,g,function(t,i){var a;switch(r(i,0)){case"$":return"$";case"&":return e;case"`":return o(c,0,l);case"'":return o(c,f);case"<":a=h[o(i,1,-1)];break;default:var s=+i;if(0===s)return t;if(s>m){var d=n(s/10);return 0===d?t:d<=m?void 0===u[d-1]?r(i,1):u[d-1]+r(i,1):t}a=u[s-1]}return void 0===a?"":a})}}!function(){if(ic)return oc;ic=1;var e=gr(),t=_(),n=he(),r=function(){if($s)return Xs;$s=1,Vs();var e=_(),t=Xt(),n=Ys(),r=v(),i=ct(),o=St(),a=i("species"),s=RegExp.prototype;return Xs=function(c,l,u,h){var d=i(c),f=!r(function(){var e={};return e[d]=function(){return 7},7!==""[c](e)}),m=f&&!r(function(){var e=!1,t=/a/;return"split"===c&&((t={}).constructor={},t.constructor[a]=function(){return t},t.flags="",t[d]=/./[d]),t.exec=function(){return e=!0,null},t[d](""),!e});if(!f||!m||u){var g=/./[d],p=l(d,""[c],function(t,r,i,o,a){var c=r.exec;return c===n||c===s.exec?f&&!a?{done:!0,value:e(g,r,i,o)}:{done:!0,value:e(t,i,r,o)}:{done:!1}});t(String.prototype,c,p[0]),t(s,d,p[1])}h&&o(s[d],"sham",!0)}}(),i=v(),o=Et(),a=ve(),s=ye(),c=mn(),l=pn(),u=Er(),h=ge(),d=sc(),f=Te(),m=cc(),g=Ds(),p=function(){if(rc)return nc;rc=1;var e=_(),t=Et(),n=ve(),r=de(),i=Ys(),o=TypeError;return nc=function(a,s){var c=a.exec;if(n(c)){var l=e(c,a,s);return null!==l&&t(l),l}if("RegExp"===r(a))return e(i,a,s);throw new o("RegExp#exec called on incompatible receiver")}}(),y=ct()("replace"),A=Math.max,b=Math.min,w=n([].concat),E=n([].push),x=n("".indexOf),S=n("".slice),C=function(e){return void 0===e?e:String(e)},I="$0"==="a".replace(/./,"$0"),T=!!/./[y]&&""===/./[y]("a","$0");r("replace",function(n,r,i){var v=T?"$":"$0";return[function(e,n){var i=h(this),o=s(e)?f(e,y):void 0;return o?t(o,e,i,n):t(r,u(i),e,n)},function(t,n){var s=o(this),h=u(t);if("string"==typeof n&&-1===x(n,v)&&-1===x(n,"$<")){var f=i(r,s,h,n);if(f.done)return f.value}var y=a(n);y||(n=u(n));var _,I=u(g(s)),T=-1!==x(I,"g");T&&(_=-1!==x(I,"u"),s.lastIndex=0);for(var R,k=[];null!==(R=p(s,h))&&(E(k,R),T);){""===u(R[0])&&(s.lastIndex=d(h,l(s.lastIndex),_))}for(var O="",P=0,M=0;M=P&&(O+=S(h,P,D)+L,P=D+B.length)}return O+S(h,P)}]},!!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")})||!I||T)}();var lc,uc,hc,dc,fc,mc,gc,pc={};function vc(){return uc?lc:(uc=1,lc="\t\n\v\f\r                 \u2028\u2029\ufeff")}!function(){if(gc)return pc;gc=1;var e=mr(),t=function(){if(dc)return hc;dc=1;var e=he(),t=ge(),n=Er(),r=vc(),i=e("".replace),o=RegExp("^["+r+"]+"),a=RegExp("(^|[^"+r+"])["+r+"]+$"),s=function(e){return function(r){var s=n(t(r));return 1&e&&(s=i(s,o,"")),2&e&&(s=i(s,a,"$1")),s}};return hc={start:s(1),end:s(2),trim:s(3)}}().trim,n=function(){if(mc)return fc;mc=1;var e=zt().PROPER,t=v(),n=vc();return fc=function(r){return t(function(){return!!n[r]()||"​…᠎"!=="​…᠎"[r]()||e&&n[r].name!==r})}}();e({target:"String",proto:!0,forced:n("trim")},{trim:function(){return t(this)}})}();var yc,Ac,_c,bc,wc,Ec,xc,Sc,Cc,Ic,Tc,Rc,kc,Oc,Pc,Mc,Lc,Bc,Dc,Uc,Fc,Nc,jc,Wc,zc,Hc,Gc,qc,Yc={exports:{}};function Vc(){if(Ac)return yc;Ac=1;var e=ct()("iterator"),t=!1;try{var n=0,r={next:function(){return{done:!!n++}},return:function(){t=!0}};r[e]=function(){return this},Array.from(r,function(){throw 2})}catch(e){}return yc=function(n,r){try{if(!r&&!t)return!1}catch(e){return!1}var i=!1;try{var o={};o[e]=function(){return{next:function(){return{done:i=!0}}}},n(o)}catch(e){}return i}}function Xc(){if(bc)return _c;bc=1;var e,t,n,r=Eo(),i=y(),o=s(),a=ve(),c=ye(),l=at(),u=wr(),h=Ce(),d=St(),f=Xt(),m=xo(),g=_e(),p=ko(),v=Ar(),A=ct(),_=st(),b=Yt(),w=b.enforce,E=b.get,x=o.Int8Array,S=x&&x.prototype,C=o.Uint8ClampedArray,I=C&&C.prototype,T=x&&p(x),R=S&&p(S),k=Object.prototype,O=o.TypeError,P=A("toStringTag"),M=_("TYPED_ARRAY_TAG"),L="TypedArrayConstructor",B=r&&!!v&&"Opera"!==u(o.opera),D=!1,U={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},N=function(e){var t=p(e);if(c(t)){var n=E(t);return n&&l(n,L)?n[L]:N(t)}},j=function(e){if(!c(e))return!1;var t=u(e);return l(U,t)||l(F,t)};for(e in U)(n=(t=o[e])&&t.prototype)?w(n)[L]=t:B=!1;for(e in F)(n=(t=o[e])&&t.prototype)&&(w(n)[L]=t);if((!B||!a(T)||T===Function.prototype)&&(T=function(){throw new O("Incorrect invocation")},B))for(e in U)o[e]&&v(o[e],T);if((!B||!R||R===k)&&(R=T.prototype,B))for(e in U)o[e]&&v(o[e].prototype,R);if(B&&p(I)!==R&&v(I,R),i&&!l(R,P))for(e in D=!0,m(R,P,{configurable:!0,get:function(){return c(this)?this[M]:void 0}}),U)o[e]&&d(o[e],M,e);return _c={NATIVE_ARRAY_BUFFER_VIEWS:B,TYPED_ARRAY_TAG:D&&M,aTypedArray:function(e){if(j(e))return e;throw new O("Target is not a typed array")},aTypedArrayConstructor:function(e){if(a(e)&&(!v||g(T,e)))return e;throw new O(h(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(i){if(n)for(var a in U){var s=o[a];if(s&&l(s.prototype,e))try{delete s.prototype[e]}catch(n){try{s.prototype[e]=t}catch(e){}}}R[e]&&!n||f(R,e,n?t:B&&S[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,a;if(i){if(v){if(n)for(r in U)if((a=o[r])&&l(a,e))try{delete a[e]}catch(e){}if(T[e]&&!n)return;try{return f(T,e,n?t:B&&T[e]||t)}catch(e){}}for(r in U)!(a=o[r])||a[e]&&!n||f(a,e,t)}},getTypedArrayConstructor:N,isView:function(e){if(!c(e))return!1;var t=u(e);return"DataView"===t||l(U,t)||l(F,t)},isTypedArray:j,TypedArray:T,TypedArrayPrototype:R}}function $c(){if(Sc)return xc;Sc=1;var e=ye(),t=Math.floor;return xc=Number.isInteger||function(n){return!e(n)&&isFinite(n)&&t(n)===n}}function Jc(){if(Ic)return Cc;Ic=1;var e=mn(),t=RangeError;return Cc=function(n){var r=e(n);if(r<0)throw new t("The argument can't be less than 0");return r}}function Qc(){if(Rc)return Tc;Rc=1;var e=Jc(),t=RangeError;return Tc=function(n,r){var i=e(n);if(i%r)throw new t("Wrong offset");return i}}function Zc(){if(Oc)return kc;Oc=1;var e=Math.round;return kc=function(t){var n=e(t);return n<0?0:n>255?255:255&n}}function Kc(){if(Mc)return Pc;Mc=1;var e=Qr(),t=Ce(),n=TypeError;return Pc=function(r){if(e(r))return r;throw new n(t(r)+" is not a constructor")}}function el(){if(Bc)return Lc;Bc=1;var e=wr();return Lc=function(t){var n=e(t);return"BigInt64Array"===n||"BigUint64Array"===n}}function tl(){if(Uc)return Dc;Uc=1;var e=lt(),t=TypeError;return Dc=function(n){var r=e(n,"number");if("number"==typeof r)throw new t("Can't convert number to bigint");return BigInt(r)}}function nl(){if(Nc)return Fc;Nc=1;var e=Jr(),t=_(),n=Kc(),r=ot(),i=vn(),o=ls(),a=cs(),s=ss(),c=el(),l=Xc().aTypedArrayConstructor,u=tl();return Fc=function(h){var d,f,m,g,p,v,y,A,_=n(this),b=r(h),w=arguments.length,E=w>1?arguments[1]:void 0,x=void 0!==E,S=a(b);if(S&&!s(S))for(A=(y=o(b,S)).next,b=[];!(v=t(A,y)).done;)b.push(v.value);for(x&&w>2&&(E=e(E,arguments[2])),f=i(b),m=new(l(_))(f),g=c(m),d=0;f>d;d++)p=x?E(b[d],d):b[d],m[d]=g?u(p):+p;return m},Fc}function rl(){if(Hc)return zc;Hc=1;var e=vn();return zc=function(t,n,r){for(var i=0,o=arguments.length>2?r:e(n),a=new t(o);o>i;)a[i]=n[i++];return a},zc}function il(){if(Gc)return Yc.exports;Gc=1;var e=mr(),t=s(),n=_(),r=y(),i=function(){if(Ec)return wc;Ec=1;var e=s(),t=v(),n=Vc(),r=Xc().NATIVE_ARRAY_BUFFER_VIEWS,i=e.ArrayBuffer,o=e.Int8Array;return wc=!r||!t(function(){o(1)})||!t(function(){new o(-1)})||!n(function(e){new o,new o(null),new o(1.5),new o(e)},!0)||t(function(){return 1!==new o(new i(2),1,void 0).length})}(),o=Xc(),a=Mo(),c=Co(),l=ue(),u=St(),h=$c(),d=pn(),f=Io(),m=Qc(),g=Zc(),p=ut(),A=at(),b=wr(),w=ye(),E=Se(),x=ji(),S=_e(),C=Ar(),I=_n().f,T=nl(),R=function(){if(Wc)return jc;Wc=1;var e=Jr(),t=he(),n=fe(),r=ot(),i=vn(),o=Kr(),a=t([].push),s=function(t){var s=1===t,c=2===t,l=3===t,u=4===t,h=6===t,d=7===t,f=5===t||h;return function(m,g,p,v){for(var y,A,_=r(m),b=n(_),w=i(b),E=e(g,p),x=0,S=v||o,C=s?S(m,w):c||d?S(m,0):void 0;w>x;x++)if((f||x in b)&&(A=E(y=b[x],x,_),t))if(s)C[x]=A;else if(A)switch(t){case 3:return!0;case 5:return y;case 6:return x;case 2:a(C,y)}else switch(t){case 4:return!1;case 7:a(C,y)}return h?-1:l||u?u:C}};return jc={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}}().forEach,k=Lo(),O=xo(),P=xt(),M=ft(),L=rl(),B=Yt(),D=br(),U=B.get,F=B.set,N=B.enforce,j=P.f,W=M.f,z=t.RangeError,H=a.ArrayBuffer,G=H.prototype,q=a.DataView,Y=o.NATIVE_ARRAY_BUFFER_VIEWS,V=o.TYPED_ARRAY_TAG,X=o.TypedArray,$=o.TypedArrayPrototype,J=o.isTypedArray,Q="BYTES_PER_ELEMENT",Z="Wrong length",K=function(e,t){O(e,t,{configurable:!0,get:function(){return U(this)[t]}})},ee=function(e){var t;return S(G,e)||"ArrayBuffer"===(t=b(e))||"SharedArrayBuffer"===t},te=function(e,t){return J(e)&&!E(t)&&t in e&&h(+t)&&t>=0},ne=function(e,t){return t=p(t),te(e,t)?l(2,e[t]):W(e,t)},re=function(e,t,n){return t=p(t),!(te(e,t)&&w(n)&&A(n,"value"))||A(n,"get")||A(n,"set")||n.configurable||A(n,"writable")&&!n.writable||A(n,"enumerable")&&!n.enumerable?j(e,t,n):(e[t]=n.value,e)};return r?(Y||(M.f=ne,P.f=re,K($,"buffer"),K($,"byteOffset"),K($,"byteLength"),K($,"length")),e({target:"Object",stat:!0,forced:!Y},{getOwnPropertyDescriptor:ne,defineProperty:re}),Yc.exports=function(r,o,a){var s=r.match(/\d+/)[0]/8,l=r+(a?"Clamped":"")+"Array",h="get"+r,p="set"+r,v=t[l],y=v,A=y&&y.prototype,_={},b=function(e,t){j(e,t,{get:function(){return function(e,t){var n=U(e);return n.view[h](t*s+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,n){var r=U(e);r.view[p](t*s+r.byteOffset,a?g(n):n,!0)}(this,t,e)},enumerable:!0})};Y?i&&(y=o(function(e,t,r,i){return c(e,A),D(w(t)?ee(t)?void 0!==i?new v(t,m(r,s),i):void 0!==r?new v(t,m(r,s)):new v(t):J(t)?L(y,t):n(T,y,t):new v(f(t)),e,y)}),C&&C(y,X),R(I(v),function(e){e in y||u(y,e,v[e])}),y.prototype=A):(y=o(function(e,t,r,i){c(e,A);var o,a,l,u=0,h=0;if(w(t)){if(!ee(t))return J(t)?L(y,t):n(T,y,t);o=t,h=m(r,s);var g=t.byteLength;if(void 0===i){if(g%s)throw new z(Z);if((a=g-h)<0)throw new z(Z)}else if((a=d(i)*s)+h>g)throw new z(Z);l=a/s}else l=f(t),o=new H(a=l*s);for(F(e,{buffer:o,byteOffset:h,byteLength:a,length:l,view:new q(o)});u=0?a:o+a;return s<0||s>=o?void 0:i[s]})}();var sl,cl={};!function(){if(sl)return cl;sl=1;var e=Xc(),t=Oo(),n=tl(),r=wr(),i=_(),o=he(),a=v(),s=e.aTypedArray,c=e.exportTypedArrayMethod,l=o("".slice);c("fill",function(e){var o=arguments.length;s(this);var a="Big"===l(r(this),0,3)?n(e):+e;return i(t,this,a,o>1?arguments[1]:void 0,o>2?arguments[2]:void 0)},a(function(){var e=0;return new Int8Array(2).fill({valueOf:function(){return e++}}),1!==e}))}();var ll,ul,hl,dl={};function fl(){if(ul)return ll;ul=1;var e=Jr(),t=fe(),n=ot(),r=vn(),i=function(i){var o=1===i;return function(a,s,c){for(var l,u=n(a),h=t(u),d=r(h),f=e(s,c);d-- >0;)if(f(l=h[d],d,u))switch(i){case 0:return l;case 1:return d}return o?-1:void 0}};return ll={findLast:i(0),findLastIndex:i(1)}}!function(){if(hl)return dl;hl=1;var e=Xc(),t=fl().findLast,n=e.aTypedArray;(0,e.exportTypedArrayMethod)("findLast",function(e){return t(n(this),e,arguments.length>1?arguments[1]:void 0)})}();var ml,gl={};!function(){if(ml)return gl;ml=1;var e=Xc(),t=fl().findLastIndex,n=e.aTypedArray;(0,e.exportTypedArrayMethod)("findLastIndex",function(e){return t(n(this),e,arguments.length>1?arguments[1]:void 0)})}();var pl,vl={};!function(){if(pl)return vl;pl=1;var e=s(),t=_(),n=Xc(),r=vn(),i=Qc(),o=ot(),a=v(),c=e.RangeError,l=e.Int8Array,u=l&&l.prototype,h=u&&u.set,d=n.aTypedArray,f=n.exportTypedArrayMethod,m=!a(function(){var e=new Uint8ClampedArray(2);return t(h,e,{length:1,0:3},1),3!==e[1]}),g=m&&n.NATIVE_ARRAY_BUFFER_VIEWS&&a(function(){var e=new l(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]});f("set",function(e){d(this);var n=i(arguments.length>1?arguments[1]:void 0,1),a=o(e);if(m)return t(h,this,a,n);var s=this.length,l=r(a),u=0;if(l+n>s)throw new c("Wrong length");for(;u0&&1/n<0?1:-1:t>n}}(e))},!p||g)}();var _l,bl,wl,El={};function xl(){if(bl)return _l;bl=1;var e=vn();return _l=function(t,n){for(var r=e(t),i=new n(r),o=0;o=s||l<0)throw new n("Incorrect index");for(var u=new i(s),h=0;h=t.length)return e.target=null,a(void 0,!0);switch(e.kind){case"keys":return a(n,!1);case"values":return a(t[n],!1)}return a([n,t[n]],!1)},"values");var d=n.Arguments=n.Array;if(t("keys"),t("values"),t("entries"),!s&&c&&"values"!==d.name)try{i(d,"name",{value:"values"})}catch(e){}return jl}!function(){if(zl)return Hl;zl=1;var e=s(),t=Ml?Pl:(Ml=1,Pl={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}),n=function(){if(Bl)return Ll;Bl=1;var e=ht()("span").classList,t=e&&e.constructor&&e.constructor.prototype;return Ll=t===Object.prototype?void 0:t}(),r=Yl(),i=St(),o=Po(),a=ct()("iterator"),c=r.values,l=function(e,n){if(e){if(e[a]!==c)try{i(e,a,c)}catch(t){e[a]=c}if(o(e,n,!0),t[n])for(var s in r)if(e[s]!==r[s])try{i(e,s,r[s])}catch(t){e[s]=r[s]}}};for(var u in t)l(e[u]&&e[u].prototype,u);l(n,"DOMTokenList")}();var Vl,Xl,$l,Jl,Ql,Zl={};function Kl(){if(Xl)return Vl;Xl=1;var e=y(),t=v(),n=Et(),r=xr(),i=Error.prototype.toString,o=t(function(){if(e){var t=Object.create(Object.defineProperty({},"name",{get:function(){return this===t}}));if("true"!==i.call(t))return!0}return"2: 1"!==i.call({message:1,name:2})||"Error"!==i.call({})});return Vl=o?function(){var e=n(this),t=r(e.name,"Error"),i=r(e.message);return t?i?t+": "+i:t:i}:i}function eu(){return Jl?$l:(Jl=1,$l={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}})}!function(){if(Ql)return Zl;Ql=1;var e=mr(),t=Ae(),n=ca(),r=v(),i=ji(),o=ue(),a=xt().f,s=Xt(),c=xo(),l=at(),u=Co(),h=Et(),d=Kl(),f=xr(),m=eu(),g=Cr(),p=Yt(),A=y(),_=tt(),b="DOMException",w="DATA_CLONE_ERR",E=t("Error"),x=t(b)||function(){try{(new(t("MessageChannel")||n("worker_threads").MessageChannel)).port1.postMessage(new WeakMap)}catch(e){if(e.name===w&&25===e.code)return e.constructor}}(),S=x&&x.prototype,C=E.prototype,I=p.set,T=p.getterFor(b),R="stack"in new E(b),k=function(e){return l(m,e)&&m[e].m?m[e].c:0},O=function(){u(this,P);var e=arguments.length,t=f(e<1?void 0:arguments[0]),n=f(e<2?void 0:arguments[1],"Error"),r=k(n);if(I(this,{type:b,name:n,message:t,code:r}),A||(this.name=n,this.message=t,this.code=r),R){var i=new E(t);i.name=b,a(this,"stack",o(1,g(i.stack,1)))}},P=O.prototype=i(C),M=function(e){return{enumerable:!0,configurable:!0,get:e}},L=function(e){return M(function(){return T(this)[e]})};A&&(c(P,"code",L("code")),c(P,"message",L("message")),c(P,"name",L("name"))),a(P,"constructor",o(1,O));var B=r(function(){return!(new x instanceof E)}),D=B||r(function(){return C.toString!==d||"2: 1"!==String(new x(1,2))}),U=B||r(function(){return 25!==new x(1,"DataCloneError").code}),F=B||25!==x[w]||25!==S[w],N=_?D||U||F:B;e({global:!0,constructor:!0,forced:N},{DOMException:N?O:x});var j=t(b),W=j.prototype;for(var z in D&&(_||x===j)&&s(W,"toString",d),U&&A&&x===j&&c(W,"code",M(function(){return k(h(this).name)})),m)if(l(m,z)){var H=m[z],G=H.s,q=o(6,H.c);l(j,G)||a(j,G,q),l(W,G)||a(W,G,q)}}();var tu,nu={};!function(){if(tu)return nu;tu=1;var e=mr(),t=s(),n=Ae(),r=ue(),i=xt().f,o=at(),a=Co(),c=br(),l=xr(),u=eu(),h=Cr(),d=y(),f=tt(),m="DOMException",g=n("Error"),p=n(m),v=function(){a(this,A);var e=arguments.length,t=l(e<1?void 0:arguments[0]),n=l(e<2?void 0:arguments[1],"Error"),o=new p(t,n),s=new g(t);return s.name=m,i(o,"stack",r(1,h(s.stack,1))),c(o,this,v),o},A=v.prototype=p.prototype,_="stack"in new g(m),b="stack"in new p(1,2),w=p&&d&&Object.getOwnPropertyDescriptor(t,m),E=!(!w||w.writable&&w.configurable),x=_&&!E&&!b;e({global:!0,constructor:!0,forced:f||x},{DOMException:x?v:p});var S=n(m),C=S.prototype;if(C.constructor!==S)for(var I in f||i(C,"constructor",r(1,S)),u)if(o(u,I)){var T=u[I],R=T.s;o(S,R)||i(S,R,r(6,T.c))}}();var ru,iu={};!function(){if(ru)return iu;ru=1;var e=Ae(),t="DOMException";Po()(e(t),t)}();var ou,au={};!function(){if(ou)return au;ou=1;var e=mr(),t=s(),n=xo(),r=y(),i=TypeError,o=Object.defineProperty,a=t.self!==t;try{if(r){var c=Object.getOwnPropertyDescriptor(t,"self");!a&&c&&c.get&&c.enumerable||n(t,"self",{get:function(){return t},set:function(e){if(this!==t)throw new i("Illegal invocation");o(t,"self",{value:e,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})}else e({global:!0,simple:!0,forced:a},{self:t})}catch(e){}}();var su,cu,lu,uu,hu,du,fu,mu,gu,pu,vu,yu={},Au={};function _u(){if(lu)return cu;lu=1;var e=v(),t=ct(),n=y(),r=tt(),i=t("iterator");return cu=!e(function(){var e=new URL("b?a=1&b=2&c=3","https://a"),t=e.searchParams,o=new URLSearchParams("a=1&a=2&b=3"),a="";return e.pathname="c%20d",t.forEach(function(e,n){t.delete("b"),a+=n+e}),o.delete("a",2),o.delete("b",void 0),r&&(!e.toJSON||!o.has("a",1)||o.has("a",2)||!o.has("a",void 0)||o.has("b"))||!t.size&&(r||!n)||!t.sort||"https://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[i]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==a||"x"!==new URL("https://x",void 0).host})}function bu(){if(fu)return du;fu=1;var e=Jr(),t=_(),n=ot(),r=qa(),i=ss(),o=Qr(),a=vn(),s=_a(),c=ls(),l=cs(),u=Array;return du=function(h){var d=n(h),f=o(this),m=arguments.length,g=m>1?arguments[1]:void 0,p=void 0!==g;p&&(g=e(g,m>2?arguments[2]:void 0));var v,y,A,_,b,w,E=l(d),x=0;if(!E||this===u&&i(E))for(v=a(d),y=f?new this(v):u(v);v>x;x++)w=p?g(d[x],x):d[x],s(y,x,w);else for(y=f?new this:[],b=(_=c(d,E)).next;!(A=t(b,_)).done;x++)w=p?r(_,g,[A.value,x],!0):A.value,s(y,x,w);return y.length=x,y},du}function wu(){if(gu)return mu;gu=1;var e=he(),t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=RangeError,a=e(r.exec),s=Math.floor,c=String.fromCharCode,l=e("".charCodeAt),u=e([].join),h=e([].push),d=e("".replace),f=e("".split),m=e("".toLowerCase),g=function(e){return e+22+75*(e<26)},p=function(e,t,n){var r=0;for(e=n?s(e/700):e>>1,e+=s(e/t);e>455;)e=s(e/35),r+=36;return s(r+36*e/(e+38))},v=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=f&&a<_&&(_=a);var b=A+1;if(_-f>s((t-m)/b))throw new o(i);for(m+=(_-f)*b,f=_,r=0;rt)throw new o(i);if(a===f){for(var w=m,E=36;;){var x=E<=v?1:E>=v+26?26:E-v;if(wc;){if(t=+arguments[c++],n(t,1114111)!==t)throw new r(t+" is not a valid code point");o[c]=t<65536?i(t):i(55296+((t-=65536)>>10),t%1024+56320)}return a(o,"")}})}();var e=mr(),t=s(),n=Pu(),r=Ae(),i=_(),o=he(),a=y(),c=_u(),l=Xt(),u=xo(),h=So(),d=Po(),f=Gl(),m=Yt(),g=Co(),p=ve(),v=at(),A=Jr(),b=wr(),w=Et(),E=ye(),x=Er(),S=ji(),C=ue(),I=ls(),T=cs(),R=Wa(),k=Eu(),O=ct(),P=wi(),M=O("iterator"),L="URLSearchParams",B=L+"Iterator",D=m.set,U=m.getterFor(L),F=m.getterFor(B),N=n("fetch"),j=n("Request"),W=n("Headers"),z=j&&j.prototype,H=W&&W.prototype,G=t.TypeError,q=t.encodeURIComponent,Y=String.fromCharCode,V=r("String","fromCodePoint"),X=parseInt,$=o("".charAt),J=o([].join),Q=o([].push),Z=o("".replace),K=o([].shift),ee=o([].splice),te=o("".split),ne=o("".slice),re=o(/./.exec),ie=/\+/g,oe=/^[0-9a-f]+$/i,ae=function(e,t){var n=ne(e,t,t+2);return re(oe,n)?X(n,16):NaN},se=function(e){for(var t=0,n=128;n>0&&0!==(e&n);n>>=1)t++;return t},ce=function(e){var t=null;switch(e.length){case 1:t=e[0];break;case 2:t=(31&e[0])<<6|63&e[1];break;case 3:t=(15&e[0])<<12|(63&e[1])<<6|63&e[2];break;case 4:t=(7&e[0])<<18|(63&e[1])<<12|(63&e[2])<<6|63&e[3]}return t>1114111?null:t},le=function(e){for(var t=(e=Z(e,ie," ")).length,n="",r=0;rt){n+="%",r++;continue}var o=ae(e,r+1);if(o!=o){n+=i,r++;continue}r+=2;var a=se(o);if(0===a)i=Y(o);else{if(1===a||a>4){n+="�",r++;continue}for(var s=[o],c=1;ct||"%"!==$(e,r));){var l=ae(e,r+1);if(l!=l){r+=3;break}if(l>191||l<128)break;Q(s,l),r+=2,c++}if(s.length!==a){n+="�";continue}var u=ce(s);null===u?n+="�":i=V(u)}}n+=i,r++}return n},de=/[!'()~]|%20/g,fe={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},me=function(e){return fe[e]},ge=function(e){return Z(q(e),de,me)},pe=f(function(e,t){D(this,{type:B,target:U(e).entries,index:0,kind:t})},L,function(){var e=F(this),t=e.target,n=e.index++;if(!t||n>=t.length)return e.target=null,R(void 0,!0);var r=t[n];switch(e.kind){case"keys":return R(r.key,!1);case"values":return R(r.value,!1)}return R([r.key,r.value],!1)},!0),_e=function(e){this.entries=[],this.url=null,void 0!==e&&(E(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===$(e,0)?ne(e,1):e:x(e)))};_e.prototype={type:L,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,n,r,o,a,s,c,l=this.entries,u=T(e);if(u)for(n=(t=I(e,u)).next;!(r=i(n,t)).done;){if(a=(o=I(w(r.value))).next,(s=i(a,o)).done||(c=i(a,o)).done||!i(a,o).done)throw new G("Expected sequence with length 2");Q(l,{key:x(s.value),value:x(c.value)})}else for(var h in e)v(e,h)&&Q(l,{key:h,value:x(e[h])})},parseQuery:function(e){if(e)for(var t,n,r=this.entries,i=te(e,"&"),o=0;o0?arguments[0]:void 0));a||(this.size=e.entries.length)},we=be.prototype;if(h(we,{append:function(e,t){var n=U(this);k(arguments.length,2),Q(n.entries,{key:x(e),value:x(t)}),a||this.length++,n.updateURL()},delete:function(e){for(var t=U(this),n=k(arguments.length,1),r=t.entries,i=x(e),o=n<2?void 0:arguments[1],s=void 0===o?o:x(o),c=0;ct.key?1:-1}),e.updateURL()},forEach:function(e){for(var t,n=U(this).entries,r=A(e,arguments.length>1?arguments[1]:void 0),i=0;i1?Se(arguments[1]):{})}}),p(j)){var Ce=function(e){return g(this,z),new j(e,arguments.length>1?Se(arguments[1]):{})};z.constructor=Ce,Ce.prototype=z,e({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Ce})}}return Iu={URLSearchParams:be,getState:U}}function Lu(){if(Ru)return yu;Ru=1,function(){if(su)return Au;su=1;var e=ac().charAt,t=Er(),n=Yt(),r=ql(),i=Wa(),o="String Iterator",a=n.set,s=n.getterFor(o);r(String,"String",function(e){a(this,{type:o,string:t(e),index:0})},function(){var t,n=s(this),r=n.string,o=n.index;return o>=r.length?i(void 0,!0):(t=e(r,o),n.index+=t.length,i(t,!1))})}();var e,t=mr(),n=y(),r=_u(),i=s(),o=Jr(),a=he(),c=Xt(),l=xo(),u=Co(),h=at(),d=function(){if(hu)return uu;hu=1;var e=y(),t=he(),n=_(),r=v(),i=Fi(),o=ur(),a=le(),s=ot(),c=fe(),l=Object.assign,u=Object.defineProperty,h=t([].concat);return uu=!l||r(function(){if(e&&1!==l({b:1},l(u({},"a",{enumerable:!0,get:function(){u(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},n={},r=Symbol("assign detection"),o="abcdefghijklmnopqrst";return t[r]=7,o.split("").forEach(function(e){n[e]=e}),7!==l({},t)[r]||i(l({},n)).join("")!==o})?function(t,r){for(var l=s(t),u=arguments.length,d=1,f=o.f,m=a.f;u>d;)for(var g,p=c(arguments[d++]),v=f?h(i(p),f(p)):i(p),y=v.length,A=0;y>A;)g=v[A++],e&&!n(m,p,g)||(l[g]=p[g]);return l}:l,uu}(),f=bu(),m=bi(),g=ac().codeAt,p=wu(),A=Er(),b=Po(),w=Eu(),E=Mu(),x=Yt(),S=x.set,C=x.getterFor("URL"),I=E.URLSearchParams,T=E.getState,R=i.URL,k=i.TypeError,O=i.parseInt,P=Math.floor,M=Math.pow,L=a("".charAt),B=a(/./.exec),D=a([].join),U=a(1.1.toString),F=a([].pop),N=a([].push),j=a("".replace),W=a([].shift),z=a("".split),H=a("".slice),G=a("".toLowerCase),q=a([].unshift),Y="Invalid scheme",V="Invalid host",X="Invalid port",$=/[a-z]/i,J=/[\d+-.a-z]/i,Q=/\d/,Z=/^0x/i,K=/^[0-7]+$/,ee=/^\d+$/,te=/^[\da-f]+$/i,ne=/[\0\t\n\r #%/:<>?@[\\\]^|]/,re=/[\0\t\n\r #/:<>?@[\\\]^|]/,ie=/^[\u0000-\u0020]+/,oe=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,ae=/[\t\n\r]/g,se=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)q(t,e%256),e=P(e/256);return D(t,".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n?r:t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=U(e[n],16),n<7&&(t+=":")));return"["+t+"]"}return e},ce={},ue=d({},ce,{" ":1,'"':1,"<":1,">":1,"`":1}),de=d({},ue,{"#":1,"?":1,"{":1,"}":1}),me=d({},de,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),ge=function(e,t){var n=g(e,0);return n>32&&n<127&&!h(t,e)?e:encodeURIComponent(e)},pe={ftp:21,file:null,http:80,https:443,ws:80,wss:443},ve=function(e,t){var n;return 2===e.length&&B($,L(e,0))&&(":"===(n=L(e,1))||!t&&"|"===n)},ye=function(e){var t;return e.length>1&&ve(H(e,0,2))&&(2===e.length||"/"===(t=L(e,2))||"\\"===t||"?"===t||"#"===t)},Ae=function(e){return"."===e||"%2e"===G(e)},_e=function(e){return".."===(e=G(e))||"%2e."===e||".%2e"===e||"%2e%2e"===e},be={},we={},Ee={},xe={},Se={},Ce={},Ie={},Te={},Re={},ke={},Oe={},Pe={},Me={},Le={},Be={},De={},Ue={},Fe={},Ne={},je={},We={},ze=function(e,t,n){var r,i,o,a=A(e);if(t){if(i=this.parse(a))throw new k(i);this.searchParams=null}else{if(void 0!==n&&(r=new ze(n,!0)),i=this.parse(a,null,r))throw new k(i);(o=T(new I)).bindURL(this),this.searchParams=o}};ze.prototype={type:"URL",parse:function(t,n,r){var i,o,a,s,c=this,l=n||be,u=0,d="",g=!1,p=!1,v=!1;for(t=A(t),n||(c.scheme="",c.username="",c.password="",c.host=null,c.port=null,c.path=[],c.query=null,c.fragment=null,c.cannotBeABaseURL=!1,t=j(t,ie,""),t=j(t,oe,"$1")),t=j(t,ae,""),i=f(t);u<=i.length;){switch(o=i[u],l){case be:if(!o||!B($,o)){if(n)return Y;l=Ee;continue}d+=G(o),l=we;break;case we:if(o&&(B(J,o)||"+"===o||"-"===o||"."===o))d+=G(o);else{if(":"!==o){if(n)return Y;d="",l=Ee,u=0;continue}if(n&&(c.isSpecial()!==h(pe,d)||"file"===d&&(c.includesCredentials()||null!==c.port)||"file"===c.scheme&&!c.host))return;if(c.scheme=d,n)return void(c.isSpecial()&&pe[c.scheme]===c.port&&(c.port=null));d="","file"===c.scheme?l=Le:c.isSpecial()&&r&&r.scheme===c.scheme?l=xe:c.isSpecial()?l=Te:"/"===i[u+1]?(l=Se,u++):(c.cannotBeABaseURL=!0,N(c.path,""),l=Ne)}break;case Ee:if(!r||r.cannotBeABaseURL&&"#"!==o)return Y;if(r.cannotBeABaseURL&&"#"===o){c.scheme=r.scheme,c.path=m(r.path),c.query=r.query,c.fragment="",c.cannotBeABaseURL=!0,l=We;break}l="file"===r.scheme?Le:Ce;continue;case xe:if("/"!==o||"/"!==i[u+1]){l=Ce;continue}l=Re,u++;break;case Se:if("/"===o){l=ke;break}l=Fe;continue;case Ce:if(c.scheme=r.scheme,o===e)c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=m(r.path),c.query=r.query;else if("/"===o||"\\"===o&&c.isSpecial())l=Ie;else if("?"===o)c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=m(r.path),c.query="",l=je;else{if("#"!==o){c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=m(r.path),c.path.length--,l=Fe;continue}c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=m(r.path),c.query=r.query,c.fragment="",l=We}break;case Ie:if(!c.isSpecial()||"/"!==o&&"\\"!==o){if("/"!==o){c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,l=Fe;continue}l=ke}else l=Re;break;case Te:if(l=Re,"/"!==o||"/"!==L(d,u+1))continue;u++;break;case Re:if("/"!==o&&"\\"!==o){l=ke;continue}break;case ke:if("@"===o){g&&(d="%40"+d),g=!0,a=f(d);for(var y=0;y65535)return X;c.port=c.isSpecial()&&w===pe[c.scheme]?null:w,d=""}if(n)return;l=Ue;continue}return X}d+=o;break;case Le:if(c.scheme="file","/"===o||"\\"===o)l=Be;else{if(!r||"file"!==r.scheme){l=Fe;continue}switch(o){case e:c.host=r.host,c.path=m(r.path),c.query=r.query;break;case"?":c.host=r.host,c.path=m(r.path),c.query="",l=je;break;case"#":c.host=r.host,c.path=m(r.path),c.query=r.query,c.fragment="",l=We;break;default:ye(D(m(i,u),""))||(c.host=r.host,c.path=m(r.path),c.shortenPath()),l=Fe;continue}}break;case Be:if("/"===o||"\\"===o){l=De;break}r&&"file"===r.scheme&&!ye(D(m(i,u),""))&&(ve(r.path[0],!0)?N(c.path,r.path[0]):c.host=r.host),l=Fe;continue;case De:if(o===e||"/"===o||"\\"===o||"?"===o||"#"===o){if(!n&&ve(d))l=Fe;else if(""===d){if(c.host="",n)return;l=Ue}else{if(s=c.parseHost(d))return s;if("localhost"===c.host&&(c.host=""),n)return;d="",l=Ue}continue}d+=o;break;case Ue:if(c.isSpecial()){if(l=Fe,"/"!==o&&"\\"!==o)continue}else if(n||"?"!==o)if(n||"#"!==o){if(o!==e&&(l=Fe,"/"!==o))continue}else c.fragment="",l=We;else c.query="",l=je;break;case Fe:if(o===e||"/"===o||"\\"===o&&c.isSpecial()||!n&&("?"===o||"#"===o)){if(_e(d)?(c.shortenPath(),"/"===o||"\\"===o&&c.isSpecial()||N(c.path,"")):Ae(d)?"/"===o||"\\"===o&&c.isSpecial()||N(c.path,""):("file"===c.scheme&&!c.path.length&&ve(d)&&(c.host&&(c.host=""),d=L(d,0)+":"),N(c.path,d)),d="","file"===c.scheme&&(o===e||"?"===o||"#"===o))for(;c.path.length>1&&""===c.path[0];)W(c.path);"?"===o?(c.query="",l=je):"#"===o&&(c.fragment="",l=We)}else d+=ge(o,de);break;case Ne:"?"===o?(c.query="",l=je):"#"===o?(c.fragment="",l=We):o!==e&&(c.path[0]+=ge(o,ce));break;case je:n||"#"!==o?o!==e&&("'"===o&&c.isSpecial()?c.query+="%27":c.query+="#"===o?"%23":ge(o,ce)):(c.fragment="",l=We);break;case We:o!==e&&(c.fragment+=ge(o,ue))}u++}},parseHost:function(e){var t,n,r;if("["===L(e,0)){if("]"!==L(e,e.length-1))return V;if(t=function(e){var t,n,r,i,o,a,s,c=[0,0,0,0,0,0,0,0],l=0,u=null,h=0,d=function(){return L(e,h)};if(":"===d()){if(":"!==L(e,1))return;h+=2,u=++l}for(;d();){if(8===l)return;if(":"!==d()){for(t=n=0;n<4&&B(te,d());)t=16*t+O(d(),16),h++,n++;if("."===d()){if(0===n)return;if(h-=n,l>6)return;for(r=0;d();){if(i=null,r>0){if(!("."===d()&&r<4))return;h++}if(!B(Q,d()))return;for(;B(Q,d());){if(o=O(d(),10),null===i)i=o;else{if(0===i)return;i=10*i+o}if(i>255)return;h++}c[l]=256*c[l]+i,2!==++r&&4!==r||l++}if(4!==r)return;break}if(":"===d()){if(h++,!d())return}else if(d())return;c[l++]=t}else{if(null!==u)return;h++,u=++l}}if(null!==u)for(a=l-u,l=7;0!==l&&a>0;)s=c[l],c[l--]=c[u+a-1],c[u+--a]=s;else if(8!==l)return;return c}(H(e,1,-1)),!t)return V;this.host=t}else if(this.isSpecial()){if(e=p(e),B(ne,e))return V;if(t=function(e){var t,n,r,i,o,a,s,c=z(e,".");if(c.length&&""===c[c.length-1]&&c.length--,(t=c.length)>4)return e;for(n=[],r=0;r1&&"0"===L(i,0)&&(o=B(Z,i)?16:8,i=H(i,8===o?1:2)),""===i)a=0;else{if(!B(10===o?ee:8===o?K:te,i))return e;a=O(i,o)}N(n,a)}for(r=0;r=M(256,5-t))return null}else if(a>255)return null;for(s=F(n),r=0;r1?arguments[1]:void 0,i=S(t,new ze(e,!1,r));n||(t.href=i.serialize(),t.origin=i.getOrigin(),t.protocol=i.getProtocol(),t.username=i.getUsername(),t.password=i.getPassword(),t.host=i.getHost(),t.hostname=i.getHostname(),t.port=i.getPort(),t.pathname=i.getPathname(),t.search=i.getSearch(),t.searchParams=i.getSearchParams(),t.hash=i.getHash())},Ge=He.prototype,qe=function(e,t){return{get:function(){return C(this)[e]()},set:t&&function(e){return C(this)[t](e)},configurable:!0,enumerable:!0}};if(n&&(l(Ge,"href",qe("serialize","setHref")),l(Ge,"origin",qe("getOrigin")),l(Ge,"protocol",qe("getProtocol","setProtocol")),l(Ge,"username",qe("getUsername","setUsername")),l(Ge,"password",qe("getPassword","setPassword")),l(Ge,"host",qe("getHost","setHost")),l(Ge,"hostname",qe("getHostname","setHostname")),l(Ge,"port",qe("getPort","setPort")),l(Ge,"pathname",qe("getPathname","setPathname")),l(Ge,"search",qe("getSearch","setSearch")),l(Ge,"searchParams",qe("getSearchParams")),l(Ge,"hash",qe("getHash","setHash"))),c(Ge,"toJSON",function(){return C(this).serialize()},{enumerable:!0}),c(Ge,"toString",function(){return C(this).serialize()},{enumerable:!0}),R){var Ye=R.createObjectURL,Ve=R.revokeObjectURL;Ye&&c(He,"createObjectURL",o(Ye,R)),Ve&&c(He,"revokeObjectURL",o(Ve,R))}return b(He,"URL"),t({global:!0,constructor:!0,forced:!r,sham:!n},{URL:He}),yu}ku||(ku=1,Lu());var Bu,Du={};!function(){if(Bu)return Du;Bu=1;var e=mr(),t=_();e({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return t(URL.prototype.toString,this)}})}();var Uu;Uu||(Uu=1,Mu());var Fu,Nu={};!function(){if(Fu)return Nu;Fu=1;var e=Xt(),t=he(),n=Er(),r=Eu(),i=URLSearchParams,o=i.prototype,a=t(o.append),s=t(o.delete),c=t(o.forEach),l=t([].push),u=new i("a=1&a=2&b=3");u.delete("a",1),u.delete("b",void 0),u+""!="a=2"&&e(o,"delete",function(e){var t=arguments.length,i=t<2?void 0:arguments[1];if(t&&void 0===i)return s(this,e);var o=[];c(this,function(e,t){l(o,{key:t,value:e})}),r(t,1);for(var u,h=n(e),d=n(i),f=0,m=0,g=!1,p=o.length;f=n;){const e=nh.keys().next().value;nh.delete(e)}nh.set(e,t)}}const ih={};let oh=null,ah=null,sh=null,ch=null,lh=null,uh=null,hh=null;function dh(e){return e&&"object"==typeof e&&!Array.isArray(e)}function fh(e){const t=[];return JSON.stringify(e,function(e,n){if("object"==typeof n&&null!==n){if(-1!==t.indexOf(n))return;t.push(n)}return n})}const mh={messages:[],logLevelConsole:"warning",logLevelSystem:"error",systemTargetLogLevel:"",addMessage:function(e,t){if(!Xu.debug)return;const n={level:e,date:(new Date).toISOString(),text:"",objs:[],stack:""},r=new Error;r.stack&&(n.stack=r.stack.toString().replace(/^Error\r?\n/,""));for(let e=0;e1e3&&mh.messages.shift()},systemLog(e,t){ah&&ah.hass&&ah.hass.callService("system_log","write",{logger:"frontend.wallpanel".concat(ch?"."+ch:""),message:t,level:mh.systemTargetLogLevel||e},void 0,!1).catch(()=>{})},downloadMessages:function(){const e=new Blob([fh(mh.messages)],{type:"text/plain"}),t=URL.createObjectURL(e),n=document.createElement("a");n.href=t,n.target="_blank",n.download="wallpanel_log.txt",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(t),0)},purgeMessages:function(){mh.messages=[]},debug:function(){["debug"].includes(mh.logLevelConsole)&&console.debug.apply(this,arguments),["debug"].includes(mh.logLevelSystem)&&mh.systemLog("debug",fh(arguments)),mh.addMessage("debug",arguments)},info:function(){["debug","info"].includes(mh.logLevelConsole)&&console.info.apply(this,arguments),["debug","info"].includes(mh.logLevelSystem)&&mh.systemLog("info",fh(arguments)),mh.addMessage("info",arguments)},log:function(){mh.info.apply(this,arguments)},warning:function(){["debug","info","warning"].includes(mh.logLevelConsole)&&console.warn.apply(this,arguments),["debug","info","warning"].includes(mh.logLevelSystem)&&mh.systemLog("warning",fh(arguments)),mh.addMessage("warning",arguments)},warn:function(){mh.warning.apply(this,arguments)},error:function(){if(["debug","info","warning","error"].includes(mh.logLevelConsole)&&console.error.apply(this,arguments),["debug","info","warning","error"].includes(mh.logLevelSystem)&&mh.systemLog("error",fh(arguments)),mh.addMessage("error",arguments),Xu.alert_errors){const e="Wallpanel error: ".concat(fh(arguments));Ku?Ku.showMessage("error","Error",e,1e4):alert(e)}},err:function(){mh.error.apply(this,arguments)}};class gh{constructor(){this.enabled=!1,this.error=null,this.nativeWakeLockSupported="wakeLock"in navigator,this._lock=null,this._player=null,this._isPlaying=!1,this._onWakeLockRelease=null;const e=()=>{mh.debug("handleVisibilityChange"),this.enabled&&!document.hidden&&this.enable()};if(document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e),!this.nativeWakeLockSupported){const e="data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAA1NtZGF0AAACrwYF//+r3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2NCByMzA5NSBiYWVlNDAwIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyMiAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOi0zOi0zIGFuYWx5c2U9MHgzOjB4MTEzIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0yLjAwOjAuNzAgbWl4ZWRfcmVmPTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0xIGNxbT0wIGRlYWR6b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS00IHRocmVhZHM9MSBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MiBrZXlpbnQ9MjUwIGtleWludF9taW49MSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmNfbG9va2FoZWFkPTQwIHJjPWNyZiBtYnRyZWU9MSBjcmY9MjMuMCBxY29tcD0wLjYwIHFwbWluPTAgcXBtYXg9NjkgcXBzdGVwPTQgaXBfcmF0aW89MS40MCBhcT0xOjEuMjAAgAAAABFliIQAF85//vfUt8yy7VNwgQAAAAlBmiRsQXzn/vAAAAAJQZ5CeIL5z4aBAAAACQGeYXRBfOeGgAAAAAkBnmNqQXznhoEAAAAPQZpoSahBaJlMCC+c//7xAAAAC0GehkURLBfOf4aBAAAACQGepXRBfOeGgQAAAAkBnqdqQXznhoAAAAAPQZqpSahBbJlMCC+c//7wAAADs21vb3YAAABsbXZoZAAAAAAAAAAAAAAAAAAAA+gAACcQAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAALddHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAQAAAAAAACcQAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAIAAAACAAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAAnEAAAgAAAAQAAAAACVW1kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAQAAAAoAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAgBtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAHAc3RibAAAAMBzdHNkAAAAAAAAAAEAAACwYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAIAAgASAAAAEgAAAAAAAAAARVMYXZjNTkuMzcuMTAwIGxpYngyNjQAAAAAAAAAAAAAABj//wAAADZhdmNDAWQACv/hABlnZAAKrNlfllwEQAAAAwBAAAADAIPEiWWAAQAGaOvjxMhM/fj4AAAAABBwYXNwAAAAAQAAAAEAAAAUYnRydAAAAAAAAAKiAAACogAAABhzdHRzAAAAAAAAAAEAAAAKAABAAAAAABRzdHNzAAAAAAAAAAEAAAABAAAAYGN0dHMAAAAAAAAACgAAAAEAAIAAAAAAAQABQAAAAAABAACAAAAAAAEAAAAAAAAAAQAAQAAAAAABAAFAAAAAAAEAAIAAAAAAAQAAAAAAAAABAABAAAAAAAEAAIAAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAAKAAAAAQAAADxzdHN6AAAAAAAAAAAAAAAKAAACyAAAAA0AAAANAAAADQAAAA0AAAATAAAADwAAAA0AAAANAAAAEwAAABRzdGNvAAAAAAAAAAEAAAAwAAAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAtaWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1OS4yNy4xMDA=";this._player=document.createElement("video"),this._player.setAttribute("id","ScreenWakeLockVideo"),this._player.setAttribute("src",e),this._player.setAttribute("playsinline",""),this._player.setAttribute("muted",""),this._player.style.display="none",document.getElementById("ScreenWakeLockVideo")||document.body.appendChild(this._player),this._player.addEventListener("ended",()=>{mh.debug("Video ended"),this.enabled&&this.enable()}),this._player.addEventListener("playing",()=>{mh.debug("Video playing"),this._isPlaying=!0}),this._player.addEventListener("pause",()=>{mh.debug("Video pause"),this._isPlaying=!1})}}enable(){if(this.nativeWakeLockSupported){if(mh.debug("Requesting native screen wakelock"),this._lock)return void mh.debug("Screen wakelock already active");navigator.wakeLock.request("screen").then(e=>{mh.debug("Request screen wakelock successful"),this._lock=e,this._onWakeLockRelease=()=>{mh.debug("Screen wakelock released"),this.enabled=!1,this._lock=null},e.addEventListener("release",this._onWakeLockRelease),this.enabled=!0,this.error=null}).catch(e=>{this.enabled=!1,this.error=e,mh.warning("Failed to request screen wakeLock: ".concat(e))})}else{mh.debug("Starting video player"),!this._player.paused&&this._isPlaying&&this._player.pause();const e=this._player.play();e&&e.then(()=>{this.enabled=!0,this.error=null,mh.debug("Video play successful")}).catch(e=>{this.enabled=!1,this.error=e,mh.warning("Failed to play video: ".concat(e))})}}disable(){this.nativeWakeLockSupported?(mh.debug("Releasing native screen wakelock"),this._lock&&(this._onWakeLockRelease&&(this._lock.removeEventListener("release",this._onWakeLockRelease),this._onWakeLockRelease=null),this._lock.release()),this._lock=null):(mh.debug("Stopping video player"),!this._player.paused&&this._isPlaying&&this._player.pause()),this.enabled=!1}}class ph{constructor(){this.enabled=!1,this.error=!1,this.width=64,this.height=48,this.thresholdRatio=.05,this.threshold=this.width*this.height*this.thresholdRatio,this.captureInterval=300,this.motionActive=!1,this.motionStartDelay=0,this.motionStopDelay=2e3,this.motionDetectionRequiredRatio=.8,this.roomSettledRequiredRatio=1,this.motionStopTimeout=null,this.captureTimer=null,this.referenceImageData=null,this.previousImageData=null,this.referenceChangeRatios=[],this.previousChangeRatios=[],this.maxRatioHistorySize=Math.ceil(6e4/this.captureInterval),this.videoElement=document.createElement("video"),this.videoElement.setAttribute("id","wallpanelMotionDetectionVideo"),this.videoElement.style.display="none",document.body.appendChild(this.videoElement),this.canvasElement=document.createElement("canvas"),this.canvasElement.setAttribute("id","wallpanelMotionDetectionCanvas"),this.canvasElement.style.display="none",document.body.appendChild(this.canvasElement),this.context=this.canvasElement.getContext("2d",{willReadFrequently:!0}),this._elementsAppended=!0}compareImageData(e,t){if(!e||!t)return 0;let n=0;const r=e.data,i=t.data;for(let e=0;e=256&&n++}return n/(this.width*this.height)}storeRatio(e,t){for(e.push(t);e.length>this.maxRatioHistorySize;)e.shift()}getRatiosForInterval(e,t){const n=Math.max(1,Math.ceil(t/this.captureInterval));return e.length0&&e.filter(e=>e>=this.thresholdRatio).length/e.length>=t}hasRequiredRatioBelowThreshold(e,t){return e.length>0&&e.filter(e=>e=t}resetMotionState(){this.motionActive=!1,this.motionStopTimeout&&(clearTimeout(this.motionStopTimeout),this.motionStopTimeout=null),this.referenceImageData=null,this.previousImageData=null,this.referenceChangeRatios=[],this.previousChangeRatios=[]}capture(){this.context.globalCompositeOperation="source-over",this.context.drawImage(this.videoElement,0,0,this.width,this.height);const e=this.context.getImageData(0,0,this.width,this.height);if(!this.referenceImageData)return this.referenceImageData=e,void(this.previousImageData=e);const t=this.compareImageData(e,this.referenceImageData),n=this.compareImageData(e,this.previousImageData);this.previousImageData=e,this.storeRatio(this.referenceChangeRatios,t),this.storeRatio(this.previousChangeRatios,n);const r=this.getRatiosForInterval(this.referenceChangeRatios,this.motionStartDelay),i=this.hasRequiredRatioAboveThreshold(r,this.motionDetectionRequiredRatio),o=this.previousChangeRatios.length>=this.maxRatioHistorySize&&this.hasRequiredRatioBelowThreshold(this.previousChangeRatios,this.roomSettledRequiredRatio);i?(this.motionActive||(mh.debug("Motion started"),this.motionActive=!0,Ku.motionDetected()),this.motionStopTimeout&&(clearTimeout(this.motionStopTimeout),this.motionStopTimeout=null)):this.motionActive&&!this.motionStopTimeout&&(this.motionStopTimeout=setTimeout(()=>{mh.debug("Motion stopped"),this.motionActive=!1,this.motionStopTimeout=null,Ku.motionStopped()},this.motionStopDelay)),o&&(mh.info("Room settled, new reference image stored"),this.referenceImageData=e,this.referenceChangeRatios=[])}start(){if(!this.enabled&&!this.error){if(!navigator.mediaDevices)return this.error=!0,void mh.error("No media devices found");this._elementsAppended||(document.body.appendChild(this.videoElement),document.body.appendChild(this.canvasElement),this._elementsAppended=!0),this.enabled=!0,this.width=Xu.camera_motion_detection_capture_width,this.height=Xu.camera_motion_detection_capture_height,this.thresholdRatio=.01*Xu.camera_motion_detection_threshold,this.threshold=this.width*this.height*this.thresholdRatio,this.captureInterval=1e3*Xu.camera_motion_detection_capture_interval,this.motionStartDelay=1e3*Xu.camera_motion_detection_motion_start_delay,this.motionStopDelay=1e3*Xu.camera_motion_detection_motion_stop_delay,this.maxRatioHistorySize=Math.ceil(6e4/this.captureInterval),this.resetMotionState(),this.videoElement.width=this.width,this.videoElement.height=this.height,this.canvasElement.width=this.width,this.canvasElement.height=this.height,Xu.camera_motion_detection_capture_visible?(this.canvasElement.style.position="fixed",this.canvasElement.style.top=0,this.canvasElement.style.left=0,this.canvasElement.style.zIndex=1e4,this.canvasElement.style.border="1px solid black",this.canvasElement.style.display="block"):this.canvasElement.style.display="none",navigator.mediaDevices.getUserMedia({audio:!1,video:{facingMode:{ideal:Xu.camera_motion_detection_facing_mode},width:this.width,height:this.height}}).then(e=>{this.videoElement.srcObject=e;const t=this.videoElement.play();t&&t.catch(e=>{mh.warning("Camera motion detection video play failed: ".concat(e))}),this.enabled&&(this.captureTimer=setInterval(this.capture.bind(this),this.captureInterval))}).catch(e=>{this.enabled=!1,mh.error("Camera motion detection error:",e),this._elementsAppended&&(this.videoElement.remove(),this.canvasElement.remove(),this._elementsAppended=!1)})}}stop(){if(!this.enabled)return;this.enabled=!1,this.resetMotionState(),this.captureTimer&&(clearInterval(this.captureTimer),this.captureTimer=null),this.videoElement.pause();const e=this.videoElement.srcObject;e&&"function"==typeof e.getTracks&&e.getTracks().forEach(e=>{e.stop()}),this.videoElement.srcObject=null,this._elementsAppended&&(this.videoElement.remove(),this.canvasElement.remove(),this._elementsAppended=!1)}}const vh=1592614637;function yh(e){return function(){e=e+1831565813|0;let t=Math.imul(e^e>>>15,1|e);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function Ah(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.random;const n=e.slice();for(let e=n.length-1;e>0;e--){const r=Math.floor(t()*(e+1));[n[e],n[r]]=[n[r],n[e]]}return n}function _h(e){if(!e.shadowRoot)return[null,null];const t=e.shadowRoot.querySelector("ha-web-rtc-player")||e.shadowRoot.querySelector("ha-hls-player");if(!t||!t.shadowRoot)return[t,null];const n=t.shadowRoot.querySelector("video");return[t,n]}function bh(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;rc(e)):dh(t)&&(t=Object.fromEntries(Object.entries(t).map(e=>{let[t,n]=e;return[t,c(n)]}))),"boolean"==typeof e[o]&&(t=null!=t&&["true","on","yes","1"].includes(String(t).toLowerCase())),t}a=c(a),Array.isArray(e[o])&&"string"==typeof a&&(a=a.split(",").map(e=>e.trim())),Object.assign(e,{[o]:a})}}return bh(e,...n)}function wh(){const e=new URLSearchParams(window.location.search),t=Xu;Xu={},bh(Xu,qu),0===Object.keys(Vu).length&&(Vu=Th(),0===Object.keys(Vu).length&&mh.debug("No wallpanel config found in dashboard config")),bh(Xu,Vu);const n={};for(let[t,r]of e)if(t.startsWith("wp_")&&(t=t.substring(3),Yu[t]&&(mh.warn("The configuration option '".concat(t,"' has been renamed to '").concat(Yu[t],"'. Please update your wallpanel configuration accordingly.")),t=Yu[t]),t in qu&&r)){try{r=JSON.parse(r)}catch(e){}const e=qu[t];if(Array.isArray(e))Array.isArray(r)?n[t]=r:n[t]="string"==typeof r?r.split(",").map(e=>e.trim()):[r];else if("boolean"==typeof e)n[t]=["true","on","yes","1"].includes(String(r));else if("number"==typeof e){const e=Number(r);Number.isFinite(e)?n[t]=e:mh.warn("Invalid numeric wp_ param '".concat(t,"': ").concat(r))}else n[t]=r}Xu=bh(Xu,n);const r=Xu.profile;if(Xu.profiles&&r&&Xu.profiles[r]&&(Xu=bh(Xu,Xu.profiles[r]),mh.debug("Profile set from config: ".concat(r))),Xu.profiles&&ch&&Xu.profiles["device.".concat(ch)]){const e="device.".concat(ch);Xu=bh(Xu,Xu.profiles[e]),mh.debug("Profile set from device: ".concat(e))}if(Xu.profiles){const e=[lh,uh,hh];for(let t=0;t{t.tagName.toLowerCase().startsWith("browser-mod-popup")&&t.shadowRoot&&t.shadowRoot.querySelector("ha-dialog")&&e.push(t)}),e):e}function xh(){const e=Eh();return e&&0!=e.length?e[0]:null}function Sh(){if("1"==new URLSearchParams(window.location.search).get("edit"))return mh.debug("Edit mode active"),!1;if(!Xu.enabled)return mh.debug("Wallpanel not enabled in config"),!1;if(Xu.enabled_on_views&&Xu.enabled_on_views.length>0&&Qu&&!Xu.enabled_on_views.includes(Qu))return mh.debug("Wallpanel not enabled on current tab ".concat(Qu)),!1;if(Xu.disable_screensaver_when_assist_active){const e=ah.shadowRoot.querySelector("ha-voice-command-dialog");if(e&&e.shadowRoot&&e.shadowRoot.querySelector("ha-dialog"))return mh.debug("Assist is active, wallpanel disabled"),!1}return Ku&&Ku.disable_screensaver_on_browser_mod_popup_function&&xh()&&Ku.disable_screensaver_on_browser_mod_popup_function(xh())?(mh.debug("Browser mod popup function returned true, wallpanel disabled"),!1):!Xu.disable_screensaver_on_browser_mod_popup||!xh()||(mh.debug("Browser mod popup active, wallpanel disabled"),!1)}function Ch(){return Xu.show_images&&Xu.image_url?Xu.image_url.startsWith("media-entity-video://")?"media-entity-video":Xu.image_url.startsWith("media-entity-image://")?"media-entity-image":Xu.image_url.startsWith("media-source://")?"media-source":Xu.image_url.startsWith("https://api.unsplash")?"unsplash-api":Xu.image_url.startsWith("immich+")?"immich-api":Xu.image_url.startsWith("iframe+")?"iframe":Xu.image_url.startsWith("embed+")?"embed":"url":""}function Ih(){try{return sh.shadowRoot.querySelector("ha-panel-lovelace")}catch(e){mh.error("Failed to get ha-panel-lovelace:",e)}}function Th(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=Ih(),n={};if(t&&t.lovelace){let r;t.lovelace.config&&t.lovelace.config.wallpanel?r=t.lovelace.config.wallpanel:t.lovelace.rawConfig&&t.lovelace.rawConfig.wallpanel&&(r=t.lovelace.rawConfig.wallpanel),r&&(0===e.length&&(e=Object.keys(r)),e.forEach(e=>{(e in qu||e in Yu)&&(n[e]=r[e])}))}return n}function Rh(e){mh.debug("setSidebarVisibility: hidden=".concat(e));try{const t=sh.shadowRoot.querySelector("ha-panel-lovelace");if(t){const n=t.shadowRoot.querySelector("hui-root");if(n){const t=n.shadowRoot.querySelector("ha-menu-button");t&&(e?t.style.display="none":t.style.removeProperty("display"))}}}catch(e){mh.warn(e)}try{const t=sh.shadowRoot.querySelector("ha-drawer");if(t){const n=t.shadowRoot.querySelector(".sidebar-shell")||t.shadowRoot.querySelector("aside"),r=n&&n.classList.contains("sidebar-shell")?"--ha-sidebar-width":"--mdc-drawer-width";n&&(e?(n.style.opacity=0,n.style.maxWidth="0px",sh.style.setProperty(r,"env(safe-area-inset-left)")):(n.style.opacity=1,n.style.maxWidth="",sh.style.removeProperty(r)),window.dispatchEvent(new Event("resize")))}}catch(e){mh.warn(e)}}function kh(e,t){mh.debug("setToolbarVisibility: hideToolbar=".concat(e,", hideActionItems=").concat(t));try{const n=sh.shadowRoot.querySelector("ha-panel-lovelace");if(!n)return;let r=n.shadowRoot.querySelector("hui-root");if(!r)return;r=r.shadowRoot;const i=r.querySelector("#view");let o=r.querySelector("app-toolbar");if(o||(o=r.querySelector("div.toolbar")),e)o.style.setProperty("display","none"),Xu.keep_toolbar_space||(i.style.minHeight="100vh",i.style.marginTop="0",i.style.paddingTop="0");else{o.style.removeProperty("display"),i.style.removeProperty("min-height"),i.style.removeProperty("margin-top"),i.style.removeProperty("padding-top");const e=o.querySelector("div.action-items");t?e.style.setProperty("display","none"):e.style.setProperty("display","flex")}window.dispatchEvent(new Event("resize"))}catch(e){mh.warn(e)}}function Oh(){return void 0!==document.fullscreenElement?Boolean(document.fullscreenElement):void 0!==document.webkitCurrentFullScreenElement&&Boolean(document.webkitCurrentFullScreenElement)}function Ph(){mh.debug("Enter fullscreen");const e=document.documentElement;e.requestFullscreen?e.requestFullscreen().then(()=>{mh.debug("Successfully requested fullscreen")},e=>{mh.debug("Failed to enter fullscreen:",e)}):e.mozRequestFullScreen?e.mozRequestFullScreen():e.msRequestFullscreen?e.msRequestFullscreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen()}function Mh(){const e=customElements.get("hui-view-container"),t=customElements.get("hui-view");if(!e||!t){throw new Error("Failed to get hui-view-container / hui-view from customElements")}class r extends e{}class i extends t{constructor(){super(),this.mediaList=[],this.mediaIndex=-1,this.mediaListDirection="forwards",this.lastMediaListUpdate,this.updatingMediaList=!1,this.updatingMedia=!1,this.lastMediaUpdate=0,this.isPaused=!1,this.displayTime=null,this.mediaTimeElapsedBeforePause=0,this.lastImageUrlEntityValue=null,this.blockEventsUntil=0,this.screensaverStartedAt,this.screensaverStoppedAt=new Date,this.infoBoxContentCreatedDate,this.idleSince=Date.now(),this.lastProfileSet=Xu.profile,this.lastMove=null,this.lastCorner=0,this.translateTimeout=null,this.lastClickTime=0,this.clickCount=0,this.touchStartX=-1,this.touchStartY=-1,this.currentWidth=0,this.currentHeight=0,this.energyCollectionUpdateEnabled=!1,this.energyCollectionUpdateInterval=60,this.lastEnergyCollectionUpdate=0,this.screensaverStopNavigationPathTimeout=null,this.disable_screensaver_on_browser_mod_popup_function=null,this.moreInfoDialogOpenedAt=0,this.timerInterval=null,this.windowEventHandlers=[],this.infoBoxResizeObserver=null,this.screenWakeLock=new gh,this.cameraMotionDetection=new ph,this.lovelace=null,this.__hass=ah.hass||ah.__hass,this.__cards=[],this.__badges=[],this.__views=[],ah.provideHass(this),this.timerInterval=setInterval(this.timer.bind(this),1e3),Zu.hass=this.__hass}set hass(e){mh.debug("Update hass"),this.__hass=e;let t=!1;for(const e in ih){const n=this.__hass.states[e];n&&n.state!=ih[e]&&(ih[e]=n.state,t=!0)}if(!this.updateProfile()&&t&&wh(),!Sh())return;const n=Xu.screensaver_entity;if(n&&this.__hass.states[n]){const e=new Date(this.__hass.states[n].last_changed),t=this.__hass.states[n].state;"off"==t&&this.screensaverStartedAt&&e.getTime()-this.screensaverStartedAt>0?this.stopScreensaver(Xu.fade_out_time_screensaver_entity):"on"==t&&this.screensaverStoppedAt&&e.getTime()-this.screensaverStoppedAt>0&&this.startScreensaver()}this.screensaverRunning()&&(this.__cards.forEach(e=>{e.hass=this.hass}),this.__badges.forEach(e=>{e.hass=this.hass}),this.__views.forEach(e=>{e.hass=this.hass}),"media-entity-image"==Ch()&&this.switchActiveMedia("entity_update"))}get hass(){return this.__hass}setScreensaverEntityState(){const e=Xu.screensaver_entity;if(!e||!this.__hass.states[e])return;if(this.screensaverRunning()&&"on"==this.__hass.states[e].state)return;if(!this.screensaverRunning()&&"off"==this.__hass.states[e].state)return;const t=this.screensaverRunning()?"turn_on":"turn_off";mh.debug("Updating screensaver_entity",e,t),this.__hass.callService("input_boolean",t,{entity_id:e}).then(e=>{mh.debug(e)},e=>{mh.error("Failed to set screensaver entity state:",e)})}setImageURLEntityState(){const e=Xu.image_url_entity;if(!e||!this.__hass.states[e])return;const t=this.getActiveMediaElement();if(!t||!t.mediaUrl)return;const n=t.mediaUrl.substring(0,255);this.lastImageUrlEntityValue!==n&&(mh.debug("Updating image_url_entity",e,n),this.__hass.callService("input_text","set_value",{entity_id:e,value:n}).then(e=>{mh.debug(e),this.lastImageUrlEntityValue=n},e=>{mh.error("Failed to set image url entity state:",e)}))}updateProfile(){const e=Xu.profile_entity;if(e&&this.__hass.states[e]){const t=this.__hass.states[e].state;if(t&&t!=this.lastProfileSet||!t&&this.lastProfileSet)return mh.debug("Set profile to ".concat(t)),this.lastProfileSet=t,wh(),!0}return!1}timer(){Xu.enabled&&Ju&&(this.screensaverRunning()?Xu.disable_screensaver_on_browser_mod_popup&&xh()?this.stopScreensaver(Xu.fade_out_time_browser_mod_popup):this.updateScreensaver():Sh()&&Xu.idle_time>0&&Date.now()-this.idleSince>=1e3*Xu.idle_time&&(Xu.camera_motion_detection_stop_screensaver&&this.cameraMotionDetection&&this.cameraMotionDetection.motionActive||this.startScreensaver()))}setDefaultStyle(){this.messageContainer.removeAttribute("style"),this.messageContainer.style.position="fixed",this.messageContainer.style.top="1rem",this.messageContainer.style.left="1rem",this.messageContainer.style.bottom="1rem",this.messageContainer.style.right="1rem",this.messageContainer.style.alignItems="flex-end",this.messageContainer.style.display="flex",this.messageContainer.style.flexDirection="column",this.messageContainer.style.gap="0.5rem",this.messageContainer.style.zIndex=this.style.zIndex+1,this.messageContainer.style.pointerEvents="none",this.messageContainer.style.visibility="hidden",this.debugBox.removeAttribute("style"),this.debugBox.style.position="fixed",this.debugBox.style.pointerEvents="none",this.debugBox.style.top="0%",this.debugBox.style.left="0%",this.debugBox.style.width="100%",this.debugBox.style.height="100%",this.debugBox.style.background="#00000099",this.debugBox.style.color="#ffffff",this.debugBox.style.zIndex=this.style.zIndex+2,this.debugBox.style.fontFamily="monospace",this.debugBox.style.fontSize="12px",this.debugBox.style.overflowWrap="break-word",this.debugBox.style.overflowY="auto",this.debugBox.style.visibility="hidden",this.screensaverContainer.removeAttribute("style"),this.screensaverContainer.style.position="fixed",this.screensaverContainer.style.pointerEvents="auto",this.screensaverContainer.style.top=0,this.screensaverContainer.style.right=0,this.screensaverContainer.style.bottom=0,this.screensaverContainer.style.left=0,this.screensaverContainer.style.background="#000000",this.screensaverContainer.style.overflow="hidden",this.imageOneContainer.removeAttribute("style"),this.imageOneContainer.style.opacity=0,this.imageOneContainer.style.position="absolute",this.imageOneContainer.style.pointerEvents="none",this.imageOneContainer.style.top=0,this.imageOneContainer.style.left=0,this.imageOneContainer.style.width="100%",this.imageOneContainer.style.height="100%",this.imageOneContainer.style.border="none",this.imageOneBackground.style.position="absolute",this.imageOneBackground.style.pointerEvents="none",this.imageOneBackground.style.top=0,this.imageOneBackground.style.left=0,this.imageOneBackground.style.width="100%",this.imageOneBackground.style.height="100%",this.imageOneBackground.style.border="none",this.imageOne.removeAttribute("style"),this.imageOne.style.position="relative",this.imageOne.style.pointerEvents="none",this.imageOne.style.width="100%",this.imageOne.style.height="100%",this.imageOne.style.border="none",this.imageOneInfoContainer.removeAttribute("style"),this.imageOneInfoContainer.style.position="absolute",this.imageOneInfoContainer.style.pointerEvents="none",this.imageOneInfoContainer.style.top=0,this.imageOneInfoContainer.style.left=0,this.imageOneInfoContainer.style.width="100%",this.imageOneInfoContainer.style.height="100%",this.imageOneInfoContainer.style.border="none",this.imageOneInfo.style.overflowY="auto",this.imageTwoContainer.removeAttribute("style"),this.imageTwoContainer.style.opacity=0,this.imageTwoContainer.style.position="absolute",this.imageTwoContainer.style.pointerEvents="none",this.imageTwoContainer.style.top=0,this.imageTwoContainer.style.left=0,this.imageTwoContainer.style.width="100%",this.imageTwoContainer.style.height="100%",this.imageTwoContainer.style.border="none",this.imageTwoBackground.style.position="absolute",this.imageTwoBackground.style.pointerEvents="none",this.imageTwoBackground.style.top=0,this.imageTwoBackground.style.left=0,this.imageTwoBackground.style.width="100%",this.imageTwoBackground.style.height="100%",this.imageTwoBackground.style.border="none",this.imageTwo.removeAttribute("style"),this.imageTwo.style.position="relative",this.imageTwo.style.pointerEvents="none",this.imageTwo.style.width="100%",this.imageTwo.style.height="100%",this.imageTwo.style.border="none",this.imageTwoInfoContainer.removeAttribute("style"),this.imageTwoInfoContainer.style.position="absolute",this.imageTwoInfoContainer.style.pointerEvents="none",this.imageTwoInfoContainer.style.top=0,this.imageTwoInfoContainer.style.left=0,this.imageTwoInfoContainer.style.width="100%",this.imageTwoInfoContainer.style.height="100%",this.imageTwoInfoContainer.style.border="none",this.imageTwoInfo.style.overflowY="auto",this.screensaverImageOverlay.removeAttribute("style"),this.screensaverImageOverlay.style.position="absolute",this.screensaverImageOverlay.style.top=0,this.screensaverImageOverlay.style.left=0,this.screensaverImageOverlay.style.width="100%",this.screensaverImageOverlay.style.height="100%",this.screensaverImageOverlay.style.background="#00000000",this.infoContainer.removeAttribute("style"),this.infoContainer.style.position="absolute",this.infoContainer.style.pointerEvents="none",this.infoContainer.style.top=0,this.infoContainer.style.left=0,this.infoContainer.style.width="100%",this.infoContainer.style.height="100%",this.infoContainer.style.transition="opacity 2000ms ease-in-out",this.infoContainer.style.padding="25px",this.infoContainer.style.boxSizing="border-box",this.infoBox.removeAttribute("style"),this.infoBox.style.pointerEvents="none",this.infoBox.style.width="fit-content",this.infoBox.style.maxHeight="100%",this.infoBox.style.borderRadius="10px",this.infoBox.style.overflowY="auto",this.infoBox.style.scrollbarWidth="none",this.infoBox.style.setProperty("--wp-card-width","500px"),this.infoBox.style.setProperty("--wp-card-padding","0"),this.infoBox.style.setProperty("--wp-card-margin","5px"),this.infoBox.style.setProperty("--wp-card-backdrop-filter","none"),this.infoBox.style.setProperty("--wp-badges-minwidth","200px"),this.infoBoxPosX.style.pointerEvents="none",this.infoBoxPosX.style.height="100%",this.infoBoxPosX.style.width="100%",this.infoBoxPosY.style.pointerEvents="none",this.infoBoxPosY.style.height="100%",this.infoBoxPosY.style.width="100%",this.infoBoxContent.style.pointerEvents="none",this.infoBoxContent.style.width="fit-content",this.infoBoxContent.style.height="100%",this.infoBoxContent.style.display="grid",this.fixedInfoContainer.removeAttribute("style"),this.fixedInfoContainer.style.position="fixed",this.fixedInfoContainer.style.pointerEvents="none",this.fixedInfoContainer.style.top=0,this.fixedInfoContainer.style.left=0,this.fixedInfoContainer.style.width="100%",this.fixedInfoContainer.style.height="100%",this.fixedInfoBox.style.pointerEvents="none",this.fixedInfoBox.style.cssText=this.infoBox.style.cssText,this.screensaverOverlay.removeAttribute("style"),this.screensaverOverlay.style.position="absolute",this.screensaverOverlay.style.pointerEvents="none",this.screensaverOverlay.style.top=0,this.screensaverOverlay.style.left=0,this.screensaverOverlay.style.width="100%",this.screensaverOverlay.style.height="100%",this.screensaverOverlay.style.background="#00000000"}updateStyle(){this.screensaverOverlay.style.background="#00000000",this.debugBox.style.visibility=Xu.debug?"visible":"hidden",this.debugBox.style.pointerEvents=Xu.debug?"auto":"none",this.style.transition=Xu.fade_in_time>0?"opacity ".concat(Math.round(1e3*Xu.fade_in_time),"ms ease-in-out"):"",this.imageOneContainer.style.transition=Xu.crossfade_time>0?"opacity ".concat(Math.round(1e3*Xu.crossfade_time),"ms ease-in-out"):"",this.imageTwoContainer.style.transition=Xu.crossfade_time>0?"opacity ".concat(Math.round(1e3*Xu.crossfade_time),"ms ease-in-out"):"",this.messageContainer.style.visibility=this.screensaverRunning()?"visible":"hidden",this.screensaverImageOverlay.style.pointerEvents=Xu.content_interaction?"none":"auto";const e=Xu.show_image_info&&Boolean(Xu.image_info_template);if(this.imageOneInfoContainer.style.display=e?"block":"none",this.imageTwoInfoContainer.style.display=e?"block":"none",Xu.info_animation_duration_x?this.infoBoxPosX.style.animation="moveX ".concat(Xu.info_animation_duration_x,"s ").concat(Xu.info_animation_timing_function_x," infinite alternate"):this.infoBoxPosX.style.animation="",Xu.info_animation_duration_y?this.infoBoxPosY.style.animation="moveY ".concat(Xu.info_animation_duration_y,"s ").concat(Xu.info_animation_timing_function_y," infinite alternate"):this.infoBoxPosY.style.animation="",Xu.style)for(const e in Xu.style)if(e.startsWith("wallpanel-")&&"wallpanel-shadow-host"!=e&&"wallpanel-screensaver-info-box-badges"!=e&&"wallpanel-screensaver-info-box-views"!=e&&!th[e]){const t=this.shadowRoot.getElementById(e);if(t){mh.debug("Setting style attributes for element #".concat(e));for(const n in Xu.style[e])mh.debug("Setting style attribute ".concat(n," to ").concat(Xu.style[e][n])),t.style.setProperty(n,Xu.style[e][n]);t==this.infoBox?this.fixedInfoBox.style.cssText=this.infoBox.style.cssText:t==this.infoBoxContent&&(this.fixedInfoBoxContent.style.cssText=this.infoBoxContent.style.cssText)}else mh.error("Element #".concat(e," not found"))}}updateShadowStyle(){const e=getComputedStyle(this.infoContainer),t=this.infoContainer.offsetWidth-parseInt(e.paddingLeft)-parseInt(e.paddingRight)-this.infoBox.offsetWidth,n=this.infoContainer.offsetHeight-parseInt(e.paddingTop)-parseInt(e.paddingBottom)-this.infoBox.offsetHeight;let r="";if(Xu.style){if(Xu.style["wallpanel-shadow-host"])for(const e in Xu.style["wallpanel-shadow-host"])r+="".concat(e,": ").concat(Xu.style["wallpanel-shadow-host"][e],";\n");for(const e in th)Xu.style[e]&&bh(th[e],Xu.style[e])}let i="";for(const e in th){i+=".".concat(e," {\n");for(const t in th[e])i+="".concat(t,": ").concat(th[e][t],";\n");i+="}\n"}this.shadowStyle.innerHTML="\n\t\t\t\t:host {\n\t\t\t\t\t".concat(r,"\n\t\t\t\t}\n\t\t\t\t@keyframes moveX {\n\t\t\t\t\t100% {\n\t\t\t\t\t\ttransform: translate3d(").concat(t,"px, 0, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@keyframes moveY {\n\t\t\t\t\t100% {\n\t\t\t\t\t\ttransform: translate3d(0, ").concat(n,"px, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@keyframes horizontalProgress {\n\t\t\t\t\t0% {\n\t\t\t\t\t\twidth: 0%;\n\t\t\t\t\t}\n\t\t\t\t\t100% {\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@keyframes kenBurnsEffect-experimental {\n\t\t\t\t\t0% {\n\t\t\t\t\t\ttransform: scale(1.0) translateX(calc(var(--hidden-width) / -2 * 1px)) translateY(calc(var(--hidden-height) / -2 * 1px));\n\t\t\t\t\t}\n\t\t\t\t\t50% {\n\t\t\t\t\t\ttransform: scale(var(--ken-burns-zoom));\n\t\t\t\t\t}\n\t\t\t\t\t90% {\n\t\t\t\t\t\ttransform: scale(calc(1.0 + ((var(--ken-burns-zoom) - 1.0)/2))) translateX(calc(var(--hidden-width) / 2 * 1px)) translateY(calc(var(--hidden-height) / 2 * 1px));\n\t\t\t\t\t}\n\t\t\t\t\t100% {\n\t\t\t\t\t\ttransform: scale(1.0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@keyframes kenBurnsEffect-experimental2 {\n\t\t\t\t\t0% {\n\t\t\t\t\t\ttransform: scale(1.0);\n\t\t\t\t\t}\n\t\t\t\t\t25% {\n\t\t\t\t\t\ttransform: scale(calc(1.0 + ((var(--ken-burns-zoom) - 1.0)/2))) translateX(calc(var(--hidden-width) / 2 * 1px)) translateY(calc(var(--hidden-height) / 2 * 1px));\n\t\t\t\t\t}\n\t\t\t\t\t50% {\n\t\t\t\t\t\ttransform: scale(var(--ken-burns-zoom));\n\t\t\t\t\t}\n\t\t\t\t\t75% {\n\t\t\t\t\t\ttransform: scale(calc(1.0 + ((var(--ken-burns-zoom) - 1.0)/2))) translateX(calc(var(--hidden-width) / -2 * 1px)) translateY(calc(var(--hidden-height) / -2 * 1px));\n\t\t\t\t\t}\n\t\t\t\t\t100% {\n\t\t\t\t\t\ttransform: scale(1.0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@keyframes kenBurnsEffect-simple {\n\t\t\t\t\t0% {\n\t\t\t\t\t\ttransform-origin: bottom left;\n\t\t\t\t\t\ttransform: scale(1.0);\n\t\t\t\t\t}\n\t\t\t\t\t100% {\n\t\t\t\t\t\ttransform: scale(var(--ken-burns-zoom));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t").concat(i,"\n\t\t\t\t").concat(Xu.custom_css,"\n\t\t\t")}randomMove(){const e=getComputedStyle(this.infoContainer),t=this.infoContainer.offsetWidth-parseInt(e.paddingLeft)-parseInt(e.paddingRight)-this.infoBox.offsetWidth,n=this.infoContainer.offsetHeight-parseInt(e.paddingTop)-parseInt(e.paddingBottom)-this.infoBox.offsetHeight,r=Math.floor(Math.random()*t),i=Math.floor(Math.random()*n);this.moveInfoBox(r,i)}moveAroundCorners(){let e=null;arguments.length>0&&void 0!==arguments[0]&&arguments[0]?e=0:this.lastCorner=(this.lastCorner+1)%4;const t=getComputedStyle(this.infoContainer),n=[2,3].includes(this.lastCorner)?this.infoContainer.offsetWidth-parseInt(t.paddingLeft)-parseInt(t.paddingRight)-this.infoBox.offsetWidth:0,r=[1,2].includes(this.lastCorner)?this.infoContainer.offsetHeight-parseInt(t.paddingTop)-parseInt(t.paddingBottom)-this.infoBox.offsetHeight:0;this.moveInfoBox(n,r,e)}moveInfoBox(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(this.lastMove=Date.now(),null===n&&(n=Xu.info_move_fade_duration),n>0)if(this.infoBox.animate){const e=[{opacity:1},{opacity:0,offset:.5},{opacity:1}];this.infoBox.animate(e,{duration:Math.round(1e3*n),iterations:1})}else mh.warn("This browser does not support the animate() method, please set info_move_fade_duration to 0");const r=this;let i=Math.round(500*n);i<0&&(i=0),r.translateTimeout&&clearTimeout(r.translateTimeout),r.translateTimeout=setTimeout(function(){r.infoBoxPosX.style.transform="translate3d(".concat(e,"px, 0, 0)"),r.infoBoxPosY.style.transform="translate3d(0, ".concat(t,"px, 0)")},i)}createInfoBoxContent(){mh.debug("Creating info box content");const e=Ih();if(e){if(this.lovelace=e.lovelace||e.__lovelace,this.infoBoxContentCreatedDate=new Date,this.infoBoxContent.innerHTML="",this.__badges=[],this.__cards=[],this.__views=[],this.energyCollectionUpdateEnabled=!1,this.shadowRoot.querySelectorAll(".wp-card").forEach(e=>{e.parentElement.removeChild(e)}),Xu.badges&&Xu.badges.length>0){const e=document.createElement("div");if(e.id="wallpanel-screensaver-info-box-badges",e.classList.add("wp-badges"),e.style.padding="var(--wp-card-padding)",e.style.margin="var(--wp-card-margin)",e.style.textAlign="center",e.style.display="flex",e.style.alignItems="flex-start",e.style.flexWrap="wrap",e.style.justifyContent="center",e.style.gap="8px",e.style.margin="0px",e.style.minWidth="var(--wp-badges-minwidth)",Xu.style[e.id])for(const t in Xu.style[e.id])mh.debug("Setting style attribute ".concat(t," to ").concat(Xu.style[e.id][t])),e.style.setProperty(t,Xu.style[e.id][t]);Xu.badges.forEach(t=>{const n=JSON.parse(JSON.stringify(t));mh.debug("Creating badge:",n);let r={};n.wp_style&&(r=n.wp_style,delete n.wp_style);const i=(this._createBadgeElement?this._createBadgeElement:this.createBadgeElement).bind(this)(n);i.hass=this.hass;for(const e in r)i.style.setProperty(e,r[e]);this.__badges.push(i),e.append(i)}),this.infoBoxContent.appendChild(e)}if(Xu.views&&Xu.views.length>0){const e=document.createElement("div");if(e.id="wallpanel-screensaver-info-box-views",e.classList.add("wp-views"),Xu.style[e.id])for(const t in Xu.style[e.id])mh.debug("Setting style attribute ".concat(t," to ").concat(Xu.style[e.id][t])),e.style.setProperty(t,Xu.style[e.id][t]);const t=this.lovelace.config.views;Xu.views.forEach(n=>{let r=-1;const i=JSON.parse(JSON.stringify(n));for(var o=0;o0&&Xu.cards.forEach(e=>{const t=JSON.parse(JSON.stringify(e));mh.debug("Creating card:",t);let n={};t.wp_style&&(n=t.wp_style,delete t.wp_style),t.type&&t.type.includes("energy")&&(t.collection_key="energy_wallpanel",this.energyCollectionUpdateEnabled=!0);const r=(this._createCardElement?this._createCardElement:this.createCardElement).bind(this)(t);r.hass=this.hass,this.__cards.push(r);let i=this.infoBoxContent;const o=document.createElement("div");o.classList.add("wp-card"),o.style.width="var(--wp-card-width)",o.style.padding="var(--wp-card-padding)",o.style.margin="var(--wp-card-margin)",o.style.backdropFilter="var(--wp-card-backdrop-filter)",Xu.content_interaction?o.style.pointerEvents="auto":o.style.pointerEvents="none";for(const e in n)if("parent"==e){const t=this.shadowRoot.getElementById(n[e]);t&&(i=t)}else o.style.setProperty(e,n[e]);o.append(r),i.appendChild(o)}),setTimeout(this.updateShadowStyle.bind(this),500)}}setDisplayTime(){const e=Xu.display_time,t=this.getActiveMediaElement(!0);t.updateMediaError?this.displayTime=0:t.play_to_end&&!t.loop?this.displayTime=t.duration:this.displayTime=e}getDisplayTime(){return this.displayTime}restartProgressBarAnimation(){if(!this.progressBarContainer)return;if(this.progressBar.style.animation="none",!Xu.show_progress_bar)return;const e=this;setTimeout(function(){e.progressBar.style.animation="horizontalProgress ".concat(e.getDisplayTime(),"s linear"),e.progressBar.style.animationPlayState=e.isPaused?"paused":"running"},25)}restartKenBurnsEffect(){if(!Xu.image_animation_ken_burns||!Xu.image_animation_ken_burns_animations.length)return;const e=this.getActiveMediaElement();e.style.animation="none",e.style.setProperty("--ken-burns-zoom",Xu.image_animation_ken_burns_zoom);let t=Math.floor(1e3*Xu.image_animation_ken_burns_delay);t<50&&(t=50);const n=Math.ceil(Xu.image_animation_ken_burns_duration||1.2*(this.getDisplayTime()+2*Xu.crossfade_time)),r=Xu.image_animation_ken_burns_animations[Math.floor(Math.random()*Xu.image_animation_ken_burns_animations.length)];this.kenburnsDelayStartTimer&&clearTimeout(this.kenburnsDelayStartTimer),e.animationIterationCount=1,this.kenburnsDelayStartTimer=setTimeout(function(){e.style.animation="kenBurnsEffect-".concat(r," ").concat(n,"s linear forwards")},t)}getMediaElement(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.imageOneContainer.style.opacity==(e?1:0)?this.imageOne:this.imageTwo;if(t&&"ha-camera-stream"==n.tagName.toLowerCase()){const e=_h(n)[1];e&&(n=e)}return n}getActiveMediaElement(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getMediaElement(!0,e)}getInactiveMediaElement(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getMediaElement(!1,e)}replaceMediaElement(e,t){if("string"==typeof e.src&&e.src.startsWith("blob:")&&URL.revokeObjectURL(e.src),"function"==typeof e.pause&&e.pause(),"ha-camera-stream"==e.tagName.toLowerCase()){const[t,n]=_h(e);n&&n.pause(),t&&"function"==typeof t.stop&&t.stop()}t=t.toLowerCase();const n=document.createElement(t);return[...e.attributes].filter(e=>"src"!=e.name).forEach(e=>n.setAttribute(e.name,e.value)),n.mediaUrl=e.mediaUrl,n.infoCacheUrl=e.infoCacheUrl,"video"===t&&Object.assign(n,{preload:"auto",muted:!1,volume:Xu.video_volume}),e.replaceWith(n),e===this.imageOne?this.imageOne=n:this.imageTwo=n,e.remove(),n}loadBackgroundImage(e){let t=e.src;const n=e.tagName.toLowerCase();if("ha-camera-stream"===n){const n=_h(e)[1];if(!n||!n.poster)return;t=n.poster}else if("video"===n){const n=document.createElement("canvas");n.width=e.videoWidth,n.height=e.videoHeight;n.getContext("2d").drawImage(e,0,0,n.width,n.height);try{t=n.toDataURL("image/png")}catch(e){t=null,mh.error("Error extracting canvas image:",e)}}let r=this.imageOneBackground;e==this.imageTwo&&(r=this.imageTwoBackground),r.style.backgroundImage=t?"url('".concat(t.replace(/'/g,"%27"),"')"):""}connectedCallback(){this.style.zIndex=Xu.z_index,this.style.visibility="hidden",this.style.opacity=0,this.style.position="fixed",this.timerInterval||(this.timerInterval=setInterval(this.timer.bind(this),1e3)),this.messageContainer=document.createElement("div"),this.messageContainer.id="wallpanel-message-container",this.debugBox=document.createElement("div"),this.debugBox.id="wallpanel-debug-box",this.screensaverContainer=document.createElement("div"),this.screensaverContainer.id="wallpanel-screensaver-container",this.imageOneContainer=document.createElement("div"),this.imageOneContainer.id="wallpanel-screensaver-image-one-container",this.imageOneBackground=document.createElement("div"),this.imageOneBackground.className="wallpanel-screensaver-image-background",this.imageOneBackground.id="wallpanel-screensaver-image-one-background",this.imageOne=document.createElement("img"),this.imageOne.id="wallpanel-screensaver-image-one",this.imageOneInfoContainer=document.createElement("div"),this.imageOneInfoContainer.className="wallpanel-screensaver-image-info-container",this.imageOneInfoContainer.id="wallpanel-screensaver-image-one-info-container",this.imageOneInfo=document.createElement("div"),this.imageOneInfo.className="wallpanel-screensaver-image-info",this.imageOneInfo.id="wallpanel-screensaver-image-one-info",this.imageOneInfoContainer.appendChild(this.imageOneInfo),this.imageOneContainer.appendChild(this.imageOneBackground),this.imageOneContainer.appendChild(this.imageOne),this.imageOneContainer.appendChild(this.imageOneInfoContainer),this.screensaverContainer.appendChild(this.imageOneContainer),this.imageTwoContainer=document.createElement("div"),this.imageTwoContainer.id="wallpanel-screensaver-image-two-container",this.imageTwoBackground=document.createElement("div"),this.imageTwoBackground.className="wallpanel-screensaver-image-background",this.imageTwoBackground.id="wallpanel-screensaver-image-two-background",this.imageTwo=document.createElement("img"),this.imageTwo.id="wallpanel-screensaver-image-two",this.imageTwoInfoContainer=document.createElement("div"),this.imageTwoInfoContainer.className="wallpanel-screensaver-image-info-container",this.imageTwoInfoContainer.id="wallpanel-screensaver-image-two-info-container",this.imageTwoInfo=document.createElement("div"),this.imageTwoInfo.className="wallpanel-screensaver-image-info",this.imageTwoInfo.id="wallpanel-screensaver-image-two-info",this.imageTwoInfoContainer.appendChild(this.imageTwoInfo),this.imageTwoContainer.appendChild(this.imageTwoBackground),this.imageTwoContainer.appendChild(this.imageTwo),this.imageTwoContainer.appendChild(this.imageTwoInfoContainer),this.screensaverContainer.appendChild(this.imageTwoContainer),this.screensaverImageOverlay=document.createElement("div"),this.screensaverImageOverlay.id="wallpanel-screensaver-image-overlay",this.screensaverContainer.appendChild(this.screensaverImageOverlay),this.progressBarContainer=document.createElement("div"),this.progressBarContainer.className="wallpanel-progress",this.progressBar=document.createElement("div"),this.progressBar.className="wallpanel-progress-inner",this.progressBar.id="wallpanel-progress-inner",this.progressBarContainer.appendChild(this.progressBar),Xu.show_progress_bar&&this.screensaverContainer.appendChild(this.progressBarContainer),this.pauseIndicator=document.createElement("div"),this.pauseIndicator.id="wp-pause-indicator",this.pauseIndicator.innerHTML="⏸️",this.pauseIndicator.style.position="absolute",this.pauseIndicator.style.top="1rem",this.pauseIndicator.style.left="1rem",this.pauseIndicator.style.fontSize="4rem",this.pauseIndicator.style.lineHeight="1",this.pauseIndicator.style.color="white",this.pauseIndicator.style.filter="drop-shadow(0 0 8px rgba(0,0,0,0.8))",this.pauseIndicator.style.zIndex="9999",this.pauseIndicator.style.pointerEvents="none",this.pauseIndicator.style.display="none",this.screensaverContainer.appendChild(this.pauseIndicator),this.infoContainer=document.createElement("div"),this.infoContainer.id="wallpanel-screensaver-info-container",this.fixedInfoContainer=document.createElement("div"),this.fixedInfoContainer.id="wallpanel-screensaver-fixed-info-container",this.fixedInfoBox=document.createElement("div"),this.fixedInfoBox.id="wallpanel-screensaver-fixed-info-box",this.fixedInfoBoxContent=document.createElement("div"),this.fixedInfoBoxContent.id="wallpanel-screensaver-fixed-info-box-content",this.screensaverContainer.appendChild(this.infoContainer),this.infoBoxPosX=document.createElement("div"),this.infoBoxPosX.id="wallpanel-screensaver-info-box-pos-x",this.infoBoxPosX.x="0",this.infoBoxPosY=document.createElement("div"),this.infoBoxPosY.id="wallpanel-screensaver-info-box-pos-y",this.infoBoxPosY.y="0",this.infoBox=document.createElement("div"),this.infoBox.id="wallpanel-screensaver-info-box",this.infoBoxContent=document.createElement("div"),this.infoBoxContent.id="wallpanel-screensaver-info-box-content",this.infoBoxContent.style.display="grid",this.infoBox.appendChild(this.infoBoxContent),this.infoBoxPosX.appendChild(this.infoBox),this.infoBoxPosY.appendChild(this.infoBoxPosX),this.infoContainer.appendChild(this.infoBoxPosY),this.fixedInfoBox.appendChild(this.fixedInfoBoxContent),this.fixedInfoContainer.appendChild(this.fixedInfoBox),this.infoContainer.appendChild(this.fixedInfoContainer),this.screensaverOverlay=document.createElement("div"),this.screensaverOverlay.id="wallpanel-screensaver-overlay",this.screensaverContainer.appendChild(this.screensaverOverlay),this.shadowStyle=document.createElement("style");const e=this.attachShadow({mode:"open"});e.appendChild(this.shadowStyle),e.appendChild(this.screensaverContainer),e.appendChild(this.messageContainer),e.appendChild(this.debugBox);const t=this,n=["click","touchstart","touchend","wheel"];Xu.stop_screensaver_on_key_down&&n.push("keydown"),Xu.stop_screensaver_on_mouse_move&&n.push("mousemove");const r=e=>{try{t.handleInteractionEvent(e)}catch(e){mh.error(e.stack)}};n.forEach(function(e){window.addEventListener(e,r,!0),t.windowEventHandlers.push({eventName:e,handler:r,options:!0})});const i=e=>{Xu.disable_context_menu&&t.screensaverRunning()&&e.preventDefault()};window.addEventListener("contextmenu",i),this.windowEventHandlers.push({eventName:"contextmenu",handler:i});const o=()=>{try{const e=this.screensaverContainer.clientWidth,n=this.screensaverContainer.clientHeight;!t.screensaverRunning()||t.currentWidth==e&&t.currentHeight==n||(mh.debug("Size changed from ".concat(t.currentWidth,"x").concat(t.currentHeight," to ").concat(e,"x").concat(n)),t.currentWidth=e,t.currentHeight=n,t.updateShadowStyle(),t.setMediaDimensions())}catch(e){mh.error(e.stack)}};window.addEventListener("resize",o),this.windowEventHandlers.push({eventName:"resize",handler:o});const a=()=>{try{t.screensaverRunning()&&t.moreInfoDialogToForeground()}catch(e){mh.error(e.stack)}};window.addEventListener("hass-more-info",a),this.windowEventHandlers.push({eventName:"hass-more-info",handler:a}),this.infoBoxResizeObserver=new ResizeObserver(()=>{"corners"===Xu.info_move_pattern&&this.moveAroundCorners(!0)}),this.infoBoxResizeObserver.observe(this.infoBoxContent),this.setScreensaverEntityState()}disconnectedCallback(){this.timerInterval&&(clearInterval(this.timerInterval),this.timerInterval=null),this.translateTimeout&&(clearTimeout(this.translateTimeout),this.translateTimeout=null),this.windowEventHandlers.length&&(this.windowEventHandlers.forEach(e=>{let{eventName:t,handler:n,options:r}=e;window.removeEventListener(t,n,r)}),this.windowEventHandlers=[]),this.infoBoxResizeObserver&&(this.infoBoxResizeObserver.disconnect(),this.infoBoxResizeObserver=null)}reconfigure(e){const t=e&&Object.keys(e).length>0;!t||e.hide_toolbar==Xu.hide_toolbar&&e.hide_toolbar_action_icons==Xu.hide_toolbar_action_icons&&e.hide_toolbar_on_subviews==Xu.hide_toolbar_on_subviews&&e.hide_sidebar==Xu.hide_sidebar&&e.fullscreen==Xu.fullscreen||Lh(),Xu.theme&&(mh.info("Apply theme",Xu.theme),Zu.theme=Xu.theme,Zu._applyTheme()),this.updateStyle(),this.screensaverRunning()&&this.createInfoBoxContent(),!Xu.info_move_interval&&t&&e.info_move_interval&&Ku.moveInfoBox(0,0);const n=e.image_url!=Xu.image_url||"immich-api"==Ch()&&(Xu.immich_shared_albums!=e.immich_shared_albums||Xu.immich_memories!=e.immich_memories||Xu.immich_favorites!=e.immich_favorites||JSON.stringify(Xu.immich_album_names)!=JSON.stringify(e.immich_album_names)||JSON.stringify(Xu.immich_tag_names)!=JSON.stringify(e.immich_tag_names)||JSON.stringify(Xu.immich_persons)!=JSON.stringify(e.immich_persons));if(Xu.show_images&&(!this.mediaList||!this.mediaList.length||!t||!e.show_images||n)){const e=this,r=this.screensaverRunning()&&t;n&&(this.mediaList=[],this.mediaIndex=-1),this.updateMediaList(function(){r&&e.switchActiveMedia("reconfigure")},n)}if(Xu.disable_screensaver_on_browser_mod_popup_func)try{this.disable_screensaver_on_browser_mod_popup_function=new Function("bmp",Xu.disable_screensaver_on_browser_mod_popup_func)}catch(e){this.disable_screensaver_on_browser_mod_popup_function=null,mh.error("Invalid disable_screensaver_on_browser_mod_popup_func:",e)}Sh()&&Xu.camera_motion_detection_enabled?this.cameraMotionDetection.start():this.cameraMotionDetection.stop()}getMoreInfoDialog(){const e=ah.shadowRoot.querySelector("ha-more-info-dialog");if(!e)return;const t=e.shadowRoot.querySelector("ha-dialog");return t||void 0}moreInfoDialogToForeground(){const e=this;!function t(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const r=e.getMoreInfoDialog();if(r)return r.style.position="absolute",void(r.style.zIndex=e.style.zIndex+1);n<10&&setTimeout(t,50,n+1)}()}fetchEXIFInfo(e){const t=this;if(nh.get(e.infoCacheUrl))return;const n=document.createElement("img");n.src=e.src,n.mediaUrl=e.mediaUrl,n.infoCacheUrl=e.infoCacheUrl,Vh(n,function(){mh.debug("EXIF data:",n.exifdata),rh(n.infoCacheUrl,n.exifdata),t.setMediaDataInfo(n);const e=n.exifdata.GPSLongitude,r=n.exifdata.GPSLatitude;if(Xu.fetch_address_data&&e&&!isNaN(e[0])&&r&&!isNaN(r[0])){let i="S"==n.exifdata.GPSLatitudeRef?-1:1;const o=r[0]*i+(r[1]*i*60+r[2]*i)/3600;i="W"==n.exifdata.GPSLongitudeRef?-1:1;const a=e[0]*i+(e[1]*i*60+e[2]*i)/3600;mh.debug("Fetching nominatim data for lat=".concat(o," lon=").concat(a));const s=new XMLHttpRequest;s.onload=function(){if(200==this.status||0===this.status){const e=JSON.parse(s.responseText);if(mh.debug("nominatim data:",e),e&&e.address){const r=nh.get(n.infoCacheUrl);r?(r.address=e.address,t.setMediaDataInfo(n)):mh.warn("URL not in cache:",n.infoCacheUrl)}}else mh.error("nominatim error:",this.status,s.status,s.responseText)},s.onerror=function(e){mh.error("nominatim error:",e)},s.ontimeout=function(e){mh.error("nominatim timeout:",e)},s.open("GET","https://nominatim.openstreetmap.org/reverse?lat=".concat(o,"&lon=").concat(a,"&format=json")),s.timeout=15e3,s.send()}})}setMediaDataInfo(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=Xu.show_image_info&&Boolean(Xu.image_info_template);if(this.imageOneInfoContainer.style.display=t?"block":"none",this.imageTwoInfoContainer.style.display=t?"block":"none",!t)return this.imageOneInfo.innerHTML="",void(this.imageTwoInfo.innerHTML="");e||(e=this.getActiveMediaElement());const n=e.infoCacheUrl;let r=e.mediaUrl;if(!n)return void mh.debug("infoCacheUrl missing:",e);if(!r)return void mh.debug("mediaUrl missing:",e);r=decodeURI(r);const i=[];if(this.imageOne.infoCacheUrl==n&&i.push(this.imageOneInfo),this.imageTwo.infoCacheUrl==n&&i.push(this.imageTwoInfo),0==i.length)return;let o=nh.get(n);o||(o={}),o.image||(o.image={}),void 0===o.image.url&&(o.image.url=r);const a=r.replace(/\?[^?]*$/,"").replace(/\/+$/,"");if(void 0===o.image.path&&(o.image.path=a.replace(/^[^:]+:\/\/[^/]+/,"")),void 0===o.image.relativePath){const c="media-source"===Ch()?n.replace(/\?[^?]*$/,"").replace(/\/+$/,""):a;o.image.relativePath=c.replace(Xu.image_url,"").replace(/^\/+/,"")}if(void 0===o.image.filename&&(o.image.filename=a.replace(/^.*[\\/]/,"")),void 0===o.image.folderName){o.image.folderName="";const l=a.split("/");l.length>=2&&(o.image.folderName=l[l.length-2])}o.mediaPosition=this.mediaIndex+1,o.mediaCount=this.mediaList.length,mh.debug("Media info:",o);let s=Xu.image_info_template||"";if("analyze"==s){function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const n=Object.keys(e);n.sort(),n.forEach(n=>{const r=e[n];"object"==typeof r&&null!==r?u(r,n+"."):s+="".concat(t).concat(n,": ").concat(fh(r),"
")})}s="",u(o),this.imageOneInfo.style.pointerEvents="none",this.imageTwoInfo.style.pointerEvents="none",i.forEach(e=>{e.style.pointerEvents="auto"})}else s=s.replace(/\${([^}]+)}/g,(e,t)=>{const n=t.split("||");for(let e=0;e{const t=e.split(":",2);t[0]&&t[1]&&(a[t[0].replace(/\s/g,"")]=t[1].replace(/\s/g,""))}))}}let s="";const c=t.split("|");let l="";for(let e=0;e{s&&(s=s[e])}),s)break}if(s){if(/DateTime/i.test(l)){const e=new Date(s.replace(/(\d\d\d\d):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d)/,"$1-$2-$3T$4:$5:$6"));if(isNaN(e))continue;a||(a={year:"numeric",month:"2-digit",day:"2-digit"}),s=e.toLocaleDateString((ah.hass||ah.__hass).locale.language,a)}return"object"==typeof s&&(s=JSON.stringify(s)),r+s+i}}return""});i.forEach(e=>{e.innerHTML=s,e.style.display="block"})}async updateMediaList(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(!Xu.image_url)return;if(this.updatingMediaList)return;if(!t&&(new Date).getTime()-this.lastMediaListUpdate<1e3*Xu.media_list_update_interval)return;const r=this;let i=null;const o=Ch();if("unsplash-api"==o)i=r.updateMediaListFromUnsplashAPI;else if("immich-api"==o)i=r.updateMediaListFromImmichAPI;else{if("media-source"!=o){let t=Xu.image_url;return"iframe"==o?t=t.replace(/^iframe\+/,""):"embed"==o&&(t=t.replace(/^embed\+/,"")),this.mediaList=[t],void(e&&e())}i=r.updateMediaListFromMediaSource}this.updatingMediaList=!0,this.lastMediaListUpdate=Date.now();try{await i.bind(r)(),mh.debug("Media list from ".concat(o," is now:"),r.mediaList),e&&e()}catch(t){const i=3,a=3e3;if(mh.warn("Failed to update media list from ".concat(o,":"),t),nr.updateMediaList(e,!0,n+1),a);else{const e="Failed to update media list from ".concat(Xu.image_url," after ").concat(i," retries: ").concat(t.message||fh(t));mh.error(e)}}this.updatingMediaList=!1}async findMedias(e){const t=this;mh.debug("findMedias: ".concat(e));const n=[];if(Xu.exclude_filenames)for(const e of Xu.exclude_filenames)n.push(new RegExp(e));try{const r=await t.hass.callWS({type:"media_source/browse_media",media_content_id:e});mh.debug("Found media entry",r);const i=r.children.map(async e=>{const r=e.media_content_id.replace(/^media-source:\/\/[^/]+/,"");for(const e of n)if(e.test(r))return null;return["image","video"].includes(e.media_class)?Xu.exclude_media_types&&Xu.exclude_media_types.includes(e.media_class)?null:e.media_content_id:"directory"==e.media_class?await t.findMedias(e.media_content_id):null});return(await Promise.all(i)).flat().filter(e=>null!==e)}catch(t){throw mh.warn("Error browsing media ".concat(e,":"),t),t}}async updateMediaListFromMediaSource(){const e=Xu.image_url,t=this;try{let n=await t.findMedias(e);n="random"==Xu.media_order?Ah(n):"random_but_synced"==Xu.media_order?Ah(n.slice().sort(),yh(vh)):n.sort(),n.length>Xu.media_list_max_size&&(mh.info("Using only ".concat(Xu.media_list_max_size," of ").concat(n.length," media items")),n=n.slice(0,Xu.media_list_max_size)),t.mediaList=n}catch(e){throw new Error("Failed to update image list from ".concat(Xu.image_url,": ").concat(e.message||fh(e)))}}async updateMediaListFromUnsplashAPI(){const e=[],t="".concat(Xu.image_url,"&count=30");mh.debug("Unsplash API request: ".concat(t));try{const n={method:"GET",headers:{Accept:"application/json"}};"undefined"!=typeof AbortSignal&&void 0!==AbortSignal.timeout&&(mh.debug("Using AbortSignal"),n.signal=AbortSignal.timeout(1e3*Xu.immich_api_request_timeout));const r=await fetch(t,n);if(!r.ok){const e=await r.text();throw new Error("Unsplash API request failed: ".concat(r.status," ").concat(r.statusText," - ").concat(e))}const i=await r.json();mh.debug("Got Unsplash API response"),i.forEach(t=>{mh.debug(t);const n="".concat(t.urls.raw,"&w=${width}&h=${height}&auto=format");e.push(n),rh(n,t)}),this.mediaList=e}catch(e){if("AbortError"===e.name)throw new Error("Unsplash API request timed out: ".concat(t));throw e}}async _immichFetch(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i={headers:{"x-api-key":t,"Content-Type":"application/json",Accept:"application/json"}},o=n(n({},i),r);o.headers=n(n({},i.headers),r.headers),"undefined"!=typeof AbortSignal&&void 0!==AbortSignal.timeout&&(mh.debug("Using AbortSignal"),o.signal=AbortSignal.timeout(1e4)),mh.debug("Immich API request: ".concat(e));try{const t=await fetch(e,o);if(!t.ok){const e=await t.text();throw new Error("Immich API request failed: ".concat(t.status," ").concat(t.statusText," - ").concat(e))}return await t.json()}catch(t){if("AbortError"===t.name)throw new Error("Immich API request timed out: ".concat(e));throw t}}async updateMediaListFromImmichAPI(){if(!Xu.immich_api_keys||!Xu.immich_api_keys.length)throw new Error("No immich_api_key configured");const e=this,t=this.screensaverContainer.clientWidth>=this.screensaverContainer.clientHeight?"landscape":"portrait";let n=Xu.exclude_media_orientation;"auto"==n&&(n="landscape"==t?"portrait":"landscape"),mh.debug("config.exclude_media_orientation=".concat(Xu.exclude_media_orientation,", screenOrientation=").concat(t,", exclude_media_orientation=").concat(n));let r=[];const i={},o=Xu.image_url.replace(/^immich\+/,""),a=[];if(Xu.exclude_filenames)for(const e of Xu.exclude_filenames)a.push(new RegExp(e));function s(e){return null!=e.width&&null!=e.height?{width:e.width,height:e.height}:function(e){if(null==e||!e.exifImageWidth||null==e||!e.exifImageHeight)return null;let t=e.exifImageWidth,n=e.exifImageHeight;if(e.orientation){const r=Number(e.orientation);[5,6,7,8,90,-90].includes(r)&&([t,n]=[n,t])}return{width:t,height:n}}(e.exifInfo)}function c(e){const t=s(e);return t?t.width>=t.height?"landscape":"portrait":null}async function l(t,s){let l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;await async function(t,r){const i=Xu.immich_exclude_tag_names&&Xu.immich_exclude_tag_names.length,a=!!n;for(let n=0;n{var n;const s="image"===(null===(n=t.type)||void 0===n?void 0:n.toLowerCase()),c=s&&!0!==t.isEdited&&(null==t.width||null==t.height||void 0===t.isEdited),l=s&&a&&(null==t.width||null==t.height);if(!t.exifInfo||i&&!t.tags||l||c){mh.debug("Fetching asset info for ".concat(t.id));const n=await e._immichFetch("".concat(o,"/assets/").concat(t.id),r);t.exifInfo=n.exifInfo,t.tags=(n.tags||[]).map(e=>e.value),t.width=n.width,t.height=n.height,t.isEdited=n.isEdited}}))}}(t,s);for(const e of t){mh.debug("Processing immich asset",e);const t=e.type.toLowerCase();if(!["image","video"].includes(t)){mh.debug("Neither image nor video, skipping");continue}if(Xu.exclude_media_types&&Xu.exclude_media_types.includes(t)){mh.debug('Media type "'.concat(t,'" excluded'));continue}let u=!1;for(const t of a)t.test(e.originalFileName)&&(mh.debug('Media item excluded by regex "'.concat(t,'"')),u=!0);if(u)continue;if(Xu.immich_exclude_tag_names&&Xu.immich_exclude_tag_names.length){const t=e.tags.filter(e=>Xu.immich_exclude_tag_names.includes(e));if(t.length>0){mh.debug("Media item excluded due to tag(s): ".concat(t.join(", ")));continue}}if(n){const t=c(e);if(t===n){mh.debug('Media item with orientation "'.concat(t,'" excluded'));continue}}let h="original";"preview"==Xu.immich_resolution&&(h="video"==t?"video/playback":"thumbnail?size=preview");let d="".concat(o,"/assets/").concat(e.id,"/").concat(h);if("image"==t&&(d+=d.includes("?")?"&edited=true":"?edited=true"),r.indexOf(d)>=0)continue;r.push(d);const f=e.exifInfo||{};f.immichApiKey=s,f.mediaType=t,f.image={filename:e.originalFileName,folderName:l},i[d]=f}}try{for(const t of Xu.immich_api_keys)if(mh.debug("Using immich API key ".concat(t)),Xu.immich_persons&&Xu.immich_persons.length){mh.debug("Searching for assets based on persons");const n=Xu.immich_persons.map(e=>(Array.isArray(e)?e:[e]).map(e=>e.toLowerCase())),r={};let i=[],a=1,s=!0;for(;s;){const n=await e._immichFetch("".concat(o,"/people?size=1000&page=").concat(a),t);i=i.concat(n.people),s=n.hasNextPage,a++}i.forEach(e=>{e.name&&e.id&&(r[e.name.toLowerCase()]=e.id)});for(const i of n){const n=[];if(i.forEach(e=>{const t=r[e.toLowerCase()];t?n.push(t):mh.error("Person not found in immich: ".concat(e))}),n.length>0){mh.debug("Searching asset metadata for persons: ",n);let r=1;for(;;){mh.debug("Fetching asset metadata page ".concat(r));const a=await e._immichFetch("".concat(o,"/search/metadata"),t,{method:"POST",body:JSON.stringify({personIds:n,withExif:!0,page:r,size:1e3})});if(mh.debug("Got immich API response",a),!a.assets.count){if(1==r){const e="No media items found in immich that contain all these people: ".concat(i);mh.error(e)}break}if(await l(a.assets.items,t),!a.assets.nextPage)break;r=parseInt(a.assets.nextPage,10)}}}}else if(Xu.immich_memories){mh.debug("Fetching immich memories (on_this_day)");const n=await e._immichFetch("".concat(o,"/memories?type=on_this_day"),t);mh.debug("Got immich API response",n);const r=new Date,i=n.filter(e=>{const t=new Date(e.showAt),n=new Date(e.hideAt);return r>=t&&r<=n});mh.debug("Found ".concat(i.length," visible memories")),await Promise.all(i.map(async e=>{mh.debug("Processing memory:",e),await l(e.assets,t)}))}else if(Xu.immich_favorites){mh.debug("Search for favorites in asset metadata");let n=1;for(;;){mh.debug("Fetching asset metadata page ".concat(n));const r=await e._immichFetch("".concat(o,"/search/metadata"),t,{method:"POST",body:JSON.stringify({isFavorite:!0,withExif:!0,page:n,size:1e3})});if(mh.debug("Got immich API response",r),!r.assets.count){if(1==n){const e="No favorite media items found in immich";mh.error(e)}break}if(await l(r.assets.items,t),!r.assets.nextPage)break;n=parseInt(r.assets.nextPage,10)}}else if(Xu.immich_tag_names&&Xu.immich_tag_names.length){mh.debug("Searching for assets based on tag names");const n=Xu.immich_tag_names.map(e=>e.toLowerCase());mh.debug("Fetching immich tags");const r=await e._immichFetch("".concat(o,"/tags"),t);mh.debug("Got immich API response",r);const i=r.filter(e=>{const t=n.includes(e.name.toLowerCase());return mh.debug("".concat(t?"Adding":"Skipping"," tag: ").concat(e.name)),t}).map(e=>e.id);if(i.length>0){mh.debug("Searching asset metadata for tags: ",i);let r=1;for(;;){mh.debug("Fetching asset metadata page ".concat(r));const a=await e._immichFetch("".concat(o,"/search/metadata"),t,{method:"POST",body:JSON.stringify({tagIds:i,withExif:!0,page:r,size:1e3})});if(mh.debug("Got immich API response",a),!a.assets.count){if(1==r){const e="No media items found in immich that contain these tags: ".concat(n);mh.error(e)}break}if(await l(a.assets.items,t),!a.assets.nextPage)break;r=parseInt(a.assets.nextPage,10)}}else{const e="No matching immich tags found or selected.";mh.error(e)}}else{mh.debug("Searching for assets based on albums");const n=(Xu.immich_album_names||[]).map(e=>e.toLowerCase());mh.debug("Fetching immich albums (shared=".concat(Xu.immich_shared_albums,")"));const r=await e._immichFetch("".concat(o,"/server/version"),t);mh.debug("Immich server version:",r);const i=r.major<3?"shared":"isShared",a=await e._immichFetch("".concat(o,"/albums?").concat(i,"=").concat(Xu.immich_shared_albums),t);mh.debug("Got immich API response",a);const s=a.filter(e=>{const t=!n.length||n.includes(e.albumName.toLowerCase());return mh.debug("".concat(t?"Adding":"Skipping"," album: ").concat(e.albumName)),t});if(s.length>0)for(const n of s){mh.debug("Fetching assets for album: ",n.albumName);let r=1;for(;;){const i=await e._immichFetch("".concat(o,"/search/metadata"),t,{method:"POST",body:JSON.stringify({albumIds:[n.id],withExif:!0,page:r})});if(mh.debug("Got immich album assets (page ".concat(r,")"),i),await l(i.assets.items,t,n.albumName),!i.assets.nextPage)break;r=parseInt(i.assets.nextPage,10)}}else mh.debug("No matching immich albums found or selected.")}!function(){if(0==r.length){const e="No matching media assets found";mh.error(e)}r="random"==Xu.media_order?Ah(r):"random_but_synced"==Xu.media_order?Ah(r.slice().sort(),yh(vh)):r.sort(),r.length>Xu.media_list_max_size&&(mh.info("Using only ".concat(Xu.media_list_max_size," of ").concat(r.length," media items")),r=r.slice(0,Xu.media_list_max_size)),r.forEach(e=>{rh(e,i[e])}),e.mediaList=r}()}catch(e){throw mh.error("Immich API processing failed:",e),e}}fillPlaceholders(e){const t=this.screensaverContainer.clientWidth,n=this.screensaverContainer.clientHeight,r=Date.now(),i=Math.floor(r/1e3);return e=(e=(e=(e=e.replace(/\${width}/g,t)).replace(/\${height}/g,n)).replace(/\${timestamp_ms}/g,r)).replace(/\${timestamp}/g,i)}async updateMediaFromUrl(e,t){var n=this;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Xu.force_load_media_with_fetch&&(o=!0);const a=async e=>{const n=e.tagName.toLowerCase(),r={img:"load",video:"loadeddata",iframe:"load",embed:"load"}[n];if(!r)throw new Error('Unsupported element tag "'.concat(e.tagName,'"'));const a=new Promise((i,o)=>{const a=()=>{e.onerror=null,e.removeEventListener(r,s)},s=async()=>{if(a(),"img"===n&&"function"==typeof e.decode)try{await e.decode()}catch(e){mh.debug('Failed to pre-decode loaded image "'.concat(t,'":'),e)}i()};e.addEventListener(r,s),e.onerror=()=>{a(),o(new Error("Failed to load ".concat(e.tagName,' "').concat(t,'"')))}});if(o)if(Xu.stream_load_media)fetch(t,{headers:i}).then(n=>{if(!n.ok)throw new Error("Failed to load ".concat(e.tagName,' "').concat(t,'": ').concat(n));if(!n.body)throw new Error("Failed to load ".concat(e.tagName,' "').concat(t,'": empty body'));const r=n.body.getReader();return new ReadableStream({start:e=>function t(){return r.read().then(n=>{let{done:r,value:i}=n;if(!r)return e.enqueue(i),t();e.close()})}()})}).then(e=>new Response(e)).then(e=>e.blob()).then(t=>{"string"==typeof e.src&&e.src.startsWith("blob:")&&URL.revokeObjectURL(e.src),e.src=URL.createObjectURL(t)});else{i=i||{};const n=await fetch(t,{headers:i});if(mh.debug("Got respone",n),!n.ok)throw new Error("Failed to load ".concat(e.tagName,' "').concat(t,'": ').concat(n));"string"==typeof e.src&&e.src.startsWith("blob:")&&URL.revokeObjectURL(e.src);const r=await n.blob();e.src=URL.createObjectURL(r)}else e.src=t;return a},s=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;t||(t="img"===e.tagName.toLowerCase()?"video":"img");const i=n.replaceMediaElement(e,t);try{return await a(i),i}catch(e){throw r||e}},c=async(e,t)=>{try{return await a(e),e}catch(n){if(t)return await s(e,null,n);throw n}};return r?r===e.tagName.toLowerCase()?await c(e,!1):await s(e,r):await c(e,!0)}getNextMediaURL(){let e,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.mediaList.length?("random_but_synced"==Xu.media_order?e=Math.floor(Date.now()/(1e3*Xu.display_time))%this.mediaList.length:(e=this.mediaIndex,"forwards"==this.mediaListDirection?e++:e--,e>=this.mediaList.length?e=0:e<0&&(e=this.mediaList.length-1)),t&&(this.mediaIndex=e),this.mediaList[e]):null}async updateMediaFromMediaSource(e){var t;const n=await this.hass.callWS({type:"media_source/resolve_media",media_content_id:e.mediaUrl}),r=null===(t=n.mime_type)||void 0===t?void 0:t.match(/^(image|video)\//),i={image:"img",video:"video"}[null==r?void 0:r[1]]||null;let o=n.url;return o.startsWith("http://")||o.startsWith("https://")||(o="".concat(document.location.origin).concat(o)),mh.debug("Setting image src: ".concat(o)),e.mediaUrl=o,await this.updateMediaFromUrl(e,e.mediaUrl,i)}async updateMediaFromImmichAPI(e){const t=nh.get(e.mediaUrl)||{},n="video"==t.mediaType?"video":"img";return await this.updateMediaFromUrl(e,e.mediaUrl,n,{"x-api-key":t.immichApiKey},!0)}async updateMediaFromMediaEntity(e){const t=e.mediaUrl.match(/^media-entity-(image|video):\/\/(.*)/);if(!t)throw new Error('Invalid URL "'.concat(e.mediaUrl,'"'));const n=t[1],r=t[2],i=this.hass.states[r];if(!i)throw new Error('Entity "'.concat(r,'" not available'));function o(){"media_exif"in i.attributes?rh(e.infoCacheUrl,i.attributes.media_exif):rh(e.infoCacheUrl,i.attributes)}if(oh=i.state,"video"==n)return e.infoCacheUrl=e.mediaUrl,o(),(e=this.replaceMediaElement(e,"ha-camera-stream")).style.visibility="hidden",Object.assign(e,{hass:this.__hass,stateObj:this.__hass.states[r],"allow-exoplayer":!1,controls:!1}),new Promise((t,n)=>{let r=0;e.addEventListener("load",async function e(i){const o=i.currentTarget;o.removeEventListener("load",e),await o.updateComplete;const[a,s]=_h(o);if(!a||!s)return r++,r<=20?void setTimeout(()=>e(i),100):void n(new Error("Failed to initialize camera stream player"));if(a.style.height="100%",s.autoplay=!1,s.muted=!1,s.volume=Xu.video_volume,s.style.maxHeight="100%",s.style.height="100%",s.readyState>=s.HAVE_ENOUGH_DATA)t(o);else{const e=()=>{s.removeEventListener("canplay",e),t(o)};s.addEventListener("canplay",e)}})});{if(!i.attributes||!i.attributes.entity_picture)throw new Error('Entity "'.concat(r,'" has no entity_picture attribute'));const t=i.attributes.entity_picture;let n=t.indexOf("?")>0?"&":"?";return n+=this.fillPlaceholders("width=${width}&height=${height}&ts=${timestamp_ms}"),e.mediaUrl=t+n,e.infoCacheUrl=e.mediaUrl,o(),await this.updateMediaFromUrl(e,e.mediaUrl,"img",null,!0)}}async updateMediaFromUnsplashAPI(e){const t=nh.get(e.mediaUrl);return e.mediaUrl=this.fillPlaceholders(e.mediaUrl),t&&rh(e.mediaUrl,t),await this.updateMediaFromUrl(e,e.mediaUrl,"img")}async updateMediaFromMediaIframe(e){return await this.updateMediaFromUrl(e,e.mediaUrl,"iframe")}async updateMediaFromMediaEmbed(e){return await this.updateMediaFromUrl(e,e.mediaUrl,"embed")}async updateMediaFromOtherSrc(e){return e.mediaUrl=this.fillPlaceholders(e.mediaUrl),await this.updateMediaFromUrl(e,e.mediaUrl)}async updateMedia(e){if(Xu.show_images){this.updatingMedia=!0,e.updateMediaError=!1,e.style.visibility="hidden";try{if(e==this.getActiveMediaElement()){const e=this.getInactiveMediaElement();if("video"===e.tagName.toLowerCase())try{e.pause()}catch(e){mh.debug(e)}else if("ha-camera-stream"===e.tagName.toLowerCase())try{const[t,n]=_h(e);n&&n.pause(),t&&"function"==typeof t.stop&&t.stop()}catch(e){mh.debug(e)}}if(e.mediaUrl=this.getNextMediaURL(),!e.mediaUrl)return;if(e.infoCacheUrl=e.mediaUrl,e="media-source"==Ch()?await this.updateMediaFromMediaSource(e):"unsplash-api"==Ch()?await this.updateMediaFromUnsplashAPI(e):"immich-api"==Ch()?await this.updateMediaFromImmichAPI(e):Ch().startsWith("media-entity")?await this.updateMediaFromMediaEntity(e):"iframe"==Ch()?await this.updateMediaFromMediaIframe(e):"embed"==Ch()?await this.updateMediaFromMediaEmbed(e):await this.updateMediaFromOtherSrc(e)){e.style.visibility="visible";const t="video"===e.tagName.toLowerCase();t&&await new Promise((t,n)=>{if(e.readyState>=e.HAVE_ENOUGH_DATA)t();else{const r=()=>{e.removeEventListener("canplay",r),e.removeEventListener("error",i),t()},i=()=>{e.removeEventListener("canplay",r),e.removeEventListener("error",i),n(new Error("Video failed to load"))};e.addEventListener("canplay",r),e.addEventListener("error",i)}}),"image"===Xu.image_background&&this.loadBackgroundImage(e),!t&&Xu.show_image_info&&/.*\.jpe?g$/i.test(e.mediaUrl.split("?")[0].replace(/\/*$/,""))&&this.fetchEXIFInfo(e)}}catch(t){e.updateMediaError=!0,e.style.visibility="visible",mh.error("Failed to update media from ".concat(e.mediaUrl,":"),t)}finally{this.updatingMedia=!1}return e}}setMediaDimensions(){if(!Xu.calculate_media_size)return;const e=this.getActiveMediaElement(),t=this.getActiveMediaElement(!0);if(mh.debug("Setting dimensions for media element",e),!e.mediaUrl)return;const n=t.tagName.toLowerCase();let r=0,i=0;"video"===n?(r=t.videoWidth,i=t.videoHeight):"img"===n&&(r=t.naturalWidth,i=t.naturalHeight);const o=!r||!i||r>=i?Xu.image_fit_landscape:Xu.image_fit_portrait;e.style.position="absolute",e.style.left="0px",e.style.top="0px",e.style.objectFit=o;const a=this.screensaverContainer.clientWidth,s=this.screensaverContainer.clientHeight;let c=s,l=a,u=0,h=0,d=0,f=0;if(mh.debug("Available size is ".concat(a,"x").concat(s,", media size is ").concat(r,"x").concat(i)),r&&i){const e=a/r,t=s/i,n=a-r*t,m=s-i*e;mh.debug("Diff is ".concat(n,"x").concat(m)),"contain"==o&&n=m?(mh.debug("Using available width"),l=a,c=Math.floor(i*e),d="top"==Xu.media_vertical_align?0:"bottom"==Xu.media_vertical_align?s-c:Math.floor((c-s)/-2),u=Math.max(c-s,0)):(mh.debug("Using available height"),c=s,l=Math.floor(r*t),f="left"==Xu.media_horizontal_align?0:"right"==Xu.media_horizontal_align?a-l:Math.floor((l-a)/-2),h=Math.max(l-a,0))}else"iframe"!==n&&"embed"!==n&&mh.warn("Size not available for media element",t);mh.debug("Setting dimensions: size=".concat(l,"x").concat(c," - position=").concat(f,"x").concat(d," - hidden=").concat(h,"x").concat(u)),e.style.width="".concat(l,"px"),e.style.height="".concat(c,"px"),e.style.top="".concat(d,"px"),e.style.left="".concat(f,"px"),e.style.setProperty("--hidden-width",h),e.style.setProperty("--hidden-height",u)}startPlayingActiveMedia(){const e=this.getActiveMediaElement(),t=this.getActiveMediaElement(!0);if("function"!=typeof t.play)return void this.setDisplayTime();const n=()=>{t._wp_video_playback_listeners&&(Object.entries(t._wp_video_playback_listeners).forEach(e=>{let[n,r]=e;t.removeEventListener(n,r)}),t._wp_video_playback_listeners=null)};if(t.loop=Xu.video_loop&&t.duration{if(this.getActiveMediaElement()===t){if(t.currentTime>Xu.crossfade_time){t.duration-t.currentTime<=Xu.crossfade_time&&(this.switchActiveMedia("display_time_elapsed"),n())}}else n()},r=()=>{this.getActiveMediaElement()===t&&this.switchActiveMedia("media_end"),n()},i=()=>{n()};t._wp_video_playback_listeners={timeupdate:e,ended:r,pause:i},Object.entries(t._wp_video_playback_listeners).forEach(e=>{let[n,r]=e;t.addEventListener(n,r)})}t.play().catch(r=>{n(),e===this.getActiveMediaElement()&&mh.error('Failed to play media "'.concat(e.mediaUrl,'" (src=').concat(t.src,"):"),r)})}async switchActiveMedia(e){this.afterFadeoutTimer&&clearTimeout(this.afterFadeoutTimer);const t=Ch();if(t.startsWith("media-entity")){const t=Xu.image_url.replace(/^media-entity-(image|video):\/\//,""),n=this.hass.states[t];if(!n)return void mh.error('Media entity "'.concat(t,'" not available'));if(oh!=n.state)mh.debug("Media entity ".concat(t," state has changed"));else{if("entity_update"==e)return;if("start"==e||"user_action"==e)mh.debug("Media entity ".concat(t," state unchanged, but eventType = ").concat(e));else{if(!Xu.media_entity_load_unchanged)return this.lastMediaUpdate=Date.now(),this.isPaused&&(this.mediaTimeElapsedBeforePause=0),void this.restartProgressBarAnimation();mh.debug("Media entity ".concat(t," state unchanged, but media_entity_load_unchanged = true"))}}oh=n.state}this.lastMediaUpdate=Date.now(),this.isPaused&&(this.mediaTimeElapsedBeforePause=0);const n=this.getActiveMediaElement();if(("iframe"===t||"embed"===t)&&!Xu.iframe_load_unchanged&&this.getNextMediaURL(!1)==n.mediaUrl)return;let r=0;"start"!=e&&(Xu.crossfade_time>0&&(r=Math.round(1e3*Xu.crossfade_time)),"user_action"==e&&r>250&&(r=250));const i=this.getInactiveMediaElement(),o=await this.updateMedia(i);o&&this._switchActiveMedia(o,r)}_switchActiveMedia(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.lastMediaUpdate=Date.now(),this.isPaused&&(this.mediaTimeElapsedBeforePause=0),this.imageOneContainer.style.transition="opacity ".concat(t,"ms ease-in-out"),this.imageTwoContainer.style.transition="opacity ".concat(t,"ms ease-in-out");let n=this.imageOneContainer,r=this.imageTwoContainer,i=this.imageOne,o=this.imageTwo;e==this.imageOne&&(n=this.imageTwoContainer,r=this.imageOneContainer,i=this.imageTwo,o=this.imageOne),mh.debug("Switching active media to '".concat(r.id,"'")),1!=r.style.opacity&&(r.style.opacity=1),0!=n.style.opacity&&(n.style.opacity=0),"iframe"==o.tagName.toLowerCase()&&Xu.iframe_interaction?o.style.pointerEvents="auto":o.style.pointerEvents="none",this.setMediaDataInfo(),this.setMediaDimensions(),this.setImageURLEntityState(),this.startPlayingActiveMedia(),this.restartProgressBarAnimation(),this.restartKenBurnsEffect(),"video"===i.tagName.toLowerCase()&&(this.afterFadeoutTimer=setTimeout(function(){if("video"===i.tagName.toLowerCase())try{i.pause()}catch(e){mh.debug(e)}},t))}showMessage(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;if(!this.messageContainer)return;const i=document.createElement("div");i.className="wallpanel-message ".concat(e);const o=document.createElement("div");o.className="wallpanel-message-title",o.textContent=t,i.appendChild(o);const a=document.createElement("div");a.className="wallpanel-message-text",a.textContent=n,i.appendChild(a),this.messageContainer.appendChild(i),requestAnimationFrame(()=>i.classList.add("show"));const s=this;setTimeout(()=>s.hideMessage(i),r)}hideMessage(e){e.classList.remove("show"),e.addEventListener("transitionend",()=>e.remove())}hideAllMessages(){const e=this.messageContainer.querySelectorAll(".wallpanel-message");if(!e.length)return!1;const t=this;return e.forEach(e=>t.hideMessage(e)),!0}setupScreensaver(){mh.debug("Setup screensaver"),Xu.keep_screen_on_time>0&&!this.screenWakeLock.enabled&&this.screenWakeLock.enable(),Xu.fullscreen&&!Oh()&&Ph()}async startScreensaver(){if(mh.debug("Start screensaver"),this.screensaverStartedAt=Date.now(),this.screensaverStoppedAt=null,this.currentWidth=this.screensaverContainer.clientWidth,this.currentHeight=this.screensaverContainer.clientHeight,this.setDefaultStyle(),wh(),!Sh())return mh.debug("Wallpanel not active, not starting screensaver"),this.screensaverStartedAt=null,void(this.screensaverStoppedAt=Date.now());if(this.getActiveMediaElement()==this.imageOne?(this.imageOneContainer.style.opacity=1,this.imageTwoContainer.style.opacity=0):(this.imageOneContainer.style.opacity=0,this.imageTwoContainer.style.opacity=1),this.setDisplayTime(),await this.switchActiveMedia("start"),this.setupScreensaver(),Xu.keep_screen_on_time>0){const e=this;setTimeout(function(){e.screensaverRunning()&&!e.screenWakeLock.enabled&&(mh.warning("Keep screen on will not work because the user didn't interact with the document first. https://goo.gl/xX8pDD"),e.showMessage("info","Keep screen on","Please tap the screen for a moment to keep it awake and prevent it from turning off.",15e3))},2e3)}this.lastMove=Date.now(),this.lastMediaUpdate=Date.now(),document.documentElement.style.overflow="hidden",this.isPaused=!1,this.mediaTimeElapsedBeforePause=0,this.pauseIndicator.style.display="none",this.createInfoBoxContent(),this.style.visibility="visible",this.style.opacity=1,this.style.pointerEvents="auto",this.setScreensaverEntityState(),(Xu.screensaver_start_navigation_path||Xu.screensaver_stop_close_browser_mod_popup)&&(this.screensaverStopNavigationPathTimeout=setTimeout(()=>{Xu.screensaver_start_navigation_path&&(eh=!0,function(e){(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&!e.includes("?")&&(e+=window.location.search),history.pushState(null,"",e),ah.dispatchEvent(new Event("location-changed",{bubbles:!0,cancelable:!1,composed:!0}))}(Xu.screensaver_start_navigation_path),setTimeout(()=>{eh=!1},5e3)),Xu.screensaver_stop_close_browser_mod_popup&&Eh().forEach(e=>{e.closeDialog()})},1e3*(Xu.fade_in_time+1)))}screensaverRunning(){return Boolean(this.screensaverStartedAt)&&this.screensaverStartedAt>0}stopScreensaver(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;mh.debug("Stop screensaver"),this.screensaverStartedAt=null,this.screensaverStoppedAt=Date.now(),document.documentElement.style.removeProperty("overflow"),this.screensaverStopNavigationPathTimeout&&clearTimeout(this.screensaverStopNavigationPathTimeout),this.hideAllMessages(),this.debugBox.style.pointerEvents="none",this.style.transition=e>0?"opacity ".concat(Math.round(1e3*e),"ms ease-in-out"):"",this.style.opacity=0,this.style.visibility="hidden",this.style.pointerEvents="none",this.imageOneInfo.style.pointerEvents="none",this.imageTwoInfo.style.pointerEvents="none",this.infoBoxPosX.style.animation="",this.infoBoxPosY.style.animation="",this.idleSince=Date.now(),this.screenWakeLock.enabled&&this.screenWakeLock.disable(),setTimeout(this.setScreensaverEntityState.bind(this),25)}updateScreensaver(){const e=new Date,t=e.getTime();if(this.energyCollectionUpdateEnabled&&t-this.lastEnergyCollectionUpdate>=1e3*this.energyCollectionUpdateInterval&&(this.hass.connection._energy_wallpanel&&this.hass.connection._energy_wallpanel.refresh(),this.lastEnergyCollectionUpdate=t),this.infoBoxContentCreatedDate&&this.infoBoxContentCreatedDate.getDate()!=e.getDate()&&this.createInfoBoxContent(),Xu.info_move_interval>0&&t-this.lastMove>=1e3*Xu.info_move_interval&&("random"===Xu.info_move_pattern?this.randomMove():"corners"===Xu.info_move_pattern?this.moveAroundCorners():mh.error("Unknown info move type ".concat(Xu.info_move_pattern))),Xu.black_screen_after_time>0&&t-this.screensaverStartedAt>=1e3*Xu.black_screen_after_time)mh.debug("Setting screen to black"),this.screensaverOverlay.style.background="#000000";else if(Xu.show_images){let e;e="random_but_synced"==Xu.media_order?Math.floor(t/(1e3*Xu.display_time))!=Math.floor(this.lastMediaUpdate/(1e3*Xu.display_time)):t-this.lastMediaUpdate>=1e3*this.getDisplayTime(),!this.isPaused&&e&&this.switchActiveMedia("display_time_elapsed"),t-this.lastMediaListUpdate>=1e3*Xu.media_list_update_interval&&this.updateMediaList(null,!0),"visible"!=this.imageOneContainer.style.visibility&&(this.imageOneContainer.style.visibility="visible"),"visible"!=this.imageOne.style.visibility&&(this.imageOne.style.visibility="visible"),"visible"!=this.imageTwoContainer.style.visibility&&(this.imageTwoContainer.style.visibility="visible"),"visible"!=this.imageTwo.style.visibility&&(this.imageTwo.style.visibility="visible")}else"hidden"!=this.imageOneContainer.style.visibility&&(this.imageOneContainer.style.visibility="hidden"),"hidden"!=this.imageOne.style.visibility&&(this.imageOne.style.visibility="hidden"),"hidden"!=this.imageTwoContainer.style.visibility&&(this.imageTwoContainer.style.visibility="hidden"),"hidden"!=this.imageTwo.style.visibility&&(this.imageTwo.style.visibility="hidden");if(Xu.close_more_info_dialog_time>0){const e=this.getMoreInfoDialog();if(e){const t=new Date;this.moreInfoDialogOpenedAt?t-this.moreInfoDialogOpenedAt>=1e3*Xu.close_more_info_dialog_time&&e.close():this.moreInfoDialogOpenedAt=t}else this.moreInfoDialogOpenedAt=0}if(Xu.debug){let e="";const t={};for(const e in Xu)["profiles"].includes(e)?t[e]="...":t[e]=Xu[e];if(e+='
Download log
',e+="Version: ".concat(Gu,"
"),e+="User-Agent: ".concat(navigator.userAgent,"
"),e+="Config: ".concat(JSON.stringify(t),"
"),e+="Fullscreen: ".concat(Oh(),"
"),e+="Screensaver started at: ".concat(Ku.screensaverStartedAt,"
"),e+="Screen wake lock: enabled=".concat(this.screenWakeLock.enabled," native=").concat(this.screenWakeLock.nativeWakeLockSupported," lock=").concat(this.screenWakeLock._lock," player=").concat(this.screenWakeLock._player," error=").concat(this.screenWakeLock.error,"
"),this.screenWakeLock._player){const t=this.screenWakeLock._player;e+="Screen wake lock video: readyState=".concat(t.readyState," currentTime=").concat(t.currentTime," paused=").concat(t.paused," ended=").concat(t.ended,"
")}e+="Media list size: ".concat(this.mediaList.length,"
");const n=this.getActiveMediaElement();if(n){e+="Current media: ".concat(n.mediaUrl,"
");const t=nh.get(n.infoCacheUrl);t&&(e+="Media info: ".concat(JSON.stringify(t),"
"))}this.debugBox.innerHTML!==e&&(this.debugBox.innerHTML=e,this.debugBox.querySelector("#download_log").addEventListener("click",function(e){mh.downloadMessages(),e.preventDefault()})),this.debugBox.scrollTop=this.debugBox.scrollHeight}this.screenWakeLock.enabled&&Xu.keep_screen_on_time>0&&t-this.screensaverStartedAt>=1e3*Xu.keep_screen_on_time&&(mh.info("Disable wake lock after ".concat(Xu.keep_screen_on_time," seconds")),this.screenWakeLock.disable())}switchMediaDirection(e){this.mediaListDirection=e,this.switchActiveMedia("user_action")}async nextImage(){if(this.updatingMedia)return void mh.debug("Already switching media");mh.debug("Next image");const e=this.mediaListDirection;this.mediaListDirection="forwards";try{await this.switchActiveMedia("user_action")}finally{this.mediaListDirection=e}}async previousImage(){if(this.updatingMedia)return void mh.debug("Already switching media");mh.debug("Previous image");const e=this.mediaListDirection;this.mediaListDirection="backwards";try{await this.switchActiveMedia("user_action")}finally{this.mediaListDirection=e}}togglePlayPause(){if(mh.debug("Toggle play/pause"),this.screensaverRunning())if(this.isPaused)this.isPaused=!1,this.lastMediaUpdate=Date.now()-(this.mediaTimeElapsedBeforePause||0),this.pauseIndicator.style.display="none",this.progressBar.style.animationPlayState="running",this.startPlayingActiveMedia();else{this.isPaused=!0,this.mediaTimeElapsedBeforePause=Date.now()-this.lastMediaUpdate,this.lastMediaUpdate=Date.now(),this.pauseIndicator.style.display="block",this.progressBar.style.animationPlayState="paused";const e=this.getActiveMediaElement(!0);e&&"function"==typeof e.pause&&e.pause()}}setCameraMotionDetectionEntityState(e){const t=Xu.camera_motion_detection_set_entity;t&&this.__hass.states[t]&&(mh.debug("Updating camera motion detection entity",t,e),this.__hass.callService("input_boolean",e?"turn_on":"turn_off",{entity_id:t}).then(e=>{mh.debug(e)},e=>{mh.error("Failed to set camera motion detection entity state:",e)}))}motionDetected(){Xu.camera_motion_detection_stop_screensaver&&this.screensaverRunning()&&this.stopScreensaver(Xu.fade_out_time_motion_detected),this.setCameraMotionDetectionEntityState(!0)}motionStopped(){this.setCameraMotionDetectionEntityState(!1)}handleInteractionEvent(e){const t=["click","touchend"].includes(e.type),n=Date.now();this.idleSince=n;let r="";if("touchstart"==e.type)return void(e.touches&&e.touches[0]&&(this.touchStartX=e.touches[0].clientX,this.touchStartY=e.touches[0].clientY));if("touchend"==e.type&&this.touchStartX>=0&&e.changedTouches&&e.changedTouches[0]){const t=e.changedTouches[0].clientX-this.touchStartX,n=e.changedTouches[0].clientY-this.touchStartY,i=Math.max(20,.03*window.innerWidth);t>=i&&Math.abs(t)>Math.abs(n)?r="right":t<=-i&&Math.abs(t)>Math.abs(n)&&(r="left"),this.touchStartX=-1,this.touchStartY=-1}if(!this.screensaverRunning())return this.blockEventsUntil>n&&(t&&e.preventDefault(),e.stopImmediatePropagation()),void(t&&this.setupScreensaver());if(t&&this.hideAllMessages())return void(this.blockEventsUntil=n+1e3);let i=e.clientX,o=e.clientY;if(!i&&e.changedTouches&&e.changedTouches[0]&&(i=e.changedTouches[0].clientX),!o&&e.changedTouches&&e.changedTouches[0]&&(o=e.changedTouches[0].clientY),Xu.debug&&i&&i<100&&o&&o<100)return;const a=xh();if(a){const e=[a.shadowRoot.querySelector(".content"),a.shadowRoot.querySelector("ha-dialog-header")];for(let t=0;t=n.left&&i<=n.right&&o>=n.top&&o<=n.bottom)return void mh.debug("Event on browser mod popup:",e[t])}}if(Xu.iframe_interaction&&"iframe"==Ch())return;if(Xu.content_interaction){if(this.getMoreInfoDialog())return;let e=[];e=e.concat(this.__cards||[]),e=e.concat(this.__badges||[]),e=e.concat(this.__views||[]),e.push(this.shadowRoot.getElementById("wallpanel-screensaver-info-box-content")),e.push(this.shadowRoot.getElementById("wallpanel-screensaver-fixed-info-box-content")),"analyze"==Xu.image_info_template&&(e.push(this.imageOneInfo),e.push(this.imageTwoInfo));for(let t=0;t=n.left&&i<=n.right&&o>=n.top&&o<=n.bottom)return void mh.debug("Event on:",e[t])}}let s="";if(r)s="left"==r?"forwards":"backwards",e.stopImmediatePropagation();else if(e instanceof MouseEvent||"TouchEvent"in window&&e instanceof TouchEvent){let n=0,r=0;const a=this.screensaverContainer.getBoundingClientRect();if(i&&(n=(a.right-i)/this.screensaverContainer.clientWidth),o&&(r=(a.bottom-o)/this.screensaverContainer.clientHeight),mh.debug("Event position screensaver:",i,o,a.left,a.right,a.top,a.bottom),r>1||r<0||n>1||n<0)return;if(t&&e.preventDefault(),e.stopImmediatePropagation(),Xu.touch_zone_size_next_image>0&&n<=Xu.touch_zone_size_next_image/100){if(!t)return;s="forwards"}else if(Xu.touch_zone_size_previous_image>0&&n>=(100-Xu.touch_zone_size_previous_image)/100){if(!t)return;s="backwards"}else if(n>=.4&&n<=.6&&r<=.1){const e=new Date;return t&&e-this.lastClickTime<500?(this.clickCount+=1,3==this.clickCount&&(mh.purgeMessages(),Xu.debug=!Xu.debug,this.debugBox.style.visibility=Xu.debug?"visible":"hidden",this.debugBox.style.pointerEvents=Xu.debug?"auto":"none")):this.clickCount=1,void(this.lastClickTime=e)}}s?this.updatingMedia?mh.debug("Already switching media"):(mh.debug("Switching media, direction ".concat(s)),this.mediaListDirection!=s?this.switchMediaDirection(s):this.switchActiveMedia("user_action")):t&&!Xu.stop_screensaver_on_mouse_click||(this.blockEventsUntil=n+1e3*Xu.control_reactivation_time,this.stopScreensaver(Xu.fade_out_time_interaction))}}customElements.get("wallpanel-view-container")||customElements.define("wallpanel-view-container",r),customElements.get("wallpanel-view")||customElements.define("wallpanel-view",i),Zu=document.createElement("wallpanel-view-container"),Ku=document.createElement("wallpanel-view"),Zu.appendChild(Ku),sh.shadowRoot.appendChild(Zu)}function Lh(){mh.debug("activateWallpanel");let e=Xu.hide_toolbar,t=Xu.hide_toolbar_action_icons;if(e&&!Xu.hide_toolbar_on_subviews&&Qu){const n=Ih();if(n&&n.lovelace&&n.lovelace.rawConfig&&n.lovelace.rawConfig.views)for(let r=0;r{mh.debug("Successfully exited fullscreen")},e=>{mh.debug("Failed to exit fullscreen:",e)}):document.mozCancelFullScreen?document.mozCancelFullScreen():document.msRequestFullscreen?document.msRequestFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen())}function Dh(){Ju&&Qu?(wh(),Sh()?Lh():Bh()):Bh()}function Uh(){if(mh.debug("Location changed from '".concat($u,"' to '").concat(window.location.href,"'")),window.location.href==$u)return;$u=window.location.href,Ku&&Ku.screensaverRunning&&Ku.screensaverRunning()&&Xu.stop_screensaver_on_location_change&&(eh?(eh=!1,Ku.screensaverStopNavigationPathTimeout&&clearTimeout(Ku.screensaverStopNavigationPathTimeout)):Ku.stopScreensaver());let e=null,t=null;const n=window.location.pathname.split("/");n.length>1&&(e=n[1],n.length>2&&(t=n[2]));const r=Ju&&e!=Ju;Ju=e,Qu=t,r?(mh.debug("Reset dashboard config"),Vu={},Fh(Dh)):Dh()}function Fh(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=Date.now();null===t&&(t=n);const r=(n-t)/1e3;if(ah=document.querySelector("body > home-assistant"),ah&&ah.shadowRoot&&(sh=ah.shadowRoot.querySelector("home-assistant-main")),!ah||!ah.shadowRoot||!sh)return r>=5?void mh.error("Wallpanel startup failed after ".concat(r," seconds, element home-assistant / home-assistant-main not found.")):void setTimeout(Fh,100,e,t);const i=Ih();if(!(i&&i.lovelace&&i.lovelace.config&&i.lovelace.config))return r>=5?void mh.info("No lovelace config found after ".concat(r," seconds")):void setTimeout(Fh,100,e,t);if(!customElements.get("hui-view"))return r>=5?void mh.error("Wallpanel startup failed after ".concat(r," seconds, hui-view not found.")):void setTimeout(Fh,100,e,t);if(!window.browser_mod){let n=Th(["wait_for_browser_mod_time"]).wait_for_browser_mod_time;if(void 0===n&&(n=qu.wait_for_browser_mod_time),r{let t=null;try{t=e.target.location.href}catch(e){mh.debug(e)}mh.debug("location-changed",t,e),setTimeout(Uh,20)}),window.navigation&&window.navigation.addEventListener("navigate",e=>{let t=null;try{t=e.destination.url}catch(e){mh.debug(e)}mh.debug("navigate",t,e),setTimeout(Uh,30)}),(ah.hass||ah.__hass).connection.subscribeEvents(function(e){mh.debug("lovelace_updated",e),(e.data.url_path?e.data.url_path:"lovelace")==Ju&&(ah.hass||ah.__hass).connection.sendMessagePromise({type:"lovelace/config",url_path:e.data.url_path}).then(e=>{if(Vu={},e.wallpanel)for(const t in e.wallpanel)(t in qu||t in Yu)&&(Vu[t]=e.wallpanel[t]);Dh()})},"lovelace_updated"),setTimeout(Uh,0)})}catch(e){mh.error(e.stack)}var Nh=!1,jh=function(e){return e instanceof jh?e:this instanceof jh?void(this.EXIFwrapped=e):new jh(e)},Wh=jh.Tags={36864:"ExifVersion",40960:"FlashpixVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",37121:"ComponentsConfiguration",37122:"CompressedBitsPerPixel",37500:"MakerNote",37510:"UserComment",40964:"RelatedSoundFile",36867:"DateTimeOriginal",36868:"DateTimeDigitized",37520:"SubsecTime",37521:"SubsecTimeOriginal",37522:"SubsecTimeDigitized",33434:"ExposureTime",33437:"FNumber",34850:"ExposureProgram",34852:"SpectralSensitivity",34855:"ISOSpeedRatings",34856:"OECF",37377:"ShutterSpeedValue",37378:"ApertureValue",37379:"BrightnessValue",37380:"ExposureBias",37381:"MaxApertureValue",37382:"SubjectDistance",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37396:"SubjectArea",37386:"FocalLength",41483:"FlashEnergy",41484:"SpatialFrequencyResponse",41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:"FocalPlaneResolutionUnit",41492:"SubjectLocation",41493:"ExposureIndex",41495:"SensingMethod",41728:"FileSource",41729:"SceneType",41730:"CFAPattern",41985:"CustomRendered",41986:"ExposureMode",41987:"WhiteBalance",41988:"DigitalZoomRation",41989:"FocalLengthIn35mmFilm",41990:"SceneCaptureType",41991:"GainControl",41992:"Contrast",41993:"Saturation",41994:"Sharpness",41995:"DeviceSettingDescription",41996:"SubjectDistanceRange",40965:"InteroperabilityIFDPointer",42016:"ImageUniqueID"},zh=jh.TiffTags={256:"ImageWidth",257:"ImageHeight",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer",40965:"InteroperabilityIFDPointer",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",274:"Orientation",277:"SamplesPerPixel",284:"PlanarConfiguration",530:"YCbCrSubSampling",531:"YCbCrPositioning",282:"XResolution",283:"YResolution",296:"ResolutionUnit",273:"StripOffsets",278:"RowsPerStrip",279:"StripByteCounts",513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",301:"TransferFunction",318:"WhitePoint",319:"PrimaryChromaticities",529:"YCbCrCoefficients",532:"ReferenceBlackWhite",306:"DateTime",270:"ImageDescription",271:"Make",272:"Model",305:"Software",315:"Artist",33432:"Copyright"},Hh=jh.GPSTags={0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude",5:"GPSAltitudeRef",6:"GPSAltitude",7:"GPSTimeStamp",8:"GPSSatellites",9:"GPSStatus",10:"GPSMeasureMode",11:"GPSDOP",12:"GPSSpeedRef",13:"GPSSpeed",14:"GPSTrackRef",15:"GPSTrack",16:"GPSImgDirectionRef",17:"GPSImgDirection",18:"GPSMapDatum",19:"GPSDestLatitudeRef",20:"GPSDestLatitude",21:"GPSDestLongitudeRef",22:"GPSDestLongitude",23:"GPSDestBearingRef",24:"GPSDestBearing",25:"GPSDestDistanceRef",26:"GPSDestDistance",27:"GPSProcessingMethod",28:"GPSAreaInformation",29:"GPSDateStamp",30:"GPSDifferential"},Gh=jh.IFD1Tags={256:"ImageWidth",257:"ImageHeight",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",273:"StripOffsets",274:"Orientation",277:"SamplesPerPixel",278:"RowsPerStrip",279:"StripByteCounts",282:"XResolution",283:"YResolution",284:"PlanarConfiguration",296:"ResolutionUnit",513:"JpegIFOffset",514:"JpegIFByteCount",529:"YCbCrCoefficients",530:"YCbCrSubSampling",531:"YCbCrPositioning",532:"ReferenceBlackWhite"},qh=jh.StringValues={ExposureProgram:{0:"Not defined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},SensingMethod:{1:"Not defined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},SceneType:{1:"Directly photographed"},CustomRendered:{0:"Normal process",1:"Custom process"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},GainControl:{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},SubjectDistanceRange:{0:"Unknown",1:"Macro",2:"Close view",3:"Distant view"},FileSource:{3:"DSC"},Components:{0:"",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"}};function Yh(e){return!!e.exifdata}function Vh(e,t){function n(n){var r=Xh(n);e.exifdata=r||{};var i=function(e){var t=new DataView(e);if(255!=t.getUint8(0)||216!=t.getUint8(1))return!1;var n=2,r=e.byteLength,i=function(e,t){return 56===e.getUint8(t)&&66===e.getUint8(t+1)&&73===e.getUint8(t+2)&&77===e.getUint8(t+3)&&4===e.getUint8(t+4)&&4===e.getUint8(t+5)};for(;n")+8,l=(s=s.substring(s.indexOf("4?f:t+8,a=[],c=0;c4?f:t+8,d-1);case 3:if(1==d)return e.getUint16(t+8,!i);for(o=d>2?f:t+8,a=[],c=0;c>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t+=String.fromCharCode(i);break;case 12:case 13:o=e[n++],t+=String.fromCharCode((31&i)<<6|63&o);break;case 14:o=e[n++],a=e[n++],t+=String.fromCharCode((15&i)<<12|(63&o)<<6|63&a)}return t}(r)}function ed(e,t){if("Exif"!=Kh(e,t,4))return!1;var n,r,i,o,a,s=t+6;if(18761==e.getUint16(s))n=!1;else{if(19789!=e.getUint16(s))return!1;n=!0}if(42!=e.getUint16(s+2,!n))return!1;var c=e.getUint32(s+4,!n);if(c<8)return!1;if((r=Qh(e,s,s+c,zh,n)).ExifIFDPointer)for(i in o=Qh(e,s,s+r.ExifIFDPointer,Wh,n)){switch(i){case"LightSource":case"Flash":case"MeteringMode":case"ExposureProgram":case"SensingMethod":case"SceneCaptureType":case"SceneType":case"CustomRendered":case"WhiteBalance":case"GainControl":case"Contrast":case"Saturation":case"Sharpness":case"SubjectDistanceRange":case"FileSource":o[i]=qh[i][o[i]];break;case"ExifVersion":case"FlashpixVersion":o[i]=String.fromCharCode(o[i][0],o[i][1],o[i][2],o[i][3]);break;case"ComponentsConfiguration":o[i]=qh.Components[o[i][0]]+qh.Components[o[i][1]]+qh.Components[o[i][2]]+qh.Components[o[i][3]]}r[i]=o[i]}if(r.GPSInfoIFDPointer)for(i in a=Qh(e,s,s+r.GPSInfoIFDPointer,Hh,n)){if("GPSVersionID"==i)try{a[i]=a[i][0]+"."+a[i][1]+"."+a[i][2]+"."+a[i][3]}catch(e){}r[i]=a[i]}return r.thumbnail=function(e,t,n,r){var i=function(e,t,n){var r=e.getUint16(t,!n);return e.getUint32(t+2+12*r,!n)}(e,t+n,r);if(!i)return{};if(i>e.byteLength)return{};var o=Qh(e,t,t+i,Gh,r);if(o.Compression)switch(o.Compression){case 6:if(o.JpegIFOffset&&o.JpegIFByteCount){var a=t+o.JpegIFOffset,s=o.JpegIFByteCount;o.blob=new Blob([new Uint8Array(e.buffer,a,s)],{type:"image/jpeg"})}break;case 1:mh.log("Thumbnail image format is TIFF, which is not implemented.");break;default:mh.log("Unknown thumbnail image format '%s'",o.Compression)}else 2==o.PhotometricInterpretation&&mh.log("Thumbnail image format is RGB, which is not implemented.");return o}(e,s,c,n),r}function td(e){var t={};if(1==e.nodeType){if(e.attributes.length>0){t["@attributes"]={};for(var n=0;n0)for(var n=0;ngD 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

WPO~U$Z9A`*`%tJ ztQu9H%x0w4TNJ07HO14GlUGdHJ&-K|P?5P^>~6#}ioKjXSfW*4OtyGRf2g4cB&KtR zLCJ~zC4+(^{W}ysdiDN8a&%OSd4#RJyWeZY-JSiOl&U)KfjUXIx1AsH@6Am!`pR$j z0S-{Z_(0`XYiH>=)k_cQpE*k>p~BjsG0yl9|1l0Vvknf^7N8hT1NmZD0Dd0xFU?A5 zIbD%tFcVtN$uH?IfXAu^GGsl5l92Q}=_415$$lugunj0@KpEgu=p(&CRKCjKlEe+G SRnr~)xBm-4F{4X~LjwSNS?JvW diff --git a/www/community/simple-thermostat/simple-thermostat.debug.js b/www/community/simple-thermostat/simple-thermostat.debug.js index c5134dcd..e92be623 100644 --- a/www/community/simple-thermostat/simple-thermostat.debug.js +++ b/www/community/simple-thermostat/simple-thermostat.debug.js @@ -1,5 +1,5 @@ (function() { - const env = {"DEBUG":true,"BUILD_TIME":"2026-08-05, 05:24 p.m."}; + const env = {"DEBUG":true,"BUILD_TIME":"2026-08-23, 12:22 p.m."}; try { if (process) { process.env = Object.assign({}, process.env); @@ -11,7 +11,7 @@ })(); var name = "simple-thermostat"; -var version = "4.2.0"; +var version = "4.3.0"; function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; @@ -138,14 +138,14 @@ ha-card { padding-bottom: calc(var(--st-spacing, var(--st-default-spacing)) * 2); - --auto-color: green; - --heat_cool-color: springgreen; - --cool-color: #2b9af9; - --heat-color: #ff8100; + --auto-color: var(--state-climate-auto-color, green); + --heat_cool-color: var(--state-climate-heat-cool-color, #efbd07); + --cool-color: var(--state-climate-cool-color, #2b9af9); + --heat-color: var(--state-climate-heat-color, #ff8100); --manual-color: #44739e; --on-color: var(--primary-color); - --off-color: #8a8a8a; - --dry-color: #efbd07; + --off-color: var(--state-inactive-color, #8a8a8a); + --dry-color: var(--state-climate-dry-color, #efbd07); --st-mode-surface-background: color-mix( in srgb, var(--primary-text-color) 14%, @@ -434,6 +434,66 @@ ha-card.loading { justify-self: start; text-align: left; } +.entity-action { + grid-column: 1 / -1; + width: 100%; + min-width: 0; + min-height: 28px; + border: 0; + border-radius: var(--st-mode-border-radius, var(--st-default-mode-radius)); + padding: var(--st-spacing, var(--st-default-spacing)) + calc(var(--st-spacing, var(--st-default-spacing)) * 2); + display: inline-flex; + align-items: center; + justify-content: center; + gap: calc(var(--st-spacing, var(--st-default-spacing)) * 1.5); + color: var(--secondary-text-color); + background: var(--st-mode-background, var(--st-mode-surface-background)); + font: inherit; + line-height: 1.2; + cursor: pointer; + white-space: nowrap; + overflow: hidden; + transition: + background-color + var(--st-mode-transition, var(--st-default-mode-transition)), color var(--st-mode-transition, var(--st-default-mode-transition)), box-shadow var(--st-mode-transition, var(--st-default-mode-transition)), filter var(--st-mode-transition, var(--st-default-mode-transition)); +} +.entity-action ha-icon { + --mdc-icon-size: var(--st-entity-action-icon-size, 20px); + width: 20px; + width: var(--st-entity-action-icon-size, 20px); + height: 20px; + height: var(--st-entity-action-icon-size, 20px); + flex: 0 0 auto; +} +.entity-action__label, +.entity-action__state { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; +} +.entity-action__state { + color: var(--secondary-text-color); + font-size: 0.9em; +} +.entity-action.display-chip { + width: auto; + justify-self: start; + border-radius: 999px; + padding-left: calc(var(--st-spacing, var(--st-default-spacing)) * 2.5); + padding-right: calc(var(--st-spacing, var(--st-default-spacing)) * 2.5); +} +.entity-action.active, +.entity-action.state-on { + color: var(--st-mode-active-color, var(--text-primary-color)); + background: var( + --st-mode-active-background, + var(--st-toggle-color, var(--primary-color)) + ); +} +.entity-action:hover { + filter: brightness(1.08); +} .entities:empty { display: none; @@ -557,6 +617,7 @@ ha-card.embedded .body { ); will-change: opacity, transform; } + @supports (color: color-mix(in lch, red, blue)) { .header__icon-wrap::before { background: radial-gradient( @@ -903,6 +964,9 @@ ha-card.cooling .header__icon-wrap::before { .modes.preset { flex-wrap: nowrap; } +.modes.footer { + flex-wrap: nowrap; +} .mode-title { padding: 0 16px; align-self: center; @@ -947,6 +1011,11 @@ ha-card.cooling .header__icon-wrap::before { var(--st-mode-color, var(--primary-color)) 68%, var(--primary-text-color) 32% ); + --st-mode-computed-active-background: var( + --st-mode-color, + var(--primary-color) + ); + --st-mode-computed-active-accent-color: var(--st-mode-accent-color); --st-mode-active-icon-color: color-mix( in srgb, var(--st-mode-color, var(--primary-color)) 42%, @@ -957,7 +1026,6 @@ ha-card.cooling .header__icon-wrap::before { currentColor 50%, var(--st-mode-color, var(--primary-color)) 50% ); - --st-mode-active-accent-color: var(--st-mode-accent-color); --st-mode-neutral-hover-background: color-mix( in srgb, var(--st-mode-background, var(--secondary-background-color)) 88%, @@ -1015,13 +1083,16 @@ ha-card.cooling .header__icon-wrap::before { .mode-item.active,.mode-item.active:hover { background: var( --st-mode-active-background, - var(--st-mode-color, var(--primary-color)) + var(--st-mode-computed-active-background) ); color: var(--st-mode-active-color, var(--text-primary-color)); box-shadow: inset 0 -2px 0 var( --st-mode-active-accent-color, - color-mix(in srgb, var(--text-primary-color) 72%, transparent) + var( + --st-mode-computed-active-accent-color, + color-mix(in srgb, var(--text-primary-color) 72%, transparent) + ) ); filter: none; transform: none; @@ -1045,7 +1116,10 @@ ha-card.cooling .header__icon-wrap::before { .mode-item.active::after { background: var( --st-mode-active-accent-color, - color-mix(in srgb, var(--text-primary-color) 72%, transparent) + var( + --st-mode-computed-active-accent-color, + color-mix(in srgb, var(--text-primary-color) 72%, transparent) + ) ); opacity: 0.64; opacity: var(--st-mode-active-accent-opacity, 0.64); @@ -1064,6 +1138,10 @@ ha-card:not(.standard-visuals) .mode-item.active .mode-icon { line-height: 1; } +.mode-label-line { + display: block; +} + ha-card:not(.standard-visuals) .header__toggle.on .toggle-label.clickable, ha-card:not(.standard-visuals) .entity-heading.toggle-entity.state-on ha-icon { color: var(--st-toggle-color, var(--primary-color)); @@ -1212,7 +1290,7 @@ ha-card:not(.standard-visuals) ha-card.standard-visuals .mode-item.active:hover { background: var( --st-mode-active-background, - var(--st-mode-color, var(--primary-color)) + var(--st-mode-computed-active-background) ); color: var(--st-mode-active-color, var(--text-primary-color)); } @@ -1283,11 +1361,42 @@ ha-card.drying { padding-bottom: var(--st-spacing, var(--st-default-spacing)); } -.modes.hvac.sparse .mode-label, -.modes.state.sparse .mode-label { +.modes.hvac.sparse .mode-item:not(.label-stacked):not(.label-column) .mode-label, +.modes.state.sparse .mode-item:not(.label-stacked):not(.label-column) .mode-label { white-space: nowrap; } +.modes.hvac.sparse .mode-item.label-stacked, +.modes.state.sparse .mode-item.label-stacked { + align-items: center; +} + +.modes.hvac.sparse .mode-item.label-stacked .mode-label, +.modes.state.sparse .mode-item.label-stacked .mode-label { + white-space: normal; + line-height: 1.1; + text-align: left; +} + +.modes.hvac.sparse .mode-item.label-stacked .mode-label-line + .mode-label-line, +.modes.state.sparse .mode-item.label-stacked .mode-label-line + .mode-label-line { + margin-top: 1px; +} + +.modes.hvac.sparse .mode-item.label-column, +.modes.state.sparse .mode-item.label-column { + flex-direction: column; + gap: 4px; + min-height: calc(var(--st-control-icon-size) + 24px); +} + +.modes.hvac.sparse .mode-item.label-column .mode-label, +.modes.state.sparse .mode-item.label-column .mode-label { + white-space: normal; + text-align: center; + line-height: 1.1; +} + @media (max-width: 560px) { .modes.hvac .mode-item, .modes.state .mode-item { @@ -1304,6 +1413,12 @@ ha-card.drying { gap: var(--st-sparse-control-gap, 2px); min-width: 0; } + + ha-card:not(.standard-visuals) .modes.hvac.sparse .mode-item.label-column, + ha-card:not(.standard-visuals) .modes.state.sparse .mode-item.label-column { + flex-direction: column; + gap: 4px; + } } .modes.dense { display: grid; @@ -1406,7 +1521,8 @@ ha-card.drying { .modes.swing_horizontal .mode-item, .modes.swing_vertical .mode-item, .modes.vane_horizontal .mode-item, -.modes.vane_vertical .mode-item { +.modes.vane_vertical .mode-item, +.modes.footer .mode-item { --st-mode-min-width: 58px; flex-direction: row; align-items: center; @@ -1590,7 +1706,8 @@ ha-card.standard-visuals .modes.swing, ha-card.standard-visuals .modes.swing_horizontal, ha-card.standard-visuals .modes.swing_vertical, ha-card.standard-visuals .modes.vane_horizontal, -ha-card.standard-visuals .modes.vane_vertical { +ha-card.standard-visuals .modes.vane_vertical, +ha-card.standard-visuals .modes.footer { display: grid; grid-template-columns: none; grid-auto-columns: minmax(0, 1fr); @@ -1611,7 +1728,8 @@ ha-card.standard-visuals .modes.swing .mode-item, ha-card.standard-visuals .modes.swing_horizontal .mode-item, ha-card.standard-visuals .modes.swing_vertical .mode-item, ha-card.standard-visuals .modes.vane_horizontal .mode-item, -ha-card.standard-visuals .modes.vane_vertical .mode-item { +ha-card.standard-visuals .modes.vane_vertical .mode-item, +ha-card.standard-visuals .modes.footer .mode-item { display: flex; flex: initial; flex-direction: column; @@ -1667,72 +1785,65 @@ ha-card.standard-visuals .mode-item.active { ha-card .mode-item.active.off, ha-card .mode-item.active.off:hover { - background: var(--off-color); - --st-mode-active-background: var(--off-color); + --st-mode-computed-active-background: var(--off-color); } ha-card .mode-item.active.heat, ha-card .mode-item.active.heat:hover { - background: var(--heat-color); - --st-mode-active-background: var(--heat-color); + --st-mode-computed-active-background: var(--heat-color); } ha-card .mode-item.active.cool, ha-card .mode-item.active.cool:hover { - background: var(--cool-color); - --st-mode-active-background: var(--cool-color); + --st-mode-computed-active-background: var(--cool-color); } ha-card .mode-item.active.heat_cool, ha-card .mode-item.active.heat_cool:hover { - background: var(--heat_cool-color); - --st-mode-active-background: var(--heat_cool-color); + --st-mode-computed-active-background: var(--heat_cool-color); } ha-card .mode-item.active.auto, ha-card .mode-item.active.auto:hover { - background: var(--auto-color); - --st-mode-active-background: var(--auto-color); + --st-mode-computed-active-background: var(--auto-color); } ha-card .mode-item.active.dry, ha-card .mode-item.active.dry:hover { - background: var(--dry-color); - --st-mode-active-background: var(--dry-color); + --st-mode-computed-active-background: var(--dry-color); } ha-card .mode-item.active.fan_only, ha-card .mode-item.active.fan_only:hover { - background: var(--fan_only-color); - --st-mode-active-background: var(--fan_only-color); + --st-mode-computed-active-background: var(--fan_only-color); } ha-card.standard-visuals .mode-item.active.off { - background: var(--off-color); + --st-mode-computed-active-background: var(--off-color); } ha-card.standard-visuals .mode-item.active.heat { - background: var(--heat-color); + --st-mode-computed-active-background: var(--heat-color); } ha-card.standard-visuals .mode-item.active.cool { - background: var(--cool-color); + --st-mode-computed-active-background: var(--cool-color); } ha-card.standard-visuals .mode-item.active.heat_cool { - background: var(--heat_cool-color); + --st-mode-computed-active-background: var(--heat_cool-color); } ha-card.standard-visuals .mode-item.active.auto { - background: var(--auto-color); + --st-mode-computed-active-background: var(--auto-color); } ha-card.standard-visuals .mode-item.active.dry { - background: var(--dry-color); + --st-mode-computed-active-background: var(--dry-color); } ha-card.standard-visuals .mode-item.active.fan_only { - background: var(--fan_only-color); + --st-mode-computed-active-background: var(--fan_only-color); } ha-card.standard-visuals .mode-item:active, @@ -1904,6 +2015,10 @@ function normalizeConfig(config) { layout: config.layout ? { ...config.layout } : undefined, }; const legacyVersion = normalized.version === 3; + if (legacyVersion && + typeof normalized.enhanced_visuals === 'undefined') { + normalized.enhanced_visuals = false; + } if (legacyVersion && !normalized.layout?.step) { normalized.layout = { ...(normalized.layout ?? {}), @@ -2202,9 +2317,13 @@ const LABELS = { 'label.state': 'State label', 'label.setpoint': 'Target label', 'layout.entities.type': 'Entity row layout', + 'layout.entities.display': 'Entity display', 'layout.entities.labels': 'Show entity row labels', 'layout.entities.separator': 'Show entity label separator', 'layout.entities.alignment': 'Entity label alignment', + 'footer.entity': 'Footer toggle entity', + 'footer.name': 'Footer toggle label', + 'footer.icon': 'Footer toggle icon', enhanced_visuals: 'Enhanced visuals', 'tap_action.action': 'Tap action', 'hold_action.action': 'Hold action', @@ -2236,6 +2355,18 @@ const ENTITY_LAYOUT_OPTIONS = [ { value: 'table', label: 'Table' }, { value: 'list', label: 'List' }, ]; +const ENTITY_DISPLAY_OPTIONS = [ + { value: 'row', label: 'Rows' }, + { value: 'auto', label: 'Auto' }, + { value: 'button', label: 'Buttons' }, + { value: 'toggle', label: 'Toggles' }, + { value: 'chip', label: 'Chips' }, +]; +const ENTITY_DISPLAY_SELECT_OPTIONS = [ + { value: '', label: 'Default' }, + ...ENTITY_DISPLAY_OPTIONS, +]; +const ENTITY_DISPLAY_VALUES = ENTITY_DISPLAY_OPTIONS.map((option) => option.value); const ENTITY_ALIGNMENT_OPTIONS = [ { value: 'right', label: 'Right' }, { value: 'left', label: 'Left' }, @@ -2251,6 +2382,7 @@ const DIRECT_FORM_PATHS = [ 'layout.mode.icons', 'layout.mode.headings', 'layout.entities.type', + 'layout.entities.display', 'layout.entities.labels', 'layout.entities.separator', 'layout.entities.alignment', @@ -2310,6 +2442,16 @@ function deleteNested(obj, path) { } delete target[parts[0]]; } +function getSelectValue(ev) { + const target = ev.target; + const detail = ev.detail; + return (detail?.value ?? + detail?.item?.value ?? + target.selected?.value ?? + target.selected?.getAttribute?.('value') ?? + target.value ?? + ''); +} function isModeEnabled(config, type, adapter) { const control = config.control; if (control === false) @@ -2596,6 +2738,15 @@ function buildSchema(config, hass) { }, }, }, + { + name: 'layout.entities.display', + selector: { + select: { + mode: 'dropdown', + options: ENTITY_DISPLAY_SELECT_OPTIONS, + }, + }, + }, { name: 'layout.entities.labels', selector: { boolean: {} } }, { name: 'layout.entities.separator', selector: { boolean: {} } }, { @@ -2764,6 +2915,7 @@ class SimpleThermostatEditor extends i$1 { 'label.state': this.config.label?.state ?? '', 'label.setpoint': this.config.label?.setpoint ?? '', 'layout.entities.type': this.config.layout?.entities?.type ?? 'table', + 'layout.entities.display': this.config.layout?.entities?.display ?? '', 'layout.entities.labels': this.config.layout?.entities?.labels !== false, 'layout.entities.separator': this.config.layout?.entities?.separator !== false, 'layout.entities.alignment': this.config.layout?.entities?.alignment ?? 'right', @@ -2874,6 +3026,9 @@ class SimpleThermostatEditor extends i$1 { _getExtraEntities() { return Array.isArray(this.config.entities) ? this.config.entities : []; } + _getFooterRows() { + return Array.isArray(this.config.footer) ? this.config.footer : []; + } _commitEntityRows(entities) { const copy = cloneDeep(this.config); if (entities.length > 0) @@ -2894,6 +3049,16 @@ class SimpleThermostatEditor extends i$1 { if (entityIndex !== index) return entity; const next = { ...entity }; + if (field === 'display') { + if (typeof value === 'string' && + ENTITY_DISPLAY_VALUES.includes(value)) { + next.display = value; + } + else { + delete next.display; + } + return next; + } if (typeof value === 'string' && value) next[field] = value; else @@ -2902,6 +3067,34 @@ class SimpleThermostatEditor extends i$1 { }); this._commitEntityRows(entities); } + _commitFooterRows(footer) { + const copy = cloneDeep(this.config); + if (footer.length > 0) + copy.footer = footer; + else + delete copy.footer; + this.config = copy; + fireEvent(this, 'config-changed', { config: copy }); + } + _addFooterRow() { + this._commitFooterRows([...this._getFooterRows(), { entity: '' }]); + } + _removeFooterRow(index) { + this._commitFooterRows(this._getFooterRows().filter((_, footerIndex) => footerIndex !== index)); + } + _updateFooterRow(index, field, value) { + const footer = this._getFooterRows().map((row, footerIndex) => { + if (footerIndex !== index) + return row; + const next = { ...row }; + if (typeof value === 'string' && value) + next[field] = value; + else + delete next[field]; + return next; + }); + this._commitFooterRows(footer); + } _renderExtraEntityRows() { const entities = this._getExtraEntities(); return b ` @@ -2936,6 +3129,21 @@ class SimpleThermostatEditor extends i$1 { .value=${entity.icon ?? ''} @value-changed=${(ev) => this._updateEntityRow(index, 'icon', ev.detail.value)} > + this._updateEntityRow(index, 'display', getSelectValue(ev))} + @selected=${(ev) => this._updateEntityRow(index, 'display', getSelectValue(ev))} + @change=${(ev) => this._updateEntityRow(index, 'display', getSelectValue(ev))} + > + Default + ${ENTITY_DISPLAY_OPTIONS.map((option) => b ` + + ${option.label} + + `)} + this._removeEntityRow(index)}> Remove @@ -2944,6 +3152,48 @@ class SimpleThermostatEditor extends i$1 { `; } + _renderFooterRows() { + const footer = this._getFooterRows(); + return b ` +

+
+
+

Footer controls

+

Add switch-style controls shown below the mode rows.

+
+ Add control +
+ + ${footer.length === 0 + ? b `

+ No footer controls configured. +

` + : footer.map((row, index) => b ` +
+ this._updateFooterRow(index, 'entity', ev.detail.value)} + > + this._updateFooterRow(index, 'name', ev.target.value)} + > + this._updateFooterRow(index, 'icon', ev.detail.value)} + > + this._removeFooterRow(index)}> + Remove + +
+ `)} +
+ `; + } render() { if (!this.hass || !this.config) return b ``; @@ -2958,6 +3208,7 @@ class SimpleThermostatEditor extends i$1 { > ${this._renderExtraEntityRows()} + ${this._renderFooterRows()}
+
+
+ Selector style + Choose the normal arrow/menu header or visible tab + buttons. +
+
+ ${this.renderSelectorStyleOption('Header navigation', 'header', (selector.style ?? DEFAULT_SELECTOR$1.style) === 'header')} + ${this.renderSelectorStyleOption('Tabbed buttons', 'tabs', selector.style === 'tabs')} +
+
${this.renderOption('Follow active device', 'Switch to a card when its mode or on/off activity changes.', this.isAutoSelectEnabled(), (checked) => this.updateAutoSelect(checked))} ${this.renderOption('Remember selection', 'Keep the last selected card after the dashboard reloads.', this.config.remember_selection !== false, (checked) => this.updateRememberSelection(checked))} ${this.renderOption('Show icons', 'Show each card icon in the selector and menu.', selector.icons !== false, (checked) => this.updateSelector('icons', checked))} @@ -3698,6 +4004,7 @@ function parseFaults(config, hass) { } const DEFAULT_SELECTOR = { + style: 'header', icons: true, names: true, states: false, @@ -3707,7 +4014,7 @@ const DEFAULT_AUTO_SELECT_MANUAL_PAUSE_MS = 30000; function getDomain(entityId) { return entityId.split('.')[0]; } -function safeClass$2(value) { +function safeClass$3(value) { return typeof value === 'string' ? value.replace(/[^a-z0-9_-]/gi, '') : ''; } function getCardStyle$1(entityDomain, attributes = {}) { @@ -3807,6 +4114,171 @@ class SimpleThermostatGroup extends i$1 { transform: translateY(var(--st-group-header-top-buffer, 2px)); } + .group-selector.tabs { + display: block; + padding: calc(var(--st-spacing, var(--st-default-spacing, 4px)) * 3) + calc(var(--st-spacing, var(--st-default-spacing, 4px)) * 3) 0; + height: auto; + transform: translateY(var(--st-group-header-top-buffer, 2px)); + } + + .group-tabs { + display: grid; + grid-template-columns: repeat( + auto-fit, + minmax(var(--st-group-tab-min-width, 120px), 1fr) + ); + gap: calc(var(--st-spacing, var(--st-default-spacing, 4px)) * 2); + min-width: 0; + } + + .group-tab { + appearance: none; + border: 0; + border-radius: var(--st-group-tab-radius, 10px); + min-width: 0; + min-height: var(--st-group-tab-height, 46px); + padding: 7px 12px; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + color: var(--st-group-tab-color, var(--primary-text-color)); + background: var( + --st-group-tab-background, + color-mix(in srgb, var(--primary-text-color) 12%, transparent) + ); + font: inherit; + font-weight: 600; + line-height: 1.15; + cursor: pointer; + transition: + background 160ms var(--st-motion-ease, ease), + color 160ms var(--st-motion-ease, ease), + opacity 160ms var(--st-motion-ease, ease); + } + + .group-tab:hover, + .group-tab:focus-visible { + background: var( + --st-group-tab-hover-background, + color-mix(in srgb, currentColor 22%, transparent) + ); + } + + .group-tab:focus-visible { + outline: 2px solid var(--primary-color); + outline-offset: 2px; + } + + .group-tab.selected { + color: var(--st-group-tab-selected-color, #fff); + background: var( + --st-group-tab-selected-background, + var(--primary-color) + ); + } + + .group-tab ha-icon { + --mdc-icon-size: 21px; + --iron-icon-width: 21px; + --iron-icon-height: 21px; + flex: 0 0 auto; + } + + .group-tab-labels { + display: grid; + min-width: 0; + gap: 1px; + text-align: center; + } + + .group-tab-name, + .group-tab-state { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .group-tab-state { + color: currentColor; + opacity: 0.78; + font-size: var(--ha-font-size-xs, 11px); + font-weight: 500; + } + + .group-tab.state-off { + --st-group-tab-background: color-mix( + in srgb, + var(--state-icon-color, var(--secondary-text-color)) 20%, + transparent + ); + --st-group-tab-color: var(--secondary-text-color); + } + + .group-tab.cooling, + .group-tab.state-cool { + --st-group-tab-background: color-mix( + in srgb, + var(--state-climate-cool-color, var(--cool-color, #2b9af9)) 22%, + transparent + ); + --st-group-tab-color: var( + --state-climate-cool-color, + var(--cool-color, #2b9af9) + ); + --st-group-tab-selected-background: var( + --state-climate-cool-color, + var(--cool-color, #2b9af9) + ); + } + + .group-tab.heating, + .group-tab.state-heat { + --st-group-tab-background: color-mix( + in srgb, + var(--state-climate-heat-color, var(--heat-color, #ff8100)) 22%, + transparent + ); + --st-group-tab-color: var( + --state-climate-heat-color, + var(--heat-color, #ff8100) + ); + --st-group-tab-selected-background: var( + --state-climate-heat-color, + var(--heat-color, #ff8100) + ); + } + + .group-tab.drying, + .group-tab.state-dry { + --st-group-tab-background: color-mix( + in srgb, + var(--state-climate-dry-color, var(--dry-color, #efbd07)) 24%, + transparent + ); + --st-group-tab-color: var( + --state-climate-dry-color, + var(--dry-color, #efbd07) + ); + --st-group-tab-selected-background: var( + --state-climate-dry-color, + var(--dry-color, #efbd07) + ); + } + + .group-tab.domain-fan:not(.state-off), + .group-tab.humidifying { + --st-group-tab-background: color-mix( + in srgb, + var(--primary-color) 22%, + transparent + ); + --st-group-tab-color: var(--primary-color); + --st-group-tab-selected-background: var(--primary-color); + } + .group-title { flex: 1 1 auto; min-width: 0; @@ -4444,13 +4916,27 @@ class SimpleThermostatGroup extends i$1 { const classes = [ 'group-card', 'group-shell', - `domain-${safeClass$2(domain)}`, - `state-${safeClass$2(state.state)}`, - safeClass$2(action), - unavailable && safeClass$2(state.state), + `domain-${safeClass$3(domain)}`, + `state-${safeClass$3(state.state)}`, + safeClass$3(action), + unavailable && safeClass$3(state.state), ].filter(Boolean); return classes.join(' '); } + getTargetClasses(target) { + const state = this.hass?.states?.[target.entity]; + if (!state) + return ''; + const domain = getDomain(state.entity_id); + const action = getEntityAction(state); + return [ + `domain-${safeClass$3(domain)}`, + `state-${safeClass$3(state.state)}`, + safeClass$3(action), + ] + .filter(Boolean) + .join(' '); + } getGroupCardStyle() { const state = this.getSelectedState(); if (!state) @@ -5069,8 +5555,8 @@ class SimpleThermostatGroup extends i$1 { : header.icon; if (!icon) return A; - const actionClass = action && action !== state.state ? ` ${safeClass$2(action)}` : ''; - const stateClass = safeClass$2(state.state); + const actionClass = action && action !== state.state ? ` ${safeClass$3(action)}` : ''; + const stateClass = safeClass$3(state.state); return b ` +
+ ${this.targets.map((target) => { + const label = this.getTargetLabel(target); + const icon = this.getTargetIcon(target); + const selected = target.entity === this.selectedEntity; + const stateLabel = selector.states + ? this.getTargetStateLabel(target) + : ''; + return b ` + + `; + })} +
+
+ `; + } renderSelector() { + if (this.config?.selector?.style === 'tabs') { + return this.renderTabSelector(); + } const target = this.getSelectedTarget(); const label = this.getTargetLabel(target); return b ` @@ -5309,7 +5854,7 @@ function formatNumber(number, { decimals = 1, fallback = 'N/A', locale } = {}) { }).format(value); } -function safeClass$1(value) { +function safeClass$2(value) { return String(value ?? '').replace(/[^a-z0-9_-]/gi, ''); } const SEMANTIC_KIND_PATTERNS = [ @@ -5366,7 +5911,7 @@ function getKindFromText(text, hass) { function getKindFromIcon(icon) { if (typeof icon !== 'string' || !icon) return ''; - const kind = safeClass$1(icon.replace(/^[a-z]+:/, '')); + const kind = safeClass$2(icon.replace(/^[a-z]+:/, '')); const semanticKind = getKindFromText(kind.replace(/-/g, ' ')); if (semanticKind) return semanticKind; @@ -5603,7 +6148,7 @@ function safeCssValue(value) { return String(value ?? '') .replace(/url\s*\([^)]*\)/gi, '') .replace(/expression\s*\([^)]*\)/gi, '') - .replace(/javascript:/gi, '') + .replace(/(?:javascript|data|vbscript)\s*:/gi, '') .replace(/[<>"'`;{}]/g, ''); } squirrelly_minExports.filters.define('icon', (icon) => ``); @@ -5790,6 +6335,8 @@ const TOGGLE_DOMAINS = [ 'light', 'switch', ]; +const BUTTON_DOMAINS = ['button', 'input_button', 'script', 'scene']; +const DISPLAY_VALUES = ['row', 'auto', 'button', 'toggle', 'chip']; function toggleEntity(hass, entityId, checked) { const service = `turn_${checked ? 'on' : 'off'}`; if (typeof hass.performAction === 'function') { @@ -5802,9 +6349,28 @@ function toggleEntity(hass, entityId, checked) { hass.callService('homeassistant', service, { entity_id: entityId }); } } -function safeClass(value) { +function safeClass$1(value) { return String(value ?? '').replace(/[^a-z0-9_-]/gi, ''); } +function callEntityAction(hass, entityId, domain) { + if (TOGGLE_DOMAINS.includes(domain)) { + const checked = hass.states?.[entityId]?.state !== 'on'; + toggleEntity(hass, entityId, checked); + return; + } + const service = domain === 'button' || domain === 'input_button' + ? 'press' + : 'turn_on'; + if (typeof hass.performAction === 'function') { + hass.performAction({ + action: `${domain}.${service}`, + data: { entity_id: entityId }, + }); + } + else { + hass.callService(domain, service, { entity_id: entityId }); + } +} function renderIconTemplate({ icon, state, attribute, hass, config, variables, localize, }) { if (typeof icon !== 'string' || !icon.includes('{{') || @@ -5839,10 +6405,36 @@ function renderHeadingTemplate({ heading, state, attribute, hass, config, variab localize, }).trim(); } +function resolveDisplay(display, domain) { + if (typeof display !== 'string' || !DISPLAY_VALUES.includes(display)) { + return 'row'; + } + if (display !== 'auto') + return display; + if (TOGGLE_DOMAINS.includes(domain)) + return 'toggle'; + if (BUTTON_DOMAINS.includes(domain)) + return 'button'; + return 'chip'; +} +function getEntityDisplayValue({ state, domain, hass, localize, }) { + if (domain === 'timer') { + return b ``; + } + if (typeof hass.formatEntityState === 'function') { + return hass.formatEntityState(state); + } + return localize + ? localize(state.state, `component.${domain}.state._.`) + : String(state.state); +} function renderInfoItem({ hide = false, hass, state, details, localize, openEntityPopover, }) { if (hide || typeof state === 'undefined') return; - const { type, heading, icon, unit, decimals, tooltip: configuredTooltip, entity, template, attribute, variables, config, separator = true, } = details; + const { type, heading, icon, unit, decimals, tooltip: configuredTooltip, entity, template, attribute, variables, config, separator = true, display, } = details; const renderedIcon = renderIconTemplate({ icon, state, @@ -5873,6 +6465,7 @@ function renderInfoItem({ hide = false, hass, state, details, localize, openEnti let entityDomain = ''; let entityState = ''; let isToggleEntity = false; + let usesCompactEntityDisplay = false; let valueCell; if (template && typeof state === 'object') { const value = renderTemplate({ @@ -5904,10 +6497,12 @@ function renderInfoItem({ hide = false, hass, state, details, localize, openEnti entityDomain = domain; entityState = state.state; isToggleEntity = TOGGLE_DOMAINS.includes(domain); + const displayMode = resolveDisplay(display, domain); const entityClasses = [ isToggleEntity && 'toggle-entity', - entityDomain && `domain-${safeClass(entityDomain)}`, - entityState && `state-${safeClass(entityState)}`, + entityDomain && `domain-${safeClass$1(entityDomain)}`, + entityState && `state-${safeClass$1(entityState)}`, + displayMode !== 'row' && `display-${displayMode}`, isToggleEntity && getToggleKindClass(getToggleKind({ icon: renderedIcon || state.attributes?.icon, @@ -5918,7 +6513,45 @@ function renderInfoItem({ hide = false, hass, state, details, localize, openEnti ] .filter(Boolean) .join(' '); - if (domain === 'timer') { + if (displayMode !== 'row') { + usesCompactEntityDisplay = true; + const supportsAction = isToggleEntity || BUTTON_DOMAINS.includes(domain); + const active = state.state === 'on'; + const actionLabel = typeof heading === 'string' + ? heading + : state.attributes?.friendly_name || state.entity_id; + const fallbackIcon = renderedIcon || state.attributes?.icon || (isToggleEntity + ? 'mdi:toggle-switch' + : BUTTON_DOMAINS.includes(domain) + ? 'mdi:gesture-tap-button' + : undefined); + const displayValue = getEntityDisplayValue({ + state, + domain, + hass, + localize, + }); + valueCell = b ` + + `; + } + else if (domain === 'timer') { valueCell = b `
`; } + if (usesCompactEntityDisplay) { + return valueCell; + } if (heading === false) { return valueCell; } @@ -6006,8 +6642,8 @@ function renderInfoItem({ hide = false, hass, state, details, localize, openEnti 'entity-heading', canOpenEntity && 'clickable', isToggleEntity && 'toggle-entity', - entityDomain && `domain-${safeClass(entityDomain)}`, - entityState && `state-${safeClass(entityState)}`, + entityDomain && `domain-${safeClass$1(entityDomain)}`, + entityState && `state-${safeClass$1(entityState)}`, isToggleEntity && getToggleKindClass(getToggleKind({ icon: renderedIcon || state?.attributes?.icon, @@ -6108,7 +6744,7 @@ function renderEntities({ _hide, entity, unit, hass, entities, config, localize, separator: showSeparator, }, }), - ...((entities ?? []).map(({ name, state, show, _hide_when_off, hide_when_off, ...rest }) => { + ...((entities ?? []).map(({ name, state, show, display, _hide_when_off, hide_when_off, ...rest }) => { const hideWhenOff = _hide_when_off === true || hide_when_off === true; return renderInfoItem({ hide: show === false || (hideWhenOff && entity.state === HVAC_MODES.OFF), @@ -6123,6 +6759,7 @@ function renderEntities({ _hide, entity, unit, hass, entities, config, localize, config, variables: config.variables, separator: showSeparator, + display: display ?? config?.layout?.entities?.display, }, }); }) || null), @@ -6130,6 +6767,35 @@ function renderEntities({ _hide, entity, unit, hass, entities, config, localize, return wrapEntities(config, entityHtml); } +const STACKABLE_MODES = new Set(['heat_cool', 'fan_only']); +function getModeLabelPresentation(modeValue, label, sparse) { + if (!label || !sparse) { + return { layout: 'inline', lines: label ? [label] : [] }; + } + const trimmed = label.trim(); + if (!trimmed) { + return { layout: 'inline', lines: [] }; + } + if (modeValue === 'heat_cool') { + const slashParts = trimmed.split(/\s*\/\s*/).filter(Boolean); + if (slashParts.length === 2 && + slashParts.every((part) => part.length > 0 && part.length <= 12)) { + return { layout: 'stacked', lines: slashParts }; + } + } + if (modeValue === 'fan_only') { + const wordParts = trimmed.split(/\s+/).filter(Boolean); + if (wordParts.length === 2 && + wordParts.every((part) => part.length > 0 && part.length <= 10)) { + return { layout: 'stacked', lines: wordParts }; + } + } + if (STACKABLE_MODES.has(modeValue) && trimmed.length > 10) { + return { layout: 'column', lines: [trimmed] }; + } + return { layout: 'inline', lines: [trimmed] }; +} + const CUSTOM_FAN_ICON_PATH = 'M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13'; const CUSTOM_MODE_ICONS = { 'st:fan-speed-4': { @@ -6296,6 +6962,17 @@ function renderModeType({ state, entity, hass, mode: options, adapter, modeOptio (type === 'hvac' && list.length > 4) || (type === 'fan' && list.length > 4); const safeClass = (value) => String(value).replace(/[^a-z0-9_-]/gi, ''); + const renderModeLabel = (modeValue, label) => { + if (!label) + return null; + const presentation = getModeLabelPresentation(modeValue, label, sparseMainControls); + if (presentation.layout === 'stacked') { + return b ` + ${presentation.lines.map((line) => b `${line}`)} + `; + } + return b `${presentation.lines[0] ?? label}`; + }; return b `
${maybeRenderIcon(icon, iconConfigured)} - ${displayName - ? b `${displayName}` - : null} + ${renderModeLabel(String(value), displayName)}
`; })} @@ -6340,6 +7021,59 @@ function renderModeType({ state, entity, hass, mode: options, adapter, modeOptio `; } +const safeClass = (value) => String(value).replace(/[^a-z0-9_-]/gi, ''); +function renderFooter({ toggles, mainState, toggleFooterEntity, openEntityPopover, }) { + const visibleToggles = toggles.filter((toggle) => !(toggle.hide_when_off === true && mainState === HVAC_MODES.OFF)); + if (!visibleToggles.length) + return A; + return b ` + + `; +} + function parseSetpoints(setpoints, attributes, adapter = climateAdapter, entityState) { if (setpoints === false) { return {}; @@ -6401,6 +7135,9 @@ const CONTROL_METADATA_KEYS = ['entity', 'hide_when_off', 'hide_off_when_off']; function getConfiguredEntities(config) { return config.entities ?? []; } +function getConfiguredFooter(config) { + return Array.isArray(config.footer) ? config.footer : []; +} function shouldShowModeControl(type, modeOption, config) { const modeKey = String(modeOption); const configuredMode = getConfiguredModeValue(modeKey, config); @@ -6682,6 +7419,7 @@ class SimpleThermostat extends i$1 { this.modes = []; this._hass = {}; this.entities = []; + this.footer = []; this.showEntities = true; this.name = ''; this.stepSize = STEP_SIZE; @@ -6708,6 +7446,12 @@ class SimpleThermostat extends i$1 { entity_id: entityId, }); }; + this.toggleFooterEntity = (entityId, checked) => { + this._callAction(`homeassistant.turn_${checked ? 'on' : 'off'}`, { + entity_id: entityId, + }); + fireEvent(this, 'haptic', 'light'); + }; this.setMode = (type, mode) => { if (type && mode) { const adapter = getAdapter(this.config.entity); @@ -6856,6 +7600,7 @@ class SimpleThermostat extends i$1 { this._setpointDebounce = setpointDebounce; } this.entities = []; + this.footer = []; this.showEntities = true; this.toggleAttribute('embedded', this.config.embedded === true); if (this._hass?.states) { @@ -6978,6 +7723,20 @@ class SimpleThermostat extends i$1 { this.showEntities = true; this.entities = []; } + this.footer = getConfiguredFooter(this.config) + .map(({ entity, name, icon, hide_when_off }) => { + const state = hass.states?.[entity]; + if (!state) + return null; + return { + entity, + name, + icon, + hide_when_off, + state, + }; + }) + .filter((toggle) => !!toggle); } render({ _hide, _values, _updatingValues, config, entity } = this) { if (!config) { @@ -7019,9 +7778,12 @@ class SimpleThermostat extends i$1 { const unit = this.getUnit(); const entityDomain = config.entity.split('.')[0]; const setpointCount = Object.keys(_values).length; - const stepLayout = this.config.enhanced_visuals === false - ? (this.config?.layout?.step ?? 'column') - : (this.config?.layout?.step ?? 'row'); + const configuredStepLayout = this.config?.layout?.step; + const compactDualEntitySetpoints = !configuredStepLayout && this.showEntities && setpointCount > 1; + const stepLayout = configuredStepLayout ?? + (this.config.enhanced_visuals === false || compactDualEntitySetpoints + ? 'column' + : 'row'); const row = stepLayout === 'row'; const isUnavailable = ['unavailable', 'unknown'].includes(entity.state); const safeClass = (value) => typeof value === 'string' ? value.replace(/[^a-z0-9_-]/gi, '') : ''; @@ -7107,6 +7869,12 @@ class SimpleThermostat extends i$1 { ` : A} + ${renderFooter({ + toggles: this.footer, + mainState: entity.state, + toggleFooterEntity: this.toggleFooterEntity, + openEntityPopover: this.openEntityPopover, + })} `; } @@ -7291,8 +8059,16 @@ class SimpleThermostat extends i$1 { } return (mode.list ?? []).some(({ hide_when_off }) => !(hide_when_off === true && this.entity?.state === HVAC_MODES.OFF)); }).length ?? 0; + const footerRows = this.footer?.some(({ hide_when_off }) => !(hide_when_off === true && this.entity?.state === HVAC_MODES.OFF)) + ? 1 + : 0; const warningRows = this.stepSize < 1 && this.config.decimals === 0 ? 1 : 0; - return Math.max(1, headerRows + entityRows + setpointRows + modeRows + warningRows); + return Math.max(1, headerRows + + entityRows + + setpointRows + + modeRows + + footerRows + + warningRows); } getUnit() { if (['boolean', 'string'].includes(typeof this.config.unit)) { @@ -7325,6 +8101,9 @@ __decorate([ __decorate([ n$2() ], SimpleThermostat.prototype, "entities", void 0); +__decorate([ + n$2() +], SimpleThermostat.prototype, "footer", void 0); __decorate([ n$2() ], SimpleThermostat.prototype, "showEntities", void 0); diff --git a/www/community/simple-thermostat/simple-thermostat.debug.js.gz b/www/community/simple-thermostat/simple-thermostat.debug.js.gz index 8b43870e4312abea08d8e534a3d0f50a965efac6..eb6e76405669b1414fa274eab4a4d80db4e4652c 100644 GIT binary patch literal 62874 zcmV(-K-|9{iwFqQU5jc0|8r?=aBO8QbZBLAZEtgQVRSBJWny(_E^2cC?7eGy+c=Ua z{N2y9|AEo*#AJtJB-zeIilT8l?n!oYd*gKG?0CEmEm0OHvZx^`Cmu)t{jI`{xRIh{ zr+a43_U^=6cS}mIMC{lUbHK(d^3UJ2#CNM?e4ir$#qV z7m?ri`PWykUz~k>_2#J2ZFE|lN6prgW@p!T+MRBv)*m37+ zGK{j!lald2mK@Lu-<|(08sYjC&Gy{XO`s7C>qDJXhcw4Oq26)`f(Cx z0fz#q4S)5Dm0KhCC&4k z@86x2(M4sFl?G0v_zz<@6*10k9j{MtEdOKcKeibAju-QJ3c?qSh{$T(1KM3{gsPg~AU&L5}oFq&l%{yt3R*J*q)$(>HC{nYtWl3Yw9=k@DD%shVo;{P^ZQ{d*S z5lDSJjw2YtKOetn?lupn;eud!xJC6`zTN2;L)eeD_xg|&98bbg^7TWK4^+Dpt=v&^;ee#+2quvtLO(vS@dNzu$%|KAL;LRyXehqfl+RndkXMamb>q zNcuV9qr!AAVBK+iJsY}m6FeWVBFYR=`nl)zmQ3jLWu6@8X*|1t#_%+$=yJ(gm2N+R zN}pq`&|_{RBZV436&=O-An)c68VyD+_PgiDAd}FIK@db<|2b=X(#Hnptigl)q;=Yj zfcDX17`d(sA_KkNe;z#mK0GJA4}DEa$P(ajVmYPA?#66!c^;(_RRXN12+5~#x`>>4 zNQQ5oI6Hu3r%)@G3!w8nazZ^LC6#xb#sg?8m8BgaOFM{ZPUJY5HK%bNrQsCR4^#y@ z{(J$F5`Kwb-cBQggmJz|k%)`P$)e#Rjq_^|KA3Ye??HZ&JZPVKK61zFu|{y_Cw@-& zyY!E@+kKbv>xPP(mj&hk?kB-zICqhuIg#@a3i{3#CQw~Zi2MwM5k>JJ2N?pkM9^;t(eP)WB7z(` z^Dvp^fU6(z-u0nb^LaEI9Zuru$W1_km;MlR3p9Cv&FWUSjmQ!X)~MfT^ollR*d`)F z9~RRn^P&fRA^V)|Ao^fsLBHf)H?N`CA8)GI2}w6`){VD!eRUe`Mvzoy$aE*$9WC=M zOl4U&-QL&IsVdI8$@U}6dC&FqyK#56y|?VsIouCHuB5qT2vZFt1uzmpM~*&1fy|!* z3}g)8e?fFP2i%05F6e+cWFb7r#SkYKCK~UP>Ge3CPH}!s(%c`R^g`Ey^ydBoK5p`) z5DLt=$-c&5<-&-#8HON?KPSmF3TM#S`2gzgqP^EUhibm`NIoUMOMV}uX?P8g2m=ZM z#QQ&w-@Of};)=&$naFC;AE(KsRyoQ`+|PR@M8pI&2y`x!@Rq0`mWgU>fIqr48SAVj zH@&`z`-ISWm}U_nl34oi>xLo)(Pw1GFbKxbH;jq*KyJuS{~Vba^48Eb5O#By>Utj} z4GeZrP+efVpHkbjI}TyM`yh-jqH&0NjwVdP>~Ip!E}~HvDqHrb3rclAjsTa%_*@WDjJDi&a^oX1{}c+*f{3N{re{{ zeTmNi%vdOP%JEXwR~Wl~)(74bqa_Ov2Iq6oUA)RZVQGOs=5+~+DFAj$0~Q*A(|*QA zCeyWO7zAHaREZ;E3o$Ga8)&p}9A#w6Cn9k#3uei|5SMvL%9VIr*k%)Iwos*Dtd#s1 za1<&W*bH(lk9ZqlXg)F zfNvOrV5u;e0xcP`q@k03Gzf;_bV{m#8CCj1?vRSp=Q$fGvC zF;Hyy<_a5bI0Lveu{;=?*h-ibf#GPB!Xya4P9<|7MspzZs0FMJ?HFt^SVe<2mav~_ zy6_a6!Dj_dNY=L~Le}pHU#tZ@LCFb>xYL4`vT=>_DRdL>qMnQ;Lo9Y2g%aQ>7DQDP z!#uu!ztDVGBQSy2$j}iRi!FJ0*U>cEox~WlNC<#N*rrI}tJUmc*cymtHZQC^&$aR*Qj1St5v( zR5^!sh)Rc*Q;c9){S4E-k*4*T7%_Eug!k8EMYejx-_8 zsJ40!lO|xN(~B4=G;buQ0)|UsMTpNU7dS)ziV5|Ya2rJBG6u@Xx`Fih40RsCij~0{ zfnzy%&81J^J#(#Ul_g4zgh@Mq-a87x$RSlxt%V&1Q$8*Q(quZNGd|x6IC{q{iDO*& z0vHbILbK6oXQL>k8zGEWfNKVmXf%S9V3K6HNEiezu?8=bt4OV}s4y6T%;(f3qwN!# zhPRy!1i5j>urt&Rvnf2AdW&)P&-vIxjRQK!r-V5C8}xeyL+W{pt8*eI#BwA$?1SKh zt0~7!Y!(d$Bmtxwx`A#6xkg(Ga5lY(Ap;9hH}}gLPX{~nJjym@_#w=`=i%@R7rLUi zpkpQdE7R^qg|3!3bEB*jyHeJ&E7?{OE0qF+TxF)jwTSPv^(Sf>+_aN;d=j1Z zQ#N3s;NJ$MsmVays3lS;vq;*NG+0X)1t&R~nqwH5QDC)k{d=w(2gO2hFo2b! z=T4yCzJG^_SS%@V%4HIG|Nf-k?`w^~)y_Sx2qoDl1iP>p3D_ZPQg12dVcWzgX~ttw z=Xj;G-g$s5J(xD z^QARIM%N5{K;LlL&6oX{O%||L?lBR}zkgSS4#%oEY=~IyA?O}vZ~_io-qRxwGT77; z4@5*nL>L#zVme}7fV2OAvh!;^ol2=yGb{z8b1Q{h@Pcd#fs$`ru}7An^x{5$uGzc* z<7dlUjEjRK7Z)WGDQEXWv ziwD|+1s`sf8mDfS%ii^NTU&FUocfq(7^VH2%VZRF8!%dCjU~dIlX#) zoo~0Hzi&RM``KM6wDf$}veo^GxS%T3DR&jN-kZr7k`PrL03NYf(+a2cD&{GXMeW6+iwgS51^c%ZtwL!Kij^6wB_^9 z{!|<<`9nM=@cPfEj5?55deDU1%;Zp#?X-XY&b>443B&FF{lc6pQvF3=*=X=bh-X3O zU7Ptg2>4D9In@KDeCm&};U~^t^S{piI{s^V+VHRX51+Y%u6wW9{QlR6C;t;R|8da# z%c=L>{p-WQ3Hv(vpXYzgPJg0_+n)FE!awUjY&M_6kIVi;{4?)=h%S!4&E3z>zi;0_ zJxj!T@;`t5Yu4C#-hX)dz;kK(Pkr_m08ai#(9+oX>*r_B`={UC#`hiXyXSr1_CEWK z3t-qq|KSc)vE6^zfIrv$hyMdb>F(@zvRCsR&)-5|^!Gf@r;)e)F!sM8cVGb;1Oc8i zxHo6m;V3=ZT@Wg=v5|qQ@ z5hy}*-(l@>LX?b#FjI;(1&ozQj1?RbuuSj9Z2o@RCuE4@?o1qYH`_1?pPW*!2N3WM z*)wW9%dRe-H@ds*>k2ozsDP9ptdsaPb3;;Tf0Y#-P8W z_~!!JH75yYG~p5wuDVE_KjYRnvwXhw3AtcaoWu{>r+DI%=GmX)9JKwz=M8VraIh%xfg(A6Dt_Q{>3XP&*Fzy+&`T!Y69D9t9)O5BkH?;b zE)W2(*zUMG2_HN-^|QWO6ck*L&7p5xkPF-jdgz`6gFl{n12_1|dq_t(aCk(8?1r5F zw*44~NO$U^t6Mk1@yNS6^Rer@jQ|H;goEo<7v^UE@w(giqxkqo_a&(K)Y#X_`5t>N zj|3zTMz=!ABTh*P9wHh{nWRA;ULdQaqn%WC6OkDaOM*u>EntOoqd*H=M|D~dsx|{5 z&Ys1+3{-8(yiUm2LPG>P%a_H%S6bC!t$OeP+SQW^$GkACpD2fbv?r?k5b?pIAxH)z z$g^TbyrewyJcC9Op>4KNWRWlAaESoF8zW2n`~iqlPeu1wVt@Xi4`2n;meU6hic?&5 zQ0C(77EiTw#~(g}7IP-7S!S~+#W}JMhQe|wChIr!Oc_$?$cdrVN8DR0CK_c@c*#Wr zTqhhRV24GgUGjU{<9fH!JR;mg%@!e5p#T-Q!*LIOKL!wfJj0jtg>L0=dxpY zF-;@`UVGQ22Wts#b4?JQ?AHR>(t$%Xa2bKb-p38P2_v&Vk>GGPj{Delg6SBU5KyZL zkQ1C>M-YwtLGy)__KrW{(uaS%RnCJT;RW|tgx_!aFm?qyokSmzzQ35r|-3~9gG zz%YG@rWM;?h^E~ere$$*Ao?AQKd~F|0@RWVwlfhE==9?um|=s#)C=NEbO0jc#AMUT z>#3?fViKT?wFIV^8T>EpXJ8mm!7p~vs8UYIpd!-E9C&&il7w&1_c?C z&Y)9u-eqkP>r*~{<+1+~{gbu}#mUymv20zV-UNMVxG-m;`a|SY;nI&rE^#ii7|)*| zc>>Fd3Azs}BLb+(3cDL=8_-Du5647WFh|>w8XEE$_Xn2_C=X}uVBsp5!Mw&|KI2HH zwSUQ)z;xCjJ@4VVMq6h0$xu3^M;k)tQuTUFcpEQKa&8tCvN7=Aq7acb<%^$C9Xdj^n4F zp=B5qC+gS*MVAS^STqXsZZSrY7&7G8-0_mk9n89St)6n+_Frw7SY{S~BF`=D8gmP) zmD7xKzB0W;>hywRjCRcP4yst3Sz*YDpRiVvM3VV52~*n(&>Pw%GEF3$i4zm|ekRU1 zuy9XR`gG>xhxl?iBG?H#9S|qI&^;4Ro+tbkT2%K!vQ=i&_I@JC=1cS^kre_g$JtI+ zO2$v#M`eTdS#S1iQYRN<*;DpLiS zq|5}Ga;1#vv3K`xW`XK|3>DRzY&d3amlh~tV6jB zu#Vtxir<0&@^eCmknUH7GxLqjrz;2oalesKP2_Z!6DU=AB5FD9Q^MKmBp21a-mtno zOLak>TwF|Tobd16%c*=E6fONnN!8LYq%;%>5&`=?-JAiTbv02P3=TYLiD;ZWzQhC0 zK9Py+9ME;HX`OO`;EzX*My|u4@|&2JFr$HY3w(8J}?Q(s38T4mkW_9E=O1J z`*oZF1EN%x2Ig8k(MpA*QDu=_n>Q!nY&4~{U^m&0C&W}{3-�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 literal 58839 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 AVE_OC diff --git a/www/community/simple-thermostat/simple-thermostat.js b/www/community/simple-thermostat/simple-thermostat.js index 5cccb7d4..a15b6373 100644 --- a/www/community/simple-thermostat/simple-thermostat.js +++ b/www/community/simple-thermostat/simple-thermostat.js @@ -1,4 +1,4 @@ -!function(){const t={DEBUG:!1,BUILD_TIME:"2026-08-05, 05:24 p.m."};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,t)}catch(t){}globalThis.process={env:t}}();var t="simple-thermostat",e="4.2.0";function i(t,e,i,o){var a,r=arguments.length,n=r<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,i):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,o);else for(var s=t.length-1;s>=0;s--)(a=t[s])&&(n=(r<3?a(n):r>3?a(e,i,n):a(e,i))||n);return r>3&&n&&Object.defineProperty(e,i,n),n}"function"==typeof SuppressedError&&SuppressedError;const o=globalThis,a=o.ShadowRoot&&(void 0===o.ShadyCSS||o.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,r=Symbol(),n=new WeakMap;let s=class{constructor(t,e,i){if(this._$cssResult$=!0,i!==r)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(a&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=n.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&n.set(e,t))}return t}toString(){return this.cssText}};const c=(t,...e)=>{const i=1===t.length?t[0]:e.reduce((e,i,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[o+1],t[0]);return new s(i,t,r)},l=a?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new s("string"==typeof t?t:t+"",void 0,r))(e)})(t):t,{is:d,defineProperty:h,getOwnPropertyDescriptor:u,getOwnPropertyNames:p,getOwnPropertySymbols:g,getPrototypeOf:m}=Object,f=globalThis,v=f.trustedTypes,y=v?v.emptyScript:"",_=f.reactiveElementPolyfillSupport,b=(t,e)=>t,w={toAttribute(t,e){switch(e){case Boolean:t=t?y:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},x=(t,e)=>!d(t,e),$={attribute:!0,type:String,converter:w,reflect:!1,useDefault:!1,hasChanged:x};Symbol.metadata??=Symbol("metadata"),f.litPropertyMetadata??=new WeakMap;let S=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=$){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(t,e),!e.noAccessor){const i=Symbol(),o=this.getPropertyDescriptor(t,i,e);void 0!==o&&h(this.prototype,t,o)}}static getPropertyDescriptor(t,e,i){const{get:o,set:a}=u(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get:o,set(e){const r=o?.call(this);a?.call(this,e),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??$}static _$Ei(){if(this.hasOwnProperty(b("elementProperties")))return;const t=m(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(b("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(b("properties"))){const t=this.properties,e=[...p(t),...g(t)];for(const i of e)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,i]of e)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,e]of this.elementProperties){const i=this._$Eu(t,e);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(l(t))}else void 0!==t&&e.push(l(t));return e}static _$Eu(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const i of e.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((t,e)=>{if(a)t.adoptedStyleSheets=e.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const i of e){const e=document.createElement("style"),a=o.litNonce;void 0!==a&&e.setAttribute("nonce",a),e.textContent=i.cssText,t.appendChild(e)}})(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$ET(t,e){const i=this.constructor.elementProperties.get(t),o=this.constructor._$Eu(t,i);if(void 0!==o&&!0===i.reflect){const a=(void 0!==i.converter?.toAttribute?i.converter:w).toAttribute(e,i.type);this._$Em=t,null==a?this.removeAttribute(o):this.setAttribute(o,a),this._$Em=null}}_$AK(t,e){const i=this.constructor,o=i._$Eh.get(t);if(void 0!==o&&this._$Em!==o){const t=i.getPropertyOptions(o),a="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:w;this._$Em=o;const r=a.fromAttribute(e,t.type);this[o]=r??this._$Ej?.get(o)??r,this._$Em=null}}requestUpdate(t,e,i){if(void 0!==t){const o=this.constructor,a=this[t];if(i??=o.getPropertyOptions(t),!((i.hasChanged??x)(a,e)||i.useDefault&&i.reflect&&a===this._$Ej?.get(t)&&!this.hasAttribute(o._$Eu(t,i))))return;this.C(t,e,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,e,{useDefault:i,reflect:o,wrapped:a},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??e??this[t]),!0!==a||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(e=void 0),this._$AL.set(t,e)),!0===o&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,i]of t){const{wrapped:t}=i,o=this[e];!0!==t||this._$AL.has(e)||void 0===o||this.C(e,void 0,i,o)}}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(e)):this._$EM()}catch(e){throw t=!1,this._$EM(),e}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}};S.elementStyles=[],S.shadowRootOptions={mode:"open"},S[b("elementProperties")]=new Map,S[b("finalized")]=new Map,_?.({ReactiveElement:S}),(f.reactiveElementVersions??=[]).push("2.1.1");const A=globalThis,k=t=>t,C=A.trustedTypes,E=C?C.createPolicy("lit-html",{createHTML:t=>t}):void 0,z="$lit$",T=`lit$${Math.random().toFixed(9).slice(2)}$`,O="?"+T,N=`<${O}>`,M=document,R=()=>M.createComment(""),j=t=>null===t||"object"!=typeof t&&"function"!=typeof t,P=Array.isArray,H="[ \t\n\f\r]",I=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,V=/-->/g,F=/>/g,L=RegExp(`>|${H}(?:([^\\s"'>=/]+)(${H}*=${H}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),D=/'/g,U=/"/g,W=/^(?:script|style|textarea|title)$/i,B=(t=>(e,...i)=>({_$litType$:t,strings:e,values:i}))(1),G=Symbol.for("lit-noChange"),q=Symbol.for("lit-nothing"),K=new WeakMap,Z=M.createTreeWalker(M,129);function J(t,e){if(!P(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==E?E.createHTML(e):e}const Y=(t,e)=>{const i=t.length-1,o=[];let a,r=2===e?"":3===e?"":"",n=I;for(let e=0;e"===c[0]?(n=a??I,l=-1):void 0===c[1]?l=-2:(l=n.lastIndex-c[2].length,s=c[1],n=void 0===c[3]?L:'"'===c[3]?U:D):n===U||n===D?n=L:n===V||n===F?n=I:(n=L,a=void 0);const h=n===L&&t[e+1].startsWith("/>")?" ":"";r+=n===I?i+N:l>=0?(o.push(s),i.slice(0,l)+z+i.slice(l)+T+h):i+T+(-2===l?e:h)}return[J(t,r+(t[i]||"")+(2===e?"":3===e?"":"")),o]};class X{constructor({strings:t,_$litType$:e},i){let o;this.parts=[];let a=0,r=0;const n=t.length-1,s=this.parts,[c,l]=Y(t,e);if(this.el=X.createElement(c,i),Z.currentNode=this.el.content,2===e||3===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(o=Z.nextNode())&&s.length0){o.textContent=C?C.emptyScript:"";for(let i=0;iP(t)||"function"==typeof t?.[Symbol.iterator])(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==q&&j(this._$AH)?this._$AA.nextSibling.data=t:this.T(M.createTextNode(t)),this._$AH=t}$(t){const{values:e,_$litType$:i}=t,o="number"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=X.createElement(J(i.h,i.h[0]),this.options)),i);if(this._$AH?._$AD===o)this._$AH.p(e);else{const t=new tt(o,this),i=t.u(this.options);t.p(e),this.T(i),this._$AH=t}}_$AC(t){let e=K.get(t.strings);return void 0===e&&K.set(t.strings,e=new X(t)),e}k(t){P(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let i,o=0;for(const a of t)o===e.length?e.push(i=new et(this.O(R()),this.O(R()),this,this.options)):i=e[o],i._$AI(a),o++;o2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=q}_$AI(t,e=this,i,o){const a=this.strings;let r=!1;if(void 0===a)t=Q(this,t,e,0),r=!j(t)||t!==this._$AH&&t!==G,r&&(this._$AH=t);else{const o=t;let n,s;for(t=a[0],n=0;n{const o=i?.renderBefore??e;let a=o._$litPart$;if(void 0===a){const t=i?.renderBefore??null;o._$litPart$=a=new et(e.insertBefore(R(),t),t,void 0,i??{})}return a._$AI(t),a})(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return G}};lt._$litElement$=!0,lt.finalized=!0,ct.litElementHydrateSupport?.({LitElement:lt});const dt=ct.litElementPolyfillSupport;dt?.({LitElement:lt}),(ct.litElementVersions??=[]).push("4.2.2");const ht={attribute:!0,type:String,converter:w,reflect:!1,hasChanged:x},ut=(t=ht,e,i)=>{const{kind:o,metadata:a}=i;let r=globalThis.litPropertyMetadata.get(a);if(void 0===r&&globalThis.litPropertyMetadata.set(a,r=new Map),"setter"===o&&((t=Object.create(t)).wrapped=!0),r.set(i.name,t),"accessor"===o){const{name:o}=i;return{set(i){const a=e.get.call(this);e.set.call(this,i),this.requestUpdate(o,a,t)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if("setter"===o){const{name:o}=i;return function(i){const a=this[o];e.call(this,i),this.requestUpdate(o,a,t)}}throw Error("Unsupported decorator location: "+o)};function pt(t){return(e,i)=>"object"==typeof i?ut(t,e,i):((t,e,i)=>{const o=e.hasOwnProperty(i);return e.constructor.createProperty(i,t),o?Object.getOwnPropertyDescriptor(e,i):void 0})(t,e,i)}function gt(t){return pt({...t,state:!0,attribute:!1})}var mt,ft=c`:host { +!function(){const t={DEBUG:!1,BUILD_TIME:"2026-08-23, 12:22 p.m."};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,t)}catch(t){}globalThis.process={env:t}}();var t="simple-thermostat",e="4.3.0";function i(t,e,i,o){var a,r=arguments.length,n=r<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,i):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,o);else for(var s=t.length-1;s>=0;s--)(a=t[s])&&(n=(r<3?a(n):r>3?a(e,i,n):a(e,i))||n);return r>3&&n&&Object.defineProperty(e,i,n),n}"function"==typeof SuppressedError&&SuppressedError;const o=globalThis,a=o.ShadowRoot&&(void 0===o.ShadyCSS||o.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,r=Symbol(),n=new WeakMap;let s=class{constructor(t,e,i){if(this._$cssResult$=!0,i!==r)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(a&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=n.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&n.set(e,t))}return t}toString(){return this.cssText}};const c=(t,...e)=>{const i=1===t.length?t[0]:e.reduce((e,i,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[o+1],t[0]);return new s(i,t,r)},l=a?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new s("string"==typeof t?t:t+"",void 0,r))(e)})(t):t,{is:d,defineProperty:h,getOwnPropertyDescriptor:u,getOwnPropertyNames:p,getOwnPropertySymbols:m,getPrototypeOf:g}=Object,f=globalThis,v=f.trustedTypes,y=v?v.emptyScript:"",b=f.reactiveElementPolyfillSupport,_=(t,e)=>t,w={toAttribute(t,e){switch(e){case Boolean:t=t?y:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},x=(t,e)=>!d(t,e),$={attribute:!0,type:String,converter:w,reflect:!1,useDefault:!1,hasChanged:x};Symbol.metadata??=Symbol("metadata"),f.litPropertyMetadata??=new WeakMap;let S=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=$){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(t,e),!e.noAccessor){const i=Symbol(),o=this.getPropertyDescriptor(t,i,e);void 0!==o&&h(this.prototype,t,o)}}static getPropertyDescriptor(t,e,i){const{get:o,set:a}=u(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get:o,set(e){const r=o?.call(this);a?.call(this,e),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??$}static _$Ei(){if(this.hasOwnProperty(_("elementProperties")))return;const t=g(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(_("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(_("properties"))){const t=this.properties,e=[...p(t),...m(t)];for(const i of e)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,i]of e)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,e]of this.elementProperties){const i=this._$Eu(t,e);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(l(t))}else void 0!==t&&e.push(l(t));return e}static _$Eu(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const i of e.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((t,e)=>{if(a)t.adoptedStyleSheets=e.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const i of e){const e=document.createElement("style"),a=o.litNonce;void 0!==a&&e.setAttribute("nonce",a),e.textContent=i.cssText,t.appendChild(e)}})(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$ET(t,e){const i=this.constructor.elementProperties.get(t),o=this.constructor._$Eu(t,i);if(void 0!==o&&!0===i.reflect){const a=(void 0!==i.converter?.toAttribute?i.converter:w).toAttribute(e,i.type);this._$Em=t,null==a?this.removeAttribute(o):this.setAttribute(o,a),this._$Em=null}}_$AK(t,e){const i=this.constructor,o=i._$Eh.get(t);if(void 0!==o&&this._$Em!==o){const t=i.getPropertyOptions(o),a="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:w;this._$Em=o;const r=a.fromAttribute(e,t.type);this[o]=r??this._$Ej?.get(o)??r,this._$Em=null}}requestUpdate(t,e,i){if(void 0!==t){const o=this.constructor,a=this[t];if(i??=o.getPropertyOptions(t),!((i.hasChanged??x)(a,e)||i.useDefault&&i.reflect&&a===this._$Ej?.get(t)&&!this.hasAttribute(o._$Eu(t,i))))return;this.C(t,e,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,e,{useDefault:i,reflect:o,wrapped:a},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??e??this[t]),!0!==a||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(e=void 0),this._$AL.set(t,e)),!0===o&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,i]of t){const{wrapped:t}=i,o=this[e];!0!==t||this._$AL.has(e)||void 0===o||this.C(e,void 0,i,o)}}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(e)):this._$EM()}catch(e){throw t=!1,this._$EM(),e}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}};S.elementStyles=[],S.shadowRootOptions={mode:"open"},S[_("elementProperties")]=new Map,S[_("finalized")]=new Map,b?.({ReactiveElement:S}),(f.reactiveElementVersions??=[]).push("2.1.1");const A=globalThis,k=t=>t,C=A.trustedTypes,E=C?C.createPolicy("lit-html",{createHTML:t=>t}):void 0,z="$lit$",T=`lit$${Math.random().toFixed(9).slice(2)}$`,O="?"+T,R=`<${O}>`,N=document,M=()=>N.createComment(""),j=t=>null===t||"object"!=typeof t&&"function"!=typeof t,P=Array.isArray,F="[ \t\n\f\r]",H=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,I=/-->/g,V=/>/g,L=RegExp(`>|${F}(?:([^\\s"'>=/]+)(${F}*=${F}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),D=/'/g,U=/"/g,W=/^(?:script|style|textarea|title)$/i,B=(t=>(e,...i)=>({_$litType$:t,strings:e,values:i}))(1),G=Symbol.for("lit-noChange"),q=Symbol.for("lit-nothing"),K=new WeakMap,Z=N.createTreeWalker(N,129);function J(t,e){if(!P(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==E?E.createHTML(e):e}const Y=(t,e)=>{const i=t.length-1,o=[];let a,r=2===e?"":3===e?"":"",n=H;for(let e=0;e"===c[0]?(n=a??H,l=-1):void 0===c[1]?l=-2:(l=n.lastIndex-c[2].length,s=c[1],n=void 0===c[3]?L:'"'===c[3]?U:D):n===U||n===D?n=L:n===I||n===V?n=H:(n=L,a=void 0);const h=n===L&&t[e+1].startsWith("/>")?" ":"";r+=n===H?i+R:l>=0?(o.push(s),i.slice(0,l)+z+i.slice(l)+T+h):i+T+(-2===l?e:h)}return[J(t,r+(t[i]||"")+(2===e?"":3===e?"":"")),o]};class X{constructor({strings:t,_$litType$:e},i){let o;this.parts=[];let a=0,r=0;const n=t.length-1,s=this.parts,[c,l]=Y(t,e);if(this.el=X.createElement(c,i),Z.currentNode=this.el.content,2===e||3===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(o=Z.nextNode())&&s.length0){o.textContent=C?C.emptyScript:"";for(let i=0;iP(t)||"function"==typeof t?.[Symbol.iterator])(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==q&&j(this._$AH)?this._$AA.nextSibling.data=t:this.T(N.createTextNode(t)),this._$AH=t}$(t){const{values:e,_$litType$:i}=t,o="number"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=X.createElement(J(i.h,i.h[0]),this.options)),i);if(this._$AH?._$AD===o)this._$AH.p(e);else{const t=new tt(o,this),i=t.u(this.options);t.p(e),this.T(i),this._$AH=t}}_$AC(t){let e=K.get(t.strings);return void 0===e&&K.set(t.strings,e=new X(t)),e}k(t){P(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let i,o=0;for(const a of t)o===e.length?e.push(i=new et(this.O(M()),this.O(M()),this,this.options)):i=e[o],i._$AI(a),o++;o2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=q}_$AI(t,e=this,i,o){const a=this.strings;let r=!1;if(void 0===a)t=Q(this,t,e,0),r=!j(t)||t!==this._$AH&&t!==G,r&&(this._$AH=t);else{const o=t;let n,s;for(t=a[0],n=0;n{const o=i?.renderBefore??e;let a=o._$litPart$;if(void 0===a){const t=i?.renderBefore??null;o._$litPart$=a=new et(e.insertBefore(M(),t),t,void 0,i??{})}return a._$AI(t),a})(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return G}};lt._$litElement$=!0,lt.finalized=!0,ct.litElementHydrateSupport?.({LitElement:lt});const dt=ct.litElementPolyfillSupport;dt?.({LitElement:lt}),(ct.litElementVersions??=[]).push("4.2.2");const ht={attribute:!0,type:String,converter:w,reflect:!1,hasChanged:x},ut=(t=ht,e,i)=>{const{kind:o,metadata:a}=i;let r=globalThis.litPropertyMetadata.get(a);if(void 0===r&&globalThis.litPropertyMetadata.set(a,r=new Map),"setter"===o&&((t=Object.create(t)).wrapped=!0),r.set(i.name,t),"accessor"===o){const{name:o}=i;return{set(i){const a=e.get.call(this);e.set.call(this,i),this.requestUpdate(o,a,t)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if("setter"===o){const{name:o}=i;return function(i){const a=this[o];e.call(this,i),this.requestUpdate(o,a,t)}}throw Error("Unsupported decorator location: "+o)};function pt(t){return(e,i)=>"object"==typeof i?ut(t,e,i):((t,e,i)=>{const o=e.hasOwnProperty(i);return e.constructor.createProperty(i,t),o?Object.getOwnPropertyDescriptor(e,i):void 0})(t,e,i)}function mt(t){return pt({...t,state:!0,attribute:!1})}var gt,ft=c`:host { display: block; isolation: isolate; max-width: 100%; @@ -44,14 +44,14 @@ ha-card { padding-bottom: calc(var(--st-spacing, var(--st-default-spacing)) * 2); - --auto-color: green; - --heat_cool-color: springgreen; - --cool-color: #2b9af9; - --heat-color: #ff8100; + --auto-color: var(--state-climate-auto-color, green); + --heat_cool-color: var(--state-climate-heat-cool-color, #efbd07); + --cool-color: var(--state-climate-cool-color, #2b9af9); + --heat-color: var(--state-climate-heat-color, #ff8100); --manual-color: #44739e; --on-color: var(--primary-color); - --off-color: #8a8a8a; - --dry-color: #efbd07; + --off-color: var(--state-inactive-color, #8a8a8a); + --dry-color: var(--state-climate-dry-color, #efbd07); --st-mode-surface-background: color-mix( in srgb, var(--primary-text-color) 14%, @@ -340,6 +340,66 @@ ha-card.loading { justify-self: start; text-align: left; } +.entity-action { + grid-column: 1 / -1; + width: 100%; + min-width: 0; + min-height: 28px; + border: 0; + border-radius: var(--st-mode-border-radius, var(--st-default-mode-radius)); + padding: var(--st-spacing, var(--st-default-spacing)) + calc(var(--st-spacing, var(--st-default-spacing)) * 2); + display: inline-flex; + align-items: center; + justify-content: center; + gap: calc(var(--st-spacing, var(--st-default-spacing)) * 1.5); + color: var(--secondary-text-color); + background: var(--st-mode-background, var(--st-mode-surface-background)); + font: inherit; + line-height: 1.2; + cursor: pointer; + white-space: nowrap; + overflow: hidden; + transition: + background-color + var(--st-mode-transition, var(--st-default-mode-transition)), color var(--st-mode-transition, var(--st-default-mode-transition)), box-shadow var(--st-mode-transition, var(--st-default-mode-transition)), filter var(--st-mode-transition, var(--st-default-mode-transition)); +} +.entity-action ha-icon { + --mdc-icon-size: var(--st-entity-action-icon-size, 20px); + width: 20px; + width: var(--st-entity-action-icon-size, 20px); + height: 20px; + height: var(--st-entity-action-icon-size, 20px); + flex: 0 0 auto; +} +.entity-action__label, +.entity-action__state { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; +} +.entity-action__state { + color: var(--secondary-text-color); + font-size: 0.9em; +} +.entity-action.display-chip { + width: auto; + justify-self: start; + border-radius: 999px; + padding-left: calc(var(--st-spacing, var(--st-default-spacing)) * 2.5); + padding-right: calc(var(--st-spacing, var(--st-default-spacing)) * 2.5); +} +.entity-action.active, +.entity-action.state-on { + color: var(--st-mode-active-color, var(--text-primary-color)); + background: var( + --st-mode-active-background, + var(--st-toggle-color, var(--primary-color)) + ); +} +.entity-action:hover { + filter: brightness(1.08); +} .entities:empty { display: none; @@ -463,6 +523,7 @@ ha-card.embedded .body { ); will-change: opacity, transform; } + @supports (color: color-mix(in lch, red, blue)) { .header__icon-wrap::before { background: radial-gradient( @@ -809,6 +870,9 @@ ha-card.cooling .header__icon-wrap::before { .modes.preset { flex-wrap: nowrap; } +.modes.footer { + flex-wrap: nowrap; +} .mode-title { padding: 0 16px; align-self: center; @@ -853,6 +917,11 @@ ha-card.cooling .header__icon-wrap::before { var(--st-mode-color, var(--primary-color)) 68%, var(--primary-text-color) 32% ); + --st-mode-computed-active-background: var( + --st-mode-color, + var(--primary-color) + ); + --st-mode-computed-active-accent-color: var(--st-mode-accent-color); --st-mode-active-icon-color: color-mix( in srgb, var(--st-mode-color, var(--primary-color)) 42%, @@ -863,7 +932,6 @@ ha-card.cooling .header__icon-wrap::before { currentColor 50%, var(--st-mode-color, var(--primary-color)) 50% ); - --st-mode-active-accent-color: var(--st-mode-accent-color); --st-mode-neutral-hover-background: color-mix( in srgb, var(--st-mode-background, var(--secondary-background-color)) 88%, @@ -921,13 +989,16 @@ ha-card.cooling .header__icon-wrap::before { .mode-item.active,.mode-item.active:hover { background: var( --st-mode-active-background, - var(--st-mode-color, var(--primary-color)) + var(--st-mode-computed-active-background) ); color: var(--st-mode-active-color, var(--text-primary-color)); box-shadow: inset 0 -2px 0 var( --st-mode-active-accent-color, - color-mix(in srgb, var(--text-primary-color) 72%, transparent) + var( + --st-mode-computed-active-accent-color, + color-mix(in srgb, var(--text-primary-color) 72%, transparent) + ) ); filter: none; transform: none; @@ -951,7 +1022,10 @@ ha-card.cooling .header__icon-wrap::before { .mode-item.active::after { background: var( --st-mode-active-accent-color, - color-mix(in srgb, var(--text-primary-color) 72%, transparent) + var( + --st-mode-computed-active-accent-color, + color-mix(in srgb, var(--text-primary-color) 72%, transparent) + ) ); opacity: 0.64; opacity: var(--st-mode-active-accent-opacity, 0.64); @@ -970,6 +1044,10 @@ ha-card:not(.standard-visuals) .mode-item.active .mode-icon { line-height: 1; } +.mode-label-line { + display: block; +} + ha-card:not(.standard-visuals) .header__toggle.on .toggle-label.clickable, ha-card:not(.standard-visuals) .entity-heading.toggle-entity.state-on ha-icon { color: var(--st-toggle-color, var(--primary-color)); @@ -1118,7 +1196,7 @@ ha-card:not(.standard-visuals) ha-card.standard-visuals .mode-item.active:hover { background: var( --st-mode-active-background, - var(--st-mode-color, var(--primary-color)) + var(--st-mode-computed-active-background) ); color: var(--st-mode-active-color, var(--text-primary-color)); } @@ -1189,11 +1267,42 @@ ha-card.drying { padding-bottom: var(--st-spacing, var(--st-default-spacing)); } -.modes.hvac.sparse .mode-label, -.modes.state.sparse .mode-label { +.modes.hvac.sparse .mode-item:not(.label-stacked):not(.label-column) .mode-label, +.modes.state.sparse .mode-item:not(.label-stacked):not(.label-column) .mode-label { white-space: nowrap; } +.modes.hvac.sparse .mode-item.label-stacked, +.modes.state.sparse .mode-item.label-stacked { + align-items: center; +} + +.modes.hvac.sparse .mode-item.label-stacked .mode-label, +.modes.state.sparse .mode-item.label-stacked .mode-label { + white-space: normal; + line-height: 1.1; + text-align: left; +} + +.modes.hvac.sparse .mode-item.label-stacked .mode-label-line + .mode-label-line, +.modes.state.sparse .mode-item.label-stacked .mode-label-line + .mode-label-line { + margin-top: 1px; +} + +.modes.hvac.sparse .mode-item.label-column, +.modes.state.sparse .mode-item.label-column { + flex-direction: column; + gap: 4px; + min-height: calc(var(--st-control-icon-size) + 24px); +} + +.modes.hvac.sparse .mode-item.label-column .mode-label, +.modes.state.sparse .mode-item.label-column .mode-label { + white-space: normal; + text-align: center; + line-height: 1.1; +} + @media (max-width: 560px) { .modes.hvac .mode-item, .modes.state .mode-item { @@ -1210,6 +1319,12 @@ ha-card.drying { gap: var(--st-sparse-control-gap, 2px); min-width: 0; } + + ha-card:not(.standard-visuals) .modes.hvac.sparse .mode-item.label-column, + ha-card:not(.standard-visuals) .modes.state.sparse .mode-item.label-column { + flex-direction: column; + gap: 4px; + } } .modes.dense { display: grid; @@ -1312,7 +1427,8 @@ ha-card.drying { .modes.swing_horizontal .mode-item, .modes.swing_vertical .mode-item, .modes.vane_horizontal .mode-item, -.modes.vane_vertical .mode-item { +.modes.vane_vertical .mode-item, +.modes.footer .mode-item { --st-mode-min-width: 58px; flex-direction: row; align-items: center; @@ -1496,7 +1612,8 @@ ha-card.standard-visuals .modes.swing, ha-card.standard-visuals .modes.swing_horizontal, ha-card.standard-visuals .modes.swing_vertical, ha-card.standard-visuals .modes.vane_horizontal, -ha-card.standard-visuals .modes.vane_vertical { +ha-card.standard-visuals .modes.vane_vertical, +ha-card.standard-visuals .modes.footer { display: grid; grid-template-columns: none; grid-auto-columns: minmax(0, 1fr); @@ -1517,7 +1634,8 @@ ha-card.standard-visuals .modes.swing .mode-item, ha-card.standard-visuals .modes.swing_horizontal .mode-item, ha-card.standard-visuals .modes.swing_vertical .mode-item, ha-card.standard-visuals .modes.vane_horizontal .mode-item, -ha-card.standard-visuals .modes.vane_vertical .mode-item { +ha-card.standard-visuals .modes.vane_vertical .mode-item, +ha-card.standard-visuals .modes.footer .mode-item { display: flex; flex: initial; flex-direction: column; @@ -1573,72 +1691,65 @@ ha-card.standard-visuals .mode-item.active { ha-card .mode-item.active.off, ha-card .mode-item.active.off:hover { - background: var(--off-color); - --st-mode-active-background: var(--off-color); + --st-mode-computed-active-background: var(--off-color); } ha-card .mode-item.active.heat, ha-card .mode-item.active.heat:hover { - background: var(--heat-color); - --st-mode-active-background: var(--heat-color); + --st-mode-computed-active-background: var(--heat-color); } ha-card .mode-item.active.cool, ha-card .mode-item.active.cool:hover { - background: var(--cool-color); - --st-mode-active-background: var(--cool-color); + --st-mode-computed-active-background: var(--cool-color); } ha-card .mode-item.active.heat_cool, ha-card .mode-item.active.heat_cool:hover { - background: var(--heat_cool-color); - --st-mode-active-background: var(--heat_cool-color); + --st-mode-computed-active-background: var(--heat_cool-color); } ha-card .mode-item.active.auto, ha-card .mode-item.active.auto:hover { - background: var(--auto-color); - --st-mode-active-background: var(--auto-color); + --st-mode-computed-active-background: var(--auto-color); } ha-card .mode-item.active.dry, ha-card .mode-item.active.dry:hover { - background: var(--dry-color); - --st-mode-active-background: var(--dry-color); + --st-mode-computed-active-background: var(--dry-color); } ha-card .mode-item.active.fan_only, ha-card .mode-item.active.fan_only:hover { - background: var(--fan_only-color); - --st-mode-active-background: var(--fan_only-color); + --st-mode-computed-active-background: var(--fan_only-color); } ha-card.standard-visuals .mode-item.active.off { - background: var(--off-color); + --st-mode-computed-active-background: var(--off-color); } ha-card.standard-visuals .mode-item.active.heat { - background: var(--heat-color); + --st-mode-computed-active-background: var(--heat-color); } ha-card.standard-visuals .mode-item.active.cool { - background: var(--cool-color); + --st-mode-computed-active-background: var(--cool-color); } ha-card.standard-visuals .mode-item.active.heat_cool { - background: var(--heat_cool-color); + --st-mode-computed-active-background: var(--heat_cool-color); } ha-card.standard-visuals .mode-item.active.auto { - background: var(--auto-color); + --st-mode-computed-active-background: var(--auto-color); } ha-card.standard-visuals .mode-item.active.dry { - background: var(--dry-color); + --st-mode-computed-active-background: var(--dry-color); } ha-card.standard-visuals .mode-item.active.fan_only { - background: var(--fan_only-color); + --st-mode-computed-active-background: var(--fan_only-color); } ha-card.standard-visuals .mode-item:active, @@ -1721,7 +1832,7 @@ ha-card.standard-visuals .thermostat-trigger:active { font-size: 12px; font-size: var(--ha-font-size-s, 12px); } -`;function vt(t,e,i,o={}){o=o||{},i=null==i?{}:i;const a=new Event(e,{bubbles:void 0===o.bubbles||o.bubbles,cancelable:Boolean(o.cancelable),composed:void 0===o.composed||o.composed});return a.detail=i,t.dispatchEvent(a),a}function yt(t){return Array.isArray(t)?t.map(t=>{const{label:e,...i}=t;return!i.name&&e&&(i.name=e),i}):t}function _t(t){const e={...t,layout:t.layout?{...t.layout}:void 0};return 3===e.version&&!e.layout?.step&&(e.layout={...e.layout??{},step:"column"}),!e.current_value_entity&&e.current_temperature_entity&&(e.current_value_entity=e.current_temperature_entity),void 0===e.entities&&void 0!==e.sensors&&function(t){if(!Array.isArray(t.sensors))return;const e=[];t.sensors.forEach(i=>{const o=i;return"temperature"===o.id?(o.label&&(t.label={...t.label??{},temperature:o.label}),void(!1===o.show&&(t.hide={...t.hide??{},temperature:!0}))):"state"===o.id?(o.label&&(t.label={...t.label??{},state:o.label}),void(!1===o.show&&(t.hide={...t.hide??{},state:!0}))):void e.push(i)}),t.entities=yt(e)}(e),e.entities=yt(e.entities),e.layout&&void 0===e.layout.entities&&void 0!==e.layout.sensors&&(e.layout.entities=e.layout.sensors),delete e.current_temperature_entity,delete e.sensors,delete e.layout?.sensors,delete e.version,e}!function(t,e){void 0===e&&(e={});var i=e.insertAt;if(t&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===i&&o.firstChild?o.insertBefore(a,o.firstChild):o.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}}(ft),function(t){t.HVAC="hvac",t.FAN="fan",t.STATE="state",t.PRESET="preset",t.SWING="swing",t.SWING_HORIZONTAL="swing_horizontal",t.SWING_VERTICAL="swing_vertical",t.VANE_HORIZONTAL="vane_horizontal",t.VANE_VERTICAL="vane_vertical",t.DIRECTION="direction",t.OSCILLATING="oscillating",t.MODE="mode"}(mt||(mt={}));const bt="dual";const wt={getSetpoints:t=>function(t){return"number"==typeof t.target_temp_high&&"number"==typeof t.target_temp_low?bt:"single"}(t)===bt?{target_temp_low:t.target_temp_low,target_temp_high:t.target_temp_high}:{temperature:t.temperature},getRange:t=>({min:t?.min_temp??null,max:t?.max_temp??null,step:t?.target_temp_step??null}),getCurrentValue:t=>t?.current_temperature??null,getCurrentValueTemplate:()=>"{{current_temperature|formatNumber}}",getSetpointService:()=>({domain:"climate",service:"set_temperature"}),getModeService:t=>"vane_horizontal"===t||"vane_vertical"===t?`set_${t}`:`set_${t}_mode`,getModePayloadKey:t=>"vane_horizontal"===t||"vane_vertical"===t?t:`${t}_mode`,getModeAttribute:t=>"vane_horizontal"===t||"vane_vertical"===t?`${t}_positions`:`${t}_modes`,getDefaultControl:()=>["hvac","preset"],getLocalizationDomain:()=>"climate"},xt={climate:wt,fan:{getSetpoints:t=>"number"!=typeof t?.percentage?{}:{percentage:t.percentage},getRange(t){const e=Number(t?.percentage_step);return{min:0,max:100,step:Number.isFinite(e)&&e>0?e:1}},getCurrentValue:t=>t?.current_temperature??t?.temperature??null,getCurrentValueUnit:(t,e)=>null!=t?.current_temperature?e?.unit_system?.temperature??!1:null!=t?.temperature&&(t?.unit_of_measurement??e?.unit_system?.temperature??!1),getCurrentValueTemplate:()=>"{{current_temperature|formatNumber}}",getSetpointService:()=>({domain:"fan",service:"set_percentage"}),getModeService:t=>"state"===t?"turn_on":"direction"===t?"set_direction":"oscillating"===t?"oscillate":`set_${t}_mode`,getModePayloadKey:t=>"state"===t?"state":"direction"===t?"direction":"oscillating"===t?"oscillating":`${t}_mode`,getModeAttribute:t=>"state"===t?"state":"direction"===t?"direction":"oscillating"===t?"oscillating":`${t}_modes`,getDefaultControl:()=>["preset","direction","oscillating","state"],transformModePayloadValue:(t,e)=>"oscillating"===t?"true"===e:e,getLocalizationDomain:()=>"fan"},humidifier:{getSetpoints:t=>({humidity:t?.humidity}),getRange:t=>({min:t?.min_humidity??0,max:t?.max_humidity??100,step:1}),getCurrentValue:t=>t?.current_humidity??null,getCurrentValueTemplate:()=>"{{current_humidity|formatNumber}}",getSetpointService:()=>({domain:"humidifier",service:"set_humidity"}),getModeService:t=>"state"===t?"turn_on":"mode"===t?"set_mode":`set_${t}`,getModePayloadKey:t=>"state"===t?"state":"mode"===t?"mode":t,getModeAttribute:t=>"state"===t?"state":"mode"===t?"available_modes":`${t}_modes`,getDefaultControl:()=>["mode","state"],getLocalizationDomain:()=>"humidifier"}};function $t(t){if(!t)return wt;const e=t.split(".")[0];return xt[e]??wt}const St=process.env.BUILD_TIME,At=["climate","fan","humidifier"],kt=[mt.HVAC,mt.FAN,mt.STATE,mt.PRESET,mt.SWING,mt.SWING_HORIZONTAL,mt.SWING_VERTICAL,mt.VANE_HORIZONTAL,mt.VANE_VERTICAL,mt.DIRECTION,mt.OSCILLATING,mt.MODE],Ct=Object.values(mt),Et={[mt.HVAC]:"HVAC modes",[mt.FAN]:"Fan modes",[mt.STATE]:"On/off state",[mt.PRESET]:"Preset modes",[mt.SWING]:"Swing modes",[mt.SWING_HORIZONTAL]:"Horizontal swing",[mt.SWING_VERTICAL]:"Vertical swing",[mt.VANE_HORIZONTAL]:"Horizontal vane",[mt.VANE_VERTICAL]:"Vertical vane",[mt.DIRECTION]:"Direction",[mt.OSCILLATING]:"Oscillating",[mt.MODE]:"Modes"},zt={header:{},layout:{mode:{}}},Tt={entity:"Entity (required)",current_value_entity:"Current value source",show_header:"Show header",name:"Name",icon:"Icon","toggle.entity":"Toggle entity","toggle.name":"Toggle label","toggle.icon":"Toggle icon","layout.mode.names":"Mode names","layout.mode.icons":"Mode icons","layout.mode.headings":"Mode headings",decimals:"Decimals",unit:"Unit","layout.step":"Step layout",step_size:"Step size",setpoint_debounce_ms:"Target debounce",fallback:"Fallback text","hide.temperature":"Hide current value",hide_current_value_when_off:"Hide current value while off","hide.state":"Hide state","hide.setpoint_label":"Hide target label",hide_setpoint_when_off:"Hide target controls while off",hide_setpoint:"Hide target controls",disable_setpoint_change_when_off:"Disable target changes while off","label.temperature":"Current value label","label.state":"State label","label.setpoint":"Target label","layout.entities.type":"Entity row layout","layout.entities.labels":"Show entity row labels","layout.entities.separator":"Show entity label separator","layout.entities.alignment":"Entity label alignment",enhanced_visuals:"Enhanced visuals","tap_action.action":"Tap action","hold_action.action":"Hold action","double_tap_action.action":"Double-tap action"};for(const t of kt)Tt[`control.${t}`]=Et[t];const Ot=t=>"function"==typeof structuredClone?structuredClone(t):JSON.parse(JSON.stringify(t)),Nt=t=>!Array.isArray(t.schema)||0!==t.schema.length,Mt=[{value:"more-info",label:"More info"},{value:"toggle",label:"Toggle"},{value:"none",label:"None"}],Rt=[{value:"row",label:"Row"},{value:"column",label:"Column"}],jt=[{value:"auto",label:"Auto (from entity)"},{value:"0.1",label:"0.1"},{value:"0.5",label:"0.5"},{value:"1",label:"1"}],Pt=[{value:"table",label:"Table"},{value:"list",label:"List"}],Ht=[{value:"right",label:"Right"},{value:"left",label:"Left"}],It=["entity","current_value_entity","decimals","unit","fallback","layout.step","layout.mode.names","layout.mode.icons","layout.mode.headings","layout.entities.type","layout.entities.labels","layout.entities.separator","layout.entities.alignment","setpoint_debounce_ms","hide.temperature","hide_current_value_when_off","hide.state","hide.setpoint_label","hide_setpoint_when_off","hide_setpoint","disable_setpoint_change_when_off","label.temperature","label.state","label.setpoint","tap_action.action","hold_action.action","double_tap_action.action"],Vt=["show_header","name","icon","toggle.entity","toggle.name","toggle.icon"];function Ft(t,e,i){const o=e.split(".");let a=t;for(;o.length>1;){const t=o.shift();Object.prototype.hasOwnProperty.call(a,t)||(a[t]={}),a=a[t]}a[o[0]]=i}function Lt(t,e){const i=e.split(".");let o=t;for(;i.length>1;){const t=i.shift();if(!o[t])return;o=o[t]}delete o[i[0]]}function Dt(t){const e=$t(t.entity);return kt.reduce((i,o)=>(i[`control.${o}`]=function(t,e,i){const o=t.control;return!1!==o&&(Array.isArray(o)?o.includes(e):o&&"object"==typeof o?void 0!==o[e]&&!1!==o[e]:i.getDefaultControl().includes(e))}(t,o,e),i),{})}function Ut(t,e){if(!t.entity||!e?.states?.[t.entity])return[];const i=e.states[t.entity].attributes??{},[o]=t.entity.split("."),a=$t(t.entity);return kt.filter(t=>Ct.includes(t)&&(t===mt.STATE?"fan"===o||"humidifier"===o:void 0!==i[a.getModeAttribute(t)]))}function Wt(t){const e=t._order,i=Object.keys(t).filter(t=>!t.startsWith("_"));if(!Array.isArray(e))return i;const o=new Set,a=e.map(String).filter(t=>i.includes(t)).filter(t=>!o.has(t)&&(o.add(t),!0));return i.forEach(t=>{o.has(t)||a.push(t)}),a}function Bt(t,e){return t.length===e.length&&t.every((t,i)=>String(t)===e[i])}function Gt(t){if(!function(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}(t))return{value:t,changed:!1};const e=Object.keys(t).filter(t=>!t.startsWith("_"));if(0===e.length&&!Array.isArray(t._order))return{value:t,changed:!1};const i=Array.isArray(t._order)?t._order.map(String):e,o=!Array.isArray(t._order)||!Bt(t._order,i);return{value:{...t,_order:i},changed:o}}function qt(t){if(!function(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}(t.control))return{config:t,changed:!1};const e=t.control,i=Wt(e);if(0===i.length&&!Array.isArray(e._order))return{config:t,changed:!1};let o=Array.isArray(e._order)&&!Bt(e._order,i);const a={...t,control:i.reduce((t,i)=>{const a=Gt(e[i]);return t[i]=a.value,o=o||a.changed,t},Array.isArray(e._order)?{_order:i}:{})};return{config:o?a:t,changed:o}}class Kt extends lt{constructor(){super(...arguments),this._valueChanged=t=>{const e=this._applyFormChange(t.detail.value);this.config=e,vt(this,"config-changed",{config:e})},this._computeLabel=t=>Tt[String(t.name)]??String(t.name)}static get styles(){return ft}static getStubConfig(){return{...zt}}setConfig(t){const e=qt(_t(t||{...zt}));this.config=e.config,e.changed&&queueMicrotask(()=>{this.config===e.config&&vt(this,"config-changed",{config:e.config})})}_openLink(){window.open("https://github.com/Wheemer/simple-thermostat/blob/master/README.md","_blank","noopener")}_buildFormData(){const t=this.config.header&&"object"==typeof this.config.header?this.config.header:{};return{entity:this.config.entity??"",current_value_entity:this.config.current_value_entity??"",show_header:!1!==this.config.header,"layout.mode.names":!1!==this.config.layout?.mode?.names,"layout.mode.icons":!1!==this.config.layout?.mode?.icons,"layout.mode.headings":!0===this.config.layout?.mode?.headings,decimals:this.config.decimals??"",unit:"string"==typeof this.config.unit?this.config.unit:"","layout.step":!1===this.config.enhanced_visuals?this.config.layout?.step??"column":this.config.layout?.step??"row",step_size:null!=this.config.step_size?String(this.config.step_size):"auto",fallback:this.config.fallback??"",setpoint_debounce_ms:this.config.setpoint_debounce_ms??"","hide.temperature":!0===this.config.hide?.temperature,hide_current_value_when_off:!0===this.config.hide_current_value_when_off||!0===this.config.hide?.current_value_when_off||!0===this.config.hide?.temperature_when_off,"hide.state":!0===this.config.hide?.state,hide_setpoint:!0===this.config.hide_setpoint,disable_setpoint_change_when_off:!0===this.config.disable_setpoint_change_when_off,"hide.setpoint_label":!0===this.config.hide?.setpoint_label,hide_setpoint_when_off:!0===this.config.hide_setpoint_when_off||!0===this.config.hide?.setpoint_when_off,"label.temperature":this.config.label?.temperature??"","label.state":this.config.label?.state??"","label.setpoint":this.config.label?.setpoint??"","layout.entities.type":this.config.layout?.entities?.type??"table","layout.entities.labels":!1!==this.config.layout?.entities?.labels,"layout.entities.separator":!1!==this.config.layout?.entities?.separator,"layout.entities.alignment":this.config.layout?.entities?.alignment??"right",enhanced_visuals:!1!==this.config.enhanced_visuals,name:t.name??"",icon:"string"==typeof t.icon?t.icon:"","toggle.entity":t.toggle?.entity??"","toggle.name":t.toggle?.name??"","toggle.icon":"string"==typeof t.toggle?.icon?t.toggle.icon:"","tap_action.action":this.config.tap_action?.action??"more-info","hold_action.action":this.config.hold_action?.action??"none","double_tap_action.action":this.config.double_tap_action?.action??"none",...Dt(this.config)}}_applyFormChange(t){const e=this._buildFormData(),i=function(t,e){return new Set(Object.keys(e).filter(i=>t[i]!==e[i]))}(e,t);!function(t,e){t.has("enhanced_visuals")&&(e.layout?.step||t.delete("layout.step"))}(i,this.config);const o={...e,...t},a=Ot(this.config);if(this._applyDirectFormPaths(a,o,i),!1===o.enhanced_visuals?a.enhanced_visuals=!1:delete a.enhanced_visuals,Vt.some(t=>i.has(t))&&(!1===o.show_header?a.header=!1:this._applyHeaderFormChange(a,o)),i.has("step_size")&&this._applyStepSize(a,o.step_size),i.has("entity")||kt.some(t=>i.has(`control.${t}`))){const t=function(t,e,i){const o=String(t.entity??e.entity??""),a=$t(o),r=Ut({...e,entity:o},i).filter(e=>t[`control.${e}`]),n=a.getDefaultControl();if(0===r.length)return!1;if(e.control&&!Array.isArray(e.control)&&"object"==typeof e.control){const t=new Set(r.map(String)),i=Wt(e.control).filter(e=>t.has(e)),o=r.filter(t=>!i.includes(t)),a=[...i,...o];return a.reduce((t,i)=>(t[i]=Gt(e.control[i]||{}).value,t),{_order:a})}return r.length===n.length&&r.every((t,e)=>t===n[e])?void 0:r}(o,this.config,this.hass);void 0===t?delete a.control:a.control=t}return a}_applyDirectFormPaths(t,e,i){for(const o of It){if(!i.has(o))continue;const a=e[o];null==a||""===a?Lt(t,o):Ft(t,o,a)}}_applyHeaderFormChange(t,e){!1!==t.header&&null!=t.header||(t.header={});const i=t.header,o=e.name,a=e.icon,r=e["toggle.entity"],n=e["toggle.name"],s=e["toggle.icon"];"string"==typeof o&&o?i.name=o:delete i.name,"string"==typeof a&&a?i.icon=a:delete i.icon,"string"==typeof r&&r?(i.toggle=i.toggle||{entity:r},i.toggle.entity=r,"string"==typeof n&&n?i.toggle.name=n:delete i.toggle.name,"string"==typeof s&&s?i.toggle.icon=s:delete i.toggle.icon):delete i.toggle}_applyStepSize(t,e){if("auto"===e||""===e||null==e)return void delete t.step_size;const i=Number(e);t.step_size=Number.isNaN(i)?e:i}_getExtraEntities(){return Array.isArray(this.config.entities)?this.config.entities:[]}_commitEntityRows(t){const e=Ot(this.config);t.length>0?e.entities=t:delete e.entities,this.config=e,vt(this,"config-changed",{config:e})}_addEntityRow(){this._commitEntityRows([...this._getExtraEntities(),{entity:""}])}_removeEntityRow(t){this._commitEntityRows(this._getExtraEntities().filter((e,i)=>i!==t))}_updateEntityRow(t,e,i){const o=this._getExtraEntities().map((o,a)=>{if(a!==t)return o;const r={...o};return"string"==typeof i&&i?r[e]=i:delete r[e],r});this._commitEntityRows(o)}_renderExtraEntityRows(){const t=this._getExtraEntities();return B` +`;function vt(t,e,i,o={}){o=o||{},i=null==i?{}:i;const a=new Event(e,{bubbles:void 0===o.bubbles||o.bubbles,cancelable:Boolean(o.cancelable),composed:void 0===o.composed||o.composed});return a.detail=i,t.dispatchEvent(a),a}function yt(t){return Array.isArray(t)?t.map(t=>{const{label:e,...i}=t;return!i.name&&e&&(i.name=e),i}):t}function bt(t){const e={...t,layout:t.layout?{...t.layout}:void 0},i=3===e.version;return i&&void 0===e.enhanced_visuals&&(e.enhanced_visuals=!1),i&&!e.layout?.step&&(e.layout={...e.layout??{},step:"column"}),!e.current_value_entity&&e.current_temperature_entity&&(e.current_value_entity=e.current_temperature_entity),void 0===e.entities&&void 0!==e.sensors&&function(t){if(!Array.isArray(t.sensors))return;const e=[];t.sensors.forEach(i=>{const o=i;return"temperature"===o.id?(o.label&&(t.label={...t.label??{},temperature:o.label}),void(!1===o.show&&(t.hide={...t.hide??{},temperature:!0}))):"state"===o.id?(o.label&&(t.label={...t.label??{},state:o.label}),void(!1===o.show&&(t.hide={...t.hide??{},state:!0}))):void e.push(i)}),t.entities=yt(e)}(e),e.entities=yt(e.entities),e.layout&&void 0===e.layout.entities&&void 0!==e.layout.sensors&&(e.layout.entities=e.layout.sensors),delete e.current_temperature_entity,delete e.sensors,delete e.layout?.sensors,delete e.version,e}!function(t,e){void 0===e&&(e={});var i=e.insertAt;if(t&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===i&&o.firstChild?o.insertBefore(a,o.firstChild):o.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}}(ft),function(t){t.HVAC="hvac",t.FAN="fan",t.STATE="state",t.PRESET="preset",t.SWING="swing",t.SWING_HORIZONTAL="swing_horizontal",t.SWING_VERTICAL="swing_vertical",t.VANE_HORIZONTAL="vane_horizontal",t.VANE_VERTICAL="vane_vertical",t.DIRECTION="direction",t.OSCILLATING="oscillating",t.MODE="mode"}(gt||(gt={}));const _t="dual";const wt={getSetpoints:t=>function(t){return"number"==typeof t.target_temp_high&&"number"==typeof t.target_temp_low?_t:"single"}(t)===_t?{target_temp_low:t.target_temp_low,target_temp_high:t.target_temp_high}:{temperature:t.temperature},getRange:t=>({min:t?.min_temp??null,max:t?.max_temp??null,step:t?.target_temp_step??null}),getCurrentValue:t=>t?.current_temperature??null,getCurrentValueTemplate:()=>"{{current_temperature|formatNumber}}",getSetpointService:()=>({domain:"climate",service:"set_temperature"}),getModeService:t=>"vane_horizontal"===t||"vane_vertical"===t?`set_${t}`:`set_${t}_mode`,getModePayloadKey:t=>"vane_horizontal"===t||"vane_vertical"===t?t:`${t}_mode`,getModeAttribute:t=>"vane_horizontal"===t||"vane_vertical"===t?`${t}_positions`:`${t}_modes`,getDefaultControl:()=>["hvac","preset"],getLocalizationDomain:()=>"climate"},xt={climate:wt,fan:{getSetpoints:t=>"number"!=typeof t?.percentage?{}:{percentage:t.percentage},getRange(t){const e=Number(t?.percentage_step);return{min:0,max:100,step:Number.isFinite(e)&&e>0?e:1}},getCurrentValue:t=>t?.current_temperature??t?.temperature??null,getCurrentValueUnit:(t,e)=>null!=t?.current_temperature?e?.unit_system?.temperature??!1:null!=t?.temperature&&(t?.unit_of_measurement??e?.unit_system?.temperature??!1),getCurrentValueTemplate:()=>"{{current_temperature|formatNumber}}",getSetpointService:()=>({domain:"fan",service:"set_percentage"}),getModeService:t=>"state"===t?"turn_on":"direction"===t?"set_direction":"oscillating"===t?"oscillate":`set_${t}_mode`,getModePayloadKey:t=>"state"===t?"state":"direction"===t?"direction":"oscillating"===t?"oscillating":`${t}_mode`,getModeAttribute:t=>"state"===t?"state":"direction"===t?"direction":"oscillating"===t?"oscillating":`${t}_modes`,getDefaultControl:()=>["preset","direction","oscillating","state"],transformModePayloadValue:(t,e)=>"oscillating"===t?"true"===e:e,getLocalizationDomain:()=>"fan"},humidifier:{getSetpoints:t=>({humidity:t?.humidity}),getRange:t=>({min:t?.min_humidity??0,max:t?.max_humidity??100,step:1}),getCurrentValue:t=>t?.current_humidity??null,getCurrentValueTemplate:()=>"{{current_humidity|formatNumber}}",getSetpointService:()=>({domain:"humidifier",service:"set_humidity"}),getModeService:t=>"state"===t?"turn_on":"mode"===t?"set_mode":`set_${t}`,getModePayloadKey:t=>"state"===t?"state":"mode"===t?"mode":t,getModeAttribute:t=>"state"===t?"state":"mode"===t?"available_modes":`${t}_modes`,getDefaultControl:()=>["mode","state"],getLocalizationDomain:()=>"humidifier"}};function $t(t){if(!t)return wt;const e=t.split(".")[0];return xt[e]??wt}const St=process.env.BUILD_TIME,At=["climate","fan","humidifier"],kt=[gt.HVAC,gt.FAN,gt.STATE,gt.PRESET,gt.SWING,gt.SWING_HORIZONTAL,gt.SWING_VERTICAL,gt.VANE_HORIZONTAL,gt.VANE_VERTICAL,gt.DIRECTION,gt.OSCILLATING,gt.MODE],Ct=Object.values(gt),Et={[gt.HVAC]:"HVAC modes",[gt.FAN]:"Fan modes",[gt.STATE]:"On/off state",[gt.PRESET]:"Preset modes",[gt.SWING]:"Swing modes",[gt.SWING_HORIZONTAL]:"Horizontal swing",[gt.SWING_VERTICAL]:"Vertical swing",[gt.VANE_HORIZONTAL]:"Horizontal vane",[gt.VANE_VERTICAL]:"Vertical vane",[gt.DIRECTION]:"Direction",[gt.OSCILLATING]:"Oscillating",[gt.MODE]:"Modes"},zt={header:{},layout:{mode:{}}},Tt={entity:"Entity (required)",current_value_entity:"Current value source",show_header:"Show header",name:"Name",icon:"Icon","toggle.entity":"Toggle entity","toggle.name":"Toggle label","toggle.icon":"Toggle icon","layout.mode.names":"Mode names","layout.mode.icons":"Mode icons","layout.mode.headings":"Mode headings",decimals:"Decimals",unit:"Unit","layout.step":"Step layout",step_size:"Step size",setpoint_debounce_ms:"Target debounce",fallback:"Fallback text","hide.temperature":"Hide current value",hide_current_value_when_off:"Hide current value while off","hide.state":"Hide state","hide.setpoint_label":"Hide target label",hide_setpoint_when_off:"Hide target controls while off",hide_setpoint:"Hide target controls",disable_setpoint_change_when_off:"Disable target changes while off","label.temperature":"Current value label","label.state":"State label","label.setpoint":"Target label","layout.entities.type":"Entity row layout","layout.entities.display":"Entity display","layout.entities.labels":"Show entity row labels","layout.entities.separator":"Show entity label separator","layout.entities.alignment":"Entity label alignment","footer.entity":"Footer toggle entity","footer.name":"Footer toggle label","footer.icon":"Footer toggle icon",enhanced_visuals:"Enhanced visuals","tap_action.action":"Tap action","hold_action.action":"Hold action","double_tap_action.action":"Double-tap action"};for(const t of kt)Tt[`control.${t}`]=Et[t];const Ot=t=>"function"==typeof structuredClone?structuredClone(t):JSON.parse(JSON.stringify(t)),Rt=t=>!Array.isArray(t.schema)||0!==t.schema.length,Nt=[{value:"more-info",label:"More info"},{value:"toggle",label:"Toggle"},{value:"none",label:"None"}],Mt=[{value:"row",label:"Row"},{value:"column",label:"Column"}],jt=[{value:"auto",label:"Auto (from entity)"},{value:"0.1",label:"0.1"},{value:"0.5",label:"0.5"},{value:"1",label:"1"}],Pt=[{value:"table",label:"Table"},{value:"list",label:"List"}],Ft=[{value:"row",label:"Rows"},{value:"auto",label:"Auto"},{value:"button",label:"Buttons"},{value:"toggle",label:"Toggles"},{value:"chip",label:"Chips"}],Ht=[{value:"",label:"Default"},...Ft],It=Ft.map(t=>t.value),Vt=[{value:"right",label:"Right"},{value:"left",label:"Left"}],Lt=["entity","current_value_entity","decimals","unit","fallback","layout.step","layout.mode.names","layout.mode.icons","layout.mode.headings","layout.entities.type","layout.entities.display","layout.entities.labels","layout.entities.separator","layout.entities.alignment","setpoint_debounce_ms","hide.temperature","hide_current_value_when_off","hide.state","hide.setpoint_label","hide_setpoint_when_off","hide_setpoint","disable_setpoint_change_when_off","label.temperature","label.state","label.setpoint","tap_action.action","hold_action.action","double_tap_action.action"],Dt=["show_header","name","icon","toggle.entity","toggle.name","toggle.icon"];function Ut(t,e,i){const o=e.split(".");let a=t;for(;o.length>1;){const t=o.shift();Object.prototype.hasOwnProperty.call(a,t)||(a[t]={}),a=a[t]}a[o[0]]=i}function Wt(t,e){const i=e.split(".");let o=t;for(;i.length>1;){const t=i.shift();if(!o[t])return;o=o[t]}delete o[i[0]]}function Bt(t){const e=t.target,i=t.detail;return i?.value??i?.item?.value??e.selected?.value??e.selected?.getAttribute?.("value")??e.value??""}function Gt(t){const e=$t(t.entity);return kt.reduce((i,o)=>(i[`control.${o}`]=function(t,e,i){const o=t.control;return!1!==o&&(Array.isArray(o)?o.includes(e):o&&"object"==typeof o?void 0!==o[e]&&!1!==o[e]:i.getDefaultControl().includes(e))}(t,o,e),i),{})}function qt(t,e){if(!t.entity||!e?.states?.[t.entity])return[];const i=e.states[t.entity].attributes??{},[o]=t.entity.split("."),a=$t(t.entity);return kt.filter(t=>Ct.includes(t)&&(t===gt.STATE?"fan"===o||"humidifier"===o:void 0!==i[a.getModeAttribute(t)]))}function Kt(t){const e=t._order,i=Object.keys(t).filter(t=>!t.startsWith("_"));if(!Array.isArray(e))return i;const o=new Set,a=e.map(String).filter(t=>i.includes(t)).filter(t=>!o.has(t)&&(o.add(t),!0));return i.forEach(t=>{o.has(t)||a.push(t)}),a}function Zt(t,e){return t.length===e.length&&t.every((t,i)=>String(t)===e[i])}function Jt(t){if(!function(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}(t))return{value:t,changed:!1};const e=Object.keys(t).filter(t=>!t.startsWith("_"));if(0===e.length&&!Array.isArray(t._order))return{value:t,changed:!1};const i=Array.isArray(t._order)?t._order.map(String):e,o=!Array.isArray(t._order)||!Zt(t._order,i);return{value:{...t,_order:i},changed:o}}function Yt(t){if(!function(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}(t.control))return{config:t,changed:!1};const e=t.control,i=Kt(e);if(0===i.length&&!Array.isArray(e._order))return{config:t,changed:!1};let o=Array.isArray(e._order)&&!Zt(e._order,i);const a={...t,control:i.reduce((t,i)=>{const a=Jt(e[i]);return t[i]=a.value,o=o||a.changed,t},Array.isArray(e._order)?{_order:i}:{})};return{config:o?a:t,changed:o}}class Xt extends lt{constructor(){super(...arguments),this._valueChanged=t=>{const e=this._applyFormChange(t.detail.value);this.config=e,vt(this,"config-changed",{config:e})},this._computeLabel=t=>Tt[String(t.name)]??String(t.name)}static get styles(){return ft}static getStubConfig(){return{...zt}}setConfig(t){const e=Yt(bt(t||{...zt}));this.config=e.config,e.changed&&queueMicrotask(()=>{this.config===e.config&&vt(this,"config-changed",{config:e.config})})}_openLink(){window.open("https://github.com/Wheemer/simple-thermostat/blob/master/README.md","_blank","noopener")}_buildFormData(){const t=this.config.header&&"object"==typeof this.config.header?this.config.header:{};return{entity:this.config.entity??"",current_value_entity:this.config.current_value_entity??"",show_header:!1!==this.config.header,"layout.mode.names":!1!==this.config.layout?.mode?.names,"layout.mode.icons":!1!==this.config.layout?.mode?.icons,"layout.mode.headings":!0===this.config.layout?.mode?.headings,decimals:this.config.decimals??"",unit:"string"==typeof this.config.unit?this.config.unit:"","layout.step":!1===this.config.enhanced_visuals?this.config.layout?.step??"column":this.config.layout?.step??"row",step_size:null!=this.config.step_size?String(this.config.step_size):"auto",fallback:this.config.fallback??"",setpoint_debounce_ms:this.config.setpoint_debounce_ms??"","hide.temperature":!0===this.config.hide?.temperature,hide_current_value_when_off:!0===this.config.hide_current_value_when_off||!0===this.config.hide?.current_value_when_off||!0===this.config.hide?.temperature_when_off,"hide.state":!0===this.config.hide?.state,hide_setpoint:!0===this.config.hide_setpoint,disable_setpoint_change_when_off:!0===this.config.disable_setpoint_change_when_off,"hide.setpoint_label":!0===this.config.hide?.setpoint_label,hide_setpoint_when_off:!0===this.config.hide_setpoint_when_off||!0===this.config.hide?.setpoint_when_off,"label.temperature":this.config.label?.temperature??"","label.state":this.config.label?.state??"","label.setpoint":this.config.label?.setpoint??"","layout.entities.type":this.config.layout?.entities?.type??"table","layout.entities.display":this.config.layout?.entities?.display??"","layout.entities.labels":!1!==this.config.layout?.entities?.labels,"layout.entities.separator":!1!==this.config.layout?.entities?.separator,"layout.entities.alignment":this.config.layout?.entities?.alignment??"right",enhanced_visuals:!1!==this.config.enhanced_visuals,name:t.name??"",icon:"string"==typeof t.icon?t.icon:"","toggle.entity":t.toggle?.entity??"","toggle.name":t.toggle?.name??"","toggle.icon":"string"==typeof t.toggle?.icon?t.toggle.icon:"","tap_action.action":this.config.tap_action?.action??"more-info","hold_action.action":this.config.hold_action?.action??"none","double_tap_action.action":this.config.double_tap_action?.action??"none",...Gt(this.config)}}_applyFormChange(t){const e=this._buildFormData(),i=function(t,e){return new Set(Object.keys(e).filter(i=>t[i]!==e[i]))}(e,t);!function(t,e){t.has("enhanced_visuals")&&(e.layout?.step||t.delete("layout.step"))}(i,this.config);const o={...e,...t},a=Ot(this.config);if(this._applyDirectFormPaths(a,o,i),!1===o.enhanced_visuals?a.enhanced_visuals=!1:delete a.enhanced_visuals,Dt.some(t=>i.has(t))&&(!1===o.show_header?a.header=!1:this._applyHeaderFormChange(a,o)),i.has("step_size")&&this._applyStepSize(a,o.step_size),i.has("entity")||kt.some(t=>i.has(`control.${t}`))){const t=function(t,e,i){const o=String(t.entity??e.entity??""),a=$t(o),r=qt({...e,entity:o},i).filter(e=>t[`control.${e}`]),n=a.getDefaultControl();if(0===r.length)return!1;if(e.control&&!Array.isArray(e.control)&&"object"==typeof e.control){const t=new Set(r.map(String)),i=Kt(e.control).filter(e=>t.has(e)),o=r.filter(t=>!i.includes(t)),a=[...i,...o];return a.reduce((t,i)=>(t[i]=Jt(e.control[i]||{}).value,t),{_order:a})}return r.length===n.length&&r.every((t,e)=>t===n[e])?void 0:r}(o,this.config,this.hass);void 0===t?delete a.control:a.control=t}return a}_applyDirectFormPaths(t,e,i){for(const o of Lt){if(!i.has(o))continue;const a=e[o];null==a||""===a?Wt(t,o):Ut(t,o,a)}}_applyHeaderFormChange(t,e){!1!==t.header&&null!=t.header||(t.header={});const i=t.header,o=e.name,a=e.icon,r=e["toggle.entity"],n=e["toggle.name"],s=e["toggle.icon"];"string"==typeof o&&o?i.name=o:delete i.name,"string"==typeof a&&a?i.icon=a:delete i.icon,"string"==typeof r&&r?(i.toggle=i.toggle||{entity:r},i.toggle.entity=r,"string"==typeof n&&n?i.toggle.name=n:delete i.toggle.name,"string"==typeof s&&s?i.toggle.icon=s:delete i.toggle.icon):delete i.toggle}_applyStepSize(t,e){if("auto"===e||""===e||null==e)return void delete t.step_size;const i=Number(e);t.step_size=Number.isNaN(i)?e:i}_getExtraEntities(){return Array.isArray(this.config.entities)?this.config.entities:[]}_getFooterRows(){return Array.isArray(this.config.footer)?this.config.footer:[]}_commitEntityRows(t){const e=Ot(this.config);t.length>0?e.entities=t:delete e.entities,this.config=e,vt(this,"config-changed",{config:e})}_addEntityRow(){this._commitEntityRows([...this._getExtraEntities(),{entity:""}])}_removeEntityRow(t){this._commitEntityRows(this._getExtraEntities().filter((e,i)=>i!==t))}_updateEntityRow(t,e,i){const o=this._getExtraEntities().map((o,a)=>{if(a!==t)return o;const r={...o};return"display"===e?("string"==typeof i&&It.includes(i)?r.display=i:delete r.display,r):("string"==typeof i&&i?r[e]=i:delete r[e],r)});this._commitEntityRows(o)}_commitFooterRows(t){const e=Ot(this.config);t.length>0?e.footer=t:delete e.footer,this.config=e,vt(this,"config-changed",{config:e})}_addFooterRow(){this._commitFooterRows([...this._getFooterRows(),{entity:""}])}_removeFooterRow(t){this._commitFooterRows(this._getFooterRows().filter((e,i)=>i!==t))}_updateFooterRow(t,e,i){const o=this._getFooterRows().map((o,a)=>{if(a!==t)return o;const r={...o};return"string"==typeof i&&i?r[e]=i:delete r[e],r});this._commitFooterRows(o)}_renderExtraEntityRows(){const t=this._getExtraEntities();return B`
@@ -1751,23 +1862,75 @@ ha-card.standard-visuals .thermostat-trigger:active { .value=${t.icon??""} @value-changed=${t=>this._updateEntityRow(e,"icon",t.detail.value)} > + this._updateEntityRow(e,"display",Bt(t))} + @selected=${t=>this._updateEntityRow(e,"display",Bt(t))} + @change=${t=>this._updateEntityRow(e,"display",Bt(t))} + > + Default + ${Ft.map(t=>B` + + ${t.label} + + `)} + this._removeEntityRow(e)}> Remove
`)}
+ `}_renderFooterRows(){const t=this._getFooterRows();return B` +
+
+
+

Footer controls

+

Add switch-style controls shown below the mode rows.

+
+ Add control +
+ + ${0===t.length?B`

+ No footer controls configured. +

`:t.map((t,e)=>B` +
+ this._updateFooterRow(e,"entity",t.detail.value)} + > + this._updateFooterRow(e,"name",t.target.value)} + > + this._updateFooterRow(e,"icon",t.detail.value)} + > + this._removeFooterRow(e)}> + Remove + +
+ `)} +
`}render(){return this.hass&&this.config?B`
0,s="fan"!==o&&("climate"===o||"humidifier"===o),c="fan"===o?[]:[{name:"current_value_entity",selector:{entity:{domain:["sensor","input_number"]}}}],l=[...s?[{name:"hide.temperature",selector:{boolean:{}}},{name:"hide_current_value_when_off",selector:{boolean:{}}}]:[],{name:"hide.state",selector:{boolean:{}}}],d=[...s?[{name:"label.temperature",selector:{text:{}}}]:[],{name:"label.state",selector:{text:{}}},...n?[{name:"label.setpoint",selector:{text:{}}}]:[]],h=!1===t.header?[]:[{type:"grid",schema:[{name:"name",selector:{text:{}}},{name:"icon",selector:{icon:{}}}]},{name:"toggle.entity",selector:{entity:{}}},{name:"toggle.name",selector:{text:{}}},...t.header&&"object"==typeof t.header&&t.header.toggle?.entity?[{name:"toggle.icon",selector:{icon:{}}}]:[]];return[{name:"entity",required:!0,selector:{entity:{domain:At}}},{type:"expandable",title:"Card header",schema:[{name:"show_header",selector:{boolean:{}}},...h]},...i.length>0?[{type:"expandable",title:"Controls",schema:[{type:"grid",column_min_width:"150px",schema:i.map(t=>({name:`control.${t}`,selector:{boolean:{}}}))}]}]:[],...n?[{type:"expandable",title:"Target",schema:[{type:"grid",schema:[{name:"layout.step",selector:{select:{mode:"dropdown",options:Rt}}},{name:"step_size",selector:{select:{mode:"dropdown",options:jt}}}]},{type:"grid",column_min_width:"160px",schema:[{name:"hide_setpoint",selector:{boolean:{}}},{name:"hide_setpoint_when_off",selector:{boolean:{}}},{name:"hide.setpoint_label",selector:{boolean:{}}},{name:"disable_setpoint_change_when_off",selector:{boolean:{}}}]}]}]:[],{type:"expandable",title:"Extra entity rows",schema:[{type:"grid",column_min_width:"160px",schema:[{name:"layout.entities.type",selector:{select:{mode:"dropdown",options:Pt}}},{name:"layout.entities.labels",selector:{boolean:{}}},{name:"layout.entities.separator",selector:{boolean:{}}},{name:"layout.entities.alignment",selector:{select:{mode:"dropdown",options:Ht}}}]}]},{type:"expandable",title:"Appearance",schema:[{name:"enhanced_visuals",selector:{boolean:{}}},{type:"grid",column_min_width:"160px",schema:l}].filter(Nt)},{type:"expandable",title:"Advanced",schema:[...c,...s?[{type:"grid",schema:[{name:"decimals",selector:{number:{min:0,max:5,step:1,mode:"box"}}},{name:"unit",selector:{text:{}}}]}]:[],{name:"fallback",selector:{text:{}}},{name:"setpoint_debounce_ms",selector:{number:{min:0,step:100,mode:"box"}}},{type:"grid",column_min_width:"160px",schema:d},{type:"grid",column_min_width:"150px",schema:[{name:"layout.mode.names",selector:{boolean:{}}},{name:"layout.mode.icons",selector:{boolean:{}}},{name:"layout.mode.headings",selector:{boolean:{}}}]},{type:"grid",column_min_width:"150px",schema:[{name:"tap_action.action",selector:{select:{mode:"dropdown",options:Mt}}},{name:"hold_action.action",selector:{select:{mode:"dropdown",options:Mt}}},{name:"double_tap_action.action",selector:{select:{mode:"dropdown",options:Mt}}}]}].filter(Nt)}]}(this.config,this.hass)} + .schema=${function(t,e){const i=qt(t,e),o=t.entity?.split(".")[0],a=$t(t.entity),r=t.entity?e?.states?.[t.entity]:void 0,n=!0===t.hide_setpoint||!r||Object.keys(a.getSetpoints(r.attributes??{})).length>0,s="fan"!==o&&("climate"===o||"humidifier"===o),c="fan"===o?[]:[{name:"current_value_entity",selector:{entity:{domain:["sensor","input_number"]}}}],l=[...s?[{name:"hide.temperature",selector:{boolean:{}}},{name:"hide_current_value_when_off",selector:{boolean:{}}}]:[],{name:"hide.state",selector:{boolean:{}}}],d=[...s?[{name:"label.temperature",selector:{text:{}}}]:[],{name:"label.state",selector:{text:{}}},...n?[{name:"label.setpoint",selector:{text:{}}}]:[]],h=!1===t.header?[]:[{type:"grid",schema:[{name:"name",selector:{text:{}}},{name:"icon",selector:{icon:{}}}]},{name:"toggle.entity",selector:{entity:{}}},{name:"toggle.name",selector:{text:{}}},...t.header&&"object"==typeof t.header&&t.header.toggle?.entity?[{name:"toggle.icon",selector:{icon:{}}}]:[]];return[{name:"entity",required:!0,selector:{entity:{domain:At}}},{type:"expandable",title:"Card header",schema:[{name:"show_header",selector:{boolean:{}}},...h]},...i.length>0?[{type:"expandable",title:"Controls",schema:[{type:"grid",column_min_width:"150px",schema:i.map(t=>({name:`control.${t}`,selector:{boolean:{}}}))}]}]:[],...n?[{type:"expandable",title:"Target",schema:[{type:"grid",schema:[{name:"layout.step",selector:{select:{mode:"dropdown",options:Mt}}},{name:"step_size",selector:{select:{mode:"dropdown",options:jt}}}]},{type:"grid",column_min_width:"160px",schema:[{name:"hide_setpoint",selector:{boolean:{}}},{name:"hide_setpoint_when_off",selector:{boolean:{}}},{name:"hide.setpoint_label",selector:{boolean:{}}},{name:"disable_setpoint_change_when_off",selector:{boolean:{}}}]}]}]:[],{type:"expandable",title:"Extra entity rows",schema:[{type:"grid",column_min_width:"160px",schema:[{name:"layout.entities.type",selector:{select:{mode:"dropdown",options:Pt}}},{name:"layout.entities.display",selector:{select:{mode:"dropdown",options:Ht}}},{name:"layout.entities.labels",selector:{boolean:{}}},{name:"layout.entities.separator",selector:{boolean:{}}},{name:"layout.entities.alignment",selector:{select:{mode:"dropdown",options:Vt}}}]}]},{type:"expandable",title:"Appearance",schema:[{name:"enhanced_visuals",selector:{boolean:{}}},{type:"grid",column_min_width:"160px",schema:l}].filter(Rt)},{type:"expandable",title:"Advanced",schema:[...c,...s?[{type:"grid",schema:[{name:"decimals",selector:{number:{min:0,max:5,step:1,mode:"box"}}},{name:"unit",selector:{text:{}}}]}]:[],{name:"fallback",selector:{text:{}}},{name:"setpoint_debounce_ms",selector:{number:{min:0,step:100,mode:"box"}}},{type:"grid",column_min_width:"160px",schema:d},{type:"grid",column_min_width:"150px",schema:[{name:"layout.mode.names",selector:{boolean:{}}},{name:"layout.mode.icons",selector:{boolean:{}}},{name:"layout.mode.headings",selector:{boolean:{}}}]},{type:"grid",column_min_width:"150px",schema:[{name:"tap_action.action",selector:{select:{mode:"dropdown",options:Nt}}},{name:"hold_action.action",selector:{select:{mode:"dropdown",options:Nt}}},{name:"double_tap_action.action",selector:{select:{mode:"dropdown",options:Nt}}}]}].filter(Rt)}]}(this.config,this.hass)} .computeLabel=${this._computeLabel} @value-changed=${this._valueChanged} > ${this._renderExtraEntityRows()} + ${this._renderFooterRows()}
- `:B``}}i([gt()],Kt.prototype,"config",void 0),i([pt({attribute:!1})],Kt.prototype,"hass",void 0);const Zt=2,Jt=t=>(...e)=>({_$litDirective$:t,values:e});class Yt{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}const Xt=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.(e,!1),Xt(t,e);return!0},Qt=t=>{let e,i;do{if(void 0===(e=t._$AM))break;i=e._$AN,i.delete(t),t=e}while(0===i?.size)},te=t=>{for(let e;e=t._$AM;t=e){let i=e._$AN;if(void 0===i)e._$AN=i=new Set;else if(i.has(t))break;i.add(t),oe(e)}};function ee(t){void 0!==this._$AN?(Qt(this),this._$AM=t,te(this)):this._$AM=t}function ie(t,e=!1,i=0){const o=this._$AH,a=this._$AN;if(void 0!==a&&0!==a.size)if(e)if(Array.isArray(o))for(let t=i;t{t.type==Zt&&(t._$AP??=ie,t._$AQ??=ee)};class ae extends Yt{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,i){super._$AT(t,e,i),te(this),this.isConnected=t._$AU}_$AO(t,e=!0){t!==this.isConnected&&(this.isConnected=t,t?this.reconnected?.():this.disconnected?.()),e&&(Xt(this,t),Qt(this))}setValue(t){if((t=>void 0===t.strings)(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}const re=new WeakMap,ne=Jt(class extends ae{render(t){return q}update(t,[e]){const i=e!==this.G;return i&&this.rt(void 0),(i||this.lt!==this.ct)&&(this.G=e,this.ht=t.options?.host,this.rt(this.ct=t.element)),q}rt(t){if(void 0!==this.G)if(this.isConnected||(t=void 0),"function"==typeof this.G){const e=this.ht??globalThis;let i=re.get(e);void 0===i&&(i=new WeakMap,re.set(e,i)),void 0!==i.get(this.G)&&this.G.call(this.ht,void 0),i.set(this.G,t),void 0!==t&&this.G.call(this.ht,t)}else this.G.value=t}get lt(){return"function"==typeof this.G?re.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),se=["climate","fan","humidifier"],ce={icons:!0,names:!0,states:!1};function le(t){if("string"==typeof t)return{entity:t};const e=t?.header&&"object"==typeof t.header?t.header:{};return{...t,entity:t?.entity??"",name:t?.name??e.name,icon:t?.icon??e.icon}}class de extends lt{constructor(){super(...arguments),this.config={entities:[]},this.expandedTargetIndex=null,this.editorConfigKeys=new WeakMap}static get styles(){return c` + `:B``}}i([mt()],Xt.prototype,"config",void 0),i([pt({attribute:!1})],Xt.prototype,"hass",void 0);const Qt=2,te=t=>(...e)=>({_$litDirective$:t,values:e});class ee{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}const ie=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.(e,!1),ie(t,e);return!0},oe=t=>{let e,i;do{if(void 0===(e=t._$AM))break;i=e._$AN,i.delete(t),t=e}while(0===i?.size)},ae=t=>{for(let e;e=t._$AM;t=e){let i=e._$AN;if(void 0===i)e._$AN=i=new Set;else if(i.has(t))break;i.add(t),se(e)}};function re(t){void 0!==this._$AN?(oe(this),this._$AM=t,ae(this)):this._$AM=t}function ne(t,e=!1,i=0){const o=this._$AH,a=this._$AN;if(void 0!==a&&0!==a.size)if(e)if(Array.isArray(o))for(let t=i;t{t.type==Qt&&(t._$AP??=ne,t._$AQ??=re)};class ce extends ee{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,i){super._$AT(t,e,i),ae(this),this.isConnected=t._$AU}_$AO(t,e=!0){t!==this.isConnected&&(this.isConnected=t,t?this.reconnected?.():this.disconnected?.()),e&&(ie(this,t),oe(this))}setValue(t){if((t=>void 0===t.strings)(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}const le=new WeakMap,de=te(class extends ce{render(t){return q}update(t,[e]){const i=e!==this.G;return i&&this.rt(void 0),(i||this.lt!==this.ct)&&(this.G=e,this.ht=t.options?.host,this.rt(this.ct=t.element)),q}rt(t){if(void 0!==this.G)if(this.isConnected||(t=void 0),"function"==typeof this.G){const e=this.ht??globalThis;let i=le.get(e);void 0===i&&(i=new WeakMap,le.set(e,i)),void 0!==i.get(this.G)&&this.G.call(this.ht,void 0),i.set(this.G,t),void 0!==t&&this.G.call(this.ht,t)}else this.G.value=t}get lt(){return"function"==typeof this.G?le.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),he=["climate","fan","humidifier"],ue={style:"header",icons:!0,names:!0,states:!1};function pe(t){if("string"==typeof t)return{entity:t};const e=t?.header&&"object"==typeof t.header?t.header:{};return{...t,entity:t?.entity??"",name:t?.name??e.name,icon:t?.icon??e.icon}}class me extends lt{constructor(){super(...arguments),this.config={entities:[]},this.expandedTargetIndex=null,this.editorConfigKeys=new WeakMap}static get styles(){return c` :host { display: block; } @@ -1862,6 +2025,25 @@ ha-card.standard-visuals .thermostat-trigger:active { gap: 8px; } + .selector-style-row { + display: grid; + gap: 6px; + } + + .selector-style-actions { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 8px; + } + + .selector-style-actions ha-button { + width: 100%; + } + + .selector-style-actions ha-button.selected { + --mdc-theme-primary: var(--primary-color); + } + .option-row { display: flex; align-items: center; @@ -1905,11 +2087,19 @@ ha-card.standard-visuals .thermostat-trigger:active { grid-template-columns: 1fr; } } - `}setConfig(t){this.config={...t}}commit(t){const e=this.cleanConfig(t);this.config=e,vt(this,"config-changed",{config:e})}cleanConfig(t){const e={...t};for(const t of Object.keys(e))void 0===e[t]&&delete e[t];return e.selector&&0===Object.keys(e.selector).length&&delete e.selector,e}getTargets(){return function(t){const e=(t.cards??t.entities??[]).map(le);return e.length?e:[{entity:""},{entity:""}]}(this.config)}updateTarget(t,e){const i=this.getTargets();i[t]={...i[t],...e},this.commitTargets(i)}cleanTargets(t){return t.map(t=>{const e=t.entity?.trim()??"",i=t.name?.trim(),o=t.icon?.trim(),{name:a,icon:r,entity:n,...s}=t;return i||o||0!==Object.keys(s).length?{...s,entity:e,...i?{name:i}:{},...o?{icon:o}:{}}:e})}addTarget(){const t=[...this.getTargets(),{entity:""}];this.commitTargets(t)}removeTarget(t){const e=this.getTargets().filter((e,i)=>i!==t);this.commitTargets(e.length?e:[{entity:""}])}commitTargets(t){const{entities:e,...i}=this.config;this.commit({...i,cards:this.cleanTargets(t)})}updateSelector(t,e){const i={...this.config.selector??{}},o=Boolean(e);o===ce[t]?delete i[t]:i[t]=o,this.commit({...this.config,selector:i})}isAutoSelectEnabled(){const t=this.config.auto_select;return!0===t||"recent_activity"===t||"object"==typeof t&&"recent_activity"===t?.mode}updateAutoSelect(t){const{auto_select:e,...i}=this.config;this.commit({...i,...t?{auto_select:{mode:"recent_activity"}}:{}})}updateRememberSelection(t){const{remember_selection:e,...i}=this.config;this.commit({...i,...t?{}:{remember_selection:!1}})}updateStorageKey(t){const e=t.trim(),{storage_key:i,...o}=this.config;this.commit({...o,...e?{storage_key:e}:{}})}getTargetCardConfig(e){const{name:i,icon:o,...a}=e,r=a.header&&"object"==typeof a.header?{...a.header}:{};return i&&!1!==a.header&&void 0===r.name&&(r.name=i),o&&!1!==a.header&&void 0===r.icon&&(r.icon=o),{type:a.type??`custom:${t}`,...a,...!1===a.header?{header:!1}:{header:r}}}configureNestedEditor(t,e){if(!t)return;const i=t,o=this.getTargetCardConfig(e),a=JSON.stringify(o);i.hass=this.hass,this.editorConfigKeys.get(t)!==a&&(i.setConfig?.(o),this.editorConfigKeys.set(t,a))}updateTargetCardConfig(t,e){e.stopPropagation();const i=this.getTargets();i[t]=le(e.detail.config),this.commitTargets(i)}toggleTargetEditor(t){this.expandedTargetIndex=this.expandedTargetIndex===t?null:t}renderEntityPicker(t,e){return B` + `}setConfig(t){this.config={...t}}commit(t){const e=this.cleanConfig(t);this.config=e,vt(this,"config-changed",{config:e})}cleanConfig(t){const e={...t};for(const t of Object.keys(e))void 0===e[t]&&delete e[t];return e.selector&&0===Object.keys(e.selector).length&&delete e.selector,e}getTargets(){return function(t){const e=(t.cards??t.entities??[]).map(pe);return e.length?e:[{entity:""},{entity:""}]}(this.config)}updateTarget(t,e){const i=this.getTargets();i[t]={...i[t],...e},this.commitTargets(i)}cleanTargets(t){return t.map(t=>{const e=t.entity?.trim()??"",i=t.name?.trim(),o=t.icon?.trim(),{name:a,icon:r,entity:n,...s}=t;return i||o||0!==Object.keys(s).length?{...s,entity:e,...i?{name:i}:{},...o?{icon:o}:{}}:e})}addTarget(){const t=[...this.getTargets(),{entity:""}];this.commitTargets(t)}removeTarget(t){const e=this.getTargets().filter((e,i)=>i!==t);this.commitTargets(e.length?e:[{entity:""}])}commitTargets(t){const{entities:e,...i}=this.config;this.commit({...i,cards:this.cleanTargets(t)})}updateSelector(t,e){const i={...this.config.selector??{}},o=Boolean(e);o===ue[t]?delete i[t]:i[t]=o,this.commit({...this.config,selector:i})}updateSelectorStyle(t){const e={...this.config.selector??{}},i="tabs"===t?"tabs":"header";i===ue.style?delete e.style:e.style=i,this.commit({...this.config,selector:e})}renderSelectorStyleOption(t,e,i){return B` + this.updateSelectorStyle(e)} + > + ${t} + + `}isAutoSelectEnabled(){const t=this.config.auto_select;return!0===t||"recent_activity"===t||"object"==typeof t&&"recent_activity"===t?.mode}updateAutoSelect(t){const{auto_select:e,...i}=this.config;this.commit({...i,...t?{auto_select:{mode:"recent_activity"}}:{}})}updateRememberSelection(t){const{remember_selection:e,...i}=this.config;this.commit({...i,...t?{}:{remember_selection:!1}})}updateStorageKey(t){const e=t.trim(),{storage_key:i,...o}=this.config;this.commit({...o,...e?{storage_key:e}:{}})}getTargetCardConfig(e){const{name:i,icon:o,...a}=e,r=a.header&&"object"==typeof a.header?{...a.header}:{};return i&&!1!==a.header&&void 0===r.name&&(r.name=i),o&&!1!==a.header&&void 0===r.icon&&(r.icon=o),{type:a.type??`custom:${t}`,...a,...!1===a.header?{header:!1}:{header:r}}}configureNestedEditor(t,e){if(!t)return;const i=t,o=this.getTargetCardConfig(e),a=JSON.stringify(o);i.hass=this.hass,this.editorConfigKeys.get(t)!==a&&(i.setConfig?.(o),this.editorConfigKeys.set(t,a))}updateTargetCardConfig(t,e){e.stopPropagation();const i=this.getTargets();i[t]=pe(e.detail.config),this.commitTargets(i)}toggleTargetEditor(t){this.expandedTargetIndex=this.expandedTargetIndex===t?null:t}renderEntityPicker(t,e){return B` this.updateTarget(e,{entity:t.detail.value})} @@ -1948,7 +2138,7 @@ ha-card.standard-visuals .thermostat-trigger:active {
this.configureNestedEditor(e,t))} + ${de(e=>this.configureNestedEditor(e,t))} @config-changed=${t=>this.updateTargetCardConfig(e,t)} >
@@ -1972,6 +2162,19 @@ ha-card.standard-visuals .thermostat-trigger:active {

Control how the group chooses and labels the active card.

+
+
+ Selector style + Choose the normal arrow/menu header or visible tab + buttons. +
+
+ ${this.renderSelectorStyleOption("Header navigation","header","header"===(t.style??ue.style))} + ${this.renderSelectorStyleOption("Tabbed buttons","tabs","tabs"===t.style)} +
+
${this.renderOption("Follow active device","Switch to a card when its mode or on/off activity changes.",this.isAutoSelectEnabled(),t=>this.updateAutoSelect(t))} ${this.renderOption("Remember selection","Keep the last selected card after the dashboard reloads.",!1!==this.config.remember_selection,t=>this.updateRememberSelection(t))} ${this.renderOption("Show icons","Show each card icon in the selector and menu.",!1!==t.icons,t=>this.updateSelector("icons",t))} @@ -1995,7 +2198,7 @@ ha-card.standard-visuals .thermostat-trigger:active { @change=${t=>o(t.currentTarget.checked)} >
- `}}function he(t){if("string"!=typeof t.entity_id)return;const[e]=t.entity_id.split(".");return"climate"===e?"hvac_action":"humidifier"===e?"action":void 0}function ue(t){const e=he(t),i=e?t.attributes?.[e]:void 0;return"string"==typeof i&&i?i:void 0}function pe(t,e,i){if("string"!=typeof t.entity_id)return void 0===t.state?"":String(t.state);const[o]=t.entity_id.split("."),a=ue(t),r=he(t);if(a)return"function"==typeof e.formatEntityAttributeValue&&r?e.formatEntityAttributeValue(t,r):i(a,function(t){if("string"!=typeof t.entity_id)return"";const[e]=t.entity_id.split("."),i=he(t);return e&&i?`state_attributes.${e}.${i}.`:""}(t));if("fan"===o&&"on"===t.state){if(t.attributes?.preset_mode)return"function"==typeof e.formatEntityAttributeValue?e.formatEntityAttributeValue(t,"preset_mode"):i(t.attributes.preset_mode,"state_attributes.fan.preset_mode.");if("number"==typeof t.attributes?.percentage)return`${t.attributes.percentage}%`;if(t.attributes?.speed)return String(t.attributes.speed)}return"function"==typeof e.formatEntityState?e.formatEntityState(t):i(String(t.state),`component.${o}.state._.`)}i([pt({attribute:!1})],de.prototype,"hass",void 0),i([gt()],de.prototype,"config",void 0),i([gt()],de.prototype,"expandedTargetIndex",void 0);const ge={auto:"mdi:radiator",cooling:"mdi:snowflake",fan:"mdi:fan",heating:"mdi:radiator",idle:"mdi:radiator-disabled",on:"mdi:power",off:"mdi:radiator-off"},me={auto:"mdi:air-conditioner",cooling:"mdi:snowflake",fan:"mdi:fan",heating:"mdi:radiator",idle:"mdi:air-conditioner",on:"mdi:air-conditioner",off:"mdi:air-conditioner"},fe={...ge,auto:"mdi:radiator",idle:ge.idle,off:"mdi:radiator"},ve={fan:{on:"mdi:fan",off:"mdi:fan-off"},humidifier:{on:"mdi:air-humidifier",off:"mdi:air-humidifier-off"}},ye={auto:"hass:autorenew",cool:"hass:snowflake",dry:"hass:water-percent",fan_only:"hass:fan",heat_cool:"hass:autorenew",heat:"hass:fire",on:"hass:power",off:"hass:power",forward:"mdi:arrow-right",reverse:"mdi:arrow-left",true:"mdi:fan",false:"mdi:fan-off",low:"mdi:fan-speed-1",mid:"mdi:fan-speed-2",medium:"mdi:fan-speed-2",high:"mdi:fan-speed-3",max:"st:fan-speed-4",turbo:"st:fan-speed-5",1:"mdi:fan-speed-1",2:"mdi:fan-speed-2",3:"mdi:fan-speed-3",4:"st:fan-speed-4",5:"st:fan-speed-5",automatic:"mdi:fan-auto",powerful:"mdi:fan-plus",quiet:"mdi:fan-minus",silent:"mdi:fan-minus",normal:"mdi:water-percent",vertical:"mdi:arrow-up-down",top:"mdi:arrow-up","top-middle":"mdi:arrow-top-right",middle:"mdi:arrow-collapse-vertical","middle-bottom":"mdi:arrow-bottom-right",bottom:"mdi:arrow-down",upper:"mdi:arrow-up",lower:"mdi:arrow-down",horizontal:"mdi:arrow-left-right",left:"mdi:arrow-left","center-left":"mdi:arrow-top-left",center:"mdi:arrow-collapse-horizontal","center-right":"mdi:arrow-top-right",right:"mdi:arrow-right",both:"mdi:arrow-all",swing:"mdi:arrow-oscillating",wide:"mdi:arrow-expand-horizontal",narrow:"mdi:arrow-collapse-horizontal",split:"mdi:arrow-split-vertical",none:"mdi:circle-off-outline",away:"mdi:home-export-outline",eco:"mdi:leaf",boost:"mdi:weather-windy",comfort:"mdi:sofa",auto_comfort:"mdi:sofa","auto-comfort":"mdi:sofa","auto comfort":"mdi:sofa",home:"mdi:home",sleep:"mdi:sleep",activity:"mdi:run"};function _e(t){const e=String(t),i=e.toLowerCase().replace(/\s+/g,"_");return ye[e]??ye[i]}function be(t){const e=String(t);return{low:"Low",mid:"Mid",medium:"Medium",high:"High",max:"Max",turbo:"Turbo",auto:"Auto"}[e.toLowerCase().replace(/\s+/g,"_")]??e}function we(t,e,i,o=!0){if(!1===t)return!1;let a;a="string"==typeof t?.name?t.name:!1!==t?.name&&("function"==typeof i.formatEntityName?i.formatEntityName(e):e.attributes.friendly_name);let r=o?function(t){const[e]=t.entity_id.split("."),i=ue(t),o=i?Se(t):void 0;return o??t.attributes.icon??Se(t)??ve[e]?.[t.state]??(i?ge:ye)}(e):function(t){return ue(t)?ge:ye}(e);return void 0!==t?.icon&&(r=t.icon),{name:a,icon:r,slashOffIcon:o&&Ae(e,r),toggle:t?.toggle?xe(t.toggle,i):null,toggles:$e(t,i),faults:ke(t?.faults,i)}}function xe(t,e){const i=e.states[t.entity];if(!i)return null;let o="";return o=!0===t?.name?i.attributes.friendly_name:t?.name??"",{entity:i,label:o,icon:t?.icon??!1,hide_when_off:t?.hide_when_off}}function $e(t,e){return[...t?.toggle?[t.toggle]:[],...Array.isArray(t?.toggles)?t.toggles:[]].map(t=>xe(t,e)).filter(t=>!!t)}function Se(t){const[e]=t.entity_id.split(".");if("climate"!==e)return;const i=Array.isArray(t.attributes?.hvac_modes)?t.attributes.hvac_modes:[],o=ue(t),a=String(o||t.state);return i.includes("cool")||i.includes("dry")||i.includes("fan_only")||["cool","cooling","dry","fan_only","fan"].includes(a)?me:fe}function Ae(t,e){if("off"!==t.state)return!1;const i="object"==typeof e?e[ue(t)||t.state]??!1:e;if("string"!=typeof i)return!1;const[o]=t.entity_id.split("."),a="climate"===o?ge.off:ve[o]?.off;return Boolean(a)&&i!==a&&!i.endsWith("-off")}function ke(t,e){return Array.isArray(t)?t.filter(({entity:t})=>Boolean(e.states?.[t])).map(({entity:t,...i})=>({...i,state:e.states[t],entity:t})):[]}const Ce={icons:!0,names:!0,states:!1},Ee=["climate","fan","humidifier"];function ze(t){return t.split(".")[0]}function Te(t){return"string"==typeof t?t.replace(/[^a-z0-9_-]/gi,""):""}function Oe(e){if("string"==typeof e){const i=e.trim();return i?{entity:i,config:{type:`custom:${t}`,entity:i}}:null}if(!e?.entity)return null;const{entity:i,name:o,icon:a,...r}=e,n="object"==typeof r.header&&r.header?{...r.header}:{};return o&&!1!==r.header&&void 0===n.name&&(n.name=o),a&&!1!==r.header&&void 0===n.icon&&(n.icon=a),{entity:i,config:{type:r.type??`custom:${t}`,...r,entity:i,...!1===r.header?{header:!1}:{header:n}}}}class Ne extends lt{constructor(){super(...arguments),this.targets=[],this.selectedEntity="",this.menuOpen=!1,this.cardFading=!1,this.embeddedCardEntity="",this.embeddedCardConfigSignature="",this.embeddedCardPendingSignature="",this.fadeInAfterSync=!1,this.activitySignatures=new Map,this.activitySignaturesInitialized=!1,this.persistedActivityApplied=!1,this.lastManualSelectionAt=0}static get styles(){return c` + `}}function ge(t){if("string"!=typeof t.entity_id)return;const[e]=t.entity_id.split(".");return"climate"===e?"hvac_action":"humidifier"===e?"action":void 0}function fe(t){const e=ge(t),i=e?t.attributes?.[e]:void 0;return"string"==typeof i&&i?i:void 0}function ve(t,e,i){if("string"!=typeof t.entity_id)return void 0===t.state?"":String(t.state);const[o]=t.entity_id.split("."),a=fe(t),r=ge(t);if(a)return"function"==typeof e.formatEntityAttributeValue&&r?e.formatEntityAttributeValue(t,r):i(a,function(t){if("string"!=typeof t.entity_id)return"";const[e]=t.entity_id.split("."),i=ge(t);return e&&i?`state_attributes.${e}.${i}.`:""}(t));if("fan"===o&&"on"===t.state){if(t.attributes?.preset_mode)return"function"==typeof e.formatEntityAttributeValue?e.formatEntityAttributeValue(t,"preset_mode"):i(t.attributes.preset_mode,"state_attributes.fan.preset_mode.");if("number"==typeof t.attributes?.percentage)return`${t.attributes.percentage}%`;if(t.attributes?.speed)return String(t.attributes.speed)}return"function"==typeof e.formatEntityState?e.formatEntityState(t):i(String(t.state),`component.${o}.state._.`)}i([pt({attribute:!1})],me.prototype,"hass",void 0),i([mt()],me.prototype,"config",void 0),i([mt()],me.prototype,"expandedTargetIndex",void 0);const ye={auto:"mdi:radiator",cooling:"mdi:snowflake",fan:"mdi:fan",heating:"mdi:radiator",idle:"mdi:radiator-disabled",on:"mdi:power",off:"mdi:radiator-off"},be={auto:"mdi:air-conditioner",cooling:"mdi:snowflake",fan:"mdi:fan",heating:"mdi:radiator",idle:"mdi:air-conditioner",on:"mdi:air-conditioner",off:"mdi:air-conditioner"},_e={...ye,auto:"mdi:radiator",idle:ye.idle,off:"mdi:radiator"},we={fan:{on:"mdi:fan",off:"mdi:fan-off"},humidifier:{on:"mdi:air-humidifier",off:"mdi:air-humidifier-off"}},xe={auto:"hass:autorenew",cool:"hass:snowflake",dry:"hass:water-percent",fan_only:"hass:fan",heat_cool:"hass:autorenew",heat:"hass:fire",on:"hass:power",off:"hass:power",forward:"mdi:arrow-right",reverse:"mdi:arrow-left",true:"mdi:fan",false:"mdi:fan-off",low:"mdi:fan-speed-1",mid:"mdi:fan-speed-2",medium:"mdi:fan-speed-2",high:"mdi:fan-speed-3",max:"st:fan-speed-4",turbo:"st:fan-speed-5",1:"mdi:fan-speed-1",2:"mdi:fan-speed-2",3:"mdi:fan-speed-3",4:"st:fan-speed-4",5:"st:fan-speed-5",automatic:"mdi:fan-auto",powerful:"mdi:fan-plus",quiet:"mdi:fan-minus",silent:"mdi:fan-minus",normal:"mdi:water-percent",vertical:"mdi:arrow-up-down",top:"mdi:arrow-up","top-middle":"mdi:arrow-top-right",middle:"mdi:arrow-collapse-vertical","middle-bottom":"mdi:arrow-bottom-right",bottom:"mdi:arrow-down",upper:"mdi:arrow-up",lower:"mdi:arrow-down",horizontal:"mdi:arrow-left-right",left:"mdi:arrow-left","center-left":"mdi:arrow-top-left",center:"mdi:arrow-collapse-horizontal","center-right":"mdi:arrow-top-right",right:"mdi:arrow-right",both:"mdi:arrow-all",swing:"mdi:arrow-oscillating",wide:"mdi:arrow-expand-horizontal",narrow:"mdi:arrow-collapse-horizontal",split:"mdi:arrow-split-vertical",none:"mdi:circle-off-outline",away:"mdi:home-export-outline",eco:"mdi:leaf",boost:"mdi:weather-windy",comfort:"mdi:sofa",auto_comfort:"mdi:sofa","auto-comfort":"mdi:sofa","auto comfort":"mdi:sofa",home:"mdi:home",sleep:"mdi:sleep",activity:"mdi:run"};function $e(t){const e=String(t),i=e.toLowerCase().replace(/\s+/g,"_");return xe[e]??xe[i]}function Se(t){const e=String(t);return{low:"Low",mid:"Mid",medium:"Medium",high:"High",max:"Max",turbo:"Turbo",auto:"Auto"}[e.toLowerCase().replace(/\s+/g,"_")]??e}function Ae(t,e,i,o=!0){if(!1===t)return!1;let a;a="string"==typeof t?.name?t.name:!1!==t?.name&&("function"==typeof i.formatEntityName?i.formatEntityName(e):e.attributes.friendly_name);let r=o?function(t){const[e]=t.entity_id.split("."),i=fe(t),o=i?Ee(t):void 0;return o??t.attributes.icon??Ee(t)??we[e]?.[t.state]??(i?ye:xe)}(e):function(t){return fe(t)?ye:xe}(e);return void 0!==t?.icon&&(r=t.icon),{name:a,icon:r,slashOffIcon:o&&ze(e,r),toggle:t?.toggle?ke(t.toggle,i):null,toggles:Ce(t,i),faults:Te(t?.faults,i)}}function ke(t,e){const i=e.states[t.entity];if(!i)return null;let o="";return o=!0===t?.name?i.attributes.friendly_name:t?.name??"",{entity:i,label:o,icon:t?.icon??!1,hide_when_off:t?.hide_when_off}}function Ce(t,e){return[...t?.toggle?[t.toggle]:[],...Array.isArray(t?.toggles)?t.toggles:[]].map(t=>ke(t,e)).filter(t=>!!t)}function Ee(t){const[e]=t.entity_id.split(".");if("climate"!==e)return;const i=Array.isArray(t.attributes?.hvac_modes)?t.attributes.hvac_modes:[],o=fe(t),a=String(o||t.state);return i.includes("cool")||i.includes("dry")||i.includes("fan_only")||["cool","cooling","dry","fan_only","fan"].includes(a)?be:_e}function ze(t,e){if("off"!==t.state)return!1;const i="object"==typeof e?e[fe(t)||t.state]??!1:e;if("string"!=typeof i)return!1;const[o]=t.entity_id.split("."),a="climate"===o?ye.off:we[o]?.off;return Boolean(a)&&i!==a&&!i.endsWith("-off")}function Te(t,e){return Array.isArray(t)?t.filter(({entity:t})=>Boolean(e.states?.[t])).map(({entity:t,...i})=>({...i,state:e.states[t],entity:t})):[]}const Oe={style:"header",icons:!0,names:!0,states:!1},Re=["climate","fan","humidifier"];function Ne(t){return t.split(".")[0]}function Me(t){return"string"==typeof t?t.replace(/[^a-z0-9_-]/gi,""):""}function je(e){if("string"==typeof e){const i=e.trim();return i?{entity:i,config:{type:`custom:${t}`,entity:i}}:null}if(!e?.entity)return null;const{entity:i,name:o,icon:a,...r}=e,n="object"==typeof r.header&&r.header?{...r.header}:{};return o&&!1!==r.header&&void 0===n.name&&(n.name=o),a&&!1!==r.header&&void 0===n.icon&&(n.icon=a),{entity:i,config:{type:r.type??`custom:${t}`,...r,entity:i,...!1===r.header?{header:!1}:{header:n}}}}class Pe extends lt{constructor(){super(...arguments),this.targets=[],this.selectedEntity="",this.menuOpen=!1,this.cardFading=!1,this.embeddedCardEntity="",this.embeddedCardConfigSignature="",this.embeddedCardPendingSignature="",this.fadeInAfterSync=!1,this.activitySignatures=new Map,this.activitySignaturesInitialized=!1,this.persistedActivityApplied=!1,this.lastManualSelectionAt=0}static get styles(){return c` :host { display: block; } @@ -2033,6 +2236,171 @@ ha-card.standard-visuals .thermostat-trigger:active { transform: translateY(var(--st-group-header-top-buffer, 2px)); } + .group-selector.tabs { + display: block; + padding: calc(var(--st-spacing, var(--st-default-spacing, 4px)) * 3) + calc(var(--st-spacing, var(--st-default-spacing, 4px)) * 3) 0; + height: auto; + transform: translateY(var(--st-group-header-top-buffer, 2px)); + } + + .group-tabs { + display: grid; + grid-template-columns: repeat( + auto-fit, + minmax(var(--st-group-tab-min-width, 120px), 1fr) + ); + gap: calc(var(--st-spacing, var(--st-default-spacing, 4px)) * 2); + min-width: 0; + } + + .group-tab { + appearance: none; + border: 0; + border-radius: var(--st-group-tab-radius, 10px); + min-width: 0; + min-height: var(--st-group-tab-height, 46px); + padding: 7px 12px; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + color: var(--st-group-tab-color, var(--primary-text-color)); + background: var( + --st-group-tab-background, + color-mix(in srgb, var(--primary-text-color) 12%, transparent) + ); + font: inherit; + font-weight: 600; + line-height: 1.15; + cursor: pointer; + transition: + background 160ms var(--st-motion-ease, ease), + color 160ms var(--st-motion-ease, ease), + opacity 160ms var(--st-motion-ease, ease); + } + + .group-tab:hover, + .group-tab:focus-visible { + background: var( + --st-group-tab-hover-background, + color-mix(in srgb, currentColor 22%, transparent) + ); + } + + .group-tab:focus-visible { + outline: 2px solid var(--primary-color); + outline-offset: 2px; + } + + .group-tab.selected { + color: var(--st-group-tab-selected-color, #fff); + background: var( + --st-group-tab-selected-background, + var(--primary-color) + ); + } + + .group-tab ha-icon { + --mdc-icon-size: 21px; + --iron-icon-width: 21px; + --iron-icon-height: 21px; + flex: 0 0 auto; + } + + .group-tab-labels { + display: grid; + min-width: 0; + gap: 1px; + text-align: center; + } + + .group-tab-name, + .group-tab-state { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .group-tab-state { + color: currentColor; + opacity: 0.78; + font-size: var(--ha-font-size-xs, 11px); + font-weight: 500; + } + + .group-tab.state-off { + --st-group-tab-background: color-mix( + in srgb, + var(--state-icon-color, var(--secondary-text-color)) 20%, + transparent + ); + --st-group-tab-color: var(--secondary-text-color); + } + + .group-tab.cooling, + .group-tab.state-cool { + --st-group-tab-background: color-mix( + in srgb, + var(--state-climate-cool-color, var(--cool-color, #2b9af9)) 22%, + transparent + ); + --st-group-tab-color: var( + --state-climate-cool-color, + var(--cool-color, #2b9af9) + ); + --st-group-tab-selected-background: var( + --state-climate-cool-color, + var(--cool-color, #2b9af9) + ); + } + + .group-tab.heating, + .group-tab.state-heat { + --st-group-tab-background: color-mix( + in srgb, + var(--state-climate-heat-color, var(--heat-color, #ff8100)) 22%, + transparent + ); + --st-group-tab-color: var( + --state-climate-heat-color, + var(--heat-color, #ff8100) + ); + --st-group-tab-selected-background: var( + --state-climate-heat-color, + var(--heat-color, #ff8100) + ); + } + + .group-tab.drying, + .group-tab.state-dry { + --st-group-tab-background: color-mix( + in srgb, + var(--state-climate-dry-color, var(--dry-color, #efbd07)) 24%, + transparent + ); + --st-group-tab-color: var( + --state-climate-dry-color, + var(--dry-color, #efbd07) + ); + --st-group-tab-selected-background: var( + --state-climate-dry-color, + var(--dry-color, #efbd07) + ); + } + + .group-tab.domain-fan:not(.state-off), + .group-tab.humidifying { + --st-group-tab-background: color-mix( + in srgb, + var(--primary-color) 22%, + transparent + ); + --st-group-tab-color: var(--primary-color); + --st-group-tab-selected-background: var(--primary-color); + } + .group-title { flex: 1 1 auto; min-width: 0; @@ -2469,7 +2837,7 @@ ha-card.standard-visuals .thermostat-trigger:active { animation: st-group-fan-spin var(--st-fan-spin-duration, 2.4s) linear infinite; } - `}static getConfigElement(){return window.document.createElement(`${t}-group-editor`)}static getStubConfig(t){return{entities:Object.keys(t?.states??{}).filter(t=>Ee.includes(ze(t))).slice(0,2),card:{}}}setConfig(t){this.clearAutoSelectResumeTimer();const e=(t.cards??t.entities??[]).map(Oe).filter(Boolean);if(!e.length)throw new Error("Simple Thermostat Group requires at least one card");this.config={...t,selector:{...Ce,...t.selector??{}}},this.targets=e,this.selectedEntity=this.getInitialSelection(t,e),this.activitySignatures.clear(),this.activitySignaturesInitialized=!1,this.persistedActivityApplied=!1}updated(){this.syncAutoSelectRecentActivity(),this.syncEmbeddedCard(),this.syncOutsideClickListener(),this.syncTitleFit()}getCardSize(){if(!this.config||!this.targets.length)return 1;const t=this.getSelectedTarget(),e=this.getTargetCardConfig(t),i=Array.isArray(e.entities)?e.entities.length:0,o=i?Math.max(1,Math.ceil(i/2)):0,a=this.getConfiguredModeRowCount(e),r=!0===e.hide_setpoint?0:1;return Math.max(2,1+o+r+a)}disconnectedCallback(){this.clearOutsideClickListener(),this.clearAutoSelectResumeTimer(),super.disconnectedCallback()}getInitialSelection(t,e){const i=new Set(e.map(t=>t.entity)),o=!1===t.remember_selection?"":this.readStoredSelection(t);return o&&i.has(o)?o:t.selected&&i.has(t.selected)?t.selected:e[0].entity}readStoredSelection(t){return this.readStoredSelectionRecord(t)?.entity??""}readStoredSelectionRecord(t){try{const e=window.localStorage?.getItem(this.getStorageKey(t));if(!e)return;if(!e.trim().startsWith("{"))return{entity:e,timestamp:0};const i=JSON.parse(e);if("string"==typeof i.entity)return{entity:i.entity,timestamp:Number.isFinite(i.timestamp)?Number(i.timestamp):0}}catch(t){return}}writeStoredSelection(t){if(this.config&&!1!==this.config.remember_selection)try{window.localStorage?.setItem(this.getStorageKey(this.config),JSON.stringify({entity:t,timestamp:Date.now()}))}catch(t){}}readStoredActivity(t){try{const e=window.localStorage?.getItem(this.getActivityStorageKey(t));if(!e)return;const i=JSON.parse(e);if("string"==typeof i.entity&&"string"==typeof i.signature&&Number.isFinite(i.timestamp))return{entity:i.entity,signature:i.signature,timestamp:Number(i.timestamp)}}catch(t){return}}writeStoredActivity(t){if(this.config)try{window.localStorage?.setItem(this.getActivityStorageKey(this.config),JSON.stringify(t))}catch(t){}}getStorageKey(t){if(t.storage_key)return`simple-thermostat-group:${t.storage_key}`;return`simple-thermostat-group:${this.targets.map(t=>t.entity).join("|")}`}getActivityStorageKey(t){return`${this.getStorageKey(t)}:recent-activity`}getConfiguredModeRowCount(t){const e=t.control;return!1===e?0:Array.isArray(e)?e.filter(Boolean).length:e&&"object"==typeof e?Object.entries(e).filter(([t,e])=>!t.startsWith("_")&&!1!==e).length:1}clearAutoSelectResumeTimer(){void 0!==this.autoSelectResumeTimer&&(window.clearTimeout(this.autoSelectResumeTimer),this.autoSelectResumeTimer=void 0)}getSelectedTarget(){return this.targets.find(t=>t.entity===this.selectedEntity)??this.targets[0]}getSelectedState(){const t=this.getSelectedTarget();return this.hass?.states?.[t.entity]}openSelectedPopover(){const t=this.getSelectedTarget();t?.entity&&vt(this,"hass-more-info",{entityId:t.entity})}onSelectorHeaderKeyDown(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.openSelectedPopover())}getGroupCardClasses(){const t=this.getSelectedState();if(!t)return"group-card group-shell";const e=ze(t.entity_id),i=ue(t),o=["unavailable","unknown"].includes(String(t.state));return["group-card","group-shell",`domain-${Te(e)}`,`state-${Te(t.state)}`,Te(i),o&&Te(t.state)].filter(Boolean).join(" ")}getGroupCardStyle(){const t=this.getSelectedState();return t?function(t,e={}){if("fan"!==t)return"";const i=Number(e?.percentage);if(Number.isNaN(i))return"";const o=Math.min(Math.max(i,0),100);return`--st-fan-spin-duration: ${Math.max(.9,3.2-o/100*2.1).toFixed(2)}s;`}(ze(t.entity_id),t.attributes):""}getSelectedIndex(){const t=this.targets.findIndex(t=>t.entity===this.selectedEntity);return-1===t?0:t}isRecentActivityAutoSelectEnabled(){const t=this.config?.auto_select;return!!t&&(!0===t||"recent_activity"===t||"object"==typeof t&&"recent_activity"===t.mode)}getAutoSelectManualPauseMs(){const t=this.config?.auto_select;if(t&&"object"==typeof t){const e=Number(t.manual_pause_ms??t.cooldown_ms);if(Number.isFinite(e)&&e>=0)return e}return 3e4}pauseAutoSelectAfterManualSelection(){this.lastManualSelectionAt=Date.now(),this.clearAutoSelectResumeTimer(),this.isRecentActivityAutoSelectEnabled()&&(this.autoSelectResumeTimer=window.setTimeout(()=>{this.autoSelectResumeTimer=void 0,this.lastManualSelectionAt=0,this.isRecentActivityAutoSelectEnabled()&&!this.menuOpen&&this.selectMostRecentStateActivity()},this.getAutoSelectManualPauseMs()))}getActivitySignature(t){const e=this.hass?.states?.[t.entity];if(!e)return"";const i=ze(t.entity),o=e.attributes??{},a=ue(e)??"",r="climate"===i?["hvac_action","temperature","target_temp_low","target_temp_high","preset_mode","fan_mode","swing_mode","swing_horizontal_mode","swing_vertical_mode"]:"fan"===i?["percentage","preset_mode","direction","oscillating"]:"humidifier"===i?["action","humidity","mode"]:[],n=[`state:${e.state}`,`action:${a}`];return r.forEach(t=>{n.push(`${t}:${JSON.stringify(o[t]??null)}`)}),n.join("|")}getActivityTimestamp(t){const e=this.hass?.states?.[t.entity],i=this.getActivityActiveRank(t)>1?e?.last_updated??e?.last_changed:e?.last_changed??e?.last_updated,o="string"==typeof i?Date.parse(i):NaN;return Number.isFinite(o)?o:0}getActivityCandidate(t,e=this.getActivityTimestamp(t)){return{target:t,timestamp:e,activeRank:this.getActivityActiveRank(t)}}isBetterActivityCandidate(t,e){return!e||(t.activeRank!==e.activeRank?t.activeRank>e.activeRank:t.timestamp>=e.timestamp)}getMostRecentStateActivityCandidate(){return this.targets.map(t=>this.getActivityCandidate(t)).filter(t=>t.timestamp>0).reduce((t,e)=>this.isBetterActivityCandidate(e,t)?e:t,void 0)}applyPersistedActivitySelection(t){if(this.persistedActivityApplied||!this.config||!this.isRecentActivityAutoSelectEnabled())return;this.persistedActivityApplied=!0;const e=this.readStoredSelectionRecord(this.config),i=e&&this.targets.some(t=>t.entity===e.entity),o=this.getMostRecentStateActivityCandidate();if(i&&(!o||o.timestamp<=e.timestamp))return void this.selectEntity(e.entity,!1);const a=this.readStoredActivity(this.config);if(!a)return void this.selectMostRecentStateActivity(t);if(!this.targets.some(t=>t.entity===a.entity))return void this.selectMostRecentStateActivity(t);const r=this.targets.find(t=>t.entity===a.entity),n=t.get(a.entity);if(r&&n&&n===a.signature){const e=this.getActivityCandidate(r,a.timestamp);return o&&this.isBetterActivityCandidate(o,e)?void this.selectMostRecentStateActivity(t):void this.selectEntity(a.entity,!1)}this.selectMostRecentStateActivity(t)}selectMostRecentStateActivity(t){const e=this.getMostRecentStateActivityCandidate();if(e&&e.target.entity!==this.selectedEntity&&this.selectEntity(e.target.entity,!1),e&&t){const i=t.get(e.target.entity);i&&this.writeStoredActivity({entity:e.target.entity,signature:i,timestamp:e.timestamp})}}getActivityActiveRank(t){const e=this.hass?.states?.[t.entity];if(!e)return 0;const i=ze(t.entity),o=ue(e)??e.attributes?.action,a="string"==typeof e.state?e.state.toLowerCase():"",r="string"==typeof o?o.toLowerCase():"";if("climate"===i)return["heating","cooling","drying"].includes(r)?2:a&&"off"!==a?1:0;if("fan"===i){const t=Number(e.attributes?.percentage);return"on"===a||t>0?2:0}return"humidifier"===i?["drying","humidifying"].includes(r)?2:a&&!["off","idle"].includes(a)?1:0:a&&"off"!==a?1:0}syncAutoSelectRecentActivity(){if(!this.config||!this.hass||!this.targets.length)return;const t=[],e=new Map;if(this.targets.forEach(i=>{const o=this.getActivitySignature(i);e.set(i.entity,o),this.activitySignaturesInitialized&&o&&o!==this.activitySignatures.get(i.entity)&&(this.writeStoredActivity({entity:i.entity,signature:o,timestamp:Date.now()}),t.push(this.getActivityCandidate(i,Date.now())))}),this.activitySignatures=e,!this.activitySignaturesInitialized)return this.activitySignaturesInitialized=!0,void this.applyPersistedActivitySelection(e);if(!t.length||!this.isRecentActivityAutoSelectEnabled()||this.menuOpen||Date.now()-this.lastManualSelectionAtthis.isBetterActivityCandidate(e,t)?e:t);this.selectEntity(i.target.entity,!1)}getTargetLabel(t){const e=this.parseTargetHeader(t);if(e&&"string"==typeof e.name)return e.name;const i=this.hass?.states?.[t.entity];return i&&"function"==typeof this.hass?.formatEntityName?this.hass.formatEntityName(i):i?.attributes?.friendly_name??t.entity}getTargetIcon(t){if(!(this.config?.selector??Ce).icons)return"";const e=this.parseTargetHeader(t);if(e&&e.icon)return this.resolveHeaderIcon(e.icon,t);const i=this.hass?.states?.[t.entity];if(i?.attributes?.icon)return i.attributes.icon;const o=ze(t.entity);return"fan"===o?"mdi:fan":"humidifier"===o?"mdi:air-humidifier":"mdi:air-conditioner"}getTargetHeaderData(t){return this.parseTargetHeader(t)}parseTargetHeader(t){const e=this.hass?.states?.[t.entity];if(!e||!this.hass)return null;const i=this.getTargetCardConfig(t);return we(i.header,e,this.hass,!1!==i.enhanced_visuals)}resolveHeaderIcon(t,e){if("string"==typeof t)return t;if(!t||"object"!=typeof t)return"";const i=this.hass?.states?.[e.entity];if(!i)return"";const o=t[ue(i)||String(i.state)];return"string"==typeof o?o:""}getHeaderToggleConfigs(t){const e=t.config.header;return e&&"object"==typeof e?[...e.toggle?[e.toggle]:[],...Array.isArray(e.toggles)?e.toggles:[]].filter(t=>t?.entity&&this.hass?.states?.[t.entity]):[]}getEmbeddedConfig(){const t=this.getSelectedTarget();return this.getTargetCardConfig(t)}getEmbeddedConfigSignature(t){return JSON.stringify(t,(t,e)=>!e||"object"!=typeof e||Array.isArray(e)?e:Object.keys(e).sort().reduce((t,i)=>(t[i]=e[i],t),{}))}getTargetCardConfig(e){const i={...this.config?.card??{},...this.getSourceTargetConfig(e),...e.config};if(!i.card_mod){const t=this.getFallbackCardMod();t&&(i.card_mod=t)}return{...i,embedded:!0,entity:e.entity,type:e.config.type??`custom:${t}`}}getSourceTargetConfig(t){const e=(this.config?.cards??this.config?.entities??[]).find(e=>!!e&&"object"==typeof e&&e.entity===t.entity);return e&&"object"==typeof e?e:{}}getFallbackCardMod(){const t=(this.config?.card??{}).card_mod;if(t)return t;const e=(this.config?.cards??this.config?.entities??[]).find(t=>!!t&&"object"==typeof t&&!!t.card_mod);return e?.card_mod}getCardHelpers(){return this.cardHelpersPromise||(this.cardHelpersPromise="function"==typeof window.loadCardHelpers?window.loadCardHelpers():Promise.reject(new Error("Home Assistant card helpers unavailable"))),this.cardHelpersPromise}createFallbackEmbeddedCardElement(e){const i=window.document.createElement(t);if("function"==typeof i.setConfig)return i.setConfig(e),i}installEmbeddedCard(t,e,i,o){this.config&&this.hass&&(e&&"function"==typeof e.setConfig?this.getEmbeddedConfigSignature(this.getEmbeddedConfig())===o&&(this.embeddedCard=e,this.embeddedCardEntity=String(i.entity??""),this.embeddedCardConfigSignature=o,this.embeddedCardPendingSignature="",t.replaceChildren(e),"function"==typeof e.setConfig&&e.setConfig(i),e.hass=this.hass,this.syncEmbeddedPresentation()):this.embeddedCardPendingSignature="")}syncEmbeddedCard(){if(!this.config||!this.hass)return;const e=this.renderRoot.querySelector(".embedded-card-host");if(!e)return;const i=this.getEmbeddedConfig(),o=this.getEmbeddedConfigSignature(i);if(!this.embeddedCard||this.embeddedCardEntity!==i.entity||this.embeddedCardConfigSignature!==o){if("function"!=typeof window.loadCardHelpers){const a=window.customElements.get(t)?this.createFallbackEmbeddedCardElement(i):void 0;return a?void this.installEmbeddedCard(e,a,i,o):void(this.embeddedCardPendingSignature="")}if(this.embeddedCardPendingSignature===o)return;return this.embeddedCardPendingSignature=o,void this.getCardHelpers().then(t=>t.createCardElement(i)).catch(()=>window.customElements.get(t)?this.createFallbackEmbeddedCardElement(i):void 0).then(t=>this.installEmbeddedCard(e,t,i,o))}this.embeddedCard.hass=this.hass,this.syncEmbeddedPresentation()}syncEmbeddedPresentation(){const t=this.embeddedCard;(t?.updateComplete??Promise.resolve()).catch(()=>{}).then(()=>window.requestAnimationFrame(()=>this.applyEmbeddedPresentation()))}applyEmbeddedPresentation(){const t=this.renderRoot.querySelector(".embedded-card-host"),e=this.renderRoot.querySelector(".group-selector"),i=this.embeddedCard;t&&i&&(t.style.removeProperty("--st-group-cropped-header-height"),i.style.setProperty("--st-group-embedded-header-min-height",this.getEmbeddedHeaderReserve(i,e)),this.fadeInAfterSync&&(this.fadeInAfterSync=!1,window.requestAnimationFrame(()=>{this.cardFading=!1})))}getEmbeddedHeaderReserve(t,e){const i="calc(var(--st-group-header-control-height, 34px) + var(--st-group-header-top-buffer, 2px) + calc(var(--st-spacing, var(--st-default-spacing, 4px)) * 6))",o=this.getEmbeddedHeaderReserveMinimum();if(!e)return i;const a=t.getBoundingClientRect(),r=e.getBoundingClientRect(),n=Math.ceil(r.bottom-a.top+8),s=Math.max(n,o);return Number.isFinite(s)&&s>24?`${s}px`:i}getEmbeddedHeaderReserveMinimum(){const t=getComputedStyle(this),e=parseFloat(t.getPropertyValue("--st-group-header-control-height"))||34,i=parseFloat(t.getPropertyValue("--st-group-header-top-buffer"))||2,o=parseFloat(t.getPropertyValue("--st-spacing"))||parseFloat(t.getPropertyValue("--st-default-spacing"))||4;return Math.ceil(e+i+4*o)}selectEntity(t,e=!0){if(this.menuOpen=!1,t===this.selectedEntity)return;e&&this.pauseAutoSelectAfterManualSelection();const i=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;if(!this.embeddedCard||i)return this.fadeInAfterSync=!1,this.cardFading=!1,this.selectedEntity=t,void(e&&this.writeStoredSelection(t));this.cardFading=!0,this.fadeInAfterSync=!0,this.selectedEntity=t,e&&this.writeStoredSelection(t)}selectOffset(t){if(this.targets.length<2)return;const e=(this.getSelectedIndex()+t+this.targets.length)%this.targets.length;this.selectEntity(this.targets[e].entity)}toggleHeaderEntity(t,e){t.stopPropagation();const i=Boolean(t.target.checked);this.hass?.callService?.("homeassistant","turn_"+(i?"on":"off"),{entity_id:e})}renderHeaderToggles(t){const e=this.getHeaderToggleConfigs(t);return e.length?B` + `}static getConfigElement(){return window.document.createElement(`${t}-group-editor`)}static getStubConfig(t){return{entities:Object.keys(t?.states??{}).filter(t=>Re.includes(Ne(t))).slice(0,2),card:{}}}setConfig(t){this.clearAutoSelectResumeTimer();const e=(t.cards??t.entities??[]).map(je).filter(Boolean);if(!e.length)throw new Error("Simple Thermostat Group requires at least one card");this.config={...t,selector:{...Oe,...t.selector??{}}},this.targets=e,this.selectedEntity=this.getInitialSelection(t,e),this.activitySignatures.clear(),this.activitySignaturesInitialized=!1,this.persistedActivityApplied=!1}updated(){this.syncAutoSelectRecentActivity(),this.syncEmbeddedCard(),this.syncOutsideClickListener(),this.syncTitleFit()}getCardSize(){if(!this.config||!this.targets.length)return 1;const t=this.getSelectedTarget(),e=this.getTargetCardConfig(t),i=Array.isArray(e.entities)?e.entities.length:0,o=i?Math.max(1,Math.ceil(i/2)):0,a=this.getConfiguredModeRowCount(e),r=!0===e.hide_setpoint?0:1;return Math.max(2,1+o+r+a)}disconnectedCallback(){this.clearOutsideClickListener(),this.clearAutoSelectResumeTimer(),super.disconnectedCallback()}getInitialSelection(t,e){const i=new Set(e.map(t=>t.entity)),o=!1===t.remember_selection?"":this.readStoredSelection(t);return o&&i.has(o)?o:t.selected&&i.has(t.selected)?t.selected:e[0].entity}readStoredSelection(t){return this.readStoredSelectionRecord(t)?.entity??""}readStoredSelectionRecord(t){try{const e=window.localStorage?.getItem(this.getStorageKey(t));if(!e)return;if(!e.trim().startsWith("{"))return{entity:e,timestamp:0};const i=JSON.parse(e);if("string"==typeof i.entity)return{entity:i.entity,timestamp:Number.isFinite(i.timestamp)?Number(i.timestamp):0}}catch(t){return}}writeStoredSelection(t){if(this.config&&!1!==this.config.remember_selection)try{window.localStorage?.setItem(this.getStorageKey(this.config),JSON.stringify({entity:t,timestamp:Date.now()}))}catch(t){}}readStoredActivity(t){try{const e=window.localStorage?.getItem(this.getActivityStorageKey(t));if(!e)return;const i=JSON.parse(e);if("string"==typeof i.entity&&"string"==typeof i.signature&&Number.isFinite(i.timestamp))return{entity:i.entity,signature:i.signature,timestamp:Number(i.timestamp)}}catch(t){return}}writeStoredActivity(t){if(this.config)try{window.localStorage?.setItem(this.getActivityStorageKey(this.config),JSON.stringify(t))}catch(t){}}getStorageKey(t){if(t.storage_key)return`simple-thermostat-group:${t.storage_key}`;return`simple-thermostat-group:${this.targets.map(t=>t.entity).join("|")}`}getActivityStorageKey(t){return`${this.getStorageKey(t)}:recent-activity`}getConfiguredModeRowCount(t){const e=t.control;return!1===e?0:Array.isArray(e)?e.filter(Boolean).length:e&&"object"==typeof e?Object.entries(e).filter(([t,e])=>!t.startsWith("_")&&!1!==e).length:1}clearAutoSelectResumeTimer(){void 0!==this.autoSelectResumeTimer&&(window.clearTimeout(this.autoSelectResumeTimer),this.autoSelectResumeTimer=void 0)}getSelectedTarget(){return this.targets.find(t=>t.entity===this.selectedEntity)??this.targets[0]}getSelectedState(){const t=this.getSelectedTarget();return this.hass?.states?.[t.entity]}openSelectedPopover(){const t=this.getSelectedTarget();t?.entity&&vt(this,"hass-more-info",{entityId:t.entity})}onSelectorHeaderKeyDown(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.openSelectedPopover())}getGroupCardClasses(){const t=this.getSelectedState();if(!t)return"group-card group-shell";const e=Ne(t.entity_id),i=fe(t),o=["unavailable","unknown"].includes(String(t.state));return["group-card","group-shell",`domain-${Me(e)}`,`state-${Me(t.state)}`,Me(i),o&&Me(t.state)].filter(Boolean).join(" ")}getTargetClasses(t){const e=this.hass?.states?.[t.entity];if(!e)return"";const i=Ne(e.entity_id),o=fe(e);return[`domain-${Me(i)}`,`state-${Me(e.state)}`,Me(o)].filter(Boolean).join(" ")}getGroupCardStyle(){const t=this.getSelectedState();return t?function(t,e={}){if("fan"!==t)return"";const i=Number(e?.percentage);if(Number.isNaN(i))return"";const o=Math.min(Math.max(i,0),100);return`--st-fan-spin-duration: ${Math.max(.9,3.2-o/100*2.1).toFixed(2)}s;`}(Ne(t.entity_id),t.attributes):""}getSelectedIndex(){const t=this.targets.findIndex(t=>t.entity===this.selectedEntity);return-1===t?0:t}isRecentActivityAutoSelectEnabled(){const t=this.config?.auto_select;return!!t&&(!0===t||"recent_activity"===t||"object"==typeof t&&"recent_activity"===t.mode)}getAutoSelectManualPauseMs(){const t=this.config?.auto_select;if(t&&"object"==typeof t){const e=Number(t.manual_pause_ms??t.cooldown_ms);if(Number.isFinite(e)&&e>=0)return e}return 3e4}pauseAutoSelectAfterManualSelection(){this.lastManualSelectionAt=Date.now(),this.clearAutoSelectResumeTimer(),this.isRecentActivityAutoSelectEnabled()&&(this.autoSelectResumeTimer=window.setTimeout(()=>{this.autoSelectResumeTimer=void 0,this.lastManualSelectionAt=0,this.isRecentActivityAutoSelectEnabled()&&!this.menuOpen&&this.selectMostRecentStateActivity()},this.getAutoSelectManualPauseMs()))}getActivitySignature(t){const e=this.hass?.states?.[t.entity];if(!e)return"";const i=Ne(t.entity),o=e.attributes??{},a=fe(e)??"",r="climate"===i?["hvac_action","temperature","target_temp_low","target_temp_high","preset_mode","fan_mode","swing_mode","swing_horizontal_mode","swing_vertical_mode"]:"fan"===i?["percentage","preset_mode","direction","oscillating"]:"humidifier"===i?["action","humidity","mode"]:[],n=[`state:${e.state}`,`action:${a}`];return r.forEach(t=>{n.push(`${t}:${JSON.stringify(o[t]??null)}`)}),n.join("|")}getActivityTimestamp(t){const e=this.hass?.states?.[t.entity],i=this.getActivityActiveRank(t)>1?e?.last_updated??e?.last_changed:e?.last_changed??e?.last_updated,o="string"==typeof i?Date.parse(i):NaN;return Number.isFinite(o)?o:0}getActivityCandidate(t,e=this.getActivityTimestamp(t)){return{target:t,timestamp:e,activeRank:this.getActivityActiveRank(t)}}isBetterActivityCandidate(t,e){return!e||(t.activeRank!==e.activeRank?t.activeRank>e.activeRank:t.timestamp>=e.timestamp)}getMostRecentStateActivityCandidate(){return this.targets.map(t=>this.getActivityCandidate(t)).filter(t=>t.timestamp>0).reduce((t,e)=>this.isBetterActivityCandidate(e,t)?e:t,void 0)}applyPersistedActivitySelection(t){if(this.persistedActivityApplied||!this.config||!this.isRecentActivityAutoSelectEnabled())return;this.persistedActivityApplied=!0;const e=this.readStoredSelectionRecord(this.config),i=e&&this.targets.some(t=>t.entity===e.entity),o=this.getMostRecentStateActivityCandidate();if(i&&(!o||o.timestamp<=e.timestamp))return void this.selectEntity(e.entity,!1);const a=this.readStoredActivity(this.config);if(!a)return void this.selectMostRecentStateActivity(t);if(!this.targets.some(t=>t.entity===a.entity))return void this.selectMostRecentStateActivity(t);const r=this.targets.find(t=>t.entity===a.entity),n=t.get(a.entity);if(r&&n&&n===a.signature){const e=this.getActivityCandidate(r,a.timestamp);return o&&this.isBetterActivityCandidate(o,e)?void this.selectMostRecentStateActivity(t):void this.selectEntity(a.entity,!1)}this.selectMostRecentStateActivity(t)}selectMostRecentStateActivity(t){const e=this.getMostRecentStateActivityCandidate();if(e&&e.target.entity!==this.selectedEntity&&this.selectEntity(e.target.entity,!1),e&&t){const i=t.get(e.target.entity);i&&this.writeStoredActivity({entity:e.target.entity,signature:i,timestamp:e.timestamp})}}getActivityActiveRank(t){const e=this.hass?.states?.[t.entity];if(!e)return 0;const i=Ne(t.entity),o=fe(e)??e.attributes?.action,a="string"==typeof e.state?e.state.toLowerCase():"",r="string"==typeof o?o.toLowerCase():"";if("climate"===i)return["heating","cooling","drying"].includes(r)?2:a&&"off"!==a?1:0;if("fan"===i){const t=Number(e.attributes?.percentage);return"on"===a||t>0?2:0}return"humidifier"===i?["drying","humidifying"].includes(r)?2:a&&!["off","idle"].includes(a)?1:0:a&&"off"!==a?1:0}syncAutoSelectRecentActivity(){if(!this.config||!this.hass||!this.targets.length)return;const t=[],e=new Map;if(this.targets.forEach(i=>{const o=this.getActivitySignature(i);e.set(i.entity,o),this.activitySignaturesInitialized&&o&&o!==this.activitySignatures.get(i.entity)&&(this.writeStoredActivity({entity:i.entity,signature:o,timestamp:Date.now()}),t.push(this.getActivityCandidate(i,Date.now())))}),this.activitySignatures=e,!this.activitySignaturesInitialized)return this.activitySignaturesInitialized=!0,void this.applyPersistedActivitySelection(e);if(!t.length||!this.isRecentActivityAutoSelectEnabled()||this.menuOpen||Date.now()-this.lastManualSelectionAtthis.isBetterActivityCandidate(e,t)?e:t);this.selectEntity(i.target.entity,!1)}getTargetLabel(t){const e=this.parseTargetHeader(t);if(e&&"string"==typeof e.name)return e.name;const i=this.hass?.states?.[t.entity];return i&&"function"==typeof this.hass?.formatEntityName?this.hass.formatEntityName(i):i?.attributes?.friendly_name??t.entity}getTargetIcon(t){if(!(this.config?.selector??Oe).icons)return"";const e=this.parseTargetHeader(t);if(e&&e.icon)return this.resolveHeaderIcon(e.icon,t);const i=this.hass?.states?.[t.entity];if(i?.attributes?.icon)return i.attributes.icon;const o=Ne(t.entity);return"fan"===o?"mdi:fan":"humidifier"===o?"mdi:air-humidifier":"mdi:air-conditioner"}getTargetHeaderData(t){return this.parseTargetHeader(t)}parseTargetHeader(t){const e=this.hass?.states?.[t.entity];if(!e||!this.hass)return null;const i=this.getTargetCardConfig(t);return Ae(i.header,e,this.hass,!1!==i.enhanced_visuals)}resolveHeaderIcon(t,e){if("string"==typeof t)return t;if(!t||"object"!=typeof t)return"";const i=this.hass?.states?.[e.entity];if(!i)return"";const o=t[fe(i)||String(i.state)];return"string"==typeof o?o:""}getHeaderToggleConfigs(t){const e=t.config.header;return e&&"object"==typeof e?[...e.toggle?[e.toggle]:[],...Array.isArray(e.toggles)?e.toggles:[]].filter(t=>t?.entity&&this.hass?.states?.[t.entity]):[]}getEmbeddedConfig(){const t=this.getSelectedTarget();return this.getTargetCardConfig(t)}getEmbeddedConfigSignature(t){return JSON.stringify(t,(t,e)=>!e||"object"!=typeof e||Array.isArray(e)?e:Object.keys(e).sort().reduce((t,i)=>(t[i]=e[i],t),{}))}getTargetCardConfig(e){const i={...this.config?.card??{},...this.getSourceTargetConfig(e),...e.config};if(!i.card_mod){const t=this.getFallbackCardMod();t&&(i.card_mod=t)}return{...i,embedded:!0,entity:e.entity,type:e.config.type??`custom:${t}`}}getSourceTargetConfig(t){const e=(this.config?.cards??this.config?.entities??[]).find(e=>!!e&&"object"==typeof e&&e.entity===t.entity);return e&&"object"==typeof e?e:{}}getFallbackCardMod(){const t=(this.config?.card??{}).card_mod;if(t)return t;const e=(this.config?.cards??this.config?.entities??[]).find(t=>!!t&&"object"==typeof t&&!!t.card_mod);return e?.card_mod}getCardHelpers(){return this.cardHelpersPromise||(this.cardHelpersPromise="function"==typeof window.loadCardHelpers?window.loadCardHelpers():Promise.reject(new Error("Home Assistant card helpers unavailable"))),this.cardHelpersPromise}createFallbackEmbeddedCardElement(e){const i=window.document.createElement(t);if("function"==typeof i.setConfig)return i.setConfig(e),i}installEmbeddedCard(t,e,i,o){this.config&&this.hass&&(e&&"function"==typeof e.setConfig?this.getEmbeddedConfigSignature(this.getEmbeddedConfig())===o&&(this.embeddedCard=e,this.embeddedCardEntity=String(i.entity??""),this.embeddedCardConfigSignature=o,this.embeddedCardPendingSignature="",t.replaceChildren(e),"function"==typeof e.setConfig&&e.setConfig(i),e.hass=this.hass,this.syncEmbeddedPresentation()):this.embeddedCardPendingSignature="")}syncEmbeddedCard(){if(!this.config||!this.hass)return;const e=this.renderRoot.querySelector(".embedded-card-host");if(!e)return;const i=this.getEmbeddedConfig(),o=this.getEmbeddedConfigSignature(i);if(!this.embeddedCard||this.embeddedCardEntity!==i.entity||this.embeddedCardConfigSignature!==o){if("function"!=typeof window.loadCardHelpers){const a=window.customElements.get(t)?this.createFallbackEmbeddedCardElement(i):void 0;return a?void this.installEmbeddedCard(e,a,i,o):void(this.embeddedCardPendingSignature="")}if(this.embeddedCardPendingSignature===o)return;return this.embeddedCardPendingSignature=o,void this.getCardHelpers().then(t=>t.createCardElement(i)).catch(()=>window.customElements.get(t)?this.createFallbackEmbeddedCardElement(i):void 0).then(t=>this.installEmbeddedCard(e,t,i,o))}this.embeddedCard.hass=this.hass,this.syncEmbeddedPresentation()}syncEmbeddedPresentation(){const t=this.embeddedCard;(t?.updateComplete??Promise.resolve()).catch(()=>{}).then(()=>window.requestAnimationFrame(()=>this.applyEmbeddedPresentation()))}applyEmbeddedPresentation(){const t=this.renderRoot.querySelector(".embedded-card-host"),e=this.renderRoot.querySelector(".group-selector"),i=this.embeddedCard;t&&i&&(t.style.removeProperty("--st-group-cropped-header-height"),i.style.setProperty("--st-group-embedded-header-min-height",this.getEmbeddedHeaderReserve(i,e)),this.fadeInAfterSync&&(this.fadeInAfterSync=!1,window.requestAnimationFrame(()=>{this.cardFading=!1})))}getEmbeddedHeaderReserve(t,e){const i="calc(var(--st-group-header-control-height, 34px) + var(--st-group-header-top-buffer, 2px) + calc(var(--st-spacing, var(--st-default-spacing, 4px)) * 6))",o=this.getEmbeddedHeaderReserveMinimum();if(!e)return i;const a=t.getBoundingClientRect(),r=e.getBoundingClientRect(),n=Math.ceil(r.bottom-a.top+8),s=Math.max(n,o);return Number.isFinite(s)&&s>24?`${s}px`:i}getEmbeddedHeaderReserveMinimum(){const t=getComputedStyle(this),e=parseFloat(t.getPropertyValue("--st-group-header-control-height"))||34,i=parseFloat(t.getPropertyValue("--st-group-header-top-buffer"))||2,o=parseFloat(t.getPropertyValue("--st-spacing"))||parseFloat(t.getPropertyValue("--st-default-spacing"))||4;return Math.ceil(e+i+4*o)}selectEntity(t,e=!0){if(this.menuOpen=!1,t===this.selectedEntity)return;e&&this.pauseAutoSelectAfterManualSelection();const i=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;if(!this.embeddedCard||i)return this.fadeInAfterSync=!1,this.cardFading=!1,this.selectedEntity=t,void(e&&this.writeStoredSelection(t));this.cardFading=!0,this.fadeInAfterSync=!0,this.selectedEntity=t,e&&this.writeStoredSelection(t)}selectOffset(t){if(this.targets.length<2)return;const e=(this.getSelectedIndex()+t+this.targets.length)%this.targets.length;this.selectEntity(this.targets[e].entity)}toggleHeaderEntity(t,e){t.stopPropagation();const i=Boolean(t.target.checked);this.hass?.callService?.("homeassistant","turn_"+(i?"on":"off"),{entity_id:e})}renderHeaderToggles(t){const e=this.getHeaderToggleConfigs(t);return e.length?B`
${e.map(t=>{const e=this.hass?.states?.[t.entity],i=!0===t.name?e?.attributes?.friendly_name:"string"==typeof t.name?t.name:e?.attributes?.friendly_name,o=t.icon||e?.attributes?.icon;return B`
@@ -2502,7 +2870,7 @@ ha-card.standard-visuals .thermostat-trigger:active { `})}
- `:q}renderHeaderIcon(t){const e=this.hass?.states?.[t.entity],i=this.getTargetHeaderData(t);if(!e||!i||!i.icon)return q;const o=ue(e)||String(e.state),a="object"==typeof i.icon?i.icon?.[o]??!1:i.icon;if(!a)return q;const r=o&&o!==e.state?` ${Te(o)}`:"",n=Te(e.state);return B` + `:q}renderHeaderIcon(t){const e=this.hass?.states?.[t.entity],i=this.getTargetHeaderData(t);if(!e||!i||!i.icon)return q;const o=fe(e)||String(e.state),a="object"==typeof i.icon?i.icon?.[o]??!1:i.icon;if(!a)return q;const r=o&&o!==e.state?` ${Me(o)}`:"",n=Me(e.state);return B` @@ -2511,7 +2879,32 @@ ha-card.standard-visuals .thermostat-trigger:active { .icon=${a} > - `}renderSelector(){const t=this.getSelectedTarget(),e=this.getTargetLabel(t);return B` + `}getTargetStateLabel(t){const e=this.hass?.states?.[t.entity];return e?"function"==typeof this.hass?.formatEntityState?this.hass.formatEntityState(e):String(e.state):""}renderTabSelector(){const t=this.config?.selector??Oe;return B` +
+
+ ${this.targets.map(e=>{const i=this.getTargetLabel(e),o=this.getTargetIcon(e),a=e.entity===this.selectedEntity,r=t.states?this.getTargetStateLabel(e):"";return B` + + `})} +
+
+ `}renderSelector(){if("tabs"===this.config?.selector?.style)return this.renderTabSelector();const t=this.getSelectedTarget(),e=this.getTargetLabel(t);return B`
- `:B``}}var Me;i([pt({attribute:!1})],Ne.prototype,"hass",void 0),i([gt()],Ne.prototype,"config",void 0),i([gt()],Ne.prototype,"targets",void 0),i([gt()],Ne.prototype,"selectedEntity",void 0),i([gt()],Ne.prototype,"menuOpen",void 0),i([gt()],Ne.prototype,"cardFading",void 0),function(t){t.OFF="off",t.HEAT="heat",t.COOL="cool",t.HEAT_COOL="heat_cool",t.AUTO="auto",t.DRY="dry",t.FAN_ONLY="fan_only"}(Me||(Me={}));const Re=["auto","silent","quiet","low","mid","medium","high","max","turbo","full"];const je=["mdi:fan-speed-1","mdi:fan-speed-2","mdi:fan-speed-3","st:fan-speed-4","st:fan-speed-5"],Pe=t=>String(t).toLowerCase().replace(/\s+/g,"_"),He={low:1,medlow:2,medium_low:2,mid:2,medium:2,medium_high:3,medhigh:3,max:5,turbo:5,full:5};function Ie(t,e){const i=Pe(t),o=function(t){if(!/^\d+$/.test(t))return;const e=Number(t);return e>=1&&e<=je.length?e:void 0}(i);if(o)return je[o-1];const a=function(t,e){if("high"===t){const t=new Set(e.map(Pe));return t.has("medium_high")||t.has("medhigh")||t.has("max")||t.has("turbo")||t.has("full")?4:3}return He[t]}(i,e);return a?je[a-1]:void 0}function Ve(t,{decimals:e=1,fallback:i="N/A",locale:o}={}){if(null===t||""===t||["boolean","undefined"].includes(typeof t))return i;const a=Number(t);return Number.isNaN(a)?i:o?"decimal_comma"===o.number_format||"space_comma"===o.number_format?a.toFixed(e).replace(".",","):"comma_decimal"===o.number_format||"none"===o.number_format?a.toFixed(e):new Intl.NumberFormat("system"===o.number_format?void 0:o.language,{minimumFractionDigits:e,maximumFractionDigits:e}).format(a):a.toFixed(e)}const Fe=[["heat",/\b(heat|heater|furnace|radiator|boiler|water[_ -]?heater)\b/],["cool",/\b(cool|cooling|ac|a\/c|air[_ -]?conditioner|snowflake)\b/],["dry",/\b(dry|drying|dehumidifier|dehumidify)\b/],["water-percent",/\b(humidifier|humidify|humidity)\b/],["fan",/\b(fan|blower)\b/],["lightbulb",/\b(light|lamp|bulb)\b/]],Le={heat:["component.climate.state._.heat","state_attributes.climate.hvac_action.heating"],cool:["component.climate.state._.cool","state_attributes.climate.hvac_action.cooling"],dry:["component.climate.state._.dry","state_attributes.humidifier.action.drying"],fan:["component.fan.entity_component._.name"],lightbulb:["component.light.entity_component._.name"],"water-percent":["component.humidifier.entity_component._.name","state_attributes.humidifier.action.humidifying"]};function De(t,e){const i=t.toLowerCase().replace(/[.:]/g," "),o=function(t){return"function"!=typeof t?.localize?[]:Object.entries(Le).flatMap(([e,i])=>i.map(e=>t.localize(e)).filter(t=>t&&!i.includes(t)).map(t=>{return[e,(i=String(t),i.toLowerCase().replace(/[.:]/g," "))];var i}))}(e).find(([,t])=>!!t&&(i===t||i.includes(t)));if(o)return o[0];const a=Fe.find(([,t])=>t.test(i));return a?.[0]??""}function Ue(t){if("string"!=typeof t||!t)return"";const e=(i=t.replace(/^[a-z]+:/,""),String(i??"").replace(/[^a-z0-9_-]/gi,""));var i;const o=De(e.replace(/-/g," "));return o||(["fire","radiator","heat-wave","heating-coil","water-boiler","water-boiler-auto","water-boiler-off"].includes(e)?"heat":["snowflake","air-conditioner"].includes(e)?"cool":"fan"===e?"fan":e.includes("light")?"lightbulb":["water-percent","air-humidifier"].includes(e)||["air-humidifier-off"].includes(e)?"water-percent":e)}function We({icon:t,label:e,entity:i,hass:o}){const a=Ue(t);if(a)return a;const r=function(t){const e=t?.entity_id,i="string"==typeof e?e.split(".")[0]:"",o=t?.attributes?.device_class;return"light"===i?"lightbulb":"fan"===i?"fan":"humidifier"===i?"dehumidifier"===o?"dry":"water-percent":"heat"===o||"heater"===o?"heat":"cold"===o||"cooling"===o?"cool":"moisture"===o||"humidity"===o?"water-percent":""}(i);if(r)return r;return De([e,i?.entity_id,i?.attributes?.friendly_name].filter(Boolean).join(" "),o)}function Be(t){return t?`toggle-${t}`:""}function Ge({header:t,toggleEntityChanged:e,entity:i,hass:o,openEntityPopover:a}){if(!1===t)return q;const r=ue(i)||i.state;let n=t.icon;"object"==typeof t.icon&&(n=n?.[r]??!1);const s=Boolean(t.slashOffIcon),c=t?.name??!1;return B` + `:B``}}var Fe;i([pt({attribute:!1})],Pe.prototype,"hass",void 0),i([mt()],Pe.prototype,"config",void 0),i([mt()],Pe.prototype,"targets",void 0),i([mt()],Pe.prototype,"selectedEntity",void 0),i([mt()],Pe.prototype,"menuOpen",void 0),i([mt()],Pe.prototype,"cardFading",void 0),function(t){t.OFF="off",t.HEAT="heat",t.COOL="cool",t.HEAT_COOL="heat_cool",t.AUTO="auto",t.DRY="dry",t.FAN_ONLY="fan_only"}(Fe||(Fe={}));const He=["auto","silent","quiet","low","mid","medium","high","max","turbo","full"];const Ie=["mdi:fan-speed-1","mdi:fan-speed-2","mdi:fan-speed-3","st:fan-speed-4","st:fan-speed-5"],Ve=t=>String(t).toLowerCase().replace(/\s+/g,"_"),Le={low:1,medlow:2,medium_low:2,mid:2,medium:2,medium_high:3,medhigh:3,max:5,turbo:5,full:5};function De(t,e){const i=Ve(t),o=function(t){if(!/^\d+$/.test(t))return;const e=Number(t);return e>=1&&e<=Ie.length?e:void 0}(i);if(o)return Ie[o-1];const a=function(t,e){if("high"===t){const t=new Set(e.map(Ve));return t.has("medium_high")||t.has("medhigh")||t.has("max")||t.has("turbo")||t.has("full")?4:3}return Le[t]}(i,e);return a?Ie[a-1]:void 0}function Ue(t,{decimals:e=1,fallback:i="N/A",locale:o}={}){if(null===t||""===t||["boolean","undefined"].includes(typeof t))return i;const a=Number(t);return Number.isNaN(a)?i:o?"decimal_comma"===o.number_format||"space_comma"===o.number_format?a.toFixed(e).replace(".",","):"comma_decimal"===o.number_format||"none"===o.number_format?a.toFixed(e):new Intl.NumberFormat("system"===o.number_format?void 0:o.language,{minimumFractionDigits:e,maximumFractionDigits:e}).format(a):a.toFixed(e)}const We=[["heat",/\b(heat|heater|furnace|radiator|boiler|water[_ -]?heater)\b/],["cool",/\b(cool|cooling|ac|a\/c|air[_ -]?conditioner|snowflake)\b/],["dry",/\b(dry|drying|dehumidifier|dehumidify)\b/],["water-percent",/\b(humidifier|humidify|humidity)\b/],["fan",/\b(fan|blower)\b/],["lightbulb",/\b(light|lamp|bulb)\b/]],Be={heat:["component.climate.state._.heat","state_attributes.climate.hvac_action.heating"],cool:["component.climate.state._.cool","state_attributes.climate.hvac_action.cooling"],dry:["component.climate.state._.dry","state_attributes.humidifier.action.drying"],fan:["component.fan.entity_component._.name"],lightbulb:["component.light.entity_component._.name"],"water-percent":["component.humidifier.entity_component._.name","state_attributes.humidifier.action.humidifying"]};function Ge(t,e){const i=t.toLowerCase().replace(/[.:]/g," "),o=function(t){return"function"!=typeof t?.localize?[]:Object.entries(Be).flatMap(([e,i])=>i.map(e=>t.localize(e)).filter(t=>t&&!i.includes(t)).map(t=>{return[e,(i=String(t),i.toLowerCase().replace(/[.:]/g," "))];var i}))}(e).find(([,t])=>!!t&&(i===t||i.includes(t)));if(o)return o[0];const a=We.find(([,t])=>t.test(i));return a?.[0]??""}function qe(t){if("string"!=typeof t||!t)return"";const e=(i=t.replace(/^[a-z]+:/,""),String(i??"").replace(/[^a-z0-9_-]/gi,""));var i;const o=Ge(e.replace(/-/g," "));return o||(["fire","radiator","heat-wave","heating-coil","water-boiler","water-boiler-auto","water-boiler-off"].includes(e)?"heat":["snowflake","air-conditioner"].includes(e)?"cool":"fan"===e?"fan":e.includes("light")?"lightbulb":["water-percent","air-humidifier"].includes(e)||["air-humidifier-off"].includes(e)?"water-percent":e)}function Ke({icon:t,label:e,entity:i,hass:o}){const a=qe(t);if(a)return a;const r=function(t){const e=t?.entity_id,i="string"==typeof e?e.split(".")[0]:"",o=t?.attributes?.device_class;return"light"===i?"lightbulb":"fan"===i?"fan":"humidifier"===i?"dehumidifier"===o?"dry":"water-percent":"heat"===o||"heater"===o?"heat":"cold"===o||"cooling"===o?"cool":"moisture"===o||"humidity"===o?"water-percent":""}(i);if(r)return r;return Ge([e,i?.entity_id,i?.attributes?.friendly_name].filter(Boolean).join(" "),o)}function Ze(t){return t?`toggle-${t}`:""}function Je({header:t,toggleEntityChanged:e,entity:i,hass:o,openEntityPopover:a}){if(!1===t)return q;const r=fe(i)||i.state;let n=t.icon;"object"==typeof t.icon&&(n=n?.[r]??!1);const s=Boolean(t.slashOffIcon),c=t?.name??!1;return B`
a()}> ${function(t,e,i,o=!1){const a=i&&i!==e?` ${i}`:"";return t?B` @@ -2591,7 +2984,7 @@ ha-card.standard-visuals .thermostat-trigger:active { >`:q);return B`
${i}
`}(t.faults,a)} ${function(t,e,i,o,a){return t?.length?B`
- ${t.map(t=>{if(!0===t.hide_when_off&&"off"===a?.state)return q;const r=t.entity?.entity_id,n=t.entity?.state,s="string"==typeof r?r.split(".")[0]:"",c=Be(We({icon:"string"==typeof t.icon?t.icon:t.entity?.attributes?.icon,label:t.label,entity:t.entity,hass:o}));return B` + ${t.map(t=>{if(!0===t.hide_when_off&&"off"===a?.state)return q;const r=t.entity?.entity_id,n=t.entity?.state,s="string"==typeof r?r.split(".")[0]:"",c=Ze(Ke({icon:"string"==typeof t.icon?t.icon:t.entity?.attributes?.icon,label:t.label,entity:t.entity,hass:o}));return B`
@@ -2610,84 +3003,126 @@ ha-card.standard-visuals .thermostat-trigger:active {
`:q}(t.toggles,a,e,o,i)}
- `}class qe extends Yt{constructor(t){if(super(t),this.it=q,t.type!==Zt)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===q||null==t)return this._t=void 0,this.it=t;if(t===G)return t;if("string"!=typeof t)throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;const e=[t];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}}qe.directiveName="unsafeHTML",qe.resultType=1;const Ke=Jt(qe);function Ze(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Je(t,e,i){if(!e||"string"!=typeof e)return String(t);const o=String(t);return new RegExp(`${Ze(e)}$`).test(o)?o:`${o}${function(t,e){if(e){const i=e.match(new RegExp(`(\\s*)${Ze(t)}$`));if(i)return i[1]??""}return"%"===t?"":" "}(e,i)}${e}`}var Ye,Xe={exports:{}};function Qe(){return Ye||(Ye=1,function(t){function e(t){var i,o,a=new Error(t);return i=a,o=e.prototype,Object.setPrototypeOf?Object.setPrototypeOf(i,o):i.__proto__=o,a}function i(t,i,o){var a=i.slice(0,o).split(/\n/),r=a.length,n=a[r-1].length+1;throw e(t+=" at line "+r+" col "+n+":\n\n "+i.split(/\n/)[r-1]+"\n "+Array(n).join(" ")+"^")}e.prototype=Object.create(Error.prototype,{name:{value:"Squirrelly Error",enumerable:!1}});var o=new Function("return this")().Promise,a=!1;try{a=new Function("return (async function(){}).constructor")()}catch(t){if(!(t instanceof SyntaxError))throw t}function r(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function n(t,e,i){for(var o in e)r(e,o)&&(null==e[o]||"object"!=typeof e[o]||"storage"!==o&&"prefixes"!==o||i?t[o]=e[o]:t[o]=n({},e[o]));return t}var s=/^async +/,c=/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\${)[^\\`])*`/g,l=/'(?:\\[\s\w"'\\`]|[^\n\r'\\])*?'/g,d=/"(?:\\[\s\w"'\\`]|[^\n\r"\\])*?"/g,h=/[.*+\-?^${}()|[\]\\]/g;function u(t){return h.test(t)?t.replace(h,"\\$&"):t}function p(t,o){o.rmWhitespace&&(t=t.replace(/[\r\n]+/g,"\n").replace(/^\s+|\s+$/gm,"")),c.lastIndex=0,l.lastIndex=0,d.lastIndex=0;var a=o.prefixes,r=[a.h,a.b,a.i,a.r,a.c,a.e].reduce(function(t,e){return t&&e?t+"|"+u(e):e?u(e):t},""),n=new RegExp("([|()]|=>)|('|\"|`|\\/\\*)|\\s*((\\/)?(-|_)?"+u(o.tags[1])+")","g"),h=new RegExp("([^]*?)"+u(o.tags[0])+"(-|_)?\\s*("+r+")?\\s*","g"),p=0,g=!1;function m(e,a){var r,u={f:[]},m=0,f="c";function v(e){var a=t.slice(p,e),r=a.trim();if("f"===f)"safe"===r?u.raw=!0:o.async&&s.test(r)?(r=r.replace(s,""),u.f.push([r,"",!0])):u.f.push([r,""]);else if("fp"===f)u.f[u.f.length-1][1]+=r;else if("err"===f){if(r){var n=a.search(/\S/);i("invalid syntax",t,p+n)}}else u[f]=r;p=e+1}for("h"===a||"b"===a||"c"===a?f="n":"r"===a&&(u.raw=!0,a="i"),n.lastIndex=p;null!==(r=n.exec(t));){var y=r[1],_=r[2],b=r[3],w=r[4],x=r[5],$=r.index;if(y)"("===y?(0===m&&("n"===f?(v($),f="p"):"f"===f&&(v($),f="fp")),m++):")"===y?0===--m&&"c"!==f&&(v($),f="err"):0===m&&"|"===y?(v($),f="f"):"=>"===y&&(v($),p+=1,f="res");else if(_)if("/*"===_){var S=t.indexOf("*/",n.lastIndex);-1===S&&i("unclosed comment",t,r.index),n.lastIndex=S+2}else"'"===_?(l.lastIndex=r.index,l.exec(t)?n.lastIndex=l.lastIndex:i("unclosed string",t,r.index)):'"'===_?(d.lastIndex=r.index,d.exec(t)?n.lastIndex=d.lastIndex:i("unclosed string",t,r.index)):"`"===_&&(c.lastIndex=r.index,c.exec(t)?n.lastIndex=c.lastIndex:i("unclosed string",t,r.index));else if(b)return v($),p=$+r[0].length,h.lastIndex=p,g=x,w&&"h"===a&&(a="s"),u.t=a,u}return i("unclosed tag",t,e),u}var f=function r(n,c){n.b=[],n.d=[];var l,d=!1,u=[];function f(t,e){t&&(t=function(t,e,i,o){var a,r;return"string"==typeof e.autoTrim?a=r=e.autoTrim:Array.isArray(e.autoTrim)&&(a=e.autoTrim[1],r=e.autoTrim[0]),(i||!1===i)&&(a=i),(o||!1===o)&&(r=o),"slurp"===a&&"slurp"===r?t.trim():("_"===a||"slurp"===a?t=String.prototype.trimLeft?t.trimLeft():t.replace(/^[\s\uFEFF\xA0]+/,""):"-"!==a&&"nl"!==a||(t=t.replace(/^(?:\n|\r|\r\n)/,"")),"_"===r||"slurp"===r?t=String.prototype.trimRight?t.trimRight():t.replace(/[\s\uFEFF\xA0]+$/,""):"-"!==r&&"nl"!==r||(t=t.replace(/(?:\n|\r|\r\n)$/,"")),t)}(t,o,g,e),t&&(t=t.replace(/\\|'/g,"\\$&").replace(/\r\n|\n|\r/g,"\\n"),u.push(t)))}for(;null!==(l=h.exec(t));){var v,y=l[1],_=l[2],b=l[3]||"";for(var w in a)if(a[w]===b){v=w;break}f(y,_),p=l.index+l[0].length,v||i("unrecognized tag type: "+b,t,p);var x=m(l.index,v),$=x.t;if("h"===$){var S=x.n||"";o.async&&s.test(S)&&(x.a=!0,x.n=S.replace(s,"")),x=r(x),u.push(x)}else if("c"===$){if(n.n===x.n)return d?(d.d=u,n.b.push(d)):n.d=u,n;i("Helper start and end don't match",t,l.index+l[0].length)}else if("b"===$){d?(d.d=u,n.b.push(d)):n.d=u;var A=x.n||"";o.async&&s.test(A)&&(x.a=!0,x.n=A.replace(s,"")),d=x,u=[]}else if("s"===$){var k=x.n||"";o.async&&s.test(k)&&(x.a=!0,x.n=k.replace(s,"")),u.push(x)}else u.push(x)}if(!c)throw e('unclosed helper "'+n.n+'"');return f(t.slice(p,t.length),!1),n.d=u,n}({f:[]},!0);if(o.plugins)for(var v=0;v0)throw e((a?"Native":"")+"Helper '"+t+"' doesn't accept blocks");if(o&&o.length>0)throw e((a?"Native":"")+"Helper '"+t+"' doesn't accept filters")}function x(t,e,i,o,a){i(t[e],e).then(function(r){o+=r,e===t.length-1?a(o):x(t,e+1,i,o,a)})}function $(t,e,i,o,a,r){o(e[i],t[e[i]]).then(function(n){a+=n,i===e.length-1?r(a):$(t,e,i+1,o,a,r)})}var S={"&":"&","<":"<",">":">",'"':""","'":"'"};function A(t){return S[t]}var k=new b({}),C=new b({each:function(t,e){var i="",o=t.params[0];if(w("each",e,!1),t.async)return new Promise(function(e){x(o,0,t.exec,i,e)});for(var a=0;a"']/.test(e)?e.replace(/[&<>"']/g,A):e}}),T={varName:"it",autoTrim:[!1,"nl"],autoEscape:!0,defaultFilter:!1,tags:["{{","}}"],l:function(t,i){if("H"===t){var o=this.storage.helpers.get(i);if(o)return o;throw e("Can't find helper '"+i+"'")}if("F"===t){var a=this.storage.filters.get(i);if(a)return a;throw e("Can't find filter '"+i+"'")}},async:!1,storage:{helpers:C,nativeHelpers:E,filters:z,templates:k},prefixes:{h:"@",b:"#",i:"",r:"*",c:"/",e:"!"},cache:!1,plugins:[],useWith:!1};function O(t,e){var i={};return n(i,T),e&&n(i,e),t&&n(i,t),i.l.bind(i),i}function N(t,i){var o,r=O(i||{}),n=Function;if(r.async){if(!a)throw e("This environment doesn't support async/await");n=a}if(r.varName&&!1===(o=r.varName,/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(o)))throw e("options.varName must be a valid JS identifier");try{return new n(r.varName,"c","cb",g(t,r))}catch(i){throw i instanceof SyntaxError?e("Bad template syntax\n\n"+i.message+"\n"+Array(i.message.length+1).join("=")+"\n"+g(t,r)):i}}function M(t,e){var i;return e.cache&&e.name&&e.storage.templates.get(e.name)?e.storage.templates.get(e.name):(i="function"==typeof t?t:N(t,e),e.cache&&e.name&&e.storage.templates.define(e.name,i),i)}T.l.bind(T),t.compile=N,t.compileScope=_,t.compileScopeIntoFunction=y,t.compileToString=g,t.defaultConfig=T,t.filters=z,t.getConfig=O,t.helpers=C,t.nativeHelpers=E,t.parse=p,t.render=function(t,i,a,r){var n=O(a||{});if(!n.async)return M(t,n)(i,n);if(!r){if("function"==typeof o)return new o(function(e,o){try{e(M(t,n)(i,n))}catch(t){o(t)}});throw e("Please provide a callback function, this env doesn't support Promises")}try{M(t,n)(i,n,r)}catch(t){return r(t)}},t.templates=k,Object.defineProperty(t,"__esModule",{value:!0})}(Xe.exports)),Xe.exports}var ti=Qe();function ei(t){return String(t??"").replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function ii(t){return ei(t)}function oi(t){return"string"==typeof t?t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"):Array.isArray(t)?t.map(oi):t&&"object"==typeof t?Object.fromEntries(Object.entries(t).map(([t,e])=>[t,oi(e)])):t}function ai({template:t,stateObj:e,attribute:i,hass:o,config:a={},variables:r={},localize:n=t=>t}){const[s]=String(e?.entity_id??"").split("."),c=e?.attributes??{},l=i&&Object.prototype.hasOwnProperty.call(c,i)?c[i]:e?.state,d=i&&"function"==typeof o.formatEntityAttributeValue?o.formatEntityAttributeValue(e,i):"function"==typeof o.formatEntityState?o.formatEntityState(e):n(String(l),`component.${s}.state._.`),h=o.selectedLanguage||o.language,u="ui.card.climate.",p=Object.entries(o.resources?.[h]??{}).reduce((t,[e,i])=>(String(e).startsWith(u)&&(t[String(e).replace(u,"")]=i),t),{});return ti.filters.define("formatNumber",(t,e={decimals:a.decimals})=>String(Ve(t,{...e,locale:o.locale}))),ti.filters.define("relativetime",t=>``),ti.filters.define("translate",(t,i="")=>!i&&"function"==typeof o.formatEntityAttributeValue&&"string"==typeof t&&t in c?o.formatEntityAttributeValue(e,t):n(t,i||"climate"!==s&&"humidifier"!==s?i:`state_attributes.${s}.${t}`)),ti.render(t,{...oi(c),state:{raw:oi(l),text:oi(d)},state_attr:(t,e)=>oi(o.states?.[t]?.attributes?.[e]),ui:p,v:r},{useWith:!0})}ti.defaultConfig.autoEscape=!1,ti.filters.define("icon",t=>``),ti.filters.define("join",(t,e=", ")=>t.join(e)),ti.filters.define("css",(t,e)=>`"'`;{}]/g,"")}(i)};`:t},""))}">${ei(t)}`),ti.filters.define("debug",t=>{try{return JSON.stringify(t)}catch{return`Not able to read valid JSON object from: ${t}`}});const ri="simple-thermostat-timer-remaining";function ni(t){return String(t).padStart(2,"0")}class si extends lt{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this.syncTicker()}disconnectedCallback(){this.clearTicker(),super.disconnectedCallback()}updated(){this.syncTicker()}clearTicker(){this.tick&&(window.clearInterval(this.tick),this.tick=void 0)}syncTicker(){const t="active"===this.stateObj?.state,e=this.stateObj?.attributes?.finishes_at,i=e?Date.parse(e):NaN,o=!Number.isNaN(i)&&i>Date.now();t&&o&&!this.tick?this.tick=window.setInterval(()=>{i<=Date.now()&&this.clearTicker(),this.requestUpdate()},1e3):t&&o||!this.tick||this.clearTicker()}getValue(){const t=this.stateObj;if(!t)return"";if("active"===t.state&&t.attributes?.finishes_at){const e=Date.parse(t.attributes.finishes_at);if(!Number.isNaN(e))return function(t){const e=Math.max(0,Math.ceil(t)),i=Math.floor(e/3600),o=Math.floor(e%3600/60),a=e%60;return i>0?`${i}:${ni(o)}:${ni(a)}`:`${o}:${ni(a)}`}((e-Date.now())/1e3)}return"paused"===t.state&&t.attributes?.remaining?t.attributes.remaining:"function"==typeof this.hass?.formatEntityState?this.hass.formatEntityState(t):t.state}render(){return B`${this.getValue()}`}}i([pt({attribute:!1})],si.prototype,"stateObj",void 0),i([pt({attribute:!1})],si.prototype,"hass",void 0),customElements.get(ri)||customElements.define(ri,si);const ci=["automation","fan","humidifier","input_boolean","light","switch"];function li(t){return String(t??"").replace(/[^a-z0-9_-]/gi,"")}function di({hide:t=!1,hass:e,state:i,details:o,localize:a,openEntityPopover:r}){if(t||void 0===i)return;const{type:n,heading:s,icon:c,unit:l,decimals:d,tooltip:h,entity:u,template:p,attribute:g,variables:m,config:f,separator:v=!0}=o,y=function({icon:t,state:e,attribute:i,hass:o,config:a,variables:r,localize:n}){return"string"==typeof t&&t.includes("{{")&&"object"==typeof e&&null!==e?ai({template:t,stateObj:e,attribute:i,hass:o,config:a,variables:r,localize:n}).trim():t}({icon:c,state:i,attribute:g,hass:e,config:f,variables:m,localize:a}),_=function({heading:t,state:e,attribute:i,hass:o,config:a,variables:r,localize:n}){if("string"==typeof t&&t.includes("{{")&&"object"==typeof e&&null!==e)return ai({template:t,stateObj:e,attribute:i,hass:o,config:a,variables:r,localize:n}).trim()}({heading:s,state:i,attribute:g,hass:e,config:f,variables:m,localize:a}),b="string"==typeof l&&l.length>0,w="object"==typeof i?i.entity_id:u,x=w&&"function"==typeof r,$=h||("object"==typeof i?i?.attributes?.friendly_name||i?.entity_id:u?e.states?.[u]?.attributes?.friendly_name||u:void 0);let S,A="",k="",C=!1;if(p&&"object"==typeof i){const t=ai({template:p,stateObj:i,attribute:g,hass:e,config:f,variables:m,localize:a});S=B`
)|('|\"|`|\\/\\*)|\\s*((\\/)?(-|_)?"+u(o.tags[1])+")","g"),h=new RegExp("([^]*?)"+u(o.tags[0])+"(-|_)?\\s*("+r+")?\\s*","g"),p=0,m=!1;function g(e,a){var r,u={f:[]},g=0,f="c";function v(e){var a=t.slice(p,e),r=a.trim();if("f"===f)"safe"===r?u.raw=!0:o.async&&s.test(r)?(r=r.replace(s,""),u.f.push([r,"",!0])):u.f.push([r,""]);else if("fp"===f)u.f[u.f.length-1][1]+=r;else if("err"===f){if(r){var n=a.search(/\S/);i("invalid syntax",t,p+n)}}else u[f]=r;p=e+1}for("h"===a||"b"===a||"c"===a?f="n":"r"===a&&(u.raw=!0,a="i"),n.lastIndex=p;null!==(r=n.exec(t));){var y=r[1],b=r[2],_=r[3],w=r[4],x=r[5],$=r.index;if(y)"("===y?(0===g&&("n"===f?(v($),f="p"):"f"===f&&(v($),f="fp")),g++):")"===y?0===--g&&"c"!==f&&(v($),f="err"):0===g&&"|"===y?(v($),f="f"):"=>"===y&&(v($),p+=1,f="res");else if(b)if("/*"===b){var S=t.indexOf("*/",n.lastIndex);-1===S&&i("unclosed comment",t,r.index),n.lastIndex=S+2}else"'"===b?(l.lastIndex=r.index,l.exec(t)?n.lastIndex=l.lastIndex:i("unclosed string",t,r.index)):'"'===b?(d.lastIndex=r.index,d.exec(t)?n.lastIndex=d.lastIndex:i("unclosed string",t,r.index)):"`"===b&&(c.lastIndex=r.index,c.exec(t)?n.lastIndex=c.lastIndex:i("unclosed string",t,r.index));else if(_)return v($),p=$+r[0].length,h.lastIndex=p,m=x,w&&"h"===a&&(a="s"),u.t=a,u}return i("unclosed tag",t,e),u}var f=function r(n,c){n.b=[],n.d=[];var l,d=!1,u=[];function f(t,e){t&&(t=function(t,e,i,o){var a,r;return"string"==typeof e.autoTrim?a=r=e.autoTrim:Array.isArray(e.autoTrim)&&(a=e.autoTrim[1],r=e.autoTrim[0]),(i||!1===i)&&(a=i),(o||!1===o)&&(r=o),"slurp"===a&&"slurp"===r?t.trim():("_"===a||"slurp"===a?t=String.prototype.trimLeft?t.trimLeft():t.replace(/^[\s\uFEFF\xA0]+/,""):"-"!==a&&"nl"!==a||(t=t.replace(/^(?:\n|\r|\r\n)/,"")),"_"===r||"slurp"===r?t=String.prototype.trimRight?t.trimRight():t.replace(/[\s\uFEFF\xA0]+$/,""):"-"!==r&&"nl"!==r||(t=t.replace(/(?:\n|\r|\r\n)$/,"")),t)}(t,o,m,e),t&&(t=t.replace(/\\|'/g,"\\$&").replace(/\r\n|\n|\r/g,"\\n"),u.push(t)))}for(;null!==(l=h.exec(t));){var v,y=l[1],b=l[2],_=l[3]||"";for(var w in a)if(a[w]===_){v=w;break}f(y,b),p=l.index+l[0].length,v||i("unrecognized tag type: "+_,t,p);var x=g(l.index,v),$=x.t;if("h"===$){var S=x.n||"";o.async&&s.test(S)&&(x.a=!0,x.n=S.replace(s,"")),x=r(x),u.push(x)}else if("c"===$){if(n.n===x.n)return d?(d.d=u,n.b.push(d)):n.d=u,n;i("Helper start and end don't match",t,l.index+l[0].length)}else if("b"===$){d?(d.d=u,n.b.push(d)):n.d=u;var A=x.n||"";o.async&&s.test(A)&&(x.a=!0,x.n=A.replace(s,"")),d=x,u=[]}else if("s"===$){var k=x.n||"";o.async&&s.test(k)&&(x.a=!0,x.n=k.replace(s,"")),u.push(x)}else u.push(x)}if(!c)throw e('unclosed helper "'+n.n+'"');return f(t.slice(p,t.length),!1),n.d=u,n}({f:[]},!0);if(o.plugins)for(var v=0;v0)throw e((a?"Native":"")+"Helper '"+t+"' doesn't accept blocks");if(o&&o.length>0)throw e((a?"Native":"")+"Helper '"+t+"' doesn't accept filters")}function x(t,e,i,o,a){i(t[e],e).then(function(r){o+=r,e===t.length-1?a(o):x(t,e+1,i,o,a)})}function $(t,e,i,o,a,r){o(e[i],t[e[i]]).then(function(n){a+=n,i===e.length-1?r(a):$(t,e,i+1,o,a,r)})}var S={"&":"&","<":"<",">":">",'"':""","'":"'"};function A(t){return S[t]}var k=new _({}),C=new _({each:function(t,e){var i="",o=t.params[0];if(w("each",e,!1),t.async)return new Promise(function(e){x(o,0,t.exec,i,e)});for(var a=0;a"']/.test(e)?e.replace(/[&<>"']/g,A):e}}),T={varName:"it",autoTrim:[!1,"nl"],autoEscape:!0,defaultFilter:!1,tags:["{{","}}"],l:function(t,i){if("H"===t){var o=this.storage.helpers.get(i);if(o)return o;throw e("Can't find helper '"+i+"'")}if("F"===t){var a=this.storage.filters.get(i);if(a)return a;throw e("Can't find filter '"+i+"'")}},async:!1,storage:{helpers:C,nativeHelpers:E,filters:z,templates:k},prefixes:{h:"@",b:"#",i:"",r:"*",c:"/",e:"!"},cache:!1,plugins:[],useWith:!1};function O(t,e){var i={};return n(i,T),e&&n(i,e),t&&n(i,t),i.l.bind(i),i}function R(t,i){var o,r=O(i||{}),n=Function;if(r.async){if(!a)throw e("This environment doesn't support async/await");n=a}if(r.varName&&!1===(o=r.varName,/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(o)))throw e("options.varName must be a valid JS identifier");try{return new n(r.varName,"c","cb",m(t,r))}catch(i){throw i instanceof SyntaxError?e("Bad template syntax\n\n"+i.message+"\n"+Array(i.message.length+1).join("=")+"\n"+m(t,r)):i}}function N(t,e){var i;return e.cache&&e.name&&e.storage.templates.get(e.name)?e.storage.templates.get(e.name):(i="function"==typeof t?t:R(t,e),e.cache&&e.name&&e.storage.templates.define(e.name,i),i)}T.l.bind(T),t.compile=R,t.compileScope=b,t.compileScopeIntoFunction=y,t.compileToString=m,t.defaultConfig=T,t.filters=z,t.getConfig=O,t.helpers=C,t.nativeHelpers=E,t.parse=p,t.render=function(t,i,a,r){var n=O(a||{});if(!n.async)return N(t,n)(i,n);if(!r){if("function"==typeof o)return new o(function(e,o){try{e(N(t,n)(i,n))}catch(t){o(t)}});throw e("Please provide a callback function, this env doesn't support Promises")}try{N(t,n)(i,n,r)}catch(t){return r(t)}},t.templates=k,Object.defineProperty(t,"__esModule",{value:!0})}(ii.exports)),ii.exports}var ai=oi();function ri(t){return String(t??"").replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function ni(t){return ri(t)}function si(t){return"string"==typeof t?t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"):Array.isArray(t)?t.map(si):t&&"object"==typeof t?Object.fromEntries(Object.entries(t).map(([t,e])=>[t,si(e)])):t}function ci({template:t,stateObj:e,attribute:i,hass:o,config:a={},variables:r={},localize:n=t=>t}){const[s]=String(e?.entity_id??"").split("."),c=e?.attributes??{},l=i&&Object.prototype.hasOwnProperty.call(c,i)?c[i]:e?.state,d=i&&"function"==typeof o.formatEntityAttributeValue?o.formatEntityAttributeValue(e,i):"function"==typeof o.formatEntityState?o.formatEntityState(e):n(String(l),`component.${s}.state._.`),h=o.selectedLanguage||o.language,u="ui.card.climate.",p=Object.entries(o.resources?.[h]??{}).reduce((t,[e,i])=>(String(e).startsWith(u)&&(t[String(e).replace(u,"")]=i),t),{});return ai.filters.define("formatNumber",(t,e={decimals:a.decimals})=>String(Ue(t,{...e,locale:o.locale}))),ai.filters.define("relativetime",t=>``),ai.filters.define("translate",(t,i="")=>!i&&"function"==typeof o.formatEntityAttributeValue&&"string"==typeof t&&t in c?o.formatEntityAttributeValue(e,t):n(t,i||"climate"!==s&&"humidifier"!==s?i:`state_attributes.${s}.${t}`)),ai.render(t,{...si(c),state:{raw:si(l),text:si(d)},state_attr:(t,e)=>si(o.states?.[t]?.attributes?.[e]),ui:p,v:r},{useWith:!0})}ai.defaultConfig.autoEscape=!1,ai.filters.define("icon",t=>``),ai.filters.define("join",(t,e=", ")=>t.join(e)),ai.filters.define("css",(t,e)=>`"'`;{}]/g,"")}(i)};`:t},""))}">${ri(t)}`),ai.filters.define("debug",t=>{try{return JSON.stringify(t)}catch{return`Not able to read valid JSON object from: ${t}`}});const li="simple-thermostat-timer-remaining";function di(t){return String(t).padStart(2,"0")}class hi extends lt{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this.syncTicker()}disconnectedCallback(){this.clearTicker(),super.disconnectedCallback()}updated(){this.syncTicker()}clearTicker(){this.tick&&(window.clearInterval(this.tick),this.tick=void 0)}syncTicker(){const t="active"===this.stateObj?.state,e=this.stateObj?.attributes?.finishes_at,i=e?Date.parse(e):NaN,o=!Number.isNaN(i)&&i>Date.now();t&&o&&!this.tick?this.tick=window.setInterval(()=>{i<=Date.now()&&this.clearTicker(),this.requestUpdate()},1e3):t&&o||!this.tick||this.clearTicker()}getValue(){const t=this.stateObj;if(!t)return"";if("active"===t.state&&t.attributes?.finishes_at){const e=Date.parse(t.attributes.finishes_at);if(!Number.isNaN(e))return function(t){const e=Math.max(0,Math.ceil(t)),i=Math.floor(e/3600),o=Math.floor(e%3600/60),a=e%60;return i>0?`${i}:${di(o)}:${di(a)}`:`${o}:${di(a)}`}((e-Date.now())/1e3)}return"paused"===t.state&&t.attributes?.remaining?t.attributes.remaining:"function"==typeof this.hass?.formatEntityState?this.hass.formatEntityState(t):t.state}render(){return B`${this.getValue()}`}}i([pt({attribute:!1})],hi.prototype,"stateObj",void 0),i([pt({attribute:!1})],hi.prototype,"hass",void 0),customElements.get(li)||customElements.define(li,hi);const ui=["automation","fan","humidifier","input_boolean","light","switch"],pi=["button","input_button","script","scene"],mi=["row","auto","button","toggle","chip"];function gi(t,e,i){const o="turn_"+(i?"on":"off");"function"==typeof t.performAction?t.performAction({action:`homeassistant.${o}`,data:{entity_id:e}}):t.callService("homeassistant",o,{entity_id:e})}function fi(t){return String(t??"").replace(/[^a-z0-9_-]/gi,"")}function vi({hide:t=!1,hass:e,state:i,details:o,localize:a,openEntityPopover:r}){if(t||void 0===i)return;const{type:n,heading:s,icon:c,unit:l,decimals:d,tooltip:h,entity:u,template:p,attribute:m,variables:g,config:f,separator:v=!0,display:y}=o,b=function({icon:t,state:e,attribute:i,hass:o,config:a,variables:r,localize:n}){return"string"==typeof t&&t.includes("{{")&&"object"==typeof e&&null!==e?ci({template:t,stateObj:e,attribute:i,hass:o,config:a,variables:r,localize:n}).trim():t}({icon:c,state:i,attribute:m,hass:e,config:f,variables:g,localize:a}),_=function({heading:t,state:e,attribute:i,hass:o,config:a,variables:r,localize:n}){if("string"==typeof t&&t.includes("{{")&&"object"==typeof e&&null!==e)return ci({template:t,stateObj:e,attribute:i,hass:o,config:a,variables:r,localize:n}).trim()}({heading:s,state:i,attribute:m,hass:e,config:f,variables:g,localize:a}),w="string"==typeof l&&l.length>0,x="object"==typeof i?i.entity_id:u,$=x&&"function"==typeof r,S=h||("object"==typeof i?i?.attributes?.friendly_name||i?.entity_id:u?e.states?.[u]?.attributes?.friendly_name||u:void 0);let A,k="",C="",E=!1,z=!1;if(p&&"object"==typeof i){const t=ci({template:p,stateObj:i,attribute:m,hass:e,config:f,variables:g,localize:a});A=B`
- ${Ke(Je(t,!!b&&l))} -
`}else if("relativetime"===n)S=B` + ${Xe(ti(t,!!w&&l))} +
`}else if("relativetime"===n)A=B`
- `;else if("object"==typeof i){const[t]=i.entity_id.split(".");A=t,k=i.state,C=ci.includes(t);const o=[C&&"toggle-entity",A&&`domain-${li(A)}`,k&&`state-${li(k)}`,C&&Be(We({icon:y||i.attributes?.icon,label:s||i.attributes?.friendly_name,entity:i,hass:e}))].filter(Boolean).join(" ");if("timer"===t)S=B` + `;else if("object"==typeof i){const[t]=i.entity_id.split(".");k=t,C=i.state,E=ui.includes(t);const o=function(t,e){return"string"==typeof t&&mi.includes(t)?"auto"!==t?t:ui.includes(e)?"toggle":pi.includes(e)?"button":"chip":"row"}(y,t),n=[E&&"toggle-entity",k&&`domain-${fi(k)}`,C&&`state-${fi(C)}`,"row"!==o&&`display-${o}`,E&&Ze(Ke({icon:b||i.attributes?.icon,label:s||i.attributes?.friendly_name,entity:i,hass:e}))].filter(Boolean).join(" ");if("row"!==o){z=!0;const c=E||pi.includes(t),l="on"===i.state,d="string"==typeof s?s:i.attributes?.friendly_name||i.entity_id,h=b||i.attributes?.icon||(E?"mdi:toggle-switch":pi.includes(t)?"mdi:gesture-tap-button":void 0),u=function({state:t,domain:e,hass:i,localize:o}){return"timer"===e?B``:"function"==typeof i.formatEntityState?i.formatEntityState(t):o?o(t.state,`component.${e}.state._.`):String(t.state)}({state:i,domain:t,hass:e,localize:a});A=B` + + `}else if("timer"===t)A=B`
- `;else if(C)S=B` -
+ `;else if(E)A=B` +
function(t,e,i){const o="turn_"+(i?"on":"off");"function"==typeof t.performAction?t.performAction({action:`homeassistant.${o}`,data:{entity_id:e}}):t.callService("homeassistant",o,{entity_id:e})}(e,i.entity_id,t.target.checked)} + @change=${t=>gi(e,i.entity_id,t.target.checked)} >
- `;else{const o=["component",t,"state",i.attributes?.device_class??"_",""].join(".");let n="function"==typeof e.formatEntityState?e.formatEntityState(i):a(i.state,o);"number"==typeof d&&(n=Ve(i.state,{decimals:d,locale:e.locale}));const s=i.attributes.unit_of_measurement??"",h="humidity"===i.attributes?.device_class||i.entity_id?.includes("humidity")||"mdi:water-percent"===c?"%":"";S=B` + `;else{const o=["component",t,"state",i.attributes?.device_class??"_",""].join(".");let n="function"==typeof e.formatEntityState?e.formatEntityState(i):a(i.state,o);"number"==typeof d&&(n=Ue(i.state,{decimals:d,locale:e.locale}));const s=i.attributes.unit_of_measurement??"",h="humidity"===i.attributes?.device_class||i.entity_id?.includes("humidity")||"mdi:water-percent"===c?"%":"";A=B`
- ${Je(n,b?l:s||h,n)} + ${ti(n,w?l:s||h,n)}
- `}}else{let t="number"==typeof d?Ve(i,{decimals:d,locale:e.locale}):i;S=B`
r(w):null} + `}}else{let t="number"==typeof d?Ue(i,{decimals:d,locale:e.locale}):i;A=B`
r(x):null} > - ${Je(t,!!b&&l)} -
`}if(!1===s)return S;const E=s||$,z=["entity-heading",x&&"clickable",C&&"toggle-entity",A&&`domain-${li(A)}`,k&&`state-${li(k)}`,C&&Be(We({icon:y||i?.attributes?.icon,label:"string"==typeof s?s:i?.attributes?.friendly_name,entity:i,hass:e}))].filter(Boolean).join(" "),T=y?B` + ${ti(t,!!w&&l)} +
`}if(z)return A;if(!1===s)return A;const T=s||S,O=["entity-heading",$&&"clickable",E&&"toggle-entity",k&&`domain-${fi(k)}`,C&&`state-${fi(C)}`,E&&Ze(Ke({icon:b||i?.attributes?.icon,label:"string"==typeof s?s:i?.attributes?.friendly_name,entity:i,hass:e}))].filter(Boolean).join(" "),R=b?B` r(w):null} + icon="${b}" + title=${T} + @click=${$?()=>r(x):null} > - `:"string"==typeof _?B`${Ke(_)}`:` ${s}${!1===v?"":":"} `;return[B`
r(w):null} + `:"string"==typeof _?B`${Xe(_)}`:` ${s}${!1===v?"":":"} `;return[B`
r(x):null} > - ${T} -
`,S]}function hi({_hide:t,entity:e,unit:i,hass:o,entities:a,config:r,localize:n,openEntityPopover:s,adapter:c}){const l=r.current_value_entity,d=l?o.states[l]:e,h=l?d?.state:c.getCurrentValue(e.attributes),u=l?d?.attributes?.unit_of_measurement??i:c.getCurrentValueUnit?.(e.attributes,o.config)??i,p=r?.layout?.entities?.labels??!0,g=!1!==r?.layout?.entities?.separator,m=r?.state_labels?.[e.state]??pe(e,o,n),f=(!0===r?.hide_current_value_when_off||!0===r?.hide?.current_value_when_off||!0===r?.hide?.temperature_when_off)&&e.state===Me.OFF,v=[di({hide:t.temperature||f||null==h,state:Je(Ve(h,{...r,locale:o.locale}),u),hass:o,openEntityPopover:s,details:{heading:!!p&&(r?.label?.temperature??n("ui.card.climate.currently")),tooltip:d?.attributes?.friendly_name??l,entity:l??r.entity,separator:g}}),di({hide:t.state,state:m,hass:o,openEntityPopover:s,details:{heading:!!p&&(r?.label?.state??n("ui.panel.lovelace.editor.card.generic.state")),entity:r.entity,separator:g}}),...(a??[]).map(({name:t,state:i,show:a,_hide_when_off:c,hide_when_off:l,...d})=>di({hide:!1===a||(!0===c||!0===l)&&e.state===Me.OFF,state:i,hass:o,localize:n,openEntityPopover:s,details:{...d,heading:p&&t,tooltip:t,config:r,variables:r.variables,separator:g}}))||null].filter(t=>null!==t);return function(t,e){const{type:i="table",labels:o=!0,alignment:a}=t?.layout?.entities??{},r=[o?"with-labels":"without-labels","list"===i?"as-list":"as-table","left"===a?"align-left":"",1===e.filter(t=>null!=t).length?"single-row":""];return B`
${e}
`}(r,v)}const ui={"st:fan-speed-4":{path:"M16 15V21H19V23H21V15H19V19H18V15H16Z"},"st:fan-speed-5":{path:"M16 15H21V17H18V18H19C20.11 18 21 18.89 21 20V21C21 22.11 20.11 23 19 23H16V21H19V20H16V15Z"}};function pi({state:t,entity:e,hass:i,mode:o,adapter:a,modeOptions:r,localize:n,setMode:s}){const{type:c,hide_when_off:l,mode:d="none",list:h,name:u,heading:p,icons:g}=o;if(0===h.length||l&&t===Me.OFF)return null;const m="hvac"===c?null:a.getModePayloadKey(c);let f=m?`state_attributes.${a.getLocalizationDomain()}.${m}.`:"";"hvac"===c?f="component.climate.state._.":"vane_horizontal"===c||"vane_vertical"===c?f="":"direction"!==c&&"oscillating"!==c&&"mode"!==c||(f="");const v=(t,e=!1)=>t?!1===r?.icons||!1===g||["swing","swing_horizontal","swing_vertical","vane_horizontal","vane_vertical"].includes(c)&&!0!==g&&!e?null:function(t){return t?B` `:null}(t):null,y=(t,e)=>{const i=n(t);return i&&i!==t?i:e},_="hvac"==c?"operation":`${c}_mode`;let b;b="vane_horizontal"===c?"Vane Horizontal":"vane_vertical"===c?"Vane Vertical":"swing_horizontal"===c?y("ui.card.climate.swing_horizontal_mode","Swing Horizontal"):"swing_vertical"===c?y("ui.card.climate.swing_vertical_mode","Swing Vertical"):"direction"===c?"Direction":"oscillating"===c?"Oscillating":"mode"===c?"Mode":"preset"===c?!0===p&&y(`ui.card.${a.getLocalizationDomain()}.${_}`,"Preset"):"state"===c?!0===p&&"State":y(`ui.card.${a.getLocalizationDomain()}.${_}`,"hvac"===c?"Operation":"Mode");const w=!1!==u&&(u||b),x="fan"===c||"preset"===c&&"fan"===a.getLocalizationDomain()?"Fan speed":"swing"===c?"Swing mode":"swing_horizontal"===c?y("ui.card.climate.swing_horizontal_mode","Horizontal swing"):"swing_vertical"===c?y("ui.card.climate.swing_vertical_mode","Vertical swing"):"vane_horizontal"===c?"Horizontal vane":"vane_vertical"===c?"Vertical vane":"",$=(!0===r?.headings||!0===p)&&!1!==w,S="preset"===c&&"fan"===a.getLocalizationDomain(),A=("hvac"===c||"state"===c||"fan"===c)&&h.length<=4,k="preset"===c&&h.length<=4||["swing","swing_horizontal","swing_vertical","vane_horizontal","vane_vertical"].includes(c),C=h.length>4||"hvac"===c&&h.length>4||"fan"===c&&h.length>4;return B` + ${R} +
`,A]}function yi({_hide:t,entity:e,unit:i,hass:o,entities:a,config:r,localize:n,openEntityPopover:s,adapter:c}){const l=r.current_value_entity,d=l?o.states[l]:e,h=l?d?.state:c.getCurrentValue(e.attributes),u=l?d?.attributes?.unit_of_measurement??i:c.getCurrentValueUnit?.(e.attributes,o.config)??i,p=r?.layout?.entities?.labels??!0,m=!1!==r?.layout?.entities?.separator,g=r?.state_labels?.[e.state]??ve(e,o,n),f=(!0===r?.hide_current_value_when_off||!0===r?.hide?.current_value_when_off||!0===r?.hide?.temperature_when_off)&&e.state===Fe.OFF,v=[vi({hide:t.temperature||f||null==h,state:ti(Ue(h,{...r,locale:o.locale}),u),hass:o,openEntityPopover:s,details:{heading:!!p&&(r?.label?.temperature??n("ui.card.climate.currently")),tooltip:d?.attributes?.friendly_name??l,entity:l??r.entity,separator:m}}),vi({hide:t.state,state:g,hass:o,openEntityPopover:s,details:{heading:!!p&&(r?.label?.state??n("ui.panel.lovelace.editor.card.generic.state")),entity:r.entity,separator:m}}),...(a??[]).map(({name:t,state:i,show:a,display:c,_hide_when_off:l,hide_when_off:d,...h})=>vi({hide:!1===a||(!0===l||!0===d)&&e.state===Fe.OFF,state:i,hass:o,localize:n,openEntityPopover:s,details:{...h,heading:p&&t,tooltip:t,config:r,variables:r.variables,separator:m,display:c??r?.layout?.entities?.display}}))||null].filter(t=>null!==t);return function(t,e){const{type:i="table",labels:o=!0,alignment:a}=t?.layout?.entities??{},r=[o?"with-labels":"without-labels","list"===i?"as-list":"as-table","left"===a?"align-left":"",1===e.filter(t=>null!=t).length?"single-row":""];return B`
${e}
`}(r,v)}const bi=new Set(["heat_cool","fan_only"]);function _i(t,e,i){if(!e||!i)return{layout:"inline",lines:e?[e]:[]};const o=e.trim();if(!o)return{layout:"inline",lines:[]};if("heat_cool"===t){const t=o.split(/\s*\/\s*/).filter(Boolean);if(2===t.length&&t.every(t=>t.length>0&&t.length<=12))return{layout:"stacked",lines:t}}if("fan_only"===t){const t=o.split(/\s+/).filter(Boolean);if(2===t.length&&t.every(t=>t.length>0&&t.length<=10))return{layout:"stacked",lines:t}}return bi.has(t)&&o.length>10?{layout:"column",lines:[o]}:{layout:"inline",lines:[o]}}const wi={"st:fan-speed-4":{path:"M16 15V21H19V23H21V15H19V19H18V15H16Z"},"st:fan-speed-5":{path:"M16 15H21V17H18V18H19C20.11 18 21 18.89 21 20V21C21 22.11 20.11 23 19 23H16V21H19V20H16V15Z"}};function xi(t){return t?B` `:null}function $i({state:t,entity:e,hass:i,mode:o,adapter:a,modeOptions:r,localize:n,setMode:s}){const{type:c,hide_when_off:l,mode:d="none",list:h,name:u,heading:p,icons:m}=o;if(0===h.length||l&&t===Fe.OFF)return null;const g="hvac"===c?null:a.getModePayloadKey(c);let f=g?`state_attributes.${a.getLocalizationDomain()}.${g}.`:"";"hvac"===c?f="component.climate.state._.":"vane_horizontal"===c||"vane_vertical"===c?f="":"direction"!==c&&"oscillating"!==c&&"mode"!==c||(f="");const v=(t,e)=>{const i=n(t);return i&&i!==t?i:e},y="hvac"==c?"operation":`${c}_mode`;let b;b="vane_horizontal"===c?"Vane Horizontal":"vane_vertical"===c?"Vane Vertical":"swing_horizontal"===c?v("ui.card.climate.swing_horizontal_mode","Swing Horizontal"):"swing_vertical"===c?v("ui.card.climate.swing_vertical_mode","Swing Vertical"):"direction"===c?"Direction":"oscillating"===c?"Oscillating":"mode"===c?"Mode":"preset"===c?!0===p&&v(`ui.card.${a.getLocalizationDomain()}.${y}`,"Preset"):"state"===c?!0===p&&"State":v(`ui.card.${a.getLocalizationDomain()}.${y}`,"hvac"===c?"Operation":"Mode");const _=!1!==u&&(u||b),w="fan"===c||"preset"===c&&"fan"===a.getLocalizationDomain()?"Fan speed":"swing"===c?"Swing mode":"swing_horizontal"===c?v("ui.card.climate.swing_horizontal_mode","Horizontal swing"):"swing_vertical"===c?v("ui.card.climate.swing_vertical_mode","Vertical swing"):"vane_horizontal"===c?"Horizontal vane":"vane_vertical"===c?"Vertical vane":"",x=(!0===r?.headings||!0===p)&&!1!==_,$="preset"===c&&"fan"===a.getLocalizationDomain(),S=("hvac"===c||"state"===c||"fan"===c)&&h.length<=4,A="preset"===c&&h.length<=4||["swing","swing_horizontal","swing_vertical","vane_horizontal","vane_vertical"].includes(c),k=h.length>4||"hvac"===c&&h.length>4||"fan"===c&&h.length>4;return B`
- ${$?B`
${w}
`:""} - ${h.map(({value:o,icon:a,iconConfigured:l,name:h,hide_when_off:u})=>{if(!0===u&&t===Me.OFF)return q;const p=(t=>String(t).replace(/[^a-z0-9_-]/gi,""))(o),g=((t,o)=>!1===t||!1===r?.names?null:t!==o?f?n(t,f):t:"hvac"!==c&&"state"!==c||"function"!=typeof i?.formatEntityState?m&&e&&"function"==typeof i?.formatEntityAttributeValue?i.formatEntityAttributeValue(e,m,o):f?n(t,f):t:i.formatEntityState({...e,state:o}))(h,o);return B` + ${x?B`
${_}
`:""} + ${h.map(({value:o,icon:a,iconConfigured:l,name:h,hide_when_off:u})=>{if(!0===u&&t===Fe.OFF)return q;const p=(t=>String(t).replace(/[^a-z0-9_-]/gi,""))(o),v=((t,o)=>!1===t||!1===r?.names?null:t!==o?f?n(t,f):t:"hvac"!==c&&"state"!==c||"function"!=typeof i?.formatEntityState?g&&e&&"function"==typeof i?.formatEntityAttributeValue?i.formatEntityAttributeValue(e,g,o):f?n(t,f):t:i.formatEntityState({...e,state:o}))(h,o),y=_i(String(o),v,S),b="stacked"===y.layout?"label-stacked":"column"===y.layout?"label-column":"";return B`
s(c,o)} @keydown=${t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),s(c,o))}} > - ${v(a,l)} - ${g?B`${g}`:null} + ${((t,e=!1)=>t?!1===r?.icons||!1===m||["swing","swing_horizontal","swing_vertical","vane_horizontal","vane_vertical"].includes(c)&&!0!==m&&!e?null:xi(t):null)(a,l)} + ${((t,e)=>{if(!e)return null;const i=_i(t,e,S);return"stacked"===i.layout?B` + ${i.lines.map(t=>B`${t}`)} + `:B`${i.lines[0]??e}`})(String(o),v)}
`})}
- `}window.customIconsets=window.customIconsets||{},window.customIconsets.st||(window.customIconsets.st=async t=>{const e=ui[`st:${t}`];return e?{path:`M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13${e.path}`}:{path:""}});const gi=Object.values(mt),mi="hass:chevron-up",fi="hass:chevron-down",vi="mdi:plus",yi="mdi:minus",_i={temperature:!1,state:!1},bi=[mt.PRESET,mt.FAN,mt.HVAC,mt.SWING,mt.SWING_HORIZONTAL,mt.SWING_VERTICAL,mt.VANE_HORIZONTAL,mt.VANE_VERTICAL,mt.DIRECTION,mt.OSCILLATING,mt.STATE],wi=["entity","hide_when_off","hide_off_when_off"];function xi(t,e,i){const o=Si(String(e),i);if(Ai(o))return!1!==o.include;const a=Object.keys(i).some(t=>!t.startsWith("_")),r=t===mt.PRESET;return o??!(r&&a)}function $i(t){return t.toLowerCase().replace(/\s+/g,"_")}function Si(t,e){const i=$i(t),o=e[t];if(void 0!==o)return o;if(void 0!==e[i])return e[i];const a=Object.entries(e).find(([t])=>!t.startsWith("_")&&!wi.includes(t)&&$i(t)===i);return a?.[1]}function Ai(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function ki(t,e){const i=Array.isArray(e._order)?e._order.map(String):Object.keys(e).filter(t=>!t.startsWith("_")&&!wi.includes(t));if(0===i.length)return t;const o=new Map;t.forEach(t=>{o.set($i(String(t)),t)});const a=new Set,r=[];return i.forEach(t=>{const e=$i(t);o.has(e)&&!a.has(e)&&(r.push(o.get(e)),a.add(e))}),t.forEach(t=>{const e=$i(String(t));a.has(e)||(r.push(t),a.add(e))}),r}function Ci(t,e,i,o={}){let a=e[i.getModeAttribute(t)];return t===mt.STATE?a=["off","on"]:t===mt.DIRECTION&&e.direction?a=["forward","reverse"]:t===mt.OSCILLATING&&"boolean"==typeof e.oscillating&&(a=[!1,!0]),Array.isArray(a)?ki(a,o).filter(e=>xi(t,e,o)).map(e=>{const i=String(e),r=Si(i,o),n=Ai(r)?r:{},{name:s,...c}=n,l=!0===n.hide_when_off||!0===o.hide_off_when_off&&"off"===$i(i),d=!1!==s&&("string"==typeof s?s:be(i));return{...c,hide_when_off:l||void 0,icon:n.icon??(t===mt.FAN?Ie(i,a):void 0)??_e(i),iconConfigured:void 0!==n.icon,value:i,name:d}}):[]}function Ei(t){return"string"==typeof t?.entity_id&&t.entity_id.startsWith("select.")&&Array.isArray(t.attributes?.options)}function zi(t,e={}){return ki(t.attributes.options,e).filter(t=>xi("select",t,e)).map(t=>{const i=String(t),o=Si(i,e),a=Ai(o)?o:{},{name:r,...n}=a,s=!0===a.hide_when_off||!0===e.hide_off_when_off&&"off"===$i(i),c=!1!==r&&("string"==typeof r?r:be(i));return{...n,hide_when_off:s||void 0,icon:a.icon??_e(i),iconConfigured:void 0!==a.icon,value:i,name:c}})}function Ti(t,e){if("fan"!==t)return"";const i=Number(e?.percentage);if(Number.isNaN(i))return"";const o=Math.min(Math.max(i,0),100);return`--st-fan-spin-duration: ${Math.max(.9,3.2-o/100*2.1).toFixed(2)}s;`}function Oi(t){const e=t?.style;if("object"==typeof e&&e){const t=e["ha-card"];if("string"==typeof t)return t.trim();const i=e["."];if("string"==typeof i){const t=i.match(/ha-card\s*\{([\s\S]*?)\}/);return(t?.[1]??"").trim()}}if("string"!=typeof e)return"";const i=e.match(/ha-card\s*\{([\s\S]*?)\}/);return(i?.[1]??"").trim()}function Ni(t,e,i,o){return gi.includes(t)&&(t===mt.STATE?"fan"===e||"humidifier"===e:void 0!==i[o.getModeAttribute(t)])}function Mi(t,e,i,o){return t.filter(t=>Ni(t,e,i,o)).map(t=>({type:t,hide_when_off:!1,list:Ci(t,i,o)}))}class Ri extends lt{constructor(){super(...arguments),this.modes=[],this._hass={},this.entities=[],this.showEntities=!0,this.name="",this.stepSize=.5,this._values={},this._updatingValues=!1,this._hide=_i,this._updatingValuesTimeout=null,this._holdTimer=null,this._holdFired=!1,this._clickCount=0,this._clickTimer=null,this._setpointUpdateTimer=null,this._pendingSetpointValues=null,this._setpointDebounce=500,this.localize=(t,e="")=>{const i=`${e}${t}`;return this._hass.localize?.(i)||t},this.toggleEntityChanged=(t,e)=>{if(!this.header||!e)return;const i=t.target;this._callAction("homeassistant.turn_"+(i.checked?"on":"off"),{entity_id:e})},this.setMode=(t,e)=>{if(t&&e){const i=$t(this.config.entity);if(t===mt.STATE)return this._callAction(`${i.getLocalizationDomain()}.turn_${e}`,{entity_id:this.config.entity}),void vt(this,"haptic","light");const o=this.modes.find(e=>e.type===t);if(o?.entity)return this._callAction("select.select_option",{entity_id:o.entity,option:e}),void vt(this,"haptic","light");const a=i.transformModePayloadValue?.(t,e)??e;this._callAction(`${i.getLocalizationDomain()}.${i.getModeService(t)}`,{entity_id:this.config.entity,[i.getModePayloadKey(t)]:a}),vt(this,"haptic","light")}else vt(this,"haptic","failure")},this.openEntityPopover=(t=null)=>{vt(this,"hass-more-info",{entityId:t||this.config.entity})},this._onActionPointerDown=t=>{0!==t.button&&"mouse"===t.pointerType||(this._holdFired=!1,this._holdTimer&&clearTimeout(this._holdTimer),this._holdTimer=setTimeout(()=>{this._holdFired=!0,this._holdTimer=null,this._dispatchAction("hold")},Ri.HOLD_MS))},this._onActionPointerUp=()=>{this._holdTimer&&(clearTimeout(this._holdTimer),this._holdTimer=null)},this._onActionClick=t=>{t.preventDefault(),this._holdFired?this._holdFired=!1:(this._clickCount+=1,1===this._clickCount?(this._clickTimer&&clearTimeout(this._clickTimer),this._clickTimer=setTimeout(()=>{this._clickCount=0,this._clickTimer=null,this._dispatchSetpointTap()},Ri.DOUBLE_TAP_MS)):(this._clickTimer&&clearTimeout(this._clickTimer),this._clickTimer=null,this._clickCount=0,this._dispatchAction("double_tap")))},this._onSetpointKeyDown=t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this._dispatchSetpointTap())}}static get styles(){return ft}_sendSetpointValues(t){const{domain:e,service:i,data:o={}}=this.service;this._callAction(`${e}.${i}`,{entity_id:this.config.entity,...o,...t})}_scheduleSetpointValues(t){const e=this._setpointDebounce;e<=0?this._sendSetpointValues(t):(this._pendingSetpointValues={...t},this._setpointUpdateTimer&&clearTimeout(this._setpointUpdateTimer),this._setpointUpdateTimer=setTimeout(()=>{const t=this._pendingSetpointValues;this._setpointUpdateTimer=null,this._pendingSetpointValues=null,t&&this._sendSetpointValues(t)},e))}_getSetpointDebounce(t){const e=Number(t?.setpoint_debounce_ms??500);return Number.isFinite(e)&&e>=0?e:500}_callAction(t,e){if("function"==typeof this._hass.callService){const[i,o]=t.split(".");this._hass.callService(i,o,e)}else"function"==typeof this._hass.performAction&&this._hass.performAction({action:t,data:e})}static getConfigElement(){return window.document.createElement(`${t}-editor`)}static getStubConfig(t){return{entity:Object.keys(t.states??{}).find(t=>t.startsWith("climate.")||t.startsWith("fan.")||t.startsWith("humidifier."))??""}}setConfig(t){this.config=_t({decimals:1,...t});const e=this._getSetpointDebounce(this.config);e!==this._setpointDebounce&&(this._setpointDebounce=e),this.entities=[],this.showEntities=!0,this.toggleAttribute("embedded",!0===this.config.embedded),this._hass?.states&&this.updateFromHass(this._hass)}set hass(t){if(t?.states&&(this._hass=t),!this.config?.entity)return;if(!t?.states)return;t.states[this.config.entity]&&this.updateFromHass(t)}disconnectedCallback(){this._updatingValuesTimeout&&(clearTimeout(this._updatingValuesTimeout),this._updatingValuesTimeout=null),this._holdTimer&&(clearTimeout(this._holdTimer),this._holdTimer=null),this._clickTimer&&(clearTimeout(this._clickTimer),this._clickTimer=null),this._setpointUpdateTimer&&(clearTimeout(this._setpointUpdateTimer),this._setpointUpdateTimer=null),this._pendingSetpointValues=null,super.disconnectedCallback()}updateFromHass(t){const e=t.states[this.config.entity];this.entity!==e&&(this.entity=e);const i=$t(this.config.entity);this.header=we(this.config.header,e,t,!1!==this.config.enhanced_visuals),this.service=function(t,e=wt){return t||e.getSetpointService()}(this.config?.service??!1,i);const o=e.attributes;let a=function(t,e,i=wt,o){return!1===t?{}:t?Object.entries(t).reduce((t,[i,a])=>{if(a?.hide)return t;const r=Array.isArray(a?.hide_when)?a.hide_when:a?.hide_when?[a.hide_when]:[];return o&&r.includes(o)||(t[i]=e?.[i]),t},{}):i.getSetpoints(e)}(this.config?.setpoints??null,o,i,e.state);this._updatingValues&&function(t,e){const i=Object.keys(t);return i.length===Object.keys(e).length&&!i.some(i=>t?.[i]!==e?.[i])}(a,this._values)?(this._updatingValues=!1,this._updatingValuesTimeout&&(clearTimeout(this._updatingValuesTimeout),this._updatingValuesTimeout=null)):this._updatingValues||(this._values=a);const r=this.config.entity.split(".")[0],n=function(t){return t.some(({type:t})=>t===mt.STATE)?t.map(t=>t.type&&t.type!==mt.STATE?{...t,list:t.list?.filter(({value:t})=>"off"!==t)??[]}:t):t}(function(t,e,i,o,a){if(!1===t.control)return[];if(Array.isArray(t.control))return Mi(t.control,e,i,o);if(t.control&&"object"==typeof t.control){const r=t.control,n=Object.entries(t.control).filter(([t])=>!t.startsWith("_")),s=Array.isArray(r._order)?r._order.map(String):void 0,c=(s?[...s.filter(t=>n.some(([e])=>e===t)),...n.map(([t])=>t).filter(t=>!s.includes(t))]:n.map(([t])=>t)).map(t=>[t,r[t]]);if(c.length>0)return c.filter(([,t])=>!1!==t).filter(([t,r])=>{const n=!0===r||!1===r?void 0:r.entity;return Ei(n?a?.states?.[n]:void 0)||Ni(t,e,i,o)}).map(([t,e])=>{const{_name:r,_hide_when_off:n,hide_when_off:s,hide_off_when_off:c,_icons:l,_heading:d,entity:h,...u}=!0===e?{}:e,p=h?a?.states?.[h]:void 0,g=Ei(p),m={...u,...!0===c?{hide_off_when_off:c}:{}};return{type:t,entity:g?h:void 0,hide_when_off:s??n,icons:l,heading:d,name:r,preserve_option_order:Object.keys(u).length>0,list:g?zi(p,m):Ci(t,i,o,m)}})}return Mi(o.getDefaultControl(),e,i,o)}(this.config,r,o,i,t)),s=(c=this.config.control,Array.isArray(c)||c&&"object"==typeof c&&Array.isArray(c._order)?n:function(t,e){if("fan"!==e&&"climate"!==e)return t;const i=t=>{const e=bi.indexOf(t);return-1===e?bi.length:e};return[...t].sort((t,e)=>i(t.type)-i(e.type))}(n,r));var c;this.modes=s.map(a=>{const r=a.preserve_option_order?a.list:a.type===mt.HVAC?function(t){const e=Object.values(Me),i=[],o=[];return t.forEach(t=>{const a=e.indexOf(t.value);a>=0?i[a]=t:o.push(t)}),[...i.filter(Boolean),...o]}(a.list):a.type===mt.FAN?function(t){const e=[],i=[];return t.forEach(t=>{const o=Re.indexOf(t.value.toLowerCase());o>=0?e[o]=t:i.push(t)}),[...e.filter(Boolean),...i]}(a.list):a.list,n=a.entity&&t.states?.[a.entity]?t.states[a.entity].state:a.type===mt.HVAC||a.type===mt.STATE?e.state:o[i.getModePayloadKey(a.type)];return{...a,list:r,mode:n}});const{step:l}=i.getRange(o);this.stepSize=Number(this.config.step_size??l??.5),this._hide={..._i,...this.config.hide??{}};const d=this.config.entities??[];!1===d?(this.showEntities=!1,this.entities=[]):d?(this.showEntities=!0,this.entities=d.map(({name:e,entity:i,attribute:o,template:a,unit:r="",...n})=>{let s;const c=[e];return i?(s=t.states[i],c.push(s?.attributes?.friendly_name),o&&!a&&(s=s?.attributes?.[o])):o&&o in(this.entity.attributes??{})&&(s=a?this.entity:this.entity.attributes[o],c.push(o)),c.push(i),{...n,name:c.find(t=>!!t),state:s,entity:i,attribute:o,template:a,unit:r}})):(this.showEntities=!0,this.entities=[])}render({_hide:t,_values:e,_updatingValues:i,config:o,entity:a}=this){if(!o)return B``;const r=[];if(this.stepSize<1&&0===this.config.decimals&&r.push(B` + `}window.customIconsets=window.customIconsets||{},window.customIconsets.st||(window.customIconsets.st=async t=>{const e=wi[`st:${t}`];return e?{path:`M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13${e.path}`}:{path:""}});const Si=t=>String(t).replace(/[^a-z0-9_-]/gi,"");function Ai({toggles:t,mainState:e,toggleFooterEntity:i,openEntityPopover:o}){const a=t.filter(t=>!(!0===t.hide_when_off&&e===Fe.OFF));return a.length?B` + + `:q}const ki=Object.values(gt),Ci="hass:chevron-up",Ei="hass:chevron-down",zi="mdi:plus",Ti="mdi:minus",Oi={temperature:!1,state:!1},Ri=[gt.PRESET,gt.FAN,gt.HVAC,gt.SWING,gt.SWING_HORIZONTAL,gt.SWING_VERTICAL,gt.VANE_HORIZONTAL,gt.VANE_VERTICAL,gt.DIRECTION,gt.OSCILLATING,gt.STATE],Ni=["entity","hide_when_off","hide_off_when_off"];function Mi(t,e,i){const o=Pi(String(e),i);if(Fi(o))return!1!==o.include;const a=Object.keys(i).some(t=>!t.startsWith("_")),r=t===gt.PRESET;return o??!(r&&a)}function ji(t){return t.toLowerCase().replace(/\s+/g,"_")}function Pi(t,e){const i=ji(t),o=e[t];if(void 0!==o)return o;if(void 0!==e[i])return e[i];const a=Object.entries(e).find(([t])=>!t.startsWith("_")&&!Ni.includes(t)&&ji(t)===i);return a?.[1]}function Fi(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function Hi(t,e){const i=Array.isArray(e._order)?e._order.map(String):Object.keys(e).filter(t=>!t.startsWith("_")&&!Ni.includes(t));if(0===i.length)return t;const o=new Map;t.forEach(t=>{o.set(ji(String(t)),t)});const a=new Set,r=[];return i.forEach(t=>{const e=ji(t);o.has(e)&&!a.has(e)&&(r.push(o.get(e)),a.add(e))}),t.forEach(t=>{const e=ji(String(t));a.has(e)||(r.push(t),a.add(e))}),r}function Ii(t,e,i,o={}){let a=e[i.getModeAttribute(t)];return t===gt.STATE?a=["off","on"]:t===gt.DIRECTION&&e.direction?a=["forward","reverse"]:t===gt.OSCILLATING&&"boolean"==typeof e.oscillating&&(a=[!1,!0]),Array.isArray(a)?Hi(a,o).filter(e=>Mi(t,e,o)).map(e=>{const i=String(e),r=Pi(i,o),n=Fi(r)?r:{},{name:s,...c}=n,l=!0===n.hide_when_off||!0===o.hide_off_when_off&&"off"===ji(i),d=!1!==s&&("string"==typeof s?s:Se(i));return{...c,hide_when_off:l||void 0,icon:n.icon??(t===gt.FAN?De(i,a):void 0)??$e(i),iconConfigured:void 0!==n.icon,value:i,name:d}}):[]}function Vi(t){return"string"==typeof t?.entity_id&&t.entity_id.startsWith("select.")&&Array.isArray(t.attributes?.options)}function Li(t,e={}){return Hi(t.attributes.options,e).filter(t=>Mi("select",t,e)).map(t=>{const i=String(t),o=Pi(i,e),a=Fi(o)?o:{},{name:r,...n}=a,s=!0===a.hide_when_off||!0===e.hide_off_when_off&&"off"===ji(i),c=!1!==r&&("string"==typeof r?r:Se(i));return{...n,hide_when_off:s||void 0,icon:a.icon??$e(i),iconConfigured:void 0!==a.icon,value:i,name:c}})}function Di(t,e){if("fan"!==t)return"";const i=Number(e?.percentage);if(Number.isNaN(i))return"";const o=Math.min(Math.max(i,0),100);return`--st-fan-spin-duration: ${Math.max(.9,3.2-o/100*2.1).toFixed(2)}s;`}function Ui(t){const e=t?.style;if("object"==typeof e&&e){const t=e["ha-card"];if("string"==typeof t)return t.trim();const i=e["."];if("string"==typeof i){const t=i.match(/ha-card\s*\{([\s\S]*?)\}/);return(t?.[1]??"").trim()}}if("string"!=typeof e)return"";const i=e.match(/ha-card\s*\{([\s\S]*?)\}/);return(i?.[1]??"").trim()}function Wi(t,e,i,o){return ki.includes(t)&&(t===gt.STATE?"fan"===e||"humidifier"===e:void 0!==i[o.getModeAttribute(t)])}function Bi(t,e,i,o){return t.filter(t=>Wi(t,e,i,o)).map(t=>({type:t,hide_when_off:!1,list:Ii(t,i,o)}))}class Gi extends lt{constructor(){super(...arguments),this.modes=[],this._hass={},this.entities=[],this.footer=[],this.showEntities=!0,this.name="",this.stepSize=.5,this._values={},this._updatingValues=!1,this._hide=Oi,this._updatingValuesTimeout=null,this._holdTimer=null,this._holdFired=!1,this._clickCount=0,this._clickTimer=null,this._setpointUpdateTimer=null,this._pendingSetpointValues=null,this._setpointDebounce=500,this.localize=(t,e="")=>{const i=`${e}${t}`;return this._hass.localize?.(i)||t},this.toggleEntityChanged=(t,e)=>{if(!this.header||!e)return;const i=t.target;this._callAction("homeassistant.turn_"+(i.checked?"on":"off"),{entity_id:e})},this.toggleFooterEntity=(t,e)=>{this._callAction("homeassistant.turn_"+(e?"on":"off"),{entity_id:t}),vt(this,"haptic","light")},this.setMode=(t,e)=>{if(t&&e){const i=$t(this.config.entity);if(t===gt.STATE)return this._callAction(`${i.getLocalizationDomain()}.turn_${e}`,{entity_id:this.config.entity}),void vt(this,"haptic","light");const o=this.modes.find(e=>e.type===t);if(o?.entity)return this._callAction("select.select_option",{entity_id:o.entity,option:e}),void vt(this,"haptic","light");const a=i.transformModePayloadValue?.(t,e)??e;this._callAction(`${i.getLocalizationDomain()}.${i.getModeService(t)}`,{entity_id:this.config.entity,[i.getModePayloadKey(t)]:a}),vt(this,"haptic","light")}else vt(this,"haptic","failure")},this.openEntityPopover=(t=null)=>{vt(this,"hass-more-info",{entityId:t||this.config.entity})},this._onActionPointerDown=t=>{0!==t.button&&"mouse"===t.pointerType||(this._holdFired=!1,this._holdTimer&&clearTimeout(this._holdTimer),this._holdTimer=setTimeout(()=>{this._holdFired=!0,this._holdTimer=null,this._dispatchAction("hold")},Gi.HOLD_MS))},this._onActionPointerUp=()=>{this._holdTimer&&(clearTimeout(this._holdTimer),this._holdTimer=null)},this._onActionClick=t=>{t.preventDefault(),this._holdFired?this._holdFired=!1:(this._clickCount+=1,1===this._clickCount?(this._clickTimer&&clearTimeout(this._clickTimer),this._clickTimer=setTimeout(()=>{this._clickCount=0,this._clickTimer=null,this._dispatchSetpointTap()},Gi.DOUBLE_TAP_MS)):(this._clickTimer&&clearTimeout(this._clickTimer),this._clickTimer=null,this._clickCount=0,this._dispatchAction("double_tap")))},this._onSetpointKeyDown=t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this._dispatchSetpointTap())}}static get styles(){return ft}_sendSetpointValues(t){const{domain:e,service:i,data:o={}}=this.service;this._callAction(`${e}.${i}`,{entity_id:this.config.entity,...o,...t})}_scheduleSetpointValues(t){const e=this._setpointDebounce;e<=0?this._sendSetpointValues(t):(this._pendingSetpointValues={...t},this._setpointUpdateTimer&&clearTimeout(this._setpointUpdateTimer),this._setpointUpdateTimer=setTimeout(()=>{const t=this._pendingSetpointValues;this._setpointUpdateTimer=null,this._pendingSetpointValues=null,t&&this._sendSetpointValues(t)},e))}_getSetpointDebounce(t){const e=Number(t?.setpoint_debounce_ms??500);return Number.isFinite(e)&&e>=0?e:500}_callAction(t,e){if("function"==typeof this._hass.callService){const[i,o]=t.split(".");this._hass.callService(i,o,e)}else"function"==typeof this._hass.performAction&&this._hass.performAction({action:t,data:e})}static getConfigElement(){return window.document.createElement(`${t}-editor`)}static getStubConfig(t){return{entity:Object.keys(t.states??{}).find(t=>t.startsWith("climate.")||t.startsWith("fan.")||t.startsWith("humidifier."))??""}}setConfig(t){this.config=bt({decimals:1,...t});const e=this._getSetpointDebounce(this.config);e!==this._setpointDebounce&&(this._setpointDebounce=e),this.entities=[],this.footer=[],this.showEntities=!0,this.toggleAttribute("embedded",!0===this.config.embedded),this._hass?.states&&this.updateFromHass(this._hass)}set hass(t){if(t?.states&&(this._hass=t),!this.config?.entity)return;if(!t?.states)return;t.states[this.config.entity]&&this.updateFromHass(t)}disconnectedCallback(){this._updatingValuesTimeout&&(clearTimeout(this._updatingValuesTimeout),this._updatingValuesTimeout=null),this._holdTimer&&(clearTimeout(this._holdTimer),this._holdTimer=null),this._clickTimer&&(clearTimeout(this._clickTimer),this._clickTimer=null),this._setpointUpdateTimer&&(clearTimeout(this._setpointUpdateTimer),this._setpointUpdateTimer=null),this._pendingSetpointValues=null,super.disconnectedCallback()}updateFromHass(t){const e=t.states[this.config.entity];this.entity!==e&&(this.entity=e);const i=$t(this.config.entity);this.header=Ae(this.config.header,e,t,!1!==this.config.enhanced_visuals),this.service=function(t,e=wt){return t||e.getSetpointService()}(this.config?.service??!1,i);const o=e.attributes;let a=function(t,e,i=wt,o){return!1===t?{}:t?Object.entries(t).reduce((t,[i,a])=>{if(a?.hide)return t;const r=Array.isArray(a?.hide_when)?a.hide_when:a?.hide_when?[a.hide_when]:[];return o&&r.includes(o)||(t[i]=e?.[i]),t},{}):i.getSetpoints(e)}(this.config?.setpoints??null,o,i,e.state);this._updatingValues&&function(t,e){const i=Object.keys(t);return i.length===Object.keys(e).length&&!i.some(i=>t?.[i]!==e?.[i])}(a,this._values)?(this._updatingValues=!1,this._updatingValuesTimeout&&(clearTimeout(this._updatingValuesTimeout),this._updatingValuesTimeout=null)):this._updatingValues||(this._values=a);const r=this.config.entity.split(".")[0],n=function(t){return t.some(({type:t})=>t===gt.STATE)?t.map(t=>t.type&&t.type!==gt.STATE?{...t,list:t.list?.filter(({value:t})=>"off"!==t)??[]}:t):t}(function(t,e,i,o,a){if(!1===t.control)return[];if(Array.isArray(t.control))return Bi(t.control,e,i,o);if(t.control&&"object"==typeof t.control){const r=t.control,n=Object.entries(t.control).filter(([t])=>!t.startsWith("_")),s=Array.isArray(r._order)?r._order.map(String):void 0,c=(s?[...s.filter(t=>n.some(([e])=>e===t)),...n.map(([t])=>t).filter(t=>!s.includes(t))]:n.map(([t])=>t)).map(t=>[t,r[t]]);if(c.length>0)return c.filter(([,t])=>!1!==t).filter(([t,r])=>{const n=!0===r||!1===r?void 0:r.entity;return Vi(n?a?.states?.[n]:void 0)||Wi(t,e,i,o)}).map(([t,e])=>{const{_name:r,_hide_when_off:n,hide_when_off:s,hide_off_when_off:c,_icons:l,_heading:d,entity:h,...u}=!0===e?{}:e,p=h?a?.states?.[h]:void 0,m=Vi(p),g={...u,...!0===c?{hide_off_when_off:c}:{}};return{type:t,entity:m?h:void 0,hide_when_off:s??n,icons:l,heading:d,name:r,preserve_option_order:Object.keys(u).length>0,list:m?Li(p,g):Ii(t,i,o,g)}})}return Bi(o.getDefaultControl(),e,i,o)}(this.config,r,o,i,t)),s=(c=this.config.control,Array.isArray(c)||c&&"object"==typeof c&&Array.isArray(c._order)?n:function(t,e){if("fan"!==e&&"climate"!==e)return t;const i=t=>{const e=Ri.indexOf(t);return-1===e?Ri.length:e};return[...t].sort((t,e)=>i(t.type)-i(e.type))}(n,r));var c;this.modes=s.map(a=>{const r=a.preserve_option_order?a.list:a.type===gt.HVAC?function(t){const e=Object.values(Fe),i=[],o=[];return t.forEach(t=>{const a=e.indexOf(t.value);a>=0?i[a]=t:o.push(t)}),[...i.filter(Boolean),...o]}(a.list):a.type===gt.FAN?function(t){const e=[],i=[];return t.forEach(t=>{const o=He.indexOf(t.value.toLowerCase());o>=0?e[o]=t:i.push(t)}),[...e.filter(Boolean),...i]}(a.list):a.list,n=a.entity&&t.states?.[a.entity]?t.states[a.entity].state:a.type===gt.HVAC||a.type===gt.STATE?e.state:o[i.getModePayloadKey(a.type)];return{...a,list:r,mode:n}});const{step:l}=i.getRange(o);this.stepSize=Number(this.config.step_size??l??.5),this._hide={...Oi,...this.config.hide??{}};const d=this.config.entities??[];!1===d?(this.showEntities=!1,this.entities=[]):d?(this.showEntities=!0,this.entities=d.map(({name:e,entity:i,attribute:o,template:a,unit:r="",...n})=>{let s;const c=[e];return i?(s=t.states[i],c.push(s?.attributes?.friendly_name),o&&!a&&(s=s?.attributes?.[o])):o&&o in(this.entity.attributes??{})&&(s=a?this.entity:this.entity.attributes[o],c.push(o)),c.push(i),{...n,name:c.find(t=>!!t),state:s,entity:i,attribute:o,template:a,unit:r}})):(this.showEntities=!0,this.entities=[]),this.footer=function(t){return Array.isArray(t.footer)?t.footer:[]}(this.config).map(({entity:e,name:i,icon:o,hide_when_off:a})=>{const r=t.states?.[e];return r?{entity:e,name:i,icon:o,hide_when_off:a,state:r}:null}).filter(t=>!!t)}render({_hide:t,_values:e,_updatingValues:i,config:o,entity:a}=this){if(!o)return B``;const r=[];if(this.stepSize<1&&0===this.config.decimals&&r.push(B` Decimals is set to 0 and step_size is lower than 1. Decrementing a setpoint will likely not work. Change one of the settings to clear @@ -2703,23 +3138,24 @@ ha-card.standard-visuals .thermostat-trigger:active { Entity not available: ${o.entity} - `;const n=$t(o.entity),s=ue(a),{min:c,max:l}=n.getRange(a.attributes),d=this.getUnit(),h=o.entity.split(".")[0],u=Object.keys(e).length,p=!1===this.config.enhanced_visuals?this.config?.layout?.step??"column":this.config?.layout?.step??"row",g="row"===p,m=["unavailable","unknown"].includes(a.state),f=t=>"string"==typeof t?t.replace(/[^a-z0-9_-]/gi,""):"",v=[!this.header&&"no-header",`domain-${f(h)}`,`state-${f(a.state)}`,!1===this.config.enhanced_visuals&&"standard-visuals",!0===this.config.embedded&&"embedded",f(s),m&&f(a.state)].filter(t=>!!t),y=["body",this.showEntities&&"has-entities",`step-${p}`,`setpoint-count-${u}`].filter(t=>!!t),_=!0===o.embedded,b=_?function(t,e,i){return[Oi(t.card_mod),Ti(e,i)].filter(t=>!!t).join("; ")}(o,h,a.attributes):Ti(h,a.attributes),w=this.showEntities?hi({_hide:t,unit:d,hass:this._hass,entity:this.entity,entities:this.entities,config:this.config,adapter:n,localize:this.localize,openEntityPopover:this.openEntityPopover}):"",x=_?B``:Ge({header:this.header,hass:this._hass,toggleEntityChanged:this.toggleEntityChanged,entity:this.entity,openEntityPopover:this.openEntityPopover});return B` - + `;const n=$t(o.entity),s=fe(a),{min:c,max:l}=n.getRange(a.attributes),d=this.getUnit(),h=o.entity.split(".")[0],u=Object.keys(e).length,p=this.config?.layout?.step,m=!p&&this.showEntities&&u>1,g=p??(!1===this.config.enhanced_visuals||m?"column":"row"),f="row"===g,v=["unavailable","unknown"].includes(a.state),y=t=>"string"==typeof t?t.replace(/[^a-z0-9_-]/gi,""):"",b=[!this.header&&"no-header",`domain-${y(h)}`,`state-${y(a.state)}`,!1===this.config.enhanced_visuals&&"standard-visuals",!0===this.config.embedded&&"embedded",y(s),v&&y(a.state)].filter(t=>!!t),_=["body",this.showEntities&&"has-entities",`step-${g}`,`setpoint-count-${u}`].filter(t=>!!t),w=!0===o.embedded,x=w?function(t,e,i){return[Ui(t.card_mod),Di(e,i)].filter(t=>!!t).join("; ")}(o,h,a.attributes):Di(h,a.attributes),$=this.showEntities?yi({_hide:t,unit:d,hass:this._hass,entity:this.entity,entities:this.entities,config:this.config,adapter:n,localize:this.localize,openEntityPopover:this.openEntityPopover}):"",S=w?B``:Je({header:this.header,hass:this._hass,toggleEntityChanged:this.toggleEntityChanged,entity:this.entity,openEntityPopover:this.openEntityPopover});return B` + ${o.styles?B``:q} ${r} - ${x} -
- ${w} - ${this.renderSetpoints({values:e,minValue:c,maxValue:l,unit:d,row:g,stepLayout:p,isOff:a.state===Me.OFF,disableSteppers:"climate"===h&&a.state===Me.OFF&&!0===this.config.disable_setpoint_change_when_off})} + ${S} +
+ ${$} + ${this.renderSetpoints({values:e,minValue:c,maxValue:l,unit:d,row:f,stepLayout:g,isOff:a.state===Fe.OFF,disableSteppers:"climate"===h&&a.state===Fe.OFF&&!0===this.config.disable_setpoint_change_when_off})}
${this.modes.length?B`
- ${this.modes.map(t=>pi({state:a.state,entity:a,hass:this._hass,mode:t,adapter:n,localize:this.localize,modeOptions:this.config?.layout?.mode??{},setMode:this.setMode}))} + ${this.modes.map(t=>$i({state:a.state,entity:a,hass:this._hass,mode:t,adapter:n,localize:this.localize,modeOptions:this.config?.layout?.mode??{},setMode:this.setMode}))}
`:q} + ${Ai({toggles:this.footer,mainState:a.state,toggleFooterEntity:this.toggleFooterEntity,openEntityPopover:this.openEntityPopover})} `}renderSetpoints({values:t,minValue:e,maxValue:i,unit:o,row:a,stepLayout:r,isOff:n,disableSteppers:s}){return!0===this.config.hide_setpoint||!0===this.config.hide_setpoint_when_off&&n||!0===this.config.hide?.setpoint_when_off&&n?q:Object.entries(t).map(([t,c])=>this.renderSetpointControl({field:t,value:c,minValue:e,maxValue:i,unit:o,row:a,stepLayout:r,isOff:n,disableSteppers:s}))}renderSetpointControl(t){const{row:e,stepLayout:i}=t,o=this.renderSetpointStepper(t,"decrease"),a=this.renderSetpointValue(t),r=this.renderSetpointStepper(t,"increase"),n=this.renderSetpointLabel(t);return B`
@@ -2734,9 +3170,9 @@ ha-card.standard-visuals .thermostat-trigger:active { aria-label=${`${l?"Decrease":"Increase"} ${t}`} @click="${()=>l?this.setTemperature(-this.stepSize,t):null===e&&null!==i?this.setTemperature(0,t,i):this.setTemperature(this.stepSize,t)}" > - + - `}renderSetpointValue({field:t,value:e,unit:i,isOff:o}){const a=["string","number"].includes(typeof e)&&""!==e&&null!==e,r=!1!==i&&a,n=o&&!a,s=n?"OFF":Ve(e,{...this.config,locale:this._hass.locale}),c=r&&"string"==typeof i?i:"",l="%"===c?"":" ",d=c&&s.endsWith(c)?s.slice(0,-c.length).trimEnd():s,h=c?`${d}${l}${c}`:s;return B` + `}renderSetpointValue({field:t,value:e,unit:i,isOff:o}){const a=["string","number"].includes(typeof e)&&""!==e&&null!==e,r=!1!==i&&a,n=o&&!a,s=n?"OFF":Ue(e,{...this.config,locale:this._hass.locale}),c=r&&"string"==typeof i?i:"",l="%"===c?"":" ",d=c&&s.endsWith(c)?s.slice(0,-c.length).trimEnd():s,h=c?`${d}${l}${c}`:s;return B`

${d}${c?B`${l}${c}`:q}

- `}setTemperature(t,e,i){this._updatingValues=!0,this._updatingValuesTimeout&&clearTimeout(this._updatingValuesTimeout),this._updatingValuesTimeout=setTimeout(()=>{this._updatingValues=!1,this._updatingValuesTimeout=null},1e4);const o=i??this._values[e],a=Number(o)+t,{decimals:r}=this.config;this._values={...this._values,[e]:+Ve(a,{decimals:r})},this._scheduleSetpointValues(this._values)}_dispatchSetpointTap(){this.config?.tap_action?this._dispatchAction("tap"):this.openEntityPopover(this.config.entity)}_dispatchAction(t){const e="tap"===t?"tap_action":"hold"===t?"hold_action":"double_tap_action",i=this.config?.[e]??("tap"===t?{action:"more-info"}:{action:"none"});vt(this,"hass-action",{config:this.config,action:i})}getCardSize(){if(!this.config)return 1;const t=!0===this.config.embedded||this.header?1:0,e=this.showEntities&&this.entities?.length?Math.max(1,Math.ceil(this.entities.length/2)):0,i=!0===this.config.hide_setpoint||!0===this.config.hide_setpoint_when_off&&this.entity?.state===Me.OFF||!0===this.config.hide?.setpoint_when_off&&this.entity?.state===Me.OFF?0:1,o=this.modes?.filter(t=>(!0!==t.hide_when_off||this.entity?.state!==Me.OFF)&&(t.list??[]).some(({hide_when_off:t})=>!(!0===t&&this.entity?.state===Me.OFF))).length??0,a=this.stepSize<1&&0===this.config.decimals?1:0;return Math.max(1,t+e+i+o+a)}getUnit(){if(["boolean","string"].includes(typeof this.config.unit))return this.config?.unit;const t=this.config.entity.split(".")[0];return"fan"===t||"humidifier"===t?"%":this._hass.config?.unit_system?.temperature??!1}}Ri.HOLD_MS=500,Ri.DOUBLE_TAP_MS=250,i([pt()],Ri.prototype,"config",void 0),i([pt()],Ri.prototype,"header",void 0),i([pt()],Ri.prototype,"service",void 0),i([pt()],Ri.prototype,"modes",void 0),i([pt()],Ri.prototype,"entity",void 0),i([pt()],Ri.prototype,"entities",void 0),i([pt()],Ri.prototype,"showEntities",void 0),i([pt()],Ri.prototype,"name",void 0),i([pt({type:Object})],Ri.prototype,"_values",void 0),i([pt()],Ri.prototype,"_updatingValues",void 0),i([pt()],Ri.prototype,"_hide",void 0),customElements.get(t)||customElements.define(t,Ri),customElements.get(`${t}-editor`)||customElements.define(`${t}-editor`,Kt),customElements.get(`${t}-group`)||customElements.define(`${t}-group`,Ne),customElements.get(`${t}-group-editor`)||customElements.define(`${t}-group-editor`,de),console.info(`%c SIMPLE-THERMOSTAT %c v${e} `,"color: var(--text-primary-color); background: var(--primary-color); font-weight: 700; padding: 2px 6px; border-radius: 3px 0 0 3px;","color: var(--primary-color); background: var(--card-background-color); font-weight: 700; padding: 2px 6px; border-radius: 0 3px 3px 0;");const ji=window;ji.customCards=ji.customCards||[],ji.customCards.find(e=>e.type===t)||ji.customCards.push({type:t,name:"Simple Thermostat",preview:!0,description:"A different take on the thermostat card",documentationURL:"https://github.com/Wheemer/simple-thermostat"}),ji.customCards.find(e=>e.type===`${t}-group`)||ji.customCards.push({type:`${t}-group`,name:"Simple Thermostat Group",preview:!0,description:"Switch between multiple thermostat cards in one footprint",documentationURL:"https://github.com/Wheemer/simple-thermostat"}); + `}setTemperature(t,e,i){this._updatingValues=!0,this._updatingValuesTimeout&&clearTimeout(this._updatingValuesTimeout),this._updatingValuesTimeout=setTimeout(()=>{this._updatingValues=!1,this._updatingValuesTimeout=null},1e4);const o=i??this._values[e],a=Number(o)+t,{decimals:r}=this.config;this._values={...this._values,[e]:+Ue(a,{decimals:r})},this._scheduleSetpointValues(this._values)}_dispatchSetpointTap(){this.config?.tap_action?this._dispatchAction("tap"):this.openEntityPopover(this.config.entity)}_dispatchAction(t){const e="tap"===t?"tap_action":"hold"===t?"hold_action":"double_tap_action",i=this.config?.[e]??("tap"===t?{action:"more-info"}:{action:"none"});vt(this,"hass-action",{config:this.config,action:i})}getCardSize(){if(!this.config)return 1;const t=!0===this.config.embedded||this.header?1:0,e=this.showEntities&&this.entities?.length?Math.max(1,Math.ceil(this.entities.length/2)):0,i=!0===this.config.hide_setpoint||!0===this.config.hide_setpoint_when_off&&this.entity?.state===Fe.OFF||!0===this.config.hide?.setpoint_when_off&&this.entity?.state===Fe.OFF?0:1,o=this.modes?.filter(t=>(!0!==t.hide_when_off||this.entity?.state!==Fe.OFF)&&(t.list??[]).some(({hide_when_off:t})=>!(!0===t&&this.entity?.state===Fe.OFF))).length??0,a=this.footer?.some(({hide_when_off:t})=>!(!0===t&&this.entity?.state===Fe.OFF))?1:0,r=this.stepSize<1&&0===this.config.decimals?1:0;return Math.max(1,t+e+i+o+a+r)}getUnit(){if(["boolean","string"].includes(typeof this.config.unit))return this.config?.unit;const t=this.config.entity.split(".")[0];return"fan"===t||"humidifier"===t?"%":this._hass.config?.unit_system?.temperature??!1}}Gi.HOLD_MS=500,Gi.DOUBLE_TAP_MS=250,i([pt()],Gi.prototype,"config",void 0),i([pt()],Gi.prototype,"header",void 0),i([pt()],Gi.prototype,"service",void 0),i([pt()],Gi.prototype,"modes",void 0),i([pt()],Gi.prototype,"entity",void 0),i([pt()],Gi.prototype,"entities",void 0),i([pt()],Gi.prototype,"footer",void 0),i([pt()],Gi.prototype,"showEntities",void 0),i([pt()],Gi.prototype,"name",void 0),i([pt({type:Object})],Gi.prototype,"_values",void 0),i([pt()],Gi.prototype,"_updatingValues",void 0),i([pt()],Gi.prototype,"_hide",void 0),customElements.get(t)||customElements.define(t,Gi),customElements.get(`${t}-editor`)||customElements.define(`${t}-editor`,Xt),customElements.get(`${t}-group`)||customElements.define(`${t}-group`,Pe),customElements.get(`${t}-group-editor`)||customElements.define(`${t}-group-editor`,me),console.info(`%c SIMPLE-THERMOSTAT %c v${e} `,"color: var(--text-primary-color); background: var(--primary-color); font-weight: 700; padding: 2px 6px; border-radius: 3px 0 0 3px;","color: var(--primary-color); background: var(--card-background-color); font-weight: 700; padding: 2px 6px; border-radius: 0 3px 3px 0;");const qi=window;qi.customCards=qi.customCards||[],qi.customCards.find(e=>e.type===t)||qi.customCards.push({type:t,name:"Simple Thermostat",preview:!0,description:"A different take on the thermostat card",documentationURL:"https://github.com/Wheemer/simple-thermostat"}),qi.customCards.find(e=>e.type===`${t}-group`)||qi.customCards.push({type:`${t}-group`,name:"Simple Thermostat Group",preview:!0,description:"Switch between multiple thermostat cards in one footprint",documentationURL:"https://github.com/Wheemer/simple-thermostat"}); diff --git a/www/community/simple-thermostat/simple-thermostat.js.gz b/www/community/simple-thermostat/simple-thermostat.js.gz index f8c32d7fb1ea0aa0bb5cfa7bb831f95948acecca..160f220dfcbb2daecd6590e74b5f8e31f51b0be2 100644 GIT binary patch literal 50219 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 Vgb{51^hor-`@fCjq{WKL0s!h`y&nJo diff --git a/zigbee2mqtt/state.json b/zigbee2mqtt/state.json index 862c5a69..49a89b69 100644 --- a/zigbee2mqtt/state.json +++ b/zigbee2mqtt/state.json @@ -4,7 +4,7 @@ "state": "ON", "led_brightness": 100, "countdown_to_turn_off": 0, - "voltage": 122, + "voltage": 121, "countdown_to_turn_on": 0, "ac_frequency": 60, "power_factor": 0.14, @@ -22,15 +22,15 @@ }, "0xffffb40e0607af27": { "state": "ON", - "voltage": 121.6, + "voltage": 121, "ac_frequency": 60, "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "power": 2, - "current": 0.09, + "power": 2.1, + "current": 0.1, "energy": 32.46, - "power_factor": 0.17, + "power_factor": 0.18, "update": { "state": "idle", "installed_version": 268513381, @@ -45,9 +45,9 @@ "state": "ON", "led_brightness": 100, "countdown_to_turn_off": 0, - "voltage": 121.5, + "voltage": 120.5, "countdown_to_turn_on": 0, - "energy": 64.55, + "energy": 64.57, "power_factor": 0.2, "ac_frequency": 60, "update": { @@ -58,7 +58,7 @@ "latest_release_notes": null }, "linkquality": 138, - "power": 0.2, + "power": 0.3, "current": 0.01, "power_on_behavior": "on" }, @@ -74,13 +74,13 @@ "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "voltage": 120.7, + "voltage": 120.8, "state": "ON", "ac_frequency": 60, - "energy": 130.73, - "power": 98.2, - "current": 0.86, - "power_factor": 0.94, + "energy": 130.77, + "power": 0.7, + "current": 0.05, + "power_factor": 0.41, "update": { "state": "idle", "installed_version": 268513381, @@ -95,13 +95,13 @@ "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "voltage": 121.9, - "energy": 61.83, + "voltage": 121, + "energy": 61.86, "state": "ON", - "power": 41.6, - "current": 0.45, + "power": 43.8, + "current": 0.49, "ac_frequency": 60, - "power_factor": 0.75, + "power_factor": 0.74, "update": { "state": "idle", "installed_version": 268513381, @@ -114,7 +114,7 @@ }, "0xffffb40e060895b3": { "state": "ON", - "voltage": 121, + "voltage": 120.8, "ac_frequency": 60, "energy": 8.78, "current": 0.01, @@ -136,14 +136,14 @@ "0xffffb40e0608864e": { "led_brightness": 100, "countdown_to_turn_off": 0, - "voltage": 122, + "voltage": 121.9, "energy": 20.08, "countdown_to_turn_on": 0, "state": "ON", "current": 0.02, "ac_frequency": 60, "power": 0.3, - "power_factor": 0.14, + "power_factor": 0.18, "update": { "state": "idle", "installed_version": 268513381, @@ -172,7 +172,7 @@ "0xffffb40e060893d8": { "state": "ON", "led_brightness": 100, - "voltage": 121.9, + "voltage": 120.8, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, "energy": 3.49, @@ -192,7 +192,7 @@ }, "0xa4c1380d0679ffff": { "battery": 100, - "temperature": 27.1, + "temperature": 26.9, "temperature_units": "celsius", "temperature_calibration": 0, "update": {