function e(e,t,i,a){var n,o=arguments.length,r=o<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(e,t,i,a);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(r=(o<3?n(r):o>3?n(t,i,r):n(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r}"function"==typeof SuppressedError&&SuppressedError;
/**
 * @license
 * Copyright 2019 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */
const t=window,i=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,a=Symbol(),n=new WeakMap;class o{constructor(e,t,i){if(this._$cssResult$=!0,i!==a)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if(i&&void 0===e){const i=void 0!==t&&1===t.length;i&&(e=n.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),i&&n.set(t,e))}return e}toString(){return this.cssText}}const r=(e,...t)=>{const i=1===e.length?e[0]:t.reduce(((t,i,a)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+e[a+1]),e[0]);return new o(i,e,a)},s=i?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const i of e.cssRules)t+=i.cssText;return(e=>new o("string"==typeof e?e:e+"",void 0,a))(t)})(e):e
/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */;var l;const c=window,d=c.trustedTypes,u=d?d.emptyScript:"",m=c.reactiveElementPolyfillSupport,p={toAttribute(e,t){switch(t){case Boolean:e=e?u:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let i=e;switch(t){case Boolean:i=null!==e;break;case Number:i=null===e?null:Number(e);break;case Object:case Array:try{i=JSON.parse(e)}catch(e){i=null}}return i}},_=(e,t)=>t!==e&&(t==t||e==e),v={attribute:!0,type:String,converter:p,reflect:!1,hasChanged:_},g="finalized";class h extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this._$Eu()}static addInitializer(e){var t;this.finalize(),(null!==(t=this.h)&&void 0!==t?t:this.h=[]).push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach(((t,i)=>{const a=this._$Ep(i,t);void 0!==a&&(this._$Ev.set(a,i),e.push(a))})),e}static createProperty(e,t=v){if(t.state&&(t.attribute=!1),this.finalize(),this.elementProperties.set(e,t),!t.noAccessor&&!this.prototype.hasOwnProperty(e)){const i="symbol"==typeof e?Symbol():"__"+e,a=this.getPropertyDescriptor(e,i,t);void 0!==a&&Object.defineProperty(this.prototype,e,a)}}static getPropertyDescriptor(e,t,i){return{get(){return this[t]},set(a){const n=this[e];this[t]=a,this.requestUpdate(e,n,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)||v}static finalize(){if(this.hasOwnProperty(g))return!1;this[g]=!0;const e=Object.getPrototypeOf(this);if(e.finalize(),void 0!==e.h&&(this.h=[...e.h]),this.elementProperties=new Map(e.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const e=this.properties,t=[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)];for(const i of t)this.createProperty(i,e[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const i=new Set(e.flat(1/0).reverse());for(const e of i)t.unshift(s(e))}else void 0!==e&&t.push(s(e));return t}static _$Ep(e,t){const i=t.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof e?e.toLowerCase():void 0}_$Eu(){var e;this._$E_=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(e=this.constructor.h)||void 0===e||e.forEach((e=>e(this)))}addController(e){var t,i;(null!==(t=this._$ES)&&void 0!==t?t:this._$ES=[]).push(e),void 0!==this.renderRoot&&this.isConnected&&(null===(i=e.hostConnected)||void 0===i||i.call(e))}removeController(e){var t;null===(t=this._$ES)||void 0===t||t.splice(this._$ES.indexOf(e)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((e,t)=>{this.hasOwnProperty(t)&&(this._$Ei.set(t,this[t]),delete this[t])}))}createRenderRoot(){var e;const a=null!==(e=this.shadowRoot)&&void 0!==e?e:this.attachShadow(this.constructor.shadowRootOptions);return((e,a)=>{i?e.adoptedStyleSheets=a.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet)):a.forEach((i=>{const a=document.createElement("style"),n=t.litNonce;void 0!==n&&a.setAttribute("nonce",n),a.textContent=i.cssText,e.appendChild(a)}))})(a,this.constructor.elementStyles),a}connectedCallback(){var e;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostConnected)||void 0===t?void 0:t.call(e)}))}enableUpdating(e){}disconnectedCallback(){var e;null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostDisconnected)||void 0===t?void 0:t.call(e)}))}attributeChangedCallback(e,t,i){this._$AK(e,i)}_$EO(e,t,i=v){var a;const n=this.constructor._$Ep(e,i);if(void 0!==n&&!0===i.reflect){const o=(void 0!==(null===(a=i.converter)||void 0===a?void 0:a.toAttribute)?i.converter:p).toAttribute(t,i.type);this._$El=e,null==o?this.removeAttribute(n):this.setAttribute(n,o),this._$El=null}}_$AK(e,t){var i;const a=this.constructor,n=a._$Ev.get(e);if(void 0!==n&&this._$El!==n){const e=a.getPropertyOptions(n),o="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==(null===(i=e.converter)||void 0===i?void 0:i.fromAttribute)?e.converter:p;this._$El=n,this[n]=o.fromAttribute(t,e.type),this._$El=null}}requestUpdate(e,t,i){let a=!0;void 0!==e&&(((i=i||this.constructor.getPropertyOptions(e)).hasChanged||_)(this[e],t)?(this._$AL.has(e)||this._$AL.set(e,t),!0===i.reflect&&this._$El!==e&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(e,i))):a=!1),!this.isUpdatePending&&a&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((e,t)=>this[t]=e)),this._$Ei=void 0);let t=!1;const i=this._$AL;try{t=this.shouldUpdate(i),t?(this.willUpdate(i),null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostUpdate)||void 0===t?void 0:t.call(e)})),this.update(i)):this._$Ek()}catch(e){throw t=!1,this._$Ek(),e}t&&this._$AE(i)}willUpdate(e){}_$AE(e){var t;null===(t=this._$ES)||void 0===t||t.forEach((e=>{var t;return null===(t=e.hostUpdated)||void 0===t?void 0:t.call(e)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(e){return!0}update(e){void 0!==this._$EC&&(this._$EC.forEach(((e,t)=>this._$EO(t,this[t],e))),this._$EC=void 0),this._$Ek()}updated(e){}firstUpdated(e){}}
/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */
var f;h[g]=!0,h.elementProperties=new Map,h.elementStyles=[],h.shadowRootOptions={mode:"open"},null==m||m({ReactiveElement:h}),(null!==(l=c.reactiveElementVersions)&&void 0!==l?l:c.reactiveElementVersions=[]).push("1.6.3");const b=window,y=b.trustedTypes,k=y?y.createPolicy("lit-html",{createHTML:e=>e}):void 0,A="$lit$",x=`lit$${(Math.random()+"").slice(9)}$`,E="?"+x,w=`<${E}>`,z=document,P=()=>z.createComment(""),T=e=>null===e||"object"!=typeof e&&"function"!=typeof e,S=Array.isArray,M="[ \t\n\f\r]",N=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,O=/-->/g,C=/>/g,R=RegExp(`>|${M}(?:([^\\s"'>=/]+)(${M}*=${M}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),L=/'/g,$=/"/g,j=/^(?:script|style|textarea|title)$/i,I=e=>(t,...i)=>({_$litType$:e,strings:t,values:i}),D=I(1),F=I(2),V=Symbol.for("lit-noChange"),U=Symbol.for("lit-nothing"),q=new WeakMap,K=z.createTreeWalker(z,129,null,!1);function H(e,t){if(!Array.isArray(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==k?k.createHTML(t):t}const G=(e,t)=>{const i=e.length-1,a=[];let n,o=2===t?"<svg>":"",r=N;for(let t=0;t<i;t++){const i=e[t];let s,l,c=-1,d=0;for(;d<i.length&&(r.lastIndex=d,l=r.exec(i),null!==l);)d=r.lastIndex,r===N?"!--"===l[1]?r=O:void 0!==l[1]?r=C:void 0!==l[2]?(j.test(l[2])&&(n=RegExp("</"+l[2],"g")),r=R):void 0!==l[3]&&(r=R):r===R?">"===l[0]?(r=null!=n?n:N,c=-1):void 0===l[1]?c=-2:(c=r.lastIndex-l[2].length,s=l[1],r=void 0===l[3]?R:'"'===l[3]?$:L):r===$||r===L?r=R:r===O||r===C?r=N:(r=R,n=void 0);const u=r===R&&e[t+1].startsWith("/>")?" ":"";o+=r===N?i+w:c>=0?(a.push(s),i.slice(0,c)+A+i.slice(c)+x+u):i+x+(-2===c?(a.push(void 0),t):u)}return[H(e,o+(e[i]||"<?>")+(2===t?"</svg>":"")),a]};class B{constructor({strings:e,_$litType$:t},i){let a;this.parts=[];let n=0,o=0;const r=e.length-1,s=this.parts,[l,c]=G(e,t);if(this.el=B.createElement(l,i),K.currentNode=this.el.content,2===t){const e=this.el.content,t=e.firstChild;t.remove(),e.append(...t.childNodes)}for(;null!==(a=K.nextNode())&&s.length<r;){if(1===a.nodeType){if(a.hasAttributes()){const e=[];for(const t of a.getAttributeNames())if(t.endsWith(A)||t.startsWith(x)){const i=c[o++];if(e.push(t),void 0!==i){const e=a.getAttribute(i.toLowerCase()+A).split(x),t=/([.?@])?(.*)/.exec(i);s.push({type:1,index:n,name:t[2],strings:e,ctor:"."===t[1]?W:"?"===t[1]?ee:"@"===t[1]?te:J})}else s.push({type:6,index:n})}for(const t of e)a.removeAttribute(t)}if(j.test(a.tagName)){const e=a.textContent.split(x),t=e.length-1;if(t>0){a.textContent=y?y.emptyScript:"";for(let i=0;i<t;i++)a.append(e[i],P()),K.nextNode(),s.push({type:2,index:++n});a.append(e[t],P())}}}else if(8===a.nodeType)if(a.data===E)s.push({type:2,index:n});else{let e=-1;for(;-1!==(e=a.data.indexOf(x,e+1));)s.push({type:7,index:n}),e+=x.length-1}n++}}static createElement(e,t){const i=z.createElement("template");return i.innerHTML=e,i}}function X(e,t,i=e,a){var n,o,r,s;if(t===V)return t;let l=void 0!==a?null===(n=i._$Co)||void 0===n?void 0:n[a]:i._$Cl;const c=T(t)?void 0:t._$litDirective$;return(null==l?void 0:l.constructor)!==c&&(null===(o=null==l?void 0:l._$AO)||void 0===o||o.call(l,!1),void 0===c?l=void 0:(l=new c(e),l._$AT(e,i,a)),void 0!==a?(null!==(r=(s=i)._$Co)&&void 0!==r?r:s._$Co=[])[a]=l:i._$Cl=l),void 0!==l&&(t=X(e,l._$AS(e,t.values),l,a)),t}class Z{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){var t;const{el:{content:i},parts:a}=this._$AD,n=(null!==(t=null==e?void 0:e.creationScope)&&void 0!==t?t:z).importNode(i,!0);K.currentNode=n;let o=K.nextNode(),r=0,s=0,l=a[0];for(;void 0!==l;){if(r===l.index){let t;2===l.type?t=new Y(o,o.nextSibling,this,e):1===l.type?t=new l.ctor(o,l.name,l.strings,this,e):6===l.type&&(t=new ie(o,this,e)),this._$AV.push(t),l=a[++s]}r!==(null==l?void 0:l.index)&&(o=K.nextNode(),r++)}return K.currentNode=z,n}v(e){let t=0;for(const i of this._$AV)void 0!==i&&(void 0!==i.strings?(i._$AI(e,i,t),t+=i.strings.length-2):i._$AI(e[t])),t++}}class Y{constructor(e,t,i,a){var n;this.type=2,this._$AH=U,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=i,this.options=a,this._$Cp=null===(n=null==a?void 0:a.isConnected)||void 0===n||n}get _$AU(){var e,t;return null!==(t=null===(e=this._$AM)||void 0===e?void 0:e._$AU)&&void 0!==t?t:this._$Cp}get parentNode(){let e=this._$AA.parentNode;const t=this._$AM;return void 0!==t&&11===(null==e?void 0:e.nodeType)&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=X(this,e,t),T(e)?e===U||null==e||""===e?(this._$AH!==U&&this._$AR(),this._$AH=U):e!==this._$AH&&e!==V&&this._(e):void 0!==e._$litType$?this.g(e):void 0!==e.nodeType?this.$(e):(e=>S(e)||"function"==typeof(null==e?void 0:e[Symbol.iterator]))(e)?this.T(e):this._(e)}k(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}$(e){this._$AH!==e&&(this._$AR(),this._$AH=this.k(e))}_(e){this._$AH!==U&&T(this._$AH)?this._$AA.nextSibling.data=e:this.$(z.createTextNode(e)),this._$AH=e}g(e){var t;const{values:i,_$litType$:a}=e,n="number"==typeof a?this._$AC(e):(void 0===a.el&&(a.el=B.createElement(H(a.h,a.h[0]),this.options)),a);if((null===(t=this._$AH)||void 0===t?void 0:t._$AD)===n)this._$AH.v(i);else{const e=new Z(n,this),t=e.u(this.options);e.v(i),this.$(t),this._$AH=e}}_$AC(e){let t=q.get(e.strings);return void 0===t&&q.set(e.strings,t=new B(e)),t}T(e){S(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let i,a=0;for(const n of e)a===t.length?t.push(i=new Y(this.k(P()),this.k(P()),this,this.options)):i=t[a],i._$AI(n),a++;a<t.length&&(this._$AR(i&&i._$AB.nextSibling,a),t.length=a)}_$AR(e=this._$AA.nextSibling,t){var i;for(null===(i=this._$AP)||void 0===i||i.call(this,!1,!0,t);e&&e!==this._$AB;){const t=e.nextSibling;e.remove(),e=t}}setConnected(e){var t;void 0===this._$AM&&(this._$Cp=e,null===(t=this._$AP)||void 0===t||t.call(this,e))}}class J{constructor(e,t,i,a,n){this.type=1,this._$AH=U,this._$AN=void 0,this.element=e,this.name=t,this._$AM=a,this.options=n,i.length>2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=U}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,t=this,i,a){const n=this.strings;let o=!1;if(void 0===n)e=X(this,e,t,0),o=!T(e)||e!==this._$AH&&e!==V,o&&(this._$AH=e);else{const a=e;let r,s;for(e=n[0],r=0;r<n.length-1;r++)s=X(this,a[i+r],t,r),s===V&&(s=this._$AH[r]),o||(o=!T(s)||s!==this._$AH[r]),s===U?e=U:e!==U&&(e+=(null!=s?s:"")+n[r+1]),this._$AH[r]=s}o&&!a&&this.j(e)}j(e){e===U?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=e?e:"")}}class W extends J{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===U?void 0:e}}const Q=y?y.emptyScript:"";class ee extends J{constructor(){super(...arguments),this.type=4}j(e){e&&e!==U?this.element.setAttribute(this.name,Q):this.element.removeAttribute(this.name)}}class te extends J{constructor(e,t,i,a,n){super(e,t,i,a,n),this.type=5}_$AI(e,t=this){var i;if((e=null!==(i=X(this,e,t,0))&&void 0!==i?i:U)===V)return;const a=this._$AH,n=e===U&&a!==U||e.capture!==a.capture||e.once!==a.once||e.passive!==a.passive,o=e!==U&&(a===U||n);n&&this.element.removeEventListener(this.name,this,a),o&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var t,i;"function"==typeof this._$AH?this._$AH.call(null!==(i=null===(t=this.options)||void 0===t?void 0:t.host)&&void 0!==i?i:this.element,e):this._$AH.handleEvent(e)}}class ie{constructor(e,t,i){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(e){X(this,e)}}const ae=b.litHtmlPolyfillSupport;null==ae||ae(B,Y),(null!==(f=b.litHtmlVersions)&&void 0!==f?f:b.litHtmlVersions=[]).push("2.8.0");
/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */
var ne,oe;class re extends h{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var e,t;const i=super.createRenderRoot();return null!==(e=(t=this.renderOptions).renderBefore)&&void 0!==e||(t.renderBefore=i.firstChild),i}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=((e,t,i)=>{var a,n;const o=null!==(a=null==i?void 0:i.renderBefore)&&void 0!==a?a:t;let r=o._$litPart$;if(void 0===r){const e=null!==(n=null==i?void 0:i.renderBefore)&&void 0!==n?n:null;o._$litPart$=r=new Y(t.insertBefore(P(),e),e,void 0,null!=i?i:{})}return r._$AI(e),r})(t,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),null===(e=this._$Do)||void 0===e||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),null===(e=this._$Do)||void 0===e||e.setConnected(!1)}render(){return V}}re.finalized=!0,re._$litElement$=!0,null===(ne=globalThis.litElementHydrateSupport)||void 0===ne||ne.call(globalThis,{LitElement:re});const se=globalThis.litElementPolyfillSupport;null==se||se({LitElement:re}),(null!==(oe=globalThis.litElementVersions)&&void 0!==oe?oe:globalThis.litElementVersions=[]).push("3.3.3");
/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */
const le=e=>t=>"function"==typeof t?((e,t)=>(customElements.define(e,t),t))(e,t):((e,t)=>{const{kind:i,elements:a}=t;return{kind:i,elements:a,finisher(t){customElements.define(e,t)}}})(e,t)
/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */,ce=(e,t)=>"method"===t.kind&&t.descriptor&&!("value"in t.descriptor)?{...t,finisher(i){i.createProperty(t.key,e)}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:t.key,initializer(){"function"==typeof t.initializer&&(this[t.key]=t.initializer.call(this))},finisher(i){i.createProperty(t.key,e)}},de=(e,t,i)=>{t.constructor.createProperty(i,e)};function ue(e){return(t,i)=>void 0!==i?de(e,t,i):ce(e,t)
/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */}function me(e){return ue({...e,state:!0})}
/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */const pe=({finisher:e,descriptor:t})=>(i,a)=>{var n;if(void 0===a){const a=null!==(n=i.originalKey)&&void 0!==n?n:i.key,o=null!=t?{kind:"method",placement:"prototype",key:a,descriptor:t(i.key)}:{...i,key:a};return null!=e&&(o.finisher=function(t){e(t,a)}),o}{const n=i.constructor;void 0!==t&&Object.defineProperty(i,a,t(a)),null==e||e(n,a)}}
/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */;function _e(e,t){return pe({descriptor:i=>{const a={get(){var t,i;return null!==(i=null===(t=this.renderRoot)||void 0===t?void 0:t.querySelector(e))&&void 0!==i?i:null},enumerable:!0,configurable:!0};if(t){const t="symbol"==typeof i?Symbol():"__"+i;a.get=function(){var i,a;return void 0===this[t]&&(this[t]=null!==(a=null===(i=this.renderRoot)||void 0===i?void 0:i.querySelector(e))&&void 0!==a?a:null),this[t]}}return a}})}
/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */
/**
 * @license
 * Copyright 2021 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */
var ve,ge,he;function fe(e){return e.substr(0,e.indexOf("."))}null===(ve=window.HTMLSlotElement)||void 0===ve||ve.prototype.assignedElements,function(e){e.language="language",e.system="system",e.comma_decimal="comma_decimal",e.decimal_comma="decimal_comma",e.space_comma="space_comma",e.none="none"}(ge||(ge={})),function(e){e.language="language",e.system="system",e.am_pm="12",e.twenty_four="24"}(he||(he={}));var be=["closed","locked","off"],ye=function(e,t,i,a){a=a||{},i=null==i?{}:i;var n=new Event(t,{bubbles:void 0===a.bubbles||a.bubbles,cancelable:Boolean(a.cancelable),composed:void 0===a.composed||a.composed});return n.detail=i,e.dispatchEvent(n),n},ke=function(e){ye(window,"haptic",e)},Ae=function(e,t){return function(e,t,i){void 0===i&&(i=!0);var a,n=fe(t),o="group"===n?"homeassistant":n;switch(n){case"lock":a=i?"unlock":"lock";break;case"cover":a=i?"open_cover":"close_cover";break;default:a=i?"turn_on":"turn_off"}return e.callService(o,a,{entity_id:t})}(e,t,be.includes(e.states[t].state))},xe=function(e,t,i,a){if(a||(a={action:"more-info"}),!a.confirmation||a.confirmation.exemptions&&a.confirmation.exemptions.some((function(e){return e.user===t.user.id}))||(ke("warning"),confirm(a.confirmation.text||"Are you sure you want to "+a.action+"?")))switch(a.action){case"more-info":(i.entity||i.camera_image)&&ye(e,"hass-more-info",{entityId:i.entity?i.entity:i.camera_image});break;case"navigate":a.navigation_path&&function(e,t,i){void 0===i&&(i=!1),i?history.replaceState(null,"",t):history.pushState(null,"",t),ye(window,"location-changed",{replace:i})}(0,a.navigation_path);break;case"url":a.url_path&&window.open(a.url_path);break;case"toggle":i.entity&&(Ae(t,i.entity),ke("success"));break;case"call-service":if(!a.service)return void ke("failure");var n=a.service.split(".",2);t.callService(n[0],n[1],a.service_data,a.target),ke("success");break;case"fire-dom-event":ye(e,"ll-custom",a)}},Ee=function(e,t,i,a){var n;"double_tap"===a&&i.double_tap_action?n=i.double_tap_action:"hold"===a&&i.hold_action?n=i.hold_action:"tap"===a&&i.tap_action&&(n=i.tap_action),xe(e,t,i,n)};function we(e){return void 0!==e&&"none"!==e.action}var ze={version:"Версия",invalid_configuration:"Невалидна конфигурация {0}",description:"Контролирайте робота си от карта",old_configuration:"Намерена е стара конфигурация. Променете конфигурацията с последните промени или започнете с нова карта.",old_configuration_migration_link:"Инструкции за миграция"},Pe={invalid:"Невалиден шаблон!",vacuum_goto:"Точка & старт",vacuum_goto_predefined:"Точки",vacuum_clean_segment:"Стаи",vacuum_clean_point:"Почистване на точка",vacuum_clean_point_predefined:"Точки",vacuum_clean_zone:"Почистване на зона",vacuum_clean_zone_predefined:"Списък зони",vacuum_follow_path:"Път"},Te={preset:{entity:{missing:"Липсващо свойство: entity"},preset_name:{missing:"Липсващо свойство: preset_name"},platform:{invalid:"Невалидна платформа (vacuum platform): {0}"},map_source:{missing:"Липсващо свойство: map_source",none_provided:"Не е предоставена камера или снимка",ambiguous:"Позволен е само един източник на карта"},calibration_source:{missing:"Липсващо свойство: calibration_source",ambiguous:"Позволен е само един източник на калибриране",none_provided:"Не е намерен източник на калибриране",calibration_points:{invalid_number:"Необходими са точно 3 или 4 източника на калибриране",missing_map:"Всяка точка за калибриране трябва да притежава координати от картата",missing_vacuum:"Всяка точка за калибриране трябва да притежава координати от робота",missing_coordinate:"Точките за калибриране на карта и робот трябва да имат x и y координата"}},icons:{invalid:"Грешка в конфигурацията: icons",icon:{missing:"Всеки запис от лист icons трябва да има свойство icon"}},tiles:{invalid:"Грешка в конфигурацията: tiles",entity:{missing:"Всеки запис от лист tiles трябва да има свойство entity или internal variable"},label:{missing:"Всеки запис от лист tiles трябва да има свойство label"}},map_modes:{invalid:"Грешка в конфигурацията: map_modes",icon:{missing:"Липсва икона за map mode"},name:{missing:"Липсва name за map mode"},template:{invalid:"Невалиден шаблон: {0}"},predefined_selections:{not_applicable:"Режим {0} не подържа предварително зададени селекции",zones:{missing:"Липсва конфигурация за зони",invalid_parameters_number:"Всяка зона трябва да има 4 параметъра"},points:{position:{missing:"Липсва конфигурация за точки",invalid_parameters_number:"Всяка точка трябва да има 2 параметъра"}},rooms:{id:{missing:"Липсва id на стая",invalid_format:"Невалидно room id: {0}"},outline:{invalid_parameters_number:"Всяка точка от контура на стаята трябва да има 2 параметъра"}},label:{x:{missing:"Label трябва да има свойство x"},y:{missing:"Label трябва да има свойство y"},text:{missing:"Label трябва да има свойство text"}},icon:{x:{missing:"Icon трябва да има свойство x"},y:{missing:"Icon трябва да има свойство y"},name:{missing:"Icon трябва да има свойство name"}}},service_call_schema:{missing:"Липсва схема за service call",service:{missing:"Service call трябва да съдържа service",invalid:"Невалиден service: {0}"}}}},invalid_entities:"Невалидни обекти:",invalid_calibration:"Невалидно калибриране, проверете конфигурацията"},Se={status:{label:"Статус",value:{starting:"Стартиране","charger disconnected":"Изключен от зарядно",idle:"Неактивен","remote control active":"Дистанционното управление е активно",cleaning:"Почистване","returning home":"Прибиране","manual mode":"Ръчен режим",charging:"Зареждане","charging problem":"Проблем със зареждане",paused:"Прекъснат","spot cleaning":"Почистване на точка",error:"Грешка","shutting down":"Изключване",updating:"В процес на ъпдейт",docking:"Прибиране","going to target":"Отиване до цел","zoned cleaning":"Зоново почистване","segment cleaning":"Почистване на стая","emptying the bin":"Изпразване на кош","charging complete":"Зареждането приключи","device offline":"Устройство неактивно"}},battery_level:{label:"Батерия"},fan_speed:{label:"Режим",value:{silent:"Тих",standard:"Стандартен",medium:"Среден",turbo:"Turbo",auto:"Автоматичен",gentle:"Нежен"}},sensor_dirty_left:{label:"Оставащ живот на сензор"},filter_left:{label:"Оставащ живот на филтър"},main_brush_left:{label:"Оставащ живот на основна четка"},side_brush_left:{label:"Оставащ живот на странична четка"},cleaning_count:{label:"Брой почиствания"},cleaned_area:{label:"Почистена площ"},total_cleaned_area:{label:"Общо почистена площ"},cleaning_time:{label:"Време за почистване"},total_cleaning_time:{label:"Общо време за почистване"},mop_left:{label:"Оставащ живот на парцал"},bin_full:{label:"Пълен кош",value:{true:"Да",false:"Не"}},bin_present:{label:"Кош наличен",value:{true:"Да",false:"Не"}},water_volume:{label:"Количество вода"},mop_pad_humidity:{label:"Подложка с парцал"}},Me={vacuum_start:"Старт",vacuum_pause:"Пауза",vacuum_stop:"Стоп",vacuum_return_to_base:"Връшане",vacuum_clean_spot:"Изчистване на точка",vacuum_locate:"Намиране",vacuum_set_fan_speed:"Проняна на скоростта"},Ne={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Oe={success:"Успех!",no_selection:"Не е предоставена селекция",failed:"Неуспех при повикване на service"},Ce={description:{text:"Този визуален редактор поддържа само основна конфигурация. За подробни настройки използвайте режима YAML."},label:{name:"Заглавие (по избор)",entity:"Vacuum обект (задължително)",camera:"Camera обект (задължително)",vacuum_platform:"Vacuum платформа (задължително)",map_locked:"Заключване на карта (по избор)",two_finger_pan:"Навигация с два пръста (по избор)",platforms_documentation:"Документация за избраната платформа ({0})",selection:"Селекция:",copy:"Копиране",copied:"Копирано!",set_static_config:"Генериране на статична конфигурация",config_set:"Конфигурирано!\nОтворете редактора на конфигурация за промяна.",config_set_failed:"Грешка при създаване на конфигурация.",generate_rooms_config:"Генериране на конфигурация за стаи",copy_service_call:"Копиране на service call"},alerts:{set_static_config:"Използвайте тази функция асмо ако искате ръчно да промените автоматично генерираната конфигурация.\nНапред?"}},Re={common:ze,map_mode:Pe,validation:Te,tile:Se,icon:Me,unit:Ne,popups:Oe,editor:Ce},Le=Object.freeze({__proto__:null,common:ze,map_mode:Pe,validation:Te,tile:Se,icon:Me,unit:Ne,popups:Oe,editor:Ce,default:Re}),$e={version:"Versió",invalid_configuration:"Configuració no vàlida {0}",description:"Una targeta que et permet controlar l'aspiradora",old_configuration:"S'ha detectat una configuració antiga. Ajusta la teva configuració a l'últim esquema o crea una nova targeta des de zero.",old_configuration_migration_link:"Guia de migrat"},je={invalid:"Plantilla no vàlida!",vacuum_goto:"Marcar i anar",vacuum_goto_predefined:"Punts",vacuum_clean_segment:"Habitacions",vacuum_clean_point:"Netejar punt",vacuum_clean_point_predefined:"Punts",vacuum_clean_zone:"Netejar zona",vacuum_clean_zone_predefined:"Llista de zones",vacuum_follow_path:"Camí"},Ie={preset:{entity:{missing:"Propietat no trobada: entity"},preset_name:{missing:"Propietat no trobada: preset_name"},platform:{invalid:"Plataforma d'aspiradora no vàlida: {0}"},map_source:{missing:"Propietat no trobada: map_source",none_provided:"Cap càmera ni imatge proporcionada",ambiguous:"Només es permet una font de mapa"},calibration_source:{missing:"Propietat no trobada: calibration_source",ambiguous:"Només es permet una font de calibratge",none_provided:"No s'ha proporcionat cap font de calibratge",calibration_points:{invalid_number:"Es requereixen exactament 3 o 4 punts de calibratge",missing_map:"Cada punt de calibratge ha de contenir coordenades del mapa",missing_vacuum:"Cada punt de calibratge ha de contenir les coordenades de l'aspiradora",missing_coordinate:"Els punts de calibratge de l'aspiradora i del mapa han de contenir les coordenades x i y"}},icons:{invalid:"Error a la configuració: icons",icon:{missing:"Cada entrada de la llista d'icones ha de contenir la propietat de la icona"}},tiles:{invalid:"Error a la configuració: tiles",entity:{missing:"Cada entrada de la llista de mosaics ha de contenir l'entitat o la variable interna"},label:{missing:"Cada entrada de la llista de mosaics ha de contenir una etiqueta"}},map_modes:{invalid:"Error a la configuració: map_modes",icon:{missing:"Falta la icona del mode de mapa"},name:{missing:"Manca el nom del mode de mapa"},template:{invalid:"Plantilla no vàlida: {0}"},predefined_selections:{not_applicable:"El mode {0} no admet seleccions predefinides",zones:{missing:"Manquen configuracions de zones",invalid_parameters_number:"Cada zona ha de tenir 4 paràmetres"},points:{position:{missing:"Manquen configuracions de punts",invalid_parameters_number:"Cada punt ha de tenir 2 paràmetres"}},rooms:{id:{missing:"Falta l'identificador de l'habitació",invalid_format:"Identificador de l'habitació no vàlid: {0}"},outline:{invalid_parameters_number:"Cada punt del contorn de l'habitació ha de tenir 2 paràmetres"}},label:{x:{missing:"L'etiqueta ha de tenir la propietat x"},y:{missing:"L'etiqueta ha de tenir la propietat y"},text:{missing:"L'etiqueta ha de tenir propietat text"}},icon:{x:{missing:"La icona ha de tenir la propietat x"},y:{missing:"La icona ha de tenir la propietat y"},name:{missing:"La icona ha de tenir una propietat name"}}},service_call_schema:{missing:"Falta l'esquema de trucada de servei",service:{missing:"L'esquema de trucada de servei ha de contenir service",invalid:"Servei no vàlid: {0}"}}}},invalid_entities:"Entitats no vàlides:",invalid_calibration:"Calibració no vàlida, comproveu la vostra configuració"},De={status:{label:"Estat",value:{starting:"Començant","charger disconnected":"Carregador desconnectat",idle:"Inactiu","remote control active":"Comandament a distància actiu",cleaning:"Netejant","returning home":"Tornant a casa","manual mode":"Mode manual",charging:"Carregant","charging problem":"Problema de càrrega",paused:"En pausa","spot cleaning":"Neteja per punts",error:"Error","shutting down":"Apagant",updating:"Actualitzant",docking:"Acoblament","going to target":"Anant a l'objectiu","zoned cleaning":"Neteja per zones","segment cleaning":"Neteja per segments","emptying the bin":"Buidant el dipòsit","charging complete":"Càrrega completa","device offline":"Dispositiu desconnectat"}},battery_level:{label:"Bateria"},fan_speed:{label:"Velocitat del ventilador",value:{silent:"Silenciós",standard:"Normal",medium:"Mitjà",turbo:"Turbo",auto:"Automàtic",gentle:"Suau"}},sensor_dirty_left:{label:"Sensors"},filter_left:{label:"Filtre"},main_brush_left:{label:"Raspall principal"},side_brush_left:{label:"Raspall lateral"},cleaning_count:{label:"Recompte de neteja"},cleaned_area:{label:"Zona netejada"},cleaning_time:{label:"Temps de neteja"},mop_left:{label:"Fregona"},bin_full:{label:"Dipòsit ple",value:{true:"Sí",false:"No"}},bin_present:{label:"Dipòsit introduït",value:{true:"Sí",false:"No"}}},Fe={vacuum_start:"Començar",vacuum_pause:"Pausa",vacuum_stop:"Atura",vacuum_return_to_base:"Tornar a la base",vacuum_clean_spot:"Netejar punt",vacuum_locate:"Localitzar",vacuum_set_fan_speed:"Canvia la velocitat del ventilador"},Ve={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Ue={success:"Fet!",no_selection:"No s'ha proporcionat cap selecció",failed:"No s'ha pogut trucar al servei"},qe={description:{text:"Aquest editor visual només admet una configuració bàsica. Per a una configuració més avançada, utilitzeu el mode YAML."},label:{name:"Títol (opcional)",entity:"Entitat de l'aspiradora (obligatori)",camera:"Entitat de la càmera (obligatori)",vacuum_platform:"Plataforma de la aspiradora (obligatori)",map_locked:"Mapa bloquejat(opcional)",two_finger_pan:"Moure amb dos dits (opcional)",platforms_documentation:"Documentació de la plataforma seleccionadan ({0})",selection:"Selecció:",copy:"Copiar",copied:"Copiat!",set_static_config:"Genera una configuració estàtica",config_set:"Configuració realitzada!\nObriu l'editor de configuració per ajustar-lo.",config_set_failed:"No s'ha pogut actualitzar la configuració.",generate_rooms_config:"Genera la configuració de les habitacions",copy_service_call:"Trucada de servei de còpia"}},Ke={common:$e,map_mode:je,validation:Ie,tile:De,icon:Fe,unit:Ve,popups:Ue,editor:qe},He=Object.freeze({__proto__:null,common:$e,map_mode:je,validation:Ie,tile:De,icon:Fe,unit:Ve,popups:Ue,editor:qe,default:Ke}),Ge={version:"Verze",invalid_configuration:"Neplatná konfigurace {0}",description:"Karta pomocí které můžete ovládat váš vysavač",old_configuration:"Detekována zastaralá konfigurace. Upravte prosím konfiguraci nebo kartu vytvořte znovu od začátku.",old_configuration_migration_link:"Návod na úpravu konfigurace"},Be={invalid:"Neplatná šablona",vacuum_goto:"Přesun na bod",vacuum_goto_predefined:"Přesun na bod ze seznamu",vacuum_clean_segment:"Úklid místnosti",vacuum_clean_point:"Úklid bodu",vacuum_clean_point_predefined:"Úklid bodu ze seznamu",vacuum_clean_zone:"Úklid oblasti",vacuum_clean_zone_predefined:"Úklid oblasti ze seznamu",vacuum_follow_path:"Trasa"},Xe={preset:{entity:{missing:'Chybějící položka "entity"'},preset_name:{missing:'Chybějící položka "preset_name"'},platform:{invalid:"Neplatná platforma vysavače: {0}"},map_source:{missing:'Chybějící položka "map_source"',none_provided:"Chybějící odkaz na kameru nebo obrázek s mapou",ambiguous:"Povolen pouze jeden zdroj mapy"},calibration_source:{missing:'Chybějící položka "calibration_source"',ambiguous:"Povolen pouze jeden zdroj kalibrace",none_provided:"Chybějící zdroj kalibrace",calibration_points:{invalid_number:"Požadovány 3 nebo 4 kalibrační body",missing_map:"Každý kalibrační bod musí obsahovat souřadnice mapy",missing_vacuum:"Každý kalibrační bod musí obsahovat souřadnice vysavače",missing_coordinate:'Souřadnice mapy i vysavače musí vždy obsahovat položku "x" a "y"'}},icons:{invalid:'Neplatná konfigurace pro položku "icons"',icon:{missing:'Každý záznam v seznamu ikon musí vždy obsahovat položku "icon"'}},tiles:{invalid:'Neplatná konfigurace pro položku "tiles"',entity:{missing:'Každý záznam v seznamu dlaždic musí vždy obsahovat položku "entity"'},label:{missing:'Každý záznam v seznamu dlaždic musí vždy obsahovat položku "label"'}},map_modes:{invalid:'Neplatná konfigurace pro položku "map_modes"',icon:{missing:"Chybějící ikona pro mapový režim"},name:{missing:"Chybějící název pro mapový režim"},template:{invalid:"Neplatná šablona: {0}"},predefined_selections:{not_applicable:"Režim {0} nepodporuje výběr z přednastavených možností",zones:{missing:"Chybějící konfigurace oblastí",invalid_parameters_number:"Každá oblast musí mít 4 parametry"},points:{position:{missing:"Chybějící konfigurace bodů",invalid_parameters_number:"Každý bod musí mít 2 parametry"}},rooms:{id:{missing:"Chybějící identifikátor místnosti",invalid_format:"Neplatný identifikátor místnosti: {0}"},outline:{invalid_parameters_number:"Každý bod ohraničení místnosti musí mít 2 parametry"}},label:{x:{missing:'Popisek musí mít položku "x"'},y:{missing:'Popisek musí mít položku "y"'},text:{missing:'Popisek musí mít položku "text"'}},icon:{x:{missing:'Ikona musí mít položku "x"'},y:{missing:'Ikona musí mít položku "y"'},name:{missing:'Ikona musí mít položku "name"'}}},service_call_schema:{missing:"Chybějící formát volání služby",service:{missing:'Formát volání služby musí obsahovat položku "service"',invalid:"Neplatná služba: {0}"}}}},invalid_entities:"Neplatné entity:",invalid_calibration:"Neplatná kalibrace, prosím zkontrolujte konfiguraci"},Ze={status:{label:"Stav",value:{starting:"Zapínání","charger disconnected":"Nabíječka odpojena",idle:"Nečinný","remote control active":"Dálkové ovládání aktivní",cleaning:"Uklízení","returning home":"Návrat do základny","manual mode":"Manuální režim",charging:"Nabíjení","charging problem":"Problém s nabíjením",paused:"Pozastaven","spot cleaning":"Uklízení bodu",error:"Chyba","shutting down":"Vypínání",updating:"Probíhá aktualizace",docking:"Parkování","going to target":"Přesun na bod","zoned cleaning":"Uklízení oblasti","segment cleaning":"Uklízení místnosti","emptying the bin":"Vyprazdňování zásobníku","charging complete":"Nabíjení dokončeno","device offline":"Zařízení je nedostupné"}},battery_level:{label:"Baterie"},fan_speed:{label:"Stupeň vysávání",value:{silent:"Tichý",standard:"Standardní",medium:"Střední",turbo:"Turbo",auto:"Automatický",gentle:"Slabý"}},sensor_dirty_left:{label:"Čistota senzorů"},filter_left:{label:"Životnost filtru"},main_brush_left:{label:"Životnost hlavního kartáče"},side_brush_left:{label:"Životnost bočních kartáčů"},cleaning_count:{label:"Počet úklidů"},cleaned_area:{label:"Uklizená plocha"},total_cleaned_area:{label:"Celková uklizená plocha"},cleaning_time:{label:"Doba uklízení"},total_cleaning_time:{label:"Celková doba uklízení"},mop_left:{label:"Životnost mopu"},bin_full:{label:"Odpadní nádoba plná",value:{true:"Ano",false:"Ne"}},bin_present:{label:"Odpadní nádoba vložena",value:{true:"Ano",false:"Ne"}},water_volume:{label:"Množství vody"},mop_pad_humidity:{label:"Vlhkost mopu"}},Ye={vacuum_start:"Zahájit úklid",vacuum_pause:"Pozastavit úklid",vacuum_stop:"Ukončit úklid",vacuum_return_to_base:"Návrat do základny",vacuum_clean_spot:"Uklidit bod",vacuum_locate:"Najít",vacuum_set_fan_speed:"Nastavit stupeň sání"},Je={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},We={success:"Volání služby bylo úspěšné",no_selection:"Nebyl proveden žádný výběr",failed:"Volání služby selhalo"},Qe={description:{text:"Tento editor podporuje pouze základní konfiguraci. Pro pokročilá nastavení použijte editor kódu."},label:{name:"Titulek (volitelná položka)",entity:"Entita vysavače (povinná položka)",camera:"Entita kamery (povinná položka)",vacuum_platform:"Platforma vysavače (povinná položka)",map_locked:"Uzamčení mapy",two_finger_pan:"Posuv mapy dvěma prsty",platforms_documentation:"Dokumentace vybrané platformy ({0})",selection:"Výběr:",copy:"Kopírovat",copied:"Zkopírováno!",set_static_config:"Generovat statickou konfiguraci",config_set:"Konfigurace nastavena!\nPro úpravu otevři editor kódu.",config_set_failed:"Aktualizace nastavení selhala.",generate_rooms_config:"Generovat konfiguraci místností",copy_service_call:"Kopírovat volání služby"},alerts:{set_static_config:"Toto nastavení se používá pouze pokud chcete manuálně upravit automaticky generovanou konfiguraci. \nPokračovat?"}},et={common:Ge,map_mode:Be,validation:Xe,tile:Ze,icon:Ye,unit:Je,popups:We,editor:Qe},tt=Object.freeze({__proto__:null,common:Ge,map_mode:Be,validation:Xe,tile:Ze,icon:Ye,unit:Je,popups:We,editor:Qe,default:et}),it={version:"Version",invalid_configuration:"Ugyldig konfiguration {0}",description:"Et kort som lader dig styre din robotstøvsuger",old_configuration:"Gammel opsætning fundet. Juster dine indstillinger til det seneste format, eller lav et nyt kort fra bunden.",old_configuration_migration_link:"Migrerings vejledning"},at={invalid:"Ugyldigt template!",vacuum_goto:"Klik & Gå",vacuum_goto_predefined:"Punkter",vacuum_clean_segment:"Rum",vacuum_clean_zone:"Zone rengøring",vacuum_clean_zone_predefined:"Zoner",vacuum_follow_path:"Sti"},nt={preset:{entity:{missing:"Mangler indstilling: entity"},preset_name:{missing:"Mangler indstilling: preset_name"},platform:{invalid:"Ugyldig støvsuger platform: {0}"},map_source:{missing:"Mangler indstilling: map_source",none_provided:"Intet kamera eller billede er angivet",ambiguous:"Kun en kort-kilde tilladt"},calibration_source:{missing:"Mangler indstilling: calibration_source",ambiguous:"Kun en kalibrerings-kilde tilladt",none_provided:"Ingen kalibrerings kilde angivet",calibration_points:{invalid_number:"Nøjagtigt 3 eller 4 kalibreringspunkter påkrævet",missing_map:"Alle kalibreringspunkter skal indeholde kort koordinater",missing_vacuum:"Alle kalibreringspunkter skal indeholde støvsuger koordinater",missing_coordinate:"Kort og støvsugers kalibreringspunkter skal indeholde både x og y koordinater"}},icons:{invalid:"Fejl i konfiguration: icons",icon:{missing:"Alle punkter i icons listen skal indeholde icon egenskaben"}},tiles:{invalid:"Fejl i konfiguration: tiles",entity:{missing_outdated_translation:"Alle punkter i tiles listen skal indehold entity egenskaben"},label:{missing:"Alle punkter i tiles listen skal indehold label egenskaben"}},map_modes:{invalid:"Fejl i konfiguration: map_modes",icon:{missing:"Ikon mangler"},name:{missing:"Navn mangler"},template:{invalid:"Ugyldigt template: {0}"},predefined_selections:{not_applicable:"Mode {0} understøtter ikke predefinerede valg",zones:{missing:"Zone konfiguration mangler",invalid_parameters_number:"En zone skal indeholde 4 parametre."},points:{position:{missing:"Punkt konfiguration mangler",invalid_parameters_number:"Et punkt skal indeholde 2 parametre"}},rooms:{id:{missing:"Rummets id mangler",invalid_format:"Ugyldigt rum id: {0}"},outline:{invalid_parameters_number:"Et punkt i rummets kant skal indeholde 2 parametre"}},label:{x:{missing:"Label skal indeholde egenskaben x"},y:{missing:"Label skal indeholde egenskaben y"},text:{missing:"Label skal indeholde egenskaben text"}},icon:{x:{missing:"Icon skal indeholde egenskaben x"},y:{missing:"Icon skal indeholde egenskaben y"},name:{missing:"Icon skal indeholde egenskaben name"}}},service_call_schema:{missing:"Service-kald indstillingerne mangler",service:{missing:"Service-kald indstillinger skal indeholde en service",invalid:"Ugyldig service: {0}"}}}},invalid_entities:"Ugyldige entiteter:",invalid_calibration:"Ugyldig kalibrering, du bedes gennemgå din konfiguration"},ot={status:{label:"Status",value:{starting:"Starter","charger disconnected":"Oplader koblet fra",idle:"Ledig","remote control active":"Fjernstyring aktivt",cleaning:"Rengører","returning home":"Vender hjem","manual mode":"Manuel tilstand",charging:"Oplader","charging problem":"Opladnings-problem",paused:"Sat på pause","spot cleaning":"Spot rengøring",error:"Fejl","shutting down":"Slukker",updating:"Opdaterer",docking:"Docker","going to target":"Går til mål","zoned cleaning":"Zone rengøring","segment cleaning":"Segment rengøring","emptying the bin":"Tømmes","charging complete":"Fuldt opladt","device offline":"Enhed offline"}},battery_level:{label:"Batteri"},fan_speed:{label:"Hastighed",value:{silent:"Stille",standard:"Standard",medium:"Medium",turbo:"Turbo",auto:"Auto",gentle:"Mild"}},sensor_dirty_left:{label:"Sensor vedl."},filter_left:{label:"Filter vedl."},main_brush_left:{label:"Hovedbørste vedl."},side_brush_left:{label:"Sidebørste vedl."},cleaning_count:{label:"Rengøringstæller"},cleaned_area:{label:"Rengjort areal"},cleaning_time:{label:"Rengørings tid"}},rt={vacuum_start:"Start",vacuum_pause:"Pause",vacuum_stop:"Stop",vacuum_return_to_base:"Returner",vacuum_clean_spot:"Spotrengør",vacuum_locate:"Find",vacuum_set_fan_speed:"Skift hastighed"},st={hour_shortcut:"t",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},lt={success:"Succes!",no_selection:"Intet valg angivet",failed:"Service-kald fejlede"},ct={description:{text:"Den visuelle editor understøtter kun en grundlæggende konfiguration. For en mere advanceret konfiguration, brug YAML mode."},label:{name:"Titel (valgfrit)",entity:"Støvsuger entitet (påkrævet)",camera:"Kamera entitet (påkrævet)",vacuum_platform:"Støvsuger platform (påkrævet)",map_locked:"Kort låst (valgfrit)",two_finger_pan:"To-finger panorering (valgfrit)"}},dt={common:it,map_mode:at,validation:nt,tile:ot,icon:rt,unit:st,popups:lt,editor:ct},ut=Object.freeze({__proto__:null,common:it,map_mode:at,validation:nt,tile:ot,icon:rt,unit:st,popups:lt,editor:ct,default:dt}),mt={version:"Version",invalid_configuration:"Ungültige Konfiguration {0}",description:"Eine Karte, mit der Sie Ihren Staubsauger kontrollieren können.",old_configuration:"Es wurde eine alte Konfiguration erkannt. Passen Sie Ihre Konfiguration an das neueste Schema an oder erstellen Sie eine neue Karte von Grund auf.",old_configuration_migration_link:"Migrationsanleitung"},pt={invalid:"Ungültige Vorlage!",vacuum_goto:"Pin & Go",vacuum_goto_predefined:"Punkte",vacuum_clean_segment:"Räume",vacuum_clean_point:"Reinige Punkte",vacuum_clean_point_predefined:"Punkte",vacuum_clean_zone:"Zone reinigen",vacuum_clean_zone_predefined:"Zonenliste",vacuum_follow_path:"Pfad"},_t={preset:{entity:{missing:"Fehlende Eigenschaft: entity"},preset_name:{missing:"Fehlende Eigenschaft: preset_name"},platform:{invalid:"Ungültige Staubsauger-Plattform: {0}"},map_source:{missing:"Fehlende Eigenschaft: map_source",none_provided:"Keine Kamera und kein Bild vorhanden",ambiguous:"Nur eine Kartenquelle erlaubt"},calibration_source:{missing:"Fehlende Eigenschaft: calibration_source",ambiguous:"Nur eine Kalibrierungsquelle erlaubt",none_provided:"Keine Kalibrierungsquelle vorhanden",calibration_points:{invalid_number:"Genau 3 oder 4 Kalibrierungspunkte erforderlich",missing_map:"Jeder Kalibrierungspunkt muss Kartenkoordinaten enthalten",missing_vacuum:"Jeder Kalibrierungspunkt muss Stabsauger-Koordinaten enthalten",missing_coordinate:"Karten- und Vakuumkalibrierungspunkte müssen sowohl x- als auch y-Koordinaten enthalten"}},icons:{invalid:"Fehler in der Konfiguration: icons",icon:{missing:"Jeder Eintrag der Icon-Liste muss die Ikoneneigenschaft"}},tiles:{invalid:"Fehler in der Konfiguration: tiles",entity:{missing_outdated_translation:"Jeder Eintrag der Kachel-Liste muss eine Entität enthalten"},label:{missing:"Jeder Eintrag der Kachel-Liste muss ein Label enthalten"}},map_modes:{invalid:"Fehler in der Konfiguration: map_modes",icon:{missing:"Fehlendes Symbol für den Kartenmodus"},name:{missing:"Fehlender Name für den Kartenmodus"},template:{invalid:"Ungültige Vorlage: {0}"},predefined_selections:{not_applicable:"Modus {0} unterstützt keine vordefinierte Auswahl",zones:{missing:"Fehlende Zonenkonfiguration",invalid_parameters_number:"Jede Zone muss 4 Parameter haben"},points:{position:{missing:"Konfiguration der fehlenden Punkte",invalid_parameters_number:"Jeder Punkt muss 2 Parameter haben"}},rooms:{id:{missing:"Fehlende Raum ID",invalid_format:"Ungültige Raum ID: {0}"},outline:{invalid_parameters_number:"Jeder Punkt des Raumes muss 2 Parameter haben."}},label:{x:{missing:"Das Label muss die Eigenschaft x haben"},y:{missing:"Das Label muss die Eigenschaft y haben"},text:{missing:"Das Label muss eine Text-Eigenschaft haben"}},icon:{x:{missing:"Das Icon muss die Eigenschaft x haben"},y:{missing:"Das Icon muss die Eigenschaft y haben"},name:{missing:"Das Icon muss eine Text-Eigenschaft haben"}}},service_call_schema:{missing:"Fehlendes Schema des Service-Aufrufs",service:{missing:"Schema des Service-Aufrufs muss Dienst enthalten",invalid:"Ungültiger Service: {0}"}}}},invalid_entities:"Ungültige Entitäten:",invalid_calibration:"Ungültige Kalibrierung, bitte überprüfen Sie Ihre Konfiguration"},vt={status:{label:"Status",value:{starting:"Starte","charger disconnected":"Ladegerät getrennt",idle:"Inaktiv","remote control active":"Fernsteuerung aktiv",cleaning:"Säubern","returning home":"Kehre zur Ladestation zurück","manual mode":"Manueller Modus",charging:"Lade","charging problem":"Lade-Problem",paused:"Pause","spot cleaning":"Spot-Reinigung",error:"Fehler",sleeping:"Schlafend","shutting down":"Herunterfahren",updating:"Aktualisiere",docking:"Andocken","going to target":"Fahre zum Ziel","zoned cleaning":"Zonen-Reinigung","segment cleaning":"Segment-Reinigung","emptying the bin":"Leere den Staubbehälter","charging complete":"Ladung vollständig","device offline":"Gerät offline"}},battery_level:{label:"Batterie"},fan_speed:{label:"Lüftergeschwindigkeit",value:{silent:"Leise",standard:"Standard",medium:"Medium",turbo:"Turbo",auto:"Auto",gentle:"Sanft",strong:"Stark"}},sensor_dirty_left:{label:"Sensoren verbleibend"},filter_left:{label:"Filter verbleibend"},main_brush_left:{label:"Hauptbürste verbleibend"},side_brush_left:{label:"Seitenbürste verbleibend"},cleaning_count:{label:"Anzahl der Reinigungen"},cleaned_area:{label:"Gereinigte Fläche"},total_cleaned_area:{label:"Gesamte gereinigte Fläche"},cleaning_time:{label:"Zeit der Reinigung"},total_cleaning_time:{label:"Gesamte Reinigungszeit"},mop_left:{label:"Wischblatt verbleibend"},bin_full:{label:"Behälter voll",value:{true:"Ja",false:"Nein"}},bin_present:{label:"Behälter vorhanden",value:{true:"Ja",false:"Nein"}},water_volume:{label:"Wasservolumen"},mop_pad_humidity:{label:"Wischblatt"}},gt={vacuum_start:"Start",vacuum_pause:"Pause",vacuum_stop:"Stop",vacuum_return_to_base:"Rückkehr zur Basis",vacuum_clean_spot:"Reinige Stelle",vacuum_locate:"Finden",vacuum_set_fan_speed:"Lüftergeschwindigkeit ändern"},ht={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},ft={success:"Erfolg!",no_selection:"Keine Auswahl vorgesehen",failed:"Der Dienst konnte nicht aufgerufen werden"},bt={description:{text:"Dieser visuelle Editor unterstützt nur eine einfache Konfiguration. Für erweiterte Einstellungen verwenden Sie den YAML-Modus."},label:{name:"Titel (optional)",entity:"Staubsauger Entität (required)",camera:"Kamera Entität (required)",vacuum_platform:"Staubsauger-Plattform (required)",map_locked:"Karte gesperrt (optional)",two_finger_pan:"Zwei-Finger-Pan (optional)",platforms_documentation:"Ausgewählte Plattform Dokumentation ({0})",selection:"Auswahl:",copy:"Kopieren",copied:"Kopiert!",set_static_config:"Erstelle statische Konfiguration",config_set:"Konfiguration abgespeichert!\nÖffne Konfigurationseditor zum Ändern.",config_set_failed:"Update der Konfiguration fehlgeschlagen.",generate_rooms_config:"Erstelle Raumkonfiguration",copy_service_call:"Kopiere Service-Aufruf"},alerts:{set_static_config:"Die Funktion nur nutzen, um manuell die automatische erstellte Konfiguration zu ändern.\nWeiter?"}},yt={common:mt,map_mode:pt,validation:_t,tile:vt,icon:gt,unit:ht,popups:ft,editor:bt},kt=Object.freeze({__proto__:null,common:mt,map_mode:pt,validation:_t,tile:vt,icon:gt,unit:ht,popups:ft,editor:bt,default:yt}),At={version:"Έκδοση",invalid_configuration:"Μη αποδεκτές ρυθμίσεις {0}",description:"Μία κάρτα που σας επιτρέπει να ελέγξετε την σκούπα σας",old_configuration:"Ανιχνεύθυκαν παλιές ρυθμίσεις. Προσαρμόστε τις ρυθμίσεις σας στο πιο πρόσφατο μοντέλο ή δημιουργήστε μια νέα κάρτα από την αρχή.",old_configuration_migration_link:"Οδηγός μετατροπής παλιών ρυθμίσεων"},xt={invalid:"Μη αποδεκτό πρότυπο!",vacuum_goto:"Πήγαινε Εδώ",vacuum_goto_predefined:"Σημεία",vacuum_clean_segment:"Δωμάτια",vacuum_clean_point:"Σκούπισμα σε σημείο",vacuum_clean_point_predefined:"Σημεία",vacuum_clean_zone:"Σκούπισμα σε ζώνη",vacuum_clean_zone_predefined:"Λίστα ζωνών καθαρισμού",vacuum_follow_path:"Διαδρομή"},Et={preset:{entity:{missing:"Λείπει η ιδιότητα: entity"},preset_name:{missing:"Λείπει η ιδιότητα: preset_name"},platform:{invalid:"Μη αποδεκτή πλατφόρμα σκούπας: {0}"},map_source:{missing:"Λείπει η ιδιότητα: map_source",none_provided:"Δεν ρυθμίστηκε ούτε κάμερα ούτε εικόνα",ambiguous:"Επιτρέπεται μόνο μία πηγή χάρτη"},calibration_source:{missing:"Λείπει η ιδιότητα: calibration_source",ambiguous:"Επιτρέπεται μόνο μία πηγή βαθμονόμησης",none_provided:"Δεν ρυθμίστηκε πηγή βαθμονόμησης",calibration_points:{invalid_number:"Απαιτούνται ακριβώς 3 ή 4 σημεία βαθμονόμησης",missing_map:"Κάθε σημείο βαθμονόμησης πρέπει να περιέχει συντεταγμένες του χάρτη",missing_vacuum:"Κάθε σημείο βαθμονόμησης πρέπει να περιέχει συντεταγμένες της σκούπας",missing_coordinate:"Τα σημεία βαθμονόμησης του χάρτη και της σκούπας πρέπει να περιέχουν συντεταγμένες x και y"}},icons:{invalid:"Λάθος στις ρυθμίσεις: icons",icon:{missing:"Κάθε εγγραφή icon πρέπει να περιέχει μια ιδιότητα icon"}},tiles:{invalid:"Λάθος στις ρυθμίσεις: tiles",entity:{missing_outdated_translation:"Κάθε εγγραφή tile πρέπει να περιέχει entity"},label:{missing:"Κάθε εγγραφή tile πρέπει να περιέχει label"}},map_modes:{invalid:"Λάθος στις ρυθμίσεις: map_modes",icon:{missing:"Λείπει το εικονίδιο του τρόπου λειτουργίας χάρτη"},name:{missing:"Λείπει το όνομα του τρόπου λειτουργίας χάρτη"},template:{invalid:"Μη αποδεκτό πρότυπο: {0}"},predefined_selections:{not_applicable:"Η λειτουργία {0} δεν υποστηρίζει προκαθορισμένες επιλογές",zones:{missing:"Λείπει η ρύθμιση ζωνών καθαρισμού",invalid_parameters_number:"Κάθε ζώνη καθαρισμού πρέπει να έχει 4 παραμέτρους"},points:{position:{missing:"Λείπει η ρύθμιση σημείων",invalid_parameters_number:"Each point must have 2 parameters"}},rooms:{id:{missing:"Λείπει το αναγνωριστικό του δωματίου",invalid_format:"Λάθος αναγνωριστικό δωματίου: {0}"},outline:{invalid_parameters_number:"Κάθε σημείο του περιγράμματος του δωματίου πρέπει να έχει 2 παραμέτρους"}},label:{x:{missing:"Η ταμπέλα πρέπει να έχει ιδιότητα x"},y:{missing:"Η ταμπέλα πρέπει να έχει ιδιότητα y"},text:{missing:"Η ταμπέλα πρέπει να έχει ιδιότητα κειμένου"}},icon:{x:{missing:"Το εικονίδιο πρέπει να έχει ιδιότητα x"},y:{missing:"Το εικονίδιο πρέπει να έχει ιδιότητα y"},name:{missing:"Το εικονίδιο πρέπει να έχει ιδιότητα ονόματος"}}},service_call_schema:{missing:"Λείπει το μοντέλο κλήσης υπηρεσίας",service:{missing:"Το μοντέλο κλήσης υπηρεσίας πρέπει να εμπεριέχει υπηρεσία",invalid:"Μη έγκυρη υπηρεσία: {0}"}}}},invalid_entities:"Λάθος οντότητες:",invalid_calibration:"Λάθος βαθμονόμηση, παρακαλώ ελέγξτε τις ρυθμίσεις σας"},wt={status:{label:"Κατάσταση",value:{starting:"Γίνεται εκκίνηση","charger disconnected":"Αποσυνδέθηκε από τη φόρτιση",idle:"Σε αδράνεια","remote control active":"Χειροκίνητος έλεγχος ενεργός",cleaning:"Γίνεται καθαρισμός","returning home":"Επιστροφή στη βάση","manual mode":"Χειροκίνητη λειτουργία",charging:"Σε φόρτιση","charging problem":"Πρόβλημα φόρτισης",paused:"Σε παύση","spot cleaning":"Καθαρισμός σημείου",error:"Σφάλμα","shutting down":"Γίνεται τερματισμός",updating:"Γίνεται αναβάθμιση",docking:"Σύνδεση στη βάση","going to target":"Πορεία προς προορισμό","zoned cleaning":"Καθαρισμός ζώνης","segment cleaning":"Καθαρισμός τμήματος","emptying the bin":"Άδειασμα κάδου","charging complete":"Φόρτιση πλήρης","device offline":"Συσκευή εκτός δικτύου"}},battery_level:{label:"Μπαταρία"},fan_speed:{label:"Ταχύτητα ανεμιστήρα",value:{silent:"Αθόρυβο",standard:"Τυπικό",medium:"Μέτριο",turbo:"Τούρμπο",auto:"Αυτόματο",gentle:"Ήπιο"}},sensor_dirty_left:{label:"Συντήρηση αισθητήρων"},filter_left:{label:"Συντήρηση φίλτρου"},main_brush_left:{label:"Συντήρηση κύριας βούρτσας"},side_brush_left:{label:"Συντήρηση πλαϊνής βούρτσας"},cleaning_count:{label:"Αριθμός σκουπισμάτων"},cleaned_area:{label:"Έκταση που καθαρίστηκε"},cleaning_time:{label:"Χρόνος καθαρισμού"},mop_left:{label:"Συντήρηση σφουγγαρίστρας"},bin_full:{label:"Κάδος γεμάτος",value:{true:"Ναι",false:"Όχι"}},bin_present:{label:"Κάδος παρών",value:{true:"Ναι",false:"Όχι"}}},zt={vacuum_start:"Έναρξη",vacuum_pause:"Παύση",vacuum_stop:"Διακοπή",vacuum_return_to_base:"Επιστροφή στη βάση",vacuum_clean_spot:"Καθαρισμός σημείου",vacuum_locate:"Εντοπισμός",vacuum_set_fan_speed:"Αλλαγή ταχύτητας ανεμιστήρα"},Pt={hour_shortcut:"ω",meter_shortcut:"μ",meter_squared_shortcut:"τ.μ.",minute_shortcut:"λεπ"},Tt={success:"Επιτυχία!",no_selection:"Δεν δόθηκε επιλογή",failed:"Αποτυχία κλήσης υπηρεσίας"},St={description:{text:"Αυτό η οπτική διεπαφή επεξεργασίας υποστηρίζει μόνο βασικές ρυθμίσεις. Για πιο εξελιγμένες ρυθμίσεις χρησιμοποιήστε τη μέθοδο επεξεργασίας αρχείου YAML."},label:{name:"Τίτλος (προεραιτικό)",entity:"Οντότητα σκούπας (απαραίτητο)",camera:"Οντότητα κάμερας (απαραίτητο)",vacuum_platform:"Πλατφόρμα σκούπας (απαραίτητο)",map_locked:"Κλείδωμα χάρτη (προεραιτικό)",two_finger_pan:"Μετακίνηση με δύο δάχτυλα (προεραιτικό)",platforms_documentation:"Τεκμηρίωση της επιλεγμένης πλατφόρμας ({0})",selection:"Επιλογή:",copy:"Αντιγραφή",copied:"Αντιγράφηκε!",set_static_config:"Δημιουργία στατικών ρυθμίσεων",config_set:"Ρύθμιση παραμέτρων!\nΑνοίξτε τον επεξεργαστή παραμέτρων για να τον προσαρμόσετε.",config_set_failed:"Απέτυχε η ενημέρωση των ρυθμίσεων.",generate_rooms_config:"Δημιουργία παραμέτρων δωματίων",copy_service_call:"Αντιγραφή κλήσης υπηρεσίας"}},Mt={common:At,map_mode:xt,validation:Et,tile:wt,icon:zt,unit:Pt,popups:Tt,editor:St},Nt=Object.freeze({__proto__:null,common:At,map_mode:xt,validation:Et,tile:wt,icon:zt,unit:Pt,popups:Tt,editor:St,default:Mt}),Ot={version:"Version",invalid_configuration:"Invalid configuration {0}",description:"A card that lets you control your vacuum using a map",old_configuration:"Old configuration detected. Adjust your config to the latest schema or create a new card from the scratch.",old_configuration_migration_link:"Migration guide"},Ct={invalid:"Invalid template!",vacuum_goto:"Pin & Go",vacuum_goto_predefined:"Points",vacuum_clean_segment:"Rooms",vacuum_clean_point:"Clean point",vacuum_clean_point_predefined:"Points",vacuum_clean_zone:"Zone cleanup",vacuum_clean_zone_predefined:"Zones list",vacuum_follow_path:"Path",setup_zone:"Zone coordinates",setup_point:"Point coordinates",setup_outline:"Outline coordinates"},Rt={preset:{entity:{missing:"Missing property: entity"},preset_name:{missing:"Missing property: preset_name"},platform:{invalid:"Invalid vacuum platform: {0}"},map_source:{missing:"Missing property: map_source",none_provided:"No camera neither image provided",ambiguous:"Only one map source allowed"},calibration_source:{missing:"Missing property: calibration_source",ambiguous:"Only one calibration source allowed",none_provided:"No calibration source provided",calibration_points:{invalid_number:"Exactly 3 or 4 calibration points required",missing_map:"Each calibration point must contain map coordinates",missing_vacuum:"Each calibration point must contain vacuum coordinates",missing_coordinate:"Map and vacuum calibration points must contain both x and y coordinate"}},icons:{invalid:"Error in configuration: icons",icon:{missing:"Each entry of icons list must contain icon property"}},tiles:{invalid:"Error in configuration: tiles",entity:{missing:"Each entry of tiles list must contain entity or internal variable"},label:{missing:"Each entry of tiles list must contain label"}},map_modes:{invalid:"Error in configuration: map_modes",icon:{missing:"Missing icon of map mode"},name:{missing:"Missing name of map mode"},template:{invalid:"Invalid template: {0}"},predefined_selections:{not_applicable:"Mode {0} does not support predefined selections",zones:{missing:"Missing zones configuration",invalid_parameters_number:"Each zone must have 4 parameters"},points:{position:{missing:"Missing points configuration",invalid_parameters_number:"Each point must have 2 parameters"}},rooms:{id:{missing:"Missing room id",invalid_format:"Invalid room id: {0}"},outline:{invalid_parameters_number:"Each point of room outline must have 2 parameters"}},label:{x:{missing:"Label must have x property"},y:{missing:"Label must have y property"},text:{missing:"Label must have text property"}},icon:{x:{missing:"Icon must have x property"},y:{missing:"Icon must have y property"},name:{missing:"Icon must have name property"}}},service_call_schema:{missing:"Missing service call schema",service:{missing:"Service call schema must contain service",invalid:"Invalid service: {0}"}}}},invalid_entities:"Invalid entities:",invalid_calibration:"Invalid calibration, please check your configuration"},Lt={status:{label:"Status",value:{starting:"Starting","charger disconnected":"Charger disconnected",idle:"Idle","remote control active":"Remote control active",cleaning:"Cleaning","returning home":"Returning home","manual mode":"Manual mode",charging:"Charging","charging problem":"Charging problem",paused:"Paused","spot cleaning":"Spot cleaning",error:"Error",sleeping:"Sleeping","shutting down":"Shutting down",updating:"Updating",docking:"Docking","going to target":"Going to target","zoned cleaning":"Zoned cleaning","segment cleaning":"Segment cleaning","emptying the bin":"Emptying the bin","charging complete":"Charging complete","device offline":"Device offline"}},battery_level:{label:"Battery"},fan_speed:{label:"Fan speed",value:{silent:"Silent",standard:"Standard",medium:"Medium",turbo:"Turbo",auto:"Auto",gentle:"Gentle",strong:"Strong"}},sensor_dirty_left:{label:"Sensors left"},filter_left:{label:"Filter left"},main_brush_left:{label:"Main brush left"},side_brush_left:{label:"Side brush left"},cleaning_count:{label:"Cleaning count"},cleaned_area:{label:"Cleaned area"},total_cleaned_area:{label:"Total cleaned area"},cleaning_time:{label:"Cleaning time"},total_cleaning_time:{label:"Total cleaning time"},mop_left:{label:"Mop left"},bin_full:{label:"Bin full",value:{true:"Yes",false:"No"}},bin_present:{label:"Bin present",value:{true:"Yes",false:"No"}},water_volume:{label:"Water volume"},mop_pad_humidity:{label:"Mop pad"}},$t={vacuum_start:"Start",vacuum_pause:"Pause",vacuum_stop:"Stop",vacuum_return_to_base:"Return to base",vacuum_clean_spot:"Clean spot",vacuum_locate:"Locate",vacuum_set_fan_speed:"Change fan speed"},jt={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},It={success:"Success!",no_selection:"No selection provided",failed:"Failed to call service"},Dt={description:{text:"This visual editor supports only a basic configuration. For more advanced setup use YAML mode."},label:{name:"Title (optional)",entity:"Vacuum entity (required)",camera:"Camera entity (required)",vacuum_platform:"Vacuum platform (required)",map_locked:"Map locked (optional)",two_finger_pan:"Two finger pan (optional)",platforms_documentation:"Chosen platform's documentation ({0})",selection:"Selection:",copy:"Copy",copied:"Copied!",set_static_config:"Generate static config",config_set:"Config set!\nOpen config editor to adjust it.",config_set_failed:"Failed to update config.",generate_rooms_config:"Generate rooms config",copy_service_call:"Copy service call"},alerts:{set_static_config:"You should use this functionality only if you want to manually adjust automatically generated configuration.\nContinue?"}},Ft={common:Ot,map_mode:Ct,validation:Rt,tile:Lt,icon:$t,unit:jt,popups:It,editor:Dt},Vt=Object.freeze({__proto__:null,common:Ot,map_mode:Ct,validation:Rt,tile:Lt,icon:$t,unit:jt,popups:It,editor:Dt,default:Ft}),Ut={version:"Versión",invalid_configuration:"Configuración no válida {0}",description:"Una tarjeta que te permite controlar la aspiradora",old_configuration:"Se ha detectado una configuración antigua. Ajusta tu configuración al último esquema o crea una nueva tarjeta desde cero.",old_configuration_migration_link:"Guía de migrado."},qt={invalid:"¡Plantilla no válida!",vacuum_goto:"Marcar e ir",vacuum_goto_predefined:"Puntos",vacuum_clean_segment:"Habitaciones",vacuum_clean_point:"Limpiar punto",vacuum_clean_point_predefined:"Puntos",vacuum_clean_zone:"Limpiar zona",vacuum_clean_zone_predefined:"Lista de zonas",vacuum_follow_path:"Ruta"},Kt={preset:{entity:{missing:"Propiedad no encontrada: entity"},preset_name:{missing:"Propiedad no encontrada: preset_name"},platform:{invalid:"Plataforma de aspiradora no válida: {0}"},map_source:{missing:"Propiedad no encontrada: map_source",none_provided:"Sin cámara ni imagen proporcionada",ambiguous:"Solo se permite una fuente de mapa"},calibration_source:{missing:"Propiedad no encontrada: calibration_source",ambiguous:"Sólo se permite una fuente de calibración",none_provided:"No se proporciona fuente de calibración",calibration_points:{invalid_number:"Se requieren 3 o 4 puntos de calibración",missing_map:"Cada punto de calibración debe contener las coordenadas del mapa",missing_vacuum:"Cada punto de calibración debe contener las coordenadas de la aspiradora",missing_coordinate:"Los puntos de calibración de la aspiradora y del mapa deben contener las coordenadas x e y"}},icons:{invalid:"Error en la configuración: icons",icon:{missing:"Cada entrada de la lista de iconos debe contener la propiedad del icono."}},tiles:{invalid:"Error en la configuración: tiles",entity:{missing_outdated_translation:"Cada entrada de la lista de mosaicos debe contener la entidad."},label:{missing:"Cada entrada de la lista de mosaicos debe contener una etiqueta."}},map_modes:{invalid:"Error en la configuración: map_modes",icon:{missing:"Falta el icono del modo de mapa"},name:{missing:"Falta el nombre del modo de mapa"},template:{invalid:"Plantilla no válida: {0}"},predefined_selections:{not_applicable:"El modo {0} no admite selecciones predefinidas",zones:{missing:"Faltan configuraciones de zonas",invalid_parameters_number:"Cada zona debe tener 4 parámetros"},points:{position:{missing:"Faltan configuraciones de puntos",invalid_parameters_number:"Cada punto debe tener 2 parámetros"}},rooms:{id:{missing:"Falta la identificación de la habitación",invalid_format:"Identificación de la habitación no válida: {0}"},outline:{invalid_parameters_number:"Cada punto del contorno de la habitación debe tener 2 parámetros"}},label:{x:{missing:"La etiqueta debe tener la propiedad x"},y:{missing:"La etiqueta debe tener la propiedad y"},text:{missing:"La etiqueta debe tener la propiedad text"}},icon:{x:{missing:"El ícono debe tener la propiedad x"},y:{missing:"El ícono debe tener la propiedad y"},name:{missing:"El ícono debe tener la propiedad name"}}},service_call_schema:{missing:"Falta un esquema de llamada de servicio",service:{missing:"El esquema de llamada de servicio debe contener service",invalid:"Servicio no válido: {0}"}}}},invalid_entities:"Entidades no válidas:",invalid_calibration:"Calibración no válida, verifica la configuración."},Ht={status:{label:"Estado",value:{starting:"Iniciando","charger disconnected":"Cargador desconectado",idle:"Inactivo","remote control active":"Control remoto activo",cleaning:"Limpiando","returning home":"Volviendo a la base","manual mode":"Modo manual",charging:"Cargando","charging problem":"Error de carga",paused:"Pausado","spot cleaning":"Limpieza por puntos",error:"Error","shutting down":"Apagando",updating:"Actualizando",docking:"Acoplamiento","going to target":"Ir al objetivo","zoned cleaning":"Limpieza por zonas","segment cleaning":"Limpieza por segmentos","emptying the bin":"Vaciando el depósito","charging complete":"Carga completa","device offline":"Dispositivo desconectado"}},battery_level:{label:"Batería"},fan_speed:{label:"Velocidad del ventilador",value:{silent:"Silencioso",standard:"Normal",medium:"Medio",turbo:"Turbo",auto:"Automático",gentle:"Suave"}},sensor_dirty_left:{label:"Sensores"},filter_left:{label:"Filtro"},main_brush_left:{label:"Cepillo"},side_brush_left:{label:"Cepillo lateral"},cleaning_count:{label:"Contador de limpieza"},cleaned_area:{label:"Área limpiada"},total_cleaned_area:{label:"Área total limpiada"},cleaning_time:{label:"Tiempo de limpieza"},total_cleaning_time:{label:"Tiempo de limpieza total"},mop_left:{label:"Mopa"},bin_full:{label:"Contenedor lleno",value:{true:"Si",false:"No"}},bin_present:{label:"Contenedor presente",value:{true:"Si",false:"No"}},water_volume:{label:"Volúmen de agua"},mop_pad_humidity:{label:"Mopa"}},Gt={vacuum_start:"Iniciar",vacuum_pause:"Pausar",vacuum_stop:"Detener",vacuum_return_to_base:"Volver a la base",vacuum_clean_spot:"Limpiar punto",vacuum_locate:"Localizar",vacuum_set_fan_speed:"Cambiar la velocidad del ventilador"},Bt={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Xt={success:"¡Listo!",no_selection:"No se ha proporcionado ninguna selección",failed:"No se pudo llamar al servicio"},Zt={description:{text:"Este editor visual sólo admite una configuración básica. Para una configuración más avanzada, utiliza el modo YAML."},label:{name:"Título (opcional)",entity:"Entidad de la aspiradora (requerido)",camera:"Entidad de la cámara (requerido)",vacuum_platform:"Plataforma de la aspiradora (requerido)",map_locked:"Bloquear mapa (opcional)",two_finger_pan:"Mover con dos dedos (opcional)",platforms_documentation:"Plataforma de documentación elegida ({0})",selection:"Selección:",copy:"Copiar",copied:"¡Copiado!",set_static_config:"Generar configuración estática",config_set:"¡Configuración establecida!\nAbre el editor de configuración para ajustarla.",config_set_failed:"Error al actualizar la configuración.",generate_rooms_config:"Generar la configuración de habitaciones",copy_service_call:"Copiar la llamada al servicio"},alerts:{set_static_config:"Sólo se debe utilizar esta función si desea ajustar la configuración generada automáticamente..\n¿Continuar?"}},Yt={common:Ut,map_mode:qt,validation:Kt,tile:Ht,icon:Gt,unit:Bt,popups:Xt,editor:Zt},Jt=Object.freeze({__proto__:null,common:Ut,map_mode:qt,validation:Kt,tile:Ht,icon:Gt,unit:Bt,popups:Xt,editor:Zt,default:Yt}),Wt={version:"Versio",invalid_configuration:"Virheellinen määritys {0}",description:"Kortti, jolla voit hallita imuriasi",old_configuration:"Vanha rakenne havaittu. Muokkaa rakenne viimeisimmän skeeman mukaiseksi tai luo uusi kortti.",old_configuration_migration_link:"Migraatio-ohje"},Qt={invalid:"Virheellinen malli!",vacuum_goto:"Pin & Go",vacuum_goto_predefined:"Pisteet",vacuum_clean_segment:"Huoneet",vacuum_clean_point:"Puhdista piste",vacuum_clean_point_predefined:"Pisteet",vacuum_clean_zone:"Aluepuhdistus",vacuum_clean_zone_predefined:"Alueet",vacuum_follow_path:"Reitti"},ei={preset:{entity:{missing:"Puuttuva ominaisuus: entity"},preset_name:{missing:"Puuttuva ominaisuus: preset_name"},platform:{invalid:"Virheellinen imurin alusta: {0}"},map_source:{missing:"Puuttuva ominaisuus: map_source",none_provided:"Ei kameraa eikä kuvaa",ambiguous:"Vain yksi karttalähde sallittu"},calibration_source:{missing:"Puuttuva ominaisuus: calibration_source",ambiguous:"Vain yksi kalibrointilähde on sallittu",none_provided:"Kalibrointilähde puuttuu",calibration_points:{invalid_number:"Tarvitaan täsmälleen 3 tai 4 kalibrointipistettä",missing_map:"Jokaisen kalibrointipisteen tulee sisältää karttakoordinaatit",missing_vacuum:"Jokaisen kalibrointipisteen tulee sisältää imurikoordinaatit",missing_coordinate:"Kartta- ja imurikalibrointipisteiden tulee sisältää sekä x- että y-koordinaatit"}},icons:{invalid:"Virhe määrityksessä: icons",icon:{missing:"Jokaisen kuvakeluettelon merkinnän tulee sisältää kuvakeominaisuus"}},tiles:{invalid:"Virhe määrityksessä: tiles",entity:{missing:"Jokaisen ruutuluettelon merkinnän on sisällettävä entiteetti tai sisäinen muuttuja"},label:{missing:"Jokaisen ruutuluettelon merkinnän on sisällettävä tunniste"}},map_modes:{invalid:"Virhe määrityksessä: map_modes",icon:{missing:"Karttatilan kuvake puuttuu"},name:{missing:"Karttatilan nimi puuttuu"},template:{invalid:"Virheellinen malli: {0}"},predefined_selections:{not_applicable:"Tila {0} ei tue ennalta määritettyjä valintoja",zones:{missing:"Alueiden määritys puuttuu",invalid_parameters_number:"Jokaisella alueella on oltava 4 parametria"},points:{position:{missing:"Pisteiden määritys puuttuu",invalid_parameters_number:"Jokaisella pisteellä on oltava 2 parametria"}},rooms:{id:{missing:"Huoneen id puuttuu",invalid_format:"Virheellinen huoneen id: {0}"},outline:{invalid_parameters_number:"Jokaisella huoneen ääriviivan pisteellä on oltava 2 parametria"}},label:{x:{missing:"Tunnisteella on oltava x-ominaisuus"},y:{missing:"Tunnisteella on oltava y-ominaisuus"},text:{missing:"Tunnisteella on oltava tekstiominaisuus"}},icon:{x:{missing:"Kuvakkeella on oltava x-ominaisuus"},y:{missing:"Kuvakkeella on oltava y-ominaisuus"},name:{missing:"Kuvakkeella on oltava nimiominaisuus"}}},service_call_schema:{missing:"Puuttuva palvelukutsuskeema",service:{missing:"Palvelukutsuskeeman tulee sisältää palvelu",invalid:"Virheellinen palvelu: {0}"}}}},invalid_entities:"Virheelliset entiteetit:",invalid_calibration:"Virheellinen kalibrointi, tarkista asetukset"},ti={status:{label:"Tila",value:{starting:"Käynnistetään","charger disconnected":"Laturi irroitettu",idle:"Lepotila","remote control active":"Kaukosäädin aktiivinen",cleaning:"Puhdistetaan","returning home":"Palataan telakkaan","manual mode":"Manuaalinen tila",charging:"Ladataan","charging problem":"Latausvirhe",paused:"Tauotettu","spot cleaning":"Kohdan puhdistus",error:"Virhe","shutting down":"Sammutetaan",updating:"Päivitetään",docking:"Telakoidutaan","going to target":"Mennään kohteeseen","zoned cleaning":"Aluepuhdistus","segment cleaning":"Segmentin puhdistus","emptying the bin":"Tyhjennetään säiliötä","charging complete":"Lataus valmis","device offline":"Laite poissa päältä"}},battery_level:{label:"Akku"},fan_speed:{label:"Tuulettimen nopeus",value:{silent:"Hiljainen",standard:"Vakio",medium:"Keskinopeus",turbo:"Turbo",auto:"Auto",gentle:"Kevyt"}},sensor_dirty_left:{label:"Anturit jäljellä"},filter_left:{label:"Suodatin jäljellä"},main_brush_left:{label:"Pääharja jäljellä"},side_brush_left:{label:"Sivuharja jäljellä"},cleaning_count:{label:"Puhdistusmäärä"},cleaned_area:{label:"Puhdistettu alue"},total_cleaned_area:{label:"Puhdistettu alue yhteensä"},cleaning_time:{label:"Puhdistusaika"},total_cleaning_time:{label:"Kokonaispuhdistusaika"},mop_left:{label:"Moppi jäljellä"},bin_full:{label:"Säiliö täynnä",value:{true:"Kyllä",false:"Ei"}},bin_present:{label:"Säiliö löytyy",value:{true:"Kyllä",false:"Ei"}},water_volume:{label:"Veden määrä"},mop_pad_humidity:{label:"Moppi tyyny"}},ii={vacuum_start:"Käynnistä",vacuum_pause:"Tauko",vacuum_stop:"Pysäytä",vacuum_return_to_base:"Palaa telakkaan",vacuum_clean_spot:"Siivoa kohta",vacuum_locate:"Paikanna",vacuum_set_fan_speed:"Vaihda tuulettimen nopeutta"},ai={hour_shortcut:"t",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},ni={success:"Onnistui!",no_selection:"Valintoja ei annettu",failed:"Virhe kutsuessa palvelua"},oi={description:{text:"Visuaalinen editori tukee vain peruskokoonpanoa. Käytä YAML-tilaa edistyneempään asennukseen."},label:{name:"Otsikko (valinnainen)",entity:"Imuri entiteetti (vaadittu)",camera:"Kamera entiteetti (vaadittu)",vacuum_platform:"Imurin alusta (vaadittu)",map_locked:"Kartta lukittu (valinnainen)",two_finger_pan:"Liikuta karttaa kahdella sormella (valinnainen)",platforms_documentation:"Valitun alustan dokumentaatio ({0})",selection:"Valinta:",copy:"Kopioi",copied:"Kopioitu!",set_static_config:"Luo staattiset asetukset",config_set:"Määritykset asetettu!\nMuokkaa sitä avaamalla asetuseditori.",config_set_failed:"Konfiguroinnin päivitys epäonnistui.",generate_rooms_config:"Luo huoneiden asetukset",copy_service_call:"Kopioi palvelukutsu"},alerts:{set_static_config:"Käytä tätä toimintoa vain, jos haluat säätää automaattisesti luotuja määrityksiä manuaalisesti.\nJatketaanko?"}},ri={common:Wt,map_mode:Qt,validation:ei,tile:ti,icon:ii,unit:ai,popups:ni,editor:oi},si=Object.freeze({__proto__:null,common:Wt,map_mode:Qt,validation:ei,tile:ti,icon:ii,unit:ai,popups:ni,editor:oi,default:ri}),li={version:"Version",invalid_configuration:"Configuration invalide {0}",description:"Une carte qui vous permet de contrôler votre robot aspirateur",old_configuration:"Ancienne configuration détectée. Ajustez votre configuration à la nouvelle version ou récréez totalement une nouvelle carte.",old_configuration_migration_link:"Guide de migration"},ci={invalid:"Template incorrect !",vacuum_goto:"Cible",vacuum_goto_predefined:"Points",vacuum_clean_segment:"Pièces",vacuum_clean_point:"Nettoyage ciblé",vacuum_clean_point_predefined:"Points",vacuum_clean_zone:"Nettoyage de zone",vacuum_clean_zone_predefined:"Liste des zones",vacuum_follow_path:"Chemin"},di={preset:{entity:{missing:"Paramètre manquant : entity"},preset_name:{missing:"Paramètre manquant : preset_name"},platform:{invalid:"Plateforme incorrecte : {0}"},map_source:{missing:"Paramètre manquant : map_source",none_provided:"Aucune caméra ou image fournie",ambiguous:"Une seule source de carte autorisée"},calibration_source:{missing:"Paramètre manquant : calibration_source",ambiguous:"Une seule source de calibration autorisée",none_provided:"Aucune source de calibration fournie",calibration_points:{invalid_number:"3 ou 4 points de calibration sont nécessaires",missing_map:"Chaque point de calibration doit avoir des coordonnées de carte",missing_vacuum:"Chaque point de calibration doit avoir des coordonnées de robot",missing_coordinate:"Tous les points de calibration doivent avoir des coordonnées x et y"}},icons:{invalid:"Erreur de configuration : icônes",icon:{missing:"Chaque élément de la liste d'icônes doit avoir une propriété « icon »"}},tiles:{invalid:"Erreur de configuration : tuiles",entity:{missing_outdated_translation:"Chaque élément de la liste de tuiles doit avoir une propriété « entity »"},label:{missing:"Chaque élément de la liste de tuiles doit avoir une propriété « label »"}},map_modes:{invalid:"Erreur de configuration : modes de carte",icon:{missing:"Icône de mode de carte manquante"},name:{missing:"Nom de mode de carte manquant"},template:{invalid:"Template incorrect : {0}"},predefined_selections:{not_applicable:"Ce mode {0} ne supporte pas les sélections prédéfinies",zones:{missing:"Configuration des zones manquante",invalid_parameters_number:"Chaque zone doit avoir 4 paramètres"},points:{position:{missing:"Configuration des points manquante",invalid_parameters_number:"Chaque point doit avoir 2 paramètres"}},rooms:{id:{missing:"id de pièce manquant",invalid_format:"id de pièce incorrect : {0}"},outline:{invalid_parameters_number:"Chaque point de contour de pièce doit avoir 2 paramètres"}},label:{x:{missing:"L'étiquette doit avoir une propriété « x »"},y:{missing:"L'étiquette doit avoir une propriété « y »"},text:{missing:"L'étiquette doit avoir une propriété « text »"}},icon:{x:{missing:"L'icône doit avoir une propriété x property"},y:{missing:"L'icône doit avoir une propriété y property"},name:{missing:"L'icône doit avoir une propriété « name »"}}},service_call_schema:{missing:"Schema d'appel du service manquant",service:{missing:"Le schema doit contenir un service",invalid:"Service incorrect : {0}"}}}},invalid_entities:"Entités incorrectes :",invalid_calibration:"Calibration incorrecte, vérifiez votre configuration"},ui={status:{label:"Statut",value:{starting:"Démarrage...","charger disconnected":"Chargeur déconnecté",idle:"Inactif","remote control active":"Télécommande active",cleaning:"Nettoyage","returning home":"Retour à la station","manual mode":"Mode manuel",charging:"En charge","charging problem":"Problème de chargement",paused:"En pause","spot cleaning":"Nettoyage ciblé",error:"Erreur","shutting down":"Arrêt en cours...",updating:"Mise à jour",docking:"Retour à la station","going to target":"En route vers la cible","zoned cleaning":"Nettoyage de zone","segment cleaning":"Nettoyage de pièce","emptying the bin":"Vidage du réservoir","charging complete":"Chargement terminé","device offline":"Hors ligne"}},battery_level:{label:"Batterie"},fan_speed:{label:"Puissance",value:{silent:"Silencieux",standard:"Standard",medium:"Moyen",turbo:"Turbo",auto:"Auto",gentle:"Calme"}},sensor_dirty_left:{label:"Capteurs"},filter_left:{label:"Filtre"},main_brush_left:{label:"Brosse principale"},side_brush_left:{label:"Brosse latérale"},cleaning_count:{label:"Nombre de nettoyages"},cleaned_area:{label:"Surface nettoyée"},cleaning_time:{label:"Durée de nettoyage"},mop_left:{label:"Serpillère"}},mi={vacuum_start:"Démarrage",vacuum_pause:"Pause",vacuum_stop:"Stop",vacuum_return_to_base:"Retour à la station",vacuum_clean_spot:"Nettoyage ciblé",vacuum_locate:"Localiser",vacuum_set_fan_speed:"Changer la puissance"},pi={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},_i={success:"Réussi !",no_selection:"Sélection non fournie",failed:"L'appel au service a échoué"},vi={description:{text:"Cet éditeur visuel ne permet qu'une configuration de base. Pour un paramétrage plus avancé, utilisez le mode YAML."},label:{name:"Titre (optionnel)",entity:"Entité de l'aspirateur (obligatoire)",camera:"Entité de la caméra (obligatoire)",vacuum_platform:"Plateforme (obligatoire)",map_locked:"Carte verrouillée (optionnel)",two_finger_pan:"Déplacement à deux doigts (optionnel)"}},gi={common:li,map_mode:ci,validation:di,tile:ui,icon:mi,unit:pi,popups:_i,editor:vi},hi=Object.freeze({__proto__:null,common:li,map_mode:ci,validation:di,tile:ui,icon:mi,unit:pi,popups:_i,editor:vi,default:gi}),fi={version:"גרסה",invalid_configuration:"תצורה לא חוקית {0}",description:"כרטיס המאפשר לך לשלוט בשואב שלך",old_configuration:"זוהתה תצורה ישנה. יש להתאים את התצורה שלך לסכמה העדכנית ביותר או ליצור כרטיס חדש מההתחלה.",old_configuration_migration_link:"מדריך להגירה"},bi={invalid:"תבנית לא חוקית!",vacuum_goto:"נעץ וסע",vacuum_goto_predefined:"נקודות",vacuum_clean_segment:"חדרים",vacuum_clean_point:"ניקוי נקודה",vacuum_clean_point_predefined:"נקודות",vacuum_clean_zone:"ניקוי אזור",vacuum_clean_zone_predefined:"רשימת אזורים",vacuum_follow_path:"נתיב"},yi={preset:{entity:{missing:"חסר מאפיין: ישות"},preset_name:{missing:"חסר מאפיין: preset_name"},platform:{invalid:"פלטפורמת שואב לא חוקית: {0}"},map_source:{missing:"חסר מאפיין: map_source",none_provided:"לא סופקה אף תמונה",ambiguous:"ניתן להשתמש במקור מפה אחד בלבד"},calibration_source:{missing:"חסר מאפיין: calibration_source",ambiguous:"מותר מקור כיול אחד בלבד",none_provided:"לא סופק מקור כיול",calibration_points:{invalid_number:"דרושות בדיוק 3 או 4 נקודות כיול",missing_map:"כל נקודת כיול חייבת להכיל קואורדינטות מפה",missing_vacuum:"כל נקודת כיול חייבת להכיל קואורדינטות שואב",missing_coordinate:"נקודות כיול במפה ובשואב חייבות להכיל גם קואורדינטות x וגם y"}},icons:{invalid:"שגיאת תצורה: סמלילים",icon:{missing:"כל כניסה של רשימת הסמלילים חייבת להכיל מאפיין סמליל"}},tiles:{invalid:"שגיאת תצורה: אריחים",entity:{missing:"כל ערך של רשימת אריחים חייב להכיל ישות"},label:{missing:"כל כניסה של רשימת אריחים חייבת להכיל תווית"}},map_modes:{invalid:"שגיאת תצורה: map_modes",icon:{missing:"חסר סמליל של מצב מפה"},name:{missing:"חסר שם של מצב מפה"},template:{invalid:"תבנית לא חוקית: {0}"},predefined_selections:{not_applicable:"מצב {0} אינו תומך בבחירות מוגדרות מראש",zones:{missing:"תצורת אזורים חסרים",invalid_parameters_number:"כל אזור חייב לכלול 4 פרמטרים"},points:{position:{missing:"תצורת נקודות חסרות",invalid_parameters_number:"לכל נקודה חייבת להיות 2 פרמטרים"}},rooms:{id:{missing:"מזהה חדר חסר",invalid_format:"מזהה חדר לא חוקי: {0}"},outline:{invalid_parameters_number:"כל נקודה של מתאר החדר חייבת להיות בעלת 2 פרמטרים"}},label:{x:{missing:"חייב להיות מאפיין x לתבנית"},y:{missing:"חייב להיות מאפיין y לתבנית"},text:{missing:"חייב להיות מאפיין שם לתבנית"}},icon:{x:{missing:"חייב להיות מאפיין x לסמליל"},y:{missing:"חייב להיות מאפיין y לסמליל"},name:{missing:"חייב להיות מאפיין שם לסמליל"}}},service_call_schema:{missing:"סכימת קריאת שירות חסרה",service:{missing:"סכימת קריאת השירות חייבת להכיל שירות",invalid:"שירות לא חוקי: {0}"}}}},invalid_entities:"ישויות לא חוקיות:",invalid_calibration:"כיול לא חוקי, אנא בדוק את התצורה שלך"},ki={status:{label:"סטטוס",value:{starting:"מתחיל","charger disconnected":"המטען מנותק",idle:"ממתין","remote control active":"שליטה מרוחק פעילה",cleaning:"מנקה","returning home":"חוזר הביתה","manual mode":"מצב ידני",charging:"טעינה","charging problem":"בעיית טעינה",paused:"מושהה","spot cleaning":"ניקוי נקודתי",error:"שגיאה","shutting down":"מתכבה",updating:"מתעדכן",docking:"בעגינה","going to target":"בדרך אל היעד","zoned cleaning":"ניקוי אזור","segment cleaning":"ניקוי מקטע","emptying the bin":"ריקון האשפה","charging complete":"טעינה הושלמה","device offline":"התקן לא מקוון"}},battery_level:{label:"סוללה"},fan_speed:{label:"מהירות מאוורר",value:{silent:"שקט",standard:"סטנדרט",medium:"בינוני",turbo:"טורבו",auto:"אוטומט",gentle:"עדין"}},sensor_dirty_left:{label:"נותר לחיישנים"},filter_left:{label:"נותר למסנן"},main_brush_left:{label:"נותר למברשת ראשית"},side_brush_left:{label:"נותר למברשת צד"},cleaning_count:{label:"כמות נקיונות"},cleaned_area:{label:"שטח שנוקה"},total_cleaned_area:{label:"סך השטח שנוקה"},cleaning_time:{label:"זמן ניקיון"},total_cleaning_time:{label:"סך זמן הניקיון"},mop_left:{label:"נותר למטלית"},bin_full:{label:"פח מלא",value:{true:"כן",false:"לא"}},bin_present:{label:"מיכל קיים",value:{true:"כן",false:"לא"}},water_volume:{label:"רמת מים"},mop_pad_humidity:{label:"משטח ניגוב"}},Ai={vacuum_start:"התחלה",vacuum_pause:"השהייה",vacuum_stop:"עצירה",vacuum_return_to_base:"חוזר לתחנת עגינה",vacuum_clean_spot:"ניקוי נקודה",vacuum_locate:"איתור",vacuum_set_fan_speed:"שינוי מהירות מאוורר"},xi={hour_shortcut:"ש",meter_shortcut:"מ",meter_squared_shortcut:'מ"ר',minute_shortcut:"דק"},Ei={success:"הצליח!",no_selection:"לא סופקה בחירה",failed:"התקשרות לשירות נכשלה"},wi={description:{text:"עורך חזותי זה תומך רק בתצורה בסיסית.להגדרה מתקדמת יותר יש להשתמש במצב YAML."},label:{name:"כותרת (אופציונלי)",entity:"יישות שואב (נדרש)",camera:"יישות מצלמה (נדרש)",vacuum_platform:"פלטפורמת שואב (נדרש)",map_locked:"נעילת מפה (אופציונלי)",two_finger_pan:"צביטת שתי אצבעות (אופציונלי)",platforms_documentation:"תיעוד הפלטפורמה שנבחרה ({0})",selection:"בחירה:",copy:"העתקה",copied:"הועתק!",set_static_config:"יצירת תצורה סטטית",config_set:"תצורה הוגדרה!\nיש לפתוח את עורך התצורה כדי להתאים אותו.",config_set_failed:"עדכון התצורה נכשל.",generate_rooms_config:"יצירת תצורת חדרים",copy_service_call:"העתקת קריאת שירות"},alerts:{set_static_config:"עליך להשתמש בפונקציונליות זו רק אם ברצונך להתאים באופן ידני את התצורה שנוצרה באופן אוטומטי.\nלהמשיך?"}},zi={common:fi,map_mode:bi,validation:yi,tile:ki,icon:Ai,unit:xi,popups:Ei,editor:wi},Pi=Object.freeze({__proto__:null,common:fi,map_mode:bi,validation:yi,tile:ki,icon:Ai,unit:xi,popups:Ei,editor:wi,default:zi}),Ti={version:"Verzió",invalid_configuration:"Érvénytelen konfiguráció {0}",description:"Egy kártya, amely segítségével térképet használva irányíthatja a porszívóját",old_configuration:"Régi konfiguráció észlelve. Módosítsa a konfigurációt a legfrissebb séma szerint, vagy hozzon létre egy új kártyát.",old_configuration_migration_link:"Áttelepítési útmutató"},Si={invalid:"Érvénytelen sablon!",vacuum_goto:"Jelölj & menj",vacuum_goto_predefined:"Pontok",vacuum_clean_segment:"Szobák",vacuum_clean_point:"Tisztítási pont",vacuum_clean_point_predefined:"Pontok",vacuum_clean_zone:"Zóna takarítás",vacuum_clean_zone_predefined:"Zónák listája",vacuum_follow_path:"Útvonal"},Mi={preset:{entity:{missing:"Hiányzó tulajdonság: entity"},preset_name:{missing:"Hiányzó tulajdonság: preset_name"},platform:{invalid:"Érvénytelen porszívó platform: {0}"},map_source:{missing:"Hiányzó tulajdonság: map_source",none_provided:"Nem áll rendelkezésre kamera vagy kép",ambiguous:"Csak egy térképforrás engedélyezett"},calibration_source:{missing:"Hiányzó tulajdonság: calibration_source",ambiguous:"Csak egy kalibrálási forrás engedélyezett",none_provided:"Nincs kalibrálási forrás megadva",calibration_points:{invalid_number:"Pontosan 3 vagy 4 kalibrálási pont szükséges",missing_map:"Minden kalibrálási pontnak tartalmaznia kell térkép koordinátákat",missing_vacuum:"Minden kalibrálási pontnak tartalmaznia kell porszívó koordinátákat",missing_coordinate:"A térkép- és porszívó kalibrálási pontoknak mindkét x és y koordinátát tartalmazniuk kell"}},icons:{invalid:"Hiba a konfigurációban: icons",icon:{missing:"Az ikonok listájának minden bejegyzésének tartalmaznia kell ikon tulajdonságot"}},tiles:{invalid:"Hiba a konfigurációban: tiles",entity:{missing:"A csempék listájának minden bejegyzésének tartalmaznia kell entitást vagy belső változót"},label:{missing:"A csempék listájának minden bejegyzésének tartalmaznia kell címkét"}},map_modes:{invalid:"Hiba a konfigurációban: map_modes",icon:{missing:"Hiányzó térképmód ikon"},name:{missing:"Hiányzó térképmód név"},template:{invalid:"Érvénytelen sablon: {0}"},predefined_selections:{not_applicable:"A(z) {0} mód nem támogatja az előre meghatározott kijelöléseket",zones:{missing:"Hiányzó zónák konfigurációja",invalid_parameters_number:"Minden zónának 4 paraméterrel kell rendelkeznie"},points:{position:{missing:"Hiányzó pontok konfigurációja",invalid_parameters_number:"Minden pontnak 2 paraméterrel kell rendelkeznie"}},rooms:{id:{missing:"Hiányzó szoba azonosító",invalid_format:"Érvénytelen szoba azonosító: {0}"},outline:{invalid_parameters_number:"A helyiség körvonalának minden pontján 2 paraméterrel kell rendelkeznie"}},label:{x:{missing:"A címkének tartalmaznia kell az x tulajdonságot"},y:{missing:"A címkének tartalmaznia kell az y tulajdonságot"},text:{missing:"A címkének tartalmaznia kell szöveg tulajdonságot"}},icon:{x:{missing:"Az ikonnak tartalmaznia kell at x tulajdonságot"},y:{missing:"Az ikonnak tartalmaznia kell az y tulajdonságot"},name:{missing:"Az ikonnak tartalmaznia kell név tulajdonságot"}}},service_call_schema:{missing:"Hiányzó szolgáltatáshívási séma",service:{missing:"A szolgáltatáshívási sémának tartalmaznia kell a szolgáltatást",invalid:"Érvénytelen szolgáltatás: {0}"}}}},invalid_entities:"Érvénytelen entitások:",invalid_calibration:"Érvénytelen kalibrálás, kérjük, ellenőrizze a konfigurációját"},Ni={status:{label:"Állapot",value:{starting:"Indítás","charger disconnected":"Töltő leválasztva",idle:"Tétlen","remote control active":"Távirányítás aktív",cleaning:"Takarítás","returning home":"Hazatérés","manual mode":"Kézi üzemmód",charging:"Töltés","charging problem":"Töltési probléma",paused:"Szüneteltetve","spot cleaning":"Célzott takarítás",error:"Hiba","shutting down":"Kikapcsolás",updating:"Frissítés",docking:"Dokkolás","going to target":"Cél felé halad","zoned cleaning":"Zóna takarítás","segment cleaning":"Szegmens takarítás","emptying the bin":"Kosár ürítés","charging complete":"Töltés befejezve","device offline":"Eszköz nem elérhető"}},battery_level:{label:"Akkumulátor"},fan_speed:{label:"Ventilátor sebessége",value:{silent:"Csendes",standard:"Normál",medium:"Közepes",turbo:"Turbó",auto:"Automatikus",gentle:"Gyengéd"}},sensor_dirty_left:{label:"Érzékelők"},filter_left:{label:"Szűrő"},main_brush_left:{label:"Főkefe"},side_brush_left:{label:"Oldalkefe"},cleaning_count:{label:"Takarítások száma"},cleaned_area:{label:"Takarított terület"},total_cleaned_area:{label:"Összesen takarított terület"},cleaning_time:{label:"Takarítási idő"},total_cleaning_time:{label:"Összes takarítási idő"},mop_left:{label:"Felmosó"},bin_full:{label:"Kosár megtelt",value:{true:"Igen",false:"Nem"}},bin_present:{label:"Kosár behlyezve",value:{true:"Igen",false:"Nem"}},water_volume:{label:"Víz mennyisége"},mop_pad_humidity:{label:"Felmosópárna"}},Oi={vacuum_start:"Indítás",vacuum_pause:"Szünet",vacuum_stop:"Leállítás",vacuum_return_to_base:"Visszatérés a dokkolóhoz",vacuum_clean_spot:"Célzott takarítás",vacuum_locate:"Porszívó megkeresése",vacuum_set_fan_speed:"Ventilátor sebesség módosítása"},Ci={hour_shortcut:"ó",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"p"},Ri={success:"Siker!",no_selection:"Nincs kiválasztva",failed:"Nem sikerült meghívni a szolgáltatást"},Li={description:{text:"Ez a vizuális szerkesztő csak egy alap konfigurációt támogat. Továbbfejlesztett beállításhoz használja a YAML módot."},label:{name:"Cím (opcionális)",entity:"Porszívó entitás (kötelező)",camera:"Kamera entitás (kötelező)",vacuum_platform:"Porszívó platform (kötelező)",map_locked:"Térkép zárolva (opcionális)",two_finger_pan:"Kétujjas pásztázás (opcionális)",platforms_documentation:"Kiválasztott platform dokumentációja ({0})",selection:"Kiválasztás:",copy:"Másolás",copied:"Másolva!",set_static_config:"Statikus konfiguráció generálása",config_set:"Konfiguráció beállítva!\nNyissa meg a konfiguráció szerkesztőt a beállítások módosításához.",config_set_failed:"Nem sikerült a konfigurációt frissíteni.",generate_rooms_config:"Szobák konfigurációjának generálása",copy_service_call:"Szolgáltatáshívás másolása"},alerts:{set_static_config:"Ezt a funkcionalitást csak akkor kell használni, ha manuálisan szeretné módosítani az automatikusan generált konfigurációt.\nFolytatja?"}},$i={common:Ti,map_mode:Si,validation:Mi,tile:Ni,icon:Oi,unit:Ci,popups:Ri,editor:Li},ji=Object.freeze({__proto__:null,common:Ti,map_mode:Si,validation:Mi,tile:Ni,icon:Oi,unit:Ci,popups:Ri,editor:Li,default:$i}),Ii={version:"Útgáfa",invalid_configuration:"Ógildar stillingar {0}",description:"Spjald sem leyfir þér að stjórna ryksuguvélmenni þínu",old_configuration:"Gamlar stillingar fundust. Uppfærðu stillingarnar fyrir nýjustu útgáfu eða búðu til nýtt spjald frá grunni.",old_configuration_migration_link:"Aðlögunar leiðbeiningar"},Di={invalid:"Ógilt sniðmát!",vacuum_goto:"Velja og af stað!",vacuum_goto_predefined:"Deplar",vacuum_clean_segment:"Herbergi",vacuum_clean_point:"Hreinn depill",vacuum_clean_point_predefined:"Deplar",vacuum_clean_zone:"Þrífa svæði",vacuum_clean_zone_predefined:"Svæðislistar",vacuum_follow_path:"Ferill"},Fi={preset:{entity:{missing:"Vantar einingu: entity"},preset_name:{missing:"Vantar einingu: preset_name"},platform:{invalid:"Rangt ryksugu sniðmát: {0}"},map_source:{missing:"Vantar einingu: map_source",none_provided:"Enginn myndavél né mynd er skráð",ambiguous:"Aðeins einn uppruni fyrir kort leyfður"},calibration_source:{missing:"Vantar einindi: calibration_source",ambiguous:"Aðeins ein kvörðunar stilling leyfð",none_provided:"Engin kvörðunarstilling er skilgreind",calibration_points:{invalid_number:":Þú verður að skilagreina nákvæmlega 3 eða 4 kvörðunar punkta",missing_map:"Hver punktur verður að vera hnit á kortinu",missing_vacuum:"Hver punktur á kortinu verður að vera hnit fyrir ryksuguna.",missing_coordinate:"Kort og ryksugu stillingar verða að innihalda x og y hnit"}},icons:{invalid:"Villa í stillingum: icons",icon:{missing:'Hver færsla fyrir smámynd verður að innihalda "icon" stillingu'}},tiles:{invalid:"Villa í stillingum: tiles",entity:{missing_outdated_translation:'Hver færsla á lista verður að innihalda "entity"'},label:{missing:'Hver færsla á lista verður að innihalda "label"'}},map_modes:{invalid:"Villa í stillingum: map_modes",icon:{missing:'Það vantar "icon" fyrir kortaham'},name:{missing:'Það vantar "name" einindið fyrir kortaham'},template:{invalid:"Rangt sniðmát: {0}"},predefined_selections:{not_applicable:"Hamur {0} styður ekki fyrirfram skilgreint val",zones:{missing:"Það vantar skilgreiningar fyrir svæði",invalid_parameters_number:"Hvert svæði verður að hafa 4 færibreytur"},points:{position:{missing:"Það vantar stillingar fyrir hnit",invalid_parameters_number:"Hvert hnit verður að hafa 2 færibreytur"}},rooms:{id:{missing:"Það vantar auðkenni herbergis",invalid_format:"Vitlaust auðkenni : {0}"},outline:{invalid_parameters_number:"Hvert hnit í útlínum fyrir herbergi verður að innihalda 2 færibreytur"}},label:{x:{missing:"Merkimiði verður að innihalda x einingu"},y:{missing:"Merkimiði verður að innihalda y einingu"},text:{missing:'Merkimiði verður að innihalda "text" einingu'}},icon:{x:{missing:"Smámynd verður að innihalda x einingu"},y:{missing:"Smámynd verður að innihalda y einingu"},name:{missing:'Smámynd verður að innihalda "name" einingu'}}},service_call_schema:{missing:"Skema fyrir þjónustukall vantar",service:{missing:'Skema fyrir þjónustukall verður að innihalda "service"',invalid:"Röng þjónusta: {0}"}}}},invalid_entities:"Röng einindi:",invalid_calibration:"Röng kvörðun, athugaðu stillingarnar þínar"},Vi={status:{label:"Staða",value:{starting:"Ræsi","charger disconnected":"Hleðslutæki aftengt",idle:"Aðgerðarlaus","remote control active":"Fjarstýring virk",cleaning:"Að þrífa","returning home":"Á leiðinni heim","manual mode":"Handvirk stýring",charging:"Í hleðslu","charging problem":"Vandamál við hleðslu",paused:"Í bið","spot cleaning":"Hreinsa blett",error:"Villa","shutting down":"Slekk á",updating:"Uppfæri",docking:"Við hleðslustöð","going to target":"Fer á skotmark","zoned cleaning":"Þrífa svæði","segment cleaning":"Þrífa herbergi","emptying the bin":"Tæma ruslatunnu","charging complete":"Hleðslu lokið","device offline":"Tæki er ótengt"}},battery_level:{label:"Rafhlaða"},fan_speed:{label:"Viftuhraði",value:{silent:"Hljóðlátur",standard:"Venjulegur",medium:"Miðlungs",turbo:"Túrbó",auto:"Sjálfvirkt",gentle:"Þægilegur"}},sensor_dirty_left:{label:"Vegg og fallskynjarar eftir"},filter_left:{label:"Sía eftir"},main_brush_left:{label:"Aðalbursti eftir"},side_brush_left:{label:"Hliðarbursti eftir"},cleaning_count:{label:"Fjöldi þrifa"},cleaned_area:{label:"Svæði þrifið"},cleaning_time:{label:"Þriftími"},mop_left:{label:"Moppa eftir"}},Ui={vacuum_start:"Ræsa",vacuum_pause:"Gera hlé",vacuum_stop:"Stoppa",vacuum_return_to_base:"Tilbaka á stöð",vacuum_clean_spot:"Hreinsa blett",vacuum_locate:"Finna",vacuum_set_fan_speed:"Breyta viftuhraða"},qi={hour_shortcut:"k",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"mín"},Ki={success:"Virkaði!",no_selection:"Ekkert val",failed:"Villa við þjónustukall"},Hi={description:{text:"Sjónrænn ritill styður aðeins grunn stillingar. Fyrir ítarstillingar, notaðu YAML ham."},label:{name:"Titill (valkvætt)",entity:"Vacuum eining (nauðsynlegt)",camera:"Camera eining (nauðsynlegt)",vacuum_platform:"Vacuum platform (nauðsynlegt)",map_locked:"Læsa korti (valkvætt)",two_finger_pan:"Val með 2 fingrum (valkvætt)"}},Gi={common:Ii,map_mode:Di,validation:Fi,tile:Vi,icon:Ui,unit:qi,popups:Ki,editor:Hi},Bi=Object.freeze({__proto__:null,common:Ii,map_mode:Di,validation:Fi,tile:Vi,icon:Ui,unit:qi,popups:Ki,editor:Hi,default:Gi}),Xi={version:"Versione",invalid_configuration:"Configurazione non valida {0}",description:"Una card per controllare il tuo robot aspirapolvere",old_configuration:"Trovata una vecchia configurazione. Correggi la configurazione all'ultima possibile o crea una nuova card.",old_configuration_migration_link:"Guida Migrazione"},Zi={invalid:"Template non valido!",vacuum_goto:"Pin & Go",vacuum_goto_predefined:"Punti",vacuum_clean_segment:"Stanze",vacuum_clean_point:"Punto di pulizia",vacuum_clean_point_predefined:"Punti",vacuum_clean_zone:"Pulizia a Zone",vacuum_clean_zone_predefined:"Lista Zone",vacuum_follow_path:"Percorso"},Yi={preset:{entity:{missing:"Proprietà Mancante: entity"},preset_name:{missing:"Proprietà Mancante: preset_name"},platform:{invalid:"Piattaforma aspirapolvere non valida: {0}"},map_source:{missing:"Proprietà Mancante: map_source",none_provided:"Inserire camera o immagine",ambiguous:"È consentita una sola sorgente della mappa"},calibration_source:{missing:"Proprietà Mancante: calibration_source",ambiguous:"È consentita una solo una sorgente di calibrazione",none_provided:"Nessuna fonte di calibrazione fornita",calibration_points:{invalid_number:"Esattamente 3 o 4 punti di calibrazione richiesti",missing_map:"Ogni punto di calibrazione deve contenere le coordinate della mappa",missing_vacuum:"Ciascun punto di calibrazione deve contenere le coordinate dell'aspirapolvere",missing_coordinate:"I punti di calibrazione della mappa e dell'aspirapolvere devono contenere sia le coordinate x che y"}},icons:{invalid:"Errore nella configurazione: icons",icon:{missing:"Ogni voce dell'elenco delle icone deve contenere la proprietà dell'icona"}},tiles:{invalid:"Errore nella configurazione: tiles",entity:{missing_outdated_translation:"Ogni voce dell'elenco 'tile' deve contenere una entity"},label:{missing:"Ogni voce dell'elenco 'tile' deve contenere una label"}},map_modes:{invalid:"Errore nella configurazione: map_modes",icon:{missing:"Icona della modalità mappa mancante"},name:{missing:"Nome della modalità mappa mancante"},template:{invalid:"Template non valido: {0}"},predefined_selections:{not_applicable:"Modalità {0} non supporta le selezioni predefinite",zones:{missing:"Configurazione zone mancante",invalid_parameters_number:"Ogni zona deve avere 4 parametri"},points:{position:{missing:"Configurazione punti mancante",invalid_parameters_number:"Ogni punto deve avere 2 parametri"}},rooms:{id:{missing:"ID stanza mancante",invalid_format:"ID stanza non valido: {0}"},outline:{invalid_parameters_number:"Ogni punto del contorno della stanza deve avere 2 parametri"}},label:{x:{missing:"Label deve avere la proprietà x"},y:{missing:"Label deve avere la proprietà y"},text:{missing:"Label deve avere la proprietà text"}},icon:{x:{missing:"Icon deve avere la proprietà x"},y:{missing:"Icon deve avere la proprietà y"},name:{missing:"Icon deve avere la proprietà name"}}},service_call_schema:{missing:"Schema della chiamata al servizio mancante",service:{missing:"La chiamata al servizio deve contenere un servizio",invalid:"Servizio non valido: {0}"}}}},invalid_entities:"Entità non valide:",invalid_calibration:"Calibrazione non valida, per favore controlla la configurazione"},Ji={status:{label:"Stato",value:{starting:"Avvio","charger disconnected":"Caricabatterie scollegato",idle:"Riposo","remote control active":"Controllo remoto attivo",cleaning:"Pulizia","returning home":"Ritorno alla base","manual mode":"Modalità Manuale",charging:"Caricamento","charging problem":"Problema di ricarica",paused:"Pausa","spot cleaning":"Pulizia a punti",error:"Errore","shutting down":"Spegnimento",updating:"Aggiornamento in corso",docking:"In base","going to target":"Andando al punto","zoned cleaning":"Pulizia a zone","segment cleaning":"Pulizia segmenti","emptying the bin":"Svuotare il contenitore","charging complete":"Carica Completata","device offline":"Device offline"}},battery_level:{label:"Batteria"},fan_speed:{label:"Velocità Ventola",value:{silent:"Silenzioso",standard:"Standard",medium:"Media",turbo:"Turbo",auto:"Auto",gentle:"Delicato"}},sensor_dirty_left:{label:"Sensori"},filter_left:{label:"Filtro"},main_brush_left:{label:"Spazzola Principale"},side_brush_left:{label:"Spazzola laterale"},cleaning_count:{label:"Conteggio pulizia"},cleaned_area:{label:"Area pulita"},total_cleaned_area:{label:"Area totale pulita"},cleaning_time:{label:"Tempo di pulizia"},total_cleaning_time:{label:"Tempo totale di pulizia"},mop_left:{label:"Panno"},bin_full:{label:"Cestino pieno",value:{true:"Si",false:"No"}},bin_present:{label:"Cestino presente",value:{true:"Si",false:"No"}},water_volume:{label:"Volume dell'acqua"},mop_pad_humidity:{label:"Umidità del panno"}},Wi={vacuum_start:"Avvia",vacuum_pause:"Pausa",vacuum_stop:"Stop",vacuum_return_to_base:"Ritorna alla base",vacuum_clean_spot:"Pulizia spot",vacuum_locate:"Localizza",vacuum_set_fan_speed:"Cambia velocità ventola"},Qi={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},ea={success:"Confermato!",no_selection:"Nessuna Selezione",failed:"Chiamata al servizio fallita"},ta={description:{text:"Questo editor visivo supporta solo una configurazione di base. Per una configurazione più avanzata usa la modalità YAML."},label:{name:"Titolo (opzionale)",entity:"Entità Aspirapolvere (obbligatorio)",camera:"Entità camera (obbligatorio)",vacuum_platform:"Piattaforma aspirapolvere (obbligatorio)",map_locked:"Blocco mappa (opzionale)",two_finger_pan:"Zoom a due dita (opzionale)",platforms_documentation:"Documentazione della piattaforma scelta ({0})",selection:"Selezione:",copy:"Copia",copied:"Copiato!",set_static_config:"Genera configurazione statica",config_set:"Configurazione impostata!\nApri l'editor di configurazione per modificarla.",config_set_failed:"Impossibile aggiornare la configurazione.",generate_rooms_config:"Genera configurazione delle stanze",copy_service_call:"Copia chiamata di servizio"},alerts:{set_static_config:"Dovresti utilizzare questa funzionalità solo se desideri regolare manualmente la configurazione generata automaticamente.\nContinuare?"}},ia={common:Xi,map_mode:Zi,validation:Yi,tile:Ji,icon:Wi,unit:Qi,popups:ea,editor:ta},aa=Object.freeze({__proto__:null,common:Xi,map_mode:Zi,validation:Yi,tile:Ji,icon:Wi,unit:Qi,popups:ea,editor:ta,default:ia}),na={version:"Versjon",invalid_configuration:"Ugyldig konfigurasjon {0}",description:"Et kort som lar deg kontrollere støvsugeren din",old_configuration:"Gammel konfigurasjon oppdaget. Rediger din konfigurasjon til nyeste skjema, eller lag et nytt kort.",old_configuration_migration_link:"Guide for migrering"},oa={invalid:"Ugyldig template!",vacuum_goto:"Klikk & Gå",vacuum_goto_predefined:"Punkter",vacuum_clean_segment:"Rom",vacuum_clean_point:"Rengjøringspunkt",vacuum_clean_point_predefined:"Punkter",vacuum_clean_zone:"Sonerengjøring",vacuum_clean_zone_predefined:"Soneliste",vacuum_follow_path:"Sti"},ra={preset:{entity:{missing:"Mangler egenskap: entity"},preset_name:{missing:"Mangler egenskap: preset_name"},platform:{invalid:"Ugyldig støvsugerplattform: {0}"},map_source:{missing:"Mangler egenskap: map_source",none_provided:"Ingen kamera eller bilder spesifisert",ambiguous:"Bare en kart-kilde er tillatt"},calibration_source:{missing:"Mangler egenskap: calibration_source",ambiguous:"Kun en kalibreringskilde tillatt",none_provided:"Ingen kalibreringskilde spesifisert",calibration_points:{invalid_number:"Eksakt 3 eller 4 kalibreringspunkter kreves",missing_map:"Hvert kalibreringspunkt må inneholde koordinater for kart",missing_vacuum:"Hvert kalibreringspunkt må inneholde koordinater for støvsuger",missing_coordinate:"Kalibreringspunkter for kart og støvsuger må inneholde både x og y koordinater"}},icons:{invalid:"Feil i konfigurasjon: icons",icon:{missing:"Hver post med icons må inneholde icon-egenskap"}},tiles:{invalid:"Feil i konfigurasjon: tiles",entity:{missing_outdated_translation:"Hver post med tiles må inneholde entity"},label:{missing:"Hver post med tiles må inneholde label"}},map_modes:{invalid:"Feil i konfigurasjon: map_modes",icon:{missing:"Ikon for map mode mangler"},name:{missing:"Navn for map mode mangler"},template:{invalid:"Ugyldig template: {0}"},predefined_selections:{not_applicable:"Modus {0} støtter ikke forhåndsdefinerte valg",zones:{missing:"Mangler sonens konfigurasjon",invalid_parameters_number:"Hver sone må ha 4 parametere"},points:{position:{missing:"Konfigurasjon av punktet mangler",invalid_parameters_number:"Hvert punkt må ha 2 parametere"}},rooms:{id:{missing:"Rommets id mangler",invalid_format:"Feil id på rom: {0}"},outline:{invalid_parameters_number:"Hvert punkt i romomrisset må ha 2 parametere"}},label:{x:{missing:"Label må ha egenskapen x"},y:{missing:"Label må ha egenskapen y"},text:{missing:"Label må ha egenskapen text"}},icon:{x:{missing:"Icon må ha egenskapen x"},y:{missing:"Icon må ha egenskapen y"},name:{missing:"Icon må ha egenskapen name"}}},service_call_schema:{missing:"Manglende service call schema",service:{missing:"Service call schema må inneholde service",invalid:"Ugyldig service: {0}"}}}},invalid_entities:"Ugyldige entiteter:",invalid_calibration:"Ugyldig kalibrering, vennligst se over din konfigurasjon"},sa={status:{label:"Status",value:{starting:"Starter","charger disconnected":"Lader frakoblet",idle:"Inaktiv","remote control active":"Fjernkontroll aktiv",cleaning:"Rengjøring","returning home":"På vei hjem","manual mode":"Manuell modus",charging:"Lader","charging problem":"Ladeproblem",paused:"Pause","spot cleaning":"Flekkrengjøring",error:"Feil","shutting down":"Slår av",updating:"Oppdaterer",docking:"Docking","going to target":"Går til destinasjon","zoned cleaning":"Sonerengjøring","segment cleaning":"Rengjøring av rom","emptying the bin":"Tømmer beholderen","charging complete":"Lading fullført","device offline":"Enhet offline"}},battery_level:{label:"Batteri"},fan_speed:{label:"Viftehastighet",value:{Silent:"Stille",Standard:"Standard",Medium:"Medium",Turbo:"Turbo",Auto:"Auto",Gentle:"Forsiktig"}},sensor_dirty_left:{label:"Sensorer igjen"},filter_left:{label:"Filter igjen"},main_brush_left:{label:"Hovedbørste igjen"},side_brush_left:{label:"Sidebørste igjen"},cleaning_count:{label:"Antall rengjøringer"},cleaned_area:{label:"Rengjort område"},cleaning_time:{label:"Rengjøringstid"},mop_left:{label:"Mopp igjen"}},la={vacuum_start:"Start",vacuum_pause:"Pause",vacuum_stop:"Stopp",vacuum_return_to_base:"Gå tilbake til basen",vacuum_clean_spot:"Flekkrengjøring",vacuum_locate:"Lokaliser",vacuum_set_fan_speed:"Endre viftehastighet"},ca={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},da={success:"Suksess!",no_selection:"Ingen valg er gitt",failed:"Kunne ikke kalle tjenesten"},ua={description:{text:"Denne visuelle editoren støtter bare en grunnleggende konfigurasjon. For mer avansert oppsett bruk YAML-modus."},label:{name:"Tittel (valgfritt)",entity:"Støvsuger-entitet (obligatorisk)",camera:"Kamera-entitet (obligatorisk)",vacuum_platform:"Støvsugerplattform (obligatorisk)",map_locked:"Låst kart (valgfritt)",two_finger_pan:"Panorering med to fingre (valgfritt)"}},ma={common:na,map_mode:oa,validation:ra,tile:sa,icon:la,unit:ca,popups:da,editor:ua},pa=Object.freeze({__proto__:null,common:na,map_mode:oa,validation:ra,tile:sa,icon:la,unit:ca,popups:da,editor:ua,default:ma}),_a={version:"Versie",invalid_configuration:"Ongeldige configuratie {0}",description:"Een kaart waarmee je jouw robotstofzuiger kunt bedienen.",old_configuration:"Oude configuratie gevonden. Pas je configuratie aan op basis van de nieuwe versie of maak een volledig nieuwe kaart.",old_configuration_migration_link:"Uitleg configuratie aanpassen"},va={invalid:"Ongeldig sjabloon!",vacuum_goto:"Pin & Go",vacuum_goto_predefined:"Punten",vacuum_clean_segment:"Kamers",vacuum_clean_point:"Schoonmaakpunten",vacuum_clean_point_predefined:"Punten",vacuum_clean_zone:"Zone schoonmaak",vacuum_clean_zone_predefined:"Zonelijst",vacuum_follow_path:"Pad"},ga={preset:{entity:{missing:"Ontbrekende parameter: entity"},preset_name:{missing:"Ontbrekende parameter: preset_name"},platform:{invalid:"Ongeldig stofzuigerplatform: {0}"},map_source:{missing:"Ontbrekende parameter: map_source",none_provided:"Geen camera of afbeelding opgegeven",ambiguous:"Slechts één kaartbron toegestaan"},calibration_source:{missing:"Ontbrekende parameter: calibration_source",ambiguous:"Slechts één kalibratiebron toegestaan",none_provided:"Geen kalibratiebron opgegeven",calibration_points:{invalid_number:"Precies 3 of 4 kalibratiepunten vereist",missing_map:"Elk kalibratiepunt moet kaart-coördinaten bevatten",missing_vacuum:"Elk kalibratiepunt moet stofzuiger coördinaten bevatten",missing_coordinate:"Kalibratiepunten van kaart en stofzuiger moeten zowel een X- als Y-coördinaat bevatten"}},icons:{invalid:"Fout in configuratie: icons",icon:{missing:"Elk item in de lijst moet de eigenschap « icon » bevatten"}},tiles:{invalid:"Fout in configuratie: tiles",entity:{missing_outdated_translation:"Elk item in de lijst moet de eigenschap « entity » bevatten"},label:{missing:"Elk item in de lijst moet de eigenschap « label » bevatten"}},map_modes:{invalid:"Fout in configuratie: map_modes",icon:{missing:"Pictogram van kaartmodus ontbreekt"},name:{missing:"Naam van kaartmodus ontbreekt"},template:{invalid:"Ongeldig sjabloon: {0}"},predefined_selections:{not_applicable:"Modus {0} ondersteunt geen vooraf gedefinieerde selecties",zones:{missing:"Zone-configuratie ontbreekt",invalid_parameters_number:"Elke zone moet 4 coördinaten hebben"},points:{position:{missing:"Puntenconfiguratie ontbreekt",invalid_parameters_number:"Elk punt moet 2 coördinaten hebben"}},rooms:{id:{missing:"Kamer-id ontbreekt",invalid_format:"Ongeldige kamer-id: {0}"},outline:{invalid_parameters_number:"Elk punt van de kameromtrek moet 2 coördinaten hebben"}},label:{x:{missing:"Elk label moet de eigenschap « x » bevatten"},y:{missing:"Elk label moet de eigenschap « y » bevatten"},text:{missing:"Elk label moet de eigenschap « text » bevatten"}},icon:{x:{missing:"Elk pictogram moet de eigenschap « x » bevatten"},y:{missing:"Elk pictogram moet de eigenschap « y » bevatten"},name:{missing:"Elk pictogram moet de eigenschap « name » bevatten"}}},service_call_schema:{missing:"Serviceoproep schema",service:{missing:"Serviceoproep-schema moet een service bevatten",invalid:"Ongeldige service: {0}"}}}},invalid_entities:"Ongeldige entiteiten:",invalid_calibration:"Ongeldige kalibratie, controleer je configuratie"},ha={status:{label:"Status",value:{starting:"Starten","charger disconnected":"Lader niet aangesloten",idle:"Inactief","remote control active":"Afstandsbediening actief",cleaning:"Schoonmaken","returning home":"Terugkeren naar basisstation","manual mode":"Handmatige modus",charging:"Laden","charging problem":"Laadprobleem",paused:"Gepauzeerd","spot cleaning":"Spot schoonmaken",error:"Fout","shutting down":"Afsluiten",updating:"Updaten",docking:"Docking","going to target":"Onderweg naar doel","zoned cleaning":"Zone schoonmaken","segment cleaning":"Kamers schoonmaken","emptying the bin":"Opvangbak leegmaken","charging complete":"Opladen voltooid","device offline":"Apparaat offline"}},battery_level:{label:"Accupercentage"},fan_speed:{label:"Ventilatorsnelheid",value:{silent:"Stil",standard:"Standaard",medium:"Gemiddeld",turbo:"Turbo",auto:"Automatisch",gentle:"Zacht"}},sensor_dirty_left:{label:"Sensors"},filter_left:{label:"Filter"},main_brush_left:{label:"Hoofdborstel"},side_brush_left:{label:"Zijborstel"},cleaning_count:{label:"Schoonmaakteller"},cleaned_area:{label:"Oppervlakte"},total_cleaned_area:{label:"Totale schoongemaakte oppervlakte"},cleaning_time:{label:"Schoonmaaktijd"},total_cleaning_time:{label:"Totale schoonmaaktijd"},mop_left:{label:"Dweil"},bin_full:{label:"Afvalcontainer vol",value:{true:"Yes",false:"No"}},bin_present:{label:"Afvalcontainer aanwezig",value:{true:"Yes",false:"No"}},water_volume:{label:"Watervolume"},mop_pad_humidity:{label:"Dweildoek"}},fa={vacuum_start:"Start",vacuum_pause:"Pause",vacuum_stop:"Stop",vacuum_return_to_base:"Terug naar basisstation",vacuum_clean_spot:"Spot schoonmaak",vacuum_locate:"Lokaliseren",vacuum_set_fan_speed:"Ventilatorsnelheid aanpassen"},ba={hour_shortcut:"u",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},ya={success:"Succes!",no_selection:"Geen selectie opgegeven",failed:"Fout bij aanroepen service"},ka={description:{text:"Deze grafische editor ondersteunt slechts een basis-configuratie. Gebruik de YAML-modus voor een meer uitgebreide configuratie."},label:{name:"Titel (optioneel)",entity:"Stofzuigerentiteit (verplicht)",camera:"Camera-entiteit (verplicht)",vacuum_platform:"Stofzuigerplatform (verplicht)",map_locked:"Kaart vergrendelen (optioneel)",two_finger_pan:"Kaart verplaatsen met twee vingers (optioneel)",platforms_documentation:"Documentatie van gekozen stofzuigerplatform ({0})",selection:"Selectie:",copy:"Kopiëren",copied:"Gekopieerd!",set_static_config:"Statische configuratie aanmaken",config_set:"Configuratie ingesteld!\nOpen de configuratie-editor om deze aan te passen.",config_set_failed:"Bijwerken van de configuratie mislukt",generate_rooms_config:"Kamer-configuratie aanmaken",copy_service_call:"Service Call kopiëren"},alerts:{set_static_config:"Gebruik deze functionaliteit alleen als je de gegenereerde configuratie nog handmatig wil aanpassen.\nDoorgaan?"}},Aa={common:_a,map_mode:va,validation:ga,tile:ha,icon:fa,unit:ba,popups:ya,editor:ka},xa=Object.freeze({__proto__:null,common:_a,map_mode:va,validation:ga,tile:ha,icon:fa,unit:ba,popups:ya,editor:ka,default:Aa}),Ea={version:"Wersja",invalid_configuration:"Nieprawidłowa konfiguracja {0}",description:"Karta pozwalająca na kontrolowanie odkurzacza przy użyciu mapy",old_configuration:"Wykryto starą wersję konfiguracji. Dostosuj kartę do najnowszej wersji, albo utwórz ją od nowa.",old_configuration_migration_link:"Przewodnik po migracji"},wa={invalid:"Nieprawidłowa wartość template",vacuum_goto:"Idź do punktu",vacuum_goto_predefined:"Zapisane punkty",vacuum_clean_segment:"Pokoje",vacuum_clean_point:"Sprzątanie punktowe",vacuum_clean_point_predefined:"Zapisane punkty",vacuum_clean_zone:"Sprzątanie strefowe",vacuum_clean_zone_predefined:"Zapisane strefy",vacuum_follow_path:"Ścieżka"},za={preset:{entity:{missing:"Brakujący parametr: entity"},preset_name:{missing:"Brakujący parametr: preset_name"},platform:{invalid:"Nieprawidłowa platforma odkurzacza: {0}"},map_source:{missing:"Brakujący parametr: map_source",none_provided:"Nie podano źródła mapy",ambiguous:"Można podać tylko jedno źródło mapy"},calibration_source:{missing:"Brakujący parametr: calibration_source",ambiguous:"Można podać tylko jedno źródło kalibracji",none_provided:"Nie podano źródła kalibracji",calibration_points:{invalid_number:"Wymagane 3 bądź 4 punkty kalibracyjne",missing_map:"Każdy punkt kalibracyjny musi posiadać współrzędne na mapie",missing_vacuum:"Każdy punkt kalibracyjny musi posiadać współrzędne w układzie odkurzacza",missing_coordinate:"Każdy punkt kalibracyjny musi mieć współrzędne x i y"}},icons:{invalid:"Błąd w konfiguracji: icons",icon:{missing:'Każda pozycja na liście ikon musi posiadać parametr "icon"'}},tiles:{invalid:"Błąd w konfiguracji: tiles",entity:{missing:'Każda pozycja na liście kafelków musi posiadać parametr "entity" albo "internal_variable"'},label:{missing:'Każda pozycja na liście kafelków musi posiadać parametr "label"'}},map_modes:{invalid:"Błąd w konfiguracji: map_modes",icon:{missing:"Brakująca ikona szablonu trybu mapy"},name:{missing:"Brakująca nazwa szablonu trybu mapy"},template:{invalid:"Nieprawidłowy szablon trybu mapy: {0}"},predefined_selections:{not_applicable:"Szablon {0} nie wspiera zapisywania zaznaczeń",zones:{missing:"Brakująca lista zapisanych stref",invalid_parameters_number:"Każda zapisana strefa musi posiadać 4 współrzędne"},points:{position:{missing:"Brakująca lista zapisanych punktów",invalid_parameters_number:"Każdy zapisany punkt musi posiadać 2 współrzędne"}},rooms:{id:{missing:"Brakujący identyfikator pokoju",invalid_format:"Nieprawidłowy identyfikator pokoju: {0}"},outline:{invalid_parameters_number:"Każdy punkt obrysu pokoju musi posiadać 2 współrzędne"}},label:{x:{missing:"Każda etykieta musi posiadać współrzędną x"},y:{missing:"Każda etykieta musi posiadać współrzędną y"},text:{missing:"Każda etykieta musi posiadać tekst"}},icon:{x:{missing:"Każda ikona musi posiadać współrzędną x"},y:{missing:"Każda ikona musi posiadać współrzędną y"},name:{missing:'Każda ikona musi posiadać parametr "name"'}}},service_call_schema:{missing:"Brakujący schemat wywołania usługi",service:{missing:"Każdy schemat usługi musi posiadać podaną nazwę usługi  ",invalid:"Nieprawidłowa usługa: {0}"}}}},invalid_entities:"Nieprawidłowe encje:",invalid_calibration:"Nieprawidłowa kalibracja, sprawdź konfigurację"},Pa={status:{label:"Status",value:{starting:"Uruchamianie","charger disconnected":"Ładowarka odłączona",idle:"Nieaktywny","remote control active":"Zdalne sterowanie",cleaning:"Sprzątanie","returning home":"Powrót do stacji","manual mode":"Tryb manualny",charging:"Ładowanie","charging problem":"Problem z ładowaniem",paused:"Wstrzymany","spot cleaning":"Sprzątanie punktowe",error:"Błąd","shutting down":"Wyłączanie",updating:"Aktualizowanie",docking:"Dokowanie","going to target":"W drodze do celu","zoned cleaning":"Sprzątanie strefowe","segment cleaning":"Sprzątanie pokoju","emptying the bin":"Opróżnianie pojemnika","charging complete":"Ładowanie zakończone","device offline":"Offline"}},battery_level:{label:"Bateria"},fan_speed:{label:"Wentylator",value:{silent:"Cichy",standard:"Normalny",medium:"Średni",turbo:"Turbo",auto:"Automatyczny",gentle:"Delikatny"}},sensor_dirty_left:{label:"Sensory"},filter_left:{label:"Filtr"},main_brush_left:{label:"Główna szczotka"},side_brush_left:{label:"Boczna szczotka"},cleaning_count:{label:"Licznik sprzątań"},cleaned_area:{label:"Powierzchnia"},total_cleaned_area:{label:"Całkowita powierzchnia"},cleaning_time:{label:"Czas sprzątania"},total_cleaning_time:{label:"Całkowity czas sprzątania"},mop_left:{label:"Mop"},bin_full:{label:"Pojemnik pełny",value:{true:"Tak",false:"Nie"}},bin_present:{label:"Pojemnik włożony",value:{true:"Tak",false:"Nie"}},water_volume:{label:"Poziom wody"},mop_pad_humidity:{label:"Wilgotność mopa"}},Ta={vacuum_start:"Uruchom",vacuum_pause:"Wstrzymaj",vacuum_stop:"Zatrzymaj",vacuum_return_to_base:"Wróć do stacji dokującej",vacuum_clean_spot:"Wyczyść miejsce",vacuum_locate:"Zlokalizuj",vacuum_set_fan_speed:"Zmień prędkość wentylatora"},Sa={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Ma={success:"Usługa wywołana!",no_selection:"Nie wybrano zaznaczenia",failed:"Błąd wywołania usługi"},Na={description:{text:"Ten edytor wizualny pozwala tylko na podstawową konfigurację. Bardziej zaawansowane funkcje są dostępne jedynie w trybie YAML."},label:{name:"Tytuł (opcjonalny)",entity:"Encja odkurzacza (wymagana)",camera:"Kamera z mapą (wymagana)",vacuum_platform:"Platforma integracji odkurzacza (wymagana)",map_locked:"Blokada mapy (opcjonalna)",two_finger_pan:"Przesuwanie mapy dwoma palcami (opcjonalne)",platforms_documentation:"Dokumentacja wybranej platformy ({0})",selection:"Zaznaczenie:",copy:"Kopiuj",copied:"Skopiowano!",set_static_config:"Wygeneruj statyczną konfigurację",config_set:"Ustawiono konfigurację!\nOtwórz edytor YAML w celu dostosowania.",config_set_failed:"Błąd aktualizacji konfiguracji.",generate_rooms_config:"Wygeneruj konfigurację pokoi",copy_service_call:"Skopiuj wywołanie usługi"},alerts:{set_static_config:"Ten przycisk powinien zostać użyty tylko wtedy, jeśli chcesz ręcznie dostosować automatycznie wygenerowaną konfigurację.\nKontynuować?"}},Oa={common:Ea,map_mode:wa,validation:za,tile:Pa,icon:Ta,unit:Sa,popups:Ma,editor:Na},Ca=Object.freeze({__proto__:null,common:Ea,map_mode:wa,validation:za,tile:Pa,icon:Ta,unit:Sa,popups:Ma,editor:Na,default:Oa}),Ra={version:"Versão",invalid_configuration:"Configuração inválida {0}",description:"Um cartão que lhe permite controlar o seu aspirador",old_configuration:"Configuração antiga detectada. Ajuste sua configuração para a versão mais recente ou crie um novo cartão do zero.",old_configuration_migration_link:"Guia de migração"},La={invalid:"Template inválido!",vacuum_goto:"Clicar & Ir",vacuum_goto_predefined:"Pontos",vacuum_clean_segment:"Quartos",vacuum_clean_point:"Local de limpeza",vacuum_clean_point_predefined:"Pontos",vacuum_clean_zone:"Limpeza de zona",vacuum_clean_zone_predefined:"Lista de zonas",vacuum_follow_path:"Caminho"},$a={preset:{entity:{missing:"Propriedade em falta: entidade"},preset_name:{missing:"Propriedade em falta: preset_name"},platform:{invalid:"Plataforma de aspirador inválida: {0}"},map_source:{missing:"Propriedade em falta: map_source",none_provided:"Nenhuma câmera nem imagem fornecida",ambiguous:"Apenas uma fonte de mapa permitida"},calibration_source:{missing:"Propriedade em falta: calibration_source",ambiguous:"Apenas uma fonte de calibração permitida",none_provided:"Nenhuma fonte de calibração fornecida",calibration_points:{invalid_number:"São necessários, exactamente, 3 ou 4 pontos de calibração",missing_map:"Cada ponto de calibração deve conter coordenadas do mapa",missing_vacuum:"Cada ponto de calibração deve conter coordenadas do aspirador",missing_coordinate:"Os pontos de calibração do mapa e do aspirador devem conter as coordenadas x e y"}},icons:{invalid:"Erro na configuração: icones",icon:{missing:"Cada entrada na lista de ícones deve conter a propriedade do ícone"}},tiles:{invalid:"Erro na configuração: tiles",entity:{missing:"Cada entrada da lista deve conter uma entidade ou variável interna"},label:{missing:"Cada entrada da lista deve conter uma etiqueta"}},map_modes:{invalid:"Erro na configuração: map_modes",icon:{missing:"Falta o ícone do modo de mapa"},name:{missing:"Falta o nome do modo de mapa"},template:{invalid:"Template inválido: {0}"},predefined_selections:{not_applicable:"O modo {0} não oferece suporte a seleções predefinidas",zones:{missing:"Configuração de zonas em falta",invalid_parameters_number:"Cada zona deve ter 4 parâmetros"},points:{position:{missing:"Configuração de locais em falta",invalid_parameters_number:"Cada local deve ter 2 parâmetros"}},rooms:{id:{missing:"Identificação do quarto em falta",invalid_format:"Id do quarto inválido: {0}"},outline:{invalid_parameters_number:"Cada local do limite exterior do quarto deve ter 2 parâmetros"}},label:{x:{missing:"A etiqueta deve ter a propriedade x"},y:{missing:"A etiqueta deve ter a propriedade y"},text:{missing:"A etiqueta deve ter um texto x"}},icon:{x:{missing:"O ícone deve ter a propriedade x"},y:{missing:"O ícone deve ter a propriedade y"},name:{missing:"O ícone deve ter um nome"}}},service_call_schema:{missing:"Falta a chamada de serviço",service:{missing:"A chamada de serviço deve conter o serviço",invalid:"serviço inválido: {0}"}}}},invalid_entities:"Entidades inválidas:",invalid_calibration:"Calibração inválida, verifique sua configuração"},ja={status:{label:"Estado",value:{starting:"A iniciar","charger disconnected":"Carregador desligado",idle:"Em espera","remote control active":"Controlo remoto activo",cleaning:"A limpar","returning home":"A voltar á base","manual mode":"Modo manual",charging:"A carregar","charging problem":"Problema de carregamento",paused:"Em pausa","spot cleaning":"Limpeza de local",error:"Erro","shutting down":"A desligar",updating:"A actualizar",docking:"A atracar","going to target":"A caminho do alvo","zoned cleaning":"Limpeza de zona","segment cleaning":"Limpeza de segmento","emptying the bin":"A esvaziar o depósito","charging complete":"Carregamento completo","device offline":"Dispositivo offline"}},battery_level:{label:"Bateria"},fan_speed:{label:"Velocidade da ventoinha",value:{silent:"Silenciosa",standard:"Normal",medium:"Média",turbo:"Turbo",auto:"Automática",gentle:"Gentil"}},sensor_dirty_left:{label:"Sensores"},filter_left:{label:"Filtro"},main_brush_left:{label:"Escova principal"},side_brush_left:{label:"Escova lateral"},cleaning_count:{label:"Contagem de limpezas"},cleaned_area:{label:"Área limpa"},total_cleaned_area:{label:"Área total limpa"},cleaning_time:{label:"Tempo de limpeza"},total_cleaning_time:{label:"Tempo total de limpeza"},mop_left:{label:"Mopa"},bin_full:{label:"Depósito cheio",value:{true:"Sim",false:"Não"}},bin_present:{label:"Depósito presente",value:{true:"Sim",false:"Não"}},water_volume:{label:"Volume de Água"},mop_pad_humidity:{label:"Pano da mopa"}},Ia={vacuum_start:"Iniciar",vacuum_pause:"Pausar",vacuum_stop:"Parar",vacuum_return_to_base:"Voltar à base",vacuum_clean_spot:"Limpar local",vacuum_locate:"Localizar",vacuum_set_fan_speed:"Mudar velocidade da ventoinha"},Da={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Fa={success:"Sucesso!",no_selection:"Nenhuma seleção fornecida",failed:"Falha ao chamar o serviço"},Va={description:{text:"O editor visual suporta apenas uma configuração básica. Para configuração avançada use o modo YAML."},label:{name:"Título (opcional)",entity:"Entidade de aspirador (necessária)",camera:"Entidade de camera (necessária)",vacuum_platform:"Plataforma dp aspirador (necessária)",map_locked:"Mapa trancado (opcional)",two_finger_pan:"Deslocamento com 2 dedos (opcional)",platforms_documentation:"Documentação da plataforma escolhida ({0})",selection:"Selecção:",copy:"Copiar",copied:"Copiado!",set_static_config:"Gerar configuração estática",config_set:"Definição de configuração set!\nAbrir o editor de configuração par ajustar.",config_set_failed:"Falha ao actualizar a configuração.",generate_rooms_config:"Gerar configuração de quartos",copy_service_call:"Copiar a chamada de serviço"},alerts:{set_static_config:"Só deve usar esta funcionalidade se quiser ajustar manualmente as configurações geradas automaticamente.\nContinuar?"}},Ua={common:Ra,map_mode:La,validation:$a,tile:ja,icon:Ia,unit:Da,popups:Fa,editor:Va},qa=Object.freeze({__proto__:null,common:Ra,map_mode:La,validation:$a,tile:ja,icon:Ia,unit:Da,popups:Fa,editor:Va,default:Ua}),Ka={version:"Versão",invalid_configuration:"configuração inválida {0}",description:"Um cartão que permite que você controlar seu aspirador",old_configuration:"Configuração antiga detectada. Ajuste sua configuração para a versão mais recente ou crie um novo cartão do zero.",old_configuration_migration_link:"Guia de migração"},Ha={invalid:"template inválido!",vacuum_goto:"Click & vai",vacuum_goto_predefined:"Local",vacuum_clean_segment:"Quartos",vacuum_clean_zone:"Limpar zona",vacuum_clean_zone_predefined:"Lista de zonas",vacuum_follow_path:"Seguir caminho"},Ga={preset:{entity:{missing:"Propriedade ausente: entidade"},preset_name:{missing:"Propriedade ausente: preset_name"},platform:{invalid:"Plataforma de aspirador inválida: {0}"},map_source:{missing:"Propriedade ausente: map_source",none_provided:"Nenhuma câmera nem imagem fornecida",ambiguous:"Apenas uma fonte de mapa permitida"},calibration_source:{missing:"Propriedade ausente: calibration_source",ambiguous:"Apenas uma fonte de calibração permitida",none_provided:"Nenhuma fonte de calibração fornecida",calibration_points:{invalid_number:"Exatamente 3 ou 4 pontos de calibração são necessários",missing_map:"Cada ponto de calibração deve conter coordenadas do mapa",missing_vacuum:"Cada ponto de calibração deve conter coordenadas do aspirador",missing_coordinate:"Os pontos de calibração do mapa e do aspirador devem conter as coordenadas x e y"}},icons:{invalid:"Erro na configuração: icones",icon:{missing:"Cada entrada na lista de ícones deve conter a propriedade do ícone"}},tiles:{invalid:"Erro na configuração: tiles",entity:{missing_outdated_translation:"Cada entrada da lista de tiles deve conter entidade"},label:{missing:"Cada entrada da lista de tiles deve conter label"}},map_modes:{invalid:"Erro na configuração: map_modes",icon:{missing:"Falta o ícone no modo de mapa"},name:{missing:"Falta o nome no modo de mapa"},template:{invalid:"Template inválido: {0}"},predefined_selections:{not_applicable:"O modo {0} não oferece suporte a seleções predefinidas",zones:{missing:"Falta a Configuração de zonas",invalid_parameters_number:"Cada zona deve ter 4 parâmetros"},points:{position:{missing:"Falta a configuração do local",invalid_parameters_number:"Cada local deve ter 2 parâmetros"}},rooms:{id:{missing:"Falta o id do quarto",invalid_format:"Id inválido do quarto: {0}"},outline:{invalid_parameters_number:"Cada local da borda do quarto deve ter 2 parâmetros"}},label:{x:{missing:"A label deve ter a propriedade x"},y:{missing:"A label deve ter a propriedade y"},text:{missing:"A label deve ter um texto"}},icon:{x:{missing:"O ícone deve ter a propriedade x"},y:{missing:"O ícone deve ter a propriedade y"},name:{missing:"O ícone deve ter um nome"}}},service_call_schema:{missing:"Falta o call service",service:{missing:"O call service deve conter o serviço",invalid:"serviço inválido: {0}"}}}},invalid_entities:"entidades inválidas:",invalid_calibration:"Calibração inválida, verifique sua configuração"},Ba={status:{label:"Status"},battery_level:{label:"Bateria"},fan_speed:{label:"Velocidade"},sensor_dirty_left:{label:"Sensores"},filter_left:{label:"Filtro"},main_brush_left:{label:"Escova principal"},side_brush_left:{label:"Escova lateral"},cleaning_count:{label:"Contagem de limpezas"},cleaned_area:{label:"Área limpa"},cleaning_time:{label:"Tempo de limpeza"}},Xa={vacuum_start:"Começar",vacuum_pause:"Pausar",vacuum_stop:"Parar",vacuum_return_to_base:"Voltar para a base",vacuum_clean_spot:"Limpar local",vacuum_locate:"Localizar",vacuum_set_fan_speed:"Mudar velocidade"},Za={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Ya={success:"Successo!",no_selection:"Nenhuma seleção fornecida",failed:"Falha em chamar o serviço"},Ja={description:{text:"Este editor suporta apenas uma configuração básica. Para um setup avancado use o YAML mode."},label:{name:"Título (opicional)",entity:"Entidade do aspirador (Obrigatório)",camera:"Entidade da camera (Obrigatório)",vacuum_platform:"Plataforma do aspirador (Obrigatório)",map_locked:"Mapa travado (Opicional)",two_finger_pan:"Movimente com dois dedos (Opicional)"}},Wa={common:Ka,map_mode:Ha,validation:Ga,tile:Ba,icon:Xa,unit:Za,popups:Ya,editor:Ja},Qa=Object.freeze({__proto__:null,common:Ka,map_mode:Ha,validation:Ga,tile:Ba,icon:Xa,unit:Za,popups:Ya,editor:Ja,default:Wa}),en={version:"Versiune",invalid_configuration:"Configurație invalidă {0}",description:"Un card care vă lasă să vă configurați aspiratorul",old_configuration:"Configurație veche detectată. Modificați fisierul de configurare la ultima versiune sau creați un nou card de la inceput.",old_configuration_migration_link:"Ghid de migrare"},tn={invalid:"Template invalid!",vacuum_goto:"Punct și Mergi",vacuum_goto_predefined:"Puncte",vacuum_clean_segment:"Camere",vacuum_clean_point:"Punct de curățare",vacuum_clean_point_predefined:"Puncte predefinite",vacuum_clean_zone:"Zonă de curățare",vacuum_clean_zone_predefined:"Listă zone",vacuum_follow_path:"Cale"},an={preset:{entity:{missing:"Proprietate lipsă: entity"},preset_name:{missing:"Proprietate lipsă: preset_name"},platform:{invalid:"Invalid vacuum platform: {0}"},map_source:{missing:"Missing property: map_source",none_provided:"No camera neither image provided",ambiguous:"Only one map source allowed"},calibration_source:{missing:"Missing property: calibration_source",ambiguous:"Only one calibration source allowed",none_provided:"No calibration source provided",calibration_points:{invalid_number:"Exactly 3 or 4 calibration points required",missing_map:"Each calibration point must contain map coordinates",missing_vacuum:"Each calibration point must contain vacuum coordinates",missing_coordinate:"Map and vacuum calibration points must contain both x and y coordinate"}},icons:{invalid:"Eroare în configurare: icons",icon:{missing:"Fiecare intrare din lista de pictograme trebuie să conțină proprietatea pictogramei"}},tiles:{invalid:"Eroare în configurare: tiles",entity:{missing:"Each entry of tiles list must contain entity or internal variable"},label:{missing:"Fiecare intrare a listei de plăci trebuie să conțină o etichetă"}},map_modes:{invalid:"Eroare în configurare: map_modes",icon:{missing:"Lipsește pictograma modului hartă"},name:{missing:"Lipsește numele modului hartă"},template:{invalid:"Template invalid: {0}"},predefined_selections:{not_applicable:"Modul {0} nu suportă selecțiile predefinite",zones:{missing:"Lipsă zone în configurație",invalid_parameters_number:"Fiecare zonă trebuie să aibă 4 parametri"},points:{position:{missing:"Lipsă puncte în configurație",invalid_parameters_number:"Fiecare punct trebuie să aibă 2 parametri"}},rooms:{id:{missing:"Lipsă id cameră",invalid_format:"Id cameră invalid: {0}"},outline:{invalid_parameters_number:"Fiecare punct al conturului camerei trebuie să aibă 2 parametri"}},label:{x:{missing:"Eticheta trebuie să aibă proprietatea x"},y:{missing:"Eticheta trebuie să aibă proprietatea y"},text:{missing:"Eticheta trebuie să aibă proprietatea text"}},icon:{x:{missing:"Pictograma trebuie să aibă proprietatea x"},y:{missing:"Pictograma trebuie să aibă proprietatea y"},name:{missing:"Pictograma trebuie să aibă proprietatea nume"}}},service_call_schema:{missing:"Lipsește schema de apel de service",service:{missing:"Schema de apel de service trebuie să conțină serviciu",invalid:"Serviciu invalid: {0}"}}}},invalid_entities:"Entități invalide:",invalid_calibration:"Calibrare nevalidă, vă rugăm să vă verificați configurația"},nn={status:{label:"Stare",value:{starting:"Pornire","charger disconnected":"Încărcătorul a fost deconectat",idle:"Inactiv","remote control active":"Telecomanda activa",cleaning:"Curățare","returning home":"Întoarcere acasă","manual mode":"Mod manual",charging:"Se încarcă","charging problem":"Probleme de încărcare",paused:"În pauză","spot cleaning":"Curățarea petelor",error:"Eroare","shutting down":"Se închide",updating:"Se updatează",docking:"Andocare","going to target":"Mergând la țintă","zoned cleaning":"Curățare zonă","segment cleaning":"Curățare segment","emptying the bin":"Golirea coșului de gunoi","charging complete":"Încarcare completă","device offline":"Dispozitiv offline"}},battery_level:{label:"Baterie"},fan_speed:{label:"Viteza ventilatorului",value:{silent:"Tăcut",standard:"Standard",medium:"Mediu",turbo:"Turbo",auto:"Auto",gentle:"Blând"}},sensor_dirty_left:{label:"Timp rămas senzori"},filter_left:{label:"Timp rămas filtru"},main_brush_left:{label:"Timp rămas peria principală"},side_brush_left:{label:"Timp rămas peria laterală"},cleaning_count:{label:"Număr de curățări"},cleaned_area:{label:"Zonă curățată"},cleaning_time:{label:"Timp de curățare"},mop_left:{label:"Timp rămas mop"},bin_full:{label:"Coș de gunoi plin",value:{true:"Da",false:"Nu"}},bin_present:{label:"Coș de gunoi prezent",value:{true:"Da",false:"Nu"}}},on={vacuum_start:"Start",vacuum_pause:"Pauză",vacuum_stop:"Stop",vacuum_return_to_base:"Întoarceți-vă la bază",vacuum_clean_spot:"Curățare pată",vacuum_locate:"Localizați",vacuum_set_fan_speed:"Schimbă viteza ventilatorului"},rn={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},sn={success:"Succes!",no_selection:"Nu este oferită nicio selecție",failed:"Nu s-a putut apela serviciul"},ln={description:{text:"Acest editor vizual acceptă doar o configurație de bază. Pentru o configurare mai avansată, utilizați modul YAML."},label:{name:"Titlu (opțional)",entity:"Entitate aspirator (necesar)",camera:"Entitate camera (necesar)",vacuum_platform:"Platformă aspirator (necesar)",map_locked:"Hartă blocată (opțional)",two_finger_pan:"Mișcare hartă cu două degete (opțional)",platforms_documentation:"Documentația platformei alese ({0})",selection:"Selecție:",copy:"Copiază",copied:"Copiat!",set_static_config:"Generează config static",config_set:"Configurare setată!\nDeschide editorul de configurare pentru a-l ajusta.",config_set_failed:"Nu s-a putut actualiza configurația.",generate_rooms_config:"Generați configurația camerelor",copy_service_call:"Copiere apel de serviciu"}},cn={common:en,map_mode:tn,validation:an,tile:nn,icon:on,unit:rn,popups:sn,editor:ln},dn=Object.freeze({__proto__:null,common:en,map_mode:tn,validation:an,tile:nn,icon:on,unit:rn,popups:sn,editor:ln,default:cn}),un={version:"Версия",invalid_configuration:"Неверная конфигурация {0}",description:"Карточка, позволяющая управлять вашим пылесосом",old_configuration:"Обнаружена устаревшая конфигурация. Приведите вашу конфигурацию в соответствие с новой версией, или создайте новую карточку с нуля.",old_configuration_migration_link:"Руководство по переходу с предыдущих версий."},mn={invalid:"Неверный шаблон!",vacuum_goto:"Точка назначения",vacuum_goto_predefined:"Предустановленные точки",vacuum_clean_segment:"Комнаты",vacuum_clean_point:"Уборка точки",vacuum_clean_point_predefined:"Список точек",vacuum_clean_zone:"Уборка зоны",vacuum_clean_zone_predefined:"Список зон",vacuum_follow_path:"Путь"},pn={preset:{entity:{missing:"Не указано свойство: entity"},preset_name:{missing:"Не указано свойство: preset_name"},platform:{invalid:"Неверная платформа: {0}"},map_source:{missing:"Не указано свойство: map_source",none_provided:"Не предоставлена ни камера ни изображение",ambiguous:"Допустим только один источник для карты"},calibration_source:{missing:"Не указано свойство: calibration_source",ambiguous:"Допустим только один источник для калибровки",none_provided:"Не предоставлен источник калибровки",calibration_points:{invalid_number:"Для калибровки требуется 3 или 4 точки",missing_map:"Каждая точка калибровки должна содержать координаты карты",missing_vacuum:"Каждая точка калибровки должна содержать координаты пылесоса",missing_coordinate:"Калибровочные точки карты и пылесоса должны содержать как x так и y координаты"}},icons:{invalid:"Ошибка в конфигурации: icons",icon:{missing:"Каждое вхождение в списке иконок должен содержать icon property"}},tiles:{invalid:"Ошибка в конфигурации: tiles",entity:{missing_outdated_translation:"Каждое вхождение в списке плиток должно содержать entity"},label:{missing:"Каждое вхождение в списке плиток должно содержать label"}},map_modes:{invalid:"Ошибка в конфигурации: map_modes",icon:{missing:"Не указана иконка для влажной уборки"},name:{missing:"Не указано имя для влажной уборки"},template:{invalid:"Неверный шаблон: {0}"},predefined_selections:{not_applicable:"Режим {0} не поддерживает предустановленые элементы",zones:{missing:"Не указана конфигурация зоны",invalid_parameters_number:"Каждая зона должна содержать 4 параметра"},points:{position:{missing:"Не указана конфигурация для точек",invalid_parameters_number:"Каждая точка должна содержать 2 параметра"}},rooms:{id:{missing:"Не указан id комнаты",invalid_format:"Некорректный id комнаты: {0}"},outline:{invalid_parameters_number:"Каждая точка контура комнаты должна содержать 2 параметра"}},label:{x:{missing:"Ярлык должен содержать свойство x"},y:{missing:"Ярлык должен содержать свойство y"},text:{missing:"Ярлык должен содержать свойство text"}},icon:{x:{missing:"Иконка должна содержать свойство x"},y:{missing:"Иконка должна содержать свойство y"},name:{missing:"Иконка должна содержать свойство name"}}},service_call_schema:{missing:"Отсутствует схема вызова службы",service:{missing:"Схема вызова службы должна содержать service",invalid:"Некорректная служба: {0}"}}}},invalid_entities:"Некорректные сущности:",invalid_calibration:"Некорректная калибровка, проверьте вашу конфигурацию"},_n={status:{label:"Статус",value:{starting:"Начало уборки","charger disconnected":"Зарядное устройство отключено",idle:"Ожидание","remote control active":"Включено управление через пульт",cleaning:"Уборка","returning home":"Возвращение на базу","manual mode":"Ручной режим",charging:"Зарядка","charging problem":"Проблема с зарядкой",paused:"Пауза","spot cleaning":"Уборка точки",error:"Ошибка","shutting down":"Выключение",updating:"Обновление",docking:"Остановка у базы","going to target":"Направление до точки","zoned cleaning":"Уборка зоны","segment cleaning":"Уборка","emptying the bin":"Очистка бака","charging complete":"Зарядка завершена","device offline":"Устройство не в сети"}},battery_level:{label:"Уровень заряда"},fan_speed:{label:"Мощность всасывания",value:{silent:"Тихий",standard:"Стандарт",medium:"Средний",turbo:"Турбо",auto:"Авто",gentle:"Слабый"}},sensor_dirty_left:{label:"Уровень загрязнения датчиков"},filter_left:{label:"Ресурс фильтра"},main_brush_left:{label:"Ресурс основной щётки"},side_brush_left:{label:"Ресурс боковой щётки"},cleaning_count:{label:"Число уборок"},cleaned_area:{label:"Площадь уборки"},total_cleaned_area:{label:"Общая убранная площадь"},cleaning_time:{label:"Время уборки"},total_cleaning_time:{label:"Общее время уборки"},mop_left:{label:"Ресурс тряпки"},bin_full:{label:"Контейнер полон",value:{true:"Да",false:"Нет"}},bin_present:{label:"Контейнер присутствует",value:{true:"Да",false:"Нет"}},water_volume:{label:"Уровень воды"},mop_pad_humidity:{label:"Тряпка"}},vn={vacuum_start:"Старт",vacuum_pause:"Пауза",vacuum_stop:"Стоп",vacuum_return_to_base:"Вернуть к базе",vacuum_clean_spot:"Убрать точку",vacuum_locate:"Обнаружить",vacuum_set_fan_speed:"Изменить мощность всасывания"},gn={hour_shortcut:"ч",meter_shortcut:"м",meter_squared_shortcut:"м²",minute_shortcut:"мин"},hn={success:"Успех!",no_selection:"Ничего не выбрано",failed:"Не удалось вызвать службу"},fn={description:{text:"Данный редактор поддерживает только базовую конфигурацию. Для более тонкой настройки, используйте YAML-мод."},label:{name:"Заголовок (опционально)",entity:"Сущность пылесоса (обязательно)",camera:"Сущность камеры (обязательно)",vacuum_platform:"Платформа пылесоса (обязательно)",map_locked:"Блокировка карты (опционально)",two_finger_pan:"Перемещение жестом двумя пальцами (опционально)",platforms_documentation:"Документация к выбранной платформе ({0})",selection:"Выбрано:",copy:"Копировать",copied:"Скопировано!",set_static_config:"Создать статическую конфигурацию",config_set:"Конфигурация установлена!\nОткройте редактор конфигурации, чтобы настроить его.",config_set_failed:"Не удалось обновить конфигурацию.",generate_rooms_config:"Сгенерировать конфигурацию комнат",copy_service_call:"Копировать вызов службы"},alerts:{set_static_config:"Эту функцию следует использовать только в том случае, если вы хотите вручную настроить автоматически созданную конфигурацию.\nПродолжить?"}},bn={common:un,map_mode:mn,validation:pn,tile:_n,icon:vn,unit:gn,popups:hn,editor:fn},yn=Object.freeze({__proto__:null,common:un,map_mode:mn,validation:pn,tile:_n,icon:vn,unit:gn,popups:hn,editor:fn,default:bn}),kn={version:"Verzia",invalid_configuration:"Neplatná konfigurácia {0}",description:"Karta pomocou ktorej môžete ovládať váš vysávač",old_configuration:"Detekovaná zastaralá konfigurácia. Upravte prosím konfiguráciu alebo kartu vytvorte znovu od začiatku.",old_configuration_migration_link:"Návod na úpravu konfigurácie"},An={invalid:"Neplatná šablóna",vacuum_goto:"Presun na bod",vacuum_goto_predefined:"Presun na bod zo zoznamu",vacuum_clean_segment:"Upratovanie miestnosti",vacuum_clean_point:"Upratovanie bodu",vacuum_clean_point_predefined:"Upratovanie bodu zo zoznamu",vacuum_clean_zone:"Upratovanie oblasti",vacuum_clean_zone_predefined:"Upratovanie oblasti zo zoznamu",vacuum_follow_path:"Trasa"},xn={preset:{entity:{missing:'Chýbajúca položka "entity"'},preset_name:{missing:'Chýbajúca položka "preset_name"'},platform:{invalid:"Neplatná platforma vysávača: {0}"},map_source:{missing:'Chýbajúca položka "map_source"',none_provided:"Chýbajúci odkaz na kameru alebo obrázok s mapou",ambiguous:"Povolený iba jeden zdroj mapy"},calibration_source:{missing:'Chýbajúca položka "calibration_source"',ambiguous:"Povolený iba jeden zdroj kalibrácie",none_provided:"Chýbajúci zdroj kalibrácie",calibration_points:{invalid_number:"Požadované 3 alebo 4 kalibračné body",missing_map:"Každý kalibračný bod musí obsahovať súradnice mapy",missing_vacuum:"Každý kalibračný bod musí obsahovať súradnice vysávača",missing_coordinate:'Súradnice mapy aj vysávače musia vždy obsahovať položku "x" a "y"'}},icons:{invalid:'Neplatná konfigurácia pre položku "icons"',icon:{missing:'Každý záznam v zozname ikon musí vždy obsahovať položku "icon"'}},tiles:{invalid:'Neplatná konfigurácia pre položku "tiles"',entity:{missing_outdated_translation:'Každý záznam v zozname dlaždíc musí vždy obsahovať položku "entity"'},label:{missing:'Každý záznam v zozname dlaždíc musí vždy obsahovať položku "label"'}},map_modes:{invalid:'Neplatná konfigurácia pre položku "map_modes"',icon:{missing:"Chýbajúca ikona pre mapový režim"},name:{missing:"Chýbajúci názov pre mapový režim"},template:{invalid:"Neplatná šablóna: {0}"},predefined_selections:{not_applicable:"Režim {0} nepodporuje výber z prednastavených možností",zones:{missing:"Chýbajúce konfigurácie oblastí",invalid_parameters_number:"Každá oblasť musí mať 4 parametre"},points:{position:{missing:"Chýbajúce konfigurácie bodov",invalid_parameters_number:"Každý bod musí mať 2 parametre"}},rooms:{id:{missing:"Chýbajúci ID miestnosti",invalid_format:"Neplatný ID miestnosti: {0}"},outline:{invalid_parameters_number:"Každý bod ohraničenia miestnosti musí mať 2 parametre"}},label:{x:{missing:'Štítok musí mať položku "x"'},y:{missing:'Štítok musí mať položku "y"'},text:{missing:'Štítok musí mať položku "text"'}},icon:{x:{missing:'Ikona musí mať položku "x"'},y:{missing:'Ikona musí mať položku "y"'},name:{missing:'Ikona musí mať položku "name"'}}},service_call_schema:{missing:"Chýbajúci formát volania služby",service:{missing:'Formát volania služby musí obsahovať položku "service"',invalid:"Neplatná služba: {0}"}}}},invalid_entities:"Neplatné entity:",invalid_calibration:"Neplatná kalibrácia, prosím skontrolujte konfiguráciu"},En={status:{label:"Stav",value:{starting:"Zapínanie","charger disconnected":"Nabíječka odpojena",idle:"Nečinný","remote control active":"Diaľkové ovládanie aktívne",cleaning:"Upratovanie","returning home":"Návrat do základne","manual mode":"Manuálny režim",charging:"Nabíjanie","charging problem":"Problém s nabíjaním",paused:"Pozastavený","spot cleaning":"Upratovanie bodu",error:"Chyba","shutting down":"Vypínanie",updating:"Prebieha aktualizácia",docking:"Parkovanie","going to target":"Presun na bod","zoned cleaning":"Upratovanie oblasti","segment cleaning":"Upratovanie miestnosti","emptying the bin":"Vyprázdňovanie zásobníka","charging complete":"Nabíjanie dokončené","device offline":"Zariadenie je nedostupné"}},battery_level:{label:"Batéria"},fan_speed:{label:"Stupeň vysávania",value:{silent:"Tiché",standard:"Štandardné",medium:"Stredné",turbo:"Turbo",auto:"Automatické",gentle:"Slabé"}},sensor_dirty_left:{label:"Čistota senzorov"},filter_left:{label:"Životnosť filtra"},main_brush_left:{label:"Životnosť hlavnej kefy"},side_brush_left:{label:"Životnosť bočej kefy"},cleaning_count:{label:"Počet upratovaní"},cleaned_area:{label:"Uprataná plocha"},cleaning_time:{label:"Doba upratovania"},mop_left:{label:"Životnosť mopu"}},wn={vacuum_start:"Začať upratovanie",vacuum_pause:"Pozastaviť upratovanie",vacuum_stop:"Ukončiť upratovanie",vacuum_return_to_base:"Návrat do základne",vacuum_clean_spot:"Upratať bod",vacuum_locate:"Nájsť",vacuum_set_fan_speed:"Nastaviť stupeň vysávania"},zn={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Pn={success:"Volanie služby bolo úspešné",no_selection:"Nebol vykonaný žiadny výber",failed:"Volanie služby zlyhalo"},Tn={description:{text:"Tento editor podporuje iba základnú konfiguráciu. Pre pokročilé nastavenia použite editor kódu."},label:{name:"Titulok (voliteľná položka)",entity:"Entita vysávača (povinná položka)",camera:"Entita kamery (povinná položka)",vacuum_platform:"Platforma vysávača (povinná položka)",map_locked:"Uzamknutie mapy",two_finger_pan:"Posuv mapy dvoma prstami"}},Sn={common:kn,map_mode:An,validation:xn,tile:En,icon:wn,unit:zn,popups:Pn,editor:Tn},Mn=Object.freeze({__proto__:null,common:kn,map_mode:An,validation:xn,tile:En,icon:wn,unit:zn,popups:Pn,editor:Tn,default:Sn}),Nn={version:"Version",invalid_configuration:"Ogiltig configuration {0}",description:"Ett kort som låter dig kontrollera din dammsugare",old_configuration:"Gammal konfiguration upptäckt. Editera din konfiguration till senaste schema eller skapa ett nytt kort från början.",old_configuration_migration_link:"Guide för migrering"},On={invalid:"Ogiltig template!",vacuum_goto:"Klicka & Gå",vacuum_goto_predefined:"Punkter",vacuum_clean_segment:"Rum",vacuum_clean_point:"Städpunkt",vacuum_clean_point_predefined:"Punkter",vacuum_clean_zone:"Zonstädning",vacuum_clean_zone_predefined:"Zonlista",vacuum_follow_path:"Bana"},Cn={preset:{entity:{missing:"Saknar egenskap: entity"},preset_name:{missing:"Saknar egenskap: preset_name"},platform:{invalid:"Ogiltig dammsugarplattform: {0}"},map_source:{missing:"Saknar egenskap: map_source",none_provided:"Ingen kamera elle bild angiven",ambiguous:"Endast en kartkälla tillåts"},calibration_source:{missing:"Saknar egenskap: calibration_source",ambiguous:"Endast en kalibreringskälla tillåts",none_provided:"Ingen kallibreringskälla angiven",calibration_points:{invalid_number:"Exakt 3 eller 4 kalibreringspunkter krävs",missing_map:"Varje kalibreringspunkt måste innehålla koordinater för karta",missing_vacuum:"Varje kalibreringspunkt måste innehålla koordinater för dammsugare",missing_coordinate:"Kalibreringspunkter för karta och dammsugare måste innehålla både x och y koordinater"}},icons:{invalid:"Fel i konfigurationen: icons",icon:{missing:"Varje post med icons måste innehålla icon-egenskap"}},tiles:{invalid:"Fel i konfigurationen: tiles",entity:{missing_outdated_translation:"Varje post med tiles måste innehålla entity"},label:{missing:"Varje post med tiles måste innehålla label"}},map_modes:{invalid:"Fel i konfigurationen: map_modes",icon:{missing:"Saknar ikon för map mode"},name:{missing:"Saknar namn för map mode"},template:{invalid:"Ogiltig template: {0}"},predefined_selections:{not_applicable:"Läge {0} har inte stöd för fördefinierade val",zones:{missing:"Zonens konfiguration saknas",invalid_parameters_number:"Varje zon måste ha 4 parametrar"},points:{position:{missing:"Punktens konfiguration saknas",invalid_parameters_number:"Varje punkt måste ha 2 parametrar"}},rooms:{id:{missing:"Rummets id saknas",invalid_format:"Felaktigt id för rum: {0}"},outline:{invalid_parameters_number:"Varje punk för rumskonturen måste ha 2 parametrar"}},label:{x:{missing:"Label måste ha egenskapen x"},y:{missing:"Label måste ha egenskapen y"},text:{missing:"Label måste ha egenskapen text"}},icon:{x:{missing:"Icon måste ha egenskapen x"},y:{missing:"Icon måste ha egenskapen y"},name:{missing:"Icon måste ha egenskapen name"}}},service_call_schema:{missing:"Service call schema saknas",service:{missing:"Service call schema måste innehålla service",invalid:"Ogiltig service: {0}"}}}},invalid_entities:"Ogiltiga entiteter:",invalid_calibration:"Ogiltig kalibrering, vänligen se över din konfiguration"},Rn={status:{label:"Status",value:{starting:"Startar","charger disconnected":"Laddare frånkopplad",idle:"Inaktiv","remote control active":"Fjärrkontroll aktiv",cleaning:"Städar","returning home":"Återvänder hem","manual mode":"Manuellt läge",charging:"Laddar","charging problem":"Laddningsproblem",paused:"Pausad","spot cleaning":"Spot-rengöring",error:"Fel","shutting down":"Stänger av",updating:"Uppdaterar",docking:"Dockar","going to target":"Går till destination","zoned cleaning":"Städning av zon","segment cleaning":"Städning av rum","emptying the bin":"Tömmer behållaren","charging complete":"Färdigladdad","device offline":"Enhet offline"}},battery_level:{label:"Batteri"},fan_speed:{label:"Fläkthastighet",value:{silent:"Tyst",standard:"Standard",medium:"Medium",turbo:"Turbo",auto:"Auto",gentle:"Försiktig"}},sensor_dirty_left:{label:"Sensorer kvar"},filter_left:{label:"Filter kvar"},main_brush_left:{label:"Huvudborste kvar"},side_brush_left:{label:"Sidoborste kvar"},cleaning_count:{label:"Antal städningar"},cleaned_area:{label:"Städat område"},cleaning_time:{label:"Städtid"},mop_left:{label:"Mopp kvar"}},Ln={vacuum_start:"Start",vacuum_pause:"Paus",vacuum_stop:"Stopp",vacuum_return_to_base:"Återgå till basen",vacuum_clean_spot:"Spot-rengöring",vacuum_locate:"Lokalisera",vacuum_set_fan_speed:"Ändra fläkthastighet"},$n={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},jn={success:"Lyckades!",no_selection:"Inget urval tillhandahålls",failed:"Mysslyckades kalla på tjänsten"},In={description:{text:"Denna visuella redigerare stöder endast en grundläggande konfiguration. Använd YAML-läget för avancerade inställningar."},label:{name:"Titel (valfritt)",entity:"Dammsugar-entitet (obligatoriskt)",camera:"Kamera-entitet (obligatoriskt)",vacuum_platform:"Dammsugarplattform (obligatoriskt)",map_locked:"Låst karta (valfritt)",two_finger_pan:"Panorering med två fingrar (valfritt)"}},Dn={common:Nn,map_mode:On,validation:Cn,tile:Rn,icon:Ln,unit:$n,popups:jn,editor:In},Fn=Object.freeze({__proto__:null,common:Nn,map_mode:On,validation:Cn,tile:Rn,icon:Ln,unit:$n,popups:jn,editor:In,default:Dn}),Vn={version:"Sürüm",invalid_configuration:"Geçersiz yapılandırma {0}",description:"Vakumunuzu kontrol etmenizi sağlayan bir kart",old_configuration:"Eski yapılandırma algılandı. Yapılandırmanızı en son şemaya göre ayarlayın veya sıfırdan yeni bir kart oluşturun.",old_configuration_migration_link:"Taşıma kılavuzu"},Un={invalid:"Geçersiz şablon!",vacuum_goto:"Sabitle ve Git",vacuum_goto_predefined:"Noktalar",vacuum_clean_segment:"Odalar",vacuum_clean_point:"Temiz alan",vacuum_clean_point_predefined:"Noktalar",vacuum_clean_zone:"Bölge temizliği",vacuum_clean_zone_predefined:"Bölge listesi",vacuum_follow_path:"Yol"},qn={preset:{entity:{missing:"Eksik özellik: varlık"},preset_name:{missing:"Eksik özellik: ön_ayar_adı(preset_name)"},platform:{invalid:"Geçersiz vakum platformu: {0}"},map_source:{missing:"Eksik özellik: harita kaynağı (map_source)",none_provided:"Kamera yok, görüntü de sağlanmadı",ambiguous:"Yalnızca bir harita kaynağına izin verilir"},calibration_source:{missing:"Eksik özellik: kalibrasyon_kaynak (calibration_source)",ambiguous:"Yalnızca bir kalibrasyon kaynağına izin verilir",none_provided:"Kalibrasyon kaynağı sağlanmadı",calibration_points:{invalid_number:"Tam olarak 3 veya 4 kalibrasyon noktası gerekli",missing_map:"Her kalibrasyon noktası harita koordinatlarını içermelidir",missing_vacuum:"Her kalibrasyon noktası vakum koordinatlarını içermelidir",missing_coordinate:"Harita ve vakum kalibrasyon noktaları hem x hem de y koordinatını içermelidir"}},icons:{invalid:"Yapılandırmada hata: simgeler",icon:{missing:"Simgeler listesinin her girişi, simge özelliği içermelidir"}},tiles:{invalid:"Yapılandırmada hata: döşemeler",entity:{missing_outdated_translation:"Kutucuk listesinin her girişi varlık içermelidir"},label:{missing:"Fayans listesinin her girişi etiket içermelidir"}},map_modes:{invalid:"Yapılandırmada hata: map_modes",icon:{missing:"Harita modunun eksik simgesi"},name:{missing:"Harita modunun adı eksik"},template:{invalid:"Geçersiz şablon: {0}"},predefined_selections:{not_applicable:"Mod {0} önceden tanımlanmış seçimleri desteklemiyor",zones:{missing:"Eksik bölge yapılandırması",invalid_parameters_number:"Her bölgenin 4 parametresi olmalıdır"},points:{position:{missing:"Eksik nokta yapılandırması",invalid_parameters_number:"Her noktanın 2 parametresi olmalıdır"}},rooms:{id:{missing:"Eksik oda kimliği",invalid_format:"Geçersiz oda kimliği: {0}"},outline:{invalid_parameters_number:"Oda anahattının her noktası 2 parametreye sahip olmalıdır"}},label:{x:{missing:"Etiketin x özelliği olmalıdır"},y:{missing:"Etiketin y özelliği olmalıdır"},text:{missing:"Etiketin metin özelliği olmalıdır"}},icon:{x:{missing:"Simgenin x özelliği olmalıdır"},y:{missing:"Simgenin y özelliği olmalıdır"},name:{missing:"Simge isim özelliğine sahip olmalıdır"}}},service_call_schema:{missing:"Eksik servis çağrısı şeması",service:{missing:"Servis çağrısı şeması servis içermelidir",invalid:"Geçersiz hizmet: {0}"}}}},invalid_entities:"Geçersiz varlıklar:",invalid_calibration:"Geçersiz kalibrasyon, lütfen yapılandırmanızı kontrol edin"},Kn={status:{label:"Durum",value:{starting:"Başlangıç","charger disconnected":"Şarj cihazının bağlantısı kesildi",idle:"Idle","remote control active":"Uzaktan kumanda aktif",cleaning:"Temizleme","returning home":"Eve dönüş","manual mode":"Manual mod",charging:"Şarj oluyor","charging problem":"Şarj sorunu",paused:"Duraklatıldı","spot cleaning":"Nokta temizleme",error:"Hata","shutting down":"Kapatılıyor",updating:"Güncelleniyor",docking:"Yerleştirme","going to target":"Hedefe gidiyor","zoned cleaning":"Bölgeli temizlik","segment cleaning":"Segment temizliği","emptying the bin":"Çöp haznesini boşalt","charging complete":"Şarj tamamlandı","device offline":"Cihaz çevrimdışı"}},battery_level:{label:"Pil"},fan_speed:{label:"Süpürme Modu",value:{silent:"Sessiz",standard:"Standart",medium:"Orta",turbo:"Güçlü",auto:"Otomatik",gentle:"Uysal"}},sensor_dirty_left:{label:"Sensör kirli"},filter_left:{label:"Filtre"},main_brush_left:{label:"Ana Fırça"},side_brush_left:{label:"Yan Fırça"},cleaning_count:{label:"Temizleme sayısı"},cleaned_area:{label:"Temizlenmiş alan"},cleaning_time:{label:"Temizlik zamanı"},mop_left:{label:"Paspaslama"}},Hn={vacuum_start:"Başlat",vacuum_pause:"Duraklat",vacuum_stop:"Durdur",vacuum_return_to_base:"Üniteye geri dön",vacuum_clean_spot:"Temiz nokta",vacuum_locate:"Bul",vacuum_set_fan_speed:"Fan hızını değiştir"},Gn={hour_shortcut:"S",meter_shortcut:"D",meter_squared_shortcut:"m²",minute_shortcut:"Sn"},Bn={success:"Başarı!",no_selection:"Seçim sağlanmadı",failed:"Servis aranamadı"},Xn={description:{text:"Bu görsel düzenleyici yalnızca temel yapılandırmayı destekler. Daha gelişmiş kurulum için YAML modunu kullanın."},label:{name:"Başlık (isteğe bağlı)",entity:"Vakum varlığı (gerekli)",camera:"Kamera varlığı (gerekli)",vacuum_platform:"Vakum platformu (gerekli)",map_locked:"Harita kilitli (isteğe bağlı)",two_finger_pan:"İki parmaklı tava (isteğe bağlı)"}},Zn={common:Vn,map_mode:Un,validation:qn,tile:Kn,icon:Hn,unit:Gn,popups:Bn,editor:Xn},Yn=Object.freeze({__proto__:null,common:Vn,map_mode:Un,validation:qn,tile:Kn,icon:Hn,unit:Gn,popups:Bn,editor:Xn,default:Zn}),Jn={version:"Версія",invalid_configuration:"Недійсна конфігурація {0}",description:"Картка, яка дає змогу контролювати пилосос",old_configuration:"Виявлено стару конфігурацію. Налаштуйте конфігурацію до останньої схеми або створіть нову картку з початку.",old_configuration_migration_link:"Посібник з міграції"},Wn={invalid:"Недійсний шаблон!",vacuum_goto:"Рух до цілі",vacuum_goto_predefined:"Збережені точки",vacuum_clean_segment:"Кімнати",vacuum_clean_point:"Точкове прибирання",vacuum_clean_point_predefined:"Збережені точки",vacuum_clean_zone:"Зональне прибирання",vacuum_clean_zone_predefined:"Список зон",vacuum_follow_path:"Шлях"},Qn={preset:{entity:{missing:"Відсутній параметр: entity"},preset_name:{missing:"Відсутній параметр: preset_name"},platform:{invalid:"Недійсна платформа пилососа: {0}"},map_source:{missing:"Відсутній параметр: map_source",none_provided:"Не вказано джерело мапи",ambiguous:"Дозволено тільки одне джерело мапи"},calibration_source:{missing:"Відсутній параметр: calibration_source",ambiguous:"Дозволено тільки одне джерело калібрування",none_provided:"Не вказано джерело калібрування",calibration_points:{invalid_number:"Потрібні 3 або 4 точки калібрування",missing_map:"Кожна точка калібрування повинна мати координати на мапі",missing_vacuum:"Кожна точка калібрування повинна мати координати в системі пилососа",missing_coordinate:"Кожна точка калібрування повинна мати координати x і y"}},icons:{invalid:"Помилка в конфігурації: icons",icon:{missing:'Кожен елемент у списку піктограм повинен мати параметр "icon"'}},tiles:{invalid:"Помилка в конфігурації: tiles",entity:{missing:'Кожен елемент у списку плиток повинен мати параметр "entity" або внутрішню змінну'},label:{missing:'Кожен елемент у списку плиток повинен мати параметр "label"'}},map_modes:{invalid:"Помилка в конфігурації: map_modes",icon:{missing:"Відсутня піктограма шаблону режиму мапи"},name:{missing:"Відсутня назва шаблону режиму мапи"},template:{invalid:"Недійсний шаблон: {0}"},predefined_selections:{not_applicable:"Шаблон {0} не підтримує збереження вибраних елементів",zones:{missing:"Відсутній список збережених зон",invalid_parameters_number:"Кожна збережена зона повинна мати 4 координати"},points:{position:{missing:"Відсутній список збережених точок",invalid_parameters_number:"Кожна записана точка повинна мати 2 координати"}},rooms:{id:{missing:"Відсутній ідентифікатор кімнати",invalid_format:"Недійсний ідентифікатор кімнати: {0}"},outline:{invalid_parameters_number:"Кожна точка контуру кімнати повинна мати 2 координати"}},label:{x:{missing:"Кожна мітка повинна мати координату x"},y:{missing:"Кожна мітка повинна мати координату y"},text:{missing:"Кожна мітка повинна містити текст"}},icon:{x:{missing:"Кожна піктограма повинна мати координату x"},y:{missing:"Кожна піктограма повинна мати координату y"},name:{missing:'Кожна піктограма повинна мати параметр "name"'}}},service_call_schema:{missing:"Відсутня схема виклику служби",service:{missing:"Кожна схема служби повинна мати назву служби",invalid:"Недійсна служба: {0}"}}}},invalid_entities:"Недійсні сутності:",invalid_calibration:"Неправильне калібрування, перевірте конфігурацію"},eo={status:{label:"Статус",value:{starting:"Початок","charger disconnected":"Зарядний пристрій відключено",idle:"Неактивний","remote control active":"Пульт",cleaning:"Прибирання","returning home":"Повернення до док-станції","manual mode":"Ручний режим",charging:"Заряджання","charging problem":"Проблема з заряджанням",paused:"Призупинено","spot cleaning":"Точкове очищення",error:"Помилка","shutting down":"Вимкнення",updating:"Оновлення",docking:"Стиковка","going to target":"По шляху до цілі","zoned cleaning":"Зональне прибирання","segment cleaning":"Прибирання кімнати","emptying the bin":"Спорожнення контейнера","charging complete":"Заряджання завершено","device offline":"Офлайн"}},battery_level:{label:"Батарея"},fan_speed:{label:"Потужність",value:{silent:"Тихий",standard:"Стандарт",medium:"Середній",turbo:"Турбо",auto:"Авто",gentle:"Делікатний"}},sensor_dirty_left:{label:"Сенсор"},filter_left:{label:"Фільтр"},main_brush_left:{label:"Основна щітка"},side_brush_left:{label:"Бокова щітка"},cleaning_count:{label:"Лічильник прибирань"},cleaned_area:{label:"Прибрано"},total_cleaned_area:{label:"Всього прибрано"},cleaning_time:{label:"Час прибирання"},total_cleaning_time:{label:"Загальний час прибирання"},mop_left:{label:"Швабра"},bin_full:{label:"Контейнер повний",value:{true:"Так",false:"Ні"}},bin_present:{label:"Контейнер встановлено",value:{true:"Так",false:"Ні"}},water_volume:{label:"Об'єм води"},mop_pad_humidity:{label:"Швабра"}},to={vacuum_start:"Старт",vacuum_pause:"Пауза",vacuum_stop:"Стоп",vacuum_return_to_base:"Повернення на базу",vacuum_clean_spot:"Прибрати місце",vacuum_locate:"Пошук",vacuum_set_fan_speed:"Зміна потужності"},io={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},ao={success:"Успіх!",no_selection:"Виділення не зроблено",failed:"Не вдалося викликати службу"},no={description:{text:"Цей редактор інтерфейсу підтримує лише базову конфігурацію. Для більш розширеного налаштування використовуйте режим YAML."},label:{name:"Назва (опція)",entity:"Сутність пилососу (необхідно)",camera:"Сутність камери (необхідно)",vacuum_platform:"Платформа інтеграції пилососу (необхідно)",map_locked:"Блокування мапи (опція)",two_finger_pan:"Переміщення мапи двома пальцями (опція)",platforms_documentation:"Документація обраної платформи ({0})",selection:"Вибір:",copy:"Скопіювати",copied:"Скопійовано!",set_static_config:"Згенерувати статичну конфігурацію",config_set:"Конфігурація встановлена!\nВідкрийте редактор конфігурації щоб змінити.",config_set_failed:"Не вдалось оновити конфігурацію.",generate_rooms_config:"Згенерувати конфігурацію кімнат",copy_service_call:"Скопіювати визов сервісу"},alerts:{set_static_config:"Ви повинні використовувати цю функціональність тільки якщо хочете вручну налаштувати автоматично згенеровану конфігурацію.\nПродовжити?"}},oo={common:Jn,map_mode:Wn,validation:Qn,tile:eo,icon:to,unit:io,popups:ao,editor:no},ro=Object.freeze({__proto__:null,common:Jn,map_mode:Wn,validation:Qn,tile:eo,icon:to,unit:io,popups:ao,editor:no,default:oo}),so={version:"版本",invalid_configuration:"配置无效 {0}",description:"一个可以控制扫地机的卡片",old_configuration:"检测到旧版本的配置。请按照新版本说明修改配置或者重新创建新卡片",old_configuration_migration_link:"迁移向导"},lo={invalid:"模板无效！",vacuum_goto:"指哪到哪",vacuum_goto_predefined:"目标点",vacuum_clean_segment:"选区清扫",vacuum_clean_point:"局部清扫",vacuum_clean_point_predefined:"自定义局部清扫",vacuum_clean_zone:"划区清扫",vacuum_clean_zone_predefined:"自定义区域清扫",vacuum_follow_path:"路径规划"},co={preset:{entity:{missing:"缺少属性：entity"},preset_name:{missing:"缺少属性：preset_name"},platform:{invalid:"扫地机平台无效：{0}"},map_source:{missing:"缺少属性：map_source",none_provided:"未提供摄像头或者图像",ambiguous:"只允许一张地图"},calibration_source:{missing:"缺少属性：calibration_source",ambiguous:"只允许一个校准源",none_provided:"未提供校准源",calibration_points:{invalid_number:"需要3或4个校准点",missing_map:"每个校准点必须包含地图坐标",missing_vacuum:"每个校准点必须包含扫地机坐标",missing_coordinate:"地图校准点和扫地机校准点必须同时包含x坐标和y坐标"}},icons:{invalid:"配置错误：icons",icon:{missing:"图标列表中每一条记录必须包含icon属性"}},tiles:{invalid:"配置错误：tiles",entity:{missing_outdated_translation:"板块列表中每一条记录必须包含实体"},label:{missing:"板块列表中每一条记录必须包含标签"}},map_modes:{invalid:"配置错误：map_modes",icon:{missing:"缺少该地图模式的图标"},name:{missing:"缺少该地图模式的名称"},template:{invalid:"模板无效：{0}"},predefined_selections:{not_applicable:"模式 {0} 不支持选择预置",zones:{missing:"缺少区域配置",invalid_parameters_number:"每个区域必须包含4个参数"},points:{position:{missing:"缺少坐标点配置",invalid_parameters_number:"每个坐标点必须包含2个参数"}},rooms:{id:{missing:"缺少房间id",invalid_format:"房间id无效：{0}"},outline:{invalid_parameters_number:"每个房间边框必须包含2个参数"}},label:{x:{missing:"标签必须包含x值"},y:{missing:"标签必须包含y值"},text:{missing:"标签必须包含文本值"}},icon:{x:{missing:"图标必须包含x值"},y:{missing:"标题必须包含y值"},name:{missing:"标题必须包含名称"}}},service_call_schema:{missing:"缺少服务调用架构",service:{missing:"服务调用架构必须包含服务",invalid:"服务无效：{0}"}}}},invalid_entities:"实体无效：",invalid_calibration:"校准无效，请检查配置"},uo={status:{label:"状态",value:{starting:"开始清扫","charger disconnected":"与充电座断开",idle:"空闲",sleeping:"休眠","remote control active":"开始遥控模式",cleaning:"清扫中","returning home":"正在回充","manual mode":"手动模式",charging:"正在充电","charging problem":"充电错误",paused:"暂停","spot cleaning":"局部清扫",error:"错误","shutting down":"正在关机",updating:"正在更新",docking:"停靠","going to target":"正在前往目标点","zoned cleaning":"划区清扫","segment cleaning":"选区清扫","emptying the bin":"清理尘盒","charging complete":"充电完成","device offline":"设备离线"}},battery_level:{label:"剩余电量"},fan_speed:{label:"吸力",value:{silent:"安静",standard:"标准",medium:"强力",strong:"强力",turbo:"超强",auto:"自动",gentle:"轻柔"}},sensor_dirty_left:{label:"传感器维护剩余"},filter_left:{label:"滤网剩余"},main_brush_left:{label:"主刷剩余"},side_brush_left:{label:"边刷剩余"},cleaning_count:{label:"总清扫次数"},cleaned_area:{label:"总清扫面积"},cleaning_time:{label:"总清扫时间"},mop_left:{label:"拖布剩余"}},mo={vacuum_start:"开始",vacuum_pause:"暂停",vacuum_stop:"结束",vacuum_return_to_base:"回充",vacuum_clean_spot:"局部清扫",vacuum_locate:"定位",vacuum_set_fan_speed:"更改吸力"},po={hour_shortcut:"小时",meter_shortcut:"米",meter_squared_shortcut:"平米",minute_shortcut:"分钟"},_o={success:"指令发送成功！",no_selection:"未提供选择",failed:"调用服务失败"},vo={description:{text:"该可视化编辑器仅支持一些基本配置。想要使用高级设置，请使用YAML模式"},label:{name:"标题（可选）",entity:"扫地机实体（必填）",camera:"摄像机实体（必填）",vacuum_platform:"扫地机平台（必填）",map_locked:"地图锁定（可选）",two_finger_pan:"双指缩放（可选）"}},go={common:so,map_mode:lo,validation:co,tile:uo,icon:mo,unit:po,popups:_o,editor:vo},ho=Object.freeze({__proto__:null,common:so,map_mode:lo,validation:co,tile:uo,icon:mo,unit:po,popups:_o,editor:vo,default:go}),fo={version:"版本",invalid_configuration:"設定錯誤 {0}",description:"一張能讓您控制掃地機器人的卡片",old_configuration:"檢測到設定已過時，請按照新版本說明並進行修正或重新新增一張新的卡片",old_configuration_migration_link:"移轉指南"},bo={invalid:"模板錯誤!",vacuum_goto:"指哪到哪",vacuum_goto_predefined:"目標點",vacuum_clean_segment:"選區清掃",vacuum_clean_point:"局部清掃",vacuum_clean_point_predefined:"局部目標",vacuum_clean_zone:"劃區清掃",vacuum_clean_zone_predefined:"目標區域",vacuum_follow_path:"路徑規劃"},yo={preset:{entity:{missing:"設定錯誤: entity"},preset_name:{missing:"設定錯誤: preset_name"},platform:{invalid:"錯誤的 vacuum platform: {0}"},map_source:{missing:"設定錯誤: map_source",none_provided:"未提供攝影機或圖片",ambiguous:"只允許一張地圖源"},calibration_source:{missing:"設定錯誤: calibration_source",ambiguous:"只允許一個校準源",none_provided:"未提供校準源",calibration_points:{invalid_number:"需要 3 或 4 個校準點",missing_map:"每個校準點必須包含地圖座標",missing_vacuum:"每個校準點必須包含吸塵器座標",missing_coordinate:"地圖校準點和吸塵器校準點必須同時包含 x 座標和 y 座標"}},icons:{invalid:"設定錯誤: icons",icon:{missing:"Icon list 必須包含 icon"}},tiles:{invalid:"設定錯誤: tiles",entity:{missing_outdated_translation:"tiles list 必須包含 entity"},label:{missing:"tiles list 必須包含 label"}},map_modes:{invalid:"設定錯誤: map_modes",icon:{missing:"Map modes 的 icon(圖標) 設定錯誤"},name:{missing:"Map modes 的 name(名稱) 設定錯誤"},template:{invalid:"模板錯誤: {0}"},predefined_selections:{not_applicable:"Mode {0} 不支援 predefined selections",zones:{missing:"zones 設定錯誤",invalid_parameters_number:"zones 必須包含 4 個參數"},points:{position:{missing:"points 設定錯誤",invalid_parameters_number:"points 必須包含 2 個參數"}},rooms:{id:{missing:"room id 錯誤",invalid_format:"room id 錯誤: {0}"},outline:{invalid_parameters_number:"room 的 point(座標) 必須包含 2 個參數"}},label:{x:{missing:"label 必須包含 x 值"},y:{missing:"label 必須包含 y 值"},text:{missing:"label 必須包含 text"}},icon:{x:{missing:"icon 必須包含 x 值"},y:{missing:"icon 必須包含 y 值"},name:{missing:"icon 必須包含 name"}}},service_call_schema:{missing:"服務執行失敗",service:{missing:"執行服務(service)必須包含該服務(service)",invalid:"服務錯誤: {0}"}}}},invalid_entities:"錯誤的 entities(實體): ",invalid_calibration:"calibration(校準)失敗，請檢查設定"},ko={status:{label:"狀態",value:{starting:"開始清掃","charger disconnected":"與充電座斷開",idle:"閒置","remote control active":"開始遙控模式",cleaning:"清掃中","returning home":"回充中","manual mode":"手動模式",charging:"充電中","charging problem":"充電錯誤",paused:"暫停","spot cleaning":"局部清掃",error:"錯誤","shutting down":"關機中",updating:"更新中",docking:"Docking","going to target":"正在行進至目標點","zoned cleaning":"劃區清掃","segment cleaning":"選區清掃","emptying the bin":"清理集塵盒","charging complete":"充電完成","device offline":"裝置離線"}},battery_level:{label:"剩餘電量"},fan_speed:{label:"吸力",value:{silent:"安靜",standard:"標準",medium:"強力",turbo:"MAX",auto:"自動",gentle:"拖地"}},sensor_dirty_left:{label:"感應器剩餘"},filter_left:{label:"濾網剩餘"},main_brush_left:{label:"主刷剩餘"},side_brush_left:{label:"邊刷剩餘"},cleaning_count:{label:"累積清掃次數"},cleaned_area:{label:"累積清掃面積"},cleaning_time:{label:"累積清掃時間"},mop_left:{label:"抹布剩餘"}},Ao={vacuum_start:"開始",vacuum_pause:"暫停",vacuum_stop:"停止",vacuum_return_to_base:"回充",vacuum_clean_spot:"局部清掃",vacuum_locate:"定位",vacuum_set_fan_speed:"調整吸力"},xo={hour_shortcut:"小時",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"分鐘"},Eo={success:"Success!",no_selection:"未選擇目標",failed:"執行服務失敗"},wo={description:{text:"此面板僅支援基本的設定。如需更豐富的進階設定，請使用 YAML 編輯"},label:{name:"標題（選填）",entity:"掃地機器人實體（必填）",camera:"攝影機實體（必填）",vacuum_platform:"vacuum platform（必填）",map_locked:"鎖定地圖（選填）",two_finger_pan:"雙指縮放（選填）"}},zo={common:fo,map_mode:bo,validation:yo,tile:ko,icon:Ao,unit:xo,popups:Eo,editor:wo},Po=Object.freeze({__proto__:null,common:fo,map_mode:bo,validation:yo,tile:ko,icon:Ao,unit:xo,popups:Eo,editor:wo,default:zo});function To(e){return!!e&&(e instanceof Date&&!isNaN(e.valueOf()))}const So=(e,t)=>Mo(t).format(e),Mo=e=>new Intl.DateTimeFormat(e.language,{year:"numeric",month:"long",day:"numeric"}),No=e=>{if(e.time_format===he.language||e.time_format===he.system){const t=e.time_format===he.language?e.language:void 0,i=(new Date).toLocaleString(t);return i.includes("AM")||i.includes("PM")}return e.time_format===he.am_pm},Oo=(e,t)=>Co(t).format(e),Co=e=>new Intl.DateTimeFormat("en"!==e.language||No(e)?e.language:"en-u-hc-h23",{year:"numeric",month:"long",day:"numeric",hour:No(e)?"numeric":"2-digit",minute:"2-digit",hour12:No(e)}),Ro=(e,t)=>Lo(t).format(e),Lo=e=>new Intl.DateTimeFormat("en"!==e.language||No(e)?e.language:"en-u-hc-h23",{year:"numeric",month:"long",day:"numeric",hour:No(e)?"numeric":"2-digit",minute:"2-digit",second:"2-digit",hour12:No(e)});var $o,jo,Io;!function(e){e.language="language",e.system="system",e.comma_decimal="comma_decimal",e.decimal_comma="decimal_comma",e.space_comma="space_comma",e.none="none"}($o||($o={})),function(e){e.language="language",e.system="system",e.am_pm="12",e.twenty_four="24"}(jo||(jo={})),function(e){e.language="language",e.monday="monday",e.tuesday="tuesday",e.wednesday="wednesday",e.thursday="thursday",e.friday="friday",e.saturday="saturday",e.sunday="sunday"}(Io||(Io={}));const Do=(e,t,i)=>{const a=t?(e=>{switch(e.number_format){case $o.comma_decimal:return["en-US","en"];case $o.decimal_comma:return["de","es","it"];case $o.space_comma:return["fr","sv","cs"];case $o.system:return;default:return e.language}})(t):void 0;if(Number.isNaN=Number.isNaN||function e(t){return"number"==typeof t&&e(t)},(null==t?void 0:t.number_format)!==$o.none&&!Number.isNaN(Number(e))&&Intl)try{return new Intl.NumberFormat(a,Vo(e,i)).format(Number(e))}catch(t){return console.error(t),new Intl.NumberFormat(void 0,Vo(e,i)).format(Number(e))}return!Number.isNaN(Number(e))&&""!==e&&(null==t?void 0:t.number_format)===$o.none&&Intl?new Intl.NumberFormat("en-US",Vo(e,Object.assign(Object.assign({},i),{useGrouping:!1}))).format(Number(e)):"string"==typeof e?e:`${((e,t=2)=>Math.round(e*10**t)/10**t)(e,null==i?void 0:i.maximumFractionDigits).toString()}${"currency"===(null==i?void 0:i.style)?` ${i.currency}`:""}`},Fo=(e,t)=>{var i;const a=null==t?void 0:t.display_precision;return null!=a?{maximumFractionDigits:a,minimumFractionDigits:a}:Number.isInteger(Number(null===(i=e.attributes)||void 0===i?void 0:i.step))&&Number.isInteger(Number(e.state))?{maximumFractionDigits:0}:void 0},Vo=(e,t)=>{const i=Object.assign({maximumFractionDigits:2},t);if("string"!=typeof e)return i;if(!t||void 0===t.minimumFractionDigits&&void 0===t.maximumFractionDigits){const t=e.indexOf(".")>-1?e.split(".")[1].length:0;i.minimumFractionDigits=t,i.maximumFractionDigits=t}return i},Uo="^\\d{4}-(0[1-9]|1[0-2])-([12]\\d|0[1-9]|3[01])",qo=new RegExp(Uo+"$"),Ko=new RegExp(Uo),Ho=(e,t=!1)=>t?Ko.test(e):qo.test(e),Go=/^\d{4}-(0[1-9]|1[0-2])-([12]\d|0[1-9]|3[01])[T| ](((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([.,]\d+(?!:))?)(\8[0-5]\d([.,]\d+)?)?([zZ]|([+-])([01]\d|2[0-3]):?([0-5]\d)?)?)$/,Bo=e=>Go.test(e),Xo=e=>e.substr(0,e.indexOf(".")),Zo=(e,t,i,a,n,o)=>{const r=void 0!==o?o:t.attributes[n];if(null===r)return e("state.default.unknown");if("number"==typeof r)return Do(r,i);if("string"==typeof r&&Ho(r,!0)){if(Bo(r)){const e=new Date(r);if(To(e))return Ro(e,i)}const e=new Date(r);if(To(e))return So(e,i)}if(Array.isArray(r)&&r.some((e=>e instanceof Object))||!Array.isArray(r)&&r instanceof Object)return JSON.stringify(r);if(Array.isArray(r))return r.map((o=>Zo(e,t,i,a,n,o))).join(", ");const s=t.entity_id,l=Xo(s),c=t.attributes.device_class,d=null==a?void 0:a[s],u=null==d?void 0:d.translation_key;return u&&e(`component.${d.platform}.entity.${l}.${u}.state_attributes.${n}.state.${r}`)||c&&e(`component.${l}.entity_component.${c}.state_attributes.${n}.state.${r}`)||e(`component.${l}.entity_component._.state_attributes.${n}.state.${r}`)||r},Yo=(e,t,i,a)=>{const n=t.entity_id,o=t.attributes.device_class,r=Xo(n),s=i[n],l=null==s?void 0:s.translation_key;return l&&e(`component.${s.platform}.entity.${r}.${l}.state_attributes.${a}.name`)||o&&e(`component.${r}.entity_component.${o}.state_attributes.${a}.name`)||e(`component.${r}.entity_component._.state_attributes.${a}.name`)||(c=a.replace(/_/g," ").replace(/\bid\b/g,"ID").replace(/\bip\b/g,"IP").replace(/\bmac\b/g,"MAC").replace(/\bgps\b/g,"GPS")).charAt(0).toUpperCase()+c.slice(1);var c};const Jo={ms:1,s:1e3,min:6e4,h:36e5,d:864e5},Wo=(e,t)=>function(e){const t=Math.floor(e/1e3/3600),i=Math.floor(e/1e3%3600/60),a=Math.floor(e/1e3%3600%60),n=Math.floor(e%1e3);if(t>0)return`${t}:${Qo(i)}:${Qo(a)}`;if(i>0)return`${i}:${Qo(a)}`;if(a>0||n>0)return`${a}${n>0?`.${Qo(n,3)}`:""}`;return null}(parseFloat(e)*Jo[t])||"0",Qo=(e,t=2)=>{let i=""+e;for(let e=1;e<t;e++)i=parseInt(i)<10**e?`0${i}`:i;return i};const er=(e,t)=>tr(t).format(e),tr=e=>new Intl.DateTimeFormat("en"!==e.language||No(e)?e.language:"en-u-hc-h23",{hour:"numeric",minute:"2-digit",hour12:No(e)}),ir=e=>{switch(e.language){case"cz":case"de":case"fi":case"fr":case"sk":case"sv":return" ";default:return""}},ar=(e,t,i,a,n)=>{const o=null==a?void 0:a[t.entity_id];return nr(e,i,o,t.entity_id,t.attributes,void 0!==n?n:t.state)},nr=(e,t,i,a,n,o)=>{if("unknown"===o||"unavailable"===o)return e(`state.default.${o}`);if((e=>!!e.unit_of_measurement||!!e.state_class)(n)){if("duration"===n.device_class&&n.unit_of_measurement&&Jo[n.unit_of_measurement])try{return Wo(o,n.unit_of_measurement)}catch(e){}if("monetary"===n.device_class)try{return Do(o,t,Object.assign({style:"currency",currency:n.unit_of_measurement,minimumFractionDigits:2},Fo({state:o,attributes:n},i)))}catch(e){}const e=n.unit_of_measurement?"%"===n.unit_of_measurement?ir(t)+"%":` ${n.unit_of_measurement}`:"";return`${Do(o,t,Fo({state:o,attributes:n},i))}${e}`}const r=Xo(a);if(["date","input_datetime","time"].includes(r)){if(void 0===o){let e;return n.has_date&&n.has_time?(e=new Date(n.year,n.month-1,n.day,n.hour,n.minute),Oo(e,t)):n.has_date?(e=new Date(n.year,n.month-1,n.day),So(e,t)):n.has_time?(e=new Date,e.setHours(n.hour,n.minute),er(e,t)):o}try{const e=o.split(" ");if(2===e.length)return Oo(new Date(e.join("T")),t);if(1===e.length){if(o.includes("-"))return So(new Date(`${o}T00:00`),t);if(o.includes(":")){const e=new Date;return er(new Date(`${e.toISOString().split("T")[0]}T${o}`),t)}}return o}catch(e){return o}}if("humidifier"===r&&"on"===o&&n.humidity)return`${n.humidity} %`;if("counter"===r||"number"===r||"input_number"===r)return Do(o,t,Fo({state:o,attributes:n},i));if(["button","input_button","scene","stt","tts"].includes(r)||"sensor"===r&&"timestamp"===n.device_class)try{return Oo(new Date(o),t)}catch(e){return o}return(null==i?void 0:i.translation_key)&&e(`component.${i.platform}.entity.${r}.${i.translation_key}.state.${o}`)||n.device_class&&e(`component.${r}.entity_component.${n.device_class}.state.${o}`)||e(`component.${r}.entity_component._.state.${o}`)||o},or={bg:Le,ca:He,cs:tt,da:ut,de:kt,el:Nt,en:Vt,es:Jt,fi:si,fr:hi,he:Pi,hu:ji,is:Bi,it:aa,"nb-NO":pa,nl:xa,pl:Ca,pt:qa,"pt-BR":Qa,ro:dn,ru:yn,sk:Mn,sv:Fn,tr:Yn,uk:ro,zh:ho,"zh-Hant":Po};function rr(e,t="",i="",a="",n=e){const o="en";if(!a)try{a=JSON.parse(localStorage.getItem("selectedLanguage")||`"${o}"`)}catch(e){a=(localStorage.getItem("selectedLanguage")||o).replace(/['"]+/g,"")}let r;try{r=sr(e,null!=a?a:o)}catch(t){r=sr(e,o)}return void 0===r&&(r=sr(e,o)),r=null!=r?r:n,""!==t&&""!==i&&(r=r.replace(t,i)),r}function sr(e,t){try{return e.split(".").reduce(((e,t)=>e[t]),or[t])}catch(e){return}}function lr(e,t,i){return"string"==typeof e?rr(e,"","",t,i):rr(...e,t,i)}function cr(e,t,i,a){var n,o;return lr(e,null!==(n=null==i?void 0:i.language)&&void 0!==n?n:null===(o=null==t?void 0:t.locale)||void 0===o?void 0:o.language,a)}function dr(e,t,i){return"attribute"in t&&void 0!==t.attribute?void 0!==i.attributes[t.attribute]?function(e,t,i){const a=t.attributes[i];if(null===a)return"—";if(Array.isArray(a)&&a.some((e=>e instanceof Object))||!Array.isArray(a)&&a instanceof Object)return JSON.stringify(a);if("number"==typeof a)return Do(a,e.locale);if("string"==typeof a&&Ho(a,!0)){if(Bo(a)){const t=new Date(a);if(To(t))return Ro(t,e.locale)}const t=new Date(a);if(To(t))return So(t,e.locale)}return Array.isArray(a)?a.join(", "):Zo(e.localize,t,e.locale,e.entities,i)}(e,i,t.attribute):e.localize("state.default.unknown"):ar(e.localize,i,e.locale,e.entities)}var ur,mr,pr={default_templates:["vacuum_clean_zone","vacuum_goto"],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"REPEAT",max_repeats:3,id_type:"number",service_call_schema:{service:"xiaomi_miio.vacuum_clean_segment",service_data:{segments:"[[selection]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,max_selections:5,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"xiaomi_miio.vacuum_clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:floor-plan",selection_type:"PREDEFINED_RECTANGLE",max_selections:5,coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"xiaomi_miio.vacuum_clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_goto:{name:"map_mode.vacuum_goto",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"xiaomi_miio.vacuum_goto",service_data:{x_coord:"[[point_x]]",y_coord:"[[point_y]]",entity_id:"[[entity_id]]"}}},vacuum_goto_predefined:{name:"map_mode.vacuum_goto_predefined",icon:"mdi:map-marker",selection_type:"PREDEFINED_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"xiaomi_miio.vacuum_goto",service_data:{x_coord:"[[point_x]]",y_coord:"[[point_y]]",entity_id:"[[entity_id]]"}}},vacuum_follow_path:{name:"map_mode.vacuum_follow_path",icon:"mdi:map-marker-path",selection_type:"MANUAL_PATH",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"script.vacuum_follow_path",service_data:{service:"xiaomi_miio.vacuum_goto",mode:"individual",path:"[[selection]]",entity_id:"[[entity_id]]"}}}}},_r={from_attributes:[{tile_id:"sensor_dirty_left",attribute:"sensor_dirty_left",label:"tile.sensor_dirty_left.label",icon:"mdi:eye-outline",unit:"unit.hour_shortcut",hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"sensor_dirty_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"filter_left",attribute:"filter_left",label:"tile.filter_left.label",icon:"mdi:air-filter",unit:"unit.hour_shortcut",hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"filter_work_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"main_brush_left",attribute:"main_brush_left",label:"tile.main_brush_left.label",icon:"mdi:brush",unit:"unit.hour_shortcut",hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"main_brush_work_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"side_brush_left",attribute:"side_brush_left",label:"tile.side_brush_left.label",icon:"mdi:brush",unit:"unit.hour_shortcut",hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"side_brush_work_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"cleaning_count",attribute:"cleaning_count",label:"tile.cleaning_count.label",icon:"mdi:counter"}],from_sensors:[{tile_id:"sensor_dirty_left",unique_id_regex:"consumable_sensor_dirty_left_",label:"tile.sensor_dirty_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778,hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"sensor_dirty_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"filter_left",unique_id_regex:"consumable_filter_left_",label:"tile.filter_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778,hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"filter_work_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"main_brush_left",unique_id_regex:"consumable_main_brush_left_",label:"tile.main_brush_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778,hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"main_brush_work_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"side_brush_left",unique_id_regex:"consumable_side_brush_left_",label:"tile.side_brush_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778,hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"side_brush_work_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"cleaning_count",unique_id_regex:"clean_history_count_",label:"tile.cleaning_count.label"}]},vr={map_modes:pr,tiles:_r},gr=Object.freeze({__proto__:null,map_modes:pr,tiles:_r,default:vr}),hr={default_templates:["vacuum_clean_zone","vacuum_goto"],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"REPEAT",max_repeats:3,service_call_schema:{service:"vacuum.vacuum_clean_segment",service_data:{segments:"[[selection]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!1,coordinates_to_meters_divider:1,max_selections:5,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"vacuum.vacuum_clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:floor-plan",selection_type:"PREDEFINED_RECTANGLE",max_selections:5,coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"vacuum.vacuum_clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_goto:{name:"map_mode.vacuum_goto",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"NONE",service_call_schema:{service:"vacuum.vacuum_goto",service_data:{x_coord:"[[point_x]]",y_coord:"[[point_y]]",entity_id:"[[entity_id]]"}}},vacuum_goto_predefined:{name:"map_mode.vacuum_goto_predefined",icon:"mdi:map-marker",selection_type:"PREDEFINED_POINT",coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"NONE",service_call_schema:{service:"vacuum.vacuum_goto",service_data:{x_coord:"[[point_x]]",y_coord:"[[point_y]]",entity_id:"[[entity_id]]"}}},vacuum_follow_path:{name:"map_mode.vacuum_follow_path",icon:"mdi:map-marker-path",selection_type:"MANUAL_PATH",coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"NONE",service_call_schema:{service:"script.vacuum_follow_path",service_data:{service:"vacuum.vacuum_goto",mode:"individual",path:"[[selection]]",entity_id:"[[entity_id]]"}}}}},fr={from_attributes:[{tile_id:"cleaned_area",attribute:"cleaned_area",label:"tile.cleaned_area.label",icon:"mdi:texture-box",unit:"unit.meter_squared_shortcut"},{tile_id:"cleaning_time",attribute:"cleaning_time",label:"tile.cleaning_time.label",icon:"mdi:timer-sand",unit:"unit.minute_shortcut"}]},br={map_modes:hr,tiles:fr},yr=Object.freeze({__proto__:null,map_modes:hr,tiles:fr,default:br}),kr={default_templates:["vacuum_clean_zone","vacuum_clean_point"],templates:{vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!1,coordinates_to_meters_divider:1,max_selections:5,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"vacuum.xiaomi_clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:floor-plan",selection_type:"PREDEFINED_RECTANGLE",max_selections:5,coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"vacuum.xiaomi_clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_clean_point:{name:"map_mode.vacuum_clean_point",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"NONE",service_call_schema:{service:"vacuum.xiaomi_clean_point",service_data:{point:"[[selection]]",entity_id:"[[entity_id]]"}}},vacuum_clean_point_predefined:{name:"map_mode.vacuum_clean_point_predefined",icon:"mdi:map-marker",selection_type:"PREDEFINED_POINT",coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"NONE",service_call_schema:{service:"vacuum.xiaomi_clean_point",service_data:{point:"[[selection]]",entity_id:"[[entity_id]]"}}},vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",max_selections:5,repeats_type:"NONE",service_call_schema:{service:"vacuum.send_command",evaluate_data_as_template:!0,service_data:{entity_id:"[[entity_id]]",command:"set_mode_withroom",params:"[ \"{{state_attr('[[entity_id]]', 'is_mop')}}\", 1, [[selection_size]], [[selection_unwrapped]] ]|[[jsonify]]"}}}}},Ar={from_attributes:[{tile_id:"filter_left",attribute:"filter_left",label:"tile.filter_left.label",icon:"mdi:air-filter",unit:"unit.hour_shortcut"},{tile_id:"main_brush_left",attribute:"main_brush_left",label:"tile.main_brush_left.label",icon:"mdi:brush",unit:"unit.hour_shortcut"},{tile_id:"side_brush_left",attribute:"side_brush_left",label:"tile.side_brush_left.label",icon:"mdi:brush",unit:"unit.hour_shortcut"},{tile_id:"mop_left",attribute:"mop_left",label:"tile.mop_left.label",icon:"mdi:format-color-fill",unit:"unit.hour_shortcut"}]},xr={map_modes:kr,tiles:Ar},Er=Object.freeze({__proto__:null,map_modes:kr,tiles:Ar,default:xr}),wr={default_templates:["vacuum_clean_zone","vacuum_goto"],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"EXTERNAL",max_repeats:3,id_type:"number",service_call_schema:{service:"mqtt.publish",evaluate_data_as_template:!0,service_data:{topic:"[[topic]]/custom_command",payload:'{ "command": "segmented_cleanup", "segment_ids": [[selection]], "repeats": [[repeats]], "afterCleaning": "{{ \'Base\' if \'afterCleaning\' in \'[[afterCleaning]]\' else \'[[afterCleaning]]\'}}" }'}}},vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"EXTERNAL",max_selections:5,max_repeats:3,service_call_schema:{service:"mqtt.publish",evaluate_data_as_template:!0,service_data:{topic:"[[topic]]/custom_command",payload:'{"command": "zoned_cleanup","zone_coordinates": [{%for s in (\'[[selection]]\')|from_json %}{ "x1": {{s[0]}}, "y1": {{s[1]}}, "x2": {{s[2]}}, "y2": {{s[3]}}, "repeats": [[repeats]]}{%if not loop.last%},{%endif%}{%endfor%}],"afterCleaning": "{{ \'Base\' if \'afterCleaning\' in \'[[afterCleaning]]\' else \'[[afterCleaning]]\'}}"}'}}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"mqtt.publish",evaluate_data_as_template:!0,service_data:{topic:"[[topic]]/custom_command",payload:'{"command": "zoned_cleanup","zone_ids": [{%for s in (\'[[selection]]\')|from_json %}{ "id": "{{s}}", "repeats": [[repeats]]}{%if not loop.last%},{%endif%}{%endfor%}],"afterCleaning": "{{ \'Base\' if \'afterCleaning\' in \'[[afterCleaning]]\' else \'[[afterCleaning]]\'}}"}'}}},vacuum_goto:{name:"map_mode.vacuum_goto",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"mqtt.publish",service_data:{topic:"[[topic]]/custom_command",payload:'{ "command": "go_to", "spot_coordinates": { "x": [[point_x]], "y": [[point_y]] } }'}}},vacuum_goto_predefined:{name:"map_mode.vacuum_goto_predefined",icon:"mdi:map-marker",max_selections:1,selection_type:"ROOM",repeats_type:"NONE",service_call_schema:{service:"mqtt.publish",service_data:{topic:"[[topic]]/custom_command",payload:'{ "command": "go_to", "spot_id": "[[selection_unwrapped]]" }'}}}}},zr={from_attributes:[{tile_id:"filter_left",attribute:"filter",label:"tile.filter_left.label",icon:"mdi:air-filter",unit:"unit.hour_shortcut",hold_action:{action:"call-service",service:"mqtt.publish",confirmation:{},service_data:{topic:"[[topic]]/custom_command",payload:'{"command": "reset_consumable",\n"consumable": "filter_work_time"}'}}},{tile_id:"main_brush_left",attribute:"mainBrush",label:"tile.main_brush_left.label",icon:"mdi:brush",unit:"unit.hour_shortcut",hold_action:{action:"call-service",service:"mqtt.publish",confirmation:{},service_data:{topic:"[[topic]]/custom_command",payload:'{"command": "reset_consumable",\n"consumable": "main_brush_work_time"}'}}},{tile_id:"side_brush_left",attribute:"sideBrush",label:"tile.side_brush_left.label",icon:"mdi:brush",unit:"unit.hour_shortcut",hold_action:{action:"call-service",service:"mqtt.publish",confirmation:{},service_data:{topic:"[[topic]]/custom_command",payload:'{"command": "reset_consumable",\n"consumable": "side_brush_work_time"}'}}}]},Pr={map_modes:wr,tiles:zr},Tr=Object.freeze({__proto__:null,map_modes:wr,tiles:zr,default:Pr}),Sr={default_templates:["vacuum_clean_zone","vacuum_goto"],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"REPEAT",max_repeats:3,service_call_schema:{service:"vacuum.send_command",service_data:{command:"app_segment_clean",params:"[[selection]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,max_selections:5,repeats_type:"INTERNAL",max_repeats:3,service_call_schema:{service:"vacuum.send_command",service_data:{command:"app_zoned_clean",params:"[[selection]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:floor-plan",selection_type:"PREDEFINED_RECTANGLE",max_selections:5,coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"INTERNAL",max_repeats:3,service_call_schema:{service:"vacuum.send_command",service_data:{command:"app_zoned_clean",params:"[[selection]]",entity_id:"[[entity_id]]"}}},vacuum_goto:{name:"map_mode.vacuum_goto",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"vacuum.send_command",service_data:{command:"app_goto_target",params:"[[selection]]",entity_id:"[[entity_id]]"}}},vacuum_goto_predefined:{name:"map_mode.vacuum_goto_predefined",icon:"mdi:map-marker",selection_type:"PREDEFINED_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"vacuum.send_command",service_data:{command:"app_goto_target",params:"[[selection]]",entity_id:"[[entity_id]]"}}},vacuum_follow_path:{name:"map_mode.vacuum_follow_path",icon:"mdi:map-marker-path",selection_type:"MANUAL_PATH",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"script.vacuum_follow_path",service_data:{service:"vacuum.send_command",mode:"send_command",path:"[[selection]]",entity_id:"[[entity_id]]"}}}}},Mr={from_attributes:[],from_sensors:[]},Nr={map_modes:Sr,tiles:Mr},Or=Object.freeze({__proto__:null,map_modes:Sr,tiles:Mr,default:Nr}),Cr={default_templates:[],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"EXTERNAL",max_selections:1,max_repeats:3,service_call_schema:{service:"xiaomi_miot.call_action"}},vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,max_selections:1,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"xiaomi_miot.call_action"}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:floor-plan",selection_type:"PREDEFINED_RECTANGLE",max_selections:1,coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"xiaomi_miot.call_action"}}}},Rr={from_attributes:[{tile_id:"status",attribute:"vacuum.status_desc",label:"tile.status.label",icon:"mdi:robot-vacuum",translation_keys:["starting","charger disconnected","idle","remote control active","cleaning","returning home","manual mode","charging","charging problem","paused","spot cleaning","error","shutting down","updating","docking","going to target","zoned cleaning","segment cleaning","emptying the bin","charging complete","device offline"]}]},Lr={map_modes:Cr,tiles:Rr},$r=Object.freeze({__proto__:null,map_modes:Cr,tiles:Rr,default:Lr}),jr={default_templates:["vacuum_clean_zone","vacuum_clean_point"],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"REPEAT",max_repeats:3,service_call_schema:{service:"viomi_vacuum_v8.clean_segment",service_data:{segments:"[[selection]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!1,coordinates_to_meters_divider:1,max_selections:5,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"viomi_vacuum_v8.clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:floor-plan",selection_type:"PREDEFINED_RECTANGLE",max_selections:5,coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"viomi_vacuum_v8.clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_clean_point:{name:"map_mode.vacuum_clean_point",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"NONE",service_call_schema:{service:"viomi_vacuum_v8.clean_point",service_data:{point:"[[selection]]",entity_id:"[[entity_id]]"}}},vacuum_clean_point_predefined:{name:"map_mode.vacuum_clean_point_predefined",icon:"mdi:map-marker",selection_type:"PREDEFINED_POINT",coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"NONE",service_call_schema:{service:"viomi_vacuum_v8.clean_point",service_data:{point:"[[selection]]",entity_id:"[[entity_id]]"}}}}},Ir={from_attributes:[{tile_id:"cleaned_area",attribute:"cleaned_area",label:"tile.cleaned_area.label",icon:"mdi:texture-box",unit:"unit.meter_squared_shortcut"},{tile_id:"cleaning_time",attribute:"cleaning_time",label:"tile.cleaning_time.label",icon:"mdi:timer-sand",unit:"unit.minute_shortcut"}]},Dr={map_modes:jr,tiles:Ir},Fr=Object.freeze({__proto__:null,map_modes:jr,tiles:Ir,default:Dr}),Vr={default_templates:["vacuum_clean_zone","vacuum_goto"],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"mqtt.publish",service_data:{topic:"[[topic]]/MapSegmentationCapability/clean/set",payload:'{"segment_ids": [[selection]], "iterations": [[repeats]], "customOrder": true}'}}},vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!0,coordinates_to_meters_divider:100,repeats_type:"EXTERNAL",max_selections:5,max_repeats:3,service_call_schema:{service:"mqtt.publish",evaluate_data_as_template:!0,service_data:{topic:"[[topic]]/ZoneCleaningCapability/start/set",payload:'{"zones": [{%for s in (\'[[selection]]\')|from_json %}{ "points": {"pA": { "x": {{s[0]}}, "y": {{s[1]}} }, "pB": { "x": {{s[2]}}, "y": {{s[1]}} }, "pC": { "x": {{s[2]}}, "y": {{s[3]}} }, "pD": { "x": {{s[0]}}, "y": {{s[3]}} } } }{%if not loop.last%},{%endif%}{%endfor%}], "iterations": [[repeats]]}'}}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:floor-plan",selection_type:"PREDEFINED_RECTANGLE",repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"mqtt.publish",evaluate_data_as_template:!0,service_data:{topic:"[[topic]]/ZoneCleaningCapability/start/set",payload:'{"zones": [{%for s in (\'[[selection]]\')|from_json %}{ "points": {"pA": { "x": {{s[0]}}, "y": {{s[1]}} }, "pB": { "x": {{s[2]}}, "y": {{s[1]}} }, "pC": { "x": {{s[2]}}, "y": {{s[3]}} }, "pD": { "x": {{s[0]}}, "y": {{s[3]}} } } }{%if not loop.last%},{%endif%}{%endfor%}], "iterations": [[repeats]]}'}}},vacuum_goto:{name:"map_mode.vacuum_goto",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:100,repeats_type:"NONE",service_call_schema:{service:"mqtt.publish",service_data:{topic:"[[topic]]/GoToLocationCapability/go/set",payload:'{ "coordinates": { "x": [[point_x]], "y": [[point_y]] } }'}}},vacuum_goto_predefined:{name:"map_mode.vacuum_goto_predefined",icon:"mdi:map-marker",max_selections:1,selection_type:"ROOM",repeats_type:"NONE",service_call_schema:{service:"mqtt.publish",service_data:{topic:"[[topic]]/GoToLocationCapability/go/set",payload:'{ "coordinates": { "x": "[[point_x]]", "y": "[[point_y]]" } }'}}}}},Ur={from_sensors:[{tile_id:"filter_left",unique_id_regex:"_sensor_ConsumableMonitoringCapability_filter_main",label:"tile.filter_left.label",icon:"mdi:air-filter",unit:"unit.hour_shortcut",multiplier:.016666666666666666},{tile_id:"main_brush_left",unique_id_regex:"_sensor_ConsumableMonitoringCapability_brush_main",label:"tile.main_brush_left.label",icon:"mdi:brush",unit:"unit.hour_shortcut",multiplier:.016666666666666666},{tile_id:"side_brush_left",unique_id_regex:"_sensor_ConsumableMonitoringCapability_brush_side_right",label:"tile.side_brush_left.label",icon:"mdi:brush",unit:"unit.hour_shortcut",multiplier:.016666666666666666},{tile_id:"cleaned_area",unique_id_regex:"_sensor_CurrentStatisticsCapability_area",label:"tile.cleaned_area.label",icon:"mdi:texture-box",unit:"unit.meter_squared_shortcut",multiplier:1e-4},{tile_id:"cleaning_time",unique_id_regex:"_sensor_CurrentStatisticsCapability_time",label:"tile.cleaning_time.label",icon:"mdi:timer-sand",unit:"unit.minute_shortcut",multiplier:.016666666666666666}]},qr={map_modes:Vr,tiles:Ur},Kr=Object.freeze({__proto__:null,map_modes:Vr,tiles:Ur,default:qr}),Hr={default_templates:[],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"NONE",service_call_schema:{service:"neato.custom_cleaning",service_data:{zone:"[[selection_unwrapped]]",entity_id:"[[entity_id]]"}}}}},Gr={from_attributes:[{tile_id:"cleaned_area",attribute:"clean_area",label:"tile.cleaned_area.label",icon:"mdi:texture-box",unit:"unit.meter_squared_shortcut"}]},Br=[{vacuum:{x:0,y:0},map:{x:0,y:0}},{vacuum:{x:1,y:0},map:{x:1,y:0}},{vacuum:{x:0,y:1},map:{x:0,y:1}}],Xr={map_modes:Hr,tiles:Gr,calibration_points:Br},Zr=Object.freeze({__proto__:null,map_modes:Hr,tiles:Gr,calibration_points:Br,default:Xr}),Yr={default_templates:[],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"EXTERNAL",max_repeats:2,service_call_schema:{service:"vacuum.send_command",evaluate_data_as_template:!0,service_data:{entity_id:"[[entity_id]]",command:"start",params:{pmap_id:"[[pmap_id]]",regions:'[{%set s=\'[[selection]]\'|from_json%}{%set v=\'[[variables]]\'|from_json%}{%for i in range(s|length)%} {"params": {"noAutoPasses": true, "twoPass": {{ (([[repeats]] == 2) | string).lower() }}}, "region_id": "{{s[i]}}", "type": "{{v[i][\'type\']}}" }{%if not loop.last%},{%endif%}{%endfor%}]|[[jsonify_jinja]]'}}}}}},Jr={from_attributes:[{tile_id:"bin_present",attribute:"bin_present",label:"tile.bin_present.label",icon:"mdi:delete-restore",translation_keys:["true","false"]},{tile_id:"bin_full",attribute:"bin_full",label:"tile.bin_full.label",icon:"mdi:delete",translation_keys:["true","false"]}]},Wr=[{vacuum:{x:0,y:0},map:{x:0,y:0}},{vacuum:{x:1,y:0},map:{x:1,y:0}},{vacuum:{x:0,y:1},map:{x:0,y:1}}],Qr={map_modes:Yr,tiles:Jr,calibration_points:Wr},es=Object.freeze({__proto__:null,map_modes:Yr,tiles:Jr,calibration_points:Wr,default:Qr}),ts={default_templates:["vacuum_clean_zone"],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"EXTERNAL",max_repeats:2,service_call_schema:{service:"vacuum.send_command",service_data:{entity_id:"[[entity_id]]",command:"spot_area",params:{rooms:"[[selection_unwrapped]]",cleanings:"[[repeats]]"}}}},vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!0,coordinates_to_meters_divider:-1,repeats_type:"NONE",max_selections:1,service_call_schema:{service:"vacuum.send_command",service_data:{entity_id:"[[entity_id]]",command:"custom_area",params:{coordinates:"[[selection_unwrapped]]"}}}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:floor-plan",selection_type:"PREDEFINED_RECTANGLE",max_selections:1,coordinates_rounding:!0,coordinates_to_meters_divider:-1,repeats_type:"NONE",service_call_schema:{service:"vacuum.send_command",service_data:{entity_id:"[[entity_id]]",command:"custom_area",params:{coordinates:"[[selection_unwrapped]]"}}}}}},is={from_sensors:[{tile_id:"water_amount",unique_id_regex:"_water_amount",label:"tile.water_amount.label",icon:"mdi:water"},{tile_id:"cleaning_time",unique_id_regex:"_stats_time",label:"tile.cleaning_time.label",icon:"mdi:timer-sand",unit:"unit.minute_shortcut"},{tile_id:"cleaned_area",unique_id_regex:"_stats_area",label:"tile.cleaned_area.label",icon:"mdi:texture-box",unit:"unit.meter_squared_shortcut"},{tile_id:"mop_attached",unique_id_regex:"_mop_attached",label:"tile.mop_attached.label",icon:"mdi:water"},{tile_id:"cleaning_time",unique_id_regex:"_stats_time",label:"tile.cleaning_time.label",icon:"mdi:timer-sand",unit:"unit.minute_shortcut"},{tile_id:"total_cleaned_area",unique_id_regex:"_stats_total_area",label:"tile.total_cleaned_area.label",icon:"mdi:texture-box",unit:"unit.meter_squared_shortcut"},{tile_id:"cleaning_time",unique_id_regex:"_stats_total_time",label:"tile.total_cleaning_time.label",icon:"mdi:timer-sand",unit:"unit.hour_shortcut"},{tile_id:"cleaning_count",unique_id_regex:"_stats_total_cleanings",label:"tile.cleaning_count.label"}]},as=[{type:"menu",menu_id:"water_amount",icon_id:"water_amount",unique_id_regex:"_water_amount",available_values_attribute:"options",icon:"mdi:water",icon_mapping:{low:"mdi:water-minus",medium:"mdi:water",high:"mdi:water-plus",ultrahigh:"mdi:water-alert"},tap_action:{action:"call-service",service:"select.select_option",service_data:{option:"[[value]]",entity_id:"[[entity_id]]"}}}],ns=[{vacuum:{x:0,y:0},map:{x:400,y:400}},{vacuum:{x:6400,y:0},map:{x:528,y:400}},{vacuum:{x:0,y:6400},map:{x:400,y:528}}],os={map_modes:ts,tiles:is,icons:as,calibration_points:ns},rs=Object.freeze({__proto__:null,map_modes:ts,tiles:is,icons:as,calibration_points:ns,default:os}),ss={default_templates:["vacuum_clean_zone","vacuum_clean_point","vacuum_goto"],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"EXTERNAL",max_repeats:3,max_selections:60,service_call_schema:{service:"dreame_vacuum.vacuum_clean_segment",service_data:{segments:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,max_selections:20,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"dreame_vacuum.vacuum_clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:vector-selection",selection_type:"PREDEFINED_RECTANGLE",max_selections:20,coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"dreame_vacuum.vacuum_clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_clean_point:{name:"map_mode.vacuum_clean_point",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"dreame_vacuum.vacuum_clean_spot",service_data:{points:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_clean_point_predefined:{name:"map_mode.vacuum_clean_point_predefined",icon:"mdi:map-marker",selection_type:"PREDEFINED_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"EXTERNAL",max_selections:20,max_repeats:3,service_call_schema:{service:"dreame_vacuum.vacuum_clean_spot",service_data:{points:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_goto:{name:"map_mode.vacuum_goto",icon:"mdi:map-marker-radius",selection_type:"MANUAL_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",max_repeats:0,max_selections:1,service_call_schema:{service:"dreame_vacuum.vacuum_goto",service_data:{x:"[[point_x]]",y:"[[point_y]]",entity_id:"[[entity_id]]"}}},vacuum_goto_predefined:{name:"map_mode.vacuum_goto_predefined",icon:"mdi:map-marker-multiple",selection_type:"PREDEFINED_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",max_repeats:0,max_selections:1,service_call_schema:{service:"dreame_vacuum.vacuum_goto",service_data:{x:"[[point_x]]",y:"[[point_y]]",entity_id:"[[entity_id]]"}}},vacuum_follow_path:{name:"map_mode.vacuum_follow_path",icon:"mdi:map-marker-path",selection_type:"MANUAL_PATH",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",max_repeats:0,max_selections:20,service_call_schema:{service:"dreame_vacuum.vacuum_follow_path",service_data:{points:"[[selection]]",entity_id:"[[entity_id]]"}}}}},ls={from_attributes:[{tile_id:"water_volume",attribute:"water_volume",label:"tile.water_volume.label",icon:"mdi:water"},{tile_id:"mop_pad_humidity",attribute:"mop_pad_humidity",label:"tile.mop_pad_humidity.label",icon:"mdi:water-percent"},{tile_id:"cleaned_area",attribute:"cleaned_area",label:"tile.cleaned_area.label",icon:"mdi:ruler-square",unit:"unit.meter_squared_shortcut"},{tile_id:"cleaning_time",attribute:"cleaning_time",label:"tile.cleaning_time.label",icon:"mdi:timer-sand",unit:"unit.minute_shortcut"},{tile_id:"cleaning_count",attribute:"cleaning_count",label:"tile.cleaning_count.label",icon:"mdi:counter",unit:"x"},{tile_id:"total_cleaned_area",attribute:"total_cleaned_area",label:"tile.total_cleaned_area.label",icon:"mdi:set-square",unit:"unit.meter_squared_shortcut"},{tile_id:"cleaning_mode",attribute:"cleaning_mode",label:"tile.cleaning_mode.label",icon:"mdi:vacuum",translation_keys:["sweeping","mopping","sweeping and mopping","mopping after sweeping"]},{tile_id:"suction_level",attribute:"suction_level",label:"tile.suction_level.label",icon:"mdi:mdi:fan",translation_keys:["quiet","standard","strong","turbo"]},{tile_id:"tight_mopping",attribute:"tight_mopping",label:"tile.tight_mopping.label",icon:"mdi:heating-coil",translation_keys:["true","false"]},{tile_id:"wetness_level",attribute:"wetness_level",label:"tile.wetness_level.label",icon:"mdi:water-opacity"},{tile_id:"mop_wash_level",attribute:"mop_wash_level",label:"tile.mop_wash_level.label",icon:"mdi:water-opacity",translation_keys:["deep","daily","water saving"]},{tile_id:"auto_empty_mode",attribute:"auto_empty_mode",label:"tile.auto_empty_mode.label",icon:"mdi:delete-empty-outline",translation_keys:["off","standard","high frequency","low frequency"]},{tile_id:"cleaning_route",attribute:"cleaning_route",label:"tile.cleaning_route.label",icon:"mdi:routes",translation_keys:["quick","standard"]},{tile_id:"cleangenius",attribute:"cleangenius",label:"tile.cleangenius.label",icon:"mdi:auto-mode",translation_keys:["off","routine cleaning","deep cleaning"]}]},cs=[{type:"menu",menu_id:"water_volume",icon_id:"water_volume",unique_id_regex:"_water_volume",available_values_attribute:"options",icon:"mdi:water-off",icon_mapping:{low:"mdi:water-minus",medium:"mdi:water",high:"mdi:water-plus"},tap_action:{action:"call-service",service:"select.select_option",service_data:{option:"[[value]]",entity_id:"[[entity_id]]"}}},{type:"menu",menu_id:"mop_pad_humidity",icon_id:"mop_pad_humidity",unique_id_regex:"_mop_pad_humidity",available_values_attribute:"options",icon:"mdi:water-off",icon_mapping:{slightly_dry:"mdi:water-minus",moist:"mdi:water",wet:"mdi:water-plus"},tap_action:{action:"call-service",service:"select.select_option",service_data:{option:"[[value]]",entity_id:"[[entity_id]]"}}},{type:"menu",menu_id:"suction_level",icon_id:"suction_level",unique_id_regex:"suction_level",available_values_attribute:"options",icon:"mdi:water-off",icon_mapping:{quiet:"mdi:fan-speed-1",standard:"mdi:fan-speed-2",strong:"mdi:fan-speed-3",turbo:"mdi:weather-windy"},tap_action:{action:"call-service",service:"select.select_option",service_data:{option:"[[value]]",entity_id:"[[entity_id]]"}}},{type:"menu",menu_id:"cleaning_mode",icon_id:"cleaning_mode",unique_id_regex:"cleaning_mode",available_values_attribute:"options",icon:"mdi:hydro-power",icon_mapping:{sweeping:"mdi:broom",mopping:"mdi:cup-water"},tap_action:{action:"call-service",service:"select.select_option",service_data:{option:"[[value]]",entity_id:"[[entity_id]]"}}}],ds={map_modes:ss,tiles:ls,icons:cs},us=Object.freeze({__proto__:null,map_modes:ss,tiles:ls,icons:cs,default:ds}),ms={default_templates:["vacuum_clean_zone","vacuum_goto"],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"EXTERNAL",max_repeats:3,id_type:"number",service_call_schema:{service:"roborock.vacuum_clean_segment",service_data:{segments:"[[selection]]",entity_id:"[[entity_id]]",repeats:"[[repeats]]"}}},vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,max_selections:5,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"roborock.vacuum_clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:floor-plan",selection_type:"PREDEFINED_RECTANGLE",max_selections:5,coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"roborock.vacuum_clean_zone",service_data:{zone:"[[selection]]",repeats:"[[repeats]]",entity_id:"[[entity_id]]"}}},vacuum_goto:{name:"map_mode.vacuum_goto",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"roborock.vacuum_goto",service_data:{x_coord:"[[point_x]]",y_coord:"[[point_y]]",entity_id:"[[entity_id]]"}}},vacuum_goto_predefined:{name:"map_mode.vacuum_goto_predefined",icon:"mdi:map-marker",selection_type:"PREDEFINED_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"roborock.vacuum_goto",service_data:{x_coord:"[[point_x]]",y_coord:"[[point_y]]",entity_id:"[[entity_id]]"}}},vacuum_follow_path:{name:"map_mode.vacuum_follow_path",icon:"mdi:map-marker-path",selection_type:"MANUAL_PATH",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"script.vacuum_follow_path",service_data:{service:"roborock.vacuum_goto",mode:"individual",path:"[[selection]]",entity_id:"[[entity_id]]"}}}}},ps={from_sensors:[{tile_id:"sensor_dirty_left",unique_id_regex:"consumable_sensor_dirty_left_",label:"tile.sensor_dirty_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778,hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"sensor_dirty_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"filter_left",unique_id_regex:"consumable_filter_left_",label:"tile.filter_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778,hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"filter_work_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"main_brush_left",unique_id_regex:"consumable_main_brush_left_",label:"tile.main_brush_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778,hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"main_brush_work_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"side_brush_left",unique_id_regex:"consumable_side_brush_left_",label:"tile.side_brush_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778,hold_action:{action:"call-service",service:"vacuum.send_command",confirmation:{},service_data:{command:"reset_consumable",params:"side_brush_work_time",entity_id:"[[vacuum_entity_id]]"}}},{tile_id:"cleaning_count",unique_id_regex:"clean_history_count_",label:"tile.cleaning_count.label"},{tile_id:"cleaned_area",unique_id_regex:"current_clean_area_",label:"tile.cleaned_area.label",unit:"unit.meter_squared_shortcut",precision:2},{tile_id:"cleaning_time",unique_id_regex:"current_clean_time_",label:"tile.cleaning_time.label",unit:"unit.minute_shortcut",multiplier:.016667}]},_s=[{type:"menu",menu_id:"water_box_mode",icon_id:"water_box_mode",unique_id_regex:"water_box_mode_",available_values_attribute:"options",icon:"mdi:water",icon_mapping:{off:"mdi:water-remove",mild:"mdi:water-minus",moderate:"mdi:water",intense:"mdi:water-plus",custom:"mdi:water-sync"},tap_action:{action:"call-service",service:"select.select_option",service_data:{option:"[[value]]",entity_id:"[[entity_id]]"}}},{type:"menu",menu_id:"mop_mode",icon_id:"mop_mode",unique_id_regex:"mop_mode_",available_values_attribute:"options",icon:"mdi:water",icon_mapping:{standard:"mdi:standard-definition",deep:"mdi:high-definition",deep_plus:"mdi:ultra-high-definition",custom:"mdi:fit-to-screen-outline"},tap_action:{action:"call-service",service:"select.select_option",service_data:{option:"[[value]]",entity_id:"[[entity_id]]"}}}],vs={map_modes:ms,tiles:ps,icons:_s},gs=Object.freeze({__proto__:null,map_modes:ms,tiles:ps,icons:_s,default:vs}),hs={default_templates:["vacuum_clean_zone","vacuum_goto"],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"EXTERNAL",max_repeats:3,id_type:"number",service_call_schema:{service:"vacuum.send_command",service_data:{command:"app_segment_clean",params:[{segments:"[[selection]]",repeats:"[[repeats]]"}],entity_id:"[[entity_id]]"}}},vacuum_clean_zone:{name:"map_mode.vacuum_clean_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,max_selections:5,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"vacuum.send_command",service_data:{command:"app_zoned_clean",params:[{zone:"[[selection]]",repeats:"[[repeats]]"}],entity_id:"[[entity_id]]"}}},vacuum_clean_zone_predefined:{name:"map_mode.vacuum_clean_zone_predefined",icon:"mdi:floor-plan",selection_type:"PREDEFINED_RECTANGLE",max_selections:5,coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"EXTERNAL",max_repeats:3,service_call_schema:{service:"vacuum.send_command",service_data:{command:"app_zoned_clean",params:[{zone:"[[selection]]",repeats:"[[repeats]]"}],entity_id:"[[entity_id]]"}}},vacuum_goto:{name:"map_mode.vacuum_goto",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"roborock.set_vacuum_goto_position",service_data:{x:"[[point_x]]",y:"[[point_y]]",entity_id:"[[entity_id]]"}}},vacuum_goto_predefined:{name:"map_mode.vacuum_goto_predefined",icon:"mdi:map-marker",selection_type:"PREDEFINED_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"roborock.set_vacuum_goto_position",service_data:{x:"[[point_x]]",y:"[[point_y]]",entity_id:"[[entity_id]]"}}},vacuum_follow_path:{name:"map_mode.vacuum_follow_path",icon:"mdi:map-marker-path",selection_type:"MANUAL_PATH",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"script.vacuum_follow_path",service_data:{service:"roborock.vacuum_goto",mode:"individual",path:"[[selection]]",entity_id:"[[entity_id]]"}}}}},fs={from_sensors:[{tile_id:"main_brush_left",icon:"mdi:brush",unique_id_regex:"main_brush_time_left_",label:"tile.main_brush_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778},{tile_id:"sensor_dirty_left",icon:"mdi:eye-outline",unique_id_regex:"sensor_time_left_",label:"tile.sensor_dirty_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778},{tile_id:"filter_left",icon:"mdi:air-filter",unique_id_regex:"filter_time_left_",label:"tile.filter_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778},{tile_id:"side_brush_left",unique_id_regex:"side_brush_time_left_",icon:"mdi:brush",label:"tile.side_brush_left.label",unit:"unit.hour_shortcut",multiplier:.0002777777777777778},{tile_id:"cleaning_count",icon:"mdi:counter",unique_id_regex:"total_cleaning_count_",label:"tile.cleaning_count.label"},{tile_id:"cleaned_area",icon:"mdi:texture-box",unique_id_regex:"cleaning_area_",label:"tile.cleaned_area.label",unit:"unit.meter_squared_shortcut",precision:2},{tile_id:"cleaning_time",icon:"mdi:history",unique_id_regex:"cleaning_time_",label:"tile.cleaning_time.label",unit:"unit.minute_shortcut",multiplier:.016667}]},bs=[{type:"menu",menu_id:"water_box_mode",icon_id:"water_box_mode",unique_id_regex:"water_box_mode_",available_values_attribute:"options",icon:"mdi:water",icon_mapping:{off:"mdi:water-remove",mild:"mdi:water-minus",moderate:"mdi:water",intense:"mdi:water-plus",custom:"mdi:water-sync"},tap_action:{action:"call-service",service:"select.select_option",service_data:{option:"[[value]]",entity_id:"[[entity_id]]"}}},{type:"menu",menu_id:"mop_mode",icon_id:"mop_mode",unique_id_regex:"mop_mode_",available_values_attribute:"options",icon:"mdi:water",icon_mapping:{standard:"mdi:standard-definition",deep:"mdi:high-definition",deep_plus:"mdi:ultra-high-definition",custom:"mdi:fit-to-screen-outline"},tap_action:{action:"call-service",service:"select.select_option",service_data:{option:"[[value]]",entity_id:"[[entity_id]]"}}}],ys={map_modes:hs,tiles:fs,icons:bs},ks=Object.freeze({__proto__:null,map_modes:hs,tiles:fs,icons:bs,default:ys}),As={default_templates:[],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",repeats_type:"NONE",max_selection:"20",service_call_schema:{service:"vacuum.send_command",service_data:{entity_id:"[[entity_id]]",command:"sweep_rooms",params:{rooms:"[[selection]]"}}}}}},xs={from_attributes:[{tile_id:"filter_left",attribute:"filter",label:"tile.filter_left.label",icon:"mdi:air-filter",unit:"unit.hour_shortcut"},{tile_id:"main_brush_left",attribute:"main_brush",label:"tile.main_brush_left.label",icon:"mdi:brush",unit:"unit.hour_shortcut"},{tile_id:"side_brush_left",attribute:"side_brush",label:"tile.side_brush_left.label",icon:"mdi:brush",unit:"unit.hour_shortcut"}]},Es=[{vacuum:{x:0,y:0},map:{x:0,y:0}},{vacuum:{x:1,y:0},map:{x:1,y:0}},{vacuum:{x:0,y:1},map:{x:0,y:1}}],ws={map_modes:As,tiles:xs,calibration_points:Es},zs=Object.freeze({__proto__:null,map_modes:As,tiles:xs,calibration_points:Es,default:ws}),Ps={default_templates:[],templates:{vacuum_clean_segment:{name:"map_mode.vacuum_clean_segment",icon:"mdi:floor-plan",selection_type:"ROOM",service_call_schema:{service:"myneato.custom_cleaning",service_data:{zone:"[[selection_unwrapped]]",entity_id:"[[entity_id]]",mode:"[[mode]]"}}}}},Ts=[{type:"single",menu_id:"mode_selector",icon:"mdi:fan-speed-1",label:"Eco",tap_action:{action:"fire-dom-event",xiaomi_vacuum_map_card:{action_handler_id:"this",action:"internal_variable.set",data:{variable:"mode",value:"eco"}}},conditions:[{internal_variable:"mode",value:"eco"}]},{type:"single",menu_id:"mode_selector",icon:"mdi:fan-speed-2",label:"Turbo",tap_action:{action:"fire-dom-event",xiaomi_vacuum_map_card:{action_handler_id:"this",action:"internal_variable.set",data:{variable:"mode",value:"turbo"}}},conditions:[{internal_variable:"mode",value:"turbo"}]},{menu_id:"mode_selector",icon:"mdi:fan-speed-3",label:"Max",tap_action:{action:"fire-dom-event",xiaomi_vacuum_map_card:{action_handler_id:"this",action:"internal_variable.set",data:{variable:"mode",value:"max"}}},conditions:[{internal_variable:"mode",value:"max"}]}],Ss={from_attributes:[{tile_id:"cleaned_area",attribute:"clean_area",label:"tile.cleaned_area.label",icon:"mdi:texture-box",unit:"unit.meter_squared_shortcut"}]},Ms=[{vacuum:{x:0,y:0},map:{x:0,y:0}},{vacuum:{x:1,y:0},map:{x:1,y:0}},{vacuum:{x:0,y:1},map:{x:0,y:1}}],Ns={mode:"eco"},Os={map_modes:Ps,icons:Ts,tiles:Ss,calibration_points:Ms,internal_variables:Ns},Cs=Object.freeze({__proto__:null,map_modes:Ps,icons:Ts,tiles:Ss,calibration_points:Ms,internal_variables:Ns,default:Os}),Rs={default_templates:["setup_zone","setup_point","setup_outline"],templates:{setup_zone:{name:"map_mode.setup_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!1,coordinates_to_meters_divider:1,max_selections:1,repeats_type:"NONE",service_call_schema:{service:"persistent_notification.create",service_data:{zones:"[[selection]]"}}},setup_point:{name:"map_mode.setup_point",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"NONE",service_call_schema:{service:"persistent_notification.create",service_data:{x_coord:"[[point_x]]",y_coord:"[[point_y]]",point:"[[selection]]"}}},setup_outline:{name:"map_mode.setup_outline",icon:"mdi:map-marker-path",selection_type:"MANUAL_PATH",coordinates_rounding:!1,coordinates_to_meters_divider:1,repeats_type:"NONE",service_call_schema:{service:"persistent_notification.create",service_data:{path:"[[selection]]"}}}}},Ls={map_modes:Rs},$s=Object.freeze({__proto__:null,map_modes:Rs,default:Ls}),js={default_templates:["setup_zone","setup_point","setup_outline"],templates:{setup_zone:{name:"map_mode.setup_zone",icon:"mdi:select-drag",selection_type:"MANUAL_RECTANGLE",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,max_selections:1,repeats_type:"NONE",service_call_schema:{service:"persistent_notification.create",service_data:{zones:"[[selection]]"}}},setup_point:{name:"map_mode.setup_point",icon:"mdi:map-marker-plus",selection_type:"MANUAL_POINT",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"persistent_notification.create",service_data:{x_coord:"[[point_x]]",y_coord:"[[point_y]]",point:"[[selection]]"}}},setup_outline:{name:"map_mode.setup_outline",icon:"mdi:map-marker-path",selection_type:"MANUAL_PATH",coordinates_rounding:!0,coordinates_to_meters_divider:1e3,repeats_type:"NONE",service_call_schema:{service:"persistent_notification.create",service_data:{path:"[[selection]]"}}}}},Is={map_modes:js},Ds=Object.freeze({__proto__:null,map_modes:js,default:Is});!function(e){e[e.MANUAL_RECTANGLE=0]="MANUAL_RECTANGLE",e[e.PREDEFINED_RECTANGLE=1]="PREDEFINED_RECTANGLE",e[e.ROOM=2]="ROOM",e[e.MANUAL_PATH=3]="MANUAL_PATH",e[e.MANUAL_POINT=4]="MANUAL_POINT",e[e.PREDEFINED_POINT=5]="PREDEFINED_POINT"}(ur||(ur={}));class Fs{static getPlatformsWithDefaultCalibration(){return[Fs.BENJAMIN_PAAP_MYNEATO_PLATFORM,Fs.DEEBOTUNIVERSE_DEEBOT_4_HOME_ASSISTANT_PLATFORM,Fs.NEATO_PLATFORM,Fs.ROMEDTINO_SIMPLE_WAZE_PLATFORM,Fs.ROOMBA_PLATFORM]}static getPlatforms(){return Array.from(Fs.TEMPLATES.keys())}static getPlatformName(e){return(null!=e?e:Fs.XIAOMI_MIIO_PLATFORM).replace(Fs.DEFAULT_PLATFORM,Fs.XIAOMI_MIIO_PLATFORM)}static getPlatformsDocumentationUrl(e){var t,i;const a=null!==(i=null!==(t=Fs.TEMPLATE_DOCUMENTATIONS_URLS.get(e))&&void 0!==t?t:Fs.TEMPLATE_DOCUMENTATIONS_URLS.get(Fs.XIAOMI_MIIO_PLATFORM))&&void 0!==i?i:"";return Fs.DOCUMENTATION_URL_FORMAT.replace("{0}",a)}static isValidModeTemplate(e,t){return void 0!==t&&Object.keys(this.getPlatformTemplate(e).map_modes.templates).includes(t)}static getModeTemplate(e,t){return this.getPlatformTemplate(e).map_modes.templates[t]}static generateDefaultModes(e){return this.getPlatformTemplate(e).map_modes.default_templates.map((e=>({template:e})))}static getTilesFromAttributesTemplates(e){var t,i;return null!==(i=null===(t=this.getPlatformTemplate(e).tiles)||void 0===t?void 0:t.from_attributes)&&void 0!==i?i:[]}static getTilesFromSensorsTemplates(e){var t,i;return null!==(i=null===(t=this.getPlatformTemplate(e).tiles)||void 0===t?void 0:t.from_sensors)&&void 0!==i?i:[]}static getIconsTemplates(e){var t;return null!==(t=this.getPlatformTemplate(e).icons)&&void 0!==t?t:[]}static getRoomsTemplate(e){const t=this.getPlatformTemplate(e);for(const e in t.map_modes.templates){if(t.map_modes.templates[e].selection_type===ur[ur.ROOM])return e}}static getCalibration(e){return this.getPlatformTemplate(Fs.getPlatformName(e)).calibration_points}static getVariables(e){return this.getPlatformTemplate(Fs.getPlatformName(e)).internal_variables}static getPlatformTemplate(e){var t,i;return null!==(i=null!==(t=this.TEMPLATES.get(e))&&void 0!==t?t:this.TEMPLATES.get(this.XIAOMI_MIIO_PLATFORM))&&void 0!==i?i:{templates:[],default_templates:{}}}}Fs.DEFAULT_PLATFORM="default",Fs.XIAOMI_MIIO_PLATFORM="Xiaomi Miio",Fs.KRZYSZTOFHAJDAMOWICZ_MIIO2_PLATFORM="KrzysztofHajdamowicz/miio2",Fs.MAROTOWEB_VIOMISE_PLATFORM="marotoweb/viomise",Fs.RAND256_VALETUDO_RE_PLATFORM="rand256/ValetudoRE",Fs.SEND_COMMAND_PLATFORM="send_command",Fs.ALONE_XIAOMI_MIOT_PLATFORM="al-one/hass-xiaomi-miot",Fs.TYKAROL_VIOMI_VACUUM_V8_PLATFORM="tykarol/viomi-vacuum-v8",Fs.HYPFER_VALETUDO_PLATFORM="Hypfer/Valetudo",Fs.NEATO_PLATFORM="Neato",Fs.ROOMBA_PLATFORM="Roomba",Fs.TASSHACK_DREAME_VACUUM_PLATFORM="Tasshack/dreame-vacuum",Fs.DEEBOTUNIVERSE_DEEBOT_4_HOME_ASSISTANT_PLATFORM="DeebotUniverse/Deebot-4-Home-Assistant",Fs.ROBOROCK_PLATFORM="Roborock",Fs.HUMBERTOGONTIJO_ROBOROCK_PLATFORM="humbertogontijo/homeassistant-roborock",Fs.ROMEDTINO_SIMPLE_WAZE_PLATFORM="romedtino/simple-wyze-vac",Fs.BENJAMIN_PAAP_MYNEATO_PLATFORM="BenjaminPaap/home-assistant-myneato",Fs.SETUP_INTEGER_PLATFORM="Setup integer",Fs.SETUP_DECIMAL_PLATFORM="Setup decimal",Fs.DOCUMENTATION_URL_FORMAT="https://github.com/PiotrMachowski/lovelace-xiaomi-vacuum-map-card/tree/master/docs/templates/{0}.md",Fs.TEMPLATES=new Map([[Fs.XIAOMI_MIIO_PLATFORM,gr],[Fs.ROBOROCK_PLATFORM,ks],[Fs.KRZYSZTOFHAJDAMOWICZ_MIIO2_PLATFORM,yr],[Fs.MAROTOWEB_VIOMISE_PLATFORM,Er],[Fs.TYKAROL_VIOMI_VACUUM_V8_PLATFORM,Fr],[Fs.HYPFER_VALETUDO_PLATFORM,Kr],[Fs.RAND256_VALETUDO_RE_PLATFORM,Tr],[Fs.TASSHACK_DREAME_VACUUM_PLATFORM,us],[Fs.HUMBERTOGONTIJO_ROBOROCK_PLATFORM,gs],[Fs.SEND_COMMAND_PLATFORM,Or],[Fs.ALONE_XIAOMI_MIOT_PLATFORM,$r],[Fs.NEATO_PLATFORM,Zr],[Fs.ROOMBA_PLATFORM,es],[Fs.DEEBOTUNIVERSE_DEEBOT_4_HOME_ASSISTANT_PLATFORM,rs],[Fs.ROMEDTINO_SIMPLE_WAZE_PLATFORM,zs],[Fs.BENJAMIN_PAAP_MYNEATO_PLATFORM,Cs],[Fs.SETUP_INTEGER_PLATFORM,Ds],[Fs.SETUP_DECIMAL_PLATFORM,$s]]),Fs.TEMPLATE_DOCUMENTATIONS_URLS=new Map([[Fs.XIAOMI_MIIO_PLATFORM,"xiaomiMiio"],[Fs.KRZYSZTOFHAJDAMOWICZ_MIIO2_PLATFORM,"krzysztofHajdamowiczMiio2"],[Fs.MAROTOWEB_VIOMISE_PLATFORM,"marotowebViomise"],[Fs.TYKAROL_VIOMI_VACUUM_V8_PLATFORM,"tykarolViomiVacuumV8"],[Fs.HYPFER_VALETUDO_PLATFORM,"hypferValetudo"],[Fs.RAND256_VALETUDO_RE_PLATFORM,"rand256ValetudoRe"],[Fs.TASSHACK_DREAME_VACUUM_PLATFORM,"tasshackDreameVacuum"],[Fs.HUMBERTOGONTIJO_ROBOROCK_PLATFORM,"humbertogontijoHomeassistantRoborock"],[Fs.ROBOROCK_PLATFORM,"Roborock"],[Fs.SEND_COMMAND_PLATFORM,"sendCommand"],[Fs.ALONE_XIAOMI_MIOT_PLATFORM,"alOneHassXiaomiMiot"],[Fs.NEATO_PLATFORM,"neato"],[Fs.ROOMBA_PLATFORM,"roomba"],[Fs.DEEBOTUNIVERSE_DEEBOT_4_HOME_ASSISTANT_PLATFORM,"DeebotUniverseDeebot4homeAssistant"],[Fs.ROMEDTINO_SIMPLE_WAZE_PLATFORM,"romedtinoSimpleWyze"],[Fs.BENJAMIN_PAAP_MYNEATO_PLATFORM,"BenjaminPaapMyNeato"],[Fs.SETUP_INTEGER_PLATFORM,"setup"],[Fs.SETUP_DECIMAL_PLATFORM,"setup"]]),function(e){e[e.NONE=0]="NONE",e[e.INTERNAL=1]="INTERNAL",e[e.EXTERNAL=2]="EXTERNAL",e[e.REPEAT=3]="REPEAT"}(mr||(mr={}));const Vs="v2.3.0",Us="xiaomi-vacuum-map-card",qs="xiaomi-vacuum-map-card-editor",Ks="action-handler-xiaomi-vacuum-map-card",Hs="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAADwCAYAAABxLb1rAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5QsWDwwxfsgRyAAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAtkSURBVHja7d19zCVXXQfw725368JuC7JtUWKXKiLUF7aQVhRYSUEUGiGAaEUJEkBAMWZVasQivlQrxVZAFgIiiYCgIWDiGxZECoKKS60FxQCW1yLU0hcXWlraZdc/znmSeWbvs8+duTNz99l+PslNdp699/zuzD33d+ecOedMAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAoNh2n+3VWkicneWiSByT5xiTbk3w1yS1Jbkjy8fr41yT/mOTAgjHvmeRRSR6T5CFJTq2PE5P8X5Lrk/xHkquSvCPJfy3wme1O8tga7/QkpyXZkeTGGue/k1xeH/+jmh+zpqozzJk0Dh/lcTDJbUm+lOQTSd6T5DVJnpXkm3rGfPY6MZuPq+co7+FJ9ncoc+Xx9SQfSPL8JCd13IddSV6d5PaOMT+e5NeS3KtDrPPql2HeGIeSvCXJ/QaqC9cm2dahnFNar9+7QWL2ebxoSXXm8MiPbRMfr2XkoYV37lCSf07yY0k2LyEBbkpySX0fi34wP9jh/e9N8rUF492a5IJ14uxI8lcLxLgzyS8PVBcuWEIyuuA4SoBD15m7WgIcNA9tzjA2Jfn+JG9N8uEkD5747PVVSX6l1aR/b5JnJjkzycm1WfHNSb6nNo9fkeTfe8bbmuRNSV5Wy11xXZLLahK9b5K71eb3mfXsbV+Sz7bKunuSRx4l1r1rE/3xrb/vr0ntrNoE/oYk35JkT/0xaDZ9tyS5NMkfDfCZv7A23aa0jJhDm7LO3JW79HrnoXbm3df6/xNqIrlPDfL0JH9SP8B2Jv5akqf12IG3tcqZ55T2ia3X3JLkRzvEvF+S3699gPOeAf7hjF+ei2o/4zwf0uOT/Gfj9X9zlB+oK1qxbkjy1Dni3D3JS2acFV/Yoy78bWv7JROcjS0j5r4Rv5xT1Zm1fKbx2usGaiWOcbyWlof67tzWJM9I8skZH/DTJ0iA7T6/J/U88KfV/rL1EuBTZxzkH+8Rb0uSX6/N07Uq84tasf63nsF28TOtJHiw9pV2qQvnt758X60VcMxktIyYYyXAKevM8Z4AR8tDi+7c9iRvbJVxe5KzR0yA92k9f+yrZNuSfLHDF2we5yZ5w4y/n1o7e5sf5Lk9Y1zaes//1LEuPCXJE1p/e93IyWgZMfdt8DpzV06AC+ehoXbuda1yPlx/ucZIgA9rPf9tIyfAn2/FuyLjDSX6zVas1y9Q1t2SfLpV3vd1TEZJuVLePJN84MgJcOqY+zZ4nZEAO+ahzSPswM/VpsuKByX5qZE+1C0zmrFj+oXW9iX14A5tU5Lntf522QLl3ZYy7KLpeT3K+dVWX8zvTvDFXUbMjVhn6JGHxkiAd+bIYQu/ONJOtgf5Prg2Hcdw3yT3b2x/Ksk7R4p1ZsrV3xX7B2jev6E2o5vNqK4+kOSvG9srg83HtIyYG7HO0CMPbR4p+DtTOiNX7E73wbjz+GQrCe5I8tqUISFDayeMK0b8Jd/T2n7/AGVenzKQdsWu+ujqha1EeskElXkZMTdanaFHHhorAR5OmbrT9OiRYrWbdk9K8rEkL0iZBjeUs2ecmYylPX7pyoHK/dA6cebx0ZRO5hWPTPK4kSvyMmJutDpDjzy0ecTgV7W2v2ukOH8wI9YZKWP7PpYybu7dKQNQn1Ur5bYecdpN60+PeOxOaW1/dqByP7dOnHm9OGUox4rfG7kuTRXz+Rl2ZsOUdWYZhj5ek+ehMStt+8PeNVKc25P88FF+XXfWrL83yR/Xs6Avp/SrXZwyCX0eO1vbN4947Nrzgw8MVO6BdeLM69qsvjq3O8lPjlyRlxFzUVPWGXrkoTET4Jdb2yeNGOuG2ix6TpJr5nj+1iTnpPQt/VtNnues85p7rrN/Q2ofq1sHKveW1vbJC5R1cSuhXpTVU7zGsIyYi5iyztAjD42ZAKce63QoZezPd6RcRLgoZaWIL83x2ocn+WDKmK213DlhQm8nqu0DlbtjwC/kTVl9MeKMJD878mc8dsxX1Xrb5/E7S64zyzD08Zo8D42ZAIf8snVxuJ7Rvbg2fU9LWQThh1LGlL01ZTjCrGPxyhy56MBa73/nyF/0pnsMVG67nBsXLO/lSb7Q2L5wgi/5MmIOdfaxM0ztqHlozAR4xjpt8Sldl+Tv69nD+SmXwnenrI7SHpbw0jV+NdoXEE4fuUm/Zr/FAk5fJ05XtyX5rcb2qem2dNVGidnXlHWGHnlozAR4Vmv76mPswHwkyXNz5OjwB2b2dKv2QOQfGPG9tY/V2QOV2+7nvGqAMl+f1eMLfymrB3GPYRkx+5iyztAjD42ZAB/b+PehJO86Rg/QnyX5l9bfvnvG89rPefSI76k98HnPAGXubCX2TyX5/ADlfj2rl9janrJiyZiWEbOPKesMPfLQWAlwT8p0rhXvTVnK6Vj1kXX6DZIybOb6xva3pixYOYaPZvXFm4cm+c4Fy3xG6/N+z4Dv9+0p91ZZ8ZyMM/Nn2TG7mrLO0CMPjZEAT0gZhNx06TF+oO5obX9xxnMOpUyza7ow41ztPpzSP5lWM6+vbSmTw5teO/B7bi5asDXTXOVbRswupqwz9MhDYyTAl2b1ZPV3J/m7kXZyb8rV3kX3o7k01MGs3Tf2siRfaWw/LN3utTHLuSkr2rbty+qZD89MuYNYHxcl+bbG9vsy3PS65q9r83M+P+PfGmEZMbuass7QMQ8NmQBPTBlG0jxTOZB+yy7Na0vKFcF/WKD588SsvjhweavZ0nRzyhSspouT/ESPuJtrAn9XZk9Juy6rx7xtSvLnKVevu3h26zM52DpzGlJz0YJNM47V8RKziynrDAvkoUUWInxySr9V8/V3pPuE9a4Lor4gqxfL/NN0m3P8tJSl1pvveb2+tk058g5th+rp9rzj9R6XskDjevd3OCHlhkjNWDfX971eM2p7yn002nMw50l+ay1OOo83Ze35n3uP8ZhjLYk/ZZ1Zy2dy/C+IulAemudmJCfVpHRObW68MkeuNLxy274f6bHziyTA5uNDKSsqPyblTmkn1j6ieyX53vqluHJGhXzunO/z5JTb77Xj3pgyUPe8lLF722oFf0DKQOzLUm5a3n7d0SrzvTP7XsBX1l+53fVsYGvKLQIeUc84Pj/jNa+Zs/9pkWR0Rta+7ePeYzzmmDdFmrLOHM8JcLQ8NNQ9P/dn/WXLm82zRe4L/NMpQyIWfc9fqWV1PdV+9QCxb8r607m2J/nLBWIcTLltaN+68JSOx+blEyfAoWKOfV/gKevMFAnwWLsvcN88NEjgD9b+tK79U4veGH1X7Qf8RI/3fEeSN2exmRZ7UtYc6xr76pS5xzs6xDov5V7GXeL8RVYPBZgiAZ6SMuVoygQ4RMwpbow+dZ25qyXATnloS4edP5wyufvW2g/1hXpqvr+ejg8xqLaPzyX5jfr49pSlsR5Uv/S76unySbWJe6A2Oa6uzZG3Z/aQly7eXx/3Txno+oiUW1furE3urfWYXVv7cN6XsjLwNT1ivSPlStZDUgZ4nlub+KfVL8VNKeMHr0mZ+nd5Zs97HtsNtX/rt4/zmBuhzhxvjtU8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASf4fJ6JYBxmOptUAAAAASUVORK5CYII=",Gs="map-card-selection-changed",Bs="map-card-autogenerated-config-get",Xs="map-card-autogenerated-config",Zs="map-card-room-config-get",Ys="map-card-room-config",Js="map-card-service-call-get",Ws="map-card-service-call",Qs="ll-custom",el="xiaomi_vacuum_map_card",tl={run_immediately:!0,selection_type:ur[ur.ROOM],repeats_type:mr[mr.NONE]};var il,al,nl,ol;!function(e){e.ENTITY_ID="entity_id",e.SELECTION="selection",e.SELECTION_SIZE="selection_size",e.SELECTION_UNWRAPPED="selection_unwrapped",e.REPEATS="repeats",e.POINT_X="point_x",e.POINT_Y="point_y"}(il||(il={})),function(e){e.ENTITY_ID="entity_id",e.VACUUM_ENTITY_ID="vacuum_entity_id",e.ATTRIBUTE="attribute"}(al||(al={}));class rl{constructor(e,t,i,a){this.domain=e,this.service=t,this.serviceData=i,this.target=a}}class sl{constructor(e){var t;this.config=e,this.service=e.service,this.serviceData=e.service_data,this.target=e.target,this.evaluateDataAsTemplate=null!==(t=e.evaluate_data_as_template)&&void 0!==t&&t}apply(e,t,i,a){const n=sl.getDefaultVariables(e,t,i);let o,r;this.serviceData&&(o=El(this.serviceData,n,a)),this.target&&(r=El(this.target,n,a));const s=this.service.split(".");return new rl(s[0],s[1],o,r)}static getDefaultVariables(e,t,i){const a={};return a[il.ENTITY_ID]=e,a[il.SELECTION]=t,a[il.SELECTION_SIZE]=t.length,a[il.SELECTION_UNWRAPPED]=JSON.stringify(t).replaceAll("[","").replaceAll("]","").replaceAll('"',""),a[il.REPEATS]=i,a[il.POINT_X]=this.isPoint(t)?t[0]:"",a[il.POINT_Y]=this.isPoint(t)?t[1]:"",a}static isPoint(e){return"number"==typeof e[0]&&2==e.length}}!function(e){e.JSONIFY="|[[jsonify]]",e.JSONIFY_JINJA="|[[jsonify_jinja]]"}(nl||(nl={}));class ll{constructor(e,t,i){var a,n,o,r,s,l,c,d,u,m;this.config=t,this.name=null!==(a=t.name)&&void 0!==a?a:lr("map_mode.invalid",i),this.icon=null!==(n=t.icon)&&void 0!==n?n:"mdi:help",this.idType=t.id_type,this.selectionType=t.selection_type?ur[t.selection_type]:ur.PREDEFINED_POINT,this.maxSelections=null!==(o=t.max_selections)&&void 0!==o?o:999,this.coordinatesRounding=null===(r=t.coordinates_rounding)||void 0===r||r,this.coordinatesToMetersDivider=null!==(s=t.coordinates_to_meters_divider)&&void 0!==s?s:1e3,this.runImmediately=null!==(l=t.run_immediately)&&void 0!==l&&l,this.repeatsType=t.repeats_type?mr[t.repeats_type]:mr.NONE,this.maxRepeats=null!==(c=t.max_repeats)&&void 0!==c?c:1,this.serviceCallSchema=new sl(null!==(d=t.service_call_schema)&&void 0!==d?d:{}),this.predefinedSelections=null!==(u=t.predefined_selections)&&void 0!==u?u:[],this.variables=null!==(m=t.variables)&&void 0!==m?m:{},this._applyTemplateIfPossible(e,t,i),ll.PREDEFINED_SELECTION_TYPES.includes(this.selectionType)||(this.runImmediately=!1)}async getServiceCall(e,t,i,a,n){let o=this._applyData(t,i,a,n);if(this.serviceCallSchema.evaluateDataAsTemplate)try{const t=await async function(e,t){return new Promise((i=>{e.connection.subscribeMessage((e=>i(e.result)),{type:"render_template",template:t})}))}(e,JSON.stringify(o.serviceData));try{const e="string"==typeof t?JSON.parse(t):t;Al(e,(e=>e.endsWith(nl.JSONIFY_JINJA)?JSON.parse(e.replace(nl.JSONIFY_JINJA,"")):e)),o=Object.assign(Object.assign({},o),{serviceData:e})}catch(e){throw console.error("Failed to parse template output",t),e}}catch(e){console.error("Failed to evaluate template",o.serviceData)}return o}toMapModeConfig(){var e;return{name:this.name,icon:this.icon,run_immediately:this.runImmediately,coordinates_rounding:this.coordinatesRounding,coordinates_to_meters_divider:this.coordinatesToMetersDivider,selection_type:ur[this.selectionType],id_type:this.idType,max_selections:this.maxSelections,repeats_type:mr[this.repeatsType],max_repeats:this.maxRepeats,service_call_schema:JSON.parse(JSON.stringify(this.serviceCallSchema.config)),predefined_selections:this.predefinedSelections,variables:Object.fromEntries(Object.entries(null!==(e=this.variables)&&void 0!==e?e:{}).map((([e,t])=>[e.substr(2,e.length-4),t])))}}_applyTemplateIfPossible(e,t,i){if(!t.template||!Fs.isValidModeTemplate(e,t.template))return;const a=Fs.getModeTemplate(e,t.template);!t.name&&a.name&&(this.name=lr(a.name,i)),!t.icon&&a.icon&&(this.icon=a.icon),!t.selection_type&&a.selection_type&&(this.selectionType=ur[a.selection_type]),!t.id_type&&a.id_type&&(this.idType=a.id_type),!t.max_selections&&a.max_selections&&(this.maxSelections=a.max_selections),void 0===t.coordinates_rounding&&void 0!==a.coordinates_rounding&&(this.coordinatesRounding=a.coordinates_rounding),void 0===t.coordinates_to_meters_divider&&void 0!==a.coordinates_to_meters_divider&&(this.coordinatesToMetersDivider=a.coordinates_to_meters_divider),void 0===t.run_immediately&&void 0!==a.run_immediately&&(this.runImmediately=a.run_immediately),!t.repeats_type&&a.repeats_type&&(this.repeatsType=mr[a.repeats_type]),!t.max_repeats&&a.max_repeats&&(this.maxRepeats=a.max_repeats),!t.service_call_schema&&a.service_call_schema&&(this.serviceCallSchema=new sl(a.service_call_schema))}_applyData(e,t,i,a){return this.serviceCallSchema.apply(e,t,i,Object.assign(Object.assign({},this.variables),a))}}ll.PREDEFINED_SELECTION_TYPES=[ur.PREDEFINED_RECTANGLE,ur.ROOM,ur.PREDEFINED_POINT];class cl{constructor(e,t){this.x=e,this.y=t}}function dl(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()}function ul(e,t){const i=e.indexOf(t,0);return i>-1&&e.splice(i,1),i}function ml(e,t){var i,a,n,o,r,s,l,c;const d=new Set;return e.entity&&d.add(e.entity),e.map_source.camera&&d.add(e.map_source.camera),(null===(i=e.calibration_source)||void 0===i?void 0:i.entity)&&d.add(e.calibration_source.entity),(null!==(a=e.conditions)&&void 0!==a?a:[]).map((e=>null==e?void 0:e.entity)).forEach((e=>{e&&d.add(e)})),(null!==(n=e.icons)&&void 0!==n?n:[]).forEach((e=>{e.hasOwnProperty("entity")&&d.add(e.entity)})),(null!==(o=e.icons)&&void 0!==o?o:[]).filter((e=>e.conditions)).flatMap((e=>e.conditions)).map((e=>null==e?void 0:e.entity)).forEach((e=>{e&&d.add(e)})),(null!==(r=e.tiles)&&void 0!==r?r:[]).forEach((e=>{e.entity&&d.add(e.entity)})),(null!==(s=e.tiles)&&void 0!==s?s:[]).forEach((e=>{e.icon_source&&d.add(e.icon_source.split(".attributes.")[0])})),(null!==(l=e.tiles)&&void 0!==l?l:[]).filter((e=>e.conditions)).flatMap((e=>e.conditions)).map((e=>null==e?void 0:e.entity)).forEach((e=>{e&&d.add(e)})),(null!==(c=e.map_modes)&&void 0!==c?c:[]).map((i=>new ll(Fs.getPlatformName(e.vacuum_platform),i,t))).forEach((e=>function(e){const t=new Set;switch(e.selectionType){case ur.PREDEFINED_RECTANGLE:e.predefinedSelections.map((e=>e)).filter((e=>"string"==typeof e.zones)).forEach((e=>t.add(e.zones.split(".attributes.")[0])));break;case ur.PREDEFINED_POINT:e.predefinedSelections.map((e=>e)).filter((e=>"string"==typeof e.position)).forEach((e=>t.add(e.position.split(".attributes.")[0])))}return e.predefinedSelections.filter((e=>e.state_entity)).forEach((e=>t.add(e.state_entity))),t}(e).forEach((e=>d.add(e))))),d}function pl(e){var t;const i=new Set;return[e,...null!==(t=e.additional_presets)&&void 0!==t?t:[]].flatMap((t=>[...ml(t,e.language)])).forEach((e=>i.add(e))),[...i]}function _l(e,t,i){var a;return(null!==(a=e.conditions)&&void 0!==a?a:[]).every((e=>function(e,t,i){let a="";return e.internal_variable&&e.internal_variable in t?a=t[e.internal_variable]:e.entity&&(a=e.attribute?i.states[e.entity].attributes[e.attribute]:i.states[e.entity].state),e.value?a==e.value:!!e.value_not&&a!=e.value_not}(e,t,i)))}function vl(e,t){return e?t():null}function gl(e,t,i){return i?()=>hl(e,t,i):i=>{var a,n;return hl(e,t,null!==(n=null===(a=null==i?void 0:i.detail)||void 0===a?void 0:a.action)&&void 0!==n?n:"tap")}}function hl(e,t,i){var a;if(e.hass&&t&&i){const n=e._getCurrentPreset(),o=e._getCurrentMode();let r={};r[al.VACUUM_ENTITY_ID]=n.entity,t.hasOwnProperty("attribute")&&(r[al.ATTRIBUTE]=t.attribute),t.hasOwnProperty("variables")&&(r=Object.assign(Object.assign({},r),t.variables));const s=t.hasOwnProperty("entity")?t.entity:n.entity,{selection:l,variables:c}=e._getSelection(o),d=El(t,sl.getDefaultVariables(s,l,e.repeats),r,e.internalVariables,null!==(a=null==o?void 0:o.variables)&&void 0!==a?a:{},c);Ee(e,e.hass,d,i)}}function fl(e,t,i){let a,n;return e instanceof MouseEvent&&(a=e.offsetX,n=e.offsetY),window.TouchEvent&&e instanceof TouchEvent&&e.touches&&(a=(e.touches[0].clientX-t.getBoundingClientRect().x)/i,n=(e.touches[0].clientY-t.getBoundingClientRect().y)/i),new cl(a,n)}async function bl(e,t){let i;try{i=await async function(e,t){const i=(await e.callWS({type:"config/entity_registry/get",entity_id:t})).device_id,a=(await e.callWS({type:"config/entity_registry/list"})).filter((e=>e.device_id===i)),n=await Promise.all(a.map((t=>e.callWS({type:"config/entity_registry/get",entity_id:t.entity_id}))));return n.filter((e=>null==e.disabled_by))}(e,t)}catch(e){i=[]}return i}async function yl(e){await new Promise((t=>setTimeout((()=>t()),e)))}function kl(e){const t=document.createElement("textarea");t.style.position="fixed",t.style.left="0",t.style.top="0",t.style.opacity="0",t.value=e,document.body.appendChild(t),t.focus(),t.select(),document.execCommand("copy"),document.body.removeChild(t)}function Al(e,t){for(const[i,a]of Object.entries(e))"object"==typeof a?Al(a,t):"string"==typeof a&&(e[i]=t(a))}function xl(e,t){var i;const a=Object.fromEntries(Object.entries(null!=t?t:{}).map((([e,t])=>[`[[${e}]]`,t]))),n=e=>e in a?a[e]:null;return null!==(i=n(e))&&void 0!==i?i:function(e,t,i){let a=e;if(Object.keys(t).forEach((e=>{let t=i(e);"object"==typeof t&&(t=JSON.stringify(t)),a=a.replaceAll(e,`${t}`)})),a.endsWith(nl.JSONIFY))return JSON.parse(a.replace(nl.JSONIFY,""));return a}(e,a,n)}function El(e,...t){const i=JSON.parse(JSON.stringify(e));let a={};for(const e of t)a=Object.assign(Object.assign({},e),a);return Al(i,(e=>xl(e,a))),i}class wl{static render(e){return D`
            <div id="${e}-toast" class="toast">
                <div id="${e}-toast-icon" class="toast-icon">
                    <ha-icon icon="mdi:check" style="vertical-align: center"></ha-icon>
                </div>
                <div id="${e}-toast-text" class="toast-text">Success!</div>
            </div>
        `}static showToast(e,t,i,a,n,o,r="",s=2e3){const l=null==e?void 0:e.getElementById(`${i}-toast`),c=null==e?void 0:e.getElementById(`${i}-toast-text`),d=null==e?void 0:e.getElementById(`${i}-toast-icon`);l&&c&&d&&(l.className+=" show",c.innerText=t(a)+(r?`\n${r}`:""),d.children[0].setAttribute("icon",n),d.style.color=o?"var(--map-card-internal-toast-successful-icon-color)":"var(--map-card-internal-toast-unsuccessful-icon-color)",yl(s).then((()=>l.className=l.className.replace(" show",""))))}static get styles(){return r`
            .toast {
                visibility: hidden;
                display: inline-flex;
                width: calc(100% - 60px);
                min-height: 50px;
                color: var(--primary-text-color);
                text-align: center;
                border-radius: var(--map-card-internal-small-radius);
                padding-inline-start: 30px;
                position: absolute;
                z-index: 1;
                bottom: 30px;
                font-size: 17px;
            }

            .toast-icon {
                display: flex;
                justify-content: center;
                align-items: center;
                width: 50px;
                background-color: var(--map-card-internal-primary-color);
                border-start-start-radius: var(--map-card-internal-small-radius);
                border-end-start-radius: var(--map-card-internal-small-radius);
                color: #0f0;
            }

            .toast-text {
                box-sizing: border-box;
                display: flex;
                align-items: center;
                padding-left: 10px;
                padding-right: 10px;
                -moz-box-sizing: border-box;
                -webkit-box-sizing: border-box;
                background-color: var(--paper-listbox-background-color);
                color: var(--primary-text-color);
                vertical-align: middle;
                overflow: hidden;
                border-color: var(--map-card-internal-primary-color);
                border-style: solid;
                border-width: 1px;
                border-start-end-radius: var(--map-card-internal-small-radius);
                border-end-end-radius: var(--map-card-internal-small-radius);
            }

            .toast.show {
                visibility: visible;
                -webkit-animation: fadein 0.5s, stay 1s 1s, fadeout 0.5s 1.5s;
                animation: fadein 0.5s, stay 1s 1s, fadeout 0.5s 1.5s;
            }

            @-webkit-keyframes fadein {
                from {
                    bottom: 0;
                    opacity: 0;
                }
                to {
                    bottom: 30px;
                    opacity: 1;
                }
            }
            @keyframes fadein {
                from {
                    bottom: 0;
                    opacity: 0;
                }
                to {
                    bottom: 30px;
                    opacity: 1;
                }
            }
            @-webkit-keyframes stay {
            }
            @keyframes stay {
            }
            @-webkit-keyframes fadeout {
                from {
                    bottom: 30px;
                    opacity: 1;
                }
                to {
                    bottom: 60px;
                    opacity: 0;
                }
            }
            @keyframes fadeout {
                from {
                    bottom: 30px;
                    opacity: 1;
                }
                to {
                    bottom: 60px;
                    opacity: 0;
                }
            }
        `}}let zl=ol=class extends re{constructor(){super(),this._initialized=!1,this._handleNewSelection=this._handleNewSelection.bind(this),this._handleAutogeneratedConfig=this._handleAutogeneratedConfig.bind(this),this._handleRoomConfig=this._handleRoomConfig.bind(this),this._handleServiceCall=this._handleServiceCall.bind(this)}get _title(){var e;return(null===(e=this._config)||void 0===e?void 0:e.title)||""}get _entity(){var e;return(null===(e=this._config)||void 0===e?void 0:e.entity)||""}get _vacuum_platform(){var e;return Fs.getPlatformName(null===(e=this._config)||void 0===e?void 0:e.vacuum_platform)}get _camera(){var e,t;return(null===(t=null===(e=this._config)||void 0===e?void 0:e.map_source)||void 0===t?void 0:t.camera)||""}get _map_locked(){var e;return(null===(e=this._config)||void 0===e?void 0:e.map_locked)||!1}get _two_finger_pan(){var e;return(null===(e=this._config)||void 0===e?void 0:e.two_finger_pan)||!1}static _copyServiceCall(){window.dispatchEvent(new Event(Js))}_setStaticConfig(){window.confirm(this._localize("editor.alerts.set_static_config"))&&window.dispatchEvent(new Event(Bs))}static _generateRoomsConfig(){window.dispatchEvent(new Event(Zs))}setConfig(e){this._config=e,this.loadCardHelpers()}connectedCallback(){super.connectedCallback(),window.addEventListener(Gs,this._handleNewSelection),window.addEventListener(Xs,this._handleAutogeneratedConfig),window.addEventListener(Ys,this._handleRoomConfig),window.addEventListener(Ws,this._handleServiceCall)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener(Gs,this._handleNewSelection),window.removeEventListener(Xs,this._handleAutogeneratedConfig),window.removeEventListener(Ys,this._handleRoomConfig),window.removeEventListener(Ws,this._handleServiceCall)}shouldUpdate(){return this._initialized||this._initialize(),!0}render(){var e,t,i,a,n;if(!this.hass||!this._helpers)return D``;this._helpers.importMoreInfoControl("climate");const o=Object.keys(this.hass.states),r=o.filter((e=>["camera","image"].includes(e.substr(0,e.indexOf("."))))),s=o.filter((e=>"vacuum"===e.substr(0,e.indexOf(".")))),l=Fs.getPlatforms(),c=void 0===(null===(t=null===(e=this.hass.states[this._camera])||void 0===e?void 0:e.attributes)||void 0===t?void 0:t.rooms)||void 0===Fs.getRoomsTemplate(this._vacuum_platform);return D`
            <div class="card-config">
                <div class="description">
                    ${this._localize("editor.description.text")}
                </div>
                <div class="values">
                    <ha-textfield
                        label="${this._localize("editor.label.name")}"
                        .value="${this._title}"
                        .configValue="${"title"}"
                        @input="${this._valueChanged}"></ha-textfield>
                </div>
                <div class="values">
                    <ha-select
                        naturalMenuWidth
                        fixedMenuPosition
                        label="${this._localize("editor.label.entity")}"
                        @selected="${this._valueChanged}"
                        @closed="${e=>e.stopPropagation()}"
                        .configValue="${"entity"}"
                        .value="${this._entity}">
                        ${s.map((e=>D` <mwc-list-item .value="${e}">${e}</mwc-list-item> `))}
                    </ha-select>
                </div>
                <div class="values">
                    <ha-select
                        naturalMenuWidth
                        fixedMenuPosition
                        label="${this._localize("editor.label.vacuum_platform")}"
                        @selected="${this._platformChanged}"
                        @closed="${e=>e.stopPropagation()}"
                        .configValue="${"vacuum_platform"}"
                        .value="${this._vacuum_platform}">
                        ${l.map((e=>D` <mwc-list-item .value="${e}">${e}</mwc-list-item> `))}
                    </ha-select>
                    <p>
                        <a
                            href="${Fs.getPlatformsDocumentationUrl(this._vacuum_platform)}"
                            target="_blank">
                            ${this._localize(["editor.label.platforms_documentation","{0}",null!==(a=null===(i=this._config)||void 0===i?void 0:i.vacuum_platform)&&void 0!==a?a:Fs.XIAOMI_MIIO_PLATFORM])}
                        </a>
                    </p>
                </div>
                <div class="values">
                    <ha-select
                        naturalMenuWidth
                        fixedMenuPosition
                        label="${this._localize("editor.label.camera")}"
                        @selected="${this._cameraChanged}"
                        @closed="${e=>e.stopPropagation()}"
                        .configValue="${"camera"}"
                        .value="${this._camera}">
                        ${r.map((e=>D` <mwc-list-item .value="${e}">${e}</mwc-list-item> `))}
                    </ha-select>
                </div>
                <div class="values">
                    <ha-formfield class="switch-wrapper" .label="${this._localize("editor.label.map_locked")}">
                        <ha-switch
                            .checked="${this._map_locked}"
                            .configValue="${"map_locked"}"
                            @change="${this._valueChanged}"></ha-switch>
                    </ha-formfield>
                </div>
                <div class="values">
                    <ha-formfield class="switch-wrapper" .label="${this._localize("editor.label.two_finger_pan")}">
                        <ha-switch
                            .checked="${this._two_finger_pan}"
                            .configValue="${"two_finger_pan"}"
                            @change="${this._valueChanged}"></ha-switch>
                    </ha-formfield>
                </div>
                <div class="values separated selection-controls-wrapper">
                    <p>${this._localize("editor.label.selection")}</p>
                    <code class="selection-text">${null!==(n=this._lastSelection)&&void 0!==n?n:"[]"}</code>
                    <mwc-button @click="${()=>this._copySelection()}">
                        ${this._localize("editor.label.copy")}
                    </mwc-button>
                </div>
                <div class="values config-buttons-wrapper">
                    <mwc-button @click="${()=>this._setStaticConfig()}">
                        ${this._localize("editor.label.set_static_config")}
                    </mwc-button>
                    <mwc-button
                        @click="${()=>ol._generateRoomsConfig()}"
                        .disabled=${c}>
                        ${this._localize("editor.label.generate_rooms_config")}
                    </mwc-button>
                    <mwc-button @click="${()=>ol._copyServiceCall()}">
                        ${this._localize("editor.label.copy_service_call")}
                    </mwc-button>
                </div>
                <div class="version">${this._localize("common.version")} ${Vs}</div>
                ${wl.render("editor")}
            </div>
        `}_initialize(){void 0!==this.hass&&void 0!==this._config&&void 0!==this._helpers&&(this._initialized=!0)}async loadCardHelpers(){this._helpers=await window.loadCardHelpers()}_handleNewSelection(e){this._lastSelection=JSON.stringify(e.selection).replaceAll(",",", ")}_handleAutogeneratedConfig(e){const t=e.presetConfig;this._showToast("editor.label.config_set","mdi:check",!0),this._setConfig(t)}_handleRoomConfig(e){var t,i,a,n,o;const r=Fs.getRoomsTemplate(this._vacuum_platform),s=e.roomConfig;if(!s)return void this._showToast("editor.label.config_set_failed","mdi:close",!1);const l=null!==(i=null===(t=this._config)||void 0===t?void 0:t.map_modes)&&void 0!==i?i:[];0!==l.length&&(null!==(a=s.modeIndex)&&void 0!==a?a:-1)>=0?l[null!==(n=s.modeIndex)&&void 0!==n?n:-1]=Object.assign(Object.assign({},l[null!==(o=s.modeIndex)&&void 0!==o?o:-1]),{predefined_selections:s.rooms}):(0===l.length&&l.push(...Fs.generateDefaultModes(this._vacuum_platform)),r&&l.push({template:r,predefined_selections:s.rooms})),this._config&&this._setConfig(Object.assign(Object.assign({},this._config),{map_modes:l})),this._showToast("editor.label.config_set","mdi:check",!0)}_handleServiceCall(e){const t=e.serviceCall;kl(null!=t?t:""),this._showToast("editor.label.copied","mdi:content-copy",!0)}_copySelection(){var e;kl(null!==(e=this._lastSelection)&&void 0!==e?e:[]),this._showToast("editor.label.copied","mdi:content-copy",!0)}_showToast(e,t,i,a=""){wl.showToast(this.shadowRoot,(e=>this._localize(e)),"editor",e,t,i,a)}_platformChanged(e){if(!this._config||!this.hass)return;const t=e.target.value;if(this._vacuum_platform===t)return;const i=Object.assign({},this._config);i.vacuum_platform=t,Fs.getCalibration(i.vacuum_platform)?i.calibration_source&&i.calibration_source.camera&&delete i.calibration_source:!i.calibration_source&&i.map_source&&i.map_source.camera&&(i.calibration_source={camera:!0}),this._config=i,ye(this,"config-changed",{config:this._config})}_cameraChanged(e){if(!this._config||!this.hass)return;const t=e.target.value;if(this._camera===t)return;const i=Object.assign({},this._config);i.map_source={camera:t},Fs.getCalibration(this._config.vacuum_platform)||i.calibration_source||!("calibration_points"in this.hass.states[t].attributes)||(i.calibration_source={camera:!0}),this._config=i,ye(this,"config-changed",{config:this._config})}_valueChanged(e){if(!this._config||!this.hass)return;const t=e.target;if(this[`_${t.configValue}`]!==t.value){if(t.configValue)this._config=Object.assign(Object.assign({},this._config),{[t.configValue]:void 0!==t.checked?t.checked:t.value});else{const e=Object.assign({},this._config);delete e[t.configValue],this._config=e}ye(this,"config-changed",{config:this._config})}}_setConfig(e){this._config=Object.assign({},e),ye(this,"config-changed",{config:this._config})}_localize(e){return cr(e,this.hass)}static get styles(){return r`
            .card-config {
                position: relative;
                --map-card-internal-toast-successful-icon-color: var(
                    --map-card-toast-successful-icon-color,
                    rgb(0, 255, 0)
                );
                --map-card-internal-toast-unsuccessful-icon-color: var(
                    --map-card-toast-unsuccessful-icon-color,
                    rgb(255, 0, 0)
                );
                --map-card-internal-small-radius: var(--map-card-small-radius, 18px);
                --map-card-internal-primary-color: var(--map-card-primary-color, var(--slider-color));
                padding-bottom: 15px;
            }

            .values {
                padding-left: 16px;
                margin: 8px;
                display: grid;
            }

            .switch-wrapper {
                padding: 8px;
            }

            .selection-controls-wrapper {
                display: flex;
                align-content: stretch;
                justify-content: space-between;
                align-items: center;
            }

            .config-buttons-wrapper {
                display: flex;
                flex-wrap: wrap;
                align-items: center;
                gap: 20px;
            }

            .selection-text {
                flex-grow: 1;
                padding: 10px;
            }

            .separated {
                border-top: solid 1px;
                border-top-color: var(--primary-text-color);
            }
          
            .version {
                position: absolute;
                bottom: 0;
                right: 0;
                opacity: 30%;
            }

            ${wl.styles}
        `}};var Pl,Tl;e([ue({attribute:!1})],zl.prototype,"hass",void 0),e([me()],zl.prototype,"_config",void 0),e([me()],zl.prototype,"_helpers",void 0),e([me()],zl.prototype,"_lastSelection",void 0),zl=ol=e([le(qs)],zl),function(e){e.CLEANING_START="cleaning.start",e.INTERNAL_VARIABLE_SET="internal_variable.set",e.MAP_MODE_NEXT="map_mode.next",e.MAP_MODE_PREVIOUS="map_mode.previous",e.MAP_MODE_SET="map_mode.set",e.REPEATS_DECREMENT="repeats.decrement",e.REPEATS_INCREMENT="repeats.increment",e.REPEATS_SET="repeats.set",e.SELECTION_CLEAR="selection.clear"}(Pl||(Pl={})),function(e){e.SELECTED="selected",e.UNSELECTED="unselected"}(Tl||(Tl={}));class Sl{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,i){this._$Ct=e,this._$AM=t,this._$Ci=i}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}}const Ml="ontouchstart"in window||navigator.maxTouchPoints>0;class Nl extends HTMLElement{constructor(){super(),this.holdTime=500,this.held=!1,this.ripple=document.createElement("mwc-ripple")}connectedCallback(){Object.assign(this.style,{position:"absolute",width:Ml?"100px":"50px",height:Ml?"100px":"50px",transform:"translate(-50%, -50%)",pointerEvents:"none",zIndex:"999"}),this.appendChild(this.ripple),this.ripple.primary=!0,["touchcancel","mouseout","mouseup","touchmove","mousewheel","wheel","scroll"].forEach((e=>{document.addEventListener(e,(()=>{clearTimeout(this.timer),this.stopAnimation(),this.timer=void 0}),{passive:!0})}))}bind(e,t){if(e.actionHandler)return;e.actionHandler=!0,e.addEventListener("contextmenu",(e=>{const t=e||window.event;return t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.cancelBubble=!0,t.returnValue=!1,!1}));const i=e=>{let t,i;this.held=!1,e.touches?(t=e.touches[0].pageX,i=e.touches[0].pageY):(t=e.pageX,i=e.pageY),this.timer=window.setTimeout((()=>{this.startAnimation(t,i),this.held=!0}),this.holdTime)},a=i=>{i.preventDefault(),["touchend","touchcancel"].includes(i.type)&&void 0===this.timer||(clearTimeout(this.timer),this.stopAnimation(),this.timer=void 0,this.held?ye(e,"action",{action:"hold"}):t.hasDoubleClick?"click"===i.type&&i.detail<2||!this.dblClickTimeout?this.dblClickTimeout=window.setTimeout((()=>{this.dblClickTimeout=void 0,ye(e,"action",{action:"tap"})}),250):(clearTimeout(this.dblClickTimeout),this.dblClickTimeout=void 0,ye(e,"action",{action:"double_tap"})):ye(e,"action",{action:"tap"}))};e.addEventListener("touchstart",i,{passive:!0}),e.addEventListener("touchend",a),e.addEventListener("touchcancel",a),e.addEventListener("mousedown",i,{passive:!0}),e.addEventListener("click",a),e.addEventListener("keyup",(e=>{13===e.keyCode&&a(e)}))}startAnimation(e,t){Object.assign(this.style,{left:`${e}px`,top:`${t}px`,display:null}),this.ripple.disabled=!1,this.ripple.active=!0,this.ripple.unbounded=!0}stopAnimation(){this.ripple.active=!1,this.ripple.disabled=!0,this.style.display="none"}}customElements.define(Ks,Nl);const Ol=(e,t)=>{const i=(()=>{const e=document.body;if(e.querySelector(Ks))return e.querySelector(Ks);const t=document.createElement(Ks);return e.appendChild(t),t})();i&&i.bind(e,t)},Cl=(e=>(...t)=>({_$litDirective$:e,values:t}))(class extends Sl{update(e,[t]){return Ol(e.element,t),V}render(e){}});class Rl{constructor(e){this.id=-1,this.nativePointer=e,this.pageX=e.pageX,this.pageY=e.pageY,this.clientX=e.clientX,this.clientY=e.clientY,self.Touch&&e instanceof Touch?this.id=e.identifier:Ll(e)&&(this.id=e.pointerId)}getCoalesced(){if("getCoalescedEvents"in this.nativePointer){const e=this.nativePointer.getCoalescedEvents().map((e=>new Rl(e)));if(e.length>0)return e}return[this]}}const Ll=e=>"pointerId"in e,$l=e=>"changedTouches"in e,jl=()=>{};class Il{constructor(e,{start:t=(()=>!0),move:i=jl,end:a=jl,rawUpdates:n=!1,avoidPointerEvents:o=!1}={}){this._element=e,this.startPointers=[],this.currentPointers=[],this._excludeFromButtonsCheck=new Set,this._pointerStart=e=>{if(Ll(e)&&0===e.buttons)this._excludeFromButtonsCheck.add(e.pointerId);else if(!(1&e.buttons))return;const t=new Rl(e);if(!this.currentPointers.some((e=>e.id===t.id))&&this._triggerPointerStart(t,e))if(Ll(e)){(e.target&&"setPointerCapture"in e.target?e.target:this._element).setPointerCapture(e.pointerId),this._element.addEventListener(this._rawUpdates?"pointerrawupdate":"pointermove",this._move),this._element.addEventListener("pointerup",this._pointerEnd),this._element.addEventListener("pointercancel",this._pointerEnd)}else window.addEventListener("mousemove",this._move),window.addEventListener("mouseup",this._pointerEnd)},this._touchStart=e=>{for(const t of Array.from(e.changedTouches))this._triggerPointerStart(new Rl(t),e)},this._move=e=>{if(!($l(e)||Ll(e)&&this._excludeFromButtonsCheck.has(e.pointerId)||0!==e.buttons))return void this._pointerEnd(e);const t=this.currentPointers.slice(),i=$l(e)?Array.from(e.changedTouches).map((e=>new Rl(e))):[new Rl(e)],a=[];for(const e of i){const t=this.currentPointers.findIndex((t=>t.id===e.id));-1!==t&&(a.push(e),this.currentPointers[t]=e)}0!==a.length&&this._moveCallback(t,a,e)},this._triggerPointerEnd=(e,t)=>{if(!$l(t)&&1&t.buttons)return!1;const i=this.currentPointers.findIndex((t=>t.id===e.id));if(-1===i)return!1;this.currentPointers.splice(i,1),this.startPointers.splice(i,1),this._excludeFromButtonsCheck.delete(e.id);const a=!("mouseup"===t.type||"touchend"===t.type||"pointerup"===t.type);return this._endCallback(e,t,a),!0},this._pointerEnd=e=>{if(this._triggerPointerEnd(new Rl(e),e))if(Ll(e)){if(this.currentPointers.length)return;this._element.removeEventListener(this._rawUpdates?"pointerrawupdate":"pointermove",this._move),this._element.removeEventListener("pointerup",this._pointerEnd),this._element.removeEventListener("pointercancel",this._pointerEnd)}else window.removeEventListener("mousemove",this._move),window.removeEventListener("mouseup",this._pointerEnd)},this._touchEnd=e=>{for(const t of Array.from(e.changedTouches))this._triggerPointerEnd(new Rl(t),e)},this._startCallback=t,this._moveCallback=i,this._endCallback=a,this._rawUpdates=n&&"onpointerrawupdate"in window,self.PointerEvent&&!o?this._element.addEventListener("pointerdown",this._pointerStart):(this._element.addEventListener("mousedown",this._pointerStart),this._element.addEventListener("touchstart",this._touchStart),this._element.addEventListener("touchmove",this._move),this._element.addEventListener("touchend",this._touchEnd),this._element.addEventListener("touchcancel",this._touchEnd))}stop(){this._element.removeEventListener("pointerdown",this._pointerStart),this._element.removeEventListener("mousedown",this._pointerStart),this._element.removeEventListener("touchstart",this._touchStart),this._element.removeEventListener("touchmove",this._move),this._element.removeEventListener("touchend",this._touchEnd),this._element.removeEventListener("touchcancel",this._touchEnd),this._element.removeEventListener(this._rawUpdates?"pointerrawupdate":"pointermove",this._move),this._element.removeEventListener("pointerup",this._pointerEnd),this._element.removeEventListener("pointercancel",this._pointerEnd),window.removeEventListener("mousemove",this._move),window.removeEventListener("mouseup",this._pointerEnd)}_triggerPointerStart(e,t){return!!this._startCallback(e,t)&&(this.currentPointers.push(e),this.startPointers.push(e),!0)}}const Dl="min-scale",Fl="max-scale",Vl="locked",Ul="no-default-pan",ql="two-finger-pan";function Kl(e,t){return t?Math.sqrt((t.clientX-e.clientX)**2+(t.clientY-e.clientY)**2):0}function Hl(e,t){return t?{clientX:(e.clientX+t.clientX)/2,clientY:(e.clientY+t.clientY)/2}:e}function Gl(e,t){return"number"==typeof e?e:e.trimRight().endsWith("%")?t*parseFloat(e)/100:parseFloat(e)}let Bl;function Xl(){return Bl||(Bl=document.createElementNS("http://www.w3.org/2000/svg","svg"))}function Zl(){return Xl().createSVGMatrix()}function Yl(){return Xl().createSVGPoint()}const Jl=.01;class Wl extends HTMLElement{static get observedAttributes(){return[Dl,Fl,Ul,ql,Vl]}constructor(){super(),this._transform=Zl(),this._enablePan=!0,this._locked=!1,this._twoFingerPan=!1,new MutationObserver((()=>this._stageElChange())).observe(this,{childList:!0});const e=new Il(this,{start:(t,i)=>!(i.target.classList.contains("draggable")&&e.currentPointers.length<2)&&(!(2===e.currentPointers.length||!this._positioningEl||this.locked)&&((this.enablePan||1==e.currentPointers.length||i instanceof PointerEvent&&"mouse"==i.pointerType)&&(this.enablePan=!0),!0)),move:t=>{this.enablePan&&this._onPointerMove(t,e.currentPointers)},end:(t,i,a)=>(this.twoFingerPan&&1==e.currentPointers.length&&(this.enablePan=!1),dl(i),!1)});this.addEventListener("wheel",(e=>this._onWheel(e)))}attributeChangedCallback(e,t,i){e===Dl&&this.scale<this.minScale&&this.setTransform({scale:this.minScale}),e===Fl&&this.scale>this.maxScale&&this.setTransform({scale:this.maxScale}),e===Ul&&(this.enablePan=!("1"==i||"true"==i)),e===ql&&("1"==i||"true"==i?(this.twoFingerPan=!0,this.enablePan=!1):(this.twoFingerPan=!1,this.enablePan=!0)),e===Vl&&(this.locked="1"==i||"true"==i)}get minScale(){const e=this.getAttribute(Dl);if(!e)return Jl;const t=parseFloat(e);return Number.isFinite(t)?Math.max(Jl,t):Jl}set minScale(e){e&&this.setAttribute(Dl,String(e))}get maxScale(){const e=this.getAttribute(Fl);if(!e)return 100;const t=parseFloat(e);return Number.isFinite(t)?Math.min(100,t):100}set maxScale(e){e&&this.setAttribute(Fl,String(e))}set enablePan(e){this._enablePan=e,this._enablePan?this._enablePan&&"none"!=this.style.touchAction&&(this.style.touchAction="none"):this.style.touchAction="pan-y pan-x"}get enablePan(){return this._enablePan}set locked(e){this._locked=e}get locked(){return this._locked}set twoFingerPan(e){this._twoFingerPan=e}get twoFingerPan(){return this._twoFingerPan}connectedCallback(){this._stageElChange()}get x(){return this._transform.e}get y(){return this._transform.f}get scale(){return this._transform.a}scaleTo(e,t={}){let{originX:i=0,originY:a=0}=t;const{relativeTo:n="content",allowChangeEvent:o=!1}=t,r="content"===n?this._positioningEl:this;if(!r||!this._positioningEl)return void this.setTransform({scale:e,allowChangeEvent:o});const s=r.getBoundingClientRect();if(i=Gl(i,s.width),a=Gl(a,s.height),"content"===n)i+=this.x,a+=this.y;else{const e=this._positioningEl.getBoundingClientRect();i-=e.left,a-=e.top}this._applyChange({allowChangeEvent:o,originX:i,originY:a,scaleDiff:e/this.scale})}setTransform(e={}){const{scale:t=this.scale,allowChangeEvent:i=!1}=e;let{x:a=this.x,y:n=this.y}=e;if(!this._positioningEl)return void this._updateTransform(t,a,n,i);const o=this.getBoundingClientRect(),r=this._positioningEl.getBoundingClientRect();if(!o.width||!o.height)return void this._updateTransform(t,a,n,i);let s=Yl();s.x=r.left-o.left,s.y=r.top-o.top;let l=Yl();l.x=r.width+s.x,l.y=r.height+s.y;const c=Zl().translate(a,n).scale(t).multiply(this._transform.inverse());s=s.matrixTransform(c),l=l.matrixTransform(c),s.x>o.width?a+=o.width-s.x:l.x<0&&(a+=-l.x),s.y>o.height?n+=o.height-s.y:l.y<0&&(n+=-l.y),this._updateTransform(t,a,n,i)}_updateTransform(e,t,i,a){if(!(e<this.minScale)&&!(e>this.maxScale)&&(e!==this.scale||t!==this.x||i!==this.y)&&(this._transform.e=t,this._transform.f=i,this._transform.d=this._transform.a=e,this.style.setProperty("--x",this.x+"px"),this.style.setProperty("--y",this.y+"px"),this.style.setProperty("--scale",this.scale+""),a)){const e=new Event("change",{bubbles:!0});this.dispatchEvent(e)}}_stageElChange(){this._positioningEl=void 0,0!==this.children.length&&(this._positioningEl=this.children[0],this.children.length>1&&console.warn("<pinch-zoom> must not have more than one child."),this.setTransform({allowChangeEvent:!0}))}_onWheel(e){if(!this._positioningEl||this.locked)return;e.preventDefault();const t=this._positioningEl.getBoundingClientRect();let{deltaY:i}=e;const{ctrlKey:a,deltaMode:n}=e;1===n&&(i*=15);const o=1-i/(a?100:300);this._applyChange({scaleDiff:o,originX:e.clientX-t.left,originY:e.clientY-t.top,allowChangeEvent:!0})}_onPointerMove(e,t){if(!this._positioningEl)return;const i=this._positioningEl.getBoundingClientRect(),a=Hl(e[0],e[1]),n=Hl(t[0],t[1]),o=a.clientX-i.left,r=a.clientY-i.top,s=Kl(e[0],e[1]),l=Kl(t[0],t[1]),c=s?l/s:1;this._applyChange({originX:o,originY:r,scaleDiff:c,panX:n.clientX-a.clientX,panY:n.clientY-a.clientY,allowChangeEvent:!0})}_applyChange(e={}){const{panX:t=0,panY:i=0,originX:a=0,originY:n=0,scaleDiff:o=1,allowChangeEvent:r=!1}=e,s=Zl().translate(t,i).translate(a,n).translate(this.x,this.y).scale(o).translate(-a,-n).scale(this.scale);this.setTransform({allowChangeEvent:r,scale:s.a,x:s.e,y:s.f})}}customElements.define("pinch-zoom",Wl);class Ql{constructor(e){this._context=e}get variables(){return{}}static findTopLeft(e){const t=e.sort(((e,t)=>e[1]-t[1]))[0],i=e.indexOf(t),a=e[(i+1)%4],n=e[(i+3)%4],o=Ql.calcAngle(t,a)<Ql.calcAngle(t,n)?a:n;return o[0]<t[0]?o:t}static calcAngle(e,t){let i=Math.atan2(t[1]-e[1],t[0]-e[0]);return i>Math.PI/2&&(i=Math.PI-i),i}static _reverse([e,t,i,a]){return[e,a,i,t]}scaled(e){return e/this._context.scale()}scaledCss(e){return parseFloat(this._context.cssEvaluator(e))/this._context.scale()}realScaled(e){return e/this._context.realScale()}realScaled2(e){return e*this._context.realScale()}realScaled2Point(e){return[this.realScaled2(e[0]),this.realScaled2(e[1])]}realScaledPoint(e){return[this.realScaled(e[0]),this.realScaled(e[1])]}update(){this._context.update(),this._context.selectionChanged()}localize(e){return this._context.localize(e)}getMousePosition(e){return this._context.mousePositionCalculator(e)}vacuumToRealMap(e,t){var i;const a=null===(i=this._context.coordinatesConverter())||void 0===i?void 0:i.vacuumToMap(e,t);if(!a)throw Error("Missing calibration");return a}vacuumToScaledMap(e,t){return this.realScaled2Point(this.vacuumToRealMap(e,t))}scaledMapToVacuum(e,t){const[i,a]=this.realScaledPoint([e,t]);return this.realMapToVacuum(i,a)}realMapToVacuum(e,t){var i;const a=null===(i=this._context.coordinatesConverter())||void 0===i?void 0:i.mapToVacuum(e,t);if(!a)throw Error("Missing calibration");return this._context.roundMap(a)}renderIcon(e,t,i){const a=e?this.vacuumToScaledMap(e.x,e.y):[];return F`${vl(null!=e&&a.length>0,(()=>F`
                <foreignObject class="icon-foreign-object"
                               style="--x-icon: ${a[0]}px; --y-icon: ${a[1]}px;"
                               x="${a[0]}px" y="${a[1]}px" width="36px" height="36px">         
                    <body xmlns="http://www.w3.org/1999/xhtml">
                      <div class="map-icon-wrapper ${i} clickable" @click="${t}" >
                          <ha-icon icon="${null==e?void 0:e.name}" style="background: transparent;"></ha-icon>
                      </div>
                    </body>
                </foreignObject>
            `))}`}renderLabel(e,t){const i=e?this.vacuumToScaledMap(e.x,e.y):[];return F`${vl(null!=e&&i.length>0,(()=>{var a,n;return F`
                <text class="label-text ${t}"
                      x="${i[0]+this.scaled(null!==(a=null==e?void 0:e.offset_x)&&void 0!==a?a:0)}px"
                      y="${i[1]+this.scaled(null!==(n=null==e?void 0:e.offset_y)&&void 0!==n?n:0)}px">
                    ${null==e?void 0:e.text}
                </text>
            `}))}`}vacuumToMapRect([e,t,i,a]){const n=[e,t],o=[i,t],r=[i,a],s=[e,a],l=this.vacuumToScaledMap(e,t),c=this.vacuumToScaledMap(i,t),d=this.vacuumToScaledMap(i,a),u=this.vacuumToScaledMap(e,a),m=[n,o,r,s,n,o,r,s],p=[l,c,d,u,l,c,d,u],_=[l,c,d,u],v=p.indexOf(Ql.findTopLeft(_)),g=p.slice(v,v+4),h=this._isCounterClockwise(g),f=m.slice(v,v+4);return h?[Ql._reverse(g),Ql._reverse(f)]:[g,f]}_isCounterClockwise(e){let t=0;return e.forEach(((i,a)=>t+=(e[(a+1)%4][0]-i[0])*(e[(a+1)%4][1]+i[1]))),t<0}static get styles(){return r`
            .icon-foreign-object {
                overflow: visible;
                pointer-events: none;
            }

            .map-icon-wrapper {
                position: center;
                display: flex;
                align-items: center;
                justify-content: center;
                pointer-events: auto;
            }
        `}}var ec;!function(e){e[e.NONE=0]="NONE",e[e.RESIZE=1]="RESIZE",e[e.MOVE=2]="MOVE"}(ec||(ec={}));class tc extends Ql{constructor(e,t,i,a,n,o){super(o),this._id=n,this._dragMode=ec.NONE,this._vacRect=this._toVacuumFromDimensions(e,t,i,a),this._vacRectSnapshot=this._vacRect}static _toPoints(e){const t=e.filter((e=>!isNaN(e[0])&&!isNaN(e[1]))).map((e=>e.join(", "))).join(" ");return 3==t.length&&console.error(`Points: ${t}`),t}render(){const e=this._vacRect,t=this.vacuumToMapRect(e)[0],i=t[0],a=t[2],n=t[3],o=tc.calcAngle(t[0],t[3]);return F`
            <g class="manual-rectangle-wrapper ${this.isSelected()?"selected":""}"
               style="--x-resize:${a[0]}px; 
                      --y-resize:${a[1]}px;
                      --x-delete:${n[0]}px;
                      --y-delete:${n[1]}px;
                      --x-description:${i[0]}px;
                      --y-description:${i[1]}px;
                      --angle-description: ${o}rad;">
                <polygon class="manual-rectangle draggable movable"
                         @mousedown="${e=>this._startDrag(e)}"
                         @mousemove="${e=>this._drag(e)}"
                         @mouseup="${e=>this._endDrag(e)}"
                         @touchstart="${e=>this._startDrag(e)}"
                         @touchmove="${e=>this._drag(e)}"
                         @touchend="${e=>this._endDrag(e)}"
                         @touchleave="${e=>this._endDrag(e)}"
                         @touchcancel="${e=>this._endDrag(e)}"
                         points="${tc._toPoints(t)}">
                </polygon>
                <g class="manual-rectangle-description">
                    <text>
                        ${this._id} ${this._getDimensions()}
                    </text>
                </g>
                <circle class="manual-rectangle-delete-circle clickable"
                        @mouseup="${e=>this._delete(e)}"></circle>
                <path class="manual-rectangle-delete-icon"
                      d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z">
                </path>
                <circle class="manual-rectangle-resize-circle draggable resizer"
                        @mousedown="${e=>this._startDrag(e)}"
                        @mousemove="${e=>this._drag(e)}"
                        @mouseup="${e=>this._endDrag(e)}"
                        @touchstart="${e=>this._startDrag(e)}"
                        @touchmove="${e=>this._drag(e)}"
                        @touchend="${e=>this._endDrag(e)}"
                        @touchleave="${e=>this._endDrag(e)}"
                        @touchcancel="${e=>this._endDrag(e)}">
                </circle>
                <path class="manual-rectangle-resize-icon"
                      d="M13,21H21V13H19V17.59L6.41,5H11V3H3V11H5V6.41L17.59,19H13V21Z">
                </path>
            </g>
        `}isSelected(){return null!=this._selectedElement}externalDrag(e){this._drag(e)}toVacuum(e=null){const[t,i,a,n]=this._vacRect,o=[Math.min(t,a),Math.min(i,n),Math.max(t,a),Math.max(i,n)];return null!=e?[...o,e]:o}_getDimensions(){const[e,t,i,a]=this.toVacuum(),n=Math.abs(i-e),o=Math.abs(a-t),r=this._context.coordinatesToMetersDivider();if(-1===r)return"";const s=e=>(e/r).toFixed(1);return`${s(n)}${this.localize("unit.meter_shortcut")} x ${s(o)}${this.localize("unit.meter_shortcut")}`}_startDrag(e){var t;if(window.TouchEvent&&e instanceof TouchEvent&&e.touches.length>1)return;if(!e.target.classList.contains("draggable"))return;if(!(null===(t=e.target.parentElement)||void 0===t?void 0:t.classList.contains("manual-rectangle-wrapper")))return;if(!e.target.parentElement)return;dl(e),this._selectedTarget=e.target;const i=e.target;i.classList.contains("movable")?this._dragMode=ec.MOVE:i.classList.contains("resizer")?this._dragMode=ec.RESIZE:this._dragMode=ec.NONE,this._selectedElement=e.target.parentElement,this._vacRectSnapshot=[...this._vacRect];const a=this.getMousePosition(e);this._startPointSnapshot=this.scaledMapToVacuum(a.x,a.y),this.update()}_drag(e){if(!(window.TouchEvent&&e instanceof TouchEvent&&e.touches.length>1)&&this._selectedElement){dl(e);const t=this.getMousePosition(e);if(t){const e=this.scaledMapToVacuum(t.x,t.y),i=e[0]-this._startPointSnapshot[0],a=e[1]-this._startPointSnapshot[1];switch(this._dragMode){case ec.MOVE:this._vacRect=[this._vacRectSnapshot[0]+i,this._vacRectSnapshot[1]+a,this._vacRectSnapshot[2]+i,this._vacRectSnapshot[3]+a],this._setup(this.vacuumToMapRect(this._vacRect)[0]);break;case ec.RESIZE:const e=this.vacuumToMapRect(this._vacRectSnapshot)[1][0],t=[...this._vacRect];e[0]===this._vacRectSnapshot[0]?this._vacRect[2]=this._vacRectSnapshot[2]+i:this._vacRect[0]=this._vacRectSnapshot[0]+i,e[1]===this._vacRectSnapshot[1]?this._vacRect[3]=this._vacRectSnapshot[3]+a:this._vacRect[1]=this._vacRectSnapshot[1]+a,Math.sign(this._vacRect[0]-this._vacRect[2])==Math.sign(t[0]-t[2])&&Math.sign(this._vacRect[1]-this._vacRect[3])==Math.sign(t[1]-t[3])||(this._vacRect=t),this._setup(this.vacuumToMapRect(this._vacRect)[0]);case ec.NONE:}}}}_setup(e){var t,i,a,n,o,r,s,l,c,d,u,m,p,_,v,g,h;null===(a=null===(i=null===(t=this._selectedElement)||void 0===t?void 0:t.children)||void 0===i?void 0:i.item(0))||void 0===a||a.setAttribute("points",tc._toPoints(e));const f=e[0],b=e[2],y=e[3],k=tc.calcAngle(e[0],e[3]);null===(o=null===(n=this._selectedElement)||void 0===n?void 0:n.style)||void 0===o||o.setProperty("--x-resize",b[0]+"px"),null===(s=null===(r=this._selectedElement)||void 0===r?void 0:r.style)||void 0===s||s.setProperty("--y-resize",b[1]+"px"),null===(c=null===(l=this._selectedElement)||void 0===l?void 0:l.style)||void 0===c||c.setProperty("--x-delete",y[0]+"px"),null===(u=null===(d=this._selectedElement)||void 0===d?void 0:d.style)||void 0===u||u.setProperty("--y-delete",y[1]+"px"),null===(p=null===(m=this._selectedElement)||void 0===m?void 0:m.style)||void 0===p||p.setProperty("--x-description",f[0]+"px"),null===(v=null===(_=this._selectedElement)||void 0===_?void 0:_.style)||void 0===v||v.setProperty("--y-description",f[1]+"px"),null===(h=null===(g=this._selectedElement)||void 0===g?void 0:g.style)||void 0===h||h.setProperty("--angle-description",k+"rad")}_endDrag(e){dl(e),this._selectedElement=null,this._selectedTarget=null,this.update()}_delete(e){dl(e);const t=ul(this._context.selectedManualRectangles(),this);if(t>-1){for(let e=t;e<this._context.selectedManualRectangles().length;e++)this._context.selectedManualRectangles()[e]._id=(e+1).toString();ke("selection"),this.update()}}_toVacuumFromDimensions(e,t,i,a){const n=this.realScaled(e),o=this.realScaled(t),r=this.realScaled(i),s=this.realScaled(a),l=this.realMapToVacuum(n,o),c=this.realMapToVacuum(n+r,o+s),d=[l[0],c[0]].sort(),u=[l[1],c[1]].sort();return[d[0],u[0],d[1],u[1]]}static get styles(){return r`
            .resizer {
                cursor: nwse-resize;
            }

            .movable {
                cursor: move;
            }

            .manual-rectangle-wrapper {
            }

            .manual-rectangle-wrapper.selected {
            }

            .manual-rectangle {
                stroke: var(--map-card-internal-manual-rectangle-line-color);
                stroke-linejoin: round;
                stroke-dasharray: calc(var(--map-card-internal-manual-rectangle-line-segment-line) / var(--map-scale)),
                    calc(var(--map-card-internal-manual-rectangle-line-segment-gap) / var(--map-scale));
                fill: var(--map-card-internal-manual-rectangle-fill-color);
                stroke-width: calc(var(--map-card-internal-manual-rectangle-line-width) / var(--map-scale));
            }

            .manual-rectangle-wrapper.selected > .manual-rectangle {
                stroke: var(--map-card-internal-manual-rectangle-line-color-selected);
                fill: var(--map-card-internal-manual-rectangle-fill-color-selected);
            }

            .manual-rectangle-description {
                transform: translate(
                        calc(
                            var(--x-description) + var(--map-card-internal-manual-rectangle-description-offset-x) /
                                var(--map-scale)
                        ),
                        calc(
                            var(--y-description) + var(--map-card-internal-manual-rectangle-description-offset-y) /
                                var(--map-scale)
                        )
                    )
                    rotate(var(--angle-description));
                font-size: calc(var(--map-card-internal-manual-rectangle-description-font-size) / var(--map-scale));
                fill: var(--map-card-internal-manual-rectangle-description-color);
                background: transparent;
            }

            .manual-rectangle-delete-circle {
                r: calc(var(--map-card-internal-manual-rectangle-delete-circle-radius) / var(--map-scale));
                cx: var(--x-delete);
                cy: var(--y-delete);
                stroke: var(--map-card-internal-manual-rectangle-delete-circle-line-color);
                fill: var(--map-card-internal-manual-rectangle-delete-circle-fill-color);
                stroke-width: calc(
                    var(--map-card-internal-manual-rectangle-delete-circle-line-width) / var(--map-scale)
                );
            }

            .manual-rectangle-delete-icon {
                fill: var(--map-card-internal-manual-rectangle-delete-icon-color);
                transform: translate(
                        calc(var(--x-delete) - 8.5px / var(--map-scale)),
                        calc(var(--y-delete) - 8.5px / var(--map-scale))
                    )
                    scale(calc(0.71 / var(--map-scale)));
                pointer-events: none;
            }

            .manual-rectangle-wrapper.selected > .manual-rectangle-delete-circle {
                stroke: var(--map-card-internal-manual-rectangle-delete-circle-line-color-selected);
                fill: var(--map-card-internal-manual-rectangle-delete-circle-fill-color-selected);
                opacity: 50%;
            }

            .manual-rectangle-wrapper.selected > .manual-rectangle-delete-icon {
                fill: var(--map-card-internal-manual-rectangle-delete-icon-color-selected);
                opacity: 50%;
            }

            .manual-rectangle-resize-circle {
                r: calc(var(--map-card-internal-manual-rectangle-resize-circle-radius) / var(--map-scale));
                cx: var(--x-resize);
                cy: var(--y-resize);
                stroke: var(--map-card-internal-manual-rectangle-resize-circle-line-color);
                fill: var(--map-card-internal-manual-rectangle-resize-circle-fill-color);
                stroke-width: calc(
                    var(--map-card-internal-manual-rectangle-resize-circle-line-width) / var(--map-scale)
                );
            }

            .manual-rectangle-resize-icon {
                fill: var(--map-card-internal-manual-rectangle-resize-icon-color);
                transform: translate(
                        calc(var(--x-resize) - 8.5px / var(--map-scale)),
                        calc(var(--y-resize) - 8.5px / var(--map-scale))
                    )
                    scale(calc(0.71 / var(--map-scale)));
                pointer-events: none;
            }

            .manual-rectangle-wrapper.selected > .manual-rectangle-resize-circle {
                stroke: var(--map-card-internal-manual-rectangle-resize-circle-line-color-selected);
                fill: var(--map-card-internal-manual-rectangle-resize-circle-fill-color-selected);
                opacity: 50%;
            }

            .manual-rectangle-wrapper.selected > .manual-rectangle-resize-icon {
                fill: var(--map-card-internal-manual-rectangle-resize-icon-color-selected);
                opacity: 50%;
            }
        `}}class ic{constructor(e,t,i,a,n,o,r,s,l,c,d,u,m,p,_,v,g,h){this.scale=e,this.realScale=t,this.mousePositionCalculator=i,this.update=a,this.selectionChanged=n,this.coordinatesConverter=o,this.selectedManualRectangles=r,this.selectedPredefinedRectangles=s,this.selectedRooms=l,this.selectedPredefinedPoint=c,this.roundingEnabled=d,this.coordinatesToMetersDivider=u,this.maxSelections=m,this.cssEvaluator=p,this.runImmediately=_,this.localize=v,this.getState=g,this.toggleEntity=h}roundMap([e,t]){return this.roundingEnabled()?[Math.round(e),Math.round(t)]:[e,t]}}class ac extends Ql{constructor(e,t,i){super(i),this._x=e,this._y=t}}class nc extends ac{constructor(e,t,i){super(e,t,i)}render(){return F`
            <g class="manual-point-wrapper" style="--x-point:${this._x}px; --y-point:${this._y}px;">
                <circle class="manual-point"></circle>
            </g>
        `}imageX(){return this.realScaled(this._x)}imageY(){return this.realScaled(this._y)}toVacuum(e=null){const[t,i]=this.realMapToVacuum(this.imageX(),this.imageY());return null===e?[t,i]:[t,i,e]}static get styles(){return r`
            .manual-point-wrapper {
                stroke: var(--map-card-internal-manual-point-line-color);
                stroke-width: calc(var(--map-card-internal-manual-point-line-width) / var(--map-scale));
                --radius: calc(var(--map-card-internal-manual-point-radius) / var(--map-scale));
            }

            .manual-point {
                cx: var(--x-point);
                cy: var(--y-point);
                r: var(--radius);
                fill: var(--map-card-internal-manual-point-fill-color);
            }
        `}}class oc extends Ql{constructor(e,t,i){super(i),this.x=e,this.y=t}imageX(){return this.realScaled(this.x)}imageY(){return this.realScaled(this.y)}renderMask(){return F`
            <circle style="r: var(--radius)"
                    cx="${this.x}"
                    cy="${this.y}"
                    fill="black">
            </circle>`}render(){return F`
            <circle class="manual-path-point"
                    cx="${this.x}"
                    cy="${this.y}">
            </circle>`}}class rc extends Ql{constructor(e,t){super(t),this.points=e}render(){if(0===this.points.length)return F``;const e=this.points.map((e=>e.x)),t=this.points.map((e=>e.y)),i=Math.max(...e),a=Math.min(...e),n=Math.max(...t),o=Math.min(...t);return F`
            <g class="manual-path-wrapper">
                <defs>
                    <mask id="manual-path-circles-filter">
                        <rect x="${a}" y="${o}" width="${i-a}" height="${n-o}"
                              fill="white"></rect>
                        ${this.points.map((e=>e.renderMask()))}
                    </mask>
                </defs>
                ${this.points.map((e=>e.render()))}
                <polyline class="manual-path-line"
                          points="${this.points.map((e=>`${e.x},${e.y}`)).join(" ")}"
                          mask="url(#manual-path-circles-filter)">
                </polyline>
            </g>
        `}toVacuum(e=null){return this.points.map((t=>{const[i,a]=this.realMapToVacuum(t.imageX(),t.imageY());return null===e?[i,a]:[i,a,e]}))}addPoint(e,t){this.points.push(new oc(e,t,this._context))}clear(){this.points=[]}removeLast(){this.points.pop()}static get styles(){return r`
            .manual-path-wrapper {
                --radius: calc(var(--map-card-internal-manual-path-point-radius) / var(--map-scale));
            }

            .manual-path-line {
                fill: transparent;
                stroke: var(--map-card-internal-manual-path-line-color);
                stroke-width: calc(var(--map-card-internal-manual-path-line-width) / var(--map-scale));
            }

            .manual-path-point {
                r: var(--radius);
                stroke: var(--map-card-internal-manual-path-point-line-color);
                fill: var(--map-card-internal-manual-path-point-fill-color);
                stroke-width: calc(var(--map-card-internal-manual-path-point-line-width) / var(--map-scale));
            }
        `}}class sc extends Ql{constructor(e,t){super(t),this._common_config=e,this._selected=e.default_state==Tl.SELECTED,this._common_config.state_entity&&(this._selected="on"==this._context.getState(this._common_config.state_entity))}get variables(){var e;return null!==(e=this._common_config.variables)&&void 0!==e?e:super.variables}get selected(){return this._selected}_toggleSelected(){this._common_config.state_entity?(this._selected="on"!=this._context.getState(this._common_config.state_entity),this._context.toggleEntity(this._common_config.state_entity)):this._selected=!this._selected}isDynamic(){return void 0!==this._common_config.state_entity}}class lc extends sc{constructor(e,t){var i;super(e,t),this._config=e,this._iconConfig=null!==(i=this._config.icon)&&void 0!==i?i:{x:this._config.position[0],y:this._config.position[1],name:"mdi:map-marker"}}static getFromEntities(e,t,i){return e.predefinedSelections.map((e=>e)).filter((e=>"string"==typeof e.position)).map((e=>e.position.split(".attributes."))).flatMap((e=>{const i=t.states[e[0]],a=2===e.length?i.attributes[e[1]]:i.state;let n;try{n=JSON.parse(a)}catch(e){n=a}return n})).map((e=>new lc({position:e,label:void 0,icon:{x:e[0],y:e[1],name:"mdi:map-marker"}},i())))}render(){return F`
            <g class="predefined-point-wrapper ${this._selected?"selected":""}">
                ${this.renderIcon(this._iconConfig,(()=>this._click()),"predefined-point-icon-wrapper")}
                ${this.renderLabel(this._config.label,"predefined-point-label")}
            </g>
        `}toVacuum(e=null){return"string"==typeof this._config.position?[0,0]:null===e?this._config.position:[...this._config.position,e]}async _click(){if(this._toggleSelected(),ke("selection"),this._selected){const e=this._context.selectedPredefinedPoint().pop();void 0!==e&&(e._selected=!1),this._context.selectedPredefinedPoint().push(this)}else ul(this._context.selectedPredefinedPoint(),this);if(await this._context.runImmediately())return this._selected=!1,void ul(this._context.selectedPredefinedPoint(),this);this.update()}static get styles(){return r`
            .predefined-point-wrapper {
            }

            .predefined-point-icon-wrapper {
                x: var(--x-icon);
                y: var(--y-icon);
                height: var(--map-card-internal-predefined-point-icon-wrapper-size);
                width: var(--map-card-internal-predefined-point-icon-wrapper-size);
                border-radius: var(--map-card-internal-small-radius);
                transform-box: fill-box;
                overflow: hidden;
                transform: translate(
                        calc(var(--map-card-internal-predefined-point-icon-wrapper-size) / -2),
                        calc(var(--map-card-internal-predefined-point-icon-wrapper-size) / -2)
                    )
                    scale(calc(1 / var(--map-scale)));
                background: var(--map-card-internal-predefined-point-icon-background-color);
                color: var(--map-card-internal-predefined-point-icon-color);
                --mdc-icon-size: var(--map-card-internal-predefined-point-icon-size);
                transition: color var(--map-card-internal-transitions-duration) ease,
                    background var(--map-card-internal-transitions-duration) ease;
            }

            .predefined-point-label {
                text-anchor: middle;
                dominant-baseline: middle;
                pointer-events: none;
                font-size: calc(var(--map-card-internal-predefined-point-label-font-size) / var(--map-scale));
                fill: var(--map-card-internal-predefined-point-label-color);
                transition: color var(--map-card-internal-transitions-duration) ease,
                    background var(--map-card-internal-transitions-duration) ease;
            }

            .predefined-point-wrapper.selected > * > .predefined-point-icon-wrapper {
                background: var(--map-card-internal-predefined-point-icon-background-color-selected);
                color: var(--map-card-internal-predefined-point-icon-color-selected);
            }

            .predefined-point-wrapper.selected > .predefined-point-label {
                fill: var(--map-card-internal-predefined-point-label-color-selected);
            }
        `}}class cc extends sc{constructor(e,t){super(e,t),this._config=e}static getFromEntities(e,t,i){return e.predefinedSelections.map((e=>e)).filter((e=>"string"==typeof e.zones)).map((e=>e.zones.split(".attributes."))).flatMap((e=>{const i=t.states[e[0]],a=2===e.length?i.attributes[e[1]]:i.state;let n;try{n=JSON.parse(a)}catch(e){n=a}return n})).map((e=>new cc({zones:[e],label:void 0,icon:{x:(e[0]+e[2])/2,y:(e[1]+e[3])/2,name:"mdi:broom"}},i())))}render(){let e=[];"string"!=typeof this._config.zones&&(e=this._config.zones);const t=e.map((e=>this.vacuumToMapRect(e)[0]));return F`
            <g class="predefined-rectangle-wrapper ${this._selected?"selected":""}">
                ${t.map((e=>F`
                    <polygon class="predefined-rectangle clickable"
                             points="${e.map((e=>e.join(", "))).join(" ")}"
                             @click="${async()=>this._click()}">
                    </polygon>
                `))}
                ${this.renderIcon(this._config.icon,(()=>this._click()),"predefined-rectangle-icon-wrapper")}
                ${this.renderLabel(this._config.label,"predefined-rectangle-label")}
            </g>
        `}size(){return this._config.zones.length}toVacuum(e){return"string"==typeof this._config.zones?[]:null===e?this._config.zones:this._config.zones.map((t=>[...t,e]))}async _click(){if(!this._selected&&this._context.selectedPredefinedRectangles().map((e=>e.size())).reduce(((e,t)=>e+t),0)+this.size()>this._context.maxSelections())ke("failure");else{if(this._toggleSelected(),this._selected?this._context.selectedPredefinedRectangles().push(this):ul(this._context.selectedPredefinedRectangles(),this),await this._context.runImmediately())return this._selected=!1,void ul(this._context.selectedPredefinedRectangles(),this);ke("selection"),this.update()}}static get styles(){return r`
            .predefined-rectangle-wrapper {
            }

            .predefined-rectangle-wrapper.selected {
            }

            .predefined-rectangle {
                width: var(--width);
                height: var(--height);
                x: var(--x);
                y: var(--y);
                stroke: var(--map-card-internal-predefined-rectangle-line-color);
                stroke-linejoin: round;
                stroke-dasharray: calc(
                        var(--map-card-internal-predefined-rectangle-line-segment-line) / var(--map-scale)
                    ),
                    calc(var(--map-card-internal-predefined-rectangle-line-segment-gap) / var(--map-scale));
                fill: var(--map-card-internal-predefined-rectangle-fill-color);
                stroke-width: calc(var(--map-card-internal-predefined-rectangle-line-width) / var(--map-scale));
                transition: stroke var(--map-card-internal-transitions-duration) ease,
                    fill var(--map-card-internal-transitions-duration) ease;
            }

            .predefined-rectangle-icon-wrapper {
                x: var(--x-icon);
                y: var(--y-icon);
                height: var(--map-card-internal-predefined-rectangle-icon-wrapper-size);
                width: var(--map-card-internal-predefined-rectangle-icon-wrapper-size);
                border-radius: var(--map-card-internal-small-radius);
                transform-box: fill-box;
                transform: translate(
                        calc(var(--map-card-internal-predefined-rectangle-icon-wrapper-size) / -2),
                        calc(var(--map-card-internal-predefined-rectangle-icon-wrapper-size) / -2)
                    )
                    scale(calc(1 / var(--map-scale)));
                background: var(--map-card-internal-predefined-rectangle-icon-background-color);
                color: var(--map-card-internal-predefined-rectangle-icon-color);
                --mdc-icon-size: var(--map-card-internal-predefined-rectangle-icon-size);
                transition: color var(--map-card-internal-transitions-duration) ease,
                    background var(--map-card-internal-transitions-duration) ease;
            }

            .predefined-rectangle-label {
                text-anchor: middle;
                dominant-baseline: middle;
                pointer-events: none;
                font-size: calc(var(--map-card-internal-predefined-rectangle-label-font-size) / var(--map-scale));
                fill: var(--map-card-internal-predefined-rectangle-label-color);
                transition: color var(--map-card-internal-transitions-duration) ease,
                    background var(--map-card-internal-transitions-duration) ease;
            }

            .predefined-rectangle-wrapper.selected > .predefined-rectangle {
                stroke: var(--map-card-internal-predefined-rectangle-line-color-selected);
                fill: var(--map-card-internal-predefined-rectangle-fill-color-selected);
            }

            .predefined-rectangle-wrapper.selected > * > .predefined-rectangle-icon-wrapper {
                background: var(--map-card-internal-predefined-rectangle-icon-background-color-selected);
                color: var(--map-card-internal-predefined-rectangle-icon-color-selected);
            }

            .predefined-rectangle-wrapper.selected > .predefined-rectangle-label {
                fill: var(--map-card-internal-predefined-rectangle-label-color-selected);
            }
        `}}class dc extends sc{constructor(e,t){super(e,t),this._config=e}render(){var e,t;const i=(null!==(t=null===(e=this._config)||void 0===e?void 0:e.outline)&&void 0!==t?t:[]).map((e=>this.vacuumToScaledMap(e[0],e[1])));return F`
            <g class="room-wrapper ${this._selected?"selected":""} 
            room-${`${this._config.id}`.replace(" ","_")}-wrapper">
                <polygon class="room-outline clickable"
                         points="${i.map((e=>e.join(", "))).join(" ")}"
                         @click="${async()=>this._click()}">
                </polygon>
                ${this.renderIcon(this._config.icon,(()=>this._click()),"room-icon-wrapper")}
                ${this.renderLabel(this._config.label,"room-label")}
            </g>
        `}toVacuum(){return this._config.id}async _click(){if(!this._selected&&this._context.selectedRooms().length>=this._context.maxSelections())ke("failure");else{if(this._toggleSelected(),this._selected?this._context.selectedRooms().push(this):ul(this._context.selectedRooms(),this),this._context.selectionChanged(),await this._context.runImmediately())return this._selected=!1,ul(this._context.selectedRooms(),this),void this._context.selectionChanged();ke("selection"),this.update()}}static get styles(){return r`
            .room-wrapper {
            }

            .room-outline {
                stroke: var(--map-card-internal-room-outline-line-color);
                stroke-width: calc(var(--map-card-internal-room-outline-line-width) / var(--map-scale));
                fill: var(--map-card-internal-room-outline-fill-color);
                stroke-linejoin: round;
                stroke-dasharray: calc(var(--map-card-internal-room-outline-line-segment-line) / var(--map-scale)),
                    calc(var(--map-card-internal-room-outline-line-segment-gap) / var(--map-scale));
                transition: stroke var(--map-card-internal-transitions-duration) ease,
                    fill var(--map-card-internal-transitions-duration) ease;
            }

            .room-icon-wrapper {
                x: var(--x-icon);
                y: var(--y-icon);
                height: var(--map-card-internal-room-icon-wrapper-size);
                width: var(--map-card-internal-room-icon-wrapper-size);
                border-radius: var(--map-card-internal-small-radius);
                transform-box: fill-box;
                overflow: hidden;
                transform: translate(
                        calc(var(--map-card-internal-room-icon-wrapper-size) / -2),
                        calc(var(--map-card-internal-room-icon-wrapper-size) / -2)
                    )
                    scale(calc(1 / var(--map-scale)));
                background: var(--map-card-internal-room-icon-background-color);
                color: var(--map-card-internal-room-icon-color);
                --mdc-icon-size: var(--map-card-internal-room-icon-size);
                transition: color var(--map-card-internal-transitions-duration) ease,
                    background var(--map-card-internal-transitions-duration) ease;
            }

            .room-label {
                text-anchor: middle;
                dominant-baseline: middle;
                pointer-events: none;
                font-size: calc(var(--map-card-internal-room-label-font-size) / var(--map-scale));
                fill: var(--map-card-internal-room-label-color);
                transition: color var(--map-card-internal-transitions-duration) ease,
                    background var(--map-card-internal-transitions-duration) ease;
            }

            .room-wrapper.selected > .room-outline {
                stroke: var(--map-card-internal-room-outline-line-color-selected);
                fill: var(--map-card-internal-room-outline-fill-color-selected);
            }

            .room-wrapper.selected > * > .room-icon-wrapper {
                background: var(--map-card-internal-room-icon-background-color-selected);
                color: var(--map-card-internal-room-icon-color-selected);
            }

            .room-wrapper.selected > .room-label {
                fill: var(--map-card-internal-room-label-color-selected);
            }
        `}}function uc(e){return void 0===e.x?["validation.preset.map_modes.predefined_selections.icon.x.missing"]:void 0===e.y?["validation.preset.map_modes.predefined_selections.icon.y.missing"]:e.name?[]:["validation.preset.map_modes.predefined_selections.icon.name.missing"]}function mc(e){return void 0===e.x?["validation.preset.map_modes.predefined_selections.label.x.missing"]:void 0===e.y?["validation.preset.map_modes.predefined_selections.label.y.missing"]:e.text?[]:["validation.preset.map_modes.predefined_selections.label.text.missing"]}function pc(e,t,i){var a,n;if(!t)return["validation.preset.map_modes.invalid"];if(t.template&&!Fs.isValidModeTemplate(e,t.template))return[["validation.preset.map_modes.template.invalid","{0}",t.template]];const o=[];t.template||t.icon||o.push("validation.preset.map_modes.icon.missing"),t.template||t.name||o.push("validation.preset.map_modes.name.missing"),t.template||t.service_call_schema||o.push("validation.preset.map_modes.service_call_schema.missing");const r=new ll(e,t,i);switch(r.selectionType){case ur.PREDEFINED_RECTANGLE:r.predefinedSelections.flatMap((e=>function(e){const t=e,i=[];return t.zones||i.push("validation.preset.map_modes.predefined_selections.zones.missing"),"string"!=typeof t.zones&&t.zones.filter((e=>4!=e.length)).length>0&&i.push("validation.preset.map_modes.predefined_selections.zones.invalid_parameters_number"),t.icon&&uc(t.icon).forEach((e=>i.push(e))),t.label&&mc(t.label).forEach((e=>i.push(e))),i}(e))).forEach((e=>o.push(e)));break;case ur.ROOM:r.predefinedSelections.flatMap((e=>function(e){var t;const i=e,a=[];return void 0===i.id&&a.push("validation.preset.map_modes.predefined_selections.rooms.id.missing"),i.id.toString().match(/^[A-Za-z0-9 _]+$/i)||a.push(["validation.preset.map_modes.predefined_selections.rooms.id.invalid_format","{0}",i.id.toString()]),(null!==(t=i.outline)&&void 0!==t?t:[]).filter((e=>2!=e.length)).length>0&&a.push("validation.preset.map_modes.predefined_selections.rooms.outline.invalid_parameters_number"),i.icon&&uc(i.icon).forEach((e=>a.push(e))),i.label&&mc(i.label).forEach((e=>a.push(e))),a}(e))).forEach((e=>o.push(e)));break;case ur.PREDEFINED_POINT:r.predefinedSelections.flatMap((e=>function(e){var t;const i=e,a=[];return i.position||a.push("validation.preset.map_modes.predefined_selections.points.position.missing"),"string"!=typeof i.position&&2!=(null===(t=i.position)||void 0===t?void 0:t.length)&&a.push("validation.preset.map_modes.predefined_selections.points.position.invalid_parameters_number"),i.icon&&uc(i.icon).forEach((e=>a.push(e))),i.label&&mc(i.label).forEach((e=>a.push(e))),a}(e))).forEach((e=>o.push(e)));break;case ur.MANUAL_RECTANGLE:case ur.MANUAL_PATH:case ur.MANUAL_POINT:null!==(n=null===(a=r.predefinedSelections)||void 0===a?void 0:a.length)&&void 0!==n&&n&&o.push(["validation.preset.map_modes.predefined_selections.not_applicable","{0}",ur[r.selectionType]])}return t.service_call_schema&&function(e){return e.service?e.service.includes(".")?[]:[["validation.preset.map_modes.service_call_schema.service.invalid","{0}",e.service]]:["validation.preset.map_modes.service_call_schema.service.missing"]}(t.service_call_schema).forEach((e=>o.push(e))),o}function _c(e,t,i){var a,n,o;const r=[],s=Fs.getPlatformsWithDefaultCalibration(),l=new Map([["entity","validation.preset.entity.missing"],["map_source","validation.preset.map_source.missing"]]),c=Fs.getPlatformName(e.vacuum_platform);s.includes(c)||l.set("calibration_source","validation.preset.calibration_source.missing");const d=Object.keys(e);var u,m;return l.forEach(((e,t)=>{d.includes(t)||r.push(e)})),e.map_source&&(u=e.map_source,u.camera||u.image?u.camera&&u.image?["validation.preset.map_source.ambiguous"]:[]:["validation.preset.map_source.none_provided"]).forEach((e=>r.push(e))),e.calibration_source&&(m=e.calibration_source,Object.keys(m).filter((e=>"attribute"!=e)).length>1?["validation.preset.calibration_source.ambiguous"]:m.calibration_points?[3,4].includes(m.calibration_points.length)?m.calibration_points.flatMap((e=>function(e){const t=[];return(null==e?void 0:e.map)||t.push("validation.preset.calibration_source.calibration_points.missing_map"),(null==e?void 0:e.vacuum)||t.push("validation.preset.calibration_source.calibration_points.missing_vacuum"),[null==e?void 0:e.map,null==e?void 0:e.vacuum].filter((e=>void 0===e.x||void 0===e.y)).length>0&&t.push("validation.preset.calibration_source.calibration_points.missing_coordinate"),t}(e))):["validation.preset.calibration_source.calibration_points.invalid_number"]:[]).forEach((e=>r.push(e))),e.vacuum_platform&&!Fs.getPlatforms().includes(Fs.getPlatformName(e.vacuum_platform))&&r.push(["validation.preset.platform.invalid","{0}",e.vacuum_platform]),(null!==(a=e.icons)&&void 0!==a?a:[]).flatMap((e=>function(e){if(!e)return["validation.preset.icons.invalid"];const t=[];return e.icon||"menu"===e.type||e.replace_config||t.push("validation.preset.icons.icon.missing"),t}(e))).forEach((e=>r.push(e))),(null!==(n=e.tiles)&&void 0!==n?n:[]).flatMap((e=>function(e){if(!e)return["validation.preset.tiles.invalid"];const t=[];return e.replace_config||(e.entity||e.internal_variable||t.push("validation.preset.tiles.entity.missing"),e.label||e.entity||t.push("validation.preset.tiles.label.missing")),t}(e))).forEach((e=>r.push(e))),[Fs.SETUP_INTEGER_PLATFORM,Fs.SETUP_DECIMAL_PLATFORM].includes(Fs.getPlatformName(e.vacuum_platform))||(null!==(o=e.map_modes)&&void 0!==o?o:[]).flatMap((e=>pc(c,e,i))).forEach((e=>r.push(e))),!e.preset_name&&t&&r.push("validation.preset.preset_name.missing"),r}class vc{static generate(e,t,i,a,n,o,r,s,l,c){var d;const u=(null!=t?t:[]).filter((e=>void 0!==s(e))),m=-1===(null!==(d=null==t?void 0:t.length)&&void 0!==d?d:-1)?c(e,i,a,o,u,n):r?c(e,i,a,o,u,n).then((e=>{const i=e.map((e=>{var t;return null!==(t=s(e))&&void 0!==t?t:""}));return[...e,...(null!=t?t:[]).filter((e=>{var t;return!(e.replace_config||void 0!==s(e)&&i.includes(null!==(t=s(e))&&void 0!==t?t:""))}))]})):new Promise((e=>e(null!=t?t:[])));return m.then((e=>[...e].sort(l)))}}class gc{constructor(e){this._userDefinedTiles=e,this._tiles=[]}addTiles(e){e.forEach((e=>this.addTile(e)))}addTile(e){e.tile_id&&this._tiles.map((e=>e.tile_id)).includes(e.tile_id)||(e.tile_id&&this._userDefinedTiles.some((t=>t.tile_id===e.tile_id))?this._userDefinedTiles.filter((t=>t.tile_id===e.tile_id)).forEach((t=>{t.replace_config?this._tiles.push(Object.assign(Object.assign({},e),t)):this._tiles.push(t)})):this._tiles.push(e))}get tiles(){return this._tiles}}class hc{static async generate(e,t,i,a,n,o){if(!e)return new Promise((e=>e([])));const r=e.states[t];if(!r)return[];const s=new gc(n);return s.addTiles(hc.getCommonTiles(r,t,a)),s.addTiles(await hc.getTilesFromEntities(e,t,i,a,o)),s.addTiles(hc.getTilesFromAttributes(e,r,t,i,a,o)),s.tiles}static getCommonTiles(e,t,i){const a=[];return"status"in e.attributes&&a.push({tile_id:"status",entity:t,label:lr("tile.status.label",i),attribute:"status",icon:"mdi:robot-vacuum",translations:hc.generateTranslationKeys(["starting","charger disconnected","idle","remote control active","cleaning","returning home","manual mode","charging","charging problem","paused","spot cleaning","error","shutting down","updating","docking","going to target","zoned cleaning","segment cleaning","emptying the bin","charging complete","device offline"],"status",i)}),"battery_level"in e.attributes&&"battery_icon"in e.attributes&&a.push({tile_id:"battery_level",entity:t,label:lr("tile.battery_level.label",i),attribute:"battery_level",icon_source:`${t}.attributes.battery_icon`,unit:"%"}),"battery_level"in e.attributes&&!("battery_icon"in e.attributes)&&a.push({tile_id:"battery_level",entity:t,label:lr("tile.battery_level.label",i),attribute:"battery_level",icon:"mdi:battery",unit:"%"}),"fan_speed"in e.attributes&&a.push({tile_id:"fan_speed",entity:t,label:lr("tile.fan_speed.label",i),attribute:"fan_speed",icon:"mdi:fan",translations:hc.generateTranslationKeys(["silent","standard","medium","turbo","auto","gentle"],"fan_speed",i)}),a}static getTilesFromAttributes(e,t,i,a,n,o){return Fs.getTilesFromAttributesTemplates(a).filter((e=>e.attribute in t.attributes)).map((t=>hc.mapAttributeToTile(e,i,t,n,o)))}static async getTilesFromEntities(e,t,i,a,n){const o=await bl(e,t);return o.length>0?Fs.getTilesFromSensorsTemplates(i).map((e=>({tile:e,entity:o.filter((t=>t.unique_id.match(e.unique_id_regex)))}))).flatMap((i=>i.entity.map((o=>hc.mapEntryToTile(e,t,o,i.tile,a,n))))):[]}static mapEntryToTile(e,t,i,a,n,o){var r,s;return hc.mapToTile(e,a,t,i.entity_id,void 0,null!==(s=null!==(r=a.icon)&&void 0!==r?r:i.icon)&&void 0!==s?s:i.original_icon,n,o)}static mapAttributeToTile(e,t,i,a,n){return hc.mapToTile(e,i,t,t,i.attribute,i.icon,a,n)}static mapToTile(e,t,i,a,n,o,r,s){var l;const c=Object.assign(Object.assign({},t),{entity:a,label:hc.getTileLabel(e,t,r,a,n),attribute:n,icon:o,unit:t.unit?lr(t.unit,r):void 0,precision:t.precision?t.precision:0,multiplier:t.multiplier?t.multiplier:void 0,translations:hc.generateTranslationKeys(null!==(l=t.translation_keys)&&void 0!==l?l:[],t.tile_id,r)});return El(hc.cleanup(c),hc.getDefaultVariables(i,a,n),s)}static getTileLabel(e,t,i,a,n){var o;return void 0!==t.label?lr(t.label,i):void 0!==n?Yo(e.localize,e.states[a],e.entities,n):null!==(o=e.states[a].attributes.friendly_name)&&void 0!==o?o:a}static generateTranslationKeys(e,t,i){const a={};return t&&e.forEach((e=>{const n=lr(`tile.${t}.value.${e}`,i,"");n&&(a[e]=n)})),a}static cleanup(e){const t=["unique_id_regex","translation_keys"],i=e;for(const e in i)i.hasOwnProperty(e)&&t.includes(e)&&delete i[e];return i}static getDefaultVariables(e,t,i){const a={};return a[al.ENTITY_ID]=null!=t?t:e,a[al.VACUUM_ENTITY_ID]=e,a[al.ATTRIBUTE]=null!=i?i:"",a}}function fc(e,t){return void 0===e.order&&void 0===t.order?0:void 0===e.order?1:void 0===t.order?-1:e.order-t.order}class bc{constructor(e){this._userDefinedIcons=e,this._icons=[]}addIcons(e){e.forEach((e=>this.addIcon(e)))}addIcon(e){e.icon_id&&this._icons.map((e=>e.icon_id)).includes(e.icon_id)||(e.icon_id&&this._userDefinedIcons.some((t=>t.icon_id===e.icon_id))?this._userDefinedIcons.filter((t=>t.icon_id===e.icon_id)).forEach((t=>{t.replace_config?this._icons.push(Object.assign(Object.assign({},e),t)):this._icons.push(t)})):this._icons.push(e))}get icons(){return this._icons}}class yc{static async generate(e,t,i,a,n,o){if(!e)return[];const r=new bc(n);return r.addIcons(yc.getCommonIcons(e,t,a)),r.addIcons(await yc.getIconsFromEntities(e,t,i)),r.icons}static getCommonIcons(e,t,i){var a;const n=e.states[t],o=n&&n.attributes,r=[];yc.isFeatureSupported(n,8192)&&r.push({icon:"mdi:play",conditions:[{entity:t,value_not:"cleaning"},{entity:t,value_not:"error"},{entity:t,value_not:"returning"}],tooltip:lr("icon.vacuum_start",i),tap_action:{action:"call-service",service:"vacuum.start",service_data:{entity_id:t}}}),yc.isFeatureSupported(n,4)&&r.push({icon:"mdi:pause",conditions:[{entity:t,value_not:"docked"},{entity:t,value_not:"idle"},{entity:t,value_not:"error"},{entity:t,value_not:"paused"}],tooltip:lr("icon.vacuum_pause",i),tap_action:{action:"call-service",service:"vacuum.pause",service_data:{entity_id:t}}}),yc.isFeatureSupported(n,8)&&r.push({icon:"mdi:stop",conditions:[{entity:t,value_not:"docked"},{entity:t,value_not:"idle"},{entity:t,value_not:"error"},{entity:t,value_not:"paused"}],tooltip:lr("icon.vacuum_stop",i),tap_action:{action:"call-service",service:"vacuum.stop",service_data:{entity_id:t}}}),yc.isFeatureSupported(n,16)&&r.push({icon:"mdi:home-map-marker",conditions:[{entity:t,value_not:"docked"},{entity:t,value_not:"returning"}],tooltip:lr("icon.vacuum_return_to_base",i),tap_action:{action:"call-service",service:"vacuum.return_to_base",service_data:{entity_id:t}}}),yc.isFeatureSupported(n,1024)&&r.push({icon:"mdi:target-variant",conditions:[{entity:t,value_not:"docked"},{entity:t,value_not:"error"},{entity:t,value_not:"cleaning"},{entity:t,value_not:"returning"}],tooltip:lr("icon.vacuum_clean_spot",i),tap_action:{action:"call-service",service:"vacuum.clean_spot",service_data:{entity_id:t}}}),yc.isFeatureSupported(n,512)&&r.push({icon:"mdi:map-marker",tooltip:lr("icon.vacuum_locate",i),tap_action:{action:"call-service",service:"vacuum.locate",service_data:{entity_id:t}}});const s=o&&null!==(a=n.attributes.fan_speed_list)&&void 0!==a?a:[];for(let e=0;e<s.length;e++){const a=s[e];r.push({menu_id:"fan_speed",icon:a in yc._ICON_MAPPING?yc._ICON_MAPPING[a]:"mdi:fan-alert",label:lr("tile.fan_speed.value."+a.toLowerCase(),i,a),conditions:[{entity:t,attribute:"fan_speed",value:a}],tooltip:lr("icon.vacuum_set_fan_speed",i),tap_action:{action:"call-service",service:"vacuum.set_fan_speed",service_data:{entity_id:t,fan_speed:a}}})}return 0!=s.length&&r.push({icon:"mdi:fan-alert",conditions:s.map((e=>({entity:t,attribute:"fan_speed",value_not:e}))),tooltip:lr("icon.vacuum_set_fan_speed",i),tap_action:{action:"call-service",service:"vacuum.set_fan_speed",service_data:{entity_id:t,fan_speed:s[0]}}}),r}static async getIconsFromEntities(e,t,i){const a=await bl(e,t);return Fs.getIconsTemplates(i).flatMap((e=>yc.createIcon(e,a)))}static createIcon(e,t){return"single"==e.type?yc.createSingleIcon(e,t):"menu"==e.type?yc.createMenuIcon(e,t):[e]}static createSingleIcon(e,t){var i,a,n;const o=t.filter((t=>t.unique_id.match(e.unique_id_regex)));if(1!==o.length)return[];const r=o[0],s=Object.assign(Object.assign({},e),{icon:null!==(a=null!==(i=e.icon)&&void 0!==i?i:r.icon)&&void 0!==a?a:r.original_icon,variables:Object.assign(Object.assign({},null!==(n=e.variables)&&void 0!==n?n:{}),{entity:r.entity_id})});return s.hasOwnProperty("unique_id_regex")&&delete s.unique_id_regex,[s]}static createMenuIcon(e,t){var i,a;const n=t.filter((t=>t.unique_id.match(e.unique_id_regex)));if(1!==n.length)return[];const o=n[0],r=Object.assign(Object.assign({},e),{entity:o.entity_id,icon:null!==(a=null!==(i=e.icon)&&void 0!==i?i:o.icon)&&void 0!==a?a:o.original_icon});return r.hasOwnProperty("unique_id_regex")&&delete r.unique_id_regex,[r]}static isFeatureSupported(e,t){var i;return e&&e.attributes&&((null!==(i=e.attributes.supported_features)&&void 0!==i?i:0)&t)===t}}function kc(e,t){return void 0===e.order&&void 0===t.order?0:void 0===e.order?1:void 0===t.order?-1:e.order-t.order}function Ac(e,t){return Array.isArray(t)?[e.a*t[0]+e.c*t[1]+e.e,e.b*t[0]+e.d*t[1]+e.f]:{x:e.a*t.x+e.c*t.y+e.e,y:e.b*t.x+e.d*t.y+e.f}}function xc(...e){const t=(e,t)=>({a:e.a*t.a+e.c*t.b,c:e.a*t.c+e.c*t.d,e:e.a*t.e+e.c*t.f+e.e,b:e.b*t.a+e.d*t.b,d:e.b*t.c+e.d*t.d,f:e.b*t.e+e.d*t.f+e.f});switch((e=Array.isArray(e[0])?e[0]:e).length){case 0:throw new Error("no matrices provided");case 1:return e[0];case 2:return t(e[0],e[1]);default:{const[i,a,...n]=e;return xc(t(i,a),...n)}}}function Ec(e,t){const i=null!=e[0].x?e[0].x:e[0][0],a=null!=e[0].y?e[0].y:e[0][1],n=null!=t[0].x?t[0].x:t[0][0],o=null!=t[0].y?t[0].y:t[0][1],r=null!=e[1].x?e[1].x:e[1][0],s=null!=e[1].y?e[1].y:e[1][1],l=null!=t[1].x?t[1].x:t[1][0],c=null!=t[1].y?t[1].y:t[1][1],d=null!=e[2].x?e[2].x:e[2][0],u=null!=e[2].y?e[2].y:e[2][1],m=null!=t[2].x?t[2].x:t[2][0],p=null!=t[2].y?t[2].y:t[2][1],_={a:n-m,b:o-p,c:l-m,d:c-p,e:m,f:p},v=function(e){const{a:t,b:i,c:a,d:n,e:o,f:r}=e,s=t*n-i*a;return{a:n/s,b:i/-s,c:a/-s,d:t/s,e:(n*o-a*r)/-s,f:(i*o-t*r)/s}}({a:i-d,b:a-u,c:r-d,d:s-u,e:d,f:u});return function(e,t=1e10){return{a:Math.round(e.a*t)/t,b:Math.round(e.b*t)/t,c:Math.round(e.c*t)/t,d:Math.round(e.d*t)/t,e:Math.round(e.e*t)/t,f:Math.round(e.f*t)/t}}(xc([_,v]))}function wc(e,t,i,a){var n=Error.call(this,e);return Object.setPrototypeOf&&Object.setPrototypeOf(n,wc.prototype),n.expected=t,n.found=i,n.location=a,n.name="SyntaxError",n}function zc(e,t,i){return i=i||" ",e.length>t?e:(t-=e.length,e+(i+=i.repeat(t)).slice(0,t))}yc._ICON_MAPPING={Silent:"mdi:fan-remove",Basic:"mdi:fan-speed-1",Standard:"mdi:fan-speed-1",Strong:"mdi:fan-speed-2",Medium:"mdi:fan-speed-2","Full Speed":"mdi:fan-speed-3",Turbo:"mdi:fan-speed-3",Auto:"mdi:fan-auto",Gentle:"mdi:waves"},function(e,t){function i(){this.constructor=e}i.prototype=t.prototype,e.prototype=new i}(wc,Error),wc.prototype.format=function(e){var t="Error: "+this.message;if(this.location){var i,a=null;for(i=0;i<e.length;i++)if(e[i].source===this.location.source){a=e[i].text.split(/\r\n|\n|\r/g);break}var n=this.location.start,o=this.location.source&&"function"==typeof this.location.source.offset?this.location.source.offset(n):n,r=this.location.source+":"+o.line+":"+o.column;if(a){var s=this.location.end,l=zc("",o.line.toString().length," "),c=a[n.line-1],d=(n.line===s.line?s.column:c.length+1)-n.column||1;t+="\n --\x3e "+r+"\n"+l+" |\n"+o.line+" | "+c+"\n"+l+" | "+zc("",n.column-1," ")+zc("",d,"^")}else t+="\n at "+r}return t},wc.buildMessage=function(e,t){var i={literal:function(e){return'"'+n(e.text)+'"'},class:function(e){var t=e.parts.map((function(e){return Array.isArray(e)?o(e[0])+"-"+o(e[1]):o(e)}));return"["+(e.inverted?"^":"")+t.join("")+"]"},any:function(){return"any character"},end:function(){return"end of input"},other:function(e){return e.description}};function a(e){return e.charCodeAt(0).toString(16).toUpperCase()}function n(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(e){return"\\x0"+a(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+a(e)}))}function o(e){return e.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(e){return"\\x0"+a(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+a(e)}))}function r(e){return i[e.type](e)}return"Expected "+function(e){var t,i,a=e.map(r);if(a.sort(),a.length>0){for(t=1,i=1;t<a.length;t++)a[t-1]!==a[t]&&(a[i]=a[t],i++);a.length=i}switch(a.length){case 1:return a[0];case 2:return a[0]+" or "+a[1];default:return a.slice(0,-1).join(", ")+", or "+a[a.length-1]}}(e)+" but "+function(e){return e?'"'+n(e)+'"':"end of input"}(t)+" found."};var Pc,Tc,Sc,Mc=(Pc=function(e,t){function i(e){var t;return"object"==typeof e?"object"==typeof(t=e[0])?[e.length,t.length]:[e.length]:[]}function a(e,t,i,n){if(i===t.length-1)return n(e);var o,r=t[i],s=Array(r);for(o=r-1;o>=0;o--)s[o]=a(e[o],t,i+1,n);return s}function n(e){var t,i=e.length,a=Array(i);for(t=i-1;-1!==t;--t)a[t]=e[t];return a}function o(e){if("object"!=typeof e)return e;var t=n;return a(e,i(e),0,t)}function r(e,t,i){void 0===i&&(i=0);var a,n=e[i],o=Array(n);if(i===e.length-1){for(a=n-2;a>=0;a-=2)o[a+1]=t,o[a]=t;return-1===a&&(o[0]=t),o}for(a=n-1;a>=0;a--)o[a]=r(e,t,i+1);return o}function s(e){return function(e){var t,i,a,n,o=e.length,r=Array(o);for(t=o-1;t>=0;t--){for(n=Array(o),i=t+2,a=o-1;a>=i;a-=2)n[a]=0,n[a-1]=0;for(a>t&&(n[a]=0),n[t]=e[t],a=t-1;a>=1;a-=2)n[a]=0,n[a-1]=0;0===a&&(n[0]=0),r[t]=n}return r}(r([e],1))}function l(e,t){var i,a,n,o,r,s,l,c,d,u,m;for(o=e.length,r=t.length,s=t[0].length,l=Array(o),i=o-1;i>=0;i--){for(c=Array(s),d=e[i],n=s-1;n>=0;n--){for(u=d[r-1]*t[r-1][n],a=r-2;a>=1;a-=2)m=a-1,u+=d[a]*t[a][n]+d[m]*t[m][n];0===a&&(u+=d[0]*t[0][n]),c[n]=u}l[i]=c}return l}function c(e,t){var i,a,n=e.length,o=e[n-1]*t[n-1];for(i=n-2;i>=1;i-=2)a=i-1,o+=e[i]*t[i]+e[a]*t[a];return 0===i&&(o+=e[0]*t[0]),o}function d(e){var t,i,a,n,o,r=e.length,s=e[0].length,l=Array(s);for(i=0;i<s;i++)l[i]=Array(r);for(t=r-1;t>=1;t-=2){for(n=e[t],a=e[t-1],i=s-1;i>=1;--i)(o=l[i])[t]=n[i],o[t-1]=a[i],(o=l[--i])[t]=n[i],o[t-1]=a[i];0===i&&((o=l[0])[t]=n[0],o[t-1]=a[0])}if(0===t){for(a=e[0],i=s-1;i>=1;--i)l[i][0]=a[i],l[--i][0]=a[i];0===i&&(l[0][0]=a[0])}return l}function u(e,t,a){if(a){var n=t;t=e,e=n}var r,u=[[e[0],e[1],1,0,0,0,-1*t[0]*e[0],-1*t[0]*e[1]],[0,0,0,e[0],e[1],1,-1*t[1]*e[0],-1*t[1]*e[1]],[e[2],e[3],1,0,0,0,-1*t[2]*e[2],-1*t[2]*e[3]],[0,0,0,e[2],e[3],1,-1*t[3]*e[2],-1*t[3]*e[3]],[e[4],e[5],1,0,0,0,-1*t[4]*e[4],-1*t[4]*e[5]],[0,0,0,e[4],e[5],1,-1*t[5]*e[4],-1*t[5]*e[5]],[e[6],e[7],1,0,0,0,-1*t[6]*e[6],-1*t[6]*e[7]],[0,0,0,e[6],e[7],1,-1*t[7]*e[6],-1*t[7]*e[7]]],m=t;try{r=function(e){var t,a,n,r,l,c,d,u,m=i(e),p=Math.abs,_=m[0],v=m[1],g=o(e),h=s(_);for(c=0;c<v;++c){var f=-1,b=-1;for(l=c;l!==_;++l)(d=p(g[l][c]))>b&&(f=l,b=d);for(a=g[f],g[f]=g[c],g[c]=a,r=h[f],h[f]=h[c],h[c]=r,u=a[c],d=c;d!==v;++d)a[d]/=u;for(d=v-1;-1!==d;--d)r[d]/=u;for(l=_-1;-1!==l;--l)if(l!==c){for(t=g[l],n=h[l],u=t[c],d=c+1;d!==v;++d)t[d]-=a[d]*u;for(d=v-1;d>0;--d)n[d]-=r[d]*u,n[--d]-=r[d]*u;0===d&&(n[0]-=r[0]*u)}}return h}(l(d(u),u))}catch(e){return[1,0,0,0,1,0,0,0]}for(var p,_=function(e,t){var i,a=e.length,n=Array(a);for(i=a-1;i>=0;i--)n[i]=c(e[i],t);return n}(l(r,d(u)),m),v=0;v<_.length;v++)_[v]=(p=_[v],Math.round(1e10*p)/1e10);return _[8]=1,_}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var i=u(e,t,!1);return function(e,t){return function(e,t,i){var a=[];return a[0]=(e[0]*t+e[1]*i+e[2])/(e[6]*t+e[7]*i+1),a[1]=(e[3]*t+e[4]*i+e[5])/(e[6]*t+e[7]*i+1),a}(i,e,t)}}},Pc(Tc={exports:{}},Tc.exports),Tc.exports),Nc=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(Mc);!function(e){e[e.AFFINE=0]="AFFINE",e[e.PERSPECTIVE=1]="PERSPECTIVE"}(Sc||(Sc={}));class Oc{constructor(e){const t=null==e?void 0:e.map((e=>e.map)),i=null==e?void 0:e.map((e=>e.vacuum));if(t&&i)if(3===t.length)this.transformMode=Sc.AFFINE,this.mapToVacuumMatrix=Ec(t,i),this.vacuumToMapMatrix=Ec(i,t),this.calibrated=!(!this.mapToVacuumMatrix||!this.vacuumToMapMatrix);else{this.transformMode=Sc.PERSPECTIVE;const e=t.flatMap((e=>[e.x,e.y])),a=i.flatMap((e=>[e.x,e.y]));this.mapToVacuumTransformer=Nc(e,a),this.vacuumToMapTransformer=Nc(a,e),this.calibrated=!0}else this.calibrated=!1}mapToVacuum(e,t){if(this.transformMode===Sc.AFFINE&&this.mapToVacuumMatrix)return Ac(this.mapToVacuumMatrix,[e,t]);if(this.transformMode===Sc.PERSPECTIVE&&this.mapToVacuumTransformer)return this.mapToVacuumTransformer(e,t);throw Error("Missing calibration")}vacuumToMap(e,t){if(this.transformMode===Sc.AFFINE&&this.vacuumToMapMatrix)return Ac(this.vacuumToMapMatrix,[e,t]);if(this.transformMode===Sc.PERSPECTIVE&&this.vacuumToMapTransformer)return this.vacuumToMapTransformer(e,t);throw Error("Missing calibration")}}Object.entries||(Object.entries=function(e){const t=Object.keys(e);let i=t.length;const a=new Array(i);for(;i--;)a[i]=[t[i],e[t[i]]];return a})
/**
 * Object.entriesFrom() polyfill
 * @author Chris Ferdinandi
 * @license MIT
 * https://vanillajstoolkit.com/polyfills/objectfromentries/
 */,Object.fromEntries||(Object.fromEntries=function(e){if(!e||!e[Symbol.iterator])throw new Error("Object.fromEntries() requires a single iterable argument");const t={};for(const[i,a]of e)t[i]=a;return t});class Cc extends re{createRenderRoot(){return this}}let Rc=class extends Cc{constructor(){super(...arguments),this.additionalClasses=[]}render(){const e=this.values[this.currentIndex];return D`
            <ha-button-menu class="dropdown-menu ${this.additionalClasses.join(" ")}" fixed="true" activatable
                            @closed="${e=>e.stopPropagation()}"
                            @click="${()=>this.updateStyles(this.values.length)}">
                <div class="dropdown-menu-button clickable" slot="trigger" alt="bottom align">
                    <paper-button class="dropdown-menu-button-button">
                        <ha-icon icon="${e.icon}" class="dropdown-icon"></ha-icon>
                    </paper-button>
                    ${vl(this.renderNameCollapsed,(()=>D`
                            <div class="dropdown-menu-button-text">${e.name}</div>`))}
                </div>
                ${this.values.map(((e,t)=>D`
                        <mwc-list-item class="dropdown-list-item"
                                       ?activated="${this.currentIndex===t}"
                                       @click="${()=>this.setValue(t)}">
                            <div
                                class="dropdown-menu-entry clickable ${this.currentIndex===t?"selected":""}">
                                <div
                                    class="dropdown-menu-entry-button-wrapper ${0===t?"first":""} ${t===this.values.length-1?"last":""} ${this.currentIndex===t?"selected":""}">
                                    <paper-button
                                        class="dropdown-menu-entry-button ${this.currentIndex===t?"selected":""}">
                                        <ha-icon icon="${e.icon}"></ha-icon>
                                    </paper-button>
                                </div>
                                <div class="dropdown-menu-entry-text">${e.name}</div>
                            </div>
                        </mwc-list-item>`))}
            </ha-button-menu>
        `}updateStyles(e){var t,i,a;const n=null===(i=null===(t=this.menu)||void 0===t?void 0:t.shadowRoot)||void 0===i?void 0:i.querySelector("div");if(this.menu&&n){const t=50,i=(e-1)*t+32;window.innerHeight-n.getBoundingClientRect().bottom>=i?(n.style.marginTop="0px",this.menu.style.marginTop="0px",n.style.marginBottom=`-${t}px`,this.menu.style.marginBottom=`${t}px`):(n.style.marginTop=`-${t}px`,this.menu.style.marginTop=`${t}px`,n.style.marginBottom="0px",this.menu.style.marginBottom="0px");const o=null===(a=this.menu.shadowRoot)||void 0===a?void 0:a.querySelector("mwc-menu");o&&(o.style.zIndex="1",o.style.position="fixed"),this.menu.querySelectorAll("mwc-list-item").forEach((e=>{e.shadowRoot.querySelector("span").style.flexGrow="1"}))}}static get styles(){return r`
          .dropdown-menu {
            --mdc-menu-item-height: 50px;
            --mdc-theme-primary: transparent;
            --mdc-list-vertical-padding: 0px;
            --mdc-list-side-padding: 0px;
            --mdc-shape-medium: var(--map-card-internal-big-radius);
            --mdc-ripple-color: transparent;
          }

          .dropdown-menu-button {
            display: inline-flex;
          }

          .dropdown-list-item:host:host {
            flex-grow: 1;
          }

          .dropdown-menu-button-button {
            width: 50px;
            height: 50px;
            border-radius: var(--map-card-internal-big-radius);
            display: flex;
            justify-content: center;
            background-color: var(--map-card-internal-primary-color);
            align-items: center;
          }

          .dropdown-menu-button-text {
            display: inline-flex;
            line-height: 50px;
            background-color: transparent;
            padding-left: 10px;
            padding-right: 15px;
          }

          .dropdown-menu-entry {
            display: inline-flex;
            width: 100%;
          }

          .dropdown-menu-entry.selected {
            border-radius: var(--map-card-internal-big-radius);
            background-color: var(--map-card-internal-primary-color);
            color: var(--map-card-internal-primary-text-color);
          }

          .dropdown-menu-entry-button-wrapper.first:not(.selected) {
            border-top-left-radius: var(--map-card-internal-big-radius);
            border-top-right-radius: var(--map-card-internal-big-radius);
          }

          .dropdown-menu-entry-button-wrapper.last:not(.selected) {
            border-bottom-left-radius: var(--map-card-internal-big-radius);
            border-bottom-right-radius: var(--map-card-internal-big-radius);
          }

          .dropdown-menu-entry-button.selected {
            border-start-start-radius: var(--map-card-internal-big-radius);
            border-end-start-radius: var(--map-card-internal-big-radius);
            background-color: var(--map-card-internal-primary-color);
            color: var(--map-card-internal-primary-text-color);
          }

          .dropdown-menu-entry-button-wrapper {
            background-color: var(--map-card-internal-secondary-color);
            color: var(--map-card-internal-secondary-text-color);
            overflow: hidden;
          }

          .dropdown-menu-entry-button {
            width: 50px;
            height: 50px;
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: var(--map-card-internal-secondary-color);
            color: var(--map-card-internal-secondary-text-color);
          }

          .dropdown-menu-entry-text {
            display: inline-flex;
            line-height: 50px;
            background-color: transparent;
            padding-left: 10px;
            padding-right: 15px;
          }

          .dropdown-menu-listbox {
            padding: 0;
            background-color: transparent;
          }
        `}};e([ue({attribute:!1})],Rc.prototype,"values",void 0),e([ue({attribute:!1})],Rc.prototype,"currentIndex",void 0),e([ue({attribute:!1})],Rc.prototype,"setValue",void 0),e([ue({attribute:!1})],Rc.prototype,"renderNameCollapsed",void 0),e([ue({attribute:!1})],Rc.prototype,"additionalClasses",void 0),e([_e(".dropdown-menu")],Rc.prototype,"menu",void 0),Rc=e([le("xvmc-dropdown-menu")],Rc);let Lc=class extends Cc{render(){var e,t,i;if(!(this.config&&this.hass&&this.onAction&&this.internalVariables))return;this.className="tile-wrapper clickable ripple "+(this.config.tile_id?`tile-${this.config.tile_id}-wrapper`:"");const a=this.config.entity?this.hass.states[this.config.entity]:void 0,n=this.getTileLabel(a),o=this.getTileValue(a),r=this.getIcon(a),s=a?function(e){return fe(e.entity_id)}(a):void 0;return D`
            <div
                .title="${this.isInEditor?`tile_id: ${this.config.tile_id}`:null!==(e=this.config.tooltip)&&void 0!==e?e:""}"
                @action="${this.onAction(this.config)}"
                .actionHandler="${Cl({hasHold:we(null===(t=this.config)||void 0===t?void 0:t.hold_action),hasDoubleClick:we(null===(i=this.config)||void 0===i?void 0:i.double_tap_action)})}">
                <div class="tile-title">${n}</div>
                <div class="tile-value-wrapper">
                    ${vl(""!==r,(()=>D`
                            <div class="tile-icon">
                                <ha-state-icon
                                    .icon=${r}
                                    .state=${a}
                                    data-domain=${(e=>null!=e?e:U)(s)}
                                    data-state=${null==a?void 0:a.state}>
                                </ha-state-icon>
                            </div>`))}
                    <div class="tile-value">${o}</div>
                </div>
            </div>
        `}getTileLabel(e){var t,i,a;return void 0!==this.config.label?this.config.label:void 0!==e?void 0!==this.config.attribute?Yo(this.hass.localize,e,this.hass.entities,this.config.attribute):null!==(i=null===(t=e.attributes)||void 0===t?void 0:t.friendly_name)&&void 0!==i?i:this.config.entity:null!==(a=this.config.tile_id)&&void 0!==a?a:"tile"}getTileValue(e){var t,i;let a="";const n=this.getUnit(),o=void 0!==this.config.multiplier||void 0!==this.config.precision;if(this.config.entity&&e)if(o)a=this.config.attribute?e.attributes[this.config.attribute]:e.state;else{a=dr(this.hass,this.config,e);const t=e.attributes.unit_of_measurement;""!==n&&t&&a.endsWith(t)&&(a=a.substring(0,a.length-t.length).trimEnd())}else this.config.internal_variable&&this.config.internal_variable in this.internalVariables&&(a=this.internalVariables[this.config.internal_variable]);!o||null===a||"number"!=typeof a&&isNaN(+a)||(a=parseFloat(a.toString())*(null!==(t=this.config.multiplier)&&void 0!==t?t:1),void 0!==this.config.precision&&(a=a.toFixed(this.config.precision)));const r=null!==(i=this.config.translations)&&void 0!==i?i:{};return`${a}`.toLowerCase()in r&&(a=r[`${a}`.toLowerCase()]),`${a}${n}`}getIcon(e){var t;if(this.config.icon_source){const e=this.config.icon_source.split(".attributes."),t=this.hass.states[e[0]];let i=t.state;return 2===e.length&&(i=t.attributes[e[1]]),i}return void 0===this.config.icon&&e?null!==(t=e.attributes.icon)&&void 0!==t?t:null:this.config.icon}getUnit(){return this.config.unit?"%"===this.config.unit?ir(this.hass.locale)+"%":` ${this.config.unit}`:""}static get styles(){return r`
          .tile-wrapper {
            min-width: fit-content;
            width: 80px;
            padding: 10px;
            border-radius: var(--map-card-internal-small-radius);
            background-color: var(--map-card-internal-tertiary-color);
            flex-grow: 1;
            overflow: hidden;
            color: var(--map-card-internal-tertiary-text-color);
          }

          .tile-title {
            font-size: smaller;
          }

          .tile-value-wrapper {
            display: inline-flex;
            align-items: flex-end;
            padding-top: 5px;
          }

          .tile-icon {
            padding-right: 5px;
          }

          .tile-value {
          }
        `}};e([ue({attribute:!1})],Lc.prototype,"config",void 0),e([ue({attribute:!1})],Lc.prototype,"hass",void 0),e([ue({attribute:!1})],Lc.prototype,"isInEditor",void 0),e([ue({attribute:!1})],Lc.prototype,"onAction",void 0),e([ue({attribute:!1})],Lc.prototype,"internalVariables",void 0),Lc=e([le("xvmc-tile")],Lc);let $c=class extends Cc{render(){var e,t,i;if(0!==(null!==(t=null===(e=this.tiles)||void 0===e?void 0:e.length)&&void 0!==t?t:0))return D`
                <div class="tiles-wrapper">
                    ${null===(i=this.tiles)||void 0===i?void 0:i.map((e=>D`
                        <xvmc-tile
                            .hass=${this.hass}
                            .config=${e}
                            .isInEditor=${this.isInEditor}
                            .onAction=${this.onAction}
                            .internalVariables=${this.internalVariables}
                        ></xvmc-tile>
                    `))}
        `}static get styles(){return r`
          .tiles-wrapper {
            display: flex;
            flex-wrap: wrap;
            justify-content: space-evenly;
            align-items: stretch;
            gap: 5px;
          }

          ${Lc.styles}
        `}};e([ue({attribute:!1})],$c.prototype,"tiles",void 0),e([ue({attribute:!1})],$c.prototype,"hass",void 0),e([ue({attribute:!1})],$c.prototype,"isInEditor",void 0),e([ue({attribute:!1})],$c.prototype,"onAction",void 0),e([ue({attribute:!1})],$c.prototype,"internalVariables",void 0),$c=e([le("xvmc-tiles-wrapper")],$c);let jc=class extends Cc{render(){var e;const t=this.config.map((e=>{var t;return{icon:e.icon,name:null!==(t=e.label)&&void 0!==t?t:""}})),i=this.config.findIndex((e=>e.isSelected)),a=`icon-menu-${this.config[0].menu_id}`;return D`
            <xvmc-dropdown-menu
                .title="${this.isInEditor?`menu_id: ${this.config[0].menu_id}`:null!==(e=this.config[i].tooltip)&&void 0!==e?e:""}"
                .values=${t}
                .currentIndex=${i}
                .setValue=${e=>this.onAction(this.config[e])()}
                .renderNameCollapsed=${!1}
                .additionalClasses=${[a,"dropdown-icon"]}>
            </xvmc-dropdown-menu>
        `}static get styles(){return r`
            .dropdown-icon * .dropdown-menu-button-button {
              background-color: transparent;
            }
        `}};e([ue({attribute:!1})],jc.prototype,"config",void 0),e([ue({attribute:!1})],jc.prototype,"isInEditor",void 0),e([ue({attribute:!1})],jc.prototype,"onAction",void 0),jc=e([le("xvmc-dropdown-icon")],jc);let Ic=class extends Cc{render(){var e,t,i;return D`
            <paper-button
                class="single-icon clickable ripple"
                .title=${this.isInEditor?`tile_id: ${this.config.icon_id}`:null!==(e=this.config.tooltip)&&void 0!==e?e:""}
                @action=${this.onAction(this.config)}
                .actionHandler=${Cl({hasHold:we(null===(t=this.config)||void 0===t?void 0:t.hold_action),hasDoubleClick:we(null===(i=this.config)||void 0===i?void 0:i.double_tap_action)})}>
                <ha-icon icon="${this.config.icon}"></ha-icon>
            </paper-button>
        `}static get styles(){return r`
          .single-icon {
            float: left;
            width: 50px;
            height: 50px;
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: transparent;
            border-radius: var(--map-card-internal-big-radius);
          }
        `}};e([ue({attribute:!1})],Ic.prototype,"config",void 0),e([ue({attribute:!1})],Ic.prototype,"isInEditor",void 0),e([ue({attribute:!1})],Ic.prototype,"onAction",void 0),Ic=e([le("xvmc-single-icon")],Ic);let Dc=class extends Cc{render(){return Array.isArray(this.config)?D`
                <xvmc-dropdown-icon
                    .config=${this.config}
                    .isInEditor=${this.isInEditor}
                    .onAction=${this.onAction}>
                </xvmc-dropdown-icon>
        `:D`
            <xvmc-single-icon
                .config=${this.config}
                .isInEditor=${this.isInEditor}
                .onAction=${this.onAction}>
            </xvmc-single-icon>
        `}static get styles(){return r`
          ${Ic.styles}
          ${jc.styles}
        `}};var Fc;e([ue({attribute:!1})],Dc.prototype,"config",void 0),e([ue({attribute:!1})],Dc.prototype,"isInEditor",void 0),e([ue({attribute:!1})],Dc.prototype,"onAction",void 0),Dc=e([le("xvmc-icon")],Dc);let Vc=Fc=class extends Cc{render(){var e,t,i;if(0!==(null!==(t=null===(e=this.icons)||void 0===e?void 0:e.length)&&void 0!==t?t:0))return D`
            <div class="icons-wrapper">
                <div class="icons-list">
                    ${null===(i=this.icons)||void 0===i?void 0:i.map((e=>D`
                                            <xvmc-icon
                                                .config=${e}
                                                .isInEditor=${this.isInEditor}
                                                .onAction=${this.onAction}
                                            ></xvmc-icon>
                                        `))}
                </div>
            </div>
        `}static get styles(){return r`
          .icons-wrapper {
            display: flex;
            justify-content: center;
            align-items: center;
          }

          .icons-list {
            float: right;
            border-radius: var(--map-card-internal-big-radius);
            overflow: hidden;
            background-color: var(--map-card-internal-secondary-color);
            color: var(--map-card-internal-secondary-text-color);
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
          }
          
          ${Dc.styles}
        `}static preprocessIcons(e,t,i){if(void 0===e)return[];const a=[],n=new Map;Fc.expandMenus(e,t,i).forEach((e=>{const o=_l(e,t,i);if(void 0===e.menu_id)o&&a.push(e);else{const t=Object.assign(Object.assign({},e),{isSelected:o});n.has(e.menu_id)&&Array.isArray(a[n.get(e.menu_id)])?a[n.get(e.menu_id)].push(t):(n.set(e.menu_id,a.length),a.push([t]))}}));for(let e=a.length-1;e>=0;e--)Array.isArray(a[e])&&!a[e].some((e=>e.isSelected))&&a.splice(e,1);return a}static expandMenus(e,t,i){return e.flatMap((e=>"menu"===e.type?Fc.expandMenu(e,t,i):[e]))}static expandMenu(e,t,i){var a;const n=i.states[e.entity];return(null!==(a=n.attributes[e.available_values_attribute])&&void 0!==a?a:[]).map((t=>{var a,o,r,s,l,c;return Object.assign(Object.assign({},e),{label:null!==(o=null===(a=e.value_translation_keys)||void 0===a?void 0:a[t])&&void 0!==o?o:Fc.getLabel(i,n,t,e.current_value_attribute),icon:null!==(s=null===(r=e.icon_mapping)||void 0===r?void 0:r[t])&&void 0!==s?s:e.icon,icon_id:`${e.icon_id}_${t.replace(" ","_").toLowerCase()}`,conditions:[...null!==(l=e.conditions)&&void 0!==l?l:[],{entity:e.entity,attribute:e.current_value_attribute,value:`${t}`}],variables:Object.assign(Object.assign({},null!==(c=null==e?void 0:e.variables)&&void 0!==c?c:{}),{value:t})})}))}static getLabel(e,t,i,a){return a?function(e,t,i,a){return Zo(e.localize,t,e.locale,e.entities,i,a)}(e,t,a,i):function(e,t,i){return ar(e.localize,t,e.locale,e.entities,i)}(e,t,i)}};e([ue({attribute:!1})],Vc.prototype,"icons",void 0),e([ue({attribute:!1})],Vc.prototype,"isInEditor",void 0),e([ue({attribute:!1})],Vc.prototype,"onAction",void 0),Vc=Fc=e([le("xvmc-icons-wrapper")],Vc);let Uc=class extends Cc{render(){var e;if(this.availablePresets.length<2)return;const t="rtl"===(null===(e=getComputedStyle(this))||void 0===e?void 0:e.getPropertyValue("direction"));return D`
            <div class="preset-selector-wrapper">
                <div class="preset-selector-icon-wrapper" @click="${this.openPreviousPreset}">
                    <ha-icon
                        icon="mdi:chevron-${t?"right":"left"}"
                        class="preset-selector-icon ${-1===this.previousPresetIndex?"disabled":""}">
                    </ha-icon>
                </div>
                <div
                    class="preset-label-wrapper ${this.presetActivable?"clickable":""}"
                    @click="${()=>this.executePresetsActivation()}">
                    <div class="preset-label">${this.presetName}</div>
                    <div class="preset-indicator">
                        ${new Array(this.availablePresets.length).fill(0).map(((e,t)=>t===this.availablePresetIndex?"●":"○"))}
                    </div>
                </div>
                <div class="preset-selector-icon-wrapper" @click="${this.openNextPreset}">
                    <ha-icon
                        icon="mdi:chevron-${t?"left":"right"}"
                        class="preset-selector-icon ${-1===this.nextPresetIndex?"disabled":""}">
                    </ha-icon>
                </div>
            </div>
        `}static get styles(){return r`
          .preset-selector-wrapper {
            width: 100%;
            display: inline-flex;
            align-content: center;
            justify-content: space-between;
            align-items: center;
          }

          .preset-selector-icon-wrapper {
            height: 44px;
            width: 44px;
            display: grid;
            place-items: center;
          }

          .preset-selector-icon {
            cursor: pointer;
          }

          .preset-selector-icon.disabled {
            color: var(--map-card-internal-disabled-text-color);
            cursor: default;
          }

          .preset-label-wrapper {
            display: flex;
            flex-direction: column;
            align-items: center;
          }

          .preset-indicator {
            line-height: 50%;
          }
        `}};var qc;e([ue({attribute:!1})],Uc.prototype,"availablePresets",void 0),e([ue({attribute:!1})],Uc.prototype,"availablePresetIndex",void 0),e([ue({attribute:!1})],Uc.prototype,"openPreviousPreset",void 0),e([ue({attribute:!1})],Uc.prototype,"previousPresetIndex",void 0),e([ue({attribute:!1})],Uc.prototype,"presetActivable",void 0),e([ue({attribute:!1})],Uc.prototype,"presetName",void 0),e([ue({attribute:!1})],Uc.prototype,"executePresetsActivation",void 0),e([ue({attribute:!1})],Uc.prototype,"openNextPreset",void 0),e([ue({attribute:!1})],Uc.prototype,"nextPresetIndex",void 0),Uc=e([le("xvmc-preset-selector")],Uc);const Kc="   XIAOMI-VACUUM-MAP-CARD",Hc=`   ${lr("common.version")} ${Vs}`,Gc=Math.max(25,Hc.length)+3,Bc=(e,t)=>e+" ".repeat(t-e.length);console.info(`%c${Bc(Kc,Gc)}\n%c${Bc(Hc,Gc)}`,"color: orange; font-weight: bold; background: black","color: white; font-weight: bold; background: dimgray");const Xc=window;Xc.customCards=Xc.customCards||[],Xc.customCards.push({type:Us,name:"Vacuum Map Card",description:lr("common.description")});let Zc=qc=class extends re{constructor(){super(),this.oldConfig=!1,this.repeats=1,this.selectedMode=0,this.mapLocked=!1,this.configErrors=[],this.connected=!1,this.internalVariables={},this.watchedEntities=[],this.selectedManualRectangles=[],this.selectedManualPath=new rc([],this._getContext()),this.selectedPredefinedRectangles=[],this.selectedRooms=[],this.selectedPredefinedPoints=[],this.selectablePredefinedRectangles=[],this.selectableRooms=[],this.selectablePredefinedPoints=[],this.entitiesToManuallyUpdate=[],this.modes=[],this.isInEditor=!1,this._handleAutogeneratedConfigGet=this._handleAutogeneratedConfigGet.bind(this),this._handleRoomsConfigGet=this._handleRoomsConfigGet.bind(this),this._handleServiceCallGet=this._handleServiceCallGet.bind(this),this._handleLovelaceDomEvent=this._handleLovelaceDomEvent.bind(this)}get hass(){return this._hass}set hass(e){const t=!this._hass&&e;this._hass=e,this.lastHassUpdate=new Date,t&&this._firstHass()}static async getConfigElement(){return document.createElement(qs)}static getStubConfig(e){const t=Object.keys(e.states),i=t.filter((e=>["camera","image"].includes(e.substring(0,e.indexOf("."))))).filter((t=>null==e?void 0:e.states[t].attributes.calibration_points)),a=t.filter((e=>"vacuum"===e.substring(0,e.indexOf("."))));if(0!==i.length&&0!==a.length)return{type:"custom:"+Us,map_source:{camera:i[0]},calibration_source:{camera:!0},entity:a[0],vacuum_platform:Fs.XIAOMI_MIIO_PLATFORM}}setConfig(e){if(!e)throw new Error(this._localize("common.invalid_configuration"));this.config=e,function(e){return e.map_image||e.map_camera}(e)?this.oldConfig=!0:(this.configErrors=function(e){var t,i,a;const n=[],o=(null!==(i=null===(t=e.additional_presets)||void 0===t?void 0:t.length)&&void 0!==i?i:0)>0;return _c(e,o,e.language).forEach((e=>n.push(e))),null===(a=e.additional_presets)||void 0===a||a.flatMap((t=>_c(t,o,e.language))).forEach((e=>n.push(e))),n.map((t=>lr(t,e.language)))}(this.config),this.configErrors.length>0||(this.watchedEntities=pl(this.config),this._setPresetIndex(0,!1,!0),this.requestUpdate("config")))}getCardSize(){return 12}connectedCallback(){super.connectedCallback(),this._isInEditor()&&(window.addEventListener(Bs,this._handleAutogeneratedConfigGet),window.addEventListener(Zs,this._handleRoomsConfigGet),window.addEventListener(Js,this._handleServiceCallGet),this.isInEditor=!0),document.addEventListener(Qs,this._handleLovelaceDomEvent),this.connected=!0,this._updateElements(),yl(100).then((()=>this.requestUpdate()))}disconnectedCallback(){super.disconnectedCallback(),this._isInEditor()&&(window.removeEventListener(Bs,this._handleAutogeneratedConfigGet),window.removeEventListener(Zs,this._handleRoomsConfigGet),window.removeEventListener(Js,this._handleServiceCallGet)),document.removeEventListener(Qs,this._handleLovelaceDomEvent),this.connected=!1}shouldUpdate(e){return!!this.config&&function(e,t,i,a){if(t.has("config")||i)return!0;const n=t.get("_hass");if(!n||e.some((e=>n.states[e]!==(null==a?void 0:a.states[e]))))return!0;const o=Array.from(t.keys());return o.length>1||1==o.length&&"_hass"!=o[0]}(this.watchedEntities,e,!1,this.hass)}render(){var e,t,i,a,n,o,r,s,l,c,d,u;if(this.oldConfig)return this._showOldConfig();if(this.configErrors.length>0)return this._showConfigErrors(this.configErrors);const m=function(e,t){const i=Object.keys(t.states);return e.filter((e=>!i.includes(e)))}(this.watchedEntities,this.hass);if(m.length>0)return this._showInvalidEntities(m);let p=this._getCurrentPreset();const _=this._getAllPresets();let v=this._getAllAvailablePresets(),g=v.indexOf(_[this.presetIndex]);-1===g&&(this._firstHass(),p=this._getCurrentPreset(),v=this._getAllAvailablePresets(),g=v.indexOf(_[this.presetIndex])),this._updateCalibration(p);const h=null===(e=p.tiles)||void 0===e?void 0:e.filter((e=>_l(e,this.internalVariables,this.hass))),f=Vc.preprocessIcons(p.icons,this.internalVariables,this.hass),b=this.modes,y=this._getMapSrc(p),k=!!this.coordinatesConverter&&this.coordinatesConverter.calibrated,A=k?this._createMapControls():[],x=D`
            <div
                id="map-zoomer-content"
                style="
                 margin-top: ${-1*(null!==(i=null===(t=p.map_source.crop)||void 0===t?void 0:t.top)&&void 0!==i?i:0)}px;
                 margin-bottom: ${-1*(null!==(n=null===(a=p.map_source.crop)||void 0===a?void 0:a.bottom)&&void 0!==n?n:0)}px;
                 margin-left: ${-1*(null!==(r=null===(o=p.map_source.crop)||void 0===o?void 0:o.left)&&void 0!==r?r:0)}px;
                 margin-right: ${-1*(null!==(l=null===(s=p.map_source.crop)||void 0===s?void 0:s.right)&&void 0!==l?l:0)}px;">
                <img
                    id="map-image"
                    alt="camera_image"
                    class="${this.mapScale*this.realScale>1?"zoomed":""}"
                    src="${y}"
                    @load="${()=>this._calculateBasicScale()}" />
                <div id="map-image-overlay">
                    <svg
                        xmlns="http://www.w3.org/2000/svg"
                        version="2.0"
                        id="svg-wrapper"
                        width="100%"
                        height="100%"
                        @mousedown="${e=>this._mouseDown(e)}"
                        @mousemove="${e=>this._mouseMove(e)}"
                        @mouseup="${e=>this._mouseUp(e)}">
                        ${k?this._drawSelection():null}
                    </svg>
                </div>
            </div>
        `;return D`
            <ha-card style="--map-scale: ${this.mapScale}; --real-scale: ${this.realScale};">
                ${vl((null!==(c=this.config.title)&&void 0!==c?c:"").length>0,(()=>D`<h1 class="card-header">${this.config.title}</h1>`))}
                <xvmc-preset-selector
                    .availablePresets=${v}
                    .availablePresetIndex=${g}
                    .openPreviousPreset=${()=>this._openPreviousPreset()}
                    .previousPresetIndex=${this._getPreviousPresetIndex()}
                    .presetActivable=${void 0!==p.activate}
                    .presetName=${p.preset_name}
                    .executePresetsActivation=${()=>this._executePresetsActivation()}
                    .openNextPreset=${()=>this._openNextPreset()}
                    .nextPresetIndex=${this._getNextPresetIndex()}>
                </xvmc-preset-selector>
                <div class="map-wrapper">
                    <pinch-zoom
                        min-scale="0.5"
                        id="map-zoomer"
                        @change="${this._calculateScale}"
                        two-finger-pan="${p.two_finger_pan}"
                        locked="${this.mapLocked}"
                        no-default-pan="${this.mapLocked||p.two_finger_pan}"
                        style="touch-action: none;">
                        ${x}
                    </pinch-zoom>
                    <div id="map-zoomer-overlay">
                        <div style="right: 0; top: 0; position: absolute;">
                            <ha-icon
                                icon="${this.mapLocked?"mdi:lock":"mdi:lock-open"}"
                                class="standalone-icon-on-map clickable ripple"
                                @click="${this._toggleLock}"></ha-icon>
                        </div>
                        <div class="map-zoom-icons" style="visibility: ${this.mapLocked?"hidden":"visible"}">
                            <ha-icon
                                icon="mdi:image-filter-center-focus"
                                class="icon-on-map clickable ripple"
                                @click="${this._restoreMap}"></ha-icon>
                            <div class="map-zoom-icons-main">
                                <ha-icon
                                    icon="mdi:magnify-minus"
                                    class="icon-on-map clickable ripple"
                                    @click="${this._zoomOut}"></ha-icon>
                                <ha-icon
                                    icon="mdi:magnify-plus"
                                    class="icon-on-map clickable ripple"
                                    @click="${this._zoomIn}"></ha-icon>
                            </div>
                        </div>
                    </div>
                </div>
                ${vl(!k,(()=>this._showInvalidCalibrationWarning()))}
                ${vl(b.length>1||A.length>0||0!==(null!==(d=null==f?void 0:f.length)&&void 0!==d?d:0)||0!==(null!==(u=null==h?void 0:h.length)&&void 0!==u?u:0),(()=>D`
                    <div class="controls-wrapper">
                        ${vl(k&&(b.length>1||A.length>0),(()=>D`
                                <div class="map-controls-wrapper">
                                    <div class="map-controls">
                                        ${vl(b.length>1,(()=>D`
                                            <xvmc-dropdown-menu
                                                .values=${b}
                                                .currentIndex=${this.selectedMode}
                                                .setValue=${e=>this._setCurrentMode(e)}
                                                .renderNameCollapsed=${!0}>
                                            </xvmc-dropdown-menu>
                                            `))}
                                        ${vl(A.length>0,(()=>D` <div class="map-actions-list">${A}</div> `))}
                                    </div>
                                </div>
                            `))}
                        <xvmc-icons-wrapper
                            .icons=${f}
                            .isInEditor=${this.isInEditor}
                            .onAction=${(e,t)=>gl(this,e,t)}>
                        </xvmc-icons-wrapper>
                        <xvmc-tiles-wrapper
                            .hass=${this.hass}
                            .tiles=${h}
                            .isInEditor=${this.isInEditor}
                            .onAction=${(e,t)=>gl(this,e,t)}
                            .internalVariables=${this.internalVariables}>
                        </xvmc-tiles-wrapper>
                    </div>`))}
                ${wl.render("map-card")}
            </ha-card>
        `}updated(e){const t=e.get("_hass"),i=t&&this.hass&&function(e,t,i){return e.filter((e=>t.states[e]!==i.states[e])).length>0}(this.entitiesToManuallyUpdate,t,this.hass);this._updateElements(i)}_getCurrentPreset(){return this.currentPreset}_getCalibration(e){var t,i,a,n,o,r,s,l,c,d,u,m,p;if(null===(t=e.calibration_source)||void 0===t?void 0:t.identity)return[{map:{x:0,y:0},vacuum:{x:0,y:0}},{map:{x:1,y:0},vacuum:{x:1,y:0}},{map:{x:0,y:1},vacuum:{x:0,y:1}}];if((null===(i=e.calibration_source)||void 0===i?void 0:i.calibration_points)&&[3,4].includes(e.calibration_source.calibration_points.length))return e.calibration_source.calibration_points;if(!this.hass)return;if((null===(a=e.calibration_source)||void 0===a?void 0:a.entity)&&!(null===(n=e.calibration_source)||void 0===n?void 0:n.attribute))return JSON.parse(null===(o=this.hass.states[e.calibration_source.entity])||void 0===o?void 0:o.state);if((null===(r=e.calibration_source)||void 0===r?void 0:r.entity)&&(null===(s=e.calibration_source)||void 0===s?void 0:s.attribute))return null===(l=this.hass.states[e.calibration_source.entity])||void 0===l?void 0:l.attributes[e.calibration_source.attribute];if(null===(c=e.calibration_source)||void 0===c?void 0:c.camera)return null===(m=this.hass.states[null!==(u=null===(d=e.map_source)||void 0===d?void 0:d.camera)&&void 0!==u?u:""])||void 0===m?void 0:m.attributes.calibration_points;if(null===(p=e.calibration_source)||void 0===p?void 0:p.platform)return Fs.getCalibration(e.calibration_source.platform);const _=Fs.getCalibration(e.vacuum_platform);return _||void 0}_firstHass(){if(0===this.configErrors.length&&!this.oldConfig){const e=this._getAllPresets(),t=this._getAllAvailablePresets(),i=e.indexOf(t[0]);this._setPresetIndex(i,!1,!0)}}_getAllPresets(){var e;return[this.config,...null!==(e=this.config.additional_presets)&&void 0!==e?e:[]]}_getAllAvailablePresets(){const e=this._getAllPresets(),t=e.filter((e=>{var t,i;return 0===(null!==(i=null===(t=e.conditions)||void 0===t?void 0:t.length)&&void 0!==i?i:0)||_l(e,this.internalVariables,this.hass)}));return 0===t.length?[e[0]]:t}_getPreviousPresetIndex(){const e=this._getAllPresets(),t=e.filter(((e,t)=>{var i,a;return t<this.presetIndex&&(0===(null!==(a=null===(i=e.conditions)||void 0===i?void 0:i.length)&&void 0!==a?a:0)||_l(e,this.internalVariables,this.hass))}));return 0==t.length?-1:e.indexOf(t[t.length-1])}_getNextPresetIndex(){const e=this._getAllPresets(),t=e.filter(((e,t)=>{var i,a;return t>this.presetIndex&&(0===(null!==(a=null===(i=e.conditions)||void 0===i?void 0:i.length)&&void 0!==a?a:0)||_l(e,this.internalVariables,this.hass))}));return 0==t.length?-1:e.indexOf(t[0])}_openPreviousPreset(){const e=this._getPreviousPresetIndex();e>=0&&this._setPresetIndex(e,!0)}_openNextPreset(){const e=this._getNextPresetIndex();e>=0&&this._setPresetIndex(e,!0)}_setPresetIndex(e,t=!1,i=!1){var a,n,o,r,s;if((e=Math.min(Math.max(e,0),null!==(n=null===(a=this.config.additional_presets)||void 0===a?void 0:a.length)&&void 0!==n?n:0))===this.presetIndex&&!i)return;const l=0===e?this.config:(null!==(o=this.config.additional_presets)&&void 0!==o?o:[])[e-1];this.mapLocked||null===(r=this._getPinchZoom())||void 0===r||r.setTransform({scale:1,x:0,y:0,allowChangeEvent:!0}),t&&ke("selection"),this.mapLocked=null!==(s=null==l?void 0:l.map_locked)&&void 0!==s&&s,this.selectedMode=0,this.realScale=1,this.mapScale=1,this.mapX=0,this.mapY=0,this.hass&&this._updateCalibration(l),this.modes=this._getModes(l),this.presetIndex=e,this.currentPreset=l,this.internalVariables=this._getInternalVariables(l),this._getIconsAndTiles(l,this.internalVariables).then((([e,t])=>this._setPreset(Object.assign(Object.assign({},l),{tiles:t,icons:e})))).then((()=>setTimeout((()=>this.requestUpdate()),100))).then((()=>this._setCurrentMode(0,!1))),t&&this.currentPreset.activate_on_switch&&this._executePresetsActivation(),this._selectionChanged()}_getInternalVariables(e){var t,i;return Object.assign(Object.assign({},null!==(t=Fs.getVariables(e.vacuum_platform))&&void 0!==t?t:{}),null!==(i=e.internal_variables)&&void 0!==i?i:{})}_getIconsAndTiles(e,t){var i,a;const n=Fs.getPlatformName(e.vacuum_platform),o=vc.generate(this.hass,e.icons,e.entity,n,t,this.config.language,null!==(i=e.append_icons)&&void 0!==i&&i,(e=>e.icon_id),kc,yc.generate),r=vc.generate(this.hass,e.tiles,e.entity,n,t,this.config.language,null!==(a=e.append_tiles)&&void 0!==a&&a,(e=>e.tile_id),fc,hc.generate);return Promise.all([o,r])}_getModes(e){var t,i,a;const n=Fs.getPlatformName(e.vacuum_platform);return(-1===(null!==(i=null===(t=e.map_modes)||void 0===t?void 0:t.length)&&void 0!==i?i:-1)||n.startsWith("Setup")?Fs.generateDefaultModes(n):null!==(a=e.map_modes)&&void 0!==a?a:[tl]).map((e=>new ll(n,e,this.config.language)))}_executePresetsActivation(){if(this.currentPreset.activate){const e=new sl(this.currentPreset.activate).apply(this.currentPreset.entity,[],0,{});this.hass.callService(e.domain,e.service,e.serviceData,e.target).then((()=>ke("success")))}}_setPreset(e){this.currentPreset=e,this.watchedEntities=pl(Object.assign({type:""},e))}_updateCalibration(e){this.coordinatesConverter=void 0;const t=this._getCalibration(e);this.coordinatesConverter=new Oc(t)}_getMapSrc(e){if(e.map_source.camera){if(this.connected&&this.lastHassUpdate&&this.lastHassUpdate.getTime()+36e4>=(new Date).getTime()){return`${this.hass.hassUrl(this.hass.states[e.map_source.camera].attributes.entity_picture)}&v=${+new Date}`}return Hs}return e.map_source.image?`${e.map_source.image}`:Hs}_createMapControls(){const e=[],t=this._getCurrentMode();return t?(t.selectionType===ur.MANUAL_RECTANGLE&&e.push(D`
                <paper-button class="map-actions-item clickable ripple" @click="${()=>this._addRectangle()}">
                    <ha-icon icon="mdi:plus"></ha-icon>
                </paper-button>
            `),t.selectionType===ur.MANUAL_PATH&&e.push(D`
                <paper-button
                    class="map-actions-item clickable ripple"
                    @click="${()=>{this.selectedManualPath.removeLast(),ke("selection"),this._selectionChanged(),this.requestUpdate()}}">
                    <ha-icon icon="mdi:undo-variant"></ha-icon>
                </paper-button>
                <paper-button
                    class="map-actions-item clickable ripple"
                    @click="${()=>{this.selectedManualPath.clear(),ke("selection"),this._selectionChanged(),this.requestUpdate()}}">
                    <ha-icon icon="mdi:delete-empty"></ha-icon>
                </paper-button>
            `),t.repeatsType!==mr.NONE&&e.push(D`
                <paper-button
                    class="map-actions-item clickable ripple"
                    @click="${()=>{this.repeats=this.repeats%t.maxRepeats+1,this._selectionChanged(),ke("selection")}}">
                    <div>×${this.repeats}</div>
                </paper-button>
            `),t.runImmediately||e.push(D`
                <paper-button
                    class="map-actions-item main clickable ripple"
                    @action="${this._handleRunAction()}"
                    .actionHandler="${Cl({hasHold:!0,hasDoubleClick:!0})}">
                    <ha-icon icon="mdi:play"></ha-icon>
                    <ha-icon
                        icon="${t.icon}"
                        style="position: absolute; transform: scale(0.5) translate(15px, -20px)"></ha-icon>
                </paper-button>
            `),e):[]}_getContext(){return new ic((()=>this.mapScale),(()=>this.realScale),(e=>this._getMousePosition(e)),(()=>this.requestUpdate()),(()=>this._selectionChanged()),(()=>this.coordinatesConverter),(()=>this.selectedManualRectangles),(()=>this.selectedPredefinedRectangles),(()=>this.selectedRooms),(()=>this.selectedPredefinedPoints),(()=>{var e,t;return null!==(t=null===(e=this._getCurrentMode())||void 0===e?void 0:e.coordinatesRounding)&&void 0!==t&&t}),(()=>{var e,t;return null!==(t=null===(e=this._getCurrentMode())||void 0===e?void 0:e.coordinatesToMetersDivider)&&void 0!==t?t:1}),(()=>{var e,t;return null!==(t=null===(e=this._getCurrentMode())||void 0===e?void 0:e.maxSelections)&&void 0!==t?t:0}),(e=>this._getCssProperty(e)),(()=>this._runImmediately()),(e=>this._localize(e)),(e=>this._hass.states[e].state),(e=>this._hass.callService("homeassistant","toggle",{entity_id:e})))}_getMousePosition(e){return fl(e,this._getSvgWrapper(),this.mapScale)}_setCurrentMode(e,t=!0){const i=this.modes[e];switch(this.selectedManualRectangles=[],this.selectedManualPoint=void 0,this.selectedManualPath.clear(),this.selectedPredefinedRectangles=[],this.selectedRooms=[],this.selectedPredefinedPoints=[],this.selectablePredefinedRectangles=[],this.selectableRooms=[],this.selectablePredefinedPoints=[],null==i?void 0:i.selectionType){case ur.PREDEFINED_RECTANGLE:const e=cc.getFromEntities(i,this.hass,(()=>this._getContext())),t=i.predefinedSelections.map((e=>e)).filter((e=>"string"!=typeof e.zones)).map((e=>new cc(e,this._getContext())));this.selectablePredefinedRectangles=e.concat(t),this.selectedPredefinedRectangles=this.selectablePredefinedRectangles.filter((e=>e.selected)),this.entitiesToManuallyUpdate=i.predefinedSelections.filter((e=>e.state_entity)).map((e=>e.state_entity));break;case ur.ROOM:this.selectableRooms=i.predefinedSelections.map((e=>new dc(e,this._getContext()))),this.selectedRooms=this.selectableRooms.filter((e=>e.selected)),this.entitiesToManuallyUpdate=i.predefinedSelections.filter((e=>e.state_entity)).map((e=>e.state_entity));break;case ur.PREDEFINED_POINT:const a=lc.getFromEntities(i,this.hass,(()=>this._getContext())),n=i.predefinedSelections.map((e=>e)).filter((e=>"string"!=typeof e.position)).map((e=>new lc(e,this._getContext())));this.selectablePredefinedPoints=a.concat(n),this.selectedPredefinedPoints=this.selectablePredefinedPoints.filter((e=>e.selected)),this.entitiesToManuallyUpdate=i.predefinedSelections.filter((e=>e.state_entity)).map((e=>e.state_entity))}this.selectedMode!=e&&t&&ke("selection"),this.selectedMode=e,this._selectionChanged()}_getCurrentMode(){return this.modes[this.selectedMode]}_getSelection(e){var t,i,a,n,o,r,s;if(!e)return{selection:[],variables:{}};const l=e.repeatsType===mr.INTERNAL?this.repeats:null;let c=[],d={};const u=e=>{var t,i;return Object.assign(Object.assign({},null!==(i=null===(t=e[0])||void 0===t?void 0:t.variables)&&void 0!==i?i:{}),{variables:e.map((e=>{var t;return null!==(t=null==e?void 0:e.variables)&&void 0!==t?t:{}}))})};switch(e.selectionType){case ur.MANUAL_RECTANGLE:c=this.selectedManualRectangles.map((e=>e.toVacuum(l))),d=u(this.selectedManualRectangles);break;case ur.PREDEFINED_RECTANGLE:c=this.selectedPredefinedRectangles.map((e=>e.toVacuum(l))).reduce(((e,t)=>e.concat(t)),[]),d=null!==(i=null===(t=this.selectedPredefinedRectangles[0])||void 0===t?void 0:t.variables)&&void 0!==i?i:{},d=u(this.selectedPredefinedRectangles);break;case ur.ROOM:const m=this.selectedRooms.map((e=>e.toVacuum())).map((t=>qc.adjustRoomId(t,e)));c=[...m,...l&&m.length>0?[l]:[]],d=null!==(n=null===(a=this.selectedRooms[0])||void 0===a?void 0:a.variables)&&void 0!==n?n:{},d=u(this.selectedRooms);break;case ur.MANUAL_PATH:c=this.selectedManualPath.toVacuum(l),d=null!==(o=this.selectedManualPath.variables)&&void 0!==o?o:{},d=u([this.selectedManualPath]);break;case ur.MANUAL_POINT:c=null!==(s=null===(r=this.selectedManualPoint)||void 0===r?void 0:r.toVacuum(l))&&void 0!==s?s:[],d=u([this.selectedManualPoint]);break;case ur.PREDEFINED_POINT:c=this.selectedPredefinedPoints.map((e=>e.toVacuum(l))).reduce(((e,t)=>e.concat(t)),[]),d=u(this.selectedPredefinedPoints)}return e.repeatsType===mr.REPEAT&&(c=Array(this.repeats).fill(0).flatMap((()=>c))),{selection:c,variables:d}}async _runImmediately(){var e,t;return!(null===(t=null===(e=this._getCurrentMode())||void 0===e?void 0:e.runImmediately)||void 0===t||!t)&&(await this._run(!1),!0)}_selectionChanged(){const e=this._getCurrentMode(),{selection:t}=this._getSelection(e);if(this.isInEditor){const e=new Event(Gs);e.selection=null!=t?t:"[]",window.dispatchEvent(e)}}_isInEditor(){return function e(t){var i,a,n,o,r,s,l,c,d,u,m;return"hui-card"===(null===(a=null===(i=t.parentElement)||void 0===i?void 0:i.tagName)||void 0===a?void 0:a.toLowerCase())&&"preview"in(null!==(o=null===(n=t.parentElement)||void 0===n?void 0:n.attributes)&&void 0!==o?o:[])||"hui-section"===(null===(s=null===(r=t.parentElement)||void 0===r?void 0:r.tagName)||void 0===s?void 0:s.toLowerCase())&&"preview"in(null!==(c=null===(l=t.parentElement)||void 0===l?void 0:l.attributes)&&void 0!==c?c:[])||"hui-card-preview"===(null===(u=null===(d=t.parentElement)||void 0===d?void 0:d.tagName)||void 0===u?void 0:u.toLowerCase())||null!=t.parentElement&&e(t.parentElement)||"[object ShadowRoot]"==(null===(m=t.parentNode)||void 0===m?void 0:m.toString())&&e(t.getRootNode().host)}(this)}async _handleAutogeneratedConfigGet(){var e;const t=new Event(Xs),i=await Promise.all((null!==(e=this.config.additional_presets)&&void 0!==e?e:[]).map((async e=>await this._getConfigOfPreset(e))));t.presetConfig=Object.assign(Object.assign(Object.assign({},this.config),await this._getConfigOfPreset(this.config)),{additional_presets:i}),window.dispatchEvent(t)}async _getConfigOfPreset(e){const t=this._getInternalVariables(e),[i,a]=await this._getIconsAndTiles(e,t);return Object.assign(Object.assign({},e),{icons:JSON.parse(JSON.stringify(i)),tiles:JSON.parse(JSON.stringify(a)),map_modes:this._getModes(e).map((e=>e.toMapModeConfig()))})}_handleRoomsConfigGet(){const e=new Event(Ys);e.roomConfig=this._getRoomsConfig(),window.dispatchEvent(e)}async _handleServiceCallGet(){const e=this._getCurrentPreset(),t=this._getCurrentMode(),{selection:i,variables:a}=this._getSelection(t);if(0!=i.length&&t){const n=await t.getServiceCall(this.hass,e.entity,i,this.repeats,Object.assign(Object.assign({},this.internalVariables),a)),o=new Event(Ws);o.serviceCall=JSON.stringify(n,null,2),window.dispatchEvent(o)}else this._showToast("popups.no_selection","mdi:close",!1),ke("failure")}async _handleLovelaceDomEvent(e){var t;const i=e;if(el in i.detail&&"action_handler_id"in i.detail[el]&&i.detail[el].action_handler_id===(null!==(t=this.config.action_handler_id)&&void 0!==t?t:"this")){const e=i.detail[el];if(void 0===e.action)return;const t=e.action,a=e.data,n=this._getCurrentMode();switch(t){case Pl.CLEANING_START:await this._run(!1);break;case Pl.INTERNAL_VARIABLE_SET:this._setInternalVariable(a.variable,a.value);break;case Pl.MAP_MODE_NEXT:this._setCurrentMode((this.selectedMode+1)%this.modes.length,!1);break;case Pl.MAP_MODE_PREVIOUS:this._setCurrentMode((this.selectedMode-1+this.modes.length)%this.modes.length,!1);break;case Pl.MAP_MODE_SET:this._setCurrentMode(a.index%this.modes.length,!1);break;case Pl.REPEATS_DECREMENT:n&&(this.repeats=(this.repeats+n.maxRepeats-2)%n.maxRepeats+1);break;case Pl.REPEATS_INCREMENT:n&&(this.repeats=this.repeats%n.maxRepeats+1);break;case Pl.REPEATS_SET:n&&(this.repeats=(a.value+n.maxRepeats-1)%n.maxRepeats+1);break;case Pl.SELECTION_CLEAR:this._setCurrentMode(this.selectedMode)}}}_setInternalVariable(e,t){const i=Object.assign({},this.internalVariables);i[e]=t,this.internalVariables=i,this.requestUpdate()}_getRoomsConfig(){var e,t,i,a,n,o,r,s,l,c;const d=this._getCurrentPreset(),u=null===(i=this.hass.states[null!==(t=null===(e=d.map_source)||void 0===e?void 0:e.camera)&&void 0!==t?t:""])||void 0===i?void 0:i.attributes.rooms,m=new Array;if(u){const e=this.modes.filter((e=>e.selectionType===ur.ROOM)).reverse()[0],t=e?this.modes.indexOf(e):-1;for(const e in u){if(!u.hasOwnProperty(e))continue;const t=u[e];if(!(t.outline||t.x0||t.y0||t.x1||t.y1))continue;const i=null!==(a=t.outline)&&void 0!==a?a:[[t.x0,t.y0],[t.x1,t.y0],[t.x1,t.y1],[t.x0,t.y1]],d=i.toString().includes("."),p=(e,t=1)=>d?e/t:Math.round(e/t),_=i.reduce(((e,t)=>{var i;return e+(null!==(i=t[0])&&void 0!==i?i:0)}),0),v=i.reduce(((e,t)=>{var i;return e+(null!==(i=t[1])&&void 0!==i?i:0)}),0),g={id:e,icon:{name:null!==(n=t.icon)&&void 0!==n?n:"mdi:broom",x:null!==(o=t.x)&&void 0!==o?o:p(_,i.length),y:null!==(r=t.y)&&void 0!==r?r:p(v,i.length)},label:{text:null!==(s=t.name)&&void 0!==s?s:`Room ${e}`,x:null!==(l=t.x)&&void 0!==l?l:p(_,i.length),y:null!==(c=t.y)&&void 0!==c?c:p(v,i.length),offset_y:35},outline:i};m.push(g)}return{modeIndex:t,rooms:m}}}static adjustRoomId(e,t){if("number"===t.idType){const t=+e;return isNaN(t)?e:t}return e}async _run(e){var t,i;const a=this._getCurrentPreset(),n=this._getCurrentMode(),{selection:o,variables:r}=this._getSelection(n);if(0!=o.length&&n){const i=this.repeats,s=await n.getServiceCall(this.hass,a.entity,o,i,Object.assign(Object.assign({},this.internalVariables),r));if(e||null!==(t=this.config.debug)&&void 0!==t&&t){const e=JSON.stringify(s,null,2);this._showToast("popups.success","mdi:check",!0),console.log(e),window.alert(e),ke("success")}else this.hass.callService(s.domain,s.service,s.serviceData,s.target).then((()=>{this._showToast("popups.success","mdi:check",!0),ke("success")}),(e=>{this._showToast("popups.failed","mdi:close",!1,e.message),ke("failure")}))}else this._showToast("popups.no_selection","mdi:close",!1),ke("failure");(null===(i=a.clean_selection_on_start)||void 0===i||i)&&this._setCurrentMode(this.selectedMode),this._selectionChanged()}_updateElements(e=!1){var t,i,a;const n=null===(i=null===(t=this._modesDropdownMenu)||void 0===t?void 0:t.shadowRoot)||void 0===i?void 0:i.querySelector(".dropdown-content");if(n&&(n.style.borderRadius=this._getCssProperty("--map-card-internal-big-radius")),yl(100).then((()=>this._calculateBasicScale())),!e)return;const o=()=>{this._setCurrentMode(this.selectedMode),this.requestUpdate()};switch(null===(a=this._getCurrentMode())||void 0===a?void 0:a.selectionType){case ur.PREDEFINED_RECTANGLE:this.selectablePredefinedRectangles.filter((e=>e.isDynamic())).length>0&&o();break;case ur.ROOM:this.selectedRooms.filter((e=>e.isDynamic())).length>0&&o();break;case ur.PREDEFINED_POINT:this.selectablePredefinedPoints.filter((e=>e.isDynamic())).length>0&&o()}}_drawSelection(){var e,t,i;switch(null===(e=this._getCurrentMode())||void 0===e?void 0:e.selectionType){case ur.MANUAL_RECTANGLE:return F`${this.selectedManualRectangles.map((e=>e.render()))}`;case ur.PREDEFINED_RECTANGLE:return F`${this.selectablePredefinedRectangles.map((e=>e.render()))}`;case ur.ROOM:return F`${this.selectableRooms.map((e=>e.render()))}`;case ur.MANUAL_PATH:return F`${null===(t=this.selectedManualPath)||void 0===t?void 0:t.render()}`;case ur.MANUAL_POINT:return F`${null===(i=this.selectedManualPoint)||void 0===i?void 0:i.render()}`;case ur.PREDEFINED_POINT:return F`${this.selectablePredefinedPoints.map((e=>e.render()))}`;default:return null}}_toggleLock(){this.mapLocked=!this.mapLocked,ke("selection"),yl(500).then((()=>this.requestUpdate()))}_addRectangle(){var e,t,i,a,n,o,r,s;const l=this._getCurrentPreset(),c=this._getCurrentMode(),d=null!==(t=null===(e=l.map_source.crop)||void 0===e?void 0:e.top)&&void 0!==t?t:0,u=null!==(a=null===(i=l.map_source.crop)||void 0===i?void 0:i.bottom)&&void 0!==a?a:0,m=null!==(o=null===(n=l.map_source.crop)||void 0===n?void 0:n.left)&&void 0!==o?o:0,p=null!==(s=null===(r=l.map_source.crop)||void 0===r?void 0:r.right)&&void 0!==s?s:0;if(this._calculateBasicScale(),!c||this.selectedManualRectangles.length>=c.maxSelections)return void ke("failure");const _=this.realImageHeight*this.realScale-d-u,v=this.realImageWidth*this.realScale-m-p,g=(this.selectedManualRectangles.length+1).toString(),h=(v/3+m-this.mapX)/this.mapScale,f=(_/3+d-this.mapY)/this.mapScale,b=v/3/this.mapScale,y=_/3/this.mapScale;this.selectedManualRectangles.push(new tc(h,f,b,y,g,this._getContext())),this._selectionChanged(),ke("selection"),this.requestUpdate()}_mouseDown(e){e instanceof MouseEvent&&0!=e.button||(this.shouldHandleMouseUp=!0)}_mouseMove(e){e.target.classList.contains("draggable")||(this.selectedManualRectangles.filter((e=>e.isSelected())).forEach((t=>t.externalDrag(e))),this.shouldHandleMouseUp=!1)}_mouseUp(e){const t=this._getCurrentMode();if(!(e instanceof MouseEvent&&0!=e.button)&&this.shouldHandleMouseUp&&t){const{x:i,y:a}=fl(e,this._getSvgWrapper(),1);switch(t.selectionType){case ur.MANUAL_PATH:ke("selection"),this.selectedManualPath.addPoint(i,a),this._selectionChanged();break;case ur.MANUAL_POINT:ke("selection"),this.selectedManualPoint=new nc(i,a,this._getContext()),this._selectionChanged();break;default:return}dl(e),this.requestUpdate()}this.shouldHandleMouseUp=!1}_handleRunAction(){return async e=>{var t;if(this.hass&&(null===(t=null==e?void 0:e.detail)||void 0===t?void 0:t.action))switch(e.detail.action){case"tap":await this._run(!1);break;case"hold":await this._run(!0);break;case"double_tap":console.log(JSON.stringify(Object.assign(Object.assign({},this._getCurrentPreset()),{additional_presets:void 0,title:void 0,type:void 0}),null,2)),window.alert("Configuration available in browser's console"),ke("success")}}}_restoreMap(){const e=this._getMapZoomerContent();e.style.transitionDuration=this._getCssProperty("--map-card-internal-transitions-duration"),this._getPinchZoom().setTransform({scale:1,x:0,y:0,allowChangeEvent:!0}),this.mapScale=1,ke("selection"),yl(300).then((()=>e.style.transitionDuration="0s"))}_getCssProperty(e){return getComputedStyle(this._getMapImage()).getPropertyValue(e)}_zoomIn(){ke("selection"),this._updateScale(1.5)}_zoomOut(){ke("selection"),this._updateScale(1/1.5)}_updateScale(e){const t=this._getMapZoomerContent(),i=this._getPinchZoom(),a=this._getPinchZoom().getBoundingClientRect();this.mapScale=Math.max(this.mapScale*e,.5),t.style.transitionDuration="200ms",i.scaleTo(this.mapScale,{originX:a.left+a.width/2,originY:a.top+a.height/2,relativeTo:"container",allowChangeEvent:!0}),yl(300).then((()=>t.style.transitionDuration="0s"))}_calculateBasicScale(){const e=this._getMapImage();e&&e.naturalWidth>0&&(this.realImageWidth=e.naturalWidth,this.realImageHeight=e.naturalHeight,this.realScale=e.width/e.naturalWidth)}_calculateScale(){const e=this._getPinchZoom();this.mapScale=e.scale,this.mapX=e.x,this.mapY=e.y}_getPinchZoom(){var e;return null===(e=this.shadowRoot)||void 0===e?void 0:e.getElementById("map-zoomer")}_getMapImage(){var e;return null===(e=this.shadowRoot)||void 0===e?void 0:e.getElementById("map-image")}_getMapZoomerContent(){var e;return null===(e=this.shadowRoot)||void 0===e?void 0:e.getElementById("map-zoomer-content")}_getSvgWrapper(){var e;return null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector("#svg-wrapper")}_showConfigErrors(e){e.forEach((e=>console.error(e)));const t=document.createElement("hui-error-card");try{return t.setConfig({type:"error",error:e[0],origConfig:this.config}),D` ${t} `}catch(t){return D`
                <pre style="padding: 10px; background-color: red;">${e[0]}</pre>
            `}}_showOldConfig(){return D`
            <hui-warning>
                <h1>Xiaomi Vacuum Map Card ${Vs}</h1>
                <p>${this._localize("common.old_configuration")}</p>
                <p>
                    <a
                        href="https://github.com/PiotrMachowski/lovelace-xiaomi-vacuum-map-card#migrating-from-v1xx"
                        target="_blank"
                        >${this._localize("common.old_configuration_migration_link")}</a
                    >
                </p>
            </hui-warning>
        `}_showInvalidEntities(e){return D`
            <hui-warning>
                <h1>${this._localize("validation.invalid_entities")}</h1>
                <ul>
                    ${e.map((e=>D` <li>
                            <pre>${e}</pre>
                        </li>`))}
                </ul>
            </hui-warning>
        `}_showInvalidCalibrationWarning(){return D` <hui-warning>${this._localize("validation.invalid_calibration")}</hui-warning> `}_localize(e){return cr(e,this.hass,this.config)}_showToast(e,t,i,a=""){wl.showToast(this.shadowRoot,(e=>this._localize(e)),"map-card",e,t,i,a)}static get styles(){return r`
            ha-card {
                overflow: hidden;
                display: flow-root;
                --map-card-internal-primary-color: var(--map-card-primary-color, var(--slider-color));
                --map-card-internal-primary-text-color: var(--map-card-primary-text-color, var(--primary-text-color));
                --map-card-internal-secondary-color: var(--map-card-secondary-color, var(--slider-secondary-color));
                --map-card-internal-secondary-text-color: var(
                    --map-card-secondary-text-color,
                    var(--text-light-primary-color)
                );
                --map-card-internal-tertiary-color: var(--map-card-tertiary-color, var(--secondary-background-color));
                --map-card-internal-tertiary-text-color: var(--map-card-tertiary-text-color, var(--primary-text-color));
                --map-card-internal-disabled-text-color: var(
                    --map-card-disabled-text-color,
                    var(--disabled-text-color)
                );
                --map-card-internal-zoomer-background: var(
                    --map-card-zoomer-background,
                    var(--map-card-internal-tertiary-color)
                );
                --map-card-internal-ripple-color: var(--map-card-ripple-color, #7a7f87);
                --map-card-internal-big-radius: var(--map-card-big-radius, 25px);
                --map-card-internal-small-radius: var(--map-card-small-radius, 18px);
                --map-card-internal-predefined-point-icon-wrapper-size: var(
                    --map-card-predefined-point-icon-wrapper-size,
                    36px
                );
                --map-card-internal-predefined-point-icon-size: var(--map-card-predefined-point-icon-size, 24px);
                --map-card-internal-predefined-point-icon-color: var(
                    --map-card-predefined-point-icon-color,
                    var(--map-card-internal-secondary-text-color)
                );
                --map-card-internal-predefined-point-icon-color-selected: var(
                    --map-card-predefined-point-icon-color-selected,
                    var(--map-card-internal-primary-text-color)
                );
                --map-card-internal-predefined-point-icon-background-color: var(
                    --map-card-predefined-point-icon-background-color,
                    var(--map-card-internal-secondary-color)
                );
                --map-card-internal-predefined-point-icon-background-color-selected: var(
                    --map-card-predefined-point-icon-background-color-selected,
                    var(--map-card-internal-primary-color)
                );
                --map-card-internal-predefined-point-label-color: var(
                    --map-card-predefined-point-label-color,
                    var(--map-card-internal-secondary-text-color)
                );
                --map-card-internal-predefined-point-label-color-selected: var(
                    --map-card-predefined-point-label-color-selected,
                    var(--map-card-internal-primary-text-color)
                );
                --map-card-internal-predefined-point-label-font-size: var(
                    --map-card-predefined-point-label-font-size,
                    12px
                );
                --map-card-internal-manual-point-radius: var(--map-card-manual-point-radius, 5px);
                --map-card-internal-manual-point-line-color: var(--map-card-manual-point-line-color, yellow);
                --map-card-internal-manual-point-fill-color: var(--map-card-manual-point-fill-color, transparent);
                --map-card-internal-manual-point-line-width: var(--map-card-manual-point-line-width, 1px);
                --map-card-internal-manual-path-point-radius: var(--map-card-manual-path-point-radius, 5px);
                --map-card-internal-manual-path-point-line-color: var(--map-card-manual-path-point-line-color, yellow);
                --map-card-internal-manual-path-point-fill-color: var(
                    --map-card-manual-path-point-fill-color,
                    transparent
                );
                --map-card-internal-manual-path-point-line-width: var(--map-card-manual-path-point-line-width, 1px);
                --map-card-internal-manual-path-line-color: var(--map-card-manual-path-line-color, yellow);
                --map-card-internal-manual-path-line-width: var(--map-card-manual-path-line-width, 1px);
                --map-card-internal-predefined-rectangle-line-width: var(
                    --map-card-predefined-rectangle-line-width,
                    1px
                );
                --map-card-internal-predefined-rectangle-line-color: var(
                    --map-card-predefined-rectangle-line-color,
                    white
                );
                --map-card-internal-predefined-rectangle-fill-color: var(
                    --map-card-predefined-rectangle-fill-color,
                    transparent
                );
                --map-card-internal-predefined-rectangle-line-color-selected: var(
                    --map-card-predefined-rectangle-line-color-selected,
                    white
                );
                --map-card-internal-predefined-rectangle-fill-color-selected: var(
                    --map-card-predefined-rectangle-fill-color-selected,
                    rgba(255, 255, 255, 0.2)
                );
                --map-card-internal-predefined-rectangle-line-segment-line: var(
                    --map-card-predefined-rectangle-line-segment-line,
                    10px
                );
                --map-card-internal-predefined-rectangle-line-segment-gap: var(
                    --map-card-predefined-rectangle-line-segment-gap,
                    5px
                );
                --map-card-internal-predefined-rectangle-icon-wrapper-size: var(
                    --map-card-predefined-rectangle-icon-wrapper-size,
                    36px
                );
                --map-card-internal-predefined-rectangle-icon-size: var(
                    --map-card-predefined-rectangle-icon-size,
                    24px
                );
                --map-card-internal-predefined-rectangle-icon-color: var(
                    --map-card-predefined-rectangle-icon-color,
                    var(--map-card-internal-secondary-text-color)
                );
                --map-card-internal-predefined-rectangle-icon-color-selected: var(
                    --map-card-predefined-rectangle-icon-color-selected,
                    var(--map-card-internal-primary-text-color)
                );
                --map-card-internal-predefined-rectangle-icon-background-color: var(
                    --map-card-predefined-rectangle-icon-background-color,
                    var(--map-card-internal-secondary-color)
                );
                --map-card-internal-predefined-rectangle-icon-background-color-selected: var(
                    --map-card-predefined-rectangle-icon-background-color-selected,
                    var(--map-card-internal-primary-color)
                );
                --map-card-internal-predefined-rectangle-label-color: var(
                    --map-card-predefined-rectangle-label-color,
                    var(--map-card-internal-secondary-text-color)
                );
                --map-card-internal-predefined-rectangle-label-color-selected: var(
                    --map-card-predefined-rectangle-label-color-selected,
                    var(--map-card-internal-primary-text-color)
                );
                --map-card-internal-predefined-rectangle-label-font-size: var(
                    --map-card-predefined-rectangle-label-font-size,
                    12px
                );
                --map-card-internal-manual-rectangle-line-width: var(--map-card-manual-rectangle-line-width, 1px);
                --map-card-internal-manual-rectangle-line-color: var(--map-card-manual-rectangle-line-color, white);
                --map-card-internal-manual-rectangle-fill-color: var(
                    --map-card-manual-rectangle-fill-color,
                    rgba(255, 255, 255, 0.2)
                );
                --map-card-internal-manual-rectangle-line-color-selected: var(
                    --map-card-manual-rectangle-line-color-selected,
                    white
                );
                --map-card-internal-manual-rectangle-fill-color-selected: var(
                    --map-card-manual-rectangle-fill-color-selected,
                    transparent
                );
                --map-card-internal-manual-rectangle-line-segment-line: var(
                    --map-card-manual-rectangle-line-segment-line,
                    10px
                );
                --map-card-internal-manual-rectangle-line-segment-gap: var(
                    --map-card-manual-rectangle-line-segment-gap,
                    5px
                );
                --map-card-internal-manual-rectangle-description-color: var(
                    --map-card-manual-rectangle-description-color,
                    white
                );
                --map-card-internal-manual-rectangle-description-font-size: var(
                    --map-card-manual-rectangle-description-font-size,
                    12px
                );
                --map-card-internal-manual-rectangle-description-offset-x: var(
                    --map-card-manual-rectangle-description-offset-x,
                    2px
                );
                --map-card-internal-manual-rectangle-description-offset-y: var(
                    --map-card-manual-rectangle-description-offset-y,
                    -8px
                );
                --map-card-internal-manual-rectangle-delete-circle-radius: var(
                    --map-card-manual-rectangle-delete-circle-radius,
                    13px
                );
                --map-card-internal-manual-rectangle-delete-circle-line-color: var(
                    --map-card-manual-rectangle-delete-circle-line-color,
                    white
                );
                --map-card-internal-manual-rectangle-delete-circle-fill-color: var(
                    --map-card-manual-rectangle-delete-circle-fill-color,
                    var(--map-card-internal-secondary-color)
                );
                --map-card-internal-manual-rectangle-delete-circle-line-color-selected: var(
                    --map-card-manual-rectangle-delete-circle-line-color-selected,
                    white
                );
                --map-card-internal-manual-rectangle-delete-circle-fill-color-selected: var(
                    --map-card-manual-rectangle-delete-circle-fill-color-selected,
                    var(--map-card-internal-primary-color)
                );
                --map-card-internal-manual-rectangle-delete-circle-line-width: var(
                    --map-card-manual-rectangle-delete-circle-line-width,
                    1px
                );
                --map-card-internal-manual-rectangle-delete-icon-color: var(
                    --map-card-manual-rectangle-delete-icon-color,
                    var(--map-card-internal-secondary-text-color)
                );
                --map-card-internal-manual-rectangle-delete-icon-color-selected: var(
                    --map-card-manual-rectangle-delete-icon-color-selected,
                    var(--map-card-internal-primary-text-color)
                );
                --map-card-internal-manual-rectangle-resize-circle-radius: var(
                    --map-card-manual-rectangle-resize-circle-radius,
                    13px
                );
                --map-card-internal-manual-rectangle-resize-circle-line-color: var(
                    --map-card-manual-rectangle-resize-circle-line-color,
                    white
                );
                --map-card-internal-manual-rectangle-resize-circle-fill-color: var(
                    --map-card-manual-rectangle-resize-circle-fill-color,
                    var(--map-card-internal-secondary-color)
                );
                --map-card-internal-manual-rectangle-resize-circle-line-color-selected: var(
                    --map-card-manual-rectangle-resize-circle-line-color-selected,
                    white
                );
                --map-card-internal-manual-rectangle-resize-circle-fill-color-selected: var(
                    --map-card-manual-rectangle-resize-circle-fill-color-selected,
                    var(--map-card-internal-primary-color)
                );
                --map-card-internal-manual-rectangle-resize-circle-line-width: var(
                    --map-card-manual-rectangle-resize-circle-line-width,
                    1px
                );
                --map-card-internal-manual-rectangle-resize-icon-color: var(
                    --map-card-manual-rectangle-resize-icon-color,
                    var(--map-card-internal-secondary-text-color)
                );
                --map-card-internal-manual-rectangle-resize-icon-color-selected: var(
                    --map-card-manual-rectangle-resize-icon-color-selected,
                    var(--map-card-internal-primary-text-color)
                );
                --map-card-internal-room-outline-line-color: var(--map-card-room-outline-line-color, white);
                --map-card-internal-room-outline-line-width: var(--map-card-room-outline-line-width, 1px);
                --map-card-internal-room-outline-line-segment-line: var(
                    --map-card-room-outline-line-segment-line,
                    10px
                );
                --map-card-internal-room-outline-line-segment-gap: var(--map-card-room-outline-line-segment-gap, 5px);
                --map-card-internal-room-outline-fill-color: var(--map-card-room-outline-fill-color, transparent);
                --map-card-internal-room-outline-line-color-selected: var(
                    --map-card-room-outline-line-color-selected,
                    white
                );
                --map-card-internal-room-outline-fill-color-selected: var(
                    --map-card-room-outline-fill-color-selected,
                    rgba(255, 255, 255, 0.3)
                );
                --map-card-internal-room-icon-wrapper-size: var(--map-card-room-icon-wrapper-size, 36px);
                --map-card-internal-room-icon-size: var(--map-card-room-icon-size, 24px);
                --map-card-internal-room-icon-color: var(
                    --map-card-room-icon-color,
                    var(--map-card-internal-secondary-text-color)
                );
                --map-card-internal-room-icon-color-selected: var(
                    --map-card-room-icon-color-selected,
                    var(--map-card-internal-primary-text-color)
                );
                --map-card-internal-room-icon-background-color: var(
                    --map-card-room-icon-background-color,
                    var(--map-card-internal-secondary-color)
                );
                --map-card-internal-room-icon-background-color-selected: var(
                    --map-card-room-icon-background-color-selected,
                    var(--map-card-internal-primary-color)
                );
                --map-card-internal-room-label-color: var(
                    --map-card-room-label-color,
                    var(--map-card-internal-secondary-text-color)
                );
                --map-card-internal-room-label-color-selected: var(
                    --map-card-room-label-color-selected,
                    var(--map-card-internal-primary-text-color)
                );
                --map-card-internal-room-label-font-size: var(--map-card-room-label-font-size, 12px);
                --map-card-internal-toast-successful-icon-color: var(
                    --map-card-toast-successful-icon-color,
                    rgb(0, 255, 0)
                );
                --map-card-internal-toast-unsuccessful-icon-color: var(
                    --map-card-toast-unsuccessful-icon-color,
                    rgb(255, 0, 0)
                );
                --map-card-internal-transitions-duration: var(--map-card-transitions-duration, 200ms);
            }

            .clickable {
                cursor: pointer;
            }

            .map-wrapper {
                position: relative;
                height: max-content;
            }

            #map-zoomer {
                overflow: hidden;
                display: block;
                --scale: 1;
                --x: 0;
                --y: 0;
                background: var(--map-card-internal-zoomer-background);
            }

            #map-zoomer-content {
                transform: translate(var(--x), var(--y)) scale(var(--scale));
                transform-origin: 0 0;
                position: relative;
            }

            #map-image {
                width: 100%;
                margin-bottom: -6px;
            }

            #map-image.zoomed {
                image-rendering: pixelated;
            }

            #map-image-overlay {
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
            }

            .standalone-icon-on-map {
                background-color: var(--map-card-internal-secondary-color);
                color: var(--map-card-internal-secondary-text-color);
                border-radius: var(--map-card-internal-small-radius);
                margin: 5px;
                width: 36px;
                height: 36px;
                display: flex;
                justify-content: center;
                align-items: center;
            }

            .map-zoom-icons {
                right: 0;
                bottom: 0;
                position: absolute;
                display: inline-flex;
                background-color: var(--map-card-internal-secondary-color);
                color: var(--map-card-internal-secondary-text-color);
                border-radius: var(--map-card-internal-small-radius);
                margin: 5px;
                direction: ltr;
            }

            .map-zoom-icons-main {
                display: inline-flex;
                border-radius: var(--map-card-internal-small-radius);
                background-color: var(--map-card-internal-primary-color);
                color: var(--map-card-internal-primary-text-color);
            }

            .icon-on-map {
                touch-action: auto;
                pointer-events: auto;
                height: 36px;
                width: 36px;
                display: flex;
                justify-content: center;
                align-items: center;
            }

            .controls-wrapper {
                margin: 15px;
                display: flex;
                flex-direction: column;
                gap: 10px;
            }

            .map-controls {
                width: 100%;
                display: inline-flex;
                gap: 10px;
                place-content: space-between;
                flex-wrap: wrap;
            }

            .map-actions-list {
                border-radius: var(--map-card-internal-big-radius);
                overflow: hidden;
                background-color: var(--map-card-internal-secondary-color);
                color: var(--map-card-internal-secondary-text-color);
                margin-inline-start: auto;
                display: inline-flex;
                height: min-content;
            }

            .map-actions-item.main {
                border-radius: var(--map-card-internal-big-radius);
                background-color: var(--map-card-internal-primary-color);
                color: var(--map-card-internal-primary-text-color);
            }

            .map-actions-item {
                width: 50px;
                height: 50px;
                display: flex;
                justify-content: center;
                align-items: center;
                background-color: transparent;
            }

            .ripple {
                position: relative;
                overflow: hidden;
                transform: translate3d(0, 0, 0);
            }

            .ripple:after {
                content: "";
                display: block;
                position: absolute;
                border-radius: 50%;
                width: 100%;
                height: 100%;
                top: 0;
                left: 0;
                pointer-events: none;
                background-image: radial-gradient(circle, var(--map-card-internal-ripple-color) 2%, transparent 10.01%);
                background-repeat: no-repeat;
                background-position: 50%;
                transform: scale(10, 10);
                opacity: 0;
                transition: transform 0.5s, opacity 1s;
            }

            .ripple:active:after {
                transform: scale(0, 0);
                opacity: 0.7;
                transition: 0s;
            }

            ${Uc.styles}
            ${Ql.styles}
            ${tc.styles}
            ${cc.styles}
            ${rc.styles}
            ${nc.styles}
            ${lc.styles}
            ${dc.styles}
            ${Vc.styles}
            ${$c.styles}
            ${Rc.styles}
            ${wl.styles}
        `}};e([me()],Zc.prototype,"oldConfig",void 0),e([me()],Zc.prototype,"config",void 0),e([me()],Zc.prototype,"presetIndex",void 0),e([me()],Zc.prototype,"realScale",void 0),e([me()],Zc.prototype,"realImageWidth",void 0),e([me()],Zc.prototype,"realImageHeight",void 0),e([me()],Zc.prototype,"mapScale",void 0),e([me()],Zc.prototype,"mapX",void 0),e([me()],Zc.prototype,"mapY",void 0),e([me()],Zc.prototype,"repeats",void 0),e([me()],Zc.prototype,"selectedMode",void 0),e([me()],Zc.prototype,"mapLocked",void 0),e([me()],Zc.prototype,"configErrors",void 0),e([me()],Zc.prototype,"connected",void 0),e([me()],Zc.prototype,"internalVariables",void 0),e([_e(".modes-dropdown-menu")],Zc.prototype,"_modesDropdownMenu",void 0),e([function(e){return pe({descriptor:t=>({get(){var t,i;return null!==(i=null===(t=this.renderRoot)||void 0===t?void 0:t.querySelectorAll(e))&&void 0!==i?i:[]},enumerable:!0,configurable:!0})})}(".icon-dropdown-menu")],Zc.prototype,"_iconDropdownMenus",void 0),e([ue({attribute:!1})],Zc.prototype,"_hass",void 0),Zc=qc=e([le(Us)],Zc);export{Zc as XiaomiVacuumMapCard};
