Home-AssistantConfig/config/www/community/lovelace-xiaomi-vacuum-map-.../xiaomi-vacuum-map-card.js

1699 lines
398 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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(""),M=e=>null===e||"object"!=typeof e&&"function"!=typeof e,T=Array.isArray,S="[ \t\n\f\r]",C=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,O=/-->/g,N=/>/g,R=RegExp(`>|${S}(?:([^\\s"'>=/]+)(${S}*=${S}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),$=/'/g,j=/"/g,L=/^(?:script|style|textarea|title)$/i,I=e=>(t,...i)=>({_$litType$:e,strings:t,values:i}),D=I(1),V=I(2),F=Symbol.for("lit-noChange"),U=Symbol.for("lit-nothing"),q=new WeakMap,H=z.createTreeWalker(z,129,null,!1);function K(e,t){if(!Array.isArray(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==k?k.createHTML(t):t}const X=(e,t)=>{const i=e.length-1,a=[];let n,o=2===t?"<svg>":"",r=C;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===C?"!--"===l[1]?r=O:void 0!==l[1]?r=N:void 0!==l[2]?(L.test(l[2])&&(n=RegExp("</"+l[2],"g")),r=R):void 0!==l[3]&&(r=R):r===R?">"===l[0]?(r=null!=n?n:C,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]?j:$):r===j||r===$?r=R:r===O||r===N?r=C:(r=R,n=void 0);const u=r===R&&e[t+1].startsWith("/>")?" ":"";o+=r===C?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[K(e,o+(e[i]||"<?>")+(2===t?"</svg>":"")),a]};class G{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]=X(e,t);if(this.el=G.createElement(l,i),H.currentNode=this.el.content,2===t){const e=this.el.content,t=e.firstChild;t.remove(),e.append(...t.childNodes)}for(;null!==(a=H.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(L.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()),H.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 B(e,t,i=e,a){var n,o,r,s;if(t===F)return t;let l=void 0!==a?null===(n=i._$Co)||void 0===n?void 0:n[a]:i._$Cl;const c=M(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=B(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);H.currentNode=n;let o=H.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=H.nextNode(),r++)}return H.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=B(this,e,t),M(e)?e===U||null==e||""===e?(this._$AH!==U&&this._$AR(),this._$AH=U):e!==this._$AH&&e!==F&&this._(e):void 0!==e._$litType$?this.g(e):void 0!==e.nodeType?this.$(e):(e=>T(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&&M(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=G.createElement(K(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 G(e)),t}T(e){T(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=B(this,e,t,0),o=!M(e)||e!==this._$AH&&e!==F,o&&(this._$AH=e);else{const a=e;let r,s;for(e=n[0],r=0;r<n.length-1;r++)s=B(this,a[i+r],t,r),s===F&&(s=this._$AH[r]),o||(o=!M(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=B(this,e,t,0))&&void 0!==i?i:U)===F)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){B(this,e)}}const ae=b.litHtmlPolyfillSupport;null==ae||ae(G,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 F}}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:"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"},Pe={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í"},Me={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ó"},Te={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"}}},Se={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"},Ce={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Oe={success:"Fet!",no_selection:"No s'ha proporcionat cap selecció",failed:"No s'ha pogut trucar al servei"},Ne={description:{before_link:"Aquest editor visual només admet una configuració bàsica amb una entitat de càmera creada amb ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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"}},Re={common:ze,map_mode:Pe,validation:Me,tile:Te,icon:Se,unit:Ce,popups:Oe,editor:Ne},$e=Object.freeze({__proto__:null,common:ze,map_mode:Pe,validation:Me,tile:Te,icon:Se,unit:Ce,popups:Oe,editor:Ne,default:Re}),je={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"},Le={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"},Ie={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_outdated_translation:'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"},De={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"},cleaning_time:{label:"Doba uklízení"},mop_left:{label:"Životnost mopu"}},Ve={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ň vysávání"},Fe={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Ue={success:"Volání služby bylo úspěšné",no_selection:"Nebyl proveden žádný výběr",failed:"Volání služby selhalo"},qe={description:{before_link:"Tento editor podporuje pouze základní konfiguraci s použitím entity kamera vytvořené pomocí ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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"}},He={common:je,map_mode:Le,validation:Ie,tile:De,icon:Ve,unit:Fe,popups:Ue,editor:qe},Ke=Object.freeze({__proto__:null,common:je,map_mode:Le,validation:Ie,tile:De,icon:Ve,unit:Fe,popups:Ue,editor:qe,default:He}),Xe={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"},Ge={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"},Be={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"},Ze={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"}},Ye={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"},Je={hour_shortcut:"t",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},We={success:"Succes!",no_selection:"Intet valg angivet",failed:"Service-kald fejlede"},Qe={description:{before_link:"Den visuelle editor understøtter kun kun en konfiguration med en kamera entitet lavet med ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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)"}},et={common:Xe,map_mode:Ge,validation:Be,tile:Ze,icon:Ye,unit:Je,popups:We,editor:Qe},tt=Object.freeze({__proto__:null,common:Xe,map_mode:Ge,validation:Be,tile:Ze,icon:Ye,unit:Je,popups:We,editor:Qe,default:et}),it={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"},at={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"},nt={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"},ot={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","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"}},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"},cleaning_time:{label:"Zeit der Reinigung"}},rt={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"},st={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},lt={success:"Erfolg!",no_selection:"Keine Auswahl vorgesehen",failed:"Der Dienst konnte nicht aufgerufen werden"},ct={description:{before_link:"Dieser visuelle Editor unterstützt nur eine einfache Konfiguration mit einer Kameraeinheit, die mit ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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)"}},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:"Έκδοση",invalid_configuration:"Μη αποδεκτές ρυθμίσεις {0}",description:"Μία κάρτα που σας επιτρέπει να ελέγξετε την σκούπα σας",old_configuration:"Ανιχνεύθυκαν παλιές ρυθμίσεις. Προσαρμόστε τις ρυθμίσεις σας στο πιο πρόσφατο μοντέλο ή δημιουργήστε μια νέα κάρτα από την αρχή.",old_configuration_migration_link:"Οδηγός μετατροπής παλιών ρυθμίσεων"},pt={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:"Διαδρομή"},_t={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:"Λάθος βαθμονόμηση, παρακαλώ ελέγξτε τις ρυθμίσεις σας"},vt={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:"Όχι"}}},gt={vacuum_start:"Έναρξη",vacuum_pause:"Παύση",vacuum_stop:"Διακοπή",vacuum_return_to_base:"Επιστροφή στη βάση",vacuum_clean_spot:"Καθαρισμός σημείου",vacuum_locate:"Εντοπισμός",vacuum_set_fan_speed:"Αλλαγή ταχύτητας ανεμιστήρα"},ht={hour_shortcut:"ω",meter_shortcut:"μ",meter_squared_shortcut:"τ.μ.",minute_shortcut:"λεπ"},ft={success:"Επιτυχία!",no_selection:"Δεν δόθηκε επιλογή",failed:"Αποτυχία κλήσης υπηρεσίας"},bt={description:{before_link:"Αυτό η οπτική διεπαφή επεξεργασίας υποστηρίζει μόνο βασικές ρυθμίσεις με μια οντότητα κάμερας που δημιουργήθηκε χρησιμοποιώντας ",link_text:"Xiaomi Cloud Map Extractor",after_link:". Για πιο εξελιγμένες ρυθμίσεις χρησιμοποιήστε τη μέθοδο επεξεργασίας αρχείου 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:"Αντιγραφή κλήσης υπηρεσίας"}},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:"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"},xt={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"},Et={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"},wt={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","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"}},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"}},zt={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"},Pt={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Mt={success:"Success!",no_selection:"No selection provided",failed:"Failed to call service"},Tt={description:{before_link:"This visual editor supports only a basic configuration with a camera entity created using ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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?"}},St={common:At,map_mode:xt,validation:Et,tile:wt,icon:zt,unit:Pt,popups:Mt,editor:Tt},Ct=Object.freeze({__proto__:null,common:At,map_mode:xt,validation:Et,tile:wt,icon:zt,unit:Pt,popups:Mt,editor:Tt,default:St}),Ot={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."},Nt={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"},Rt={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."},$t={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"},cleaning_time:{label:"Tiempo de limpieza"},mop_left:{label:"Mopa"}},jt={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"},Lt={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},It={success:"¡Listo!",no_selection:"No se ha proporcionado ninguna selección",failed:"No se pudo llamar al servicio"},Dt={description:{before_link:"Este editor visual sólo admite una configuración básica con una entidad de cámara creada utilizando ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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)"}},Vt={common:Ot,map_mode:Nt,validation:Rt,tile:$t,icon:jt,unit:Lt,popups:It,editor:Dt},Ft=Object.freeze({__proto__:null,common:Ot,map_mode:Nt,validation:Rt,tile:$t,icon:jt,unit:Lt,popups:It,editor:Dt,default:Vt}),Ut={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"},Ht={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"},Kt={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"}},Xt={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"},Gt={hour_shortcut:"t",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Bt={success:"Onnistui!",no_selection:"Valintoja ei annettu",failed:"Virhe kutsuessa palvelua"},Zt={description:{before_link:"Visuaalinen editori tukee vain peruskokoonpanoa, jossa kamerakokonaisuus on luotu käyttämällä ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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?"}},Yt={common:Ut,map_mode:qt,validation:Ht,tile:Kt,icon:Xt,unit:Gt,popups:Bt,editor:Zt},Jt=Object.freeze({__proto__:null,common:Ut,map_mode:qt,validation:Ht,tile:Kt,icon:Xt,unit:Gt,popups:Bt,editor:Zt,default:Yt}),Wt={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"},Qt={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"},ei={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"},ti={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"}},ii={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"},ai={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},ni={success:"Réussi !",no_selection:"Sélection non fournie",failed:"L'appel au service a échoué"},oi={description:{before_link:"Cet éditeur visuel ne permet qu'une configuration de base avec une entité caméra créée avec ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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)"}},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:"גירסה",invalid_configuration:"תצורה לא חוקית {0}",description:"כרטיס המאפשר לך לשלוט בשואב שלך",old_configuration:"זוהתה תצורה ישנה. יש להתאים את התצורה שלך לסכמה העדכנית ביותר או ליצור כרטיס חדש מההתחלה.",old_configuration_migration_link:"מדריך להגירה"},ci={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:"נתיב"},di={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:"כיול לא חוקי, אנא בדוק את התצורה שלך"},ui={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:"משטח ניגוב"}},mi={vacuum_start:"התחל",vacuum_pause:"השהה",vacuum_stop:"עצור",vacuum_return_to_base:"חוזר לתחנת עגינה",vacuum_clean_spot:"ניקוי נקודה",vacuum_locate:"איתור",vacuum_set_fan_speed:"שנה מהירות מאוורר"},pi={hour_shortcut:"ש",meter_shortcut:"מ",meter_squared_shortcut:"m²",minute_shortcut:"דק"},_i={success:"הצליח!",no_selection:"לא סופקה בחירה",failed:"התקשרות לשירות נכשלה"},vi={description:{before_link:"עורך חזותי זה תומך רק בתצורה בסיסית עם ישות מצלמה שנוצרה באמצעות ",link_text:"Xiaomi Cloud Map Extractor",after_link:". להגדרה מתקדמת יותר השתמש במצב 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להמשיך?"}},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:"Verzió",invalid_configuration:"Érvénytelen konfiguráció {0}",description:"Egy kártya, amely lehetővé teszi a vákuum szabályozását",old_configuration:"Régi konfiguráció észlelve. Állítsa be a konfigurációt a legújabb sémához, vagy hozzon létre egy új kártyát.",old_configuration_migration_link:"Migrációs útmutató"},bi={invalid:"Érvénytelen sablon!",vacuum_goto:"Pin & Go",vacuum_goto_predefined:"Pontok",vacuum_clean_segment:"Szobák",vacuum_clean_zone:"Zóna takarítás",vacuum_clean_zone_predefined:"Zónák listája",vacuum_follow_path:"Pálya"},yi={preset:{entity:{missing:"Hiányzó tulajdonság: entity"},preset_name:{missing:"Hiányzó tulajdonság: preset_name"},platform:{invalid:"Érvénytelen vákuumplatform: {0}"},map_source:{missing:"Hiányzó tulajdonság: map_source",none_provided:"Nincs kamera és kép sem biztosított",ambiguous:"Csak egy térképforrás engedélyezett"},calibration_source:{missing:"Hiányzó tulajdonság: calibration_source",ambiguous:"Csak egy kalibrációs forrás engedélyezett",none_provided:"Nincs megadva kalibrációs forrás",calibration_points:{invalid_number:"Pontosan 3 vagy 4 kalibrációs pont szükséges",missing_map:"Minden kalibrációs pontnak tartalmaznia kell a térkép koordinátáit",missing_vacuum:"Minden kalibrációs pontnak vákuumkoordinátákat kell tartalmaznia",missing_coordinate:"A térképi és vákuumkalibrációs pontoknak x és y koordinátát is tartalmazniuk kell"}},icons:{invalid:"Hiba a konfigurációban: icons",icon:{missing:"Az ikonlista minden bejegyzésének tartalmaznia kell az ikon tulajdonságot"}},tiles:{invalid:"Hiba a konfigurációban: tiles",entity:{missing_outdated_translation:"A csempelista minden bejegyzésének tartalmaznia kell entitást"},label:{missing:"A csempelista minden bejegyzésének tartalmaznia kell egy címkét"}},map_modes:{invalid:"Hiba a konfigurációban: map_modes",icon:{missing:"Hiányzik a térkép mód ikonja"},name:{missing:"A térképmód neve hiányzik"},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 id",invalid_format:"Érvénytelen szoba id: {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 x tulajdonsággal kell rendelkeznie"},y:{missing:"A címkének y tulajdonsággal kell rendelkeznie"},text:{missing:"A címkének szövegtulajdonsággal kell rendelkeznie"}},icon:{x:{missing:"Az ikonnak x tulajdonsággal kell rendelkeznie"},y:{missing:"Az ikonnak y tulajdonsággal kell rendelkeznie"},name:{missing:"Az ikonnak név tulajdonsággal kell rendelkeznie"}}},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áció, ellenőrizze a konfigurációt"},ki={status:{label:"Státusz"},battery_level:{label:"Akkumulátor"},fan_speed:{label:"Ventilátor üzemmód"},sensor_dirty_left:{label:"Szenzorok"},filter_left:{label:"Szűrő"},main_brush_left:{label:"Fő kefe"},side_brush_left:{label:"Oldalkefe"},cleaning_count:{label:"Takarítás számláló"},cleaned_area:{label:"Tisztított terület"},cleaning_time:{label:"Takarítási idő"}},Ai={vacuum_start:"Indítás",vacuum_pause:"Szünet",vacuum_stop:"Álljon meg",vacuum_return_to_base:"Vissza a bázisra",vacuum_clean_spot:"Clean spot",vacuum_locate:"Robot megkeresése",vacuum_set_fan_speed:"Ventilátor üzemmódjának módosítása"},xi={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Ei={success:"Siker!",no_selection:"Nincs kiválasztva",failed:"Nem sikerült meghívni a szolgáltatást"},wi={description:{before_link:"Ez a vizuális szerkesztő csak az alapkonfigurációt támogatja a segítségével létrehozott kameraentitással ",link_text:"Xiaomi Cloud Map Extractor",after_link:". A fejlettebb beállításhoz használja a YAML módot."},label:{name:"Cím (nem kötelező)",entity:"Vákuum entitás (kötelező)",camera:"Kamera entitás (kötelező)",vacuum_platform:"Vákuumos platform (szükséges)",map_locked:"Térkép zárolva (opcionális)",two_finger_pan:"Kétujjas pásztázás (opcionális)"}},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}),Mi={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"},Ti={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"},Si={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"},Ci={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"}},Oi={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"},Ni={hour_shortcut:"k",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"mín"},Ri={success:"Virkaði!",no_selection:"Ekkert val",failed:"Villa við þjónustukall"},$i={description:{before_link:'Sjónrænn ritill styður aðeins grunn stillingar með "camera" einingunni sem notar ',link_text:"Xiaomi Cloud Map Extractor",after_link:". 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)"}},ji={common:Mi,map_mode:Ti,validation:Si,tile:Ci,icon:Oi,unit:Ni,popups:Ri,editor:$i},Li=Object.freeze({__proto__:null,common:Mi,map_mode:Ti,validation:Si,tile:Ci,icon:Oi,unit:Ni,popups:Ri,editor:$i,default:ji}),Ii={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"},Di={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"},Vi={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"},Fi={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"}},Ui={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"},Hi={success:"Confermato!",no_selection:"Nessuna Selezione",failed:"Chiamata al servizio fallita"},Ki={description:{before_link:"Questo editor visivo supporta solo una configurazione di base con un'entità telecamera creata utilizzando ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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?"}},Xi={common:Ii,map_mode:Di,validation:Vi,tile:Fi,icon:Ui,unit:qi,popups:Hi,editor:Ki},Gi=Object.freeze({__proto__:null,common:Ii,map_mode:Di,validation:Vi,tile:Fi,icon:Ui,unit:qi,popups:Hi,editor:Ki,default:Xi}),Bi={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"},Zi={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"},Yi={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"},Ji={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"}},Wi={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"},Qi={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},ea={success:"Suksess!",no_selection:"Ingen valg er gitt",failed:"Kunne ikke kalle tjenesten"},ta={description:{before_link:"Denne visuelle editoren støtter bare en grunnleggende konfigurasjon med en kameraenhet opprettet ved hjelp av ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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)"}},ia={common:Bi,map_mode:Zi,validation:Yi,tile:Ji,icon:Wi,unit:Qi,popups:ea,editor:ta},aa=Object.freeze({__proto__:null,common:Bi,map_mode:Zi,validation:Yi,tile:Ji,icon:Wi,unit:Qi,popups:ea,editor:ta,default:ia}),na={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"},oa={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"},ra={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"},sa={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"}},la={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"},ca={hour_shortcut:"u",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},da={success:"Succes!",no_selection:"Geen selectie opgegeven",failed:"Fout bij aanroepen service"},ua={description:{before_link:"Deze grafische editor ondersteunt slechts een basis-configuratie met een camera-entiteit die gemaakt is met ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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?"}},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:"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"},va={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"},ga={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ę"},ha={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"}},fa={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"},ba={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},ya={success:"Usługa wywołana!",no_selection:"Nie wybrano zaznaczenia",failed:"Błąd wywołania usługi"},ka={description:{before_link:"Ten edytor interfejsu wspiera jedynie podstawową konfigurację dla kamery utworzonej przy użyciu ",link_text:"Xiaomi Cloud Map Extractora",after_link:". W celu bardziej zaawansowanej konfiguracji użyj trybu 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ć?"}},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:"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"},wa={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"},za={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"},Pa={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"}},Ma={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"},Ta={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Sa={success:"Sucesso!",no_selection:"NoNenhuma seleção fornecida",failed:"Falha ao chamar o serviço"},Ca={description:{before_link:"O editor visual suporta apenas uma configuração básica usando uma entidade, usando ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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:"MMapa trancado (opcional)",two_finger_pan:"Deslocamento com 2 dedos (opcional)",platforms_documentation:"Documentação da plataforma escolhida ({0})",selection:"Delecçã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?"}},Oa={common:Ea,map_mode:wa,validation:za,tile:Pa,icon:Ma,unit:Ta,popups:Sa,editor:Ca},Na=Object.freeze({__proto__:null,common:Ea,map_mode:wa,validation:za,tile:Pa,icon:Ma,unit:Ta,popups:Sa,editor:Ca,default:Oa}),Ra={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"},$a={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"},ja={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"},La={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"}},Ia={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"},Da={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Va={success:"Successo!",no_selection:"Nenhuma seleção fornecida",failed:"Falha em chamar o serviço"},Fa={description:{before_link:"Este editor suporta apenas uma configuração básica usando uma entidade de câmera",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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)"}},Ua={common:Ra,map_mode:$a,validation:ja,tile:La,icon:Ia,unit:Da,popups:Va,editor:Fa},qa=Object.freeze({__proto__:null,common:Ra,map_mode:$a,validation:ja,tile:La,icon:Ia,unit:Da,popups:Va,editor:Fa,default:Ua}),Ha={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"},Ka={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"},Xa={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"},Ga={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"}}},Ba={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"},Za={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Ya={success:"Succes!",no_selection:"Nu este oferită nicio selecție",failed:"Nu s-a putut apela serviciul"},Ja={description:{before_link:"Acest editor vizual acceptă doar o configurație de bază cu o entitate de cameră creată folosind ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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"}},Wa={common:Ha,map_mode:Ka,validation:Xa,tile:Ga,icon:Ba,unit:Za,popups:Ya,editor:Ja},Qa=Object.freeze({__proto__:null,common:Ha,map_mode:Ka,validation:Xa,tile:Ga,icon:Ba,unit:Za,popups:Ya,editor:Ja,default:Wa}),en={version:"Версия",invalid_configuration:"Неверная конфигурация {0}",description:"Карточка, позволяющая управлять вашим пылесосом",old_configuration:"Обнаружена устаревшая конфигурация. Приведите ваш конфиг в соответствие с новой версией, или создайте новую карточку с нуля.",old_configuration_migration_link:"Руководство по переходу с предыдущих версий."},tn={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:"Путь"},an={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:"Некорректная калибровка, проверьте вашу конфигурацию"},nn={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:"Ресурс тряпки"}},on={vacuum_start:"Старт",vacuum_pause:"Пауза",vacuum_stop:"Стоп",vacuum_return_to_base:"Вернуть к базе",vacuum_clean_spot:"Убрать точку",vacuum_locate:"Обнаружить",vacuum_set_fan_speed:"Изменить мощность всасывания"},rn={hour_shortcut:"ч",meter_shortcut:"м",meter_squared_shortcut:"м²",minute_shortcut:"мин"},sn={success:"Успех!",no_selection:"Ничего не выбрано",failed:"Не удалось вызвать службу"},ln={description:{before_link:"Данный редактор поддерживает только базовую конфигурацию с камерой, созданной посредством",link_text:"Xiaomi Cloud Map Extractor",after_link:". Для более тонкой настройки, используйте YAML-мод."},label:{name:"Заголовок (опционально)",entity:"Сущность пылесоса (обязательно)",camera:"Сущность камеры (обязательно)",vacuum_platform:"Платформа пылесоса (обязательно)",map_locked:"Блокировка карты (опционально)",two_finger_pan:"Перемещение жестом двумя пальцами (опционально)"}},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:"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"},mn={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"},pn={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"},_n={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"}},vn={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"},gn={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},hn={success:"Volanie služby bolo úspešné",no_selection:"Nebol vykonaný žiadny výber",failed:"Volanie služby zlyhalo"},fn={description:{before_link:"Tento editor podporuje iba základnú konfiguráciu s použitím entity kamera vytvorené pomocou ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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"}},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:"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"},An={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"},xn={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"},En={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"}},wn={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"},zn={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Pn={success:"Lyckades!",no_selection:"Inget urval tillhandahålls",failed:"Mysslyckades kalla på tjänsten"},Mn={description:{before_link:"Denna visuella redigerare stöder endast en grundläggande konfiguration med en kameraenhet skapad med hjälp av ",link_text:"Xiaomi Cloud Map Extractor",after_link:". 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)"}},Tn={common:kn,map_mode:An,validation:xn,tile:En,icon:wn,unit:zn,popups:Pn,editor:Mn},Sn=Object.freeze({__proto__:null,common:kn,map_mode:An,validation:xn,tile:En,icon:wn,unit:zn,popups:Pn,editor:Mn,default:Tn}),Cn={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"},On={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"},Nn={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"},Rn={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"}},$n={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"},jn={hour_shortcut:"S",meter_shortcut:"D",meter_squared_shortcut:"m²",minute_shortcut:"Sn"},Ln={success:"Başarı!",no_selection:"Seçim sağlanmadı",failed:"Servis aranamadı"},In={description:{before_link:"Bu görsel düzenleyici, kullanılarak oluşturulan bir kamera varlığı ile yalnızca temel bir yapılandırmayı destekler.",link_text:"Xiaomi Bulut Haritası Çıkarıcı",after_link:". 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ı)"}},Dn={common:Cn,map_mode:On,validation:Nn,tile:Rn,icon:$n,unit:jn,popups:Ln,editor:In},Vn=Object.freeze({__proto__:null,common:Cn,map_mode:On,validation:Nn,tile:Rn,icon:$n,unit:jn,popups:Ln,editor:In,default:Dn}),Fn={version:"Version",invalid_configuration:"Недійсна конфігурація {0}",description:"Картка, яка дає змогу контролювати пилосос",old_configuration:"Виявлено стару конфігурацію. Налаштуйте конфігурацію до останньої схеми або створіть нову картку з початку.",old_configuration_migration_link:"Посібник з міграції"},Un={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_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:"Відсутній ідентифікатор кімнати",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:"Неправильне калібрування, перевірте конфігурацію"},Hn={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:"Швабра"}},Kn={vacuum_start:"Старт",vacuum_pause:"Пауза",vacuum_stop:"Стоп",vacuum_return_to_base:"Повернення на базу",vacuum_clean_spot:"Прибрати місце",vacuum_locate:"Пошук",vacuum_set_fan_speed:"Зміна потужності"},Xn={hour_shortcut:"h",meter_shortcut:"m",meter_squared_shortcut:"m²",minute_shortcut:"min"},Gn={success:"Успіх!",no_selection:"Виділення не зроблено",failed:"Не вдалося викликати службу"},Bn={description:{before_link:"Цей редактор інтерфейсу підтримує лише базову конфігурацію для камери, створеної за допомогою ",link_text:"Xiaomi Cloud Map Extractor",after_link:". Для більш розширеного налаштування використовуйте режим YAML."},label:{name:"Назва (опція)",entity:"Сутність пилососу (необхідно)",camera:"Сутність камери (необхідно)",vacuum_platform:"Платформа інтеграції пилососу (необхідно)",map_locked:"Блокування мапи (опція)",two_finger_pan:"Переміщеня мапи двома пальцями (опція)"}},Zn={common:Fn,map_mode:Un,validation:qn,tile:Hn,icon:Kn,unit:Xn,popups:Gn,editor:Bn},Yn=Object.freeze({__proto__:null,common:Fn,map_mode:Un,validation:qn,tile:Hn,icon:Kn,unit:Xn,popups:Gn,editor:Bn,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_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:"校准无效,请检查配置"},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:"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:"拖布剩余"}},to={vacuum_start:"开始",vacuum_pause:"暂停",vacuum_stop:"结束",vacuum_return_to_base:"回充",vacuum_clean_spot:"局部清扫",vacuum_locate:"定位",vacuum_set_fan_speed:"更改吸力"},io={hour_shortcut:"小时",meter_shortcut:"米",meter_squared_shortcut:"平米",minute_shortcut:"分钟"},ao={success:"指令发送成功!",no_selection:"未提供选择",failed:"调用服务失败"},no={description:{before_link:"该可视化编辑器仅支持一些基本配置,且必须使用以下集成创建的摄像机实体:",link_text:"Xiaomi Cloud Map Extractor",after_link:"。想要使用高级设置请使用YAML模式"},label:{name:"标题(可选)",entity:"扫地机实体(必填)",camera:"摄像机实体(必填)",vacuum_platform:"扫地机平台(必填)",map_locked:"地图锁定(可选)",two_finger_pan:"双指缩放(可选)"}},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:"錯誤的 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(校準)失敗,請檢查設定"},uo={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:"抹布剩餘"}},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:"m",meter_squared_shortcut:"m²",minute_shortcut:"分鐘"},_o={success:"Success!",no_selection:"未選擇目標",failed:"執行服務失敗"},vo={description:{before_link:"此面板僅支援基本的設定,並且只能使用以下的附加元件新增攝影機實體: ",link_text:"Xiaomi Cloud Map Extractor",after_link:"。如需更豐富的進階設定,請使用 YAML 編輯"},label:{name:"標題(選填)",entity:"掃地機器人實體(必填)",camera:"攝影機實體(必填)",vacuum_platform:"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});function fo(e){return!!e&&(e instanceof Date&&!isNaN(e.valueOf()))}const bo=(e,t)=>yo(t).format(e),yo=e=>new Intl.DateTimeFormat(e.language,{year:"numeric",month:"long",day:"numeric"}),ko=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},Ao=(e,t)=>xo(t).format(e),xo=e=>new Intl.DateTimeFormat("en"!==e.language||ko(e)?e.language:"en-u-hc-h23",{year:"numeric",month:"long",day:"numeric",hour:ko(e)?"numeric":"2-digit",minute:"2-digit",hour12:ko(e)}),Eo=(e,t)=>wo(t).format(e),wo=e=>new Intl.DateTimeFormat("en"!==e.language||ko(e)?e.language:"en-u-hc-h23",{year:"numeric",month:"long",day:"numeric",hour:ko(e)?"numeric":"2-digit",minute:"2-digit",second:"2-digit",hour12:ko(e)});var zo,Po,Mo;!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"}(zo||(zo={})),function(e){e.language="language",e.system="system",e.am_pm="12",e.twenty_four="24"}(Po||(Po={})),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"}(Mo||(Mo={}));const To=(e,t,i)=>{const a=t?(e=>{switch(e.number_format){case zo.comma_decimal:return["en-US","en"];case zo.decimal_comma:return["de","es","it"];case zo.space_comma:return["fr","sv","cs"];case zo.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)!==zo.none&&!Number.isNaN(Number(e))&&Intl)try{return new Intl.NumberFormat(a,Co(e,i)).format(Number(e))}catch(t){return console.error(t),new Intl.NumberFormat(void 0,Co(e,i)).format(Number(e))}return!Number.isNaN(Number(e))&&""!==e&&(null==t?void 0:t.number_format)===zo.none&&Intl?new Intl.NumberFormat("en-US",Co(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}`:""}`},So=(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},Co=(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},Oo="^\\d{4}-(0[1-9]|1[0-2])-([12]\\d|0[1-9]|3[01])",No=new RegExp(Oo+"$"),Ro=new RegExp(Oo),$o=(e,t=!1)=>t?Ro.test(e):No.test(e),jo=/^\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)?)?)$/,Lo=e=>jo.test(e),Io=e=>e.substr(0,e.indexOf(".")),Do=(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 To(r,i);if("string"==typeof r&&$o(r,!0)){if(Lo(r)){const e=new Date(r);if(fo(e))return Eo(e,i)}const e=new Date(r);if(fo(e))return bo(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=>Do(e,t,i,a,n,o))).join(", ");const s=t.entity_id,l=Io(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},Vo=(e,t,i,a)=>{const n=t.entity_id,o=t.attributes.device_class,r=Io(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 Fo={ms:1,s:1e3,min:6e4,h:36e5,d:864e5},Uo=(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)*Fo[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 Ho=(e,t)=>Ko(t).format(e),Ko=e=>new Intl.DateTimeFormat("en"!==e.language||ko(e)?e.language:"en-u-hc-h23",{hour:"numeric",minute:"2-digit",hour12:ko(e)}),Xo=e=>{switch(e.language){case"cz":case"de":case"fi":case"fr":case"sk":case"sv":return" ";default:return""}},Go=(e,t,i,a,n)=>{const o=null==a?void 0:a[t.entity_id];return Bo(e,i,o,t.entity_id,t.attributes,void 0!==n?n:t.state)},Bo=(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&&Fo[n.unit_of_measurement])try{return Uo(o,n.unit_of_measurement)}catch(e){}if("monetary"===n.device_class)try{return To(o,t,Object.assign({style:"currency",currency:n.unit_of_measurement,minimumFractionDigits:2},So({state:o,attributes:n},i)))}catch(e){}const e=n.unit_of_measurement?"%"===n.unit_of_measurement?Xo(t)+"%":` ${n.unit_of_measurement}`:"";return`${To(o,t,So({state:o,attributes:n},i))}${e}`}const r=Io(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),Ao(e,t)):n.has_date?(e=new Date(n.year,n.month-1,n.day),bo(e,t)):n.has_time?(e=new Date,e.setHours(n.hour,n.minute),Ho(e,t)):o}try{const e=o.split(" ");if(2===e.length)return Ao(new Date(e.join("T")),t);if(1===e.length){if(o.includes("-"))return bo(new Date(`${o}T00:00`),t);if(o.includes(":")){const e=new Date;return Ho(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 To(o,t,So({state:o,attributes:n},i));if(["button","input_button","scene","stt","tts"].includes(r)||"sensor"===r&&"timestamp"===n.device_class)try{return Ao(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},Zo={ca:$e,cs:Ke,da:tt,de:ut,el:kt,en:Ct,es:Ft,fi:Jt,fr:si,he:hi,hu:Pi,is:Li,it:Gi,"nb-NO":aa,nl:pa,pl:xa,pt:Na,"pt-BR":qa,ro:Qa,ru:dn,sk:yn,sv:Sn,tr:Vn,uk:Yn,zh:ro,"zh-Hant":ho};function Yo(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=Jo(e,null!=a?a:o)}catch(t){r=Jo(e,o)}return void 0===r&&(r=Jo(e,o)),r=null!=r?r:n,""!==t&&""!==i&&(r=r.replace(t,i)),r}function Jo(e,t){try{return e.split(".").reduce(((e,t)=>e[t]),Zo[t])}catch(e){return}}function Wo(e,t,i){return"string"==typeof e?Yo(e,"","",t,i):Yo(...e,t,i)}function Qo(e,t,i,a){var n,o;return Wo(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 er(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 To(a,e.locale);if("string"==typeof a&&$o(a,!0)){if(Lo(a)){const t=new Date(a);if(fo(t))return Eo(t,e.locale)}const t=new Date(a);if(fo(t))return bo(t,e.locale)}return Array.isArray(a)?a.join(", "):Do(e.localize,t,e.locale,e.entities,i)}(e,i,t.attribute):e.localize("state.default.unknown"):Go(e.localize,i,e.locale,e.entities)}var tr,ir,ar={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",entity_id:"[[entity_id]]",params:[{segments:"[[selection]]",repeat:"[[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:"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]]"}}}}},nr={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"}]},or={map_modes:ar,tiles:nr},rr=Object.freeze({__proto__:null,map_modes:ar,tiles:nr,default:or}),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.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]]"}}}}},lr={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"}]},cr={map_modes:sr,tiles:lr},dr=Object.freeze({__proto__:null,map_modes:sr,tiles:lr,default:cr}),ur={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]]"}}}}},mr={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"}]},pr={map_modes:ur,tiles:mr},_r=Object.freeze({__proto__:null,map_modes:ur,tiles:mr,default:pr}),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",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]]" }'}}}}},gr={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"}'}}}]},hr={map_modes:vr,tiles:gr},fr=Object.freeze({__proto__:null,map_modes:vr,tiles:gr,default:hr}),br={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]]"}}}}},yr={from_attributes:[],from_sensors:[]},kr={map_modes:br,tiles:yr},Ar=Object.freeze({__proto__:null,map_modes:br,tiles:yr,default:kr}),xr={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"}}}},Er={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"]}]},wr={map_modes:xr,tiles:Er},zr=Object.freeze({__proto__:null,map_modes:xr,tiles:Er,default:wr}),Pr={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]]"}}}}},Mr={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"}]},Tr={map_modes:Pr,tiles:Mr},Sr=Object.freeze({__proto__:null,map_modes:Pr,tiles:Mr,default:Tr}),Cr={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]}} } }, "iterations": [[repeats]]}{%if not loop.last%},{%endif%}{%endfor%}]}'}}},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]]/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]}} } }, "iterations": [[repeats]]}{%if not loop.last%},{%endif%}{%endfor%}]}'}}},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]]" } }'}}}}},Or={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}]},Nr={map_modes:Cr,tiles:Or},Rr=Object.freeze({__proto__:null,map_modes:Cr,tiles:Or,default:Nr}),$r={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]]"}}}}},jr={from_attributes:[{tile_id:"cleaned_area",attribute:"clean_area",label:"tile.cleaned_area.label",icon:"mdi:texture-box",unit:"unit.meter_squared_shortcut"}]},Lr=[{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}}],Ir={map_modes:$r,tiles:jr,calibration_points:Lr},Dr=Object.freeze({__proto__:null,map_modes:$r,tiles:jr,calibration_points:Lr,default:Ir}),Vr={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]]'}}}}}},Fr={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"]}]},Ur=[{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:Vr,tiles:Fr,calibration_points:Ur},Hr=Object.freeze({__proto__:null,map_modes:Vr,tiles:Fr,calibration_points:Ur,default:qr}),Kr={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]]"}}}}}},Xr={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"}]},Gr=[{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]]"}}}],Br=[{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}}],Zr={map_modes:Kr,tiles:Xr,icons:Gr,calibration_points:Br},Yr=Object.freeze({__proto__:null,map_modes:Kr,tiles:Xr,icons:Gr,calibration_points:Br,default:Zr}),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:"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]]"}}}}},Wr={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"}]},Qr=[{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]]"}}}],es={map_modes:Jr,tiles:Wr,icons:Qr},ts=Object.freeze({__proto__:null,map_modes:Jr,tiles:Wr,icons:Qr,default:es}),is={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:"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]]"}}}}},as={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}]},ns=[{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]]"}}}],os={map_modes:is,tiles:as,icons:ns},rs=Object.freeze({__proto__:null,map_modes:is,tiles:as,icons:ns,default:os}),ss={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]]"}}}}}},ls={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"}]},cs=[{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}}],ds={map_modes:ss,tiles:ls,calibration_points:cs},us=Object.freeze({__proto__:null,map_modes:ss,tiles:ls,calibration_points:cs,default:ds}),ms={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]]"}}}}},ps=[{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"}]}],_s={from_attributes:[{tile_id:"cleaned_area",attribute:"clean_area",label:"tile.cleaned_area.label",icon:"mdi:texture-box",unit:"unit.meter_squared_shortcut"}]},vs=[{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}}],gs={mode:"eco"},hs={map_modes:ms,icons:ps,tiles:_s,calibration_points:vs,internal_variables:gs},fs=Object.freeze({__proto__:null,map_modes:ms,icons:ps,tiles:_s,calibration_points:vs,internal_variables:gs,default:hs}),bs={default_templates:["vacuum_clean_zone","vacuum_goto","vacuum_follow_path"],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:1,repeats_type:"NONE",service_call_schema:{service:"persistent_notification.create",service_data:{zones:"[[selection]]"}}},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:"persistent_notification.create",service_data:{x_coord:"[[point_x]]",y_coord:"[[point_y]]",point:"[[selection]]"}}},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:"persistent_notification.create",service_data:{path:"[[selection]]"}}}}},ys={map_modes:bs},ks=Object.freeze({__proto__:null,map_modes:bs,default:ys}),As={default_templates:["vacuum_clean_zone","vacuum_goto","vacuum_follow_path"],templates:{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:"NONE",service_call_schema:{service:"persistent_notification.create",service_data:{zones:"[[selection]]"}}},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:"persistent_notification.create",service_data:{x_coord:"[[point_x]]",y_coord:"[[point_y]]",point:"[[selection]]"}}},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:"persistent_notification.create",service_data:{path:"[[selection]]"}}}}},xs={map_modes:As},Es=Object.freeze({__proto__:null,map_modes:As,default:xs});!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"}(tr||(tr={}));class ws{static getPlatformsWithDefaultCalibration(){return[ws.BENJAMIN_PAAP_MYNEATO_PLATFORM,ws.DEEBOTUNIVERSE_DEEBOT_4_HOME_ASSISTANT_PLATFORM,ws.NEATO_PLATFORM,ws.ROMEDTINO_SIMPLE_WAZE_PLATFORM,ws.ROOMBA_PLATFORM]}static getPlatforms(){return Array.from(ws.TEMPLATES.keys())}static getPlatformName(e){return null!=e?e:ws.XIAOMI_MIIO_PLATFORM}static getPlatformsDocumentationUrl(e){var t,i;const a=null!==(i=null!==(t=ws.TEMPLATE_DOCUMENTATIONS_URLS.get(e))&&void 0!==t?t:ws.TEMPLATE_DOCUMENTATIONS_URLS.get(ws.XIAOMI_MIIO_PLATFORM))&&void 0!==i?i:"";return ws.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===tr[tr.ROOM])return e}}static getCalibration(e){return this.getPlatformTemplate(ws.getPlatformName(e)).calibration_points}static getVariables(e){return this.getPlatformTemplate(ws.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:{}}}}ws.XIAOMI_MIIO_PLATFORM="default",ws.KRZYSZTOFHAJDAMOWICZ_MIIO2_PLATFORM="KrzysztofHajdamowicz/miio2",ws.MAROTOWEB_VIOMISE_PLATFORM="marotoweb/viomise",ws.RAND256_VALETUDO_RE_PLATFORM="rand256/ValetudoRE",ws.SEND_COMMAND_PLATFORM="send_command",ws.ALONE_XIAOMI_MIOT_PLATFORM="al-one/hass-xiaomi-miot",ws.TYKAROL_VIOMI_VACUUM_V8_PLATFORM="tykarol/viomi-vacuum-v8",ws.HYPFER_VALETUDO_PLATFORM="Hypfer/Valetudo",ws.NEATO_PLATFORM="Neato",ws.ROOMBA_PLATFORM="Roomba",ws.TASSHACK_DREAME_VACUUM_PLATFORM="Tasshack/dreame-vacuum",ws.DEEBOTUNIVERSE_DEEBOT_4_HOME_ASSISTANT_PLATFORM="DeebotUniverse/Deebot-4-Home-Assistant",ws.HUMBERTOGONTIJO_ROBOROCK_PLATFORM="humbertogontijo/homeassistant-roborock",ws.ROMEDTINO_SIMPLE_WAZE_PLATFORM="romedtino/simple-wyze-vac",ws.BENJAMIN_PAAP_MYNEATO_PLATFORM="BenjaminPaap/home-assistant-myneato",ws.SETUP_INTEGER_PLATFORM="Setup integer",ws.SETUP_DECIMAL_PLATFORM="Setup decimal",ws.DOCUMENTATION_URL_FORMAT="https://github.com/PiotrMachowski/lovelace-xiaomi-vacuum-map-card/tree/master/docs/templates/{0}.md",ws.TEMPLATES=new Map([[ws.XIAOMI_MIIO_PLATFORM,rr],[ws.KRZYSZTOFHAJDAMOWICZ_MIIO2_PLATFORM,dr],[ws.MAROTOWEB_VIOMISE_PLATFORM,_r],[ws.TYKAROL_VIOMI_VACUUM_V8_PLATFORM,Sr],[ws.HYPFER_VALETUDO_PLATFORM,Rr],[ws.RAND256_VALETUDO_RE_PLATFORM,fr],[ws.TASSHACK_DREAME_VACUUM_PLATFORM,ts],[ws.HUMBERTOGONTIJO_ROBOROCK_PLATFORM,rs],[ws.SEND_COMMAND_PLATFORM,Ar],[ws.ALONE_XIAOMI_MIOT_PLATFORM,zr],[ws.NEATO_PLATFORM,Dr],[ws.ROOMBA_PLATFORM,Hr],[ws.DEEBOTUNIVERSE_DEEBOT_4_HOME_ASSISTANT_PLATFORM,Yr],[ws.ROMEDTINO_SIMPLE_WAZE_PLATFORM,us],[ws.BENJAMIN_PAAP_MYNEATO_PLATFORM,fs],[ws.SETUP_INTEGER_PLATFORM,Es],[ws.SETUP_DECIMAL_PLATFORM,ks]]),ws.TEMPLATE_DOCUMENTATIONS_URLS=new Map([[ws.XIAOMI_MIIO_PLATFORM,"xiaomiMiio"],[ws.KRZYSZTOFHAJDAMOWICZ_MIIO2_PLATFORM,"krzysztofHajdamowiczMiio2"],[ws.MAROTOWEB_VIOMISE_PLATFORM,"marotowebViomise"],[ws.TYKAROL_VIOMI_VACUUM_V8_PLATFORM,"tykarolViomiVacuumV8"],[ws.HYPFER_VALETUDO_PLATFORM,"hypferValetudo"],[ws.RAND256_VALETUDO_RE_PLATFORM,"rand256ValetudoRe"],[ws.TASSHACK_DREAME_VACUUM_PLATFORM,"tasshackDreameVacuum"],[ws.HUMBERTOGONTIJO_ROBOROCK_PLATFORM,"humbertogontijoHomeassistantRoborock"],[ws.SEND_COMMAND_PLATFORM,"sendCommand"],[ws.ALONE_XIAOMI_MIOT_PLATFORM,"alOneHassXiaomiMiot"],[ws.NEATO_PLATFORM,"neato"],[ws.ROOMBA_PLATFORM,"roomba"],[ws.DEEBOTUNIVERSE_DEEBOT_4_HOME_ASSISTANT_PLATFORM,"DeebotUniverseDeebot4homeAssistant"],[ws.ROMEDTINO_SIMPLE_WAZE_PLATFORM,"romedtinoSimpleWyze"],[ws.BENJAMIN_PAAP_MYNEATO_PLATFORM,"BenjaminPaapMyNeato"],[ws.SETUP_INTEGER_PLATFORM,"setup"],[ws.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"}(ir||(ir={}));const zs="v2.2.4",Ps="xiaomi-vacuum-map-card",Ms="xiaomi-vacuum-map-card-editor",Ts="action-handler-xiaomi-vacuum-map-card",Ss="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=",Cs="map-card-selection-changed",Os="map-card-autogenerated-config-get",Ns="map-card-autogenerated-config",Rs="map-card-room-config-get",$s="map-card-room-config",js="map-card-service-call-get",Ls="map-card-service-call",Is="ll-custom",Ds="xiaomi_vacuum_map_card",Vs={run_immediately:!0,selection_type:tr[tr.ROOM],repeats_type:ir[ir.NONE]};var Fs,Us,qs,Hs;!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"}(Fs||(Fs={})),function(e){e.ENTITY_ID="entity_id",e.VACUUM_ENTITY_ID="vacuum_entity_id",e.ATTRIBUTE="attribute"}(Us||(Us={}));class Ks{constructor(e,t,i,a){this.domain=e,this.service=t,this.serviceData=i,this.target=a}}class Xs{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=Xs.getDefaultVariables(e,t,i);let o,r;this.serviceData&&(o=cl(this.serviceData,n,a)),this.target&&(r=cl(this.target,n,a));const s=this.service.split(".");return new Ks(s[0],s[1],o,r)}static getDefaultVariables(e,t,i){const a={};return a[Fs.ENTITY_ID]=e,a[Fs.SELECTION]=t,a[Fs.SELECTION_SIZE]=t.length,a[Fs.SELECTION_UNWRAPPED]=JSON.stringify(t).replaceAll("[","").replaceAll("]","").replaceAll('"',""),a[Fs.REPEATS]=i,a[Fs.POINT_X]=this.isPoint(t)?t[0]:"",a[Fs.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]]"}(qs||(qs={}));class Gs{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:Wo("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?tr[t.selection_type]:tr.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?ir[t.repeats_type]:ir.NONE,this.maxRepeats=null!==(c=t.max_repeats)&&void 0!==c?c:1,this.serviceCallSchema=new Xs(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),Gs.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;sl(e,(e=>e.endsWith(qs.JSONIFY_JINJA)?JSON.parse(e.replace(qs.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:tr[this.selectionType],id_type:this.idType,max_selections:this.maxSelections,repeats_type:ir[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||!ws.isValidModeTemplate(e,t.template))return;const a=ws.getModeTemplate(e,t.template);!t.name&&a.name&&(this.name=Wo(a.name,i)),!t.icon&&a.icon&&(this.icon=a.icon),!t.selection_type&&a.selection_type&&(this.selectionType=tr[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=ir[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 Xs(a.service_call_schema))}_applyData(e,t,i,a){return this.serviceCallSchema.apply(e,t,i,Object.assign(Object.assign({},this.variables),a))}}Gs.PREDEFINED_SELECTION_TYPES=[tr.PREDEFINED_RECTANGLE,tr.ROOM,tr.PREDEFINED_POINT];class Bs{constructor(e,t){this.x=e,this.y=t}}function Zs(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()}function Ys(e,t){const i=e.indexOf(t,0);return i>-1&&e.splice(i,1),i}function Js(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 Gs(ws.getPlatformName(e.vacuum_platform),i,t))).forEach((e=>function(e){const t=new Set;switch(e.selectionType){case tr.PREDEFINED_RECTANGLE:e.predefinedSelections.map((e=>e)).filter((e=>"string"==typeof e.zones)).forEach((e=>t.add(e.zones.split(".attributes.")[0])));break;case tr.PREDEFINED_POINT:e.predefinedSelections.map((e=>e)).filter((e=>"string"==typeof e.position)).forEach((e=>t.add(e.position.split(".attributes.")[0])))}return t}(e).forEach((e=>d.add(e))))),d}function Ws(e){var t;const i=new Set;return[e,...null!==(t=e.additional_presets)&&void 0!==t?t:[]].flatMap((t=>[...Js(t,e.language)])).forEach((e=>i.add(e))),[...i]}function Qs(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 el(e,t){return e?t():null}function tl(e,t,i){return i?()=>il(e,t,i):i=>{var a,n;return il(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 il(e,t,i){var a;if(e.hass&&t&&i){const n=e._getCurrentPreset(),o=e._getCurrentMode();let r={};r[Us.VACUUM_ENTITY_ID]=n.entity,t.hasOwnProperty("attribute")&&(r[Us.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=cl(t,Xs.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 al(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 Bs(a,n)}async function nl(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 ol(e){await new Promise((t=>setTimeout((()=>t()),e)))}function rl(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 sl(e,t){for(const[i,a]of Object.entries(e))"object"==typeof a?sl(a,t):"string"==typeof a&&(e[i]=t(a))}function ll(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(qs.JSONIFY))return JSON.parse(a.replace(qs.JSONIFY,""));return a}(e,a,n)}function cl(e,...t){const i=JSON.parse(JSON.stringify(e));let a={};for(const e of t)a=Object.assign(Object.assign({},e),a);return sl(i,(e=>ll(e,a))),i}class dl{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)",ol(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 ul=Hs=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(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(Os))}static _generateRoomsConfig(){window.dispatchEvent(new Event(Rs))}setConfig(e){this._config=e,this.loadCardHelpers()}connectedCallback(){super.connectedCallback(),window.addEventListener(Cs,this._handleNewSelection),window.addEventListener(Ns,this._handleAutogeneratedConfig),window.addEventListener($s,this._handleRoomConfig),window.addEventListener(Ls,this._handleServiceCall)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener(Cs,this._handleNewSelection),window.removeEventListener(Ns,this._handleAutogeneratedConfig),window.removeEventListener($s,this._handleRoomConfig),window.removeEventListener(Ls,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"===e.substr(0,e.indexOf(".")))),s=o.filter((e=>"vacuum"===e.substr(0,e.indexOf(".")))),l=ws.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===ws.getRoomsTemplate(this._vacuum_platform);return D`
<div class="card-config">
<div class="description">
${this._localize("editor.description.before_link")}<a
target="_blank"
href="https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor"
>${this._localize("editor.description.link_text")}</a
>${this._localize("editor.description.after_link")}
</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="${ws.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:ws.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="${()=>Hs._generateRoomsConfig()}"
.disabled=${c}>
${this._localize("editor.label.generate_rooms_config")}
</mwc-button>
<mwc-button @click="${()=>Hs._copyServiceCall()}">
${this._localize("editor.label.copy_service_call")}
</mwc-button>
</div>
<div class="version">${this._localize("common.version")} ${zs}</div>
${dl.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=ws.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(...ws.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;rl(null!=t?t:""),this._showToast("editor.label.copied","mdi:content-copy",!0)}_copySelection(){var e;rl(null!==(e=this._lastSelection)&&void 0!==e?e:[]),this._showToast("editor.label.copied","mdi:content-copy",!0)}_showToast(e,t,i,a=""){dl.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,ws.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},ws.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 Qo(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%;
}
${dl.styles}
`}};var ml;e([ue({attribute:!1})],ul.prototype,"hass",void 0),e([me()],ul.prototype,"_config",void 0),e([me()],ul.prototype,"_helpers",void 0),e([me()],ul.prototype,"_lastSelection",void 0),ul=Hs=e([le(Ms)],ul),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"}(ml||(ml={}));class pl{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 _l="ontouchstart"in window||navigator.maxTouchPoints>0;class vl extends HTMLElement{constructor(){super(),this.holdTime=500,this.held=!1,this.ripple=document.createElement("mwc-ripple")}connectedCallback(){Object.assign(this.style,{position:"absolute",width:_l?"100px":"50px",height:_l?"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(Ts,vl);const gl=(e,t)=>{const i=(()=>{const e=document.body;if(e.querySelector(Ts))return e.querySelector(Ts);const t=document.createElement(Ts);return e.appendChild(t),t})();i&&i.bind(e,t)},hl=(e=>(...t)=>({_$litDirective$:e,values:t}))(class extends pl{update(e,[t]){return gl(e.element,t),F}render(e){}});class fl{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:bl(e)&&(this.id=e.pointerId)}getCoalesced(){if("getCoalescedEvents"in this.nativePointer){const e=this.nativePointer.getCoalescedEvents().map((e=>new fl(e)));if(e.length>0)return e}return[this]}}const bl=e=>"pointerId"in e,yl=e=>"changedTouches"in e,kl=()=>{};class Al{constructor(e,{start:t=()=>!0,move:i=kl,end:a=kl,rawUpdates:n=!1,avoidPointerEvents:o=!1}={}){this._element=e,this.startPointers=[],this.currentPointers=[],this._excludeFromButtonsCheck=new Set,this._pointerStart=e=>{if(bl(e)&&0===e.buttons)this._excludeFromButtonsCheck.add(e.pointerId);else if(!(1&e.buttons))return;const t=new fl(e);if(!this.currentPointers.some((e=>e.id===t.id))&&this._triggerPointerStart(t,e))if(bl(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 fl(t),e)},this._move=e=>{if(!(yl(e)||bl(e)&&this._excludeFromButtonsCheck.has(e.pointerId)||0!==e.buttons))return void this._pointerEnd(e);const t=this.currentPointers.slice(),i=yl(e)?Array.from(e.changedTouches).map((e=>new fl(e))):[new fl(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(!yl(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 fl(e),e))if(bl(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 fl(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 xl="min-scale",El="max-scale",wl="locked",zl="no-default-pan",Pl="two-finger-pan";function Ml(e,t){return t?Math.sqrt((t.clientX-e.clientX)**2+(t.clientY-e.clientY)**2):0}function Tl(e,t){return t?{clientX:(e.clientX+t.clientX)/2,clientY:(e.clientY+t.clientY)/2}:e}function Sl(e,t){return"number"==typeof e?e:e.trimRight().endsWith("%")?t*parseFloat(e)/100:parseFloat(e)}let Cl;function Ol(){return Cl||(Cl=document.createElementNS("http://www.w3.org/2000/svg","svg"))}function Nl(){return Ol().createSVGMatrix()}function Rl(){return Ol().createSVGPoint()}const $l=.01;class jl extends HTMLElement{static get observedAttributes(){return[xl,El,zl,Pl,wl]}constructor(){super(),this._transform=Nl(),this._enablePan=!0,this._locked=!1,this._twoFingerPan=!1,new MutationObserver((()=>this._stageElChange())).observe(this,{childList:!0});const e=new Al(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),Zs(i),!1)});this.addEventListener("wheel",(e=>this._onWheel(e)))}attributeChangedCallback(e,t,i){e===xl&&this.scale<this.minScale&&this.setTransform({scale:this.minScale}),e===El&&this.scale>this.maxScale&&this.setTransform({scale:this.maxScale}),e===zl&&(this.enablePan=!("1"==i||"true"==i)),e===Pl&&("1"==i||"true"==i?(this.twoFingerPan=!0,this.enablePan=!1):(this.twoFingerPan=!1,this.enablePan=!0)),e===wl&&(this.locked="1"==i||"true"==i)}get minScale(){const e=this.getAttribute(xl);if(!e)return $l;const t=parseFloat(e);return Number.isFinite(t)?Math.max($l,t):$l}set minScale(e){e&&this.setAttribute(xl,String(e))}get maxScale(){const e=this.getAttribute(El);if(!e)return 100;const t=parseFloat(e);return Number.isFinite(t)?Math.min(100,t):100}set maxScale(e){e&&this.setAttribute(El,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=Sl(i,s.width),a=Sl(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=Rl();s.x=r.left-o.left,s.y=r.top-o.top;let l=Rl();l.x=r.width+s.x,l.y=r.height+s.y;const c=Nl().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=Tl(e[0],e[1]),n=Tl(t[0],t[1]),o=a.clientX-i.left,r=a.clientY-i.top,s=Ml(e[0],e[1]),l=Ml(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=Nl().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",jl);class Ll{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=Ll.calcAngle(t,a)<Ll.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 V`${el(null!=e&&a.length>0,(()=>V`
<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 V`${el(null!=e&&i.length>0,(()=>{var a,n;return V`
<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(Ll.findTopLeft(_)),g=p.slice(v,v+4),h=this._isCounterClockwise(g),f=m.slice(v,v+4);return h?[Ll._reverse(g),Ll._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 Il;!function(e){e[e.NONE=0]="NONE",e[e.RESIZE=1]="RESIZE",e[e.MOVE=2]="MOVE"}(Il||(Il={}));class Dl extends Ll{constructor(e,t,i,a,n,o){super(o),this._id=n,this._dragMode=Il.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=Dl.calcAngle(t[0],t[3]);return V`
<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="${Dl._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;Zs(e),this._selectedTarget=e.target;const i=e.target;i.classList.contains("movable")?this._dragMode=Il.MOVE:i.classList.contains("resizer")?this._dragMode=Il.RESIZE:this._dragMode=Il.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){Zs(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 Il.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 Il.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 Il.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",Dl._toPoints(e));const f=e[0],b=e[2],y=e[3],k=Dl.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){Zs(e),this._selectedElement=null,this._selectedTarget=null,this.update()}_delete(e){Zs(e);const t=Ys(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 Vl{constructor(e,t,i,a,n,o,r,s,l,c,d,u,m,p,_,v){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}roundMap([e,t]){return this.roundingEnabled()?[Math.round(e),Math.round(t)]:[e,t]}}class Fl extends Ll{constructor(e,t,i){super(i),this._x=e,this._y=t}}class Ul extends Fl{constructor(e,t,i){super(e,t,i)}render(){return V`
<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 ql extends Ll{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 V`
<circle style="r: var(--radius)"
cx="${this.x}"
cy="${this.y}"
fill="black">
</circle>`}render(){return V`
<circle class="manual-path-point"
cx="${this.x}"
cy="${this.y}">
</circle>`}}class Hl extends Ll{constructor(e,t){super(t),this.points=e}render(){if(0===this.points.length)return V``;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 V`
<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 ql(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 Kl extends Ll{constructor(e,t){var i;super(t),this._config=e,this._selected=!1,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"}}get variables(){var e;return null!==(e=this._config.variables)&&void 0!==e?e:super.variables}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 Kl({position:e,label:void 0,icon:{x:e[0],y:e[1],name:"mdi:map-marker"}},i())))}render(){return V`
<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._selected=!this._selected,ke("selection"),this._selected){const e=this._context.selectedPredefinedPoint().pop();void 0!==e&&(e._selected=!1),this._context.selectedPredefinedPoint().push(this)}else Ys(this._context.selectedPredefinedPoint(),this);if(await this._context.runImmediately())return this._selected=!1,void Ys(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 Xl extends Ll{constructor(e,t){super(t),this._config=e,this._selected=!1}get variables(){var e;return null!==(e=this._config.variables)&&void 0!==e?e:super.variables}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 Xl({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 V`
<g class="predefined-rectangle-wrapper ${this._selected?"selected":""}">
${t.map((e=>V`
<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._selected=!this._selected,this._selected?this._context.selectedPredefinedRectangles().push(this):Ys(this._context.selectedPredefinedRectangles(),this),await this._context.runImmediately())return this._selected=!1,void Ys(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 Gl extends Ll{constructor(e,t){super(t),this._config=e,this._selected=!1}get variables(){var e;return null!==(e=this._config.variables)&&void 0!==e?e:super.variables}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 V`
<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._selected=!this._selected,this._selected?this._context.selectedRooms().push(this):Ys(this._context.selectedRooms(),this),this._context.selectionChanged(),await this._context.runImmediately())return this._selected=!1,Ys(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 Bl(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 Zl(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 Yl(e,t,i){var a,n;if(!t)return["validation.preset.map_modes.invalid"];if(t.template&&!ws.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 Gs(e,t,i);switch(r.selectionType){case tr.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&&Bl(t.icon).forEach((e=>i.push(e))),t.label&&Zl(t.label).forEach((e=>i.push(e))),i}(e))).forEach((e=>o.push(e)));break;case tr.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&&Bl(i.icon).forEach((e=>a.push(e))),i.label&&Zl(i.label).forEach((e=>a.push(e))),a}(e))).forEach((e=>o.push(e)));break;case tr.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&&Bl(i.icon).forEach((e=>a.push(e))),i.label&&Zl(i.label).forEach((e=>a.push(e))),a}(e))).forEach((e=>o.push(e)));break;case tr.MANUAL_RECTANGLE:case tr.MANUAL_PATH:case tr.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}",tr[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 Jl(e,t,i){var a,n,o;const r=[],s=ws.getPlatformsWithDefaultCalibration(),l=new Map([["entity","validation.preset.entity.missing"],["map_source","validation.preset.map_source.missing"]]),c=ws.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&&!ws.getPlatforms().includes(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))),(null!==(o=e.map_modes)&&void 0!==o?o:[]).flatMap((e=>Yl(c,e,i))).forEach((e=>r.push(e))),!e.preset_name&&t&&r.push("validation.preset.preset_name.missing"),r}class Wl{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 Ql{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 ec{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 Ql(n);return s.addTiles(ec.getCommonTiles(r,t,a)),s.addTiles(await ec.getTilesFromEntities(e,t,i,a,o)),s.addTiles(ec.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:Wo("tile.status.label",i),attribute:"status",icon:"mdi:robot-vacuum",translations:ec.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:Wo("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:Wo("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:Wo("tile.fan_speed.label",i),attribute:"fan_speed",icon:"mdi:fan",translations:ec.generateTranslationKeys(["silent","standard","medium","turbo","auto","gentle"],"fan_speed",i)}),a}static getTilesFromAttributes(e,t,i,a,n,o){return ws.getTilesFromAttributesTemplates(a).filter((e=>e.attribute in t.attributes)).map((t=>ec.mapAttributeToTile(e,i,t,n,o)))}static async getTilesFromEntities(e,t,i,a,n){const o=await nl(e,t);return o.length>0?ws.getTilesFromSensorsTemplates(i).map((e=>({tile:e,entity:o.filter((t=>t.unique_id.match(e.unique_id_regex)))}))).flatMap((i=>i.entity.map((o=>ec.mapEntryToTile(e,t,o,i.tile,a,n))))):[]}static mapEntryToTile(e,t,i,a,n,o){var r,s;return ec.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 ec.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:ec.getTileLabel(e,t,r,a,n),attribute:n,icon:o,unit:t.unit?Wo(t.unit,r):void 0,precision:t.precision?t.precision:0,multiplier:t.multiplier?t.multiplier:void 0,translations:ec.generateTranslationKeys(null!==(l=t.translation_keys)&&void 0!==l?l:[],t.tile_id,r)});return cl(ec.cleanup(c),ec.getDefaultVariables(i,a,n),s)}static getTileLabel(e,t,i,a,n){var o;return void 0!==t.label?Wo(t.label,i):void 0!==n?Vo(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=Wo(`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[Us.ENTITY_ID]=null!=t?t:e,a[Us.VACUUM_ENTITY_ID]=e,a[Us.ATTRIBUTE]=null!=i?i:"",a}}function tc(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 ic{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 ac{static async generate(e,t,i,a,n,o){if(!e)return[];const r=new ic(n);return r.addIcons(ac.getCommonIcons(e,t,a)),r.addIcons(await ac.getIconsFromEntities(e,t,i)),r.icons}static getCommonIcons(e,t,i){var a;const n=e.states[t],o=n&&n.attributes,r=[];ac.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:Wo("icon.vacuum_start",i),tap_action:{action:"call-service",service:"vacuum.start",service_data:{entity_id:t}}}),ac.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:Wo("icon.vacuum_pause",i),tap_action:{action:"call-service",service:"vacuum.pause",service_data:{entity_id:t}}}),ac.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:Wo("icon.vacuum_stop",i),tap_action:{action:"call-service",service:"vacuum.stop",service_data:{entity_id:t}}}),ac.isFeatureSupported(n,16)&&r.push({icon:"mdi:home-map-marker",conditions:[{entity:t,value_not:"docked"},{entity:t,value_not:"returning"}],tooltip:Wo("icon.vacuum_return_to_base",i),tap_action:{action:"call-service",service:"vacuum.return_to_base",service_data:{entity_id:t}}}),ac.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:Wo("icon.vacuum_clean_spot",i),tap_action:{action:"call-service",service:"vacuum.clean_spot",service_data:{entity_id:t}}}),ac.isFeatureSupported(n,512)&&r.push({icon:"mdi:map-marker",tooltip:Wo("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 ac._ICON_MAPPING?ac._ICON_MAPPING[a]:"mdi:fan-alert",label:Wo("tile.fan_speed.value."+a.toLowerCase(),i,a),conditions:[{entity:t,attribute:"fan_speed",value:a}],tooltip:Wo("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:Wo("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 nl(e,t);return ws.getIconsTemplates(i).flatMap((e=>ac.createIcon(e,a)))}static createIcon(e,t){return"single"==e.type?ac.createSingleIcon(e,t):"menu"==e.type?ac.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 nc(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 oc(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 rc(...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 rc(t(i,a),...n)}}}function sc(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}}(rc([_,v]))}function lc(e,t,i,a){var n=Error.call(this,e);return Object.setPrototypeOf&&Object.setPrototypeOf(n,lc.prototype),n.expected=t,n.found=i,n.location=a,n.name="SyntaxError",n}function cc(e,t,i){return i=i||" ",e.length>t?e:(t-=e.length,e+(i+=i.repeat(t)).slice(0,t))}ac._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}(lc,Error),lc.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=cc("",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+" | "+cc("",n.column-1," ")+cc("",d,"^")}else t+="\n at "+r}return t},lc.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 dc,uc,mc,pc=(dc=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)}}},dc(uc={exports:{}},uc.exports),uc.exports),_c=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(pc);!function(e){e[e.AFFINE=0]="AFFINE",e[e.PERSPECTIVE=1]="PERSPECTIVE"}(mc||(mc={}));class vc{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=mc.AFFINE,this.mapToVacuumMatrix=sc(t,i),this.vacuumToMapMatrix=sc(i,t),this.calibrated=!(!this.mapToVacuumMatrix||!this.vacuumToMapMatrix);else{this.transformMode=mc.PERSPECTIVE;const e=t.flatMap((e=>[e.x,e.y])),a=i.flatMap((e=>[e.x,e.y]));this.mapToVacuumTransformer=_c(e,a),this.vacuumToMapTransformer=_c(a,e),this.calibrated=!0}else this.calibrated=!1}mapToVacuum(e,t){if(this.transformMode===mc.AFFINE&&this.mapToVacuumMatrix)return oc(this.mapToVacuumMatrix,[e,t]);if(this.transformMode===mc.PERSPECTIVE&&this.mapToVacuumTransformer)return this.mapToVacuumTransformer(e,t);throw Error("Missing calibration")}vacuumToMap(e,t){if(this.transformMode===mc.AFFINE&&this.vacuumToMapMatrix)return oc(this.vacuumToMapMatrix,[e,t]);if(this.transformMode===mc.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 gc extends re{createRenderRoot(){return this}}let hc=class extends gc{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>
${el(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})],hc.prototype,"values",void 0),e([ue({attribute:!1})],hc.prototype,"currentIndex",void 0),e([ue({attribute:!1})],hc.prototype,"setValue",void 0),e([ue({attribute:!1})],hc.prototype,"renderNameCollapsed",void 0),e([ue({attribute:!1})],hc.prototype,"additionalClasses",void 0),e([_e(".dropdown-menu")],hc.prototype,"menu",void 0),hc=e([le("xvmc-dropdown-menu")],hc);let fc=class extends gc{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;if(!a)return;const 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="${hl({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">
${el(""!==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?Vo(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=er(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?Xo(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})],fc.prototype,"config",void 0),e([ue({attribute:!1})],fc.prototype,"hass",void 0),e([ue({attribute:!1})],fc.prototype,"isInEditor",void 0),e([ue({attribute:!1})],fc.prototype,"onAction",void 0),e([ue({attribute:!1})],fc.prototype,"internalVariables",void 0),fc=e([le("xvmc-tile")],fc);let bc=class extends gc{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;
}
${fc.styles}
`}};e([ue({attribute:!1})],bc.prototype,"tiles",void 0),e([ue({attribute:!1})],bc.prototype,"hass",void 0),e([ue({attribute:!1})],bc.prototype,"isInEditor",void 0),e([ue({attribute:!1})],bc.prototype,"onAction",void 0),e([ue({attribute:!1})],bc.prototype,"internalVariables",void 0),bc=e([le("xvmc-tiles-wrapper")],bc);let yc=class extends gc{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})],yc.prototype,"config",void 0),e([ue({attribute:!1})],yc.prototype,"isInEditor",void 0),e([ue({attribute:!1})],yc.prototype,"onAction",void 0),yc=e([le("xvmc-dropdown-icon")],yc);let kc=class extends gc{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=${hl({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})],kc.prototype,"config",void 0),e([ue({attribute:!1})],kc.prototype,"isInEditor",void 0),e([ue({attribute:!1})],kc.prototype,"onAction",void 0),kc=e([le("xvmc-single-icon")],kc);let Ac=class extends gc{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`
${kc.styles}
${yc.styles}
`}};var xc;e([ue({attribute:!1})],Ac.prototype,"config",void 0),e([ue({attribute:!1})],Ac.prototype,"isInEditor",void 0),e([ue({attribute:!1})],Ac.prototype,"onAction",void 0),Ac=e([le("xvmc-icon")],Ac);let Ec=xc=class extends gc{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;
}
${Ac.styles}
`}static preprocessIcons(e,t,i){if(void 0===e)return[];const a=[],n=new Map;xc.expandMenus(e,t,i).forEach((e=>{const o=Qs(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?xc.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:xc.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 Do(e.localize,t,e.locale,e.entities,i,a)}(e,t,a,i):function(e,t,i){return Go(e.localize,t,e.locale,e.entities,i)}(e,t,i)}};e([ue({attribute:!1})],Ec.prototype,"icons",void 0),e([ue({attribute:!1})],Ec.prototype,"isInEditor",void 0),e([ue({attribute:!1})],Ec.prototype,"onAction",void 0),Ec=xc=e([le("xvmc-icons-wrapper")],Ec);let wc=class extends gc{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 zc;e([ue({attribute:!1})],wc.prototype,"availablePresets",void 0),e([ue({attribute:!1})],wc.prototype,"availablePresetIndex",void 0),e([ue({attribute:!1})],wc.prototype,"openPreviousPreset",void 0),e([ue({attribute:!1})],wc.prototype,"previousPresetIndex",void 0),e([ue({attribute:!1})],wc.prototype,"presetActivable",void 0),e([ue({attribute:!1})],wc.prototype,"presetName",void 0),e([ue({attribute:!1})],wc.prototype,"executePresetsActivation",void 0),e([ue({attribute:!1})],wc.prototype,"openNextPreset",void 0),e([ue({attribute:!1})],wc.prototype,"nextPresetIndex",void 0),wc=e([le("xvmc-preset-selector")],wc);const Pc=" XIAOMI-VACUUM-MAP-CARD",Mc=` ${Wo("common.version")} ${zs}`,Tc=Math.max(25,Mc.length)+3,Sc=(e,t)=>e+" ".repeat(t-e.length);console.info(`%c${Sc(Pc,Tc)}\n%c${Sc(Mc,Tc)}`,"color: orange; font-weight: bold; background: black","color: white; font-weight: bold; background: dimgray");const Cc=window;Cc.customCards=Cc.customCards||[],Cc.customCards.push({type:Ps,name:"Vacuum Map Card",description:Wo("common.description")});let Oc=zc=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 Hl([],this._getContext()),this.selectedPredefinedRectangles=[],this.selectedRooms=[],this.selectedPredefinedPoint=[],this.selectablePredefinedRectangles=[],this.selectableRooms=[],this.selectablePredefinedPoints=[],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(Ms)}static getStubConfig(e){const t=Object.keys(e.states),i=t.filter((e=>"camera"===e.substr(0,e.indexOf(".")))).filter((t=>null==e?void 0:e.states[t].attributes.calibration_points)),a=t.filter((e=>"vacuum"===e.substr(0,e.indexOf("."))));if(0!==i.length&&0!==a.length)return{type:"custom:"+Ps,map_source:{camera:i[0]},calibration_source:{camera:!0},entity:a[0],vacuum_platform:ws.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 Jl(e,o,e.language).forEach((e=>n.push(e))),null===(a=e.additional_presets)||void 0===a||a.flatMap((t=>Jl(t,o,e.language))).forEach((e=>n.push(e))),n.map((t=>Wo(t,e.language)))}(this.config),this.configErrors.length>0||(this.watchedEntities=Ws(this.config),this._setPresetIndex(0,!1,!0),this.requestUpdate("config")))}getCardSize(){return 12}connectedCallback(){super.connectedCallback(),this._isInEditor()&&(window.addEventListener(Os,this._handleAutogeneratedConfigGet),window.addEventListener(Rs,this._handleRoomsConfigGet),window.addEventListener(js,this._handleServiceCallGet),this.isInEditor=!0),document.addEventListener(Is,this._handleLovelaceDomEvent),this.connected=!0,this._updateElements(),ol(100).then((()=>this.requestUpdate()))}disconnectedCallback(){super.disconnectedCallback(),this._isInEditor()&&(window.removeEventListener(Os,this._handleAutogeneratedConfigGet),window.removeEventListener(Rs,this._handleRoomsConfigGet),window.removeEventListener(js,this._handleServiceCallGet)),document.removeEventListener(Is,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");return!n||e.some((e=>n.states[e]!==(null==a?void 0:a.states[e])))}(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=>Qs(e,this.internalVariables,this.hass))),f=Ec.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};">
${el((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>
${el(!k,(()=>this._showInvalidCalibrationWarning()))}
${el(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">
${el(k&&(b.length>1||A.length>0),(()=>D`
<div class="map-controls-wrapper">
<div class="map-controls">
${el(b.length>1,(()=>D`
<xvmc-dropdown-menu
.values=${b}
.currentIndex=${this.selectedMode}
.setValue=${e=>this._setCurrentMode(e)}
.renderNameCollapsed=${!0}>
</xvmc-dropdown-menu>
`))}
${el(A.length>0,(()=>D` <div class="map-actions-list">${A}</div> `))}
</div>
</div>
`))}
<xvmc-icons-wrapper
.icons=${f}
.isInEditor=${this.isInEditor}
.onAction=${(e,t)=>tl(this,e,t)}>
</xvmc-icons-wrapper>
<xvmc-tiles-wrapper
.hass=${this.hass}
.tiles=${h}
.isInEditor=${this.isInEditor}
.onAction=${(e,t)=>tl(this,e,t)}
.internalVariables=${this.internalVariables}>
</xvmc-tiles-wrapper>
</div>`))}
${dl.render("map-card")}
</ha-card>
`}updated(e){this._updateElements()}_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 ws.getCalibration(e.calibration_source.platform);const _=ws.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)||Qs(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)||Qs(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)||Qs(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=ws.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=ws.getPlatformName(e.vacuum_platform),o=Wl.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),nc,ac.generate),r=Wl.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),tc,ec.generate);return Promise.all([o,r])}_getModes(e){var t,i,a;const n=ws.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")?ws.generateDefaultModes(n):null!==(a=e.map_modes)&&void 0!==a?a:[Vs]).map((e=>new Gs(n,e,this.config.language)))}_executePresetsActivation(){if(this.currentPreset.activate){const e=new Xs(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=Ws(Object.assign({type:""},e))}_updateCalibration(e){this.coordinatesConverter=void 0;const t=this._getCalibration(e);this.coordinatesConverter=new vc(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 Ss}return e.map_source.image?`${e.map_source.image}`:Ss}_createMapControls(){const e=[],t=this._getCurrentMode();return t?(t.selectionType===tr.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===tr.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!==ir.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="${hl({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 Vl((()=>this.mapScale),(()=>this.realScale),(e=>this._getMousePosition(e)),(()=>this.requestUpdate()),(()=>this._selectionChanged()),(()=>this.coordinatesConverter),(()=>this.selectedManualRectangles),(()=>this.selectedPredefinedRectangles),(()=>this.selectedRooms),(()=>this.selectedPredefinedPoint),(()=>{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)))}_getMousePosition(e){return al(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.selectedPredefinedPoint=[],this.selectablePredefinedRectangles=[],this.selectableRooms=[],this.selectablePredefinedPoints=[],null==i?void 0:i.selectionType){case tr.PREDEFINED_RECTANGLE:const e=Xl.getFromEntities(i,this.hass,(()=>this._getContext())),t=i.predefinedSelections.map((e=>e)).filter((e=>"string"!=typeof e.zones)).map((e=>new Xl(e,this._getContext())));this.selectablePredefinedRectangles=e.concat(t);break;case tr.ROOM:this.selectableRooms=i.predefinedSelections.map((e=>new Gl(e,this._getContext())));break;case tr.PREDEFINED_POINT:const a=Kl.getFromEntities(i,this.hass,(()=>this._getContext())),n=i.predefinedSelections.map((e=>e)).filter((e=>"string"!=typeof e.position)).map((e=>new Kl(e,this._getContext())));this.selectablePredefinedPoints=a.concat(n)}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===ir.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 tr.MANUAL_RECTANGLE:c=this.selectedManualRectangles.map((e=>e.toVacuum(l))),d=u(this.selectedManualRectangles);break;case tr.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 tr.ROOM:const m=this.selectedRooms.map((e=>e.toVacuum())).map((t=>zc.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 tr.MANUAL_PATH:c=this.selectedManualPath.toVacuum(l),d=null!==(o=this.selectedManualPath.variables)&&void 0!==o?o:{},d=u([this.selectedManualPath]);break;case tr.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 tr.PREDEFINED_POINT:c=this.selectedPredefinedPoint.map((e=>e.toVacuum(l))).reduce(((e,t)=>e.concat(t)),[]),d=u(this.selectedPredefinedPoint)}return e.repeatsType===ir.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(Cs);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(Ns),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($s);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(Ls);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(Ds in i.detail&&"action_handler_id"in i.detail[Ds]&&i.detail[Ds].action_handler_id===(null!==(t=this.config.action_handler_id)&&void 0!==t?t:"this")){const e=i.detail[Ds];if(void 0===e.action)return;const t=e.action,a=e.data,n=this._getCurrentMode();switch(t){case ml.CLEANING_START:await this._run(!1);break;case ml.INTERNAL_VARIABLE_SET:this._setInternalVariable(a.variable,a.value);break;case ml.MAP_MODE_NEXT:this._setCurrentMode((this.selectedMode+1)%this.modes.length,!1);break;case ml.MAP_MODE_PREVIOUS:this._setCurrentMode((this.selectedMode-1+this.modes.length)%this.modes.length,!1);break;case ml.MAP_MODE_SET:this._setCurrentMode(a.index%this.modes.length,!1);break;case ml.REPEATS_DECREMENT:n&&(this.repeats=(this.repeats+n.maxRepeats-2)%n.maxRepeats+1);break;case ml.REPEATS_INCREMENT:n&&(this.repeats=this.repeats%n.maxRepeats+1);break;case ml.REPEATS_SET:n&&(this.repeats=(a.value+n.maxRepeats-1)%n.maxRepeats+1);break;case ml.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===tr.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){return"number"===t.idType?+e: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(){var e,t;const i=null===(t=null===(e=this._modesDropdownMenu)||void 0===e?void 0:e.shadowRoot)||void 0===t?void 0:t.querySelector(".dropdown-content");i&&(i.style.borderRadius=this._getCssProperty("--map-card-internal-big-radius")),ol(100).then((()=>this._calculateBasicScale()))}_drawSelection(){var e,t,i;switch(null===(e=this._getCurrentMode())||void 0===e?void 0:e.selectionType){case tr.MANUAL_RECTANGLE:return V`${this.selectedManualRectangles.map((e=>e.render()))}`;case tr.PREDEFINED_RECTANGLE:return V`${this.selectablePredefinedRectangles.map((e=>e.render()))}`;case tr.ROOM:return V`${this.selectableRooms.map((e=>e.render()))}`;case tr.MANUAL_PATH:return V`${null===(t=this.selectedManualPath)||void 0===t?void 0:t.render()}`;case tr.MANUAL_POINT:return V`${null===(i=this.selectedManualPoint)||void 0===i?void 0:i.render()}`;case tr.PREDEFINED_POINT:return V`${this.selectablePredefinedPoints.map((e=>e.render()))}`;default:return null}}_toggleLock(){this.mapLocked=!this.mapLocked,ke("selection"),ol(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 Dl(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}=al(e,this._getSvgWrapper(),1);switch(t.selectionType){case tr.MANUAL_PATH:ke("selection"),this.selectedManualPath.addPoint(i,a),this._selectionChanged();break;case tr.MANUAL_POINT:ke("selection"),this.selectedManualPoint=new Ul(i,a,this._getContext()),this._selectionChanged();break;default:return}Zs(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"),ol(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}),ol(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");return t.setConfig({type:"error",error:e[0],origConfig:this.config}),D` ${t} `}_showOldConfig(){return D`
<hui-warning>
<h1>Xiaomi Vacuum Map Card ${zs}</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 Qo(e,this.hass,this.config)}_showToast(e,t,i,a=""){dl.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;
}
${wc.styles}
${Ll.styles}
${Dl.styles}
${Xl.styles}
${Hl.styles}
${Ul.styles}
${Kl.styles}
${Gl.styles}
${Ec.styles}
${bc.styles}
${hc.styles}
${dl.styles}
`}};e([me()],Oc.prototype,"oldConfig",void 0),e([me()],Oc.prototype,"config",void 0),e([me()],Oc.prototype,"presetIndex",void 0),e([me()],Oc.prototype,"realScale",void 0),e([me()],Oc.prototype,"realImageWidth",void 0),e([me()],Oc.prototype,"realImageHeight",void 0),e([me()],Oc.prototype,"mapScale",void 0),e([me()],Oc.prototype,"mapX",void 0),e([me()],Oc.prototype,"mapY",void 0),e([me()],Oc.prototype,"repeats",void 0),e([me()],Oc.prototype,"selectedMode",void 0),e([me()],Oc.prototype,"mapLocked",void 0),e([me()],Oc.prototype,"configErrors",void 0),e([me()],Oc.prototype,"connected",void 0),e([me()],Oc.prototype,"internalVariables",void 0),e([_e(".modes-dropdown-menu")],Oc.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")],Oc.prototype,"_iconDropdownMenus",void 0),e([ue({attribute:!1})],Oc.prototype,"_hass",void 0),Oc=zc=e([le(Ps)],Oc);export{Oc as XiaomiVacuumMapCard};