Files
HomeAssistantVS/www/community/calendar-card-pro/calendar-card-pro.js
T

1479 lines
328 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.
const e=globalThis,t=e.ShadowRoot&&(void 0===e.ShadyCSS||e.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,a=Symbol(),i=new WeakMap;let n=class{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 a=this.t;if(t&&void 0===e){const t=void 0!==a&&1===a.length;t&&(e=i.get(a)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),t&&i.set(a,e))}return e}toString(){return this.cssText}};const o=(e,...t)=>{const i=1===e.length?e[0]:t.reduce(((t,a,i)=>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.")})(a)+e[i+1]),e[0]);return new n(i,e,a)},r=t?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const a of e.cssRules)t+=a.cssText;return(e=>new n("string"==typeof e?e:e+"",void 0,a))(t)})(e):e,{is:s,defineProperty:l,getOwnPropertyDescriptor:d,getOwnPropertyNames:_,getOwnPropertySymbols:c,getPrototypeOf:u}=Object,m=globalThis,h=m.trustedTypes,p=h?h.emptyScript:"",g=m.reactiveElementPolyfillSupport,y=(e,t)=>e,v={toAttribute(e,t){switch(t){case Boolean:e=e?p:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let a=e;switch(t){case Boolean:a=null!==e;break;case Number:a=null===e?null:Number(e);break;case Object:case Array:try{a=JSON.parse(e)}catch(e){a=null}}return a}},f=(e,t)=>!s(e,t),k={attribute:!0,type:String,converter:v,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol("metadata"),m.litPropertyMetadata??=new WeakMap;let w=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=k){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){const a=Symbol(),i=this.getPropertyDescriptor(e,a,t);void 0!==i&&l(this.prototype,e,i)}}static getPropertyDescriptor(e,t,a){const{get:i,set:n}=d(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:i,set(t){const o=i?.call(this);n?.call(this,t),this.requestUpdate(e,o,a)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??k}static _$Ei(){if(this.hasOwnProperty(y("elementProperties")))return;const e=u(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(y("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(y("properties"))){const e=this.properties,t=[..._(e),...c(e)];for(const a of t)this.createProperty(a,e[a])}const e=this[Symbol.metadata];if(null!==e){const t=litPropertyMetadata.get(e);if(void 0!==t)for(const[e,a]of t)this.elementProperties.set(e,a)}this._$Eh=new Map;for(const[e,t]of this.elementProperties){const a=this._$Eu(e,t);void 0!==a&&this._$Eh.set(a,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const a=new Set(e.flat(1/0).reverse());for(const e of a)t.unshift(r(e))}else void 0!==e&&t.push(r(e));return t}static _$Eu(e,t){const a=t.attribute;return!1===a?void 0:"string"==typeof a?a:"string"==typeof e?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),void 0!==this.renderRoot&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const a of t.keys())this.hasOwnProperty(a)&&(e.set(a,this[a]),delete this[a]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const a=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((a,i)=>{if(t)a.adoptedStyleSheets=i.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet));else for(const t of i){const i=document.createElement("style"),n=e.litNonce;void 0!==n&&i.setAttribute("nonce",n),i.textContent=t.cssText,a.appendChild(i)}})(a,this.constructor.elementStyles),a}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,t,a){this._$AK(e,a)}_$ET(e,t){const a=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,a);if(void 0!==i&&!0===a.reflect){const n=(void 0!==a.converter?.toAttribute?a.converter:v).toAttribute(t,a.type);this._$Em=e,null==n?this.removeAttribute(i):this.setAttribute(i,n),this._$Em=null}}_$AK(e,t){const a=this.constructor,i=a._$Eh.get(e);if(void 0!==i&&this._$Em!==i){const e=a.getPropertyOptions(i),n="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==e.converter?.fromAttribute?e.converter:v;this._$Em=i;const o=n.fromAttribute(t,e.type);this[i]=o??this._$Ej?.get(i)??o,this._$Em=null}}requestUpdate(e,t,a,i=!1,n){if(void 0!==e){const o=this.constructor;if(!1===i&&(n=this[e]),a??=o.getPropertyOptions(e),!((a.hasChanged??f)(n,t)||a.useDefault&&a.reflect&&n===this._$Ej?.get(e)&&!this.hasAttribute(o._$Eu(e,a))))return;this.C(e,t,a)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:a,reflect:i,wrapped:n},o){a&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,o??t??this[e]),!0!==n||void 0!==o)||(this._$AL.has(e)||(this.hasUpdated||a||(t=void 0),this._$AL.set(e,t)),!0===i&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}const e=this.constructor.elementProperties;if(e.size>0)for(const[t,a]of e){const{wrapped:e}=a,i=this[t];!0!==e||this._$AL.has(t)||void 0===i||this.C(t,void 0,a,i)}}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach((e=>e.hostUpdate?.())),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach((e=>e.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach((e=>this._$ET(e,this[e]))),this._$EM()}updated(e){}firstUpdated(e){}};w.elementStyles=[],w.shadowRootOptions={mode:"open"},w[y("elementProperties")]=new Map,w[y("finalized")]=new Map,g?.({ReactiveElement:w}),(m.reactiveElementVersions??=[]).push("2.1.2");const b=globalThis,M=b.trustedTypes,z=M?M.createPolicy("lit-html",{createHTML:e=>e}):void 0,T="$lit$",D=`lit$${Math.random().toFixed(9).slice(2)}$`,j="?"+D,S=`<${j}>`,$=document,x=()=>$.createComment(""),Y=e=>null===e||"object"!=typeof e&&"function"!=typeof e,L=Array.isArray,E="[ \t\n\f\r]",A=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,C=/-->/g,H=/>/g,P=RegExp(`>|${E}(?:([^\\s"'>=/]+)(${E}*=${E}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),V=/'/g,F=/"/g,O=/^(?:script|style|textarea|title)$/i,I=(e=>(t,...a)=>({_$litType$:e,strings:t,values:a}))(1),N=Symbol.for("lit-noChange"),W=Symbol.for("lit-nothing"),K=new WeakMap,R=$.createTreeWalker($,129);function U(e,t){if(!L(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==z?z.createHTML(t):t}class B{constructor({strings:e,_$litType$:t},a){let i;this.parts=[];let n=0,o=0;const r=e.length-1,s=this.parts,[l,d]=((e,t)=>{const a=e.length-1,i=[];let n,o=2===t?"<svg>":3===t?"<math>":"",r=A;for(let t=0;t<a;t++){const a=e[t];let s,l,d=-1,_=0;for(;_<a.length&&(r.lastIndex=_,l=r.exec(a),null!==l);)_=r.lastIndex,r===A?"!--"===l[1]?r=C:void 0!==l[1]?r=H:void 0!==l[2]?(O.test(l[2])&&(n=RegExp("</"+l[2],"g")),r=P):void 0!==l[3]&&(r=P):r===P?">"===l[0]?(r=n??A,d=-1):void 0===l[1]?d=-2:(d=r.lastIndex-l[2].length,s=l[1],r=void 0===l[3]?P:'"'===l[3]?F:V):r===F||r===V?r=P:r===C||r===H?r=A:(r=P,n=void 0);const c=r===P&&e[t+1].startsWith("/>")?" ":"";o+=r===A?a+S:d>=0?(i.push(s),a.slice(0,d)+T+a.slice(d)+D+c):a+D+(-2===d?t:c)}return[U(e,o+(e[a]||"<?>")+(2===t?"</svg>":3===t?"</math>":"")),i]})(e,t);if(this.el=B.createElement(l,a),R.currentNode=this.el.content,2===t||3===t){const e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(i=R.nextNode())&&s.length<r;){if(1===i.nodeType){if(i.hasAttributes())for(const e of i.getAttributeNames())if(e.endsWith(T)){const t=d[o++],a=i.getAttribute(e).split(D),r=/([.?@])?(.*)/.exec(t);s.push({type:1,index:n,name:r[2],strings:a,ctor:"."===r[1]?Q:"?"===r[1]?X:"@"===r[1]?ee:q}),i.removeAttribute(e)}else e.startsWith(D)&&(s.push({type:6,index:n}),i.removeAttribute(e));if(O.test(i.tagName)){const e=i.textContent.split(D),t=e.length-1;if(t>0){i.textContent=M?M.emptyScript:"";for(let a=0;a<t;a++)i.append(e[a],x()),R.nextNode(),s.push({type:2,index:++n});i.append(e[t],x())}}}else if(8===i.nodeType)if(i.data===j)s.push({type:2,index:n});else{let e=-1;for(;-1!==(e=i.data.indexOf(D,e+1));)s.push({type:7,index:n}),e+=D.length-1}n++}}static createElement(e,t){const a=$.createElement("template");return a.innerHTML=e,a}}function J(e,t,a=e,i){if(t===N)return t;let n=void 0!==i?a._$Co?.[i]:a._$Cl;const o=Y(t)?void 0:t._$litDirective$;return n?.constructor!==o&&(n?._$AO?.(!1),void 0===o?n=void 0:(n=new o(e),n._$AT(e,a,i)),void 0!==i?(a._$Co??=[])[i]=n:a._$Cl=n),void 0!==n&&(t=J(e,n._$AS(e,t.values),n,i)),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){const{el:{content:t},parts:a}=this._$AD,i=(e?.creationScope??$).importNode(t,!0);R.currentNode=i;let n=R.nextNode(),o=0,r=0,s=a[0];for(;void 0!==s;){if(o===s.index){let t;2===s.type?t=new G(n,n.nextSibling,this,e):1===s.type?t=new s.ctor(n,s.name,s.strings,this,e):6===s.type&&(t=new te(n,this,e)),this._$AV.push(t),s=a[++r]}o!==s?.index&&(n=R.nextNode(),o++)}return R.currentNode=$,i}p(e){let t=0;for(const a of this._$AV)void 0!==a&&(void 0!==a.strings?(a._$AI(e,a,t),t+=a.strings.length-2):a._$AI(e[t])),t++}}class G{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,a,i){this.type=2,this._$AH=W,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=a,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode;const t=this._$AM;return void 0!==t&&11===e?.nodeType&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=J(this,e,t),Y(e)?e===W||null==e||""===e?(this._$AH!==W&&this._$AR(),this._$AH=W):e!==this._$AH&&e!==N&&this._(e):void 0!==e._$litType$?this.$(e):void 0!==e.nodeType?this.T(e):(e=>L(e)||"function"==typeof e?.[Symbol.iterator])(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==W&&Y(this._$AH)?this._$AA.nextSibling.data=e:this.T($.createTextNode(e)),this._$AH=e}$(e){const{values:t,_$litType$:a}=e,i="number"==typeof a?this._$AC(e):(void 0===a.el&&(a.el=B.createElement(U(a.h,a.h[0]),this.options)),a);if(this._$AH?._$AD===i)this._$AH.p(t);else{const e=new Z(i,this),a=e.u(this.options);e.p(t),this.T(a),this._$AH=e}}_$AC(e){let t=K.get(e.strings);return void 0===t&&K.set(e.strings,t=new B(e)),t}k(e){L(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let a,i=0;for(const n of e)i===t.length?t.push(a=new G(this.O(x()),this.O(x()),this,this.options)):a=t[i],a._$AI(n),i++;i<t.length&&(this._$AR(a&&a._$AB.nextSibling,i),t.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){const t=e.nextSibling;e.remove(),e=t}}setConnected(e){void 0===this._$AM&&(this._$Cv=e,this._$AP?.(e))}}class q{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,a,i,n){this.type=1,this._$AH=W,this._$AN=void 0,this.element=e,this.name=t,this._$AM=i,this.options=n,a.length>2||""!==a[0]||""!==a[1]?(this._$AH=Array(a.length-1).fill(new String),this.strings=a):this._$AH=W}_$AI(e,t=this,a,i){const n=this.strings;let o=!1;if(void 0===n)e=J(this,e,t,0),o=!Y(e)||e!==this._$AH&&e!==N,o&&(this._$AH=e);else{const i=e;let r,s;for(e=n[0],r=0;r<n.length-1;r++)s=J(this,i[a+r],t,r),s===N&&(s=this._$AH[r]),o||=!Y(s)||s!==this._$AH[r],s===W?e=W:e!==W&&(e+=(s??"")+n[r+1]),this._$AH[r]=s}o&&!i&&this.j(e)}j(e){e===W?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class Q extends q{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===W?void 0:e}}class X extends q{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==W)}}class ee extends q{constructor(e,t,a,i,n){super(e,t,a,i,n),this.type=5}_$AI(e,t=this){if((e=J(this,e,t,0)??W)===N)return;const a=this._$AH,i=e===W&&a!==W||e.capture!==a.capture||e.once!==a.once||e.passive!==a.passive,n=e!==W&&(a===W||i);i&&this.element.removeEventListener(this.name,this,a),n&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}}class te{constructor(e,t,a){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=a}get _$AU(){return this._$AM._$AU}_$AI(e){J(this,e)}}const ae={I:G},ie=b.litHtmlPolyfillSupport;ie?.(B,G),(b.litHtmlVersions??=[]).push("3.3.2");const ne=globalThis;let oe=class extends w{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=((e,t,a)=>{const i=a?.renderBefore??t;let n=i._$litPart$;if(void 0===n){const e=a?.renderBefore??null;i._$litPart$=n=new G(t.insertBefore(x(),e),e,void 0,a??{})}return n._$AI(e),n})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return N}};oe._$litElement$=!0,oe.finalized=!0,ne.litElementHydrateSupport?.({LitElement:oe});const re=ne.litElementPolyfillSupport;re?.({LitElement:oe}),(ne.litElementVersions??=[]).push("4.2.2");const se={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:f},le=(e=se,t,a)=>{const{kind:i,metadata:n}=a;let o=globalThis.litPropertyMetadata.get(n);if(void 0===o&&globalThis.litPropertyMetadata.set(n,o=new Map),"setter"===i&&((e=Object.create(e)).wrapped=!0),o.set(a.name,e),"accessor"===i){const{name:i}=a;return{set(a){const n=t.get.call(this);t.set.call(this,a),this.requestUpdate(i,n,e,!0,a)},init(t){return void 0!==t&&this.C(i,void 0,e,t),t}}}if("setter"===i){const{name:i}=a;return function(a){const n=this[i];t.call(this,a),this.requestUpdate(i,n,e,!0,a)}}throw Error("Unsupported decorator location: "+i)};function de(e){return(t,a)=>"object"==typeof a?le(e,t,a):((e,t,a)=>{const i=t.hasOwnProperty(a);return t.constructor.createProperty(a,e),i?Object.getOwnPropertyDescriptor(t,a):void 0})(e,t,a)}const _e="3.4.0",ce=30,ue=5,me=15,he="cache_data_",pe=0,ge="📅 Calendar Card Pro",ye=500,ve=200,fe=300,ke=3e5,we={WEEK:1,MONTH:1.5},be=.2,Me={TOUCH_SIZE:100,POINTER_SIZE:50},ze=["Germany","Deutschland","United States","USA","United States of America","United Kingdom","Great Britain","France","Italy","Italia","Spain","España","Netherlands","Nederland","Austria","Österreich","Switzerland","Schweiz"];var Te=Object.defineProperty,De=Object.defineProperties,je=Object.getOwnPropertyDescriptors,Se=Object.getOwnPropertySymbols,$e=Object.prototype.hasOwnProperty,xe=Object.prototype.propertyIsEnumerable,Ye=(e,t,a)=>t in e?Te(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,Le=(e,t)=>{for(var a in t||(t={}))$e.call(t,a)&&Ye(e,a,t[a]);if(Se)for(var a of Se(t))xe.call(t,a)&&Ye(e,a,t[a]);return e},Ee=(e,t)=>De(e,je(t));let Ae=!1,Ce=pe;const He={title:["background: #424242","color: white","display: inline-block","line-height: 20px","text-align: center","border-radius: 20px 0 0 20px","font-size: 12px","font-weight: bold","padding: 4px 8px 4px 12px","margin: 5px 0"].join(";"),version:["background: #4fc3f7","color: white","display: inline-block","line-height: 20px","text-align: center","border-radius: 0 20px 20px 0","font-size: 12px","font-weight: bold","padding: 4px 12px 4px 8px","margin: 5px 0"].join(";"),prefix:["color: #4fc3f7","font-weight: bold"].join(";"),error:["color: #f44336","font-weight: bold"].join(";"),warn:["color: #ff9800","font-weight: bold"].join(";")};function Pe(e){!function(e){if(Ae)return;console.groupCollapsed(`%c${ge}%cv${e} `,He.title,He.version),console.log("%c Description: %c A calendar card that supports multiple calendars with individual styling. ","font-weight: bold","font-weight: normal"),console.log("%c GitHub: %c https://github.com/alexpfau/calendar-card-pro ","font-weight: bold","font-weight: normal"),console.groupEnd(),Ae=!0}(e)}function Ve(e,t,...a){const i=function(e){if(null==e)return;if("string"==typeof e)return e;if("object"==typeof e)try{return Le({},e)}catch(t){try{return{value:JSON.stringify(e)}}catch(t){return{value:String(e)}}}return String(e)}(t);if(e instanceof Error){const t=e.message||"Unknown error",n="string"==typeof i?` during ${i}`:"",[o,r]=We(`Error${n}: ${t}`,He.error);console.error(o,r),e.stack&&console.error(e.stack),i&&"object"==typeof i&&console.error("Context:",Ee(Le({},i),{timestamp:(new Date).toISOString()})),a.length>0&&console.error("Additional data:",...a)}else if("string"==typeof e){const t="string"==typeof i?` during ${i}`:"",[n,o]=We(`${e}${t}`,He.error);i&&"object"==typeof i?console.error(n,o,Le({context:Ee(Le({},i),{timestamp:(new Date).toISOString()})},a.length>0?{additionalData:a}:{})):a.length>0?console.error(n,o,...a):console.error(n,o)}else{const t="string"==typeof i?` during ${i}`:"",[n,o]=We(`Unknown error${t}:`,He.error);console.error(n,o,e),i&&"object"==typeof i&&console.error("Context:",Ee(Le({},i),{timestamp:(new Date).toISOString()})),a.length>0&&console.error("Additional data:",...a)}}function Fe(e,...t){Ne(1,e,He.warn,console.warn,...t)}function Oe(e,...t){Ne(2,e,He.prefix,console.log,...t)}function Ie(e,...t){Ne(3,e,He.prefix,console.log,...t)}function Ne(e,t,a,i,...n){if(Ce<e)return;const[o,r]=We(t,a);n.length>0?i(o,r,...n):i(o,r)}function We(e,t){return[`%c[${ge}] ${e}`,t]}const Ke={entities:[],start_date:void 0,days_to_show:3,compact_days_to_show:void 0,compact_events_to_show:void 0,compact_events_complete_days:!1,show_empty_days:!1,filter_duplicates:!1,split_multiday_events:!1,language:void 0,title:void 0,title_font_size:void 0,title_color:void 0,background_color:"var(--ha-card-background)",accent_color:"#03a9f4",vertical_line_width:"2px",day_spacing:"10px",event_spacing:"4px",additional_card_spacing:"0px",height:"auto",max_height:"none",first_day_of_week:"system",show_week_numbers:null,show_current_week_number:!0,week_number_font_size:"12px",week_number_color:"var(--primary-text-color)",week_number_background_color:"#03a9f450",day_separator_width:"0px",day_separator_color:"var(--secondary-text-color)",week_separator_width:"0px",week_separator_color:"#03a9f450",month_separator_width:"0px",month_separator_color:"var(--primary-text-color)",today_indicator:!1,today_indicator_position:"15% 50%",today_indicator_color:"#03a9f4",today_indicator_size:"6px",date_vertical_alignment:"middle",weekday_font_size:"14px",weekday_color:"var(--primary-text-color)",day_font_size:"26px",day_color:"var(--primary-text-color)",show_month:!0,month_font_size:"12px",month_color:"var(--primary-text-color)",weekend_weekday_color:void 0,weekend_day_color:void 0,weekend_month_color:void 0,today_weekday_color:void 0,today_day_color:void 0,today_month_color:void 0,event_background_opacity:0,show_past_events:!1,show_countdown:!1,show_countdown_allday:!0,show_progress_bar:!1,progress_bar_color:"var(--secondary-text-color)",progress_bar_height:"calc(var(--calendar-card-font-size-time) * 0.75)",progress_bar_width:"60px",event_icon_vertical_alignment:"middle",event_font_size:"14px",event_color:"var(--primary-text-color)",empty_day_color:"var(--primary-text-color)",show_time:!0,show_single_allday_time:!0,time_24h:"system",time_two_digit_hours:!1,show_end_time:!0,time_font_size:"12px",time_color:"var(--secondary-text-color)",time_icon_size:"14px",show_location:!0,remove_location_country:!1,location_font_size:"12px",location_color:"var(--secondary-text-color)",location_icon_size:"14px",show_description:!1,description_max_lines:0,description_font_size:"12px",description_color:"var(--secondary-text-color)",description_icon_size:"14px",weather:{entity:void 0,position:"date",date:{show_conditions:!0,show_high_temp:!0,show_low_temp:!1,show_uv_index:!1,uv_index_threshold:0,icon_size:"14px",font_size:"12px",color:"var(--primary-text-color)"},event:{show_conditions:!0,show_temp:!0,show_uv_index:!1,uv_index_threshold:0,daily_forecast_fallback:!0,icon_size:"14px",font_size:"12px",color:"var(--primary-text-color)"}},tap_action:{action:"none"},hold_action:{action:"none"},refresh_interval:ce,refresh_on_navigate:!0};function Re(e,t=0){const a="string"==typeof e&&""!==e.trim()?Number(e):e;if("number"==typeof a&&Number.isFinite(a)&&!(a<t))return a}function Ue(e){const t=function(e){if(!e||"object"!=typeof e)return null;if("states"in e&&"object"==typeof e.states){const t=Object.keys(e.states).find((e=>e.startsWith("calendar.")));if(t)return t}return Object.keys(e).find((e=>e.startsWith("calendar.")))||null}(e);return{type:"custom:calendar-card-pro",entities:t?[t]:[],days_to_show:3,show_location:!0,_description:t?void 0:"A calendar card that displays events from multiple calendars with individual styling. Add a calendar integration to Home Assistant to use this card."}}var Be={daysOfWeek:["нед.","пон.","вт.","ср.","четв.","пет.","съб."],fullDaysOfWeek:["неделя","понеделник","вторник","сряда","четвъртък","петък","събота"],months:["ян.","фев.","мар","апр.","май","юни","юли","авг.","септ.","окт.","ноем.","дек."],allDay:"цял ден",multiDay:"до",at:"в",endsToday:"приключва днес",endsTomorrow:"приключва утре",noEvents:"Няма планирани събития",loading:"Зареждане на календара със събития...",error:"Грешка: календарът не е намерен или не е конфигуриран правилно"},Je={daysOfWeek:["Ne","Po","Út","St","Čt","Pá","So"],fullDaysOfWeek:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],months:["Led","Úno","Bře","Dub","Kvě","Čvn","Čvc","Srp","Zář","Říj","Lis","Pro"],allDay:"celý den",multiDay:"do",at:"v",endsToday:"končí dnes",endsTomorrow:"končí zítra",noEvents:"Žádné nadcházející události",loading:"Načítání událostí z kalendáře...",error:"Chyba: Entita kalendáře nebyla nalezena nebo je nesprávně nakonfigurována"},Ze={daysOfWeek:["Dg","Dl","Dm","Dc","Dj","Dv","Ds"],fullDaysOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],months:["Gen","Febr","Març","Abr","Maig","Juny","Jul","Ag","Set","Oct","Nov","Des"],allDay:"tot el dia",multiDay:"fins a",at:"a les",endsToday:"acaba avui",endsTomorrow:"acaba damà",noEvents:"Cap event proper",loading:"Carregant events...",error:"Error: No s'ha trobat l'entitat del calendari o aquesta està mal configurada"},Ge={daysOfWeek:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],fullDaysOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],months:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],allDay:"hele dagen",multiDay:"indtil",at:"kl.",endsToday:"slutter i dag",endsTomorrow:"slutter i morgen",noEvents:"Ingen kommende begivenheder",loading:"Indlæser kalenderbegivenheder...",error:"Fejl: Kalenderenheden blev ikke fundet eller er ikke konfigureret korrekt"},qe={daysOfWeek:["So","Mo","Di","Mi","Do","Fr","Sa"],fullDaysOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],months:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],allDay:"ganztägig",multiDay:"bis",at:"um",endsToday:"endet heute",endsTomorrow:"endet morgen",noEvents:"Keine anstehenden Termine",loading:"Kalendereinträge werden geladen...",error:"Fehler: Kalender-Entität nicht gefunden oder falsch konfiguriert",editor:{calendar_entities:"Kalender Entitäten",calendar:"Kalender",entity_identification:"Entitäts-Identifikation",entity:"Entität",add_calendar:"Kalender hinzufügen",remove:"Entfernen",convert_to_advanced:"In Erweitert umwandeln",simple:"Einfach",display_settings:"Ansichts-Einstellungen",label:"Label",label_type:"Label-Typ",none:"Keiner",text_emoji:"Text/Emoji",icon:"Symbol",text_value:"Textwert",text_label_note:"Text oder Emoji wie '📅 Mein Kalender' eingeben",image:"Bild",image_label_note:"Pfad zum Bild wie /local/calendar.jpg",label_note:"Benutzerdefiniertes Label für diesen Kalender.",colors:"Farben",event_color:"Ereignisfarbe",entity_color_note:"Benutzerdefinierte Farbe für Ereignistitel aus diesem Kalender.",accent_color:"Akzentfarbe",entity_accent_color_note:"Benutzerdefinierte Akzentfarbe für die vertikale Linie der Ereignisse in diesem Kalender. Diese Farbe wird auch als Hintergrundfarbe für Ereignisse verwendet, wenn 'event_background_opacity' >0 ist.",label_icon_color:"Label-Icon-Farbe",label_icon_color_note:"Benutzerdefinierte Farbe für das Label-Icon. Wenn nicht gesetzt, übernimmt das Icon die Standard-Textfarbe.",event_filtering:"Ereignisfilterung",blocklist:"Sperrliste",blocklist_note:"Durch Pipes getrennte Liste von Begriffen zum Ausschließen von Ereignissen. Ereignisse, deren Titel einen dieser Begriffe enthalten, werden ausgeblendet. Beispiel: 'Privat|Meeting|Konferenz'",allowlist:"Zulassungsliste",allowlist_note:"Durch Pipes getrennte Liste von Begriffen zur Einbeziehung von Ereignissen. Wenn diese Liste nicht leer ist, werden nur Ereignisse angezeigt, deren Titel einen dieser Begriffe enthalten. Beispiel: 'Geburtstag|Jahrestag|Wichtig'",entity_overrides:"Entitäts-Überschreibungen",entity_overrides_note:"Diese Einstellungen überschreiben die globalen Haupteinstellungen für diesen bestimmten Kalender.",compact_events_to_show:"Kompakte Ereignisse zur Ansicht",entity_compact_events_note:"Anzahl der Ereignisse überschreiben, die für diesen Kalender im Kompaktmodus angezeigt werden sollen.",show_time:"Zeit anzeigen",entity_show_time_note:"Ereigniszeiten nur für diesen Kalender anzeigen oder ausblenden.",show_location:"Ort anzeigen",entity_show_location_note:"Veranstaltungsorte nur für diesen Kalender anzeigen oder ausblenden.",show_description:"Beschreibung anzeigen",entity_show_description_note:"Beschreibungen von Ereignissen nur für diesen Kalender anzeigen oder ausblenden.",split_multiday_events:"Mehrtägige Ereignisse aufteilen",entity_split_multiday_note:"Für diesen Kalender mehrtägige Ereignisse in einzelne Tagessegmente aufteilen.",core_settings:"Haupteinstellungen",time_range:"Zeitbereich",time_range_note:"Dieser Zeitbereich definiert den regulären Anzeigemodus, der zur erweiterten Ansicht wird, wenn der Kompaktmodus konfiguriert ist.",days_to_show:"Anzahl Tage anzeigen",days_to_show_note:"Anzahl der Tage, die von der API abgerufen und im Kalender angezeigt werden sollen.",start_date:"Startdatum",start_date_mode:"Startdatumsmodus",start_date_mode_default:"Standard (heute)",start_date_mode_fixed:"Festes Datum",start_date_mode_offset:"Relatives Offset",start_date_fixed:"Festes Startdatum",start_date_offset:"Relatives Offset von heute",start_date_offset_note:"Eine positive oder negative Zahl eingeben, um den Wert vom heutigen Tag abzuweichen (z.B. +1 für morgen, -5 für vor fünf Tagen).",compact_mode:"Kompaktmodus",compact_mode_note:"Im Kompaktmodus werden zunächst weniger Tage und/oder Ereignisse angezeigt. Die Karte kann durch Tippen oder Halten auf die Vollansicht erweitert werden, wenn sie mit der Aktion 'Erweitern' konfiguriert ist.",compact_no_limits_warning:"Es ist eine Aktion zum Ausklappen konfiguriert, aber es sind keine Grenzwerte für die kompakte Ansicht gesetzt. Setze „Anzahl kompakter Tage anzeigen“ und/oder „Kompakte Ereignisse zur Ansicht“ niedriger als die Werte der vollen Ansicht sonst sieht die Karte vor und nach dem Ausklappen identisch aus.",compact_days_to_show:"Anzahl kompakter Tage anzeigen",compact_days_inert_warning:"„Anzahl kompakter Tage anzeigen“ ist nicht niedriger als „Anzahl Tage anzeigen“ und hat daher keine Wirkung. Verringere den Wert, um Tage in der kompakten Ansicht auszublenden.",compact_events_to_show_note:"Wirkt sich nur aus, wenn der gewählte Zeitraum mehr Termine als diesen Wert enthält.",compact_events_complete_days:"Komplette Tage im Kompaktmodus",compact_events_complete_days_note:"Wenn aktiviert und mindestens ein Ereignis eines Tages angezeigt wird, werden alle Ereignisse dieses Tages angezeigt.",event_visibility:"Sichtbarkeit von Ereignissen",show_past_events:"Vergangene Ereignisse anzeigen",show_empty_days:"Leere Tage anzeigen",filter_duplicates:"Doppelte Ereignisse filtern",filter_duplicates_note:"Entfernt Ereignisse mit gleichem Titel, gleicher Zeit und gleichem Ort. Die Kopie aus dem zuerst aufgeführten Kalender wird beibehalten, einschließlich Label und Farbe.",language_time_formats:"Sprach- & Zeitformate",language:"Sprache",language_mode:"Sprachmodus",language_code:"Sprachcode",language_code_note:"Einen 2-Buchstaben-Sprachcode eingeben (z.B., 'en', 'de', 'fr')",time_24h:"Zeitformat",system:"Systemstandard",custom:"Benutzerdefiniert","12h":"12-Stunden","24h":"24-Stunden",appearance_layout:"Aussehen & Layout",title_styling:"Titelgestaltung",title:"Titel",title_font_size:"Schriftgröße",title_color:"Farbe",card_styling:"Kartengestaltung",background_color:"Hintergrundfarbe",height_mode:"Höhenmodus",auto:"Automatische Höhe",fixed:"Feste Höhe",maximum:"Maximale Höhe",height_value:"Höhenangabe",fixed_height_note:"Karte behält immer genau diese Höhe bei, unabhängig vom Inhalt",max_height_note:"Karte wächst mit Inhalt bis zu dieser maximalen Höhe",event_styling:"Ereignisgestaltung",event_background_opacity:"Ereignishintergrund-Opazität",vertical_line_width:"Vertikale Linienbreite",spacing_alignment:"Abstand & Ausrichtung",day_spacing:"Abstand Tag",event_spacing:"Abstand Ereignis",additional_card_spacing:"Zusätzlicher Kartenabstand",date_display:"Datumsanzeige",vertical_alignment:"Vertikale Ausrichtung",date_vertical_alignment:"Vertikale Datumsausrichtung",event_icon_alignment:"Icon-Ausrichtung",event_icon_vertical_alignment:"Vertikale Icon-Ausrichtung",date_formatting:"Datumsformatierung",top:"Oben",middle:"Mitte",bottom:"Unten",weekday_font:"Wochentag Schrift",weekday_font_size:"Wochentag Schriftgröße",weekday_color:"Wochentag Farbe",day_font:"Tag Schrift",day_font_size:"Tag Schriftgröße",day_color:"Tag Farbe",month_font:"Monat Schrift",show_month:"Monat anzeigen",month_font_size:"Monat Schriftgröße",month_color:"Monat Farbe",weekend_highlighting:"Wochenende Hervorhebung",weekend_weekday_color:"Wochenende Wochentag Farbe",weekend_day_color:"Wochenende Tag Farbe",weekend_month_color:"Wochenende Monat Farbe",today_highlighting:"Heute Hervorhebung",today_weekday_color:"Heute Wochentag Farbe",today_day_color:"Heute Tag Farbe",today_month_color:"Heute Monat Farbe",today_indicator:"Heute Indikator",dot:"Gepunktet",pulse:"Pulsierend",glow:"Glühend",emoji:"Emoji",emoji_value:"Emoji",emoji_indicator_note:"Einzelnes Emoji-Zeichen eingeben wie 🗓️",image_path:"Bildpfad",image_indicator_note:"Pfad zum Bild wie /local/image.jpg",today_indicator_position:"Heute Indikator Position",today_indicator_color:"Heute Indikator Farbe",today_indicator_size:"Heute Indikator Größe",week_numbers_separators:"Wochennummern & Trennzeichen",week_numbers:"Wochennummerm",first_day_of_week:"Erster Tag der Woche",sunday:"Sonntag",monday:"Montag",show_week_numbers:"Wochennummern anzeigen",week_number_note_iso:"ISO (Europa/International): Die erste Woche enthält den ersten Donnerstag des Jahres. Erstellt eine einheitliche Wochennummerierung über die Jahre hinweg (ISO 8601 Standard).",week_number_note_simple:"Einfach (Nord-America): Wochen werden unabhängig vom Wochentag fortlaufend ab dem 1. Januar gezählt. Die erste Woche kann teilweise sein. Intuitiver, aber weniger standardisiert.",show_current_week_number:"Aktuelle Wochennummer anzeigen",week_number_font_size:"Wochennummer Schriftgröße",week_number_color:"Wochennummer Farbe",week_number_background_color:"Wochennummer Hintergerundfarbe",day_separator:"Tagestrenner",show_day_separator:"Tagestrenner anzeigen",day_separator_width:"Tagestrenner Breite",day_separator_color:"Tagestrenner Farbe",week_separator:"Wochentrenner",show_week_separator:"Wochentrenner anzeigen",week_separator_width:"Wochentrenner Breite",week_separator_color:"Wochentrenner Farbe",month_separator:"Monatstrenner",show_month_separator:"Monatstrenner anzeigen",month_separator_width:"Monatstrenner Breite",month_separator_color:"Monatstrenner Farbe",event_display:"Ereignisanzeige",event_title:"Ereignisname",event_font_size:"Ereignis Schriftgröße",empty_day_color:"Leerer Tag Farbe",time:"Zeit",show_single_allday_time:"Zeit für ganztägige Einzelveranstaltungen anzeigen",show_end_time:"Endzeit anzeigen",time_two_digit_hours:"Zweistellige Stunden",time_font_size:"Zeit Schriftgröße",time_color:"Zeit Farbe",time_icon_size:"Zeit Symbol Größe",location:"Ort",remove_location_country:"Land entfernen",location_font_size:"Ort Schriftgröße",location_color:"Ort Farbe",location_icon_size:"Ort Symbol Größe",custom_country_pattern:"Länder nach Muster entfernen",custom_country_pattern_note:"Ländernamen als reguläres Ausdrucksmuster eingeben (z.B., 'USA|United States|Canada'). Bei Ereignissen mit Orten, die mit diesen Mustern enden, wird das Land entfernt.",description:"Beschreibung",description_font_size:"Beschreibung Schriftgröße",description_color:"Beschreibung Farbe",description_icon_size:"Beschreibung Symbol Größe",description_max_lines:"Beschreibung max. Zeilen (0 = unbegrenzt)",progress_indicators:"Fortschrittsindikatoren",show_countdown:"Countdown anzeigen",show_countdown_allday:"Countdown für ganztägige Termine anzeigen",show_progress_bar:"Fortschrittsbalken anzeigen",progress_bar_color:"Fortschrittsbalken Farbe",progress_bar_height:"Fortschrittsbalken Höhe",progress_bar_width:"Fortschrittsbalken Breite",multiday_event_handling:"Mehrtägige Ereignisbehandlung",weather_integration:"Wetterintegration",weather_entity_position:"Wetter-Entität & Position",weather_entity:"Wetter-Entität",weather_position:"Wetterposition",date:"Datum",event:"Ereignis",both:"Beides",date_column_weather:"Datumsspalte Wetter",show_conditions:"Bedingungen anzeigen",show_high_temp:"Hohe Temperatur anzeigen",show_low_temp:"Niedrige Temperatur anzeigen",icon_size:"Symbolgröße",font_size:"Schriftgröße",color:"Farbe",event_row_weather:"Ereignisreihe Wetter",show_temp:"Temperatur anzeigen",show_uv_index:"UV-Index anzeigen",uv_index_threshold:"UV-Index-Schwellenwert",daily_forecast_fallback:"Auf Tagesvorhersage zurückgreifen",interactions:"Interaktionen",tap_action:"Aktion antippen",hold_action:"Aktion halten",more_info:"Weitere Informationen",navigate:"Navigieren",url:"URL",call_service:"Service aufrufen",expand:"Kompakte/Erweiterte Ansicht umschalten",navigation_path:"Navigationspfad",url_path:"URL",service:"Service",service_data:"Service Daten (JSON)",refresh_settings:"Einstellungen aktualisieren",refresh_interval:"Aktualisierungsintervall (Minuten)",refresh_on_navigate:"Aktualisieren beim Zurücknavigieren",deprecated_config_detected:"Veraltete Konfigurationsoptionen erkannt.",deprecated_config_explanation:"Einige Optionen in dieser Konfiguration werden nicht mehr unterstützt.",deprecated_config_update_hint:"Bitte aktualisieren, um die Kompatibilität sicherzustellen.",update_config:"Konfiguration aktualisieren…"}},Qe={daysOfWeek:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],fullDaysOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],months:["Ιαν","Φεβ","Μαρ","Απρ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],allDay:"Ολοήμερο",multiDay:"έως",at:"στις",endsToday:"λήγει σήμερα",endsTomorrow:"λήγει αύριο",noEvents:"Δεν υπάρχουν προγραμματισμένα γεγονότα",loading:"Φόρτωση ημερολογίου...",error:"Σφάλμα: Η οντότητα ημερολογίου δεν βρέθηκε ή δεν έχει ρυθμιστεί σωστά"},Xe={daysOfWeek:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],fullDaysOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],allDay:"all day",multiDay:"until",at:"at",endsToday:"ends today",endsTomorrow:"ends tomorrow",noEvents:"No upcoming events",loading:"Loading calendar events...",error:"Error: Calendar entity not found or improperly configured",editor:{calendar_entities:"Calendar Entities",calendar:"Calendar",entity_identification:"Entity Identification",entity:"Entity",add_calendar:"Add calendar",remove:"Remove",convert_to_advanced:"Convert to advanced",simple:"Simple",display_settings:"Display Settings",label:"Label",label_type:"Label Type",none:"None",text_emoji:"Text/Emoji",icon:"Icon",text_value:"Text Value",text_label_note:"Enter text or emoji like '📅 My Calendar'",image:"Image",image_label_note:"Path to image like /local/calendar.jpg",label_note:"Custom label for this calendar.",colors:"Colors",event_color:"Event color",entity_color_note:"Custom color for event titles from this calendar.",accent_color:"Accent color",entity_accent_color_note:"Custom accent color for the vertical line of events from this calendar. This color will also be used as the event background color when 'event_background_opacity' is >0.",label_icon_color:"Label icon color",label_icon_color_note:"Custom color for the label icon. If not set, the icon inherits the default text color.",event_filtering:"Event Filtering",blocklist:"Blocklist",blocklist_note:"Pipe-separated list of terms to exclude events. Events with titles containing any of these terms will be hidden. Example: 'Private|Meeting|Conference'",allowlist:"Allowlist",allowlist_note:"Pipe-separated list of terms to include events. If not empty, only events with titles containing any of these terms will be shown. Example: 'Birthday|Anniversary|Important'",entity_overrides:"Entity Overrides",entity_overrides_note:"These settings will override the global core settings for this specific calendar.",compact_events_to_show:"Compact events to show",entity_compact_events_note:"Override the number of events to show in compact mode for this calendar.",show_time:"Show time",entity_show_time_note:"Show or hide event times for this calendar only.",show_location:"Show location",entity_show_location_note:"Show or hide event locations for this calendar only.",show_description:"Show description",entity_show_description_note:"Show or hide event descriptions for this calendar only.",split_multiday_events:"Split multi-day events",entity_split_multiday_note:"Split multi-day events into individual day segments for this calendar.",core_settings:"Core Settings",time_range:"Time Range",time_range_note:"This time range defines the regular display mode, which becomes the expanded view if compact mode is configured.",days_to_show:"Days to show",days_to_show_note:"Number of days to fetch from API and display in the calendar",start_date:"Start date",start_date_mode:"Start date mode",start_date_mode_default:"Default (today)",start_date_mode_fixed:"Fixed date",start_date_mode_offset:"Relative offset",start_date_fixed:"Fixed start date",start_date_offset:"Relative offset from today",start_date_offset_note:"Enter a positive or negative number to offset from today (e.g., +1 for tomorrow, -5 for five days ago).",compact_mode:"Compact Mode",compact_mode_note:"Compact mode shows fewer days and/or events initially. The card can be expanded to full view using a tap or hold action if configured with action: 'expand'.",compact_no_limits_warning:'An expand action is configured, but no compact limits are set. Set "Compact days to show" and/or "Compact events to show" below your full-view values — otherwise the card looks identical before and after expanding.',compact_days_to_show:"Compact days to show",compact_days_inert_warning:'"Compact days to show" is not lower than "Days to show", so it has no effect. Lower it to hide days in compact mode.',compact_events_to_show_note:"Only takes effect when the selected day range contains more events than this.",compact_events_complete_days:"Complete days in compact mode",compact_events_complete_days_note:"When enabled, if at least one event from a day is shown, all events from that day will be displayed.",event_visibility:"Event Visibility",show_past_events:"Show past events",show_empty_days:"Show empty days",filter_duplicates:"Filter duplicate events",filter_duplicates_note:"Removes events with the same title, time and location. The copy from the calendar listed first is kept, along with its label and color.",language_time_formats:"Language & Time Formats",language:"Language",language_mode:"Language Mode",language_code:"Language Code",language_code_note:"Enter a 2-letter language code (e.g., 'en', 'de', 'fr')",time_24h:"Time format",system:"System default",custom:"Custom","12h":"12-hour","24h":"24-hour",appearance_layout:"Appearance & Layout",title_styling:"Title Styling",title:"Title",title_font_size:"Title font size",title_color:"Title color",card_styling:"Card Styling",background_color:"Background color",height_mode:"Height mode",auto:"Auto height",fixed:"Fixed height",maximum:"Maximum height",height_value:"Height value",fixed_height_note:"Card always maintains exactly this height regardless of content",max_height_note:"Card grows with content up to this maximum height",event_styling:"Event Styling",event_background_opacity:"Event background opacity",vertical_line_width:"Vertical line width",spacing_alignment:"Spacing & Alignment",day_spacing:"Day spacing",event_spacing:"Event spacing",additional_card_spacing:"Additional card spacing",date_display:"Date Display",vertical_alignment:"Vertical Alignment",date_vertical_alignment:"Date vertical alignment",event_icon_alignment:"Icon Alignment",event_icon_vertical_alignment:"Icon vertical alignment",date_formatting:"Date Formatting",top:"Top",middle:"Middle",bottom:"Bottom",weekday_font:"Weekday font",weekday_font_size:"Weekday font size",weekday_color:"Weekday color",day_font:"Day font",day_font_size:"Day font size",day_color:"Day color",month_font:"Month font",show_month:"Show month",month_font_size:"Month font size",month_color:"Month color",weekend_highlighting:"Weekend Highlighting",weekend_weekday_color:"Weekend weekday color",weekend_day_color:"Weekend day color",weekend_month_color:"Weekend month color",today_highlighting:"Today Highlighting",today_weekday_color:"Today weekday color",today_day_color:"Today day color",today_month_color:"Today month color",today_indicator:"Today indicator",dot:"Dot",pulse:"Pulse",glow:"Glow",emoji:"Emoji",emoji_value:"Emoji",emoji_indicator_note:"Enter a single emoji character like 🗓️",image_path:"Image path",image_indicator_note:"Path to image like /local/image.jpg",today_indicator_position:"Today indicator position",today_indicator_color:"Today indicator color",today_indicator_size:"Today indicator size",week_numbers_separators:"Week Numbers & Separators",week_numbers:"Week numbers",first_day_of_week:"First day of week",sunday:"Sunday",monday:"Monday",show_week_numbers:"Show week numbers",week_number_note_iso:"ISO (Europe/International): First week contains the first Thursday of the year. Creates consistent week numbering across years (ISO 8601 standard).",week_number_note_simple:"Simple (North America): Weeks count sequentially from January 1st regardless of weekday. First week may be partial. More intuitive but less standardized.",show_current_week_number:"Show current week number",week_number_font_size:"Week number font size",week_number_color:"Week number color",week_number_background_color:"Week number background color",day_separator:"Day separator",show_day_separator:"Show day separator",day_separator_width:"Day separator width",day_separator_color:"Day separator color",week_separator:"Week separator",show_week_separator:"Show week separator",week_separator_width:"Week separator width",week_separator_color:"Week separator color",month_separator:"Month separator",show_month_separator:"Show month separator",month_separator_width:"Month separator width",month_separator_color:"Month separator color",event_display:"Event Display",event_title:"Event Title",event_font_size:"Event font size",empty_day_color:"Empty day color",time:"Time",show_single_allday_time:"Show time for all-day single events",show_end_time:"Show end time",time_two_digit_hours:"Two-digit hours",time_font_size:"Time font size",time_color:"Time color",time_icon_size:"Time icon size",location:"Location",remove_location_country:"Remove location country",location_font_size:"Location font size",location_color:"Location color",location_icon_size:"Location icon size",description:"Description",description_font_size:"Description font size",description_color:"Description color",description_icon_size:"Description icon size",description_max_lines:"Description max lines (0 = unlimited)",custom_country_pattern:"Country patterns to remove",custom_country_pattern_note:"Enter country names as a regular expression pattern (e.g., 'USA|United States|Canada'). Events with locations ending with these patterns will have the country removed.",progress_indicators:"Progress Indicators",show_countdown:"Show countdown",show_countdown_allday:"Show countdown for all-day events",show_progress_bar:"Show progress bar",progress_bar_color:"Progress bar color",progress_bar_height:"Progress bar height",progress_bar_width:"Progress bar width",multiday_event_handling:"Multi-day Event Handling",weather_integration:"Weather Integration",weather_entity_position:"Weather Entity & Position",weather_entity:"Weather entity",weather_position:"Weather position",date:"Date",event:"Event",both:"Both",date_column_weather:"Date Column Weather",show_conditions:"Show conditions",show_high_temp:"Show high temperature",show_low_temp:"Show low temperature",icon_size:"Icon size",font_size:"Font size",color:"Color",event_row_weather:"Event Row Weather",show_temp:"Show temperature",show_uv_index:"Show UV index",uv_index_threshold:"UV index threshold",daily_forecast_fallback:"Use daily forecast as fallback",interactions:"Interactions",tap_action:"Tap Action",hold_action:"Hold Action",more_info:"More Info",navigate:"Navigate",url:"URL",call_service:"Call Service",expand:"Toggle Compact/Expanded View",navigation_path:"Navigation path",url_path:"URL",service:"Service",service_data:"Service data (JSON)",refresh_settings:"Refresh Settings",refresh_interval:"Refresh interval (minutes)",refresh_on_navigate:"Refresh when navigating back",deprecated_config_detected:"Deprecated config options detected.",deprecated_config_explanation:"Some options in your configuration are no longer supported.",deprecated_config_update_hint:"Please update to ensure compatibility.",update_config:"Update config…"}},et={daysOfWeek:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],fullDaysOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],allDay:"all day",multiDay:"until",at:"at",endsToday:"ends today",endsTomorrow:"ends tomorrow",noEvents:"No upcoming events",loading:"Loading calendar events...",error:"Error: Calendar entity not found or improperly configured",editor:{calendar_entities:"Calendar Entities",calendar:"Calendar",entity_identification:"Entity Identification",entity:"Entity",add_calendar:"Add calendar",remove:"Remove",convert_to_advanced:"Convert to advanced",simple:"Simple",display_settings:"Display Settings",label:"Label",label_type:"Label Type",none:"None",text_emoji:"Text/Emoji",icon:"Icon",text_value:"Text Value",text_label_note:"Enter text or emoji like '📅 My Calendar'",image:"Image",image_label_note:"Path to image like /local/calendar.jpg",label_note:"Custom label for this calendar.",colors:"Colours",event_color:"Event colour",entity_color_note:"Custom colour for event titles from this calendar.",accent_color:"Accent colour",entity_accent_color_note:"Custom accent colour for the vertical line of events from this calendar. This colour will also be used as the event background colour when 'event_background_opacity' is >0.",label_icon_color:"Label icon colour",label_icon_color_note:"Custom colour for the label icon. If not set, the icon inherits the default text colour.",event_filtering:"Event Filtering",blocklist:"Blocklist",blocklist_note:"Pipe-separated list of terms to exclude events. Events with titles containing any of these terms will be hidden. Example: 'Private|Meeting|Conference'",allowlist:"Allowlist",allowlist_note:"Pipe-separated list of terms to include events. If not empty, only events with titles containing any of these terms will be shown. Example: 'Birthday|Anniversary|Important'",entity_overrides:"Entity Overrides",entity_overrides_note:"These settings will override the global core settings for this specific calendar.",compact_events_to_show:"Compact events to show",entity_compact_events_note:"Override the number of events to show in compact mode for this calendar.",show_time:"Show time",entity_show_time_note:"Show or hide event times for this calendar only.",show_location:"Show location",entity_show_location_note:"Show or hide event locations for this calendar only.",show_description:"Show description",entity_show_description_note:"Show or hide event descriptions for this calendar only.",split_multiday_events:"Split multi-day events",entity_split_multiday_note:"Split multi-day events into individual day segments for this calendar.",core_settings:"Core Settings",time_range:"Time Range",time_range_note:"This time range defines the regular display mode, which becomes the expanded view if compact mode is configured.",days_to_show:"Days to show",days_to_show_note:"Number of days to fetch from API and display in the calendar",start_date:"Start date",start_date_mode:"Start date mode",start_date_mode_default:"Default (today)",start_date_mode_fixed:"Fixed date",start_date_mode_offset:"Relative offset",start_date_fixed:"Fixed start date",start_date_offset:"Relative offset from today",start_date_offset_note:"Enter a positive or negative number to offset from today (e.g., +1 for tomorrow, -5 for five days ago).",compact_mode:"Compact Mode",compact_mode_note:"Compact mode shows fewer days and/or events initially. The card can be expanded to full view using a tap or hold action if configured with action: 'expand'.",compact_no_limits_warning:'An expand action is configured, but no compact limits are set. Set "Compact days to show" and/or "Compact events to show" below your full-view values — otherwise the card looks identical before and after expanding.',compact_days_to_show:"Compact days to show",compact_days_inert_warning:'"Compact days to show" is not lower than "Days to show", so it has no effect. Lower it to hide days in compact mode.',compact_events_to_show_note:"Only takes effect when the selected day range contains more events than this.",compact_events_complete_days:"Complete days in compact mode",compact_events_complete_days_note:"When enabled, if at least one event from a day is shown, all events from that day will be displayed.",event_visibility:"Event Visibility",show_past_events:"Show past events",show_empty_days:"Show empty days",filter_duplicates:"Filter duplicate events",filter_duplicates_note:"Removes events with the same title, time and location. The copy from the calendar listed first is kept, along with its label and colour.",language_time_formats:"Language & Time Formats",language:"Language",language_mode:"Language Mode",language_code:"Language Code",language_code_note:"Enter a 2-letter language code (e.g., 'en', 'de', 'fr')",time_24h:"Time format",system:"System default",custom:"Custom","12h":"12-hour","24h":"24-hour",appearance_layout:"Appearance & Layout",title_styling:"Title Styling",title:"Title",title_font_size:"Title font size",title_color:"Title colour",card_styling:"Card Styling",background_color:"Background colour",height_mode:"Height mode",auto:"Auto height",fixed:"Fixed height",maximum:"Maximum height",height_value:"Height value",fixed_height_note:"Card always maintains exactly this height regardless of content",max_height_note:"Card grows with content up to this maximum height",event_styling:"Event Styling",event_background_opacity:"Event background opacity",vertical_line_width:"Vertical line width",spacing_alignment:"Spacing & Alignment",day_spacing:"Day spacing",event_spacing:"Event spacing",additional_card_spacing:"Additional card spacing",date_display:"Date Display",vertical_alignment:"Vertical Alignment",date_vertical_alignment:"Date vertical alignment",event_icon_alignment:"Icon Alignment",event_icon_vertical_alignment:"Icon vertical alignment",date_formatting:"Date Formatting",top:"Top",middle:"Middle",bottom:"Bottom",weekday_font:"Weekday font",weekday_font_size:"Weekday font size",weekday_color:"Weekday colour",day_font:"Day font",day_font_size:"Day font size",day_color:"Day colour",month_font:"Month font",show_month:"Show month",month_font_size:"Month font size",month_color:"Month colour",weekend_highlighting:"Weekend Highlighting",weekend_weekday_color:"Weekend weekday colour",weekend_day_color:"Weekend day colour",weekend_month_color:"Weekend month colour",today_highlighting:"Today Highlighting",today_weekday_color:"Today weekday colour",today_day_color:"Today day colour",today_month_color:"Today month colour",today_indicator:"Today indicator",dot:"Dot",pulse:"Pulse",glow:"Glow",emoji:"Emoji",emoji_value:"Emoji",emoji_indicator_note:"Enter a single emoji character like 🗓️",image_path:"Image path",image_indicator_note:"Path to image like /local/image.jpg",today_indicator_position:"Today indicator position",today_indicator_color:"Today indicator colour",today_indicator_size:"Today indicator size",week_numbers_separators:"Week Numbers & Separators",week_numbers:"Week numbers",first_day_of_week:"First day of week",sunday:"Sunday",monday:"Monday",show_week_numbers:"Show week numbers",week_number_note_iso:"ISO (Europe/International): First week contains the first Thursday of the year. Creates consistent week numbering across years (ISO 8601 standard).",week_number_note_simple:"Simple (North America): Weeks count sequentially from January 1st regardless of weekday. First week may be partial. More intuitive but less standardized.",show_current_week_number:"Show current week number",week_number_font_size:"Week number font size",week_number_color:"Week number colour",week_number_background_color:"Week number background colour",day_separator:"Day separator",show_day_separator:"Show day separator",day_separator_width:"Day separator width",day_separator_color:"Day separator colour",week_separator:"Week separator",show_week_separator:"Show week separator",week_separator_width:"Week separator width",week_separator_color:"Week separator colour",month_separator:"Month separator",show_month_separator:"Show month separator",month_separator_width:"Month separator width",month_separator_color:"Month separator colour",event_display:"Event Display",event_title:"Event Title",event_font_size:"Event font size",empty_day_color:"Empty day colour",time:"Time",show_single_allday_time:"Show time for all-day single events",show_end_time:"Show end time",time_two_digit_hours:"Two-digit hours",time_font_size:"Time font size",time_color:"Time colour",time_icon_size:"Time icon size",location:"Location",remove_location_country:"Remove location country",location_font_size:"Location font size",location_color:"Location colour",location_icon_size:"Location icon size",description:"Description",description_font_size:"Description font size",description_color:"Description colour",description_icon_size:"Description icon size",description_max_lines:"Description max lines (0 = unlimited)",custom_country_pattern:"Country patterns to remove",custom_country_pattern_note:"Enter country names as a regular expression pattern (e.g., 'USA|United States|Canada'). Events with locations ending with these patterns will have the country removed.",progress_indicators:"Progress Indicators",show_countdown:"Show countdown",show_countdown_allday:"Show countdown for all-day events",show_progress_bar:"Show progress bar",progress_bar_color:"Progress bar color",progress_bar_height:"Progress bar height",progress_bar_width:"Progress bar width",multiday_event_handling:"Multi-day Event Handling",weather_integration:"Weather Integration",weather_entity_position:"Weather Entity & Position",weather_entity:"Weather entity",weather_position:"Weather position",date:"Date",event:"Event",both:"Both",date_column_weather:"Date Column Weather",show_conditions:"Show conditions",show_high_temp:"Show high temperature",show_low_temp:"Show low temperature",icon_size:"Icon size",font_size:"Font size",color:"Color",event_row_weather:"Event Row Weather",show_temp:"Show temperature",show_uv_index:"Show UV index",uv_index_threshold:"UV index threshold",daily_forecast_fallback:"Use daily forecast as fallback",interactions:"Interactions",tap_action:"Tap Action",hold_action:"Hold Action",more_info:"More Info",navigate:"Navigate",url:"URL",call_service:"Call Service",expand:"Toggle Compact/Expanded View",navigation_path:"Navigation path",url_path:"URL",service:"Service",service_data:"Service data (JSON)",refresh_settings:"Refresh Settings",refresh_interval:"Refresh interval (minutes)",refresh_on_navigate:"Refresh when navigating back",deprecated_config_detected:"Deprecated config options detected.",deprecated_config_explanation:"Some options in your configuration are no longer supported.",deprecated_config_update_hint:"Please update to ensure compatibility.",update_config:"Update config…"}},tt={daysOfWeek:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],fullDaysOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],months:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],allDay:"todo el día",multiDay:"hasta",at:"a las",endsToday:"termina hoy",endsTomorrow:"termina mañana",noEvents:"No hay eventos próximos",loading:"Cargando eventos del calendario...",error:"Error: La entidad del calendario no se encontró o está mal configurada"},at={daysOfWeek:["P","E","T","K","N","R","L"],fullDaysOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],months:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],allDay:"kogu päev",multiDay:"kuni",at:"kell",endsToday:"lõpeb täna",endsTomorrow:"lõpeb homme",noEvents:"Tulevasi sündmusi pole",loading:"Kalendrisündmuste laadimine...",error:"Viga: kalendri entiteeti ei leitud või see on valesti seadistatud",editor:{calendar_entities:"Kalendri entiteedid",calendar:"Kalender",entity_identification:"Entiteedi tuvastus",entity:"Entiteet",add_calendar:"Lisa kalender",remove:"Eemalda",convert_to_advanced:"Muuda täpsemaks",simple:"Lihtne",display_settings:"Kuvamise seaded",label:"Silt",label_type:"Sildi tüüp",none:"Puudub",text_emoji:"Tekst / Emoji",icon:"Ikoon",text_value:"Teksti väärtus",text_label_note:"Sisesta tekst või emoji, nt „📅 Minu kalender“",image:"Pilt",image_label_note:"Pildi asukoht, nt /local/calendar.jpg",label_note:"Selle kalendri kohandatud silt.",colors:"Värvid",event_color:"Sündmuse värv",entity_color_note:"Selle kalendri sündmuste pealkirjade kohandatud värv.",accent_color:"Aktsentvärv",entity_accent_color_note:"Selle kalendri sündmuste vertikaalse joone aktsentvärv. Kasutatakse ka sündmuse taustana, kui „event_background_opacity“ on >0.",label_icon_color:"Sildi ikooni värv",label_icon_color_note:"Kohandatud värv sildi ikoonile. Kui pole määratud, pärib ikoon vaikimisi teksti värvi.",event_filtering:"Sündmuste filtreerimine",blocklist:"Blokeerimisnimekiri",blocklist_note:"Toruga eraldatud terminite loend sündmuste välistamiseks. Sündmused, mille pealkiri sisaldab mõnda neist terminitest, peidetakse. Näide: „Privaatne|Koosolek|Konverents“",allowlist:"Lubatud nimekiri",allowlist_note:"Toruga eraldatud terminite loend sündmuste lubamiseks. Kui pole tühi, kuvatakse ainult sündmused, mille pealkiri sisaldab neid termineid. Näide: „Sünnipäev|Aastapäev|Tähtis“",entity_overrides:"Entiteedi ülekirjutused",entity_overrides_note:"Need seaded kirjutavad selle konkreetse kalendri puhul üle globaalsed põhiseaded.",compact_events_to_show:"Kompaktrežiimis kuvatavad sündmused",entity_compact_events_note:"Ülekirjutab kompaktrežiimis kuvatavate sündmuste arvu selle kalendri jaoks.",show_time:"Näita kellaaega",entity_show_time_note:"Näita või peida sündmuste kellaajad ainult selle kalendri jaoks.",show_location:"Näita asukohta",entity_show_location_note:"Näita või peida sündmuste asukohad ainult selle kalendri jaoks.",show_description:"Näita kirjeldust",entity_show_description_note:"Näita või peida sündmuste kirjeldused ainult selle kalendri jaoks.",split_multiday_events:"Jaga mitmepäevased sündmused",entity_split_multiday_note:"Jaga mitmepäevased sündmused eraldi päevadeks selle kalendri jaoks.",core_settings:"Põhiseaded",time_range:"Ajaperiood",time_range_note:"See ajaperiood määrab tavavaate, mis muutub kompaktrežiimi korral laiendatud vaateks.",days_to_show:"Kuvatavate päevade arv",days_to_show_note:"API-st päringuga toodavate ja kalendris kuvatavate päevade arv",start_date:"Alguskuupäev",start_date_mode:"Alguskuupäeva režiim",start_date_mode_default:"Vaikimisi (täna)",start_date_mode_fixed:"Fikseeritud kuupäev",start_date_mode_offset:"Suhteline nihe",start_date_fixed:"Fikseeritud alguskuupäev",start_date_offset:"Suhteline nihe tänasest",start_date_offset_note:"Sisesta positiivne või negatiivne number (nt +1 = homme, -5 = viis päeva tagasi).",compact_mode:"Kompaktrežiim",compact_mode_note:"Kompaktrežiim kuvab algselt vähem päevi ja/või sündmusi. Kaarti saab laiendada puudutuse või hoidmisega, kui tegevuseks on määratud „expand“.",compact_no_limits_warning:"Laiendamise toiming on seadistatud, kuid kompaktrežiimi piiranguid pole määratud. Määra „Kompaktrežiimis kuvatavad päevad“ ja/või „Kompaktrežiimis kuvatavad sündmused“ väiksemaks kui täisvaate väärtused muidu näeb kaart enne ja pärast laiendamist ühesugune välja.",compact_days_to_show:"Kompaktrežiimis kuvatavad päevad",compact_days_inert_warning:"„Kompaktrežiimis kuvatavad päevad“ ei ole väiksem kui „Kuvatavate päevade arv“, seega sellel pole mõju. Vähenda seda, et kompaktrežiimis päevi peita.",compact_events_to_show_note:"Rakendub ainult siis, kui valitud päevavahemikus on rohkem sündmusi kui see arv.",compact_events_complete_days:"Täielikud päevad kompaktrežiimis",compact_events_complete_days_note:"Kui lubatud ja vähemalt üks sündmus päevast on kuvatud, näidatakse kõiki selle päeva sündmusi.",event_visibility:"Sündmuste nähtavus",show_past_events:"Näita möödunud sündmusi",show_empty_days:"Näita tühje päevi",filter_duplicates:"Filtreeri duplikaadid",filter_duplicates_note:"Eemaldab sündmused, millel on sama pealkiri, aeg ja asukoht. Alles jääb esimesena loetletud kalendri koopia koos selle sildi ja värviga.",language_time_formats:"Keel ja ajavormingud",language:"Keel",language_mode:"Keele režiim",language_code:"Keelekood",language_code_note:"Sisesta 2-täheline keelekood (nt „et“, „en“, „de“)",time_24h:"Ajavorming",system:"Süsteemi vaikimisi",custom:"Kohandatud","12h":"12-tunnine","24h":"24-tunnine",appearance_layout:"Välimus ja paigutus",title_styling:"Pealkirja stiil",title:"Pealkiri",title_font_size:"Pealkirja fondi suurus",title_color:"Pealkirja värv",card_styling:"Kaardi stiil",background_color:"Taustavärv",height_mode:"Kõrguse režiim",auto:"Automaatne kõrgus",fixed:"Fikseeritud kõrgus",maximum:"Maksimaalne kõrgus",height_value:"Kõrguse väärtus",fixed_height_note:"Kaart säilitab alati täpselt selle kõrguse sõltumata sisust",max_height_note:"Kaart kasvab koos sisuga kuni selle maksimaalse kõrguseni",event_styling:"Sündmuste stiil",event_background_opacity:"Sündmuse tausta läbipaistvus",vertical_line_width:"Vertikaalse joone laius",spacing_alignment:"Vahed ja joondus",day_spacing:"Päevade vahe",event_spacing:"Sündmuste vahe",additional_card_spacing:"Täiendav kaardivahe",date_display:"Kuupäeva kuvamine",vertical_alignment:"Vertikaalne joondus",date_vertical_alignment:"Kuupäeva vertikaalne joondus",event_icon_alignment:"Ikoonide joondus",event_icon_vertical_alignment:"Ikoonide vertikaalne joondus",date_formatting:"Kuupäeva vorming",top:"Üleval",middle:"Keskel",bottom:"All",weekday_font:"Nädalapäeva font",weekday_font_size:"Nädalapäeva fondi suurus",weekday_color:"Nädalapäeva värv",day_font:"Päeva font",day_font_size:"Päeva fondi suurus",day_color:"Päeva värv",month_font:"Kuu font",show_month:"Näita kuud",month_font_size:"Kuu fondi suurus",month_color:"Kuu värv",weekend_highlighting:"Nädalavahetuse esiletõstmine",weekend_weekday_color:"Nädalavahetuse nädalapäeva värv",weekend_day_color:"Nädalavahetuse päeva värv",weekend_month_color:"Nädalavahetuse kuu värv",today_highlighting:"Tänase päeva esiletõstmine",today_weekday_color:"Tänase päeva nädalapäeva värv",today_day_color:"Tänase päeva numbri värv",today_month_color:"Tänase päeva kuu värv",today_indicator:"Tänase päeva indikaator",dot:"Täpp",pulse:"Pulseeriv",glow:"Helendus",emoji:"Emoji",emoji_value:"Emoji",emoji_indicator_note:"Sisesta üks emoji märk, nt 🗓️",image_path:"Pildi asukoht",image_indicator_note:"Pildi asukoht, nt /local/image.jpg",today_indicator_position:"Tänase indikaatori asukoht",today_indicator_color:"Tänase indikaatori värv",today_indicator_size:"Tänase indikaatori suurus",week_numbers_separators:"Nädalanumbrid ja eraldajad",week_numbers:"Nädalanumbrid",first_day_of_week:"Nädala esimene päev",sunday:"Pühapäev",monday:"Esmaspäev",show_week_numbers:"Näita nädalate numbreid",week_number_note_iso:"ISO (Euroopa/rahvusvaheline): esimene nädal sisaldab aasta esimest neljapäeva. Tagab ühtse nädalate nummerdamise (ISO 8601).",week_number_note_simple:"Lihtne (Põhja-Ameerika): nädalad loetakse järjest alates 1. jaanuarist sõltumata nädalapäevast.",show_current_week_number:"Näita käesoleva nädala numbrit",week_number_font_size:"Nädalanumbri fondi suurus",week_number_color:"Nädalanumbri värv",week_number_background_color:"Nädalanumbri taustavärv",day_separator:"Päeva eraldaja",show_day_separator:"Näita päeva eraldajat",day_separator_width:"Päeva eraldaja laius",day_separator_color:"Päeva eraldaja värv",week_separator:"Nädala eraldaja",show_week_separator:"Näita nädala eraldajat",week_separator_width:"Nädala eraldaja laius",week_separator_color:"Nädala eraldaja värv",month_separator:"Kuu eraldaja",show_month_separator:"Näita kuu eraldajat",month_separator_width:"Kuu eraldaja laius",month_separator_color:"Kuu eraldaja värv",event_display:"Sündmuste kuvamine",event_title:"Sündmuse pealkiri",event_font_size:"Sündmuse fondi suurus",empty_day_color:"Tühja päeva värv",time:"Kellaaeg",show_single_allday_time:"Näita aega ühepäevastel kogupäevasündmustel",show_end_time:"Näita lõppaega",time_two_digit_hours:"Kahekohalised tunnid",time_font_size:"Aja fondi suurus",time_color:"Aja värv",time_icon_size:"Aja ikooni suurus",location:"Asukoht",remove_location_country:"Eemalda asukohast riik",location_font_size:"Asukoha fondi suurus",location_color:"Asukoha värv",location_icon_size:"Asukoha ikooni suurus",description:"Kirjeldus",description_font_size:"Kirjelduse fondi suurus",description_color:"Kirjelduse värv",description_icon_size:"Kirjelduse ikooni suurus",description_max_lines:"Kirjelduse maks. ridu (0 = piiramatu)",custom_country_pattern:"Eemaldatavad riigid",custom_country_pattern_note:"Sisesta riiginimed regulaaravaldisena (nt „Eesti|Finland|Latvia“). Asukohad, mis lõppevad nende mustritega, puhastatakse.",progress_indicators:"Edenemise indikaatorid",show_countdown:"Näita loendurit",show_countdown_allday:"Näita loendurit kogupäevasündmustel",show_progress_bar:"Näita edenemisriba",progress_bar_color:"Edenemisriba värv",progress_bar_height:"Edenemisriba kõrgus",progress_bar_width:"Edenemisriba laius",multiday_event_handling:"Mitmepäevaste sündmuste käsitlemine",weather_integration:"Ilmaintegratsioon",weather_entity_position:"Ilma entiteet ja asukoht",weather_entity:"Ilma entiteet",weather_position:"Ilma asukoht",date:"Kuupäev",event:"Sündmus",both:"Mõlemad",date_column_weather:"Ilm kuupäeva veerus",show_conditions:"Näita ilmastikuolusid",show_high_temp:"Näita maksimaalset temperatuuri",show_low_temp:"Näita minimaalset temperatuuri",icon_size:"Ikooni suurus",font_size:"Fondi suurus",color:"Värv",event_row_weather:"Ilm sündmuse reas",show_temp:"Näita temperatuuri",show_uv_index:"Näita UV-indeksit",uv_index_threshold:"UV-indeksi künnis",daily_forecast_fallback:"Kasuta päevaprognoosi varuvariandina",interactions:"Interaktsioonid",tap_action:"Puudutuse tegevus",hold_action:"Hoidmise tegevus",more_info:"Rohkem infot",navigate:"Navigeeri",url:"URL",call_service:"Kutsu teenus",expand:"Lülita kompaktne / laiendatud vaade",navigation_path:"Navigeerimise tee",url_path:"URL",service:"Teenus",service_data:"Teenuse andmed (JSON)",refresh_settings:"Värskendamise seaded",refresh_interval:"Värskendamise intervall (minutites)",refresh_on_navigate:"Värskenda tagasi navigeerimisel",deprecated_config_detected:"Tuvastati aegunud seadistused.",deprecated_config_explanation:"Mõned sinu seadistuse valikud ei ole enam toetatud.",deprecated_config_update_hint:"Palun uuenda seadistust ühilduvuse tagamiseks.",update_config:"Uuenda seadistust…"}},it={daysOfWeek:["Su","Ma","Ti","Ke","To","Pe","La"],fullDaysOfWeek:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],months:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],allDay:"koko päivä",multiDay:"asti",at:"klo",endsToday:"päättyy tänään",endsTomorrow:"päättyy huomenna",noEvents:"Ei tulevia tapahtumia",loading:"Ladataan kalenteritapahtumia...",error:"Virhe: Kalenteriyksikköä ei löydy tai se on väärin määritetty"},nt={daysOfWeek:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],fullDaysOfWeek:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],months:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],allDay:"toute la journée",multiDay:"jusqu'au",at:"à",endsToday:"finit aujourd'hui",endsTomorrow:"finit demain",noEvents:"Aucun événement à venir",loading:"Chargement des événements...",error:"Erreur: Entité de calendrier introuvable ou mal configurée"},ot={daysOfWeek:["א'","ב'","ג'","ד'","ה'","ו'","ש'"],fullDaysOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],months:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],allDay:"כל-היום",multiDay:"עד",endsToday:"מסתיים היום",endsTomorrow:"מסתיים מחר",at:"בשעה",noEvents:"אין אירועים קרובים",loading:"טוען אירועי לוח שנה...",error:"שגיאה: ישות לוח השנה לא נמצאה או לא מוגדרת כראוי"},rt={daysOfWeek:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],fullDaysOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],months:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],allDay:"cijeli dan",multiDay:"do",at:"u",endsToday:"završava danas",endsTomorrow:"završava sutra",noEvents:"Nema nadolazećih događaja",loading:"Učitavanje događaja...",error:"Greška: Kalendar entitet nije pronađen ili je neispravno postavljen"},st={daysOfWeek:["Vas","Hét","Kedd","Sze","Csüt","Pén","Szo"],fullDaysOfWeek:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],months:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],allDay:"egész napos",multiDay:"eddig:",endsToday:"ma este ér véget",endsTomorrow:"holnap ér véget",at:"itt:",noEvents:"Mára nincs több esemény",loading:"Naptárbejegyzések betöltése...",error:"Hiba: Naptár entitás nem található vagy nem megfelelően konfigutált"},lt={daysOfWeek:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],fullDaysOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],months:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],allDay:"Allur dagurinn",multiDay:"þar til",at:"kl",endsToday:"lýkur í dag",endsTomorrow:"lýkur á morgun",noEvents:"Engir viðburðir á næstunni",loading:"Hleður inn dagatal...",error:"Villa: Dagatalseining finnst ekki eða er vanstillt"},dt={daysOfWeek:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],fullDaysOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],months:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],allDay:"tutto il giorno",multiDay:"fino a",at:"alle",endsToday:"termina oggi",endsTomorrow:"termina domani",noEvents:"Nessun evento in arrivo",loading:"Caricamento eventi del calendario...",error:"Errore: entità calendario non trovata o configurata in modo errato",editor:{calendar_entities:"Entità Calendario",calendar:"Calendario",entity_identification:"Identificazione Entità",entity:"Entità",add_calendar:"Aggiungi calendario",remove:"Rimuovi",convert_to_advanced:"Converti in avanzato",simple:"Semplice",display_settings:"Impostazioni di Visualizzazione",label:"Etichetta",label_type:"Tipo di Etichetta",none:"Nessuna",text_emoji:"Testo/Emoji",icon:"Icona",text_value:"Valore Testo",text_label_note:"Inserisci testo o emoji come '📅 Il Mio Calendario'",image:"Immagine",image_label_note:"Percorso immagine come /local/calendar.jpg",label_note:"Etichetta personalizzata per questo calendario.",colors:"Colori",event_color:"Colore evento",entity_color_note:"Colore personalizzato per i titoli degli eventi di questo calendario.",accent_color:"Colore accento",entity_accent_color_note:"Colore accento personalizzato per la linea verticale degli eventi. Verrà usato anche come sfondo evento quando 'event_background_opacity' > 0.",label_icon_color:"Colore icona etichetta",label_icon_color_note:"Colore personalizzato per l'icona dell'etichetta. Se non impostato, eredita il colore del testo.",event_filtering:"Filtraggio Eventi",blocklist:"Lista di esclusione",blocklist_note:"Lista di termini separati da | per escludere eventi. Gli eventi con titoli contenenti questi termini saranno nascosti. Esempio: 'Privato|Riunione|Conferenza'",allowlist:"Lista di inclusione",allowlist_note:"Lista di termini separati da | per includere eventi. Se non vuota, verranno mostrati solo gli eventi che contengono questi termini. Esempio: 'Compleanno|Anniversario|Importante'",entity_overrides:"Sovrascrivi Entità",entity_overrides_note:"Queste impostazioni sovrascrivono le impostazioni globali per questo calendario.",compact_events_to_show:"Eventi compatti da mostrare",entity_compact_events_note:"Sovrascrive il numero di eventi da mostrare in modalità compatta.",show_time:"Mostra orario",entity_show_time_note:"Mostra o nasconde gli orari degli eventi solo per questo calendario.",show_location:"Mostra posizione",entity_show_location_note:"Mostra o nasconde le posizioni degli eventi solo per questo calendario.",show_description:"Mostra descrizione",entity_show_description_note:"Mostra o nasconde le descrizioni degli eventi solo per questo calendario.",split_multiday_events:"Dividi eventi multigiorno",entity_split_multiday_note:"Divide gli eventi multigiorno in segmenti giornalieri.",core_settings:"Impostazioni Principali",time_range:"Intervallo di tempo",time_range_note:"Definisce la modalità di visualizzazione normale, che diventa espansa se la modalità compatta è attiva.",days_to_show:"Giorni da mostrare",days_to_show_note:"Numero di giorni da recuperare dall'API e mostrare nel calendario",start_date:"Data di inizio",start_date_mode:"Modalità data di inizio",start_date_mode_default:"Predefinita (oggi)",start_date_mode_fixed:"Data fissa",start_date_mode_offset:"Offset relativo",start_date_fixed:"Data di inizio fissa",start_date_offset:"Offset relativo da oggi",start_date_offset_note:"Inserisci un numero positivo o negativo (es. +1 per domani, -5 per cinque giorni fa).",compact_mode:"Modalità Compatta",compact_mode_note:"Mostra inizialmente meno giorni/eventi. La card può essere espansa con un tap o una pressione prolungata.",compact_no_limits_warning:'È configurata unazione di espansione, ma non è impostato alcun limite per la modalità compatta. Imposta "Giorni compatti da mostrare" e/o "Eventi compatti da mostrare" a valori inferiori a quelli della vista completa, altrimenti la scheda apparirà identica prima e dopo lespansione.',compact_days_to_show:"Giorni compatti da mostrare",compact_days_inert_warning:'"Giorni compatti da mostrare" non è inferiore a "Giorni da mostrare", quindi non ha alcun effetto. Riducilo per nascondere i giorni in modalità compatta.',compact_events_to_show_note:"Ha effetto solo quando lintervallo di giorni selezionato contiene più eventi di questo valore.",compact_events_complete_days:"Giorni completi in modalità compatta",compact_events_complete_days_note:"Se attivo, se un giorno mostra almeno un evento, verranno mostrati tutti gli eventi di quel giorno.",event_visibility:"Visibilità Eventi",show_past_events:"Mostra eventi passati",show_empty_days:"Mostra giorni vuoti",filter_duplicates:"Filtra eventi duplicati",filter_duplicates_note:"Rimuove gli eventi con lo stesso titolo, orario e luogo. Viene mantenuta la copia del calendario elencato per primo, con la sua etichetta e il suo colore.",language_time_formats:"Lingua e Formati Orari",language:"Lingua",language_mode:"Modalità lingua",language_code:"Codice lingua",language_code_note:"Inserisci un codice lingua a 2 lettere (es. 'it', 'en', 'fr')",time_24h:"Formato orario",system:"Predefinito di sistema",custom:"Personalizzato","12h":"12 ore","24h":"24 ore",appearance_layout:"Aspetto e Layout",title_styling:"Stile Titolo",title:"Titolo",title_font_size:"Dimensione font titolo",title_color:"Colore titolo",card_styling:"Stile Card",background_color:"Colore sfondo",height_mode:"Modalità altezza",auto:"Altezza automatica",fixed:"Altezza fissa",maximum:"Altezza massima",height_value:"Valore altezza",fixed_height_note:"La card mantiene sempre questa altezza.",max_height_note:"La card cresce fino a questa altezza massima.",event_styling:"Stile Eventi",event_background_opacity:"Opacità sfondo evento",vertical_line_width:"Spessore linea verticale",spacing_alignment:"Spaziatura e Allineamento",day_spacing:"Spaziatura giorni",event_spacing:"Spaziatura eventi",additional_card_spacing:"Spaziatura aggiuntiva card",date_display:"Visualizzazione Data",vertical_alignment:"Allineamento verticale",date_vertical_alignment:"Allineamento verticale data",event_icon_alignment:"Allineamento icona evento",event_icon_vertical_alignment:"Allineamento verticale icona evento",date_formatting:"Formattazione data",top:"Alto",middle:"Centro",bottom:"Basso",weekday_font:"Font giorno settimana",weekday_font_size:"Dimensione font giorno settimana",weekday_color:"Colore giorno settimana",day_font:"Font giorno",day_font_size:"Dimensione font giorno",day_color:"Colore giorno",month_font:"Font mese",show_month:"Mostra mese",month_font_size:"Dimensione font mese",month_color:"Colore mese",weekend_highlighting:"Evidenziazione Weekend",weekend_weekday_color:"Colore giorno settimana weekend",weekend_day_color:"Colore giorno weekend",weekend_month_color:"Colore mese weekend",today_highlighting:"Evidenziazione Oggi",today_weekday_color:"Colore giorno settimana oggi",today_day_color:"Colore giorno oggi",today_month_color:"Colore mese oggi",today_indicator:"Indicatore oggi",dot:"Punto",pulse:"Pulsazione",glow:"Bagliore",emoji:"Emoji",emoji_value:"Emoji",emoji_indicator_note:"Inserisci una singola emoji come 🗓️",image_path:"Percorso immagine",image_indicator_note:"Percorso immagine come /local/image.jpg",today_indicator_position:"Posizione indicatore oggi",today_indicator_color:"Colore indicatore oggi",today_indicator_size:"Dimensione indicatore oggi",week_numbers_separators:"Numeri Settimana e Separatori",week_numbers:"Numeri settimana",first_day_of_week:"Primo giorno della settimana",sunday:"Domenica",monday:"Lunedì",show_week_numbers:"Mostra numeri settimana",week_number_note_iso:"ISO (Europa/Internazionale): la prima settimana contiene il primo giovedì dell'anno.",week_number_note_simple:"Semplice (Nord America): le settimane si contano dal 1° gennaio.",show_current_week_number:"Mostra numero settimana corrente",week_number_font_size:"Dimensione font numero settimana",week_number_color:"Colore numero settimana",week_number_background_color:"Sfondo numero settimana",day_separator:"Separatore giorno",show_day_separator:"Mostra separatore giorno",day_separator_width:"Spessore separatore giorno",day_separator_color:"Colore separatore giorno",week_separator:"Separatore settimana",show_week_separator:"Mostra separatore settimana",week_separator_width:"Spessore separatore settimana",week_separator_color:"Colore separatore settimana",month_separator:"Separatore mese",show_month_separator:"Mostra separatore mese",month_separator_width:"Spessore separatore mese",month_separator_color:"Colore separatore mese",event_display:"Visualizzazione Eventi",event_title:"Titolo evento",event_font_size:"Dimensione font evento",empty_day_color:"Colore giorno vuoto",time:"Orario",show_single_allday_time:"Mostra orario per eventi di un giorno intero",show_end_time:"Mostra orario fine",time_two_digit_hours:"Ore a due cifre",time_font_size:"Dimensione font orario",time_color:"Colore orario",time_icon_size:"Dimensione icona orario",location:"Posizione",remove_location_country:"Rimuovi paese dalla posizione",location_font_size:"Dimensione font posizione",location_color:"Colore posizione",location_icon_size:"Dimensione icona posizione",description:"Descrizione",description_font_size:"Dimensione font descrizione",description_color:"Colore descrizione",description_icon_size:"Dimensione icona descrizione",description_max_lines:"Max righe descrizione (0 = illimitato)",custom_country_pattern:"Pattern paese da rimuovere",custom_country_pattern_note:"Inserisci nomi di paesi come espressione regolare (es. 'USA|United States|Canada').",progress_indicators:"Indicatori di Progresso",show_countdown:"Mostra conto alla rovescia",show_countdown_allday:"Mostra conto alla rovescia per eventi di un giorno intero",show_progress_bar:"Mostra barra di progresso",progress_bar_color:"Colore barra progresso",progress_bar_height:"Altezza barra progresso",progress_bar_width:"Larghezza barra progresso",multiday_event_handling:"Gestione Eventi Multigiorno",weather_integration:"Integrazione Meteo",weather_entity_position:"Entità Meteo e Posizione",weather_entity:"Entità meteo",weather_position:"Posizione meteo",date:"Data",event:"Evento",both:"Entrambi",date_column_weather:"Meteo nella colonna data",show_conditions:"Mostra condizioni",show_high_temp:"Mostra temperatura massima",show_low_temp:"Mostra temperatura minima",icon_size:"Dimensione icona",font_size:"Dimensione font",color:"Colore",event_row_weather:"Meteo nella riga evento",show_temp:"Mostra temperatura",show_uv_index:"Mostra indice UV",uv_index_threshold:"Soglia indice UV",daily_forecast_fallback:"Usa le previsioni giornaliere come alternativa",interactions:"Interazioni",tap_action:"Azione tap",hold_action:"Azione pressione prolungata",more_info:"Maggiori informazioni",navigate:"Naviga",url:"URL",call_service:"Chiama servizio",expand:"Espandi/Comprimi vista",navigation_path:"Percorso navigazione",url_path:"URL",service:"Servizio",service_data:"Dati servizio (JSON)",refresh_settings:"Impostazioni aggiornamento",refresh_interval:"Intervallo aggiornamento (minuti)",refresh_on_navigate:"Aggiorna al ritorno",deprecated_config_detected:"Rilevate opzioni di configurazione deprecate.",deprecated_config_explanation:"Alcune opzioni nella tua configurazione non sono più supportate.",deprecated_config_update_hint:"Aggiorna per garantire compatibilità.",update_config:"Aggiorna configurazione…"}},_t={daysOfWeek:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],fullDaysOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],months:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rgp","Rgs","Spa","Lap","Grd"],allDay:"visą dieną",multiDay:"iki",at:"į",endsToday:"baigiasi šiandien",endsTomorrow:"baigiasi rytoj",noEvents:"Nėra įvykių",loading:"Įkeliami kalendoriaus įvykiai...",error:"Klaida: Kalendoriaus objektas nerastas arba neteisingai sukonfigūruotas",editor:{calendar_entities:"Kalendoriaus objektai",calendar:"Kalendorius",entity_identification:"Objekto identifikacija",entity:"Objektas",add_calendar:"Pridėti kalendorių",remove:"Pašalinti",convert_to_advanced:"Konvertuoti į išplėstinį",simple:"Paprastas",display_settings:"Rodymo nustatymai",label:"Etiketė",label_type:"Etiketės tipas",none:"Nėra",text_emoji:"Tekstas/Emoji",icon:"Piktograma",text_value:"Teksto reikšmė",text_label_note:"Įveskite tekstą arba emoji, pvz., '📅 Mano kalendorius'",image:"Vaizdas",image_label_note:"Kelias iki vaizdo, pvz., /local/calendar.jpg",label_note:"Pasirinktinė etiketė šiam kalendoriui.",colors:"Spalvos",event_color:"Įvykio spalva",entity_color_note:"Pasirinktinė spalva įvykių pavadinimams iš šio kalendoriaus.",accent_color:"Akcentinė spalva",entity_accent_color_note:"Pasirinktinė akcentinė spalva vertikaliai įvykių linijai iš šio kalendoriaus. Ši spalva taip pat bus naudojama kaip įvykio fono spalva, kai 'event_background_opacity' yra >0.",label_icon_color:"Etiketės piktogramos spalva",label_icon_color_note:"Pasirinktinė etiketės piktogramos spalva. Jei nenustatyta, piktograma paveldi numatytąją teksto spalvą.",event_filtering:"Įvykių filtravimas",blocklist:"Blokuojamų sąrašas",blocklist_note:"Vertikaliu brūkšniu atskirtas sąrašas terminų, kuriuos reikia pašalinti. Įvykiai, kurių pavadinimuose yra bet kuris iš šių terminų, bus paslėpti. Pavyzdys: 'Privatus|Susitikimas|Konferencija'",allowlist:"Leidžiamų sąrašas",allowlist_note:"Vertikaliu brūkšniu atskirtas sąrašas terminų, kuriuos reikia įtraukti. Jei ne tuščias, bus rodomi tik įvykiai, kurių pavadinimuose yra bet kuris iš šių terminų. Pavyzdys: 'Gimtadienis|Jubiliejus|Svarbu'",entity_overrides:"Objekto pakeitimai",entity_overrides_note:"Šie nustatymai pakeis bendrus nustatymus šiam konkrečiam kalendoriui.",compact_events_to_show:"Įvykių rodyti suglaudintame režime",entity_compact_events_note:"Pakeisti įvykių skaičių, rodomą suglaudintame režime šiam kalendoriui.",show_time:"Rodyti laiką",entity_show_time_note:"Rodyti arba slėpti įvykių laikus tik šiam kalendoriui.",show_location:"Rodyti vietą",entity_show_location_note:"Rodyti arba slėpti įvykių vietas tik šiam kalendoriui.",show_description:"Rodyti aprašymą",entity_show_description_note:"Rodyti arba slėpti įvykių aprašymus tik šiam kalendoriui.",split_multiday_events:"Skaidyti kelių dienų įvykius",entity_split_multiday_note:"Skaidyti kelių dienų įvykius į atskirus dienos segmentus šiam kalendoriui.",core_settings:"Pagrindiniai nustatymai",time_range:"Laiko intervalas",time_range_note:"Šis laiko intervalas apibrėžia įprastą rodymo režimą, kuris tampa išplėstiniu vaizdavimo režimu, jei sukonfigūruotas suglaudintas režimas.",days_to_show:"Dienų rodyti",days_to_show_note:"Dienų skaičius, kuris bus gaunamas iš API ir rodomas kalendoriuje",start_date:"Pradžios data",start_date_mode:"Pradžios datos režimas",start_date_mode_default:"Numatytasis (šiandien)",start_date_mode_fixed:"Fiksuota data",start_date_mode_offset:"Santykinis poslinkis",start_date_fixed:"Fiksuota pradžios data",start_date_offset:"Santykinis poslinkis nuo šiandien",start_date_offset_note:"Įveskite teigiamą arba neigiamą skaičių, kad pakeistumėte nuo šiandien (pvz., +1 rytojui, -5 prieš penkias dienas).",compact_mode:"Suglaudintas režimas",compact_mode_note:"Suglaudintas režimas rodo mažiau dienų ir/arba įvykių iš pradžių. Kortelę galima išplėsti į pilną vaizdą naudojant paliesti arba laikyti veiksmą, jei sukonfigūruota su veiksmu: 'expand'.",compact_no_limits_warning:"Sukonfigūruotas išskleidimo veiksmas, tačiau nenustatytas nė vienas suglaudinto režimo apribojimas. Nustatykite „Dienų rodyti suglaudintame režime“ ir (arba) „Įvykių rodyti suglaudintame režime“ mažesnius už pilno rodinio reikšmes kitaip kortelė prieš išskleidimą ir po jo atrodys vienodai.",compact_days_to_show:"Dienų rodyti suglaudintame režime",compact_days_inert_warning:"„Dienų rodyti suglaudintame režime“ nėra mažesnis už „Dienų rodyti“, todėl neturi jokio poveikio. Sumažinkite jį, kad suglaudintame režime dienos būtų slepiamos.",compact_events_to_show_note:"Veikia tik tada, kai pasirinktame dienų intervale yra daugiau įvykių nei ši reikšmė.",compact_events_complete_days:"Pilnos dienos suglaudintame režime",compact_events_complete_days_note:"Kai įjungta, jei rodomas bent vienas dienos įvykis, bus rodomi visi tos dienos įvykiai.",event_visibility:"Įvykių matomumas",show_past_events:"Rodyti praėjusius įvykius",show_empty_days:"Rodyti tuščias dienas",filter_duplicates:"Filtruoti dubliuotus įvykius",filter_duplicates_note:"Pašalina įvykius, kurių pavadinimas, laikas ir vieta sutampa. Išsaugoma pirmojo sąraše nurodyto kalendoriaus kopija kartu su jo etikete ir spalva.",language_time_formats:"Kalba ir laiko formatai",language:"Kalba",language_mode:"Kalbos režimas",language_code:"Kalbos kodas",language_code_note:"Įveskite 2 raidžių kalbos kodą (pvz., 'en', 'de', 'fr')",time_24h:"Laiko formatas",system:"Sistemos numatytasis",custom:"Pasirinktinis","12h":"12 valandų","24h":"24 valandų",appearance_layout:"Išvaizda ir išdėstymas",title_styling:"Pavadinimo stilius",title:"Pavadinimas",title_font_size:"Pavadinimo šrifto dydis",title_color:"Pavadinimo spalva",card_styling:"Kortelės stilius",background_color:"Fono spalva",height_mode:"Aukščio režimas",auto:"Automatinis aukštis",fixed:"Fiksuotas aukštis",maximum:"Maksimalus aukštis",height_value:"Aukščio reikšmė",fixed_height_note:"Kortelė visada išlaiko tiksliai šį aukštį nepriklausomai nuo turinio",max_height_note:"Kortelė auga su turiniu iki šio maksimalaus aukščio",event_styling:"Įvykio stilius",event_background_opacity:"Įvykio fono nepermatomumas",vertical_line_width:"Vertikalios linijos plotis",spacing_alignment:"Tarpai ir lygiavimas",day_spacing:"Dienos tarpas",event_spacing:"Įvykio tarpas",additional_card_spacing:"Papildomas kortelės tarpas",date_display:"Datos rodymas",vertical_alignment:"Vertikalus lygiavimas",date_vertical_alignment:"Datos vertikalus lygiavimas",event_icon_alignment:"Piktogramų lygiavimas",event_icon_vertical_alignment:"Vertikalus piktogramų lygiavimas",date_formatting:"Datos formatavimas",top:"Viršuje",middle:"Viduryje",bottom:"Apačioje",weekday_font:"Savaitės dienos šriftas",weekday_font_size:"Savaitės dienos šrifto dydis",weekday_color:"Savaitės dienos spalva",day_font:"Dienos šriftas",day_font_size:"Dienos šrifto dydis",day_color:"Dienos spalva",month_font:"Mėnesio šriftas",show_month:"Rodyti mėnesį",month_font_size:"Mėnesio šrifto dydis",month_color:"Mėnesio spalva",weekend_highlighting:"Savaitgalio išryškinimas",weekend_weekday_color:"Savaitgalio savaitės dienos spalva",weekend_day_color:"Savaitgalio dienos spalva",weekend_month_color:"Savaitgalio mėnesio spalva",today_highlighting:"Šiandienos išryškinimas",today_weekday_color:"Šiandienos savaitės dienos spalva",today_day_color:"Šiandienos dienos spalva",today_month_color:"Šiandienos mėnesio spalva",today_indicator:"Šiandienos indikatorius",dot:"Taškas",pulse:"Pulsavimas",glow:"Švytėjimas",emoji:"Emoji",emoji_value:"Emoji",emoji_indicator_note:"Įveskite vieną emoji simbolį, pvz., 🗓️",image_path:"Vaizdo kelias",image_indicator_note:"Kelias iki vaizdo, pvz., /local/image.jpg",today_indicator_position:"Šiandienos indikatoriaus padėtis",today_indicator_color:"Šiandienos indikatoriaus spalva",today_indicator_size:"Šiandienos indikatoriaus dydis",week_numbers_separators:"Savaičių numeriai ir skyrikliai",week_numbers:"Savaičių numeriai",first_day_of_week:"Pirma savaitės diena",sunday:"Sekmadienis",monday:"Pirmadienis",show_week_numbers:"Rodyti savaičių numerius",week_number_note_iso:"ISO (Europa/Tarptautinis): Pirmoji savaitė apima pirmąjį metų ketvirtadienį. Sukuria nuoseklų savaičių numeravimą per metus (ISO 8601 standartas).",week_number_note_simple:"Paprastas (Šiaurės Amerika): Savaitės skaičiuojamos nuosekliai nuo sausio 1 d. nepriklausomai nuo savaitės dienos. Pirmoji savaitė gali būti neišsami. Intuityviau, bet mažiau standartizuota.",show_current_week_number:"Rodyti dabartinės savaitės numerį",week_number_font_size:"Savaitės numerio šrifto dydis",week_number_color:"Savaitės numerio spalva",week_number_background_color:"Savaitės numerio fono spalva",day_separator:"Dienos skyriklis",show_day_separator:"Rodyti dienos skyriklį",day_separator_width:"Dienos skyriklio plotis",day_separator_color:"Dienos skyriklio spalva",week_separator:"Savaitės skyriklis",show_week_separator:"Rodyti savaitės skyriklį",week_separator_width:"Savaitės skyriklio plotis",week_separator_color:"Savaitės skyriklio spalva",month_separator:"Mėnesio skyriklis",show_month_separator:"Rodyti mėnesio skyriklį",month_separator_width:"Mėnesio skyriklio plotis",month_separator_color:"Mėnesio skyriklio spalva",event_display:"Įvykio rodymas",event_title:"Įvykio pavadinimas",event_font_size:"Įvykio šrifto dydis",empty_day_color:"Tuščios dienos spalva",time:"Laikas",show_single_allday_time:"Rodyti laiką vienos dienos įvykiams",show_end_time:"Rodyti pabaigos laiką",time_two_digit_hours:"Dviženklis valandų formatas",time_font_size:"Laiko šrifto dydis",time_color:"Laiko spalva",time_icon_size:"Laiko piktogramos dydis",location:"Vieta",remove_location_country:"Pašalinti vietovės šalį",location_font_size:"Vietos šrifto dydis",location_color:"Vietos spalva",location_icon_size:"Vietos piktogramos dydis",description:"Aprašymas",description_font_size:"Aprašymo šrifto dydis",description_color:"Aprašymo spalva",description_icon_size:"Aprašymo piktogramos dydis",description_max_lines:"Aprašymo maks. eilučių (0 = neribota)",custom_country_pattern:"Šalių šablonai pašalinimui",custom_country_pattern_note:"Įveskite šalių pavadinimus kaip reguliariųjų išraiškų šabloną (pvz., 'USA|United States|Canada'). Įvykiai su vietomis, besibaigančiais šiais šablonais, turės šalį pašalintą.",progress_indicators:"Progreso indikatoriai",show_countdown:"Rodyti atgalinį skaičiavimą",show_countdown_allday:"Rodyti atgalinį skaičiavimą visos dienos įvykiams",show_progress_bar:"Rodyti progreso juostą",progress_bar_color:"Progreso juostos spalva",progress_bar_height:"Progreso juostos aukštis",progress_bar_width:"Progreso juostos plotis",multiday_event_handling:"Kelių dienų įvykių tvarkymas",weather_integration:"Oro prognozės integracija",weather_entity_position:"Oro prognozės objektas ir padėtis",weather_entity:"Oro prognozės objektas",weather_position:"Oro prognozės padėtis",date:"Data",event:"Įvykis",both:"Abi",date_column_weather:"Oro prognozė datos stulpelyje",show_conditions:"Rodyti sąlygas",show_high_temp:"Rodyti aukščiausią temperatūrą",show_low_temp:"Rodyti žemiausią temperatūrą",icon_size:"Piktogramos dydis",font_size:"Šrifto dydis",color:"Spalva",event_row_weather:"Oro prognozė įvykio eilutėje",show_temp:"Rodyti temperatūrą",show_uv_index:"Rodyti UV indeksą",uv_index_threshold:"UV indekso riba",daily_forecast_fallback:"Naudoti dienos prognozę kaip atsarginį variantą",interactions:"Sąveikos",tap_action:"Paliesti veiksmas",hold_action:"Laikyti veiksmas",more_info:"Daugiau informacijos",navigate:"Naršyti",url:"URL",call_service:"Iškviesti paslaugą",expand:"Perjungti suglaudintą/išplėstą vaizdą",navigation_path:"Navigacijos kelias",url_path:"URL",service:"Paslauga",service_data:"Paslaugos duomenys (JSON)",refresh_settings:"Atnaujinimo nustatymai",refresh_interval:"Atnaujinimo intervalas (minutės)",refresh_on_navigate:"Atnaujinti grįžtant",deprecated_config_detected:"Aptiktos nebenaudojamos konfigūracijos parinktys.",deprecated_config_explanation:"Kai kurios parinktys jūsų konfigūracijoje nebėra palaikomos.",deprecated_config_update_hint:"Atnaujinkite, kad užtikrintumėte suderinamumą.",update_config:"Atnaujinti konfigūraciją…"}};const ct={bg:Be,cs:Je,ca:Ze,da:Ge,de:qe,el:Qe,en:Xe,"en-gb":et,es:tt,et:at,fi:it,fr:nt,he:ot,hr:rt,hu:st,is:lt,it:dt,lt:_t,lv:{daysOfWeek:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],fullDaysOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],months:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],allDay:"visu dienu",multiDay:"līdz",at:"plkst.",endsToday:"beidzas šodien",endsTomorrow:"beidzas rīt",noEvents:"Nav gaidāmu notikumu",loading:"Ielādē kalendāra notikumus...",error:"Kļūda: Kalendāra entitīja nav atrasta vai nav pareizi konfigurēta",editor:{calendar_entities:"Kalendāra entitījas",calendar:"Kalendārs",entity_identification:"Entitījas identifikācija",entity:"Entitīja",add_calendar:"Pievienot kalendāru",remove:"Noņemt",convert_to_advanced:"Pārveidot uz paplašinātu",simple:"Vienkāršs",display_settings:"Attēlošanas iestatījumi",label:"Etiķete",label_type:"Etiķetes tips",none:"Neviens",text_emoji:"Teksts/Emoji",icon:"Ikona",text_value:"Teksta vērtība",text_label_note:"Ievadiet tekstu vai emoji, piemēram '📅 Mans kalendārs'",image:"Attēls",image_label_note:"Ceļš uz attēlu, piemēram /local/calendar.jpg",label_note:"Pielāgota etiķete šim kalendāram.",colors:"Krāsas",event_color:"Notikuma krāsa",entity_color_note:"Pielāgota krāsa notikumu nosaukumiem no šī kalendāra.",accent_color:"Akcenta krāsa",entity_accent_color_note:"Pielāgota akcenta krāsa vertikālajai līnijai notikumiem no šī kalendāra.",label_icon_color:"Etiķetes ikonas krāsa",label_icon_color_note:"Pielāgota krāsa etiķetes ikonai. Ja nav iestatīta, ikona izmanto noklusējuma teksta krāsu.",event_filtering:"Notikumu filtrēšana",blocklist:"Bloķēšanas saraksts",blocklist_note:"Ar | atdalīts terminu saraksts notikumu izslēgšanai. Piemērs: 'Privāts|Sapulce|Konference'",allowlist:"Atļauto saraksts",allowlist_note:"Ar | atdalīts terminu saraksts notikumu iekļaušanai. Piemērs: 'Dzimšanas diena|Jubileja|Svarīgs'",entity_overrides:"Entitījas pārrakstīšana",entity_overrides_note:"Šie iestatījumi pārrakstīs globālos iestatījumus šim konkrētajam kalendāram.",compact_events_to_show:"Kompaktie notikumi rādīšanai",entity_compact_events_note:"Pārrakstīt notikumu skaitu kompaktajā režīmā šim kalendāram.",show_time:"Rādīt laiku",entity_show_time_note:"Rādīt vai slēpt notikumu laikus tikai šim kalendāram.",show_location:"Rādīt atrašanās vietu",entity_show_location_note:"Rādīt vai slēpt notikumu atrašanās vietas tikai šim kalendāram.",show_description:"Rādīt aprakstu",entity_show_description_note:"Rādīt vai slēpt notikumu aprakstus tikai šim kalendāram.",split_multiday_events:"Sadalīt daudzdienu notikumus",entity_split_multiday_note:"Sadalīt daudzdienu notikumus atsevišķos dienas segmentos šim kalendāram.",core_settings:"Pamata iestatījumi",time_range:"Laika diapazons",time_range_note:"Šis laika diapazons nosaka parasto attēlošanas režīmu.",days_to_show:"Rādāmo dienu skaits",days_to_show_note:"Dienu skaits ko iegūt no API un attēlot kalendārā",start_date:"Sākuma datums",start_date_mode:"Sākuma datuma režīms",start_date_mode_default:"Noklusējums (šodien)",start_date_mode_fixed:"Fiksēts datums",start_date_mode_offset:"Relatīvs nobīde",start_date_fixed:"Fiksēts sākuma datums",start_date_offset:"Relatīva nobīde no šodienas",start_date_offset_note:"Ievadiet pozitīvu vai negatīvu skaitli (piemēram +1 rītdienai, -5 pirms piecām dienām).",compact_mode:"Kompaktais režīms",compact_mode_note:"Kompaktais režīms sākotnēji rāda mazāk dienu un/vai notikumu.",compact_no_limits_warning:"Ir konfigurēta izvēršanas darbība, taču nav iestatīts neviens kompaktā režīma ierobežojums. Iestatiet „Kompaktās dienas rādīšanai“ un/vai „Kompaktie notikumi rādīšanai“ mazākus par pilnā skata vērtībām citādi kartīte pirms un pēc izvēršanas izskatīsies vienāda.",compact_days_to_show:"Kompaktās dienas rādīšanai",compact_days_inert_warning:"„Kompaktās dienas rādīšanai“ nav mazāks par „Rādāmo dienu skaits“, tāpēc tam nav nekādas ietekmes. Samaziniet to, lai kompaktajā režīmā paslēptu dienas.",compact_events_to_show_note:"Darbojas tikai tad, ja izvēlētajā dienu diapazonā ir vairāk notikumu nekā šī vērtība.",compact_events_complete_days:"Pilnas dienas kompaktajā režīmā",compact_events_complete_days_note:"Ja iespējots, tiek rādīti visi dienas notikumi ja vismaz viens ir redzams.",event_visibility:"Notikumu redzamība",show_past_events:"Rādīt pagājušos notikumus",show_empty_days:"Rādīt tukšas dienas",filter_duplicates:"Filtrēt dublētos notikumus",filter_duplicates_note:"Noņem notikumus ar vienādu nosaukumu, laiku un atrašanās vietu. Tiek saglabāta kopija no pirmā sarakstā norādītā kalendāra kopā ar tā etiķeti un krāsu.",language_time_formats:"Valoda un laika formāti",language:"Valoda",language_mode:"Valodas režīms",language_code:"Valodas kods",language_code_note:"Ievadiet 2 burtu valodas kodu (piemēram 'lv', 'en', 'de')",time_24h:"Laika formāts",system:"Sistēmas noklusējums",custom:"Pielāgots","12h":"12 stundu","24h":"24 stundu",appearance_layout:"Izskats un izkārtojums",title_styling:"Virsraksta stils",title:"Virsraksts",title_font_size:"Virsraksta fonta izmērs",title_color:"Virsraksta krāsa",card_styling:"Kartes stils",background_color:"Fona krāsa",height_mode:"Augstuma režīms",auto:"Automātisks augstums",fixed:"Fiksēts augstums",maximum:"Maksimālais augstums",height_value:"Augstuma vērtība",fixed_height_note:"Karte vienmēr saglabā tieši šo augstumu neatkarīgi no satura",max_height_note:"Karte aug ar saturu līdz šim maksimālajam augstumam",event_styling:"Notikuma stils",event_background_opacity:"Notikuma fona caurspīdīgums",vertical_line_width:"Vertikālās līnijas platums",spacing_alignment:"Atstarpes un izlīdzināšana",day_spacing:"Dienas atstarpe",event_spacing:"Notikuma atstarpe",additional_card_spacing:"Papildu kartes atstarpe",date_display:"Datuma attēlošana",vertical_alignment:"Vertikālā izlīdzināšana",date_vertical_alignment:"Datuma vertikālā izlīdzināšana",event_icon_alignment:"Ikonas izlīdzināšana",event_icon_vertical_alignment:"Ikonas vertikālā izlīdzināšana",date_formatting:"Datuma formatēšana",top:"Augšā",middle:"Vidū",bottom:"Apakšā",weekday_font:"Nedēļas dienas fonts",weekday_font_size:"Nedēļas dienas fonta izmērs",weekday_color:"Nedēļas dienas krāsa",day_font:"Dienas fonts",day_font_size:"Dienas fonta izmērs",day_color:"Dienas krāsa",month_font:"Mēneša fonts",show_month:"Rādīt mēnesi",month_font_size:"Mēneša fonta izmērs",month_color:"Mēneša krāsa",weekend_highlighting:"Nedēļas nogales izcēlums",weekend_weekday_color:"Nedēļas nogales dienas krāsa",weekend_day_color:"Nedēļas nogales datuma krāsa",weekend_month_color:"Nedēļas nogales mēneša krāsa",today_highlighting:"Šodienas izcēlums",today_weekday_color:"Šodienas nedēļas dienas krāsa",today_day_color:"Šodienas datuma krāsa",today_month_color:"Šodienas mēneša krāsa",today_indicator:"Šodienas indikators",dot:"Punkts",pulse:"Pulsēšana",glow:"Mirdzums",emoji:"Emoji",emoji_value:"Emoji",emoji_indicator_note:"Ievadiet vienu emoji simbolu, piemēram 🗓️",image_path:"Attēla ceļš",image_indicator_note:"Ceļš uz attēlu, piemēram /local/image.jpg",today_indicator_position:"Šodienas indikatora pozīcija",today_indicator_color:"Šodienas indikatora krāsa",today_indicator_size:"Šodienas indikatora izmērs",week_numbers_separators:"Nedēļu numuri un atdalītāji",week_numbers:"Nedēļu numuri",first_day_of_week:"Nedēļas pirmā diena",sunday:"Svētdiena",monday:"Pirmdiena",show_week_numbers:"Rādīt nedēļu numurus",week_number_note_iso:"ISO (Eiropa/Starptautisks): Pirmā nedēļa satur gada pirmo ceturtdienu (ISO 8601 standarts).",week_number_note_simple:"Vienkāršs (Ziemeļamerika): Nedēļas skaitās no 1. janvāra. Pirmā nedēļa var būt nepilna.",show_current_week_number:"Rādīt pašreizējo nedēļas numuru",week_number_font_size:"Nedēļas numura fonta izmērs",week_number_color:"Nedēļas numura krāsa",week_number_background_color:"Nedēļas numura fona krāsa",day_separator:"Dienas atdalītājs",show_day_separator:"Rādīt dienas atdalītāju",day_separator_width:"Dienas atdalītāja platums",day_separator_color:"Dienas atdalītāja krāsa",week_separator:"Nedēļas atdalītājs",show_week_separator:"Rādīt nedēļas atdalītāju",week_separator_width:"Nedēļas atdalītāja platums",week_separator_color:"Nedēļas atdalītāja krāsa",month_separator:"Mēneša atdalītājs",show_month_separator:"Rādīt mēneša atdalītāju",month_separator_width:"Mēneša atdalītāja platums",month_separator_color:"Mēneša atdalītāja krāsa",event_display:"Notikuma attēlošana",event_title:"Notikuma nosaukums",event_font_size:"Notikuma fonta izmērs",empty_day_color:"Tukšas dienas krāsa",time:"Laiks",show_single_allday_time:"Rādīt laiku vienas dienas notikumiem",show_end_time:"Rādīt beigu laiku",time_two_digit_hours:"Divzīmju stundas",time_font_size:"Laika fonta izmērs",time_color:"Laika krāsa",time_icon_size:"Laika ikonas izmērs",location:"Atrašanās vieta",remove_location_country:"Noņemt valsti no adreses",location_font_size:"Adreses fonta izmērs",location_color:"Adreses krāsa",location_icon_size:"Adreses ikonas izmērs",description:"Apraksts",description_font_size:"Apraksta fonta izmērs",description_color:"Apraksta krāsa",description_icon_size:"Apraksta ikonas izmērs",description_max_lines:"Apraksta maks. rindiņas (0 = neierobežots)",custom_country_pattern:"Noņemamo valstu paraugi",custom_country_pattern_note:"Ievadiet valstu nosaukumus kā regulāro izteiksmi (piemēram 'USA|United States|Canada').",progress_indicators:"Progresa indikatori",show_countdown:"Rādīt atpakaļskaitīšanu",show_countdown_allday:"Rādīt atpakaļskaitīšanu visas dienas notikumiem",show_progress_bar:"Rādīt progresa joslu",progress_bar_color:"Progresa joslas krāsa",progress_bar_height:"Progresa joslas augstums",progress_bar_width:"Progresa joslas platums",multiday_event_handling:"Daudzdienu notikumu apstrāde",weather_integration:"Laika integrācija",weather_entity_position:"Laika entitīja un pozīcija",weather_entity:"Laika entitīja",weather_position:"Laika pozīcija",date:"Datums",event:"Notikums",both:"Abi",date_column_weather:"Datuma kolonnas laiks",show_conditions:"Rādīt apstākļus",show_high_temp:"Rādīt augstāko temperatūru",show_low_temp:"Rādīt zemāko temperatūru",icon_size:"Ikonas izmērs",font_size:"Fonta izmērs",color:"Krāsa",event_row_weather:"Notikuma rindas laiks",show_temp:"Rādīt temperatūru",show_uv_index:"Rādīt UV indeksu",uv_index_threshold:"UV indeksa slieksnis",daily_forecast_fallback:"Izmantot dienas prognozi kā rezerves variantu",interactions:"Mijiedarbība",tap_action:"Pieskāriena darbība",hold_action:"Turēšanas darbība",more_info:"Vairāk info",navigate:"Navigēt",url:"URL",call_service:"Izsaukt servisu",expand:"Pārslēgt kompakto/izvērsto skatu",navigation_path:"Navigācijas ceļš",url_path:"URL",service:"Serviss",service_data:"Servisa dati (JSON)",refresh_settings:"Atjaunošanas iestatījumi",refresh_interval:"Atjaunošanas intervāls (minūtes)",refresh_on_navigate:"Atjaunot navigējot atpakaļ",deprecated_config_detected:"Atrastas novecojušas konfigurācijas opcijas.",deprecated_config_explanation:"Daži jūsu konfigurācijas parametri vairs netiek atbalstīti.",deprecated_config_update_hint:"Lūdzu atjauniniet, lai nodrošinātu saderību.",update_config:"Atjaunināt konfigurāciju…"}},nb:{daysOfWeek:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],fullDaysOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],months:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],allDay:"hele dagen",multiDay:"til",at:"kl. ",endsToday:"slutter i dag",endsTomorrow:"slutter i morgen",noEvents:"Ingen kommende hendelser",loading:"Laster kalenderhendelser...",error:"Feil: Kalenderenheten ble ikke funnet eller er ikke konfigurert riktig",editor:{calendar_entities:"kalenderhendelser",calendar:"Kalender",entity_identification:"Enhetsidentifikasjon",entity:"Enhet",add_calendar:"Legg til kalender",remove:"Fjern",convert_to_advanced:"Konverter til avansert",simple:"Enkel",display_settings:"Visningsinnstillinger",label:"Etikett",label_type:"Etiketttype",none:"Ingen",text_emoji:"Tekst/Emoji",icon:"Ikon",text_value:"Tekstverdi",text_label_note:"Skriv inn tekst eller emoji som '📅 Min Kalender'",image:"Bilde",image_label_note:"Sti til bilde som /local/calendar.jpg",label_note:"Egendefinert etikett for denne kalenderen.",colors:"Farger",event_color:"Hendelsefarge",entity_color_note:"Egendefinert farge for hendelsestitlene fra denne kalenderen.",accent_color:"Aksentfarge",entity_accent_color_note:"Egendefinert aksentfarge for den vertikale linjen til hendelser fra denne kalenderen. Denne fargen vil også bli brukt som bakgrunnsfarge for hendelser når 'event_background_opacity' er >0.",label_icon_color:"Etikett-ikonfarge",label_icon_color_note:"Egendefinert farge for etikettikonet. Hvis ikke angitt, arver ikonet standard tekstfarge.",event_filtering:"Hendelsesfiltrering",blocklist:"Blokkeringsliste",blocklist_note:"Pipe-separert liste med uttrykk for å ekskludere hendelser. Hendelser med titler som inneholder noen av disse uttrykkene vil bli skjult. Eksempel: 'Privat|Møte|Konferanse'",allowlist:"Tillattliste",allowlist_note:"Pipe-separert liste med uttrykk for å inkludere hendelser. Hvis ikke tom, vil kun hendelser med titler som inneholder noen av disse uttrykkene bli vist. Eksempel: 'Fødselsdag|Jubileum|Viktig'",entity_overrides:"Enhetsoverstyringer",entity_overrides_note:"Disse innstillingene vil overstyre de globale kjerneinnstillingene for denne spesifikke kalenderen.",compact_events_to_show:"Kompakte hendelser å vise",entity_compact_events_note:"Overstyr antall hendelser som skal vises i kompakt modus for denne kalenderen.",show_time:"Vis tid",entity_show_time_note:"Vis eller skjul hendelsestider bare for denne kalenderen.",show_location:"Vis sted",entity_show_location_note:"Vis eller skjul hendelsessteder bare for denne kalenderen.",show_description:"Vis beskrivelse",entity_show_description_note:"Vis eller skjul hendelsesbeskrivelser bare for denne kalenderen.",split_multiday_events:"Del flerdagshendelser",entity_split_multiday_note:"Del flerdagshendelser i individuelle dagssegmenter for denne kalenderen.",core_settings:"Kjerneinnstillinger",time_range:"Tidsområde",time_range_note:"Dette tidsområdet definerer normal visningsmodus, som blir den utvidede visningen hvis kompakt modus er konfigurert.",days_to_show:"Dager å vise",days_to_show_note:"Antall dager å hente fra API og vise i kalenderen",start_date:"Startdato",start_date_mode:"Startdatomodus",start_date_mode_default:"Standard (i dag)",start_date_mode_fixed:"Fast dato",start_date_mode_offset:"Relativt offset",start_date_fixed:"Fast startdato",start_date_offset:"Relativt offset fra i dag",start_date_offset_note:"Skriv inn et positivt eller negativt tall for å forskyve fra i dag (f.eks. +1 for i morgen, -5 for fem dager siden).",compact_mode:"Kompakt modus",compact_mode_note:"Kompakt modus viser færre dager og/eller hendelser i utgangspunktet. Kortet kan utvides til full visning ved hjelp av et trykk eller hold-handling hvis konfigurert med handling: 'expand'.",compact_no_limits_warning:"En utvid-handling er konfigurert, men ingen kompaktgrenser er satt. Sett «Kompakte dager å vise» og/eller «Kompakte hendelser å vise» lavere enn verdiene for full visning ellers ser kortet likt ut før og etter utvidelse.",compact_days_to_show:"Kompakte dager å vise",compact_days_inert_warning:"«Kompakte dager å vise» er ikke lavere enn «Dager å vise», og har derfor ingen effekt. Senk verdien for å skjule dager i kompakt visning.",compact_events_to_show_note:"Trer bare i kraft når det valgte dagsintervallet inneholder flere hendelser enn dette.",compact_events_complete_days:"Komplette dager i kompakt modus",compact_events_complete_days_note:"Når aktivert, hvis minst én hendelse fra en dag vises, vil alle hendelser fra den dagen bli vist.",event_visibility:"Hendelsessynlighet",show_past_events:"Vis tidligere hendelser",show_empty_days:"Vis tomme dager",filter_duplicates:"Filtrer duplikate hendelser",filter_duplicates_note:"Fjerner hendelser med samme tittel, tid og sted. Kopien fra kalenderen som er oppført først beholdes, sammen med dens etikett og farge.",language_time_formats:"Språk og tidsformater",language:"Språk",language_mode:"Språkmodus",language_code:"Språkkode",language_code_note:"Skriv inn en 2-bokstavs språkkode (f.eks. 'nb', 'en', 'de')",time_24h:"Tidsformat",system:"Systemstandard",custom:"Egendefinert","12h":"12-timer","24h":"24-timer",appearance_layout:"Utseende og layout",title_styling:"Tittelformatering",title:"Tittel",title_font_size:"Tittel skriftstørrelse",title_color:"Tittelfarge",card_styling:"Kortformatering",background_color:"Bakgrunnsfarge",height_mode:"Høydemodus",auto:"Automatisk høyde",fixed:"Fast høyde",maximum:"Maksimal høyde",height_value:"Høydeverdi",fixed_height_note:"Kortet opprettholder alltid nøyaktig denne høyden uavhengig av innhold",max_height_note:"Kortet vokser med innholdet opp til denne maksimale høyden",event_styling:"Hendelsesformatering",event_background_opacity:"Hendelse bakgrunnsopasitet",vertical_line_width:"Vertikal linjebredde",spacing_alignment:"Avstand og justering",day_spacing:"Dag avstand",event_spacing:"Hendelse avstand",additional_card_spacing:"Ekstra kortavstand",date_display:"Datovisning",vertical_alignment:"Vertikal justering",date_vertical_alignment:"Dato vertikal justering",event_icon_alignment:"Ikonjustering",event_icon_vertical_alignment:"Vertikal ikonjustering",date_formatting:"Datoformatering",top:"Topp",middle:"Midten",bottom:"Bunn",weekday_font:"Ukedagsskrift",weekday_font_size:"Ukedagsskriftstørrelse",weekday_color:"Ukedagsfarge",day_font:"Dagsskrift",day_font_size:"Dagsskriftstørrelse",day_color:"Dagsfarge",month_font:"Månedsskrift",show_month:"Vis måned",month_font_size:"Månedsskriftstørrelse",month_color:"Månedsfarge",weekend_highlighting:"Helgefremheving",weekend_weekday_color:"Helg ukedagsfarge",weekend_day_color:"Helg dagsfarge",weekend_month_color:"Helg månedsfarge",today_highlighting:"I dag fremheving",today_weekday_color:"I dag ukedagsfarge",today_day_color:"I dag dagsfarge",today_month_color:"I dag månedsfarge",today_indicator:"I dag indikator",dot:"Prikk",pulse:"Puls",glow:"Glød",emoji:"Emoji",emoji_value:"Emoji",emoji_indicator_note:"Skriv inn et enkelt emoji-tegn som 🗓️",image_path:"Bildesti",image_indicator_note:"Sti til bilde som /local/image.jpg",today_indicator_position:"I dag indikatorposisjon",today_indicator_color:"I dag indikatorfarge",today_indicator_size:"I dag indikatorstørrelse",week_numbers_separators:"Ukenumre og skillelinjer",week_numbers:"Ukenumre",first_day_of_week:"Første dag i uken",sunday:"Søndag",monday:"Mandag",show_week_numbers:"Vis ukenumre",week_number_note_iso:"ISO (Europa/Internasjonal): Første uke inneholder første torsdag i året. Gir konsistent ukenummerering på tvers av år (ISO 8601-standard).",week_number_note_simple:"Enkel (Nord-Amerika): Uker telles sekvensielt fra 1. januar uavhengig av ukedag. Første uke kan være delvis. Mer intuitiv, men mindre standardisert.",show_current_week_number:"Vis gjeldende ukenummer",week_number_font_size:"Ukenummer skriftstørrelse",week_number_color:"Ukenummerfarge",week_number_background_color:"Ukenummer bakgrunnsfarge",day_separator:"Dagsskillelinje",show_day_separator:"Vis dagsskillelinje",day_separator_width:"Dagsskillelinje bredde",day_separator_color:"Dagsskillelinje farge",week_separator:"Ukeskillelinje",show_week_separator:"Vis ukeskillelinje",week_separator_width:"Ukeskillelinje bredde",week_separator_color:"Ukeskillelinje farge",month_separator:"Månedsskillelinje",show_month_separator:"Vis månedsskillelinje",month_separator_width:"Månedsskillelinje bredde",month_separator_color:"Månedsskillelinje farge",event_display:"Hendelsesvisning",event_title:"Hendelsestitttel",event_font_size:"Hendelsesskriftstørrelse",empty_day_color:"Tom dagsfarge",time:"Tid",show_single_allday_time:"Vis tid for heldagshendelser",show_end_time:"Vis sluttid",time_two_digit_hours:"Tosifret timer",time_font_size:"Tidsskriftstørrelse",time_color:"Tidsfarge",time_icon_size:"Tidsikonstørrelse",location:"Sted",remove_location_country:"Fjern stedets land",location_font_size:"Stedsskriftstørrelse",location_color:"Stedsfarge",location_icon_size:"Stedsikonstørrelse",description:"Beskrivelse",description_font_size:"Beskrivelse skriftstørrelse",description_color:"Beskrivelse farge",description_icon_size:"Beskrivelse ikonstørrelse",description_max_lines:"Beskrivelse maks linjer (0 = ubegrenset)",custom_country_pattern:"Landsmønstre å fjerne",custom_country_pattern_note:"Skriv inn landsnavn som et regulært uttrykksmønster (f.eks. 'Norge|USA|Sverige'). Hendelser med steder som slutter med disse mønstrene vil få landet fjernet.",progress_indicators:"Fremgangsindikatorer",show_countdown:"Vis nedtelling",show_countdown_allday:"Vis nedtelling for heldagshendelser",show_progress_bar:"Vis fremdriftslinje",progress_bar_color:"Fremdriftslinjefarge",progress_bar_height:"Fremdriftslinjehøyde",progress_bar_width:"Fremdriftslinje bredde",multiday_event_handling:"Flerdagshendelseshåndtering",weather_integration:"Værintegrasjon",weather_entity_position:"Værenhet og posisjon",weather_entity:"Værenhet",weather_position:"Værposisjon",date:"Dato",event:"Hendelse",both:"Begge",date_column_weather:"Datokolonne vær",show_conditions:"Vis værforhold",show_high_temp:"Vis høy temperatur",show_low_temp:"Vis lav temperatur",icon_size:"Ikonstørrelse",font_size:"Skriftstørrelse",color:"Farge",event_row_weather:"Hendelsesrad vær",show_temp:"Vis temperatur",show_uv_index:"Vis UV-indeks",uv_index_threshold:"UV-indeks terskel",daily_forecast_fallback:"Bruk daglig værvarsel som reserve",interactions:"Interaksjoner",tap_action:"Trykkehandling",hold_action:"Holdehandling",more_info:"Mer info",navigate:"Naviger",url:"URL",call_service:"Kall tjeneste",expand:"Bytt kompakt/utvidet visning",navigation_path:"Navigasjonssti",url_path:"URL",service:"Tjeneste",service_data:"Tjenestedata (JSON)",refresh_settings:"Oppdateringsinnstillinger",refresh_interval:"Oppdateringsintervall (minutter)",refresh_on_navigate:"Oppdater ved navigering tilbake",deprecated_config_detected:"Utdaterte konfigurasjonsalternativer oppdaget.",deprecated_config_explanation:"Noen alternativer i konfigurasjonen din støttes ikke lenger.",deprecated_config_update_hint:"Vennligst oppdater for å sikre kompatibilitet.",update_config:"Oppdater konfigurasjon"}},nl:{daysOfWeek:["Zo","Ma","Di","Wo","Do","Vr","Za"],fullDaysOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],months:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],allDay:"hele dag",multiDay:"tot",at:"om",endsToday:"eindigt vandaag",endsTomorrow:"eindigt morgen",noEvents:"Geen afspraken gepland",loading:"Kalender afspraken laden...",error:"Fout: Kalender niet gevonden of verkeerd geconfigureerd"},nn:{daysOfWeek:["Søn","Mån","Tys","Ons","Tor","Fre","Lau"],fullDaysOfWeek:["søndag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],months:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],allDay:"heile dagen",multiDay:"til",at:"kl. ",endsToday:"sluttar i dag",endsTomorrow:"sluttar i morgon",noEvents:"Ingen kommande hendingar",loading:"Lastar kalenderhendingar...",error:"Feil: Kalendereininga vart ikkje funnen eller er ikkje konfigurert riktig"},pl:{daysOfWeek:["Nd","Pn","Wt","Śr","Cz","Pt","Sb"],fullDaysOfWeek:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],months:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],allDay:"cały dzień",multiDay:"do",at:"o",endsToday:"kończy się dziś",endsTomorrow:"kończy się jutro",noEvents:"Brak nadchodzących wydarzeń",loading:"Ładowanie wydarzeń z kalendarza...",error:"Błąd: encja kalendarza nie została znaleziona lub jest niepoprawnie skonfigurowana",editor:{calendar_entities:"Encje Kalendarza",calendar:"Kalendarz",entity_identification:"Identyfikacja Encji",entity:"Encja",add_calendar:"Dodaj kalendarz",remove:"Usuń",convert_to_advanced:"Konwertuj na zaawansowane",simple:"Proste",display_settings:"Ustawienia Wyświetlania",label:"Etykieta",label_type:"Typ Etykiety",none:"Brak",text_emoji:"Tekst/Emoji",icon:"Ikona",text_value:"Wartość Tekstowa",text_label_note:"Wpisz tekst lub emoji jak '📅 Mój Kalendarz'",image:"Obraz",image_label_note:"Ścieżka do obrazu jak /local/calendar.jpg",label_note:"Niestandardowa etykieta dla tego kalendarza.",colors:"Kolory",event_color:"Kolor Wydarzeń",entity_color_note:"Niestandardowy kolor dla tytułów wydarzeń z tego kalendarza.",accent_color:"Kolor Akcentu",entity_accent_color_note:"Niestandardowy kolor akcentu dla linii pionowej wydarzeń z tego kalendarza. Ten kolor będzie również używany jako kolor tła wydarzenia gdy 'event_background_opacity' jest >0.",label_icon_color:"Kolor ikony etykiety",label_icon_color_note:"Niestandardowy kolor ikony etykiety. Jeśli nie ustawiono, ikona dziedziczy domyślny kolor tekstu.",event_filtering:"Filtrowanie Wydarzeń",blocklist:"Lista Blokady",blocklist_note:"Lista wyrazów oddzielonych pionową kreską do wykluczania wydarzeń. Wydarzenia z tytułami zawierającymi któryś z tych wyrazów będą ukryte. Przykład: 'Prywatne|Spotkanie|Konferencja'",allowlist:"Lista Dozwolonych",allowlist_note:"Lista wyrazów oddzielonych pionową kreską do uwzględniania wydarzeń. Jeśli nie jest pusta, będą wyświetlane tylko wydarzenia z tytułami zawierającymi któryś z tych wyrazów. Przykład: 'Urodziny|Rocznica|Ważne'",entity_overrides:"Zastąpienia Encji",entity_overrides_note:"Te ustawienia będą zastępować globalne ustawienia podstawowe dla tego konkretnego kalendarza.",compact_events_to_show:"Zdarzenia do wyświetlenia w trybie kompaktowym",entity_compact_events_note:"Zastąp liczbę wydarzeń do wyświetlenia w trybie kompaktowym dla tego kalendarza.",show_time:"Pokaż czas",entity_show_time_note:"Pokaż lub ukryj czasy wydarzeń tylko dla tego kalendarza.",show_location:"Pokaż lokalizację",entity_show_location_note:"Pokaż lub ukryj lokalizacje wydarzeń tylko dla tego kalendarza.",show_description:"Pokaż opis",entity_show_description_note:"Pokaż lub ukryj opisy wydarzeń tylko dla tego kalendarza.",split_multiday_events:"Podziel wydarzenia wielodniowe",entity_split_multiday_note:"Podziel wydarzenia wielodniowe na poszczególne segmenty dni dla tego kalendarza.",core_settings:"Ustawienia Podstawowe",time_range:"Zakres Czasowy",time_range_note:"Ten zakres czasowy definiuje tryb zwykły wyświetlania, który staje się widokiem rozszerzonym jeśli skonfigurowany jest tryb kompaktowy.",days_to_show:"Dni do wyświetlenia",days_to_show_note:"Liczba dni do pobrania z API i wyświetlenia w kalendarzu",start_date:"Data Początkowa",start_date_mode:"Tryb Daty Początkowej",start_date_mode_default:"Domyślnie (dziś)",start_date_mode_fixed:"Ustalona data",start_date_mode_offset:"Względne przesunięcie",start_date_fixed:"Ustalona data początkowa",start_date_offset:"Względne przesunięcie od dzisiaj",start_date_offset_note:"Wpisz liczbę dodatnią lub ujemną do przesunięcia od dzisiaj (np. +1 na jutro, -5 na pięć dni temu).",compact_mode:"Tryb Kompaktowy",compact_mode_note:"Tryb kompaktowy wyświetla mniej dni i/lub wydarzeń na początku. Kartę można rozszerzyć do pełnego widoku za pomocą akcji dotknięcia lub przytrzymania jeśli skonfigurowane z action: 'expand'.",compact_no_limits_warning:"Skonfigurowano akcję rozwijania, ale nie ustawiono żadnych limitów trybu kompaktowego. Ustaw „Dni do wyświetlenia w trybie kompaktowym” i/lub „Zdarzenia do wyświetlenia w trybie kompaktowym” poniżej wartości pełnego widoku w przeciwnym razie karta będzie wyglądać identycznie przed i po rozwinięciu.",compact_days_to_show:"Dni do wyświetlenia w trybie kompaktowym",compact_days_inert_warning:"„Dni do wyświetlenia w trybie kompaktowym” nie jest mniejsze niż „Dni do wyświetlenia”, więc nie ma żadnego efektu. Zmniejsz tę wartość, aby ukryć dni w trybie kompaktowym.",compact_events_to_show_note:"Działa tylko wtedy, gdy wybrany zakres dni zawiera więcej wydarzeń niż ta wartość.",compact_events_complete_days:"Pełne dni w trybie kompaktowym",compact_events_complete_days_note:"Po włączeniu, jeśli co najmniej jedno wydarzenie z dnia jest wyświetlane, wszystkie wydarzenia z tego dnia będą wyświetlane.",event_visibility:"Widoczność Wydarzeń",show_past_events:"Pokaż przeszłe wydarzenia",show_empty_days:"Pokaż puste dni",filter_duplicates:"Filtruj zduplikowane wydarzenia",filter_duplicates_note:"Usuwa wydarzenia o tym samym tytule, czasie i lokalizacji. Zachowywana jest kopia z kalendarza wymienionego jako pierwszy, wraz z jego etykietą i kolorem.",language_time_formats:"Język i Formaty Czasu",language:"Język",language_mode:"Tryb Języka",language_code:"Kod Języka",language_code_note:"Wpisz kod języka z dwoma literami (np. 'en', 'de', 'fr', 'pl')",time_24h:"Format Czasu",system:"Systemowy",custom:"Niestandardowy","12h":"12-godzinny","24h":"24-godzinny",appearance_layout:"Wygląd i Układ",title_styling:"Stylizacja Tytułu",title:"Tytuł",title_font_size:"Rozmiar Czcionki Tytułu",title_color:"Kolor Tytułu",card_styling:"Stylizacja Karty",background_color:"Kolor Tła",height_mode:"Tryb Wysokości",auto:"Automatyczna Wysokość",fixed:"Ustalona Wysokość",maximum:"Maksymalna Wysokość",height_value:"Wartość Wysokości",fixed_height_note:"Karta zawsze zachowuje dokładnie tę wysokość niezależnie od zawartości",max_height_note:"Karta rozwija się wraz z zawartością do tej maksymalnej wysokości",event_styling:"Stylizacja Wydarzeń",event_background_opacity:"Przezroczystość Tła Wydarzenia",vertical_line_width:"Szerokość Linii Pionowej",spacing_alignment:"Odstępy i Wyrównanie",day_spacing:"Odstęp Między Dniami",event_spacing:"Odstęp Między Wydarzeniami",additional_card_spacing:"Dodatkowy Odstęp Karty",date_display:"Wyświetlanie Daty",vertical_alignment:"Wyrównanie Wertykalne",date_vertical_alignment:"Wyrównanie Wertykalne Daty",event_icon_alignment:"Wyrównanie Ikon",event_icon_vertical_alignment:"Wyrównanie wertykalne ikon",date_formatting:"Formatowanie Daty",top:"Góra",middle:"Środek",bottom:"Dół",weekday_font:"Czcionka Dnia Tygodnia",weekday_font_size:"Rozmiar Czcionki Dnia Tygodnia",weekday_color:"Kolor Dnia Tygodnia",day_font:"Czcionka Dnia",day_font_size:"Rozmiar Czcionki Dnia",day_color:"Kolor Dnia",month_font:"Czcionka Miesiąca",show_month:"Pokaż Miesiąc",month_font_size:"Rozmiar Czcionki Miesiąca",month_color:"Kolor Miesiąca",weekend_highlighting:"Wyróżnianie Weekendu",weekend_weekday_color:"Kolor Dnia Tygodnia w Weekend",weekend_day_color:"Kolor Dnia w Weekend",weekend_month_color:"Kolor Miesiąca w Weekend",today_highlighting:"Wyróżnianie Dzisiaj",today_weekday_color:"Kolor Dnia Tygodnia Dzisiaj",today_day_color:"Kolor Dnia Dzisiaj",today_month_color:"Kolor Miesiąca Dzisiaj",today_indicator:"Wskaźnik Dzisiaj",dot:"Punkt",pulse:"Pulsowanie",glow:"Blask",emoji:"Emoji",emoji_value:"Emoji",emoji_indicator_note:"Wpisz jeden znak emoji jak 🗓️",image_path:"Ścieżka Obrazu",image_indicator_note:"Ścieżka do obrazu jak /local/image.jpg",today_indicator_position:"Pozycja Wskaźnika Dzisiaj",today_indicator_color:"Kolor Wskaźnika Dzisiaj",today_indicator_size:"Rozmiar Wskaźnika Dzisiaj",week_numbers_separators:"Numery Tygodni i Separatory",week_numbers:"Numery Tygodni",first_day_of_week:"Pierwszy Dzień Tygodnia",sunday:"Niedziela",monday:"Poniedziałek",show_week_numbers:"Pokaż Numery Tygodni",week_number_note_iso:"ISO (Europa/Międzynarodowy): Pierwszy tydzień zawiera pierwszy czwartek roku. Tworzy spójną numerację tygodni na lata (standard ISO 8601).",week_number_note_simple:"Proste (Ameryka Północna): Tygodnie liczą się sekwencyjnie od 1 stycznia niezależnie od dnia tygodnia. Pierwszy tydzień może być częściowy. Bardziej intuicyjny ale mniej standardowy.",show_current_week_number:"Pokaż Numer Bieżącego Tygodnia",week_number_font_size:"Rozmiar Czcionki Numeru Tygodnia",week_number_color:"Kolor Numeru Tygodnia",week_number_background_color:"Kolor Tła Numeru Tygodnia",day_separator:"Separator Dni",show_day_separator:"Pokaż Separator Dni",day_separator_width:"Szerokość Separatora Dni",day_separator_color:"Kolor Separatora Dni",week_separator:"Separator Tygodni",show_week_separator:"Pokaż Separator Tygodni",week_separator_width:"Szerokość Separatora Tygodni",week_separator_color:"Kolor Separatora Tygodni",month_separator:"Separator Miesięcy",show_month_separator:"Pokaż Separator Miesięcy",month_separator_width:"Szerokość Separatora Miesięcy",month_separator_color:"Kolor Separatora Miesięcy",event_display:"Wyświetlanie Wydarzenia",event_title:"Tytuł Wydarzenia",event_font_size:"Rozmiar Czcionki Wydarzenia",empty_day_color:"Kolor Pustego Dnia",time:"Czas",show_single_allday_time:"Pokaż Czas dla Całodniowych Wydarzeń Jednodniowych",show_end_time:"Pokaż Czas Zakończenia",time_two_digit_hours:"Dwucyfrowe godziny",time_font_size:"Rozmiar Czcionki Czasu",time_color:"Kolor Czasu",time_icon_size:"Rozmiar Ikony Czasu",location:"Lokalizacja",remove_location_country:"Usuń Kraj z Lokalizacji",location_font_size:"Rozmiar Czcionki Lokalizacji",location_color:"Kolor Lokalizacji",location_icon_size:"Rozmiar Ikony Lokalizacji",description:"Opis",description_font_size:"Rozmiar czcionki opisu",description_color:"Kolor opisu",description_icon_size:"Rozmiar ikony opisu",description_max_lines:"Maks. wierszy opisu (0 = bez limitu)",custom_country_pattern:"Wzorce Krajów do Usunięcia",custom_country_pattern_note:"Wpisz nazwy krajów jako wzorzec wyrażenia regularnego (np. 'USA|Polska|Niemcy'). Referenser z lokalizacjami kończącymi się tymi wzorcami będą miały kraj usunięty.",progress_indicators:"Wskaźniki Postępu",show_countdown:"Pokaż Odliczanie",show_countdown_allday:"Pokaż Odliczanie dla Całodniowych Wydarzeń",show_progress_bar:"Pokaż Pasek Postępu",progress_bar_color:"Kolor Paska Postępu",progress_bar_height:"Wysokość Paska Postępu",progress_bar_width:"Szerokość Paska Postępu",multiday_event_handling:"Obsługa Wydarzeń Wielodniowych",weather_integration:"Integracja Pogody",weather_entity_position:"Encja Pogody i Pozycja",weather_entity:"Encja Pogody",weather_position:"Pozycja Pogody",date:"Data",event:"Wydarzenie",both:"Oba",date_column_weather:"Pogoda Kolumny Daty",show_conditions:"Pokaż Warunki",show_high_temp:"Pokaż Maksymalną Temperaturę",show_low_temp:"Pokaż Minimalną Temperaturę",icon_size:"Rozmiar Ikony",font_size:"Rozmiar Czcionki",color:"Kolor",event_row_weather:"Pogoda Wiersza Wydarzenia",show_temp:"Pokaż Temperaturę",show_uv_index:"Pokaż indeks UV",uv_index_threshold:"Próg indeksu UV",daily_forecast_fallback:"Użyj prognozy dziennej jako zapasowej",interactions:"Interakcje",tap_action:"Akcja Dotknięcia",hold_action:"Akcja Przytrzymania",more_info:"Więcej Informacji",navigate:"Nawiguj",url:"URL",call_service:"Wywołaj Usługę",expand:"Przełącz Widok Kompaktowy/Rozszerzony",navigation_path:"Ścieżka Nawigacji",url_path:"URL",service:"Usługa",service_data:"Dane Usługi (JSON)",refresh_settings:"Ustawienia Odświeżania",refresh_interval:"Interwał Odświeżania (minuty)",refresh_on_navigate:"Odśwież przy Nawigacji Wstecz",deprecated_config_detected:"Wykryto Przestarzałe Opcje Konfiguracji.",deprecated_config_explanation:"Niektóre opcje w Twojej konfiguracji nie są już obsługiwane.",deprecated_config_update_hint:"Zaktualizuj, aby zapewnić kompatybilność.",update_config:"Zaktualizuj Konfigurację…"}},pt:{daysOfWeek:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],fullDaysOfWeek:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],months:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],allDay:"o dia todo",multiDay:"até",at:"às",endsToday:"termina hoje",endsTomorrow:"termina amanhã",noEvents:"Nenhum evento próximo",loading:"Carregando eventos do calendário...",error:"Erro: A entidade do calendário não foi encontrada ou está configurada incorretamente"},ro:{daysOfWeek:["Du","Lu","Ma","Mi","Jo","Vi","Sa"],fullDaysOfWeek:["Duminica","Luni","Marti","Miercuri","Joi","Vineri","Sambata"],months:["Ian","Feb","Mart","Apr","Mai","Iun","Iul","Aug","Sept","Oct","Nov","Dec"],allDay:"toata ziua",multiDay:"pana la",at:"la",endsToday:"se incheie astazi",endsTomorrow:"se incheie maine",noEvents:"Nu sunt evenimente viitoare",loading:"Incarcare evenimente de calendar...",error:"Eroare: Entitatea de calendar nu a fost gasita sau este configurata incorect"},ru:{daysOfWeek:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],fullDaysOfWeek:["воскресенья","понедельника","вторника","среды","четверга","пятницы","субботы"],months:["янв","фев","мар","апр","май","июн","июл","авг","сен","окт","ноя","дек"],allDay:"весь день",multiDay:"до",at:"в",endsToday:"заканчивается сегодня",endsTomorrow:"заканчивается завтра",noEvents:"Нет предстоящих событий",loading:"Загрузка событий календаря...",error:"Ошибка: Объект календарь, не найден или неправильно настроен"},sl:{daysOfWeek:["ned","pon","tor","sre","čet","pet","sob"],fullDaysOfWeek:["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],months:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],allDay:"cel dan",multiDay:"do",at:"ob",endsToday:"konča se danes",endsTomorrow:"konča se jutri",noEvents:"Ni planiranih dogodkov",loading:"Nalagam dogodke...",error:"Napaka: Entiteta ni bila najdena ali pa je nepravilno konfigurirana."},sk:{daysOfWeek:["Ne","Po","Ut","St","Št","Pi","So"],fullDaysOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],months:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],allDay:"celý deň",multiDay:"do",at:"v",endsToday:"končí dnes",endsTomorrow:"končí zajtra",noEvents:"Žiadne udalosti",loading:"Načítavam udalosti z kalendára...",error:"Chyba: Entita kalendára nebola nájdená alebo je nesprávne nakonfigurovaná",editor:{calendar_entities:"Entity kalendára",calendar:"Kalendár",entity_identification:"ID entity",entity:"Entita",add_calendar:"Pridať kalendár",remove:"Odstrániť",convert_to_advanced:"Previesť na pokročilé",simple:"Jednoduché",display_settings:"Nastavenia zobrazenia",label:"Menovka",label_type:"Typ menovky",none:"Žiadna",text_emoji:"Textová/Emodži",icon:"Ikona",text_value:"Textová hodnota",text_label_note:"Zadajte text alebo emodži, napr. '📅 Môj kalendár'",image:"Obrázok",image_label_note:"Cesta k obrázku, napr. /local/calendar.jpg",label_note:"Vlastná menovka tohto kalendára.",colors:"Farby",event_color:"Farba udalosti",entity_color_note:"Vlastná farba pre názvy udalostí v tomto kalendári.",accent_color:"Farba zvýraznenia",entity_accent_color_note:"Vlastná farba zvýraznenia zvislej čiary udalostí v tomto kalendári. Táto farba sa zároveň použije aj ako pozadie udalosti, ak je atribút 'event_background_opacity' väčší ako nula.",label_icon_color:"Farba ikony štítku",label_icon_color_note:"Vlastná farba ikony štítku. Ak nie je nastavená, ikona zdedí predvolenú farbu textu.",event_filtering:"Filtrovanie udalostí",blocklist:"Zoznam zakázaných (blocklist)",blocklist_note:"Zvislou čiarou (|) oddelený zoznam výrazov slúžiacich na výber ignorovaných udalostí. Udalosti s názvom obsahujúcim akýkoľvek z uvedených výrazov budú skryté. Príklad: 'Súkromné|Porada|Konferencia'",allowlist:"Zoznam povolených (allowlist)",allowlist_note:"Zvislou čiarou (|) oddelený zoznam výrazov slúžiacich na výber povolených udalostí. Ak obsahuje hodnotu, zobrazia sa iba udalosti obsahujúce jeden z uvedených výrazov. Príklad: 'Narodeniny|Výročie|Dôležité'",entity_overrides:"Úpravy nastavení",entity_overrides_note:"Tieto nastavenie prepíšu globálne nastavenia pre konkrétny kalendár.",compact_events_to_show:"Zhutniť zobrazené udalosti",entity_compact_events_note:"Zmeniť počet udalostí tohto kalendára, ktoré budú zobrazené v kompaktnom režime.",show_time:"Zobrazovať čas",entity_show_time_note:"Zobraziť alebo skryť čas udalostí v tomto kalendári.",show_location:"Zobrazovať miesto",entity_show_location_note:"Zobraziť alebo skryť miesto udalostí v tomto kalendári.",show_description:"Zobrazovať popis",entity_show_description_note:"Zobraziť alebo skryť popis udalostí v tomto kalendári.",split_multiday_events:"Rozdeľovať niekoľkodňové udalosti",entity_split_multiday_note:"Rozdeliť niekoľkodňové udalosti v tomto kalendári do jednotlivých dní.",core_settings:"Globálne nastavenia",time_range:"Časový rozsah",time_range_note:"Tento časový rozsah nastavuje režim normálneho zobrazenia, ktorý sa stane rozšíreným zobrazením, ak je nakonfigurovaný kompaktný režim.",days_to_show:"Zobrazované dni",days_to_show_note:"Počet dní, ktoré sa majú z API načítavať a zobrazovať v kalendári",start_date:"Počiatočný dátum",start_date_mode:"Režim počiatočného dátumu",start_date_mode_default:"Predvolený (dnes)",start_date_mode_fixed:"Pevný dátum",start_date_mode_offset:"Relatívny posun",start_date_fixed:"Pevný dátum začiatku",start_date_offset:"Relatívny posun od dneška",start_date_offset_note:"Zadajte kladné alebo záporné číslo, ktoré sa pripočíta/odpočíta od dneška (napr. +1 pre zajtrajšok, -5 pre termín pred 5 dňami).",compact_mode:"Kompaktný režim",compact_mode_note:"Kompaktný režim zobrazuje na začiatok menej dní a/alebo udalostí. Kartu môžete rozbaliť na plné zobrazenie akciou kliknutia alebo podržania, ak jej nastavíte akciu: 'expand'.",compact_no_limits_warning:"Je nakonfigurovaná akcia rozbalenia, ale nie sú nastavené žiadne limity kompaktného režimu. Nastavte „Kompaktné dni, ktoré sa zobrazia“ a/alebo „Zhutniť zobrazené udalosti“ nižšie ako hodnoty úplného zobrazenia inak bude karta vyzerať rovnako pred rozbalením aj po ňom.",compact_days_to_show:"Kompaktné dni, ktoré sa zobrazia",compact_days_inert_warning:"„Kompaktné dni, ktoré sa zobrazia“ nie je nižšie ako „Zobrazované dni“, takže nemá žiadny účinok. Znížte túto hodnotu, aby sa dni v kompaktnom režime skryli.",compact_events_to_show_note:"Uplatní sa iba vtedy, keď vybraný rozsah dní obsahuje viac udalostí ako táto hodnota.",compact_events_complete_days:"Úplné dni v kompaktnom režime",compact_events_complete_days_note:"Ak je táto voľba zapnutá, pri zobrazení aspoň jednej udalosti z daného dňa sa budú zobrazovať všetky udalosti v tento deň.",event_visibility:"Viditeľnosť udalostí",show_past_events:"Zobrazovať udalosti, ktoré už prebehli",show_empty_days:"Zobrazovať prázdne dni",filter_duplicates:"Filtrovať duplicitné udalosti",filter_duplicates_note:"Odstráni udalosti s rovnakým názvom, časom a miestom. Zachová sa kópia z kalendára uvedeného ako prvý, vrátane jeho menovky a farby.",language_time_formats:"Jazyk a formát času",language:"Jazyk",language_mode:"Režim jazyka",language_code:"Kód jazyka",language_code_note:"Zadajte dvojpísmenný kód jazyka (napr. 'en', 'sk', 'cs')",time_24h:"Formát času",system:"Predvolený systémom",custom:"Vlastný","12h":"12 hod.","24h":"24 hod.",appearance_layout:"Vzhľad a rozloženie",title_styling:"Štýl názvu",title:"Názov",title_font_size:"Veľkosť písma názvu",title_color:"Farba názvu",card_styling:"Štýl karty",background_color:"Farba pozadia",height_mode:"Režim výšky",auto:"Automatická výška",fixed:"Pevná výška",maximum:"Maximálna výška",height_value:"Hodnota výšky",fixed_height_note:"Karta vždy používa presne túto výšku bez ohľadu na zobrazený obsah",max_height_note:"Výška karty sa zväčšuje podľa zobrazeného obsahu až do uvedenej maximálnej hodnoty",event_styling:"Štýl udalostí",event_background_opacity:"Nepriehľadnosť pozadia udalostí",vertical_line_width:"Šírka zvislej čiary",spacing_alignment:"Medzery a zarovnanie",day_spacing:"Medzery medzi dňami",event_spacing:"Medzery medzi udalosťami",additional_card_spacing:"Dodatočné medzery karty",date_display:"Zobrazenie dátumu",vertical_alignment:"Zvislé zarovnanie",date_vertical_alignment:"Zvislé zarovnanie dátumu",event_icon_alignment:"Zarovnanie ikon",event_icon_vertical_alignment:"Zvislé zarovnanie ikon",date_formatting:"Formátovanie dátumu",top:"Hore",middle:"Stred",bottom:"Dole",weekday_font:"Písmo pracovného dňa",weekday_font_size:"Veľkosť písma pracovného dňa",weekday_color:"Farba pracovného dňa",day_font:"Písmo dňa",day_font_size:"Veľkosť písma dňa",day_color:"Farba dňa",month_font:"Písmo mesiaca",show_month:"Zobrazovať mesiac",month_font_size:"Veľkosť písma mesiaca",month_color:"Farba mesiaca",weekend_highlighting:"Zvýraznenie víkendu",weekend_weekday_color:"Farba pracovného dňa",weekend_day_color:"Farba víkendového dňa",weekend_month_color:"Farba víkendu v mesiaci",today_highlighting:"Zvýraznenie dneška",today_weekday_color:"Farba dnešného pracovného dňa",today_day_color:"Farba dneška",today_month_color:"Farba dneška v mesiaci",today_indicator:"Identifikátor dneška",dot:"Bodka",pulse:"Pulz",glow:"Žiara",emoji:"Emodži",emoji_value:"Emodži",emoji_indicator_note:"Zadajte jeden znak emodži, napr. 🗓️",image_path:"Cesta k obrázku",image_indicator_note:"Cesta k obrázku, napr. /local/image.jpg",today_indicator_position:"Umiestnenie identifikátora dneška",today_indicator_color:"Farba identifikátora dneška",today_indicator_size:"Veľkosť identifikátora dneška",week_numbers_separators:"Čísla týždňov a oddeľovače",week_numbers:"Čísla týždňov",first_day_of_week:"Prvý deň týždňa",sunday:"Nedeľa",monday:"Pondelok",show_week_numbers:"Zobrazovať čísla týždňov",week_number_note_iso:"ISO (Európa/Medzinárodné): Prvý týždeň zahŕňa prvý štvrtok v roku. Vytvára konzistentné číslovanie týždňov medzi jednotlivými rokmi (štandard ISO 8601).",week_number_note_simple:"Jednoduché (Severná Amerika): Týždne sú číslované od prvého januára bez ohľadu na deň týždňa. Prvý týždeň nemusí byť úplný. Intuitívnejší, ale menej štandardizovaný.",show_current_week_number:"Zobrazovať aktuálne číslo týždňa",week_number_font_size:"Veľkosť písma čísla týždňa",week_number_color:"Farba čísla týždňa",week_number_background_color:"Farba pozadia čísla týždňa",day_separator:"Oddeľovač dní",show_day_separator:"Zobrazovať oddeľovač dní",day_separator_width:"Šírka oddeľovača dní",day_separator_color:"Farba oddeľovača dní",week_separator:"Oddeľovač týždňov",show_week_separator:"Zobrazovať oddeľovač týždňov",week_separator_width:"Šírka oddeľovača týždňov",week_separator_color:"Farba oddeľovača týždňov",month_separator:"Oddeľovač mesiacov",show_month_separator:"Zobrazovať oddeľovač mesiacov",month_separator_width:"Šírka oddeľovača mesiacov",month_separator_color:"Farba oddeľovača mesiacov",event_display:"Zobrazenie udalosti",event_title:"Názov udalosti",event_font_size:"Veľkosť písma udalosti",empty_day_color:"Farba prázdneho dňa",time:"Čas",show_single_allday_time:"Zobrazovať čas pri celodenných udalostiach",show_end_time:"Zobrazovať čas skončenia",time_two_digit_hours:"Dvojciferné hodiny",time_font_size:"Veľkosť písma času",time_color:"Farba času",time_icon_size:"Veľkosť ikony času",location:"Miesto",remove_location_country:"Odstrániť krajinu",location_font_size:"Veľkosť písma miesta",location_color:"Farba miesta",location_icon_size:"Veľkosť ikony miesta",description:"Popis",description_font_size:"Veľkosť písma popisu",description_color:"Farba popisu",description_icon_size:"Veľkosť ikony popisu",description_max_lines:"Popis max. riadkov (0 = neobmedzené)",custom_country_pattern:"Vzory krajín, ktoré budú odstránené",custom_country_pattern_note:"Zadajte mená krajín ako vzor regulárneho výrazu (napr. 'USA|Spojené štáty|Kanada'). V udalosti, ktorých miesta sa končia na ktorýkoľvek z týchto výrazov, sa odstráni krajina.",progress_indicators:"Ukazovateľ priebehu",show_countdown:"Zobraziť odpočítavanie",show_countdown_allday:"Zobraziť odpočítavanie pri celodenných udalostiach",show_progress_bar:"Zobraziť lištu priebehu",progress_bar_color:"Farba lišty priebehu",progress_bar_height:"Výška lišty priebehu",progress_bar_width:"Šírka lišty priebehu",multiday_event_handling:"Spracovanie viacdenných udalostí",weather_integration:"Integrácia s počasím",weather_entity_position:"Entita počasia a umiestnenie",weather_entity:"Entita počasia",weather_position:"Umiestnenie počasia",date:"Dátum",event:"Udalosť",both:"Obe",date_column_weather:"Počasie v stĺpci s dátumom",show_conditions:"Zobraziť predpoveď",show_high_temp:"Zobraziť najvyššiu teplotu",show_low_temp:"Zobraziť najnižšiu teplotu",icon_size:"Veľkosť ikony",font_size:"Veľkosť písma",color:"Farba",event_row_weather:"Počasie v riadku s udalosťou",show_temp:"Zobraziť teplotu",show_uv_index:"Zobraziť UV index",uv_index_threshold:"Prah UV indexu",daily_forecast_fallback:"Použiť dennú predpoveď ako záložnú",interactions:"Interakcie",tap_action:"Akcia kliknutia",hold_action:"Akcia podržania",more_info:"Viac informácií",navigate:"Navigovať",url:"URL adresa",call_service:"Zavolať službu",expand:"Prepnúť kompaktný/rozšírený pohľad",navigation_path:"Cesta pre navigáciu",url_path:"URL adresa",service:"Služba",service_data:"Údaje pre službu (JSON)",refresh_settings:"Nastavenie obnovenia",refresh_interval:"Interval obnovenia (minúty)",refresh_on_navigate:"Obnoviť pri navigovaní späť",deprecated_config_detected:"Boli zistené zastarané možnosti konfigurácie.",deprecated_config_explanation:"Niektoré voľby vo vašej konfigurácií už nie sú podporované.",deprecated_config_update_hint:"Prosím, aktualizujte ich, aby ste tak zaistili kompatibilitu.",update_config:"Aktualizovať konfiguráciu…"}},sv:{daysOfWeek:["Sön","Mån","Tis","Ons","Tors","Fre","Lör"],fullDaysOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],months:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],allDay:"heldag",multiDay:"till",at:"vid",endsToday:"slutar idag",endsTomorrow:"slutar imorgon",noEvents:"Inga kommande händelser",loading:"Laddar kalenderhändelser...",error:"Fel: Kalenderentiteten hittades inte eller är felaktigt konfigurerad.",editor:{calendar_entities:"Kalenderentiteter",calendar:"Kalender",entity_identification:"Entitetsidentifiering",entity:"Entitet",add_calendar:"Lägg till kalender",remove:"Ta bort",convert_to_advanced:"Konvertera till avancerat",simple:"Enkel",display_settings:"Visningsinställningar",label:"Etikett",label_type:"Etikettyp",none:"Ingen",text_emoji:"Text/Emoji",icon:"Ikon",text_value:"Textvärde",text_label_note:"Ange text eller emoji som '📅 Min Kalender'",image:"Bild",image_label_note:"Sökväg till bild, t.ex. /local/calendar.jpg",label_note:"Anpassad etikett för denna kalender.",colors:"Färger",event_color:"Händelsefärg",entity_color_note:"Anpassad färg för händelsetitlar från denna kalender.",accent_color:"Accentfärg",entity_accent_color_note:"Anpassad accentfärg för den vertikala linjen för händelser från denna kalender. Denna färg används även som bakgrundsfärg för händelsen när 'event_background_opacity' är >0.",label_icon_color:"Etikettikonfärg",label_icon_color_note:"Anpassad färg för etikettikonen. Om den inte anges ärver ikonen standardtextfärgen.",event_filtering:"Händelsefiltrering",blocklist:"Blocklista",blocklist_note:"Lista med termer (avgränsade med |) att exkludera händelser. Händelser med titlar som innehåller någon av dessa termer döljs. Exempel: 'Privat|Möte|Konferens'",allowlist:"Tillåtlista",allowlist_note:"Lista med termer (avgränsade med |) att inkludera händelser. Om inte tom, visas endast händelser med titlar som innehåller någon av dessa termer. Exempel: 'Födelsedag|Jubileum|Viktigt'",entity_overrides:"Entitetsöverskridanden",entity_overrides_note:"Dessa inställningar åsidosätter de globala kärninställningarna för denna specifika kalender.",compact_events_to_show:"Kompakta händelser att visa",entity_compact_events_note:"Åsidosätt antal händelser att visa i kompakt läge för denna kalender.",show_time:"Visa tid",entity_show_time_note:"Visa eller dölj händelsetider endast för denna kalender.",show_location:"Visa plats",entity_show_location_note:"Visa eller dölj plats för händelser endast för denna kalender.",show_description:"Visa beskrivning",entity_show_description_note:"Visa eller dölj beskrivningar för händelser endast för denna kalender.",split_multiday_events:"Dela upp flerdagshändelser",entity_split_multiday_note:"Dela upp flerdagshändelser i individuella dagsegment för denna kalender.",core_settings:"Kärninställningar",time_range:"Tidsintervall",time_range_note:"Detta tidsintervall definierar det vanliga visningsläget, vilket blir det utökade läget om kompakt läge är konfigurerat.",days_to_show:"Dagar att visa",days_to_show_note:"Antal dagar att hämta från API och visa i kalendern",start_date:"Startdatum",start_date_mode:"Startdatoläge",start_date_mode_default:"Standard (idag)",start_date_mode_fixed:"Fast datum",start_date_mode_offset:"Relativt avstånd",start_date_fixed:"Fast startdatum",start_date_offset:"Relativt avstånd från idag",start_date_offset_note:"Ange ett positivt eller negativt tal för att justera från idag (t.ex. +1 för imorgon, -5 för fem dagar sedan).",compact_mode:"Kompakt läge",compact_mode_note:"Kompakt läge visar färre dagar och/eller händelser initialt. Kortet kan expandera till full vy med en tryckning eller hållning om det är konfigurerat med action: 'expand'.",compact_no_limits_warning:"En expandera-åtgärd är konfigurerad, men inga kompaktgränser är angivna. Ange ”Kompakta dagar att visa” och/eller ”Kompakta händelser att visa” lägre än värdena för fullständig vy annars ser kortet likadant ut före och efter expandering.",compact_days_to_show:"Kompakta dagar att visa",compact_days_inert_warning:"”Kompakta dagar att visa” är inte lägre än ”Dagar att visa” och har därför ingen effekt. Sänk värdet för att dölja dagar i kompakt vy.",compact_events_to_show_note:"Får bara effekt när det valda dagsintervallet innehåller fler händelser än detta.",compact_events_complete_days:"Kompletta dagar i kompakt läge",compact_events_complete_days_note:"När aktiverat, om minst en händelse från en dag visas, visas alla händelser från den dagen.",event_visibility:"Händelsevisning",show_past_events:"Visa tidigare händelser",show_empty_days:"Visa tomma dagar",filter_duplicates:"Filtrera dubbletter",filter_duplicates_note:"Tar bort händelser med samma titel, tid och plats. Kopian från kalendern som anges först behålls, tillsammans med dess etikett och färg.",language_time_formats:"Språk & tidsformat",language:"Språk",language_mode:"Språkläge",language_code:"Språkkod",language_code_note:"Ange en tvåställig språkkod (t.ex. 'sv', 'en', 'de')",time_24h:"Tidsformat",system:"Systemstandard",custom:"Anpassad","12h":"12-timmars","24h":"24-timmars",appearance_layout:"Utseende & Layout",title_styling:"Titelstil",title:"Titel",title_font_size:"Titelfontstorlek",title_color:"Titelfärg",card_styling:"Kortstil",background_color:"Bakgrundsfärg",height_mode:"Höjdläge",auto:"Automatisk höjd",fixed:"Fast höjd",maximum:"Maxhöjd",height_value:"Höjdvärde",fixed_height_note:"Kortet behåller alltid exakt denna höjd oavsett innehåll",max_height_note:"Kortet växer med innehållet upp till denna maxhöjd",event_styling:"Händelsestil",event_background_opacity:"Händelsebakgrundens opacitet",vertical_line_width:"Vertikal linjebredd",spacing_alignment:"Avstånd & Justering",day_spacing:"Dagavstånd",event_spacing:"Händelseavstånd",additional_card_spacing:"Ytterligare kortavstånd",date_display:"Datumvisning",vertical_alignment:"Vertikal justering",date_vertical_alignment:"Datum vertikal justering",event_icon_alignment:"Ikonjustering",event_icon_vertical_alignment:"Vertikal ikonjustering",date_formatting:"Datumformatering",top:"Topp",middle:"Mitten",bottom:"Botten",weekday_font:"Veckodagsfont",weekday_font_size:"Veckodagsfontstorlek",weekday_color:"Veckodagsfärg",day_font:"Dagfont",day_font_size:"Dagfontstorlek",day_color:"Dagfärg",month_font:"Månadsfont",show_month:"Visa månad",month_font_size:"Månadsfontstorlek",month_color:"Månadsfärg",weekend_highlighting:"Helgmarkering",weekend_weekday_color:"Helg veckodagsfärg",weekend_day_color:"Helg dagfärg",weekend_month_color:"Helg månadsfärg",today_highlighting:"Idag-markering",today_weekday_color:"Idag veckodagsfärg",today_day_color:"Idag dagfärg",today_month_color:"Idag månadsfärg",today_indicator:"Idag-indikator",dot:"Punkt",pulse:"Puls",glow:"Glöd",emoji:"Emoji",emoji_value:"Emoji",emoji_indicator_note:"Ange en enskild emoji, t.ex. 🗓️",image_path:"Bildsökväg",image_indicator_note:"Sökväg till bild, t.ex. /local/image.jpg",today_indicator_position:"Idag-indikatorns position",today_indicator_color:"Idag-indikatorns färg",today_indicator_size:"Idag-indikatorns storlek",week_numbers_separators:"Veckonummer & Avgränsare",week_numbers:"Veckonummer",first_day_of_week:"Första veckodagen",sunday:"Söndag",monday:"Måndag",show_week_numbers:"Visa veckonummer",week_number_note_iso:"ISO (Europa/Internationellt): Första veckan innehåller årets första torsdag. Ger konsekventa veckonummer mellan år (ISO 8601-standard).",week_number_note_simple:"Enkel (Nordamerika): Veckor räknas sekventiellt från 1 januari oavsett veckodag. Första veckan kan vara partiell. Mer intuitivt men mindre standardiserat.",show_current_week_number:"Visa aktuellt veckonummer",week_number_font_size:"Veckonummer fontstorlek",week_number_color:"Veckonummer färg",week_number_background_color:"Veckonummer bakgrundsfärg",day_separator:"Dagavgränsare",show_day_separator:"Visa dagavgränsare",day_separator_width:"Dagavgränsarbredd",day_separator_color:"Dagavgränsarfärg",week_separator:"Veckoavgränsare",show_week_separator:"Visa veckoavgränsare",week_separator_width:"Veckoavgränsarbredd",week_separator_color:"Veckoavgränsarfärg",month_separator:"Månadsavgränsare",show_month_separator:"Visa månadsavgränsare",month_separator_width:"Månadsavgränsarbredd",month_separator_color:"Månadsavgränsarfärg",event_display:"Händelsevisning",event_title:"Händelsetitel",event_font_size:"Händelsefontstorlek",empty_day_color:"Tom dag-färg",time:"Tid",show_single_allday_time:"Visa tid för heldagshändelser",show_end_time:"Visa sluttid",time_two_digit_hours:"Tvåsiffriga timmar",time_font_size:"Tidfontstorlek",time_color:"Tidfärg",time_icon_size:"Tidsikonstorlek",location:"Plats",remove_location_country:"Ta bort land från plats",location_font_size:"Platsfontstorlek",location_color:"Platsfärg",location_icon_size:"Platsikonstorlek",description:"Beskrivning",description_font_size:"Beskrivning textstorlek",description_color:"Beskrivning färg",description_icon_size:"Beskrivning ikonstorlek",description_max_lines:"Beskrivning max rader (0 = obegränsat)",custom_country_pattern:"Landsmönster att ta bort",custom_country_pattern_note:"Ange länder som reguljära uttryck (t.ex. 'USA|Sverige|Norge'). Händelser med platser som slutar med dessa tas bort.",progress_indicators:"Förloppsindikatorer",show_countdown:"Visa nedräkning",show_countdown_allday:"Visa nedräkning för heldagshändelser",show_progress_bar:"Visa förloppsindikator",progress_bar_color:"Förloppsindikator färg",progress_bar_height:"Förloppsindikator höjd",progress_bar_width:"Förloppsindikator bredd",multiday_event_handling:"Flerdagshändelsehantering",weather_integration:"Väderintegration",weather_entity_position:"Väderentitet & position",weather_entity:"Väderentitet",weather_position:"Väderposition",date:"Datum",event:"Händelse",both:"Båda",date_column_weather:"Datumkolumn väder",show_conditions:"Visa väderförhållanden",show_high_temp:"Visa högsta temperatur",show_low_temp:"Visa lägsta temperatur",icon_size:"Ikonstorlek",font_size:"Fontstorlek",color:"Färg",event_row_weather:"Händelserad väder",show_temp:"Visa temperatur",show_uv_index:"Visa UV-index",uv_index_threshold:"UV-indextröskel",daily_forecast_fallback:"Använd daglig prognos som reserv",interactions:"Interaktioner",tap_action:"Tryckåtgärd",hold_action:"Hållåtgärd",more_info:"Mer info",navigate:"Navigera",url:"URL",call_service:"Anropa tjänst",expand:"Växla kompakt/utökat läge",navigation_path:"Navigeringssökväg",url_path:"URL",service:"Tjänst",service_data:"Tjänstdata (JSON)",refresh_settings:"Uppdateringsinställningar",refresh_interval:"Uppdateringsintervall (minuter)",refresh_on_navigate:"Uppdatera vid navigering tillbaka",deprecated_config_detected:"Föråldrade konfigurationsalternativ upptäckta.",deprecated_config_explanation:"Vissa alternativ i din konfiguration stöds inte längre.",deprecated_config_update_hint:"Uppdatera för att säkerställa kompatibilitet.",update_config:"Uppdatera konfiguration…"}},uk:{daysOfWeek:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],fullDaysOfWeek:["неділі","понеділка","вівторка","середи","четверга","п'ятниці","суботи"],months:["січ","лют","бер","кві","тра","чер","лип","сер","вер","жов","лис","гру"],allDay:"весь день",multiDay:"до",at:"об",endsToday:"закінчується сьогодні",endsTomorrow:"закінчується завтра",noEvents:"Немає майбутніх подій",loading:"Завантаження подій календаря...",error:"Помилка: Cутність календаря не знайдено або налаштовано неправильно"},vi:{daysOfWeek:["CN","T.2","T.3","T.4","T.5","T.6","T.7"],fullDaysOfWeek:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],months:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],allDay:"cả ngày",multiDay:"đến",at:"lúc",endsToday:"kết thúc hôm nay",endsTomorrow:"kết thúc ngày mai",noEvents:"Không có sự kiện sắp tới",loading:"Đang tải sự kiện...",error:"Lỗi: Không tìm thấy lịch hoặc cấu hình không đúng"},th:{daysOfWeek:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],fullDaysOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],months:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],allDay:"ตลอดวัน",multiDay:"ถึง",at:"เวลา",endsToday:"สิ้นสุดวันนี้",endsTomorrow:"สิ้นสุดพรุ่งนี้",noEvents:"ไม่มีเหตุการณ์ที่กำลังจะเกิดขึ้น",loading:"กำลังโหลดเหตุการณ์ปฏิทิน...",error:"ข้อผิดพลาด: ไม่พบเอนทิตีปฏิทินหรือมีการตั้งค่าที่ไม่ถูกต้อง"},tr:{daysOfWeek:["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],fullDaysOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],months:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],allDay:"tüm gün",multiDay:"değin",at:"da",endsToday:"bugün sona eriyor",endsTomorrow:"yarın sona eriyor",noEvents:"Yaklaşan etkinlik yok",loading:"Takvim etkinlikleri yükleniyor...",error:"Hata: Takvim içeriği bulunamadı veya yanlış yapılandırılmış"},"zh-cn":{daysOfWeek:["日","一","二","三","四","五","六"],fullDaysOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],allDay:"整天",multiDay:"直到",at:"在",endsToday:"今天结束",endsTomorrow:"明天结束",noEvents:"没有即将到来的活动",loading:"正在加载日历事件...",error:"错误:找不到日历实体或配置不正确"},"zh-tw":{daysOfWeek:["日","一","二","三","四","五","六"],fullDaysOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],allDay:"整天",multiDay:"直到",at:"在",endsToday:"今天結束",endsTomorrow:"明天結束",noEvents:"沒有即將到來的活動",loading:"正在加載日曆事件...",error:"錯誤:找不到日曆實體或配置不正確"}},ut="en",mt=new Map;function ht(e,t){const a=`${e||""}:${(null==t?void 0:t.language)||""}`;if(mt.has(a))return mt.get(a);let i;if(e&&""!==e.trim()){const t=e.toLowerCase();if(ct[t])return i=t,mt.set(a,i),i}if(null==t?void 0:t.language){const e=t.language.toLowerCase();if(ct[e])return i=e,mt.set(a,i),i;const n=e.split(/[-_]/)[0];if(n!==e&&ct[n])return i=n,mt.set(a,i),i}return i=ut,mt.set(a,i),i}function pt(e){const t=(null==e?void 0:e.toLowerCase())||ut;return ct[t]||ct[ut]}function gt(e){const t=(null==e?void 0:e.toLowerCase())||"";return"de"===t||"hr"===t?"day-dot-month":"en"===t||"hu"===t?"month-day":"day-month"}const yt=new Map;function vt(e,t){const a=`${e}|${t}`,i=yt.get(a);if(void 0!==i)return i;const n=function(e,t){if(e.startsWith("var("))return`rgba(var(--calendar-color-rgb, 3, 169, 244), ${t/100})`;if("transparent"===e)return e;const a=document.createElement("div");a.style.display="none",a.style.color=e,document.body.appendChild(a);const i=getComputedStyle(a).color;if(document.body.removeChild(a),!i)return e;const n=i.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);if(n){const[,e,a,i]=n;return`rgba(${e}, ${a}, ${i}, ${t/100})`}const o=i.match(/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*[\d.]+\)$/);if(o){const[,e,a,i]=o;return`rgba(${e}, ${a}, ${i}, ${t/100})`}return e}(e,t);return yt.set(a,n),n}function ft(e){return/^[a-z][a-z0-9]*:[a-z0-9]/i.test(e)&&!e.startsWith("http")}function kt(){return Math.random().toString(36).substring(2,15)}function wt(e,t,a,i){const n=e.map((e=>"string"==typeof e?e:e.entity)).sort().join("_");let o="";if(i)try{o=i.includes("T")?i.split("T")[0]:i}catch(e){o=i}return function(e){let t=0;for(let a=0;a<e.length;a++){t=(t<<5)-t+e.charCodeAt(a),t|=0}return Math.abs(t).toString(36)}(`calendar_${n}_${t}_${a?1:0}${o?`_${o}`:""}`)}function bt(e,t=!0){if(!e)return t;if("24"===e.time_format)return!0;if("12"===e.time_format)return!1;if("language"===e.time_format&&e.language)return a(e.language);if("system"===e.time_format)try{const e=new Intl.DateTimeFormat(navigator.language,{hour:"numeric"});return!e.format(new Date(2e3,0,1,13,0,0)).match(/AM|PM|am|pm/)}catch(i){return e.language?a(e.language):t}return t;function a(e){const t=e.split("-")[0].toLowerCase();return["de","fr","es","it","pt","nl","ru","pl","sv","no","fi","da","cs","sk","sl","hr","hu","ro","bg","el","tr","zh","ja","ko"].includes(t)}}function Mt(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const a=Array.isArray(e)?[]:{};for(const[i,n]of Object.entries(e)){if(void 0===n)continue;if("show_week_numbers"===i&&(null===n||""===n))continue;if("entities"===i&&Array.isArray(n)){a[i]=n;continue}if("weather"===i&&"object"==typeof n&&null!==n){a[i]=structuredClone?structuredClone(n):JSON.parse(JSON.stringify(n));continue}if(!(t&&i in t&&t[i]===n))if(null===n||"object"!=typeof n||Array.isArray(n)||!t||"object"!=typeof t[i]||Array.isArray(t[i]))a[i]=n;else{const e=Mt(n,t[i]);Object.keys(e).length>0&&(a[i]=e)}}return a}function zt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Tt,Dt={exports:{}};function jt(){return Tt||(Tt=1,Dt.exports=function(){var e=1e3,t=6e4,a=36e5,i="millisecond",n="second",o="minute",r="hour",s="day",l="week",d="month",_="quarter",c="year",u="date",m="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,p=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],a=e%100;return"["+e+(t[(a-20)%10]||t[a]||t[0])+"]"}},y=function(e,t,a){var i=String(e);return!i||i.length>=t?e:""+Array(t+1-i.length).join(a)+e},v={s:y,z:function(e){var t=-e.utcOffset(),a=Math.abs(t),i=Math.floor(a/60),n=a%60;return(t<=0?"+":"-")+y(i,2,"0")+":"+y(n,2,"0")},m:function e(t,a){if(t.date()<a.date())return-e(a,t);var i=12*(a.year()-t.year())+(a.month()-t.month()),n=t.clone().add(i,d),o=a-n<0,r=t.clone().add(i+(o?-1:1),d);return+(-(i+(a-n)/(o?n-r:r-n))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:d,y:c,w:l,d:s,D:u,h:r,m:o,s:n,ms:i,Q:_}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},f="en",k={};k[f]=g;var w="$isDayjsObject",b=function(e){return e instanceof D||!(!e||!e[w])},M=function e(t,a,i){var n;if(!t)return f;if("string"==typeof t){var o=t.toLowerCase();k[o]&&(n=o),a&&(k[o]=a,n=o);var r=t.split("-");if(!n&&r.length>1)return e(r[0])}else{var s=t.name;k[s]=t,n=s}return!i&&n&&(f=n),n||!i&&f},z=function(e,t){if(b(e))return e.clone();var a="object"==typeof t?t:{};return a.date=e,a.args=arguments,new D(a)},T=v;T.l=M,T.i=b,T.w=function(e,t){return z(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var D=function(){function g(e){this.$L=M(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[w]=!0}var y=g.prototype;return y.parse=function(e){this.$d=function(e){var t=e.date,a=e.utc;if(null===t)return new Date(NaN);if(T.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var i=t.match(h);if(i){var n=i[2]-1||0,o=(i[7]||"0").substring(0,3);return a?new Date(Date.UTC(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)):new Date(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)}}return new Date(t)}(e),this.init()},y.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},y.$utils=function(){return T},y.isValid=function(){return!(this.$d.toString()===m)},y.isSame=function(e,t){var a=z(e);return this.startOf(t)<=a&&a<=this.endOf(t)},y.isAfter=function(e,t){return z(e)<this.startOf(t)},y.isBefore=function(e,t){return this.endOf(t)<z(e)},y.$g=function(e,t,a){return T.u(e)?this[t]:this.set(a,e)},y.unix=function(){return Math.floor(this.valueOf()/1e3)},y.valueOf=function(){return this.$d.getTime()},y.startOf=function(e,t){var a=this,i=!!T.u(t)||t,_=T.p(e),m=function(e,t){var n=T.w(a.$u?Date.UTC(a.$y,t,e):new Date(a.$y,t,e),a);return i?n:n.endOf(s)},h=function(e,t){return T.w(a.toDate()[e].apply(a.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice(t)),a)},p=this.$W,g=this.$M,y=this.$D,v="set"+(this.$u?"UTC":"");switch(_){case c:return i?m(1,0):m(31,11);case d:return i?m(1,g):m(0,g+1);case l:var f=this.$locale().weekStart||0,k=(p<f?p+7:p)-f;return m(i?y-k:y+(6-k),g);case s:case u:return h(v+"Hours",0);case r:return h(v+"Minutes",1);case o:return h(v+"Seconds",2);case n:return h(v+"Milliseconds",3);default:return this.clone()}},y.endOf=function(e){return this.startOf(e,!1)},y.$set=function(e,t){var a,l=T.p(e),_="set"+(this.$u?"UTC":""),m=(a={},a[s]=_+"Date",a[u]=_+"Date",a[d]=_+"Month",a[c]=_+"FullYear",a[r]=_+"Hours",a[o]=_+"Minutes",a[n]=_+"Seconds",a[i]=_+"Milliseconds",a)[l],h=l===s?this.$D+(t-this.$W):t;if(l===d||l===c){var p=this.clone().set(u,1);p.$d[m](h),p.init(),this.$d=p.set(u,Math.min(this.$D,p.daysInMonth())).$d}else m&&this.$d[m](h);return this.init(),this},y.set=function(e,t){return this.clone().$set(e,t)},y.get=function(e){return this[T.p(e)]()},y.add=function(i,_){var u,m=this;i=Number(i);var h=T.p(_),p=function(e){var t=z(m);return T.w(t.date(t.date()+Math.round(e*i)),m)};if(h===d)return this.set(d,this.$M+i);if(h===c)return this.set(c,this.$y+i);if(h===s)return p(1);if(h===l)return p(7);var g=(u={},u[o]=t,u[r]=a,u[n]=e,u)[h]||1,y=this.$d.getTime()+i*g;return T.w(y,this)},y.subtract=function(e,t){return this.add(-1*e,t)},y.format=function(e){var t=this,a=this.$locale();if(!this.isValid())return a.invalidDate||m;var i=e||"YYYY-MM-DDTHH:mm:ssZ",n=T.z(this),o=this.$H,r=this.$m,s=this.$M,l=a.weekdays,d=a.months,_=a.meridiem,c=function(e,a,n,o){return e&&(e[a]||e(t,i))||n[a].slice(0,o)},u=function(e){return T.s(o%12||12,e,"0")},h=_||function(e,t,a){var i=e<12?"AM":"PM";return a?i.toLowerCase():i};return i.replace(p,(function(e,i){return i||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return T.s(t.$y,4,"0");case"M":return s+1;case"MM":return T.s(s+1,2,"0");case"MMM":return c(a.monthsShort,s,d,3);case"MMMM":return c(d,s);case"D":return t.$D;case"DD":return T.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return c(a.weekdaysMin,t.$W,l,2);case"ddd":return c(a.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$W];case"H":return String(o);case"HH":return T.s(o,2,"0");case"h":return u(1);case"hh":return u(2);case"a":return h(o,r,!0);case"A":return h(o,r,!1);case"m":return String(r);case"mm":return T.s(r,2,"0");case"s":return String(t.$s);case"ss":return T.s(t.$s,2,"0");case"SSS":return T.s(t.$ms,3,"0");case"Z":return n}return null}(e)||n.replace(":","")}))},y.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},y.diff=function(i,u,m){var h,p=this,g=T.p(u),y=z(i),v=(y.utcOffset()-this.utcOffset())*t,f=this-y,k=function(){return T.m(p,y)};switch(g){case c:h=k()/12;break;case d:h=k();break;case _:h=k()/3;break;case l:h=(f-v)/6048e5;break;case s:h=(f-v)/864e5;break;case r:h=f/a;break;case o:h=f/t;break;case n:h=f/e;break;default:h=f}return m?h:T.a(h)},y.daysInMonth=function(){return this.endOf(d).$D},y.$locale=function(){return k[this.$L]},y.locale=function(e,t){if(!e)return this.$L;var a=this.clone(),i=M(e,t,!0);return i&&(a.$L=i),a},y.clone=function(){return T.w(this.$d,this)},y.toDate=function(){return new Date(this.valueOf())},y.toJSON=function(){return this.isValid()?this.toISOString():null},y.toISOString=function(){return this.$d.toISOString()},y.toString=function(){return this.$d.toUTCString()},g}(),j=D.prototype;return z.prototype=j,[["$ms",i],["$s",n],["$m",o],["$H",r],["$W",s],["$M",d],["$y",c],["$D",u]].forEach((function(e){j[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),z.extend=function(e,t){return e.$i||(e(t,D,z),e.$i=!0),z},z.locale=M,z.isDayjs=b,z.unix=function(e){return z(1e3*e)},z.en=k[f],z.Ls=k,z.p={},z}()),Dt.exports}var St,$t=zt(jt()),xt={exports:{}};var Yt,Lt=(St||(St=1,xt.exports=function(e,t,a){e=e||{};var i=t.prototype,n={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function o(e,t,a,n){return i.fromToBase(e,t,a,n)}a.en.relativeTime=n,i.fromToBase=function(t,i,o,r,s){for(var l,d,_,c=o.$locale().relativeTime||n,u=e.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],m=u.length,h=0;h<m;h+=1){var p=u[h];p.d&&(l=r?a(t).diff(o,p.d,!0):o.diff(t,p.d,!0));var g=(e.rounding||Math.round)(Math.abs(l));if(_=l>0,g<=p.r||!p.r){g<=1&&h>0&&(p=u[h-1]);var y=c[p.l];s&&(g=s(""+g)),d="string"==typeof y?y.replace("%d",g):y(g,i,p.l,_);break}}if(i)return d;var v=_?c.future:c.past;return"function"==typeof v?v(d):v.replace("%s",d)},i.to=function(e,t){return o(e,t,this,!0)},i.from=function(e,t){return o(e,t,this)};var r=function(e){return e.$u?a.utc():a()};i.toNow=function(e){return this.to(r(this),e)},i.fromNow=function(e){return this.from(r(this),e)}}),xt.exports),Et=zt(Lt),At={exports:{}};Yt||(Yt=1,At.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"bg",weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekStart:1,ordinal:function(e){var t=e%100;if(t>10&&t<20)return e+"-ти";var a=e%10;return 1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"}};return a.default.locale(i,null,!0),i}(jt()));var Ct,Ht={exports:{}};Ct||(Ct=1,Ht.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"ca",weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),months:"Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Març_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",ll:"D MMM YYYY",lll:"D MMM YYYY, H:mm",llll:"ddd D MMM YYYY, H:mm"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:function(e){return e+(1===e||3===e?"r":2===e?"n":4===e?"t":"è")}};return a.default.locale(i,null,!0),i}(jt()));var Pt,Vt={exports:{}};Pt||(Pt=1,Vt.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e);function i(e){return e>1&&e<5&&1!=~~(e/10)}function n(e,t,a,n){var o=e+" ";switch(a){case"s":return t||n?"pár sekund":"pár sekundami";case"m":return t?"minuta":n?"minutu":"minutou";case"mm":return t||n?o+(i(e)?"minuty":"minut"):o+"minutami";case"h":return t?"hodina":n?"hodinu":"hodinou";case"hh":return t||n?o+(i(e)?"hodiny":"hodin"):o+"hodinami";case"d":return t||n?"den":"dnem";case"dd":return t||n?o+(i(e)?"dny":"dní"):o+"dny";case"M":return t||n?"měsíc":"měsícem";case"MM":return t||n?o+(i(e)?"měsíce":"měsíců"):o+"měsíci";case"y":return t||n?"rok":"rokem";case"yy":return t||n?o+(i(e)?"roky":"let"):o+"lety"}}var o={name:"cs",weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),months:"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),monthsShort:"led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"před %s",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n}};return a.default.locale(o,null,!0),o}(jt()));var Ft,Ot={exports:{}};Ft||(Ft=1,Ot.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"da",weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn._man._tirs._ons._tors._fre._lør.".split("_"),weekdaysMin:"sø._ma._ti._on._to._fr._lø.".split("_"),months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"}};return a.default.locale(i,null,!0),i}(jt()));var It,Nt={exports:{}};It||(It=1,Nt.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function n(e,t,a){var n=i[a];return Array.isArray(n)&&(n=n[t?0:1]),n.replace("%d",e)}var o={name:"de",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n}};return a.default.locale(o,null,!0),o}(jt()));var Wt,Kt={exports:{}};Wt||(Wt=1,Kt.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"el",weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),months:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαι_Ιουν_Ιουλ_Αυγ_Σεπτ_Οκτ_Νοε_Δεκ".split("_"),ordinal:function(e){return e},weekStart:1,relativeTime:{future:"σε %s",past:"πριν %s",s:"μερικά δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένα μήνα",MM:"%d μήνες",y:"ένα χρόνο",yy:"%d χρόνια"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"}};return a.default.locale(i,null,!0),i}(jt()));var Rt,Ut={exports:{}};Rt||(Rt=1,Ut.exports={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],a=e%100;return"["+e+(t[(a-20)%10]||t[a]||t[0])+"]"}});var Bt,Jt={exports:{}};Bt||(Bt=1,Jt.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"es",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"}};return a.default.locale(i,null,!0),i}(jt()));var Zt,Gt={exports:{}};Zt||(Zt=1,Gt.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e);function i(e,t,a,i){var n={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:["%d minuti","%d minutit"],h:["ühe tunni","tund aega","üks tund"],hh:["%d tunni","%d tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:["%d kuu","%d kuud"],y:["ühe aasta","aasta","üks aasta"],yy:["%d aasta","%d aastat"]};return t?(n[a][2]?n[a][2]:n[a][1]).replace("%d",e):(i?n[a][0]:n[a][1]).replace("%d",e)}var n={name:"et",weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s pärast",past:"%s tagasi",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:"%d päeva",M:i,MM:i,y:i,yy:i},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return a.default.locale(n,null,!0),n}(jt()));var qt,Qt={exports:{}};qt||(qt=1,Qt.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e);function i(e,t,a,i){var n={s:"muutama sekunti",m:"minuutti",mm:"%d minuuttia",h:"tunti",hh:"%d tuntia",d:"päivä",dd:"%d päivää",M:"kuukausi",MM:"%d kuukautta",y:"vuosi",yy:"%d vuotta",numbers:"nolla_yksi_kaksi_kolme_neljä_viisi_kuusi_seitsemän_kahdeksan_yhdeksän".split("_")},o={s:"muutaman sekunnin",m:"minuutin",mm:"%d minuutin",h:"tunnin",hh:"%d tunnin",d:"päivän",dd:"%d päivän",M:"kuukauden",MM:"%d kuukauden",y:"vuoden",yy:"%d vuoden",numbers:"nollan_yhden_kahden_kolmen_neljän_viiden_kuuden_seitsemän_kahdeksan_yhdeksän".split("_")},r=i&&!t?o:n,s=r[a];return e<10?s.replace("%d",r.numbers[e]):s.replace("%d",e)}var n={name:"fi",weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,relativeTime:{future:"%s päästä",past:"%s sitten",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM[ta] YYYY",LLL:"D. MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, D. MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"D. MMM YYYY",lll:"D. MMM YYYY, [klo] HH.mm",llll:"ddd, D. MMM YYYY, [klo] HH.mm"}};return a.default.locale(n,null,!0),n}(jt()));var Xt,ea={exports:{}};Xt||(Xt=1,ea.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"fr",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")}};return a.default.locale(i,null,!0),i}(jt()));var ta,aa={exports:{}};ta||(ta=1,aa.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:"%d שעות",hh2:"שעתיים",d:"יום",dd:"%d ימים",dd2:"יומיים",M:"חודש",MM:"%d חודשים",MM2:"חודשיים",y:"שנה",yy:"%d שנים",yy2:"שנתיים"};function n(e,t,a){return(i[a+(2===e?"2":"")]||i[a]).replace("%d",e)}var o={name:"he",weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א׳_ב׳_ג׳_ד׳_ה׳_ו_ש׳".split("_"),months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו_פבר_מרץ_אפר_מאי_יונ_יול_אוג_ספט_אוק_נוב_דצמ".split("_"),relativeTime:{future:"בעוד %s",past:"לפני %s",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},ordinal:function(e){return e},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"}};return a.default.locale(o,null,!0),o}(jt()));var ia,na={exports:{}};ia||(ia=1,na.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i="siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),n="siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),o=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/,r=function(e,t){return o.test(t)?i[e.month()]:n[e.month()]};r.s=n,r.f=i;var s={name:"hr",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),months:r,monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},relativeTime:{future:"za %s",past:"prije %s",s:"sekunda",m:"minuta",mm:"%d minuta",h:"sat",hh:"%d sati",d:"dan",dd:"%d dana",M:"mjesec",MM:"%d mjeseci",y:"godina",yy:"%d godine"},ordinal:function(e){return e+"."}};return a.default.locale(s,null,!0),s}(jt()));var oa,ra={exports:{}};oa||(oa=1,ra.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"hu",weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s múlva",past:"%s",s:function(e,t,a,i){return"néhány másodperc"+(i||t?"":"e")},m:function(e,t,a,i){return"egy perc"+(i||t?"":"e")},mm:function(e,t,a,i){return e+" perc"+(i||t?"":"e")},h:function(e,t,a,i){return"egy "+(i||t?"óra":"órája")},hh:function(e,t,a,i){return e+" "+(i||t?"óra":"órája")},d:function(e,t,a,i){return"egy "+(i||t?"nap":"napja")},dd:function(e,t,a,i){return e+" "+(i||t?"nap":"napja")},M:function(e,t,a,i){return"egy "+(i||t?"hónap":"hónapja")},MM:function(e,t,a,i){return e+" "+(i||t?"hónap":"hónapja")},y:function(e,t,a,i){return"egy "+(i||t?"év":"éve")},yy:function(e,t,a,i){return e+" "+(i||t?"év":"éve")}},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"}};return a.default.locale(i,null,!0),i}(jt()));var sa,la={exports:{}};sa||(sa=1,la.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={s:["nokkrar sekúndur","nokkrar sekúndur","nokkrum sekúndum"],m:["mínúta","mínútu","mínútu"],mm:["mínútur","mínútur","mínútum"],h:["klukkustund","klukkustund","klukkustund"],hh:["klukkustundir","klukkustundir","klukkustundum"],d:["dagur","dag","degi"],dd:["dagar","daga","dögum"],M:["mánuður","mánuð","mánuði"],MM:["mánuðir","mánuði","mánuðum"],y:["ár","ár","ári"],yy:["ár","ár","árum"]};function n(e,t,a,n){var o=function(e,t,a,n){var o=n?0:a?1:2,r=2===e.length&&t%10==1?e[0]:e,s=i[r][o];return 1===e.length?s:"%d "+s}(a,e,n,t);return o.replace("%d",e)}var o={name:"is",weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),weekStart:1,weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n}};return a.default.locale(o,null,!0),o}(jt()));var da,_a={exports:{}};da||(da=1,_a.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"it",weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"qualche secondo",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:function(e){return e+"º"}};return a.default.locale(i,null,!0),i}(jt()));var ca,ua={exports:{}};ca||(ca=1,ua.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i="sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),n="sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),o=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,r=function(e,t){return o.test(t)?i[e.month()]:n[e.month()]};r.s=n,r.f=i;var s={name:"lt",weekdays:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),weekdaysShort:"sek_pir_ant_tre_ket_pen_šeš".split("_"),weekdaysMin:"s_p_a_t_k_pn_š".split("_"),months:r,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"už %s",past:"prieš %s",s:"kelias sekundes",m:"minutę",mm:"%d minutes",h:"valandą",hh:"%d valandas",d:"dieną",dd:"%d dienas",M:"mėnesį",MM:"%d mėnesius",y:"metus",yy:"%d metus"},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"}};return a.default.locale(s,null,!0),s}(jt()));var ma,ha={exports:{}};ma||(ma=1,ha.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"lv",weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),weekStart:1,weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},relativeTime:{future:"pēc %s",past:"pirms %s",s:"dažām sekundēm",m:"minūtes",mm:"%d minūtēm",h:"stundas",hh:"%d stundām",d:"dienas",dd:"%d dienām",M:"mēneša",MM:"%d mēnešiem",y:"gada",yy:"%d gadiem"}};return a.default.locale(i,null,!0),i}(jt()));var pa,ga={exports:{}};pa||(pa=1,ga.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"nb",weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"}};return a.default.locale(i,null,!0),i}(jt()));var ya,va={exports:{}};ya||(ya=1,va.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"nl",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),ordinal:function(e){return"["+e+(1===e||8===e||e>=20?"ste":"de")+"]"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"een minuut",mm:"%d minuten",h:"een uur",hh:"%d uur",d:"een dag",dd:"%d dagen",M:"een maand",MM:"%d maanden",y:"een jaar",yy:"%d jaar"}};return a.default.locale(i,null,!0),i}(jt()));var fa,ka={exports:{}};fa||(fa=1,ka.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"nn",weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eitt minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månadar",y:"eitt år",yy:"%d år"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"}};return a.default.locale(i,null,!0),i}(jt()));var wa,ba={exports:{}};wa||(wa=1,ba.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e);function i(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function n(e,t,a){var n=e+" ";switch(a){case"m":return t?"minuta":"minutę";case"mm":return n+(i(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return n+(i(e)?"godziny":"godzin");case"MM":return n+(i(e)?"miesiące":"miesięcy");case"yy":return n+(i(e)?"lata":"lat")}}var o="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),r="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),s=/D MMMM/,l=function(e,t){return s.test(t)?o[e.month()]:r[e.month()]};l.s=r,l.f=o;var d={name:"pl",weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),months:l,monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:n,mm:n,h:n,hh:n,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:n,y:"rok",yy:n},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return a.default.locale(d,null,!0),d}(jt()));var Ma,za={exports:{}};Ma||(Ma=1,za.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"pt",weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sab".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sa".split("_"),months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),ordinal:function(e){return e+"º"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},relativeTime:{future:"em %s",past:"há %s",s:"alguns segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"}};return a.default.locale(i,null,!0),i}(jt()));var Ta,Da={exports:{}};Ta||(Ta=1,Da.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"ro",weekdays:"Duminică_Luni_Marți_Miercuri_Joi_Vineri_Sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"peste %s",past:"acum %s",s:"câteva secunde",m:"un minut",mm:"%d minute",h:"o oră",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lună",MM:"%d luni",y:"un an",yy:"%d ani"},ordinal:function(e){return e}};return a.default.locale(i,null,!0),i}(jt()));var ja,Sa={exports:{}};ja||(ja=1,Sa.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i="января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),n="январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),o="янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),r="янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_"),s=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function l(e,t,a){var i,n;return"m"===a?t?"минута":"минуту":e+" "+(i=+e,n={mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[a].split("_"),i%10==1&&i%100!=11?n[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?n[1]:n[2])}var d=function(e,t){return s.test(t)?i[e.month()]:n[e.month()]};d.s=n,d.f=i;var _=function(e,t){return s.test(t)?o[e.month()]:r[e.month()]};_.s=r,_.f=o;var c={name:"ru",weekdays:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),weekdaysShort:"вск_пнд_втр_срд_чтв_птн_сбт".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),months:d,monthsShort:_,weekStart:1,yearStart:4,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:l,mm:l,h:"час",hh:l,d:"день",dd:l,M:"месяц",MM:l,y:"год",yy:l},ordinal:function(e){return e},meridiem:function(e){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"}};return a.default.locale(c,null,!0),c}(jt()));var $a,xa={exports:{}};$a||($a=1,xa.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e);function i(e){return e>1&&e<5&&1!=~~(e/10)}function n(e,t,a,n){var o=e+" ";switch(a){case"s":return t||n?"pár sekúnd":"pár sekundami";case"m":return t?"minúta":n?"minútu":"minútou";case"mm":return t||n?o+(i(e)?"minúty":"minút"):o+"minútami";case"h":return t?"hodina":n?"hodinu":"hodinou";case"hh":return t||n?o+(i(e)?"hodiny":"hodín"):o+"hodinami";case"d":return t||n?"deň":"dňom";case"dd":return t||n?o+(i(e)?"dni":"dní"):o+"dňami";case"M":return t||n?"mesiac":"mesiacom";case"MM":return t||n?o+(i(e)?"mesiace":"mesiacov"):o+"mesiacmi";case"y":return t||n?"rok":"rokom";case"yy":return t||n?o+(i(e)?"roky":"rokov"):o+"rokmi"}}var o={name:"sk",weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),months:"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),monthsShort:"jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"pred %s",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n}};return a.default.locale(o,null,!0),o}(jt()));var Ya,La={exports:{}};Ya||(Ya=1,La.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e);function i(e){return e%100==2}function n(e){return e%100==3||e%100==4}function o(e,t,a,o){var r=e+" ";switch(a){case"s":return t||o?"nekaj sekund":"nekaj sekundami";case"m":return t?"ena minuta":"eno minuto";case"mm":return i(e)?r+(t||o?"minuti":"minutama"):n(e)?r+(t||o?"minute":"minutami"):r+(t||o?"minut":"minutami");case"h":return t?"ena ura":"eno uro";case"hh":return i(e)?r+(t||o?"uri":"urama"):n(e)?r+(t||o?"ure":"urami"):r+(t||o?"ur":"urami");case"d":return t||o?"en dan":"enim dnem";case"dd":return i(e)?r+(t||o?"dneva":"dnevoma"):r+(t||o?"dni":"dnevi");case"M":return t||o?"en mesec":"enim mesecem";case"MM":return i(e)?r+(t||o?"meseca":"mesecema"):n(e)?r+(t||o?"mesece":"meseci"):r+(t||o?"mesecev":"meseci");case"y":return t||o?"eno leto":"enim letom";case"yy":return i(e)?r+(t||o?"leti":"letoma"):n(e)?r+(t||o?"leta":"leti"):r+(t||o?"let":"leti")}}var r={name:"sl",weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),weekStart:1,weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"čez %s",past:"pred %s",s:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o}};return a.default.locale(r,null,!0),r}(jt()));var Ea,Aa={exports:{}};Ea||(Ea=1,Aa.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"sv",weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){var t=e%10;return"["+e+(1===t||2===t?"a":"e")+"]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"}};return a.default.locale(i,null,!0),i}(jt()));var Ca,Ha={exports:{}};Ca||(Ca=1,Ha.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"th",weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"},ordinal:function(e){return e+"."}};return a.default.locale(i,null,!0),i}(jt()));var Pa,Va={exports:{}};Pa||(Pa=1,Va.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"tr",weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e){return e+"."}};return a.default.locale(i,null,!0),i}(jt()));var Fa,Oa={exports:{}};Fa||(Fa=1,Oa.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i="січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),n="січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),o=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function r(e,t,a){var i,n;return"m"===a?t?"хвилина":"хвилину":"h"===a?t?"година":"годину":e+" "+(i=+e,n={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[a].split("_"),i%10==1&&i%100!=11?n[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?n[1]:n[2])}var s=function(e,t){return o.test(t)?i[e.month()]:n[e.month()]};s.s=n,s.f=i;var l={name:"uk",weekdays:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),weekdaysShort:"ндл_пнд_втр_срд_чтв_птн_сбт".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),months:s,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekStart:1,relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:r,mm:r,h:r,hh:r,d:"день",dd:r,M:"місяць",MM:r,y:"рік",yy:r},ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"}};return a.default.locale(l,null,!0),l}(jt()));var Ia,Na={exports:{}};Ia||(Ia=1,Na.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"vi",weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),weekStart:1,weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"}};return a.default.locale(i,null,!0),i}(jt()));var Wa,Ka={exports:{}};Wa||(Wa=1,Ka.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"zh-cn",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(e,t){return"W"===t?e+"周":e+"日"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},meridiem:function(e,t){var a=100*e+t;return a<600?"凌晨":a<900?"早上":a<1100?"上午":a<1300?"中午":a<1800?"下午":"晚上"}};return a.default.locale(i,null,!0),i}(jt()));var Ra,Ua={exports:{}};function Ba(e,t,a,i){const n=!e.start.dateTime;let o,r;n?(o=Qa(e.start.date||""),r=Qa(e.end.date||"")):(o=new Date(e.start.dateTime||""),r=new Date(e.end.dateTime||""));const s=pt(a);if(n){const e=new Date(r);return e.setDate(e.getDate()-1),o.toDateString()!==e.toDateString()?qa(function(e,t,a){const i=new Date,n=new Date(i.getFullYear(),i.getMonth(),i.getDate()),o=new Date(n);if(o.setDate(o.getDate()+1),e.toDateString()===n.toDateString())return`${a.allDay}, ${a.endsToday}`;if(e.toDateString()===o.toDateString())return`${a.allDay}, ${a.endsTomorrow}`;const r=e.getDate(),s=a.months[e.getMonth()];switch(gt(t)){case"day-dot-month":return`${a.allDay}, ${a.multiDay} ${r}. ${s}`;case"month-day":return`${a.allDay}, ${a.multiDay} ${s} ${r}`;default:return`${a.allDay}, ${a.multiDay} ${r} ${s}`}}(e,a,s)):qa(s.allDay)}const l=!("system"!==t.time_24h||!(null==i?void 0:i.locale)),d=!0===t.time_24h;return o.toDateString()!==r.toDateString()?qa(function(e,t,a,i,n,o=!0,r=!1,s){const l=new Date,d=new Date(l.getFullYear(),l.getMonth(),l.getDate()),_=new Date(d);_.setDate(_.getDate()+1);const c=e=>{if(n&&(null==s?void 0:s.locale)){return ei(e,bt(s.locale,o),r)}return ei(e,o,r)};let u;if(t.toDateString()===d.toDateString())u=`${i.endsToday} ${i.at} ${c(t)}`;else if(t.toDateString()===_.toDateString())u=`${i.endsTomorrow} ${i.at} ${c(t)}`;else{const e=t.getDate(),n=i.months[t.getMonth()],o=i.fullDaysOfWeek[t.getDay()],r=c(t);switch(gt(a)){case"day-dot-month":u=`${o}, ${e}. ${n} ${i.at} ${r}`;break;case"month-day":u=`${o}, ${n} ${e} ${i.at} ${r}`;break;default:u=`${o}, ${e} ${n} ${i.at} ${r}`}}if(d.getTime()<=e.getTime()){return`${c(e)} ${i.multiDay} ${u}`}return t.toDateString()===d.toDateString()||t.toDateString()===_.toDateString()?u:`${i.multiDay} ${u}`}(o,r,a,s,l,d,t.time_two_digit_hours,i)):qa(function(e,t,a,i,n=!0,o=!1,r){if(i&&(null==r?void 0:r.locale)){const i=bt(r.locale,n);return a?`${ei(e,i,o)} - ${ei(t,i,o)}`:ei(e,i,o)}return a?`${ei(e,n,o)} - ${ei(t,n,o)}`:ei(e,n,o)}(o,r,t.show_end_time,l,d,t.time_two_digit_hours,i))}function Ja(e,t="en"){if(e._isEmptyDay||!e.start)return null;const a=new Date,i=!e.start.dateTime,n=e.start.dateTime?new Date(e.start.dateTime):e.start.date?Qa(e.start.date):null;if(!n||n<=a)return null;return function(e,t,a){const i=function(e){const t=e.toLowerCase();if("zh-cn"===t||"zh-tw"===t)return t;const a=t.split("-")[0];return["bg","ca","cs","da","de","el","en","es","et","fi","fr","he","hr","hu","is","it","lt","lv","nb","nl","nn","pl","pt","ro","ru","sk","sl","sv","th","tr","uk","vi","zh-cn","zh-tw"].includes(a)?a:"en"}(t),n=$t(e).locale(i);return a?n.from($t(a)):n.fromNow()}(n,t,i?new Date(a.getFullYear(),a.getMonth(),a.getDate()):void 0)}function Za(e,t=!0){if(!e)return"";if(!1===t)return e;const a=e.trim();if("string"==typeof t&&"true"!==t){const e=new RegExp(`(${t})\\s*$`,"i");return a.replace(e,"").replace(/,?\s*$/,"")}for(const e of ze)if(a.endsWith(e))return a.slice(0,a.length-e.length).replace(/,?\s*$/,"");return a}function Ga(e){if(!e)return"";const t=e.replace(/<[^>]*>/g,""),a=document.createElement("textarea");return a.innerHTML=t,a.value.trim()}function qa(e){return e&&0!==e.length?e.charAt(0).toUpperCase()+e.slice(1):e}function Qa(e){const[t,a,i]=e.split("-").map(Number);return new Date(t,a-1,i)}function Xa(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function ei(e,t=!0,a=!1){let i=e.getHours();const n=e.getMinutes();if(!t){const e=i>=12?"PM":"AM";return i=i%12||12,`${a?ti(i):i}:${ti(n)} ${e}`}return`${a?ti(i):i}:${ti(n)}`}function ti(e){return e.toString().padStart(2,"0")}function ai(e){const t=new Date(e);t.setDate(t.getDate()+4-(t.getDay()||7));const a=new Date(t.getFullYear(),0,1);return Math.ceil(((t.getTime()-a.getTime())/864e5+1)/7)}function ii(e,t,a){const i=t||"iso";return"iso"===i?ai(e):"simple"===i?function(e,t=0){const a=new Date(e),i=new Date(a.getFullYear(),0,1),n=Math.floor((a.getTime()-i.getTime())/864e5),o=(i.getDay()-t+7)%7;return Math.ceil((n+o+1)/7)}(e,a):null}Ra||(Ra=1,Ua.exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"zh-tw",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(e,t){return"W"===t?e+"週":e+"日"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"},meridiem:function(e,t){var a=100*e+t;return a<600?"凌晨":a<900?"早上":a<1100?"上午":a<1300?"中午":a<1800?"下午":"晚上"}};return a.default.locale(i,null,!0),i}(jt())),$t.extend(Et);var ni=Object.defineProperty,oi=Object.defineProperties,ri=Object.getOwnPropertyDescriptors,si=Object.getOwnPropertySymbols,li=Object.prototype.hasOwnProperty,di=Object.prototype.propertyIsEnumerable,_i=(e,t,a)=>t in e?ni(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,ci=(e,t)=>{for(var a in t||(t={}))li.call(t,a)&&_i(e,a,t[a]);if(si)for(var a of si(t))di.call(t,a)&&_i(e,a,t[a]);return e},ui=(e,t)=>oi(e,ri(t));async function mi(e,t,a,i=!1){const n=function(e,t,a,i,n,o=!1){const r=t.map((e=>"string"==typeof e?e:e.entity)).sort().join("_");let s="";if(n)try{s=n.includes("T")?n.split("T")[0]:n}catch(e){s=n}const l=s?`_${s}`:"",d=o?"_filtered":"",_=[];t.forEach((e=>{"string"!=typeof e&&(e.blocklist&&_.push(`b:${e.entity}:${e.blocklist}`),e.allowlist&&_.push(`a:${e.entity}:${e.allowlist}`))}));const c=_.length>0?`_filters:${encodeURIComponent(_.join("|"))}`:"";return`${he}${e}_${r}_${a}_${i?1:0}${l}${d}${c}${_e}`}(a,t.entities,t.days_to_show,t.show_past_events,t.start_date,t.filter_duplicates),o=function(){if(window.performance&&window.performance.navigation)return 1===window.performance.navigation.type;if(window.performance&&window.performance.getEntriesByType){const e=window.performance.getEntriesByType("navigation");if(e.length>0&&"type"in e[0])return"reload"===e[0].type}return!1}();if(!i){const e=function(e,t,a=!1){const i=Di(e,t,a);if(i)return[...i.events];return null}(n,t,o);if(e)return Oe(`Using ${e.length} events from cache`),[...e]}Oe("Fetching events from API");const r=t.entities.map((e=>"string"==typeof e?{entity:e,color:"var(--primary-text-color)"}:e)),s=zi(t.days_to_show,t.start_date),l=await async function(e,t,a){const i=[],n=new Set;for(const o of t)if(!n.has(o.entity))try{const t=`calendars/${o.entity}?start=${a.start.toISOString()}&end=${a.end.toISOString()}`;Oe(`Fetching calendar events with path: ${t}`);const r=await e.callApi("GET",t);if(!r||!Array.isArray(r)){Fe(`Invalid response for ${o.entity}`);continue}const s=r.map((e=>ui(ci({},e),{_entityId:o.entity})));i.push(...s),n.add(o.entity)}catch(t){Ve(`Failed to fetch events for ${o.entity}:`,t);try{Oe("Available hass API methods:",Object.keys(e).filter((t=>"function"==typeof e[t])))}catch(e){}}return i}(e,r,s);let d=function(e,t){const a=[],i=t.filter_duplicates?new Set:void 0;t.entities.forEach((n=>{const o="string"==typeof n?n:n.entity,r=e.filter((e=>e._entityId===o));if(0===r.length)return;let s=function(e,t){if("string"==typeof t)return[...e];let a=[...e];if(t.allowlist)try{const e=new RegExp(t.allowlist,"i");a=a.filter((t=>t.summary&&e.test(t.summary)))}catch(e){Fe(`Invalid allowlist pattern: ${t.allowlist}`,e)}else if(t.blocklist)try{const e=new RegExp(t.blocklist,"i");a=a.filter((t=>!(t.summary&&e.test(t.summary))))}catch(e){Fe(`Invalid blocklist pattern: ${t.blocklist}`,e)}return a}(r,n);s=s.filter((e=>{if(!i)return!0;const t=function(e){const t=e.summary||"",a=e.location||"";let i="";if(e.start.dateTime){i=`${new Date(e.start.dateTime).getTime()}|${e.end.dateTime?new Date(e.end.dateTime).getTime():0}`}else i=`${e.start.date||""}|${e.end.date||""}`;return`${t}|${i}|${a}`}(e);return!i.has(t)&&(i.add(t),!0)})),s.forEach((e=>{e._matchedConfig="object"==typeof n?n:void 0,e._entityLabel=wi(o,t,e)})),a.push(...s)}));const n=function(e,t){const a=[];for(const i of e){if(!yi(i,t)){a.push(i);continue}if(!gi(i)){a.push(i);continue}const e=fi(i);a.push(...e)}return a}(a,t);return Ie(`Processed ${n.length} events after filtering and splitting`),n}(l,t);const _=ji(t),c=new Date(_);if(c.setDate(c.getDate()+t.days_to_show),d=d.filter((e=>{if(!e.start)return!1;let t;if(e.start.dateTime)t=new Date(e.start.dateTime);else{if(!e.start.date)return!1;t=Qa(e.start.date)}return t<c})),d.length>0)Ti(n,d);else{const e=1e3*me;Oe(`No events returned; caching empty result briefly (${me}s)`),Ti(n,d,e)}return d}function hi(e,t,a,i){const n=ji(t),o=new Date(n),r=new Date(o);r.setHours(23,59,59,999);const s=new Date,l=e.filter((e=>{if(!(null==e?void 0:e.start)||!(null==e?void 0:e.end))return!1;const a=!e.start.dateTime;let i,n;if(a){if(i=e.start.date?Qa(e.start.date):null,n=e.end.date?Qa(e.end.date):null,n){const e=new Date(n);e.setDate(e.getDate()-1),n=e}}else i=e.start.dateTime?new Date(e.start.dateTime):null,n=e.end.dateTime?new Date(e.end.dateTime):null;if(!i||!n)return!1;return!!(i>=o&&i<=r||i>r||n>=o)&&!(!t.show_past_events&&!a&&n<s)})),d={};l.length>0&&l.forEach((e=>{var a,n;let r,s,l;if(!e.start.dateTime){if(r=e.start.date?Qa(e.start.date):null,s=e.end.date?Qa(e.end.date):null,s){const e=new Date(s);e.setDate(e.getDate()-1),s=e}}else r=e.start.dateTime?new Date(e.start.dateTime):null,s=e.end.dateTime?new Date(e.end.dateTime):null;if(!r||!s)return;l=r>=o?r:s.toDateString()===o.toDateString()||r<o&&s>o?o:r;const _=Xa(l),c=pt(i);d[_]||(d[_]={weekday:c.daysOfWeek[l.getDay()],day:l.getDate(),month:c.months[l.getMonth()],timestamp:l.getTime(),events:[]}),d[_].events.push({summary:e.summary||"",time:Ba(e,t,i),location:(null!=(a=bi(e._entityId,"show_location",t,e))?a:t.show_location)?Za(e.location||"",t.remove_location_country):"",description:(null!=(n=bi(e._entityId,"show_description",t,e))?n:t.show_description)?Ga(e.description||""):"",start:e.start,end:e.end,_entityId:e._entityId,_entityLabel:wi(e._entityId,t,e),_matchedConfig:e._matchedConfig,_isEmptyDay:e._isEmptyDay})}));const _=function(e,t="en"){if("sunday"===e)return 0;if("monday"===e)return 1;try{return/^en-(US|CA)|es-US/.test(t)?0:1}catch(e){return 1}}(t.first_day_of_week,i);Object.values(d).forEach((e=>{const a=new Date(e.timestamp);e.weekNumber=Si(a,t,_),e.monthNumber=a.getMonth(),e.isFirstDayOfMonth=1===a.getDate(),e.isFirstDayOfWeek=a.getDay()===_})),Object.values(d).forEach((e=>{e.events.sort(((e,a)=>{const i=!e.start.dateTime,n=!a.start.dateTime;if(i&&!n)return-1;if(!i&&n)return 1;let o,r;if(o=i&&e.start.date?Qa(e.start.date).getTime():e.start.dateTime?new Date(e.start.dateTime).getTime():0,r=n&&a.start.date?Qa(a.start.date).getTime():a.start.dateTime?new Date(a.start.dateTime).getTime():0,i&&n&&o===r){const i=pi(e._entityId,t),n=pi(a._entityId,t);return i!==n?i-n:(e.summary||"").localeCompare(a.summary||"",void 0,{sensitivity:"base"})}return o-r}))}));const c=a?t.days_to_show:Math.min(t.compact_days_to_show||t.days_to_show,t.days_to_show);let u=Object.values(d).sort(((e,t)=>e.timestamp-t.timestamp)).slice(0,c||3);if(!a){const e=new Map;for(const a of u){const i=[];for(const n of a.events){if(n._isEmptyDay){i.push(n);continue}const a=n._entityId,o=n._matchedConfig;let r=-1;o?r=t.entities.findIndex((e=>"object"==typeof e&&e===o)):a&&(r=t.entities.findIndex((e=>"string"==typeof e&&e===a)));const s=-1!==r?`${a}__${r}`:a||"",l=null==o?void 0:o.compact_events_to_show;if("number"!=typeof l||!Number.isFinite(l)){i.push(n);continue}const d=e.get(s)||0;d<l&&(i.push(n),e.set(s,d+1))}a.events=i}t.show_empty_days||(u=u.filter((e=>e.events.length>0&&!(1===e.events.length&&e.events[0]._isEmptyDay))))}if(!a){const e=t.compact_events_to_show;if("number"==typeof e&&Number.isFinite(e)){let a=[],i=0;if(t.compact_events_complete_days){const t=new Set;for(const a of u)if((1!==a.events.length||!a.events[0]._isEmptyDay)&&i<e&&a.events.length>0){const n=Math.min(a.events.length,e-i);n>0&&(t.add(Xa(new Date(a.timestamp))),i+=n)}a=u.filter((e=>{const a=Xa(new Date(e.timestamp));return t.has(a)}))}else{a=[];for(const t of u){if(i>=e&&(1!==t.events.length||!t.events[0]._isEmptyDay))break;if(1===t.events.length&&t.events[0]._isEmptyDay){a.push(t);continue}const n=e-i;if(n>0&&t.events.length>0){const e=ui(ci({},t),{events:t.events.slice(0,n)});a.push(e),i+=e.events.length}}}u=a}}if(t.show_empty_days||0===u.length){const e=pt(i),o=new Date(n);let r;if(a)r=new Date(n),r.setDate(r.getDate()+c-1);else if(0===u.length)t.show_empty_days?(r=new Date(n),r.setDate(r.getDate()+c-1)):r=new Date(n);else if(t.compact_days_to_show&&!t.compact_events_to_show)r=new Date(n),r.setDate(r.getDate()+c-1);else if(t.compact_events_to_show)if(u.length>0){const e=Math.max(...u.map((e=>e.timestamp)));r=new Date(e)}else r=new Date(n);else r=new Date(n),r.setDate(r.getDate()+c-1);const s=new Set(u.map((e=>Xa(new Date(e.timestamp))))),l=[...u],d=Math.floor((r.getTime()-o.getTime())/864e5);for(let a=0;a<=d;a++){const i=new Date(o);i.setDate(o.getDate()+a);const n=Xa(i);if(!s.has(n)){const a=Si(i,t,_),o={weekday:e.daysOfWeek[i.getDay()],day:i.getDate(),month:e.months[i.getMonth()],timestamp:i.getTime(),events:[{summary:e.noEvents,start:{date:n},end:{date:n},_entityId:"_empty_day_",_isEmptyDay:!0,location:""}],weekNumber:a,monthNumber:i.getMonth(),isFirstDayOfMonth:1===i.getDate(),isFirstDayOfWeek:i.getDay()===_};l.push(o)}}l.sort(((e,t)=>e.timestamp-t.timestamp)),u=l}return u.slice(0,c)}function pi(e,t){if(!e)return Number.MAX_SAFE_INTEGER;const a=t.entities.findIndex((t=>"string"==typeof t?t===e:t.entity===e));return-1!==a?a:Number.MAX_SAFE_INTEGER}function gi(e){if(!e.start||!e.end)return!1;if(e.start.date&&e.end.date){const t=new Date(e.start.date),a=new Date(e.end.date);return a.setDate(a.getDate()-1),t.toDateString()!==a.toDateString()}if(e.start.dateTime&&e.end.dateTime){const t=new Date(e.start.dateTime),a=new Date(e.end.dateTime);return t.toDateString()!==a.toDateString()}return!1}function yi(e,t){return e._entityId&&e._matchedConfig&&void 0!==e._matchedConfig.split_multiday_events?e._matchedConfig.split_multiday_events:t.split_multiday_events}function vi(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function fi(e){const t=[];if(e.start.date&&e.end.date){const a=Qa(e.start.date),i=Qa(e.end.date);i.setDate(i.getDate()-1);for(let n=new Date(a);n<=i;n.setDate(n.getDate()+1)){const a=vi(n),i=new Date(n);i.setDate(i.getDate()+1);const o=vi(i),r=ui(ci({},e),{start:{date:a},end:{date:o}});t.push(r)}}else if(e.start.dateTime&&e.end.dateTime){const a=new Date(e.start.dateTime),i=new Date(e.end.dateTime),n=new Date(a);if(n.setHours(23,59,59,999),n<i){const o=ui(ci({},e),{start:{dateTime:a.toISOString()},end:{dateTime:n.toISOString()}});t.push(o);const r=new Date(a);r.setDate(r.getDate()+1),r.setHours(0,0,0,0);const s=new Date(i);s.setHours(0,0,0,0);for(let a=new Date(r);a<s;a.setDate(a.getDate()+1)){const i=vi(a),n=new Date(a);n.setDate(n.getDate()+1);const o=vi(n),r=ui(ci({},e),{start:{date:i},end:{date:o}});t.push(r)}const l=ui(ci({},e),{start:{dateTime:s.toISOString()},end:{dateTime:i.toISOString()}});t.push(l)}else t.push(ci({},e))}return t}function ki(e,t,a,i){if(!e)return"var(--calendar-card-line-color-vertical)";let n;n=i&&i._matchedConfig?i._matchedConfig:t.entities.find((t=>"string"==typeof t&&t===e||"object"==typeof t&&t.entity===e));const o="string"==typeof n?t.accent_color:(null==n?void 0:n.accent_color)||t.accent_color;return void 0===a||0===a||isNaN(a)?o:vt(o,a)}function wi(e,t,a){if(!e)return;if(a&&a._matchedConfig)return a._matchedConfig.label;const i=t.entities.find((t=>"string"==typeof t&&t===e||"object"==typeof t&&t.entity===e));return i&&"string"!=typeof i?i.label:void 0}function bi(e,t,a,i){if(!e)return;if(i&&i._matchedConfig)return i._matchedConfig[t];const n=a.entities.find((t=>"string"==typeof t&&t===e||"object"==typeof t&&t.entity===e));return n&&"string"!=typeof n?n[t]:void 0}function Mi(e){if(!e||e._isEmptyDay)return!1;const t=new Date;if(!e.start.dateTime)return!1;const a=e.start.dateTime?new Date(e.start.dateTime):null,i=e.end.dateTime?new Date(e.end.dateTime):null;return!(!a||!i)&&(t>=a&&t<i)}function zi(e,t){let a;if(t&&""!==t.trim())try{const e=function(e){const t=e.match(/^([+-])(\d+)$/);if(t){const e="+"===t[1]?1:-1,a=parseInt(t[2],10);if(!isNaN(a)){const t=new Date;return t.setHours(0,0,0,0),t.setDate(t.getDate()+e*a),t}return null}const a=e.match(/^today([+-])(\d+)$/i);if(!a)return null;const i="+"===a[1]?1:-1,n=parseInt(a[2],10);if(isNaN(n))return null;const o=new Date;return o.setHours(0,0,0,0),o.setDate(o.getDate()+i*n),o}(t.trim());if(e)a=e;else if(t.includes("T"))a=new Date(t),isNaN(a.getTime())&&(Fe(`Invalid ISO date: ${t}, falling back to today`),a=new Date,a=new Date(a.getFullYear(),a.getMonth(),a.getDate()));else{const[e,i,n]=t.split("-").map(Number);e&&i&&n&&i>=1&&i<=12&&n>=1&&n<=31?(a=new Date(e,i-1,n),isNaN(a.getTime())&&(Fe(`Invalid date: ${t}, falling back to today`),a=new Date,a=new Date(a.getFullYear(),a.getMonth(),a.getDate()))):(Fe(`Malformed date: ${t}, falling back to today`),a=new Date,a=new Date(a.getFullYear(),a.getMonth(),a.getDate()))}}catch(e){Fe(`Error parsing date: ${t}, falling back to today`,e),a=new Date,a=new Date(a.getFullYear(),a.getMonth(),a.getDate())}else a=new Date,a=new Date(a.getFullYear(),a.getMonth(),a.getDate());a.setHours(0,0,0,0);const i=new Date(a),n=parseInt(e.toString())||3;return i.setDate(a.getDate()+n),i.setHours(23,59,59,999),{start:a,end:i}}function Ti(e,t,a){try{Oe(`Caching ${t.length} events`);const i={events:t,timestamp:Date.now()};return"number"==typeof a&&a>0&&(i.ttlMs=a),localStorage.setItem(e,JSON.stringify(i)),null!==Di(e)}catch(e){return Ve("Failed to cache calendar events:",e),!1}}function Di(e,t,a=!1){try{const i=localStorage.getItem(e);if(!i)return null;const n=JSON.parse(i),o=Date.now();let r;r="number"==typeof n.ttlMs&&n.ttlMs>0?n.ttlMs:a&&(null==t?void 0:t.refresh_on_navigate)?1e3*ue:function(e){return 60*((null==e?void 0:e.refresh_interval)||ce)*1e3}(t);return o-n.timestamp<r?n:(localStorage.removeItem(e),Oe(`Cache expired and removed for ${e}`),null)}catch(t){Fe("Cache error:",t);try{localStorage.removeItem(e)}catch(e){}return null}}function ji(e){if(e.start_date&&""!==e.start_date.trim()){return zi(e.days_to_show,e.start_date).start}const t=new Date;return new Date(t.getFullYear(),t.getMonth(),t.getDate())}function Si(e,t,a){let i=ii(e,t.show_week_numbers,a);if("iso"===t.show_week_numbers&&0===a&&0===e.getDay()){const t=new Date(e);t.setDate(t.getDate()+1),i=ai(t)}return i}function $i(e,t,a,i){const n="hold"===a?t.hold_action:t.tap_action;if(!n)return;if("expand"===n.action)return i&&i(),void Ie("Executed expand action");const o={entity:function(e){if(!e||!e.length)return;const t=e[0];return"string"==typeof t?t:t.entity}(t.entities),tap_action:t.tap_action,hold_action:t.hold_action},r=new Event("hass-action",{bubbles:!0,composed:!0});r.detail={config:o,action:a},e.dispatchEvent(r),Ie(`Delegated ${a} action (${n.action}) to HA native handler`)}const xi=o`
/* ===== CORE CONTAINER STYLES ===== */
:host {
display: block;
height: 100%;
}
ha-card {
/* Layout */
display: flex;
flex-direction: column;
height: 100%;
position: relative;
overflow: hidden;
/* Box model */
box-sizing: border-box;
padding: calc(var(--calendar-card-spacing-additional) + 16px) 16px
calc(var(--calendar-card-spacing-additional) + 16px) 8px;
/* Visual */
background: var(--calendar-card-background-color, var(--card-background-color));
cursor: pointer;
}
/* Focus states */
ha-card:focus {
outline: none;
}
ha-card:focus-visible {
outline: 2px solid var(--calendar-card-line-color-vertical);
}
/* Structure containers for stable DOM */
.header-container,
.content-container {
width: 100%;
}
/* Content container with unified scrolling behavior */
.content-container {
max-height: var(--calendar-card-max-height, none);
height: var(--calendar-card-height, auto);
overflow-x: hidden;
overflow-y: auto;
padding-bottom: 1px;
hyphens: auto;
/* Hide scrollbars across browsers */
scrollbar-width: none; /* Firefox */
-ms-overflow-style: none; /* IE/Edge */
}
/* Show scrollbars on hover */
.content-container:hover {
scrollbar-width: thin; /* Firefox */
scrollbar-color: var(--secondary-text-color) transparent; /* Firefox */
-ms-overflow-style: auto; /* IE/Edge */
}
.card-header-placeholder {
height: 0;
}
/* ===== HEADER STYLES ===== */
.card-header {
/* Layout */
float: left;
/* Spacing */
margin: 0 0 16px 8px;
padding: 0;
/* Typography */
color: var(--calendar-card-color-title, var(--primary-text-color));
font-size: var(--calendar-card-font-size-title, var(--paper-font-headline_-_font-size));
font-weight: var(--paper-font-headline_-_font-weight);
letter-spacing: var(--paper-font-headline_-_letter-spacing);
line-height: var(--paper-font-headline_-_line-height);
/* Additional Typography */
-webkit-font-smoothing: var(--paper-font-headline_-_-webkit-font-smoothing);
text-rendering: var(--paper-font-common-expensive-kerning_-_text-rendering);
opacity: var(--dark-primary-opacity);
}
/* ===== WEEK NUMBER & SEPARATOR STYLES ===== */
/* Table structure for week number pills and their separator lines
* Creates consistent alignment with calendar data below */
/* Margins are applied dynamically in renderWeekRow */
.week-row-table {
height: calc(var(--calendar-card-week-number-font-size) * 1.5);
width: 100%;
table-layout: fixed;
padding-left: 8px;
border-spacing: 0;
border: none !important;
}
/* Make both cells take full height of the row */
.week-number-cell,
.separator-cell {
height: 100%;
}
/* Left cell containing the week number pill
* Sized to match date column width for proper alignment */
.week-number-cell {
width: var(--calendar-card-date-column-width);
position: relative;
text-align: center;
vertical-align: middle;
padding-right: 12px; /* Match date column padding */
}
/* Week number pill - positioned absolutely and centered within its cell */
.week-number {
width: calc(var(--calendar-card-week-number-font-size) * 2.5);
height: calc(var(--calendar-card-week-number-font-size) * 1.5);
display: inline-flex; /* Centering */
align-items: center;
justify-content: center;
font-size: var(--calendar-card-week-number-font-size);
font-weight: 500;
color: var(--calendar-card-week-number-color);
background-color: var(--calendar-card-week-number-bg-color);
border-radius: 999px;
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
/* Safari-specific adjustment for iOS vertical alignment issues */
@supports (-webkit-touch-callout: none) {
.week-number {
/* Adjust padding to improve vertical alignment on iOS Safari */
padding-top: calc(var(--calendar-card-week-number-font-size) * 0.1);
}
}
/* Right cell containing the horizontal separator line
* Takes up remaining width of the table */
.separator-cell {
vertical-align: middle;
}
/* The actual separator line */
.separator-line {
width: 100%;
height: var(--separator-border-width, 0);
background-color: var(--separator-border-color, transparent);
/* Only show when width > 0px */
display: var(--separator-display, none);
}
/* Day separator - Horizontal line between individual days
* Used when days aren't at week or month boundaries */
.separator {
width: 100%;
margin-left: 8px;
}
/* Week separator (full-width) - Used when show_week_numbers is null
* Creates a horizontal line at week boundaries without week number pill
* Margins are applied dynamically in createSeparatorStyle in render.ts */
.week-separator {
width: 100%;
margin-left: 8px;
border-top-style: solid; /* Ensure line is visible */
}
/* Month separator - Used at month boundaries
* Creates a horizontal line between months, has priority over week separators
* Margins are applied dynamically in createSeparatorStyle in render.ts */
.month-separator {
width: 100%;
margin-left: 8px;
border-top-style: solid; /* Ensure line is visible */
}
/* ===== DAY TABLE STYLES ===== */
table {
/* Layout */
width: 100%;
table-layout: fixed;
border-spacing: 0;
border-collapse: separate;
/* Borders & Spacing */
margin-bottom: var(--calendar-card-day-spacing);
}
.day-table {
/* Override the default table border-bottom for day tables */
border: none !important;
}
table:last-of-type {
margin-bottom: 0;
border-bottom: 0;
}
/* ===== DATE COLUMN STYLES ===== */
.date-column {
/* Layout */
width: var(--calendar-card-date-column-width);
min-width: var(--calendar-card-date-column-width);
max-width: var(--calendar-card-date-column-width);
vertical-align: var(--calendar-card-date-column-vertical-alignment);
text-align: center;
position: relative;
/* Borders & Spacing */
padding-left: 8px;
padding-right: 12px;
}
.date-content {
display: flex;
flex-direction: column;
position: relative;
z-index: 2; /* Ensure date content is above indicator */
}
/* Today indicator styling */
.today-indicator-container {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 1;
}
/* Date components */
.weekday {
font-size: var(--calendar-card-font-size-weekday);
line-height: var(--calendar-card-font-size-weekday);
color: var(--calendar-card-color-weekday);
}
.day {
font-size: var(--calendar-card-font-size-day);
line-height: var(--calendar-card-font-size-day);
font-weight: 500;
color: var(--calendar-card-color-day);
}
.month {
font-size: var(--calendar-card-font-size-month);
line-height: var(--calendar-card-font-size-month);
text-transform: uppercase;
color: var(--calendar-card-color-month);
}
/* Today indicator styling */
.today-indicator-container {
position: absolute;
color: var(--calendar-card-today-indicator-color);
pointer-events: none;
z-index: 1;
}
/* Set proper sizing for icon-based indicators */
ha-icon.today-indicator {
--mdc-icon-size: var(--calendar-card-today-indicator-size);
}
/* Special styling for image type */
img.today-indicator.image {
width: var(--calendar-card-today-indicator-size);
height: auto;
max-height: var(--calendar-card-today-indicator-size);
object-fit: contain;
}
/* Special styling for emoji type */
span.today-indicator.emoji {
font-size: var(--calendar-card-today-indicator-size);
line-height: 1;
}
/* Animation for pulse indicator */
ha-icon.today-indicator.pulse {
animation: pulse-animation 2s infinite ease-in-out;
}
/* Special styling for glow effect */
ha-icon.today-indicator.glow {
filter: drop-shadow(
0 0 calc(var(--calendar-card-today-indicator-size) * 0.5)
var(--calendar-card-today-indicator-color)
);
}
/* Pulse animation keyframes */
@keyframes pulse-animation {
0% {
transform: scale(0.95);
opacity: 0.7;
}
50% {
transform: scale(1.1);
opacity: 1;
}
100% {
transform: scale(0.95);
opacity: 0.7;
}
}
/* Date column weather */
.date-column .weather {
display: flex;
align-items: center;
justify-content: center;
}
.weather ha-icon {
margin-right: 1px;
}
.weather-temp-high,
.weather-temp-low {
line-height: 1;
vertical-align: middle;
}
.weather-temp-high {
font-weight: 500;
}
.weather-temp-low {
opacity: 0.8;
}
.weather .weather-uv-index {
line-height: 1;
vertical-align: middle;
font-weight: 500;
margin-left: 2px;
}
.event-weather .weather-uv-index {
font-weight: 500;
margin-left: 2px;
}
/* ===== EVENT STYLES ===== */
/* Base event */
.event {
padding: var(--calendar-card-event-spacing) 0 var(--calendar-card-event-spacing) 12px;
border-radius: 0;
}
/* Event positioning variations */
.event-first.event-last {
border-start-start-radius: 0;
border-start-end-radius: var(--calendar-card-event-border-radius);
border-end-end-radius: var(--calendar-card-event-border-radius);
border-end-start-radius: 0;
}
.event-first {
border-start-end-radius: var(--calendar-card-event-border-radius);
border-start-start-radius: 0;
}
.event-middle {
/* No additional styles needed */
}
.event-last {
border-end-end-radius: var(--calendar-card-event-border-radius);
border-end-start-radius: 0;
}
/* Past event styling */
.past-event .event-content {
opacity: 0.6;
}
/* Event content */
.event-content {
display: flex;
flex-direction: column;
}
.summary-row {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
}
.summary {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
}
.event-title {
font-size: var(--calendar-card-font-size-event);
font-weight: 500;
line-height: 1.2;
color: var(--calendar-card-color-event);
margin-right: 12px;
padding-bottom: 2px;
}
/* Text label styling */
.calendar-label {
display: inline;
margin-right: 4px;
}
/* MDI icon label styling */
.label-icon {
--mdc-icon-size: var(--calendar-card-font-size-event);
vertical-align: middle;
margin-right: 4px;
}
/* Image label styling */
.label-image {
height: var(--calendar-card-font-size-event);
width: auto;
vertical-align: middle;
margin-right: 4px;
}
/* Event weather */
.event-weather {
display: flex;
align-items: center;
font-weight: 500;
margin-left: 8px;
margin-right: 12px;
}
.event-weather ha-icon {
margin-right: 2px;
}
/* ===== TIME, LOCATION & DESCRIPTION STYLES ===== */
.time-location {
display: flex;
flex-direction: column;
margin-top: 0;
}
.time,
.location,
.description {
display: flex;
align-items: var(--calendar-card-event-icon-vertical-alignment);
line-height: 1.2;
margin-top: 2px;
margin-right: 12px;
}
.time span,
.location span,
.description span {
display: inline-block;
vertical-align: middle;
}
.time {
font-size: var(--calendar-card-font-size-time);
color: var(--calendar-card-color-time);
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
}
.time-actual {
display: flex;
align-items: center;
flex-shrink: 0;
}
.time-countdown {
text-align: right;
color: var(--calendar-card-color-time);
font-size: var(--calendar-card-font-size-time);
margin-left: 8px;
margin-right: 12px;
white-space: nowrap;
}
.location {
font-size: var(--calendar-card-font-size-location);
color: var(--calendar-card-color-location);
}
.description {
font-size: var(--calendar-card-font-size-description);
color: var(--calendar-card-color-description);
}
.description span {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: var(--calendar-card-description-max-lines);
overflow: hidden;
}
/* ===== PROGRESS BAR STYLES ===== */
.progress-bar {
width: var(--calendar-card-progress-bar-width);
height: var(--calendar-card-progress-bar-height);
background-color: color-mix(in srgb, var(--calendar-card-progress-bar-color) 20%, transparent);
border-radius: 999px;
overflow: hidden;
margin-left: 8px;
margin-right: 12px;
}
.progress-bar-filled {
height: 100%;
background-color: var(--calendar-card-progress-bar-color);
border-radius: 999px 0 0 999px;
}
/* ===== ICON STYLES ===== */
ha-icon {
display: inline-flex;
flex-shrink: 0;
align-items: center;
justify-content: center;
position: relative;
vertical-align: top;
top: 0;
margin-right: 4px;
}
.time ha-icon {
--mdc-icon-size: var(--calendar-card-icon-size-time, 14px);
}
.location ha-icon {
--mdc-icon-size: var(--calendar-card-icon-size-location, 14px);
}
.description ha-icon {
--mdc-icon-size: var(--calendar-card-icon-size-description, 14px);
}
/* ===== STATUS MESSAGES ===== */
.loading,
.error {
text-align: center;
padding: 16px;
}
.error {
color: var(--error-color);
}
/* ===== CORNER LOADING INDICATOR ===== */
.loading-indicator {
position: absolute;
top: calc(var(--ha-card-border-radius, 12px) * 0.5 + 2px);
right: calc(var(--ha-card-border-radius, 12px) * 0.5 + 2px);
width: 16px;
height: 16px;
display: inline-flex;
align-items: center;
justify-content: center;
z-index: 5;
pointer-events: none;
}
.loading-indicator .spinner {
box-sizing: border-box;
width: 14px;
height: 14px;
border: 2px solid color-mix(in srgb, var(--primary-text-color) 25%, transparent);
border-top-color: var(--primary-text-color);
border-radius: 50%;
animation: ccp-spin 0.8s linear infinite;
}
@keyframes ccp-spin {
to {
transform: rotate(360deg);
}
}
`;function Yi(e){e.style.opacity="0",e.style.transition=`opacity ${fe}ms ease-out`,setTimeout((()=>{e.parentNode&&(e.parentNode.removeChild(e),Ie("Removed hold indicator"))}),fe)}const Li=1,Ei=2,Ai=e=>(...t)=>({_$litDirective$:e,values:t});let Ci=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,a){this._$Ct=e,this._$AM=t,this._$Ci=a}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}};const Hi=Ai(class extends Ci{constructor(e){if(super(e),e.type!==Li||"class"!==e.name||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return" "+Object.keys(e).filter((t=>e[t])).join(" ")+" "}update(e,[t]){if(void 0===this.st){this.st=new Set,void 0!==e.strings&&(this.nt=new Set(e.strings.join(" ").split(/\s/).filter((e=>""!==e))));for(const e in t)t[e]&&!this.nt?.has(e)&&this.st.add(e);return this.render(t)}const a=e.element.classList;for(const e of this.st)e in t||(a.remove(e),this.st.delete(e));for(const e in t){const i=!!t[e];i===this.st.has(e)||this.nt?.has(e)||(i?(a.add(e),this.st.add(e)):(a.remove(e),this.st.delete(e)))}return N}}),Pi="important",Vi=" !"+Pi,Fi=Ai(class extends Ci{constructor(e){if(super(e),e.type!==Li||"style"!==e.name||e.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce(((t,a)=>{const i=e[a];return null==i?t:t+`${a=a.includes("-")?a:a.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${i};`}),"")}update(e,[t]){const{style:a}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(t)),this.render(t);for(const e of this.ft)null==t[e]&&(this.ft.delete(e),e.includes("-")?a.removeProperty(e):a[e]=null);for(const e in t){const i=t[e];if(null!=i){this.ft.add(e);const t="string"==typeof i&&i.endsWith(Vi);e.includes("-")||t?a.setProperty(e,t?i.slice(0,-11):i,t?Pi:""):a[e]=i}}return N}}),{I:Oi}=ae,Ii=()=>document.createComment(""),Ni=(e,t,a)=>{const i=e._$AA.parentNode,n=void 0===t?e._$AB:t._$AA;if(void 0===a){const t=i.insertBefore(Ii(),n),o=i.insertBefore(Ii(),n);a=new Oi(t,o,e,e.options)}else{const t=a._$AB.nextSibling,o=a._$AM,r=o!==e;if(r){let t;a._$AQ?.(e),a._$AM=e,void 0!==a._$AP&&(t=e._$AU)!==o._$AU&&a._$AP(t)}if(t!==n||r){let e=a._$AA;for(;e!==t;){const t=e.nextSibling;i.insertBefore(e,n),e=t}}}return a},Wi=(e,t,a=e)=>(e._$AI(t,a),e),Ki={},Ri=(e,t=Ki)=>e._$AH=t,Ui=e=>{e._$AR(),e._$AA.remove()},Bi=(e,t,a)=>{const i=new Map;for(let n=t;n<=a;n++)i.set(e[n],n);return i},Ji=Ai(class extends Ci{constructor(e){if(super(e),e.type!==Ei)throw Error("repeat() can only be used in text expressions")}dt(e,t,a){let i;void 0===a?a=t:void 0!==t&&(i=t);const n=[],o=[];let r=0;for(const t of e)n[r]=i?i(t,r):r,o[r]=a(t,r),r++;return{values:o,keys:n}}render(e,t,a){return this.dt(e,t,a).values}update(e,[t,a,i]){const n=(e=>e._$AH)(e),{values:o,keys:r}=this.dt(t,a,i);if(!Array.isArray(n))return this.ut=r,o;const s=this.ut??=[],l=[];let d,_,c=0,u=n.length-1,m=0,h=o.length-1;for(;c<=u&&m<=h;)if(null===n[c])c++;else if(null===n[u])u--;else if(s[c]===r[m])l[m]=Wi(n[c],o[m]),c++,m++;else if(s[u]===r[h])l[h]=Wi(n[u],o[h]),u--,h--;else if(s[c]===r[h])l[h]=Wi(n[c],o[h]),Ni(e,l[h+1],n[c]),c++,h--;else if(s[u]===r[m])l[m]=Wi(n[u],o[m]),Ni(e,n[c],n[u]),u--,m++;else if(void 0===d&&(d=Bi(r,m,h),_=Bi(s,c,u)),d.has(s[c]))if(d.has(s[u])){const t=_.get(r[m]),a=void 0!==t?n[t]:null;if(null===a){const t=Ni(e,n[c]);Wi(t,o[m]),l[m]=t}else l[m]=Wi(a,o[m]),Ni(e,n[c],a),n[t]=null;m++}else Ui(n[u]),u--;else Ui(n[c]),c++;for(;m<=h;){const t=Ni(e,l[h+1]);Wi(t,o[m]),l[m++]=t}for(;c<=u;){const e=n[c++];null!==e&&Ui(e)}return this.ut=r,Ri(e,l),N}});function Zi(e,t){const a={};return e&&Array.isArray(e)?(e.forEach((e=>{if(!e.datetime)return;let i,n,o;"hourly"===t?(o=new Date(e.datetime),n=o.getHours(),i=`${Xa(o)}_${n}`):(o=new Date(e.datetime),i=Xa(o));const r=function(e,t){const a=void 0!==t&&(t>=18||t<6);if(a&&qi[e])return qi[e];return Gi[e]||"mdi:weather-cloudy-alert"}(e.condition,n);a[i]={icon:r,condition:e.condition,temperature:Math.round(e.temperature),templow:void 0!==e.templow?Math.round(e.templow):void 0,datetime:e.datetime,hour:n,precipitation:e.precipitation,precipitation_probability:e.precipitation_probability,uv_index:void 0!==e.uv_index?Math.round(e.uv_index):void 0}})),a):a}const Gi={"clear-night":"mdi:weather-night",cloudy:"mdi:weather-cloudy",fog:"mdi:weather-fog",hail:"mdi:weather-hail",lightning:"mdi:weather-lightning","lightning-rainy":"mdi:weather-lightning-rainy",partlycloudy:"mdi:weather-partly-cloudy",pouring:"mdi:weather-pouring",rainy:"mdi:weather-rainy",snowy:"mdi:weather-snowy","snowy-rainy":"mdi:weather-snowy-rainy",sunny:"mdi:weather-sunny",windy:"mdi:weather-windy","windy-variant":"mdi:weather-windy-variant",exceptional:"mdi:weather-cloudy-alert"},qi={sunny:"mdi:weather-night",partlycloudy:"mdi:weather-night-partly-cloudy","lightning-rainy":"mdi:weather-lightning"};async function Qi(e,t,a,i){var n;if(!(null==e?void 0:e.connection)||!(null==(n=null==t?void 0:t.weather)?void 0:n.entity))return;const o=t.weather.entity;try{return await e.connection.subscribeMessage((e=>{if(e&&Array.isArray(e.forecast)){const t=Zi(e.forecast,a);i(t)}}),{type:"weather/subscribe_forecast",forecast_type:a,entity_id:o})}catch(e){return void Ve("Failed to subscribe to weather forecast",{entity:o,forecast_type:a,error:e})}}function Xi(e,t){const a=pt(t);return"loading"===e?I`
<div class="calendar-card">
<div class="loading">${a.loading}</div>
</div>
`:I`
<div class="calendar-card">
<div class="error">${a.error}</div>
</div>
`}function en(e,t,a,i="day"){const n=parseFloat(a.day_spacing);if("day"===i)return{borderTopWidth:e,borderTopColor:t,borderTopStyle:"solid",marginTop:"0px",marginBottom:`${n}px`};let o=we.WEEK;"month"===i&&(o=we.MONTH);const r=n*o;return{borderTopWidth:e,borderTopColor:t,borderTopStyle:"solid",marginTop:`${r}px`,marginBottom:`${r}px`}}function tn(e,t,a,i,n=!1,o="day"){if("0px"===e||n)return W;const r=en(e,t,i,o);return I`<div class="${a}" style=${Fi(r)}></div>`}function an(e){return tn(e.month_separator_width,e.month_separator_color,"month-separator",e,!1,"month")}function nn(e,t=!1){return tn(e.week_separator_width,e.week_separator_color,"week-separator",e,t,"week")}function on(e,t){if(!e.today_indicator||!t)return W;const a=e.today_indicator,i=function(e){if(void 0===e||!1===e)return"none";if(!0===e)return"dot";if("string"==typeof e)return"pulse"===e||"glow"===e?e:ft(e)?"mdi":e.startsWith("/")||e.includes(".png")||e.includes(".jpg")||e.includes(".svg")||e.includes(".webp")||e.includes(".gif")?"image":/[\p{Emoji}]/u.test(e)?"emoji":"dot";return"none"}(a);if("none"===i)return W;const n=function(e){const t={position:"absolute",transform:"translate(-50%, -50%)"},a=e.trim().split(/\s+/);return a.length>=1&&(t.left=a[0]),a.length>=2?t.top=a[1]:t.top="50%",t}(e.today_indicator_position);return I`
<div class="today-indicator-container">
${function(e,t,a){let i="";switch(e){case"dot":case"pulse":case"glow":i="mdi:circle";break;case"mdi":i="string"==typeof t?t:"mdi:circle";break;case"image":return"string"==typeof t?I`
<img
src="${t}"
class="today-indicator image"
style=${Fi(a)}
alt="Today">
</img>`:W;case"emoji":return"string"==typeof t?I` <span class="today-indicator emoji" style=${Fi(a)}>
${t}
</span>`:W;default:return W}if(i)return I` <ha-icon
icon="${i}"
class="today-indicator ${e}"
style=${Fi(a)}
>
</ha-icon>`;return W}(i,a,n)}
</div>
`}function rn(e,t,a,i,n){var o,r,s,l,d;const _=0===e.getDay()||6===e.getDay();let c=t.weekday_color,u=t.day_color,m=t.month_color;_&&(c=t.weekend_weekday_color||c,u=t.weekend_day_color||u,m=t.weekend_month_color||m),i&&(c=t.today_weekday_color||c,u=t.today_day_color||u,m=t.today_month_color||m);const h=pt(a),p=h.daysOfWeek[e.getDay()],g=e.getDate(),y=h.months[e.getMonth()],v=("date"===(null==(o=t.weather)?void 0:o.position)||"both"===(null==(r=t.weather)?void 0:r.position))&&(null==(s=t.weather)?void 0:s.entity);let f=W;if(v&&(null==n?void 0:n.daily)){const a=function(e,t){if(!t)return;return t[Xa(e)]}(e,n.daily);if(a){const e=(null==(l=t.weather)?void 0:l.date)||{},i=!1!==e.show_conditions,n=!1!==e.show_high_temp,o=!0===e.show_uv_index&&void 0!==a.uv_index&&a.uv_index>=(null!=(d=e.uv_index_threshold)?d:0),r=!0===e.show_low_temp&&!o&&void 0!==a.templow,s=e.icon_size||"14px",_=e.font_size||"12px",c=e.color||"var(--primary-text-color)";f=I`
<div class="weather" style="font-size: ${_}; color: ${c};">
${i?I`
<ha-icon
.icon=${a.icon}
style="--mdc-icon-size: ${s};"
></ha-icon>
`:W}
${n?I` <span class="weather-temp-high">${a.temperature}°</span> `:W}
${r?I` <span class="weather-temp-low">/${a.templow}°</span> `:W}
${o?I` <span class="weather-uv-index">UV${a.uv_index}</span> `:W}
</div>
`}}return I`
<div
class="weekday"
style=${Fi({"font-size":t.weekday_font_size,color:c})}
>
${p}
</div>
<div
class="day"
style=${Fi({"font-size":t.day_font_size,color:u})}
>
${g}
</div>
${t.show_month?I`
<div
class="month"
style=${Fi({"font-size":t.month_font_size,color:m})}
>
${y}
</div>
`:W}
${f}
`}function sn(e,t,a,i,n,o,r){const s=new Date,l=new Date(s.getFullYear(),s.getMonth(),s.getDate()),d=new Date(e.timestamp).toDateString(),_=d===l.toDateString(),c=new Date(l);c.setDate(c.getDate()+1);const u=d===c.toDateString();let m=W;const h=(null==n?void 0:n.isNewMonth)||!1,p=(null==n?void 0:n.isNewWeek)||!1,g=h&&"0px"!==t.month_separator_width,y=p&&(null!==t.show_week_numbers||"0px"!==t.week_separator_width),v=t.day_separator_width,f=t.day_separator_color;if(i&&"0px"!==v&&!g&&!y){const e=en(v,f,t,"day");m=I`<div class="separator" style=${Fi(e)}></div>`}return I`
${m}
<table
class=${Hi({"day-table":!0,today:_,tomorrow:u,"future-day":!_})}
>
${Ji(e.events,((e,t)=>`${e._entityId}-${e.summary}-${t}`),((i,n)=>function(e,t,a,i,n,o,r,s){var l;const d=Boolean(e._isEmptyDay),_=new Date(t.timestamp),c=function(e){const t=e.getDay();return 0===t||6===t}(_),u=new Date,m=new Date(u.getFullYear(),u.getMonth(),u.getDate()),h=new Date(m);h.setDate(h.getDate()+1);let p=!1;if(!d){if(!e.start.dateTime){let t=e.end.date?Qa(e.end.date):null;if(t){const e=new Date(t);e.setDate(e.getDate()-1),t=e}p=null!==t&&m>t}else{const t=e.end.dateTime?new Date(e.end.dateTime):null;p=null!==t&&u>t}}const g=ki(e._entityId,i,void 0,e),y=i.event_background_opacity>0?i.event_background_opacity:0,v=y>0?ki(e._entityId,i,y,e):"",f=null!=(l=bi(e._entityId,"show_time",i,e))?l:i.show_time,k=!e.start.dateTime,w=k&&e.time&&(e.time.includes(pt(n).multiDay)||e.time.includes(pt(n).endsTomorrow)||e.time.includes(pt(n).endsToday)),b=f&&!(k&&!w&&!i.show_single_allday_time)&&!d;let M=null;!i.show_countdown||k&&!i.show_countdown_allday||d||p||(M=Ja(e,n));const z=Mi(e),T=z&&i.show_progress_bar?function(e){if(!Mi(e))return null;const t=new Date,a=new Date(e.start.dateTime),i=new Date(e.end.dateTime).getTime()-a.getTime(),n=t.getTime()-a.getTime();return Math.min(100,Math.max(0,Math.floor(n/i*100)))}(e):null,D=Ba(e,i,n,s),j=e.location||"",S=e.description||"",$=0===a,x=a===t.events.length-1,Y={event:!0,"event-first":$,"event-middle":!$&&!x,"event-last":x,"past-event":p};return I`
<tr>
${0===a?I`
<td
class="date-column ${c?"weekend":""}"
rowspan="${t.events.length}"
style="position: relative;"
>
${rn(_,i,n,o,r)}
${on(i,o)}
</td>
`:""}
<td
class=${Hi(Y)}
style="border-inline-start: var(--calendar-card-line-width-vertical) solid ${g}; background-color: ${v};"
>
<div class="event-content">
${function(e,t,a){var i,n;const o=!!e._isEmptyDay,r=o?"var(--calendar-card-empty-day-color)":(null==(i=e._matchedConfig)?void 0:i.color)||t.event_color,s=wi(e._entityId,t,e),l=null==(n=e._matchedConfig)?void 0:n.label_icon_color;return I`
<div class="summary-row">
<div class="summary">
${s?function(e,t){if(!e)return W;const a=t?`color: ${t};`:W;return ft(e)?I`<ha-icon icon="${e}" class="label-icon" style=${a}></ha-icon>`:e.startsWith("/local/")||/\.(jpg|jpeg|png|gif|svg|webp)$/i.test(e)?I`<img src="${e}" class="label-image"></img>`:I`<span class="calendar-label">${e}</span>`}(s,l):W}
<span
class="event-title ${o?"empty-day-title":""}"
style="color: ${r}"
>
${o?`✓ ${e.summary}`:e.summary}
</span>
</div>
${function(e,t,a){var i,n,o,r;const s=(null==(i=t.weather)?void 0:i.entity)&&("event"===t.weather.position||"both"===t.weather.position);if(!s||!(null==a?void 0:a.hourly))return I``;if(null==(n=e.end)?void 0:n.dateTime){const t=new Date;if(new Date(e.end.dateTime)<t)return I``}const l=(null==(o=t.weather)?void 0:o.event)||{},d=function(e,t,a,i=!1){if(e.start.date&&!e.start.dateTime&&a)return a[Xa(Qa(e.start.date))];if(!e.start.dateTime)return;const n=new Date(e.start.dateTime),o=Xa(n),r=n.getHours();if(t){const e=t[`${o}_${r}`];if(e)return e;let a=-1,i=24;if(Object.keys(t).forEach((e=>{if(e.startsWith(o)){const t=e.split("_")[1],n=parseInt(t);if(!isNaN(n)){const e=Math.abs(n-r);e<i&&(i=e,a=n)}}})),a>=0)return t[`${o}_${a}`]}return i&&a?a[o]:void 0}(e,a.hourly,a.daily,!1!==l.daily_forecast_fallback);if(!d)return I``;const _=!1!==l.show_conditions,c=!1!==l.show_temp,u=!0===l.show_uv_index&&void 0!==d.uv_index&&d.uv_index>=(null!=(r=l.uv_index_threshold)?r:0),m=l.icon_size||"14px",h=l.font_size||"12px",p=l.color||"var(--secondary-text-color)";return I`
<div class="event-weather">
${_?I`<ha-icon .icon=${d.icon} style="--mdc-icon-size: ${m};"></ha-icon>`:W}
${c?I`<span style="font-size: ${h}; color: ${p};">
${d.temperature}°
</span>`:W}
${u?I`<span class="weather-uv-index" style="font-size: ${h}; color: ${p};">
UV${d.uv_index}
</span>`:W}
</div>
`}(e,t,a)}
</div>
`}(e,i,r)}
<div class="time-location">
${b?I`
<div class="time">
<div class="time-actual">
<ha-icon icon="mdi:clock-outline"></ha-icon>
<span>${D}</span>
</div>
${M?I`<div class="time-countdown">${M}</div>`:null!==T&&i.show_progress_bar?I`
<div class="progress-bar">
<div
class="progress-bar-filled"
style="width: ${T}%"
></div>
</div>
`:W}
</div>
`:M?I`
<div class="time">
<div class="time-actual"></div>
<div class="time-countdown">${M}</div>
</div>
`:null!==T&&i.show_progress_bar?I`
<div class="time">
<div class="time-actual"></div>
<div class="progress-bar">
<div
class="progress-bar-filled"
style="width: ${T}%"
></div>
</div>
</div>
`:W}
${j?I`
<div class="location">
<ha-icon icon="mdi:map-marker-outline"></ha-icon>
<span>${j}</span>
</div>
`:""}
${S?I`
<div class="description">
<ha-icon icon="mdi:information-outline"></ha-icon>
<span>${S}</span>
</div>
`:""}
</div>
</div>
</td>
</tr>
`}(i,e,n,t,a,_,o,r)))}
</table>
`}function ln(e,t,a,i,n){return I`
${e.map(((o,r)=>{var s;const l=r>0?e[r-1]:void 0,d=null!=(s=o.weekNumber)?s:null;let _=!1;if(l){_=o.weekNumber!==l.weekNumber}else _=!0;const c=l&&o.monthNumber!==l.monthNumber,u=0===r,m={isNewWeek:_,isNewMonth:Boolean(c)};let h=W;return!c||"0px"===t.month_separator_width||_&&null!==t.show_week_numbers?_&&(h=u&&null!==t.show_week_numbers&&!t.show_current_week_number?c?an(t):nn(t,u):null!==t.show_week_numbers?function(e,t,a,i=!1){if(null===e)return W;const n=parseFloat(a.day_spacing),o=n*(t?we.MONTH:we.WEEK)/2,r={marginTop:(i?0:o-n)+"px",marginBottom:`${o}px`},s={};return i?s["--separator-display"]="none":t&&"0px"!==a.month_separator_width?(s["--separator-border-width"]=a.month_separator_width,s["--separator-border-color"]=a.month_separator_color,s["--separator-display"]="block"):"0px"!==a.week_separator_width?(s["--separator-border-width"]=a.week_separator_width,s["--separator-border-color"]=a.week_separator_color,s["--separator-display"]="block"):s["--separator-display"]="none",I`
<table class="week-row-table" style=${Fi(r)}>
<tr>
<td class="week-number-cell">
<div class="week-number">${e}</div>
</td>
<td class="separator-cell" style=${Fi(s)}>
<div class="separator-line"></div>
</td>
</tr>
</table>
`}(d,Boolean(c),t,u):nn(t,u)):h=an(t),I`
${h}
${sn(o,t,a,l,m,i,n)}
`}))}
`}const dn=Symbol.for(""),_n=e=>{if(e?.r===dn)return e?._$litStatic$},cn=(e,...t)=>({_$litStatic$:t.reduce(((t,a,i)=>t+(e=>{if(void 0!==e._$litStatic$)return e._$litStatic$;throw Error(`Value passed to 'literal' function must be a 'literal' result: ${e}. Use 'unsafeStatic' to pass non-literal values, but\n take care to ensure page security.`)})(a)+e[i+1]),e[0]),r:dn}),un=new Map,mn=(e=>(t,...a)=>{const i=a.length;let n,o;const r=[],s=[];let l,d=0,_=!1;for(;d<i;){for(l=t[d];d<i&&void 0!==(o=a[d],n=_n(o));)l+=n+t[++d],_=!0;d!==i&&s.push(o),r.push(l),d++}if(d===i&&r.push(t[i]),_){const e=r.join("$$lit$$");void 0===(t=un.get(e))&&(r.raw=r,un.set(e,t=r)),a=s}return e(t,...a)})(I);var hn=o`
ha-textfield,
ha-select,
ha-formfield,
ha-entity-picker,
ha-icon-picker {
display: block;
margin: 8px 0;
}
/*
* ha-input (HA 2026.4+) replaces ha-textfield. It is display: flex with its
* own vertical padding, so it only needs an explicit width to fill the editor.
*/
ha-input {
width: 100%;
}
.card-config {
display: flex;
flex-direction: column;
padding: 4px 0;
}
.helper-text {
color: var(--secondary-text-color);
font-size: 10px;
line-height: 1.1;
margin-top: -4px;
margin-bottom: 8px;
}
h3 {
margin: 24px 0 6px 0;
font-size: 14px;
}
h3:first-of-type {
margin-top: 8px;
}
h4 {
margin: 24px 0 6px 0;
}
h5 {
margin: 2px 0 0 0;
}
.panel-content {
padding: 8px 0 12px 0;
}
.action-config {
display: flex;
flex-direction: column;
}
ha-expansion-panel {
margin: 8px 0;
}
ha-button {
margin: 8px 0;
}
.indicator-field {
display: flex;
flex-direction: column;
margin: 8px 0;
}
ha-formfield {
display: flex;
align-items: center;
padding: 8px 0;
}
.date-field {
display: flex;
flex-direction: column;
gap: 4px;
margin-bottom: 16px;
}
.date-field-label {
font-size: 12px;
font-weight: 400;
color: var(--secondary-text-color);
padding-left: 4px;
}
.date-field input[type='date'] {
width: 100%;
height: 56px;
border-radius: 4px 4px 0 0;
border: none;
border-bottom: 1px solid var(--mdc-text-field-idle-line-color, var(--secondary-text-color));
background-color: var(
--mdc-text-field-fill-color,
var(--input-fill-color, rgba(var(--rgb-primary-text-color), 0.06))
);
color: var(--primary-text-color);
font-family: var(
--mdc-typography-subtitle1-font-family,
var(--mdc-typography-font-family, Roboto, sans-serif)
);
font-size: var(--mdc-typography-subtitle1-font-size, 1rem);
padding: 0 16px;
box-sizing: border-box;
outline: none;
-webkit-appearance: none;
color-scheme: dark light;
}
.date-field input[type='date']:focus {
border-bottom: 2px solid var(--primary-color);
}
.date-field input[type='date']:hover {
border-bottom-color: var(--primary-text-color);
}
`,pn=Object.defineProperty,gn=Object.getOwnPropertySymbols,yn=Object.prototype.hasOwnProperty,vn=Object.prototype.propertyIsEnumerable,fn=(e,t,a)=>t in e?pn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,kn=(e,t)=>{for(var a in t||(t={}))yn.call(t,a)&&fn(e,a,t[a]);if(gn)for(var a of gn(t))vn.call(t,a)&&fn(e,a,t[a]);return e},wn=(e,t,a,i)=>{for(var n,o=void 0,r=e.length-1;r>=0;r--)(n=e[r])&&(o=n(t,a,o)||o);return o&&pn(t,a,o),o};let bn;function Mn(){if(void 0!==bn)return bn;if(customElements.get("ha-input"))bn=cn`ha-input`;else{if(!customElements.get("ha-textfield"))return cn`ha-input`;bn=cn`ha-textfield`}return bn}const zn={max_events_to_show:"compact_events_to_show",vertical_line_color:"accent_color",horizontal_line_width:"day_separator_width",horizontal_line_color:"day_separator_color"},Tn={max_events_to_show:"compact_events_to_show"};class Dn extends oe{static get styles(){return hn}connectedCallback(){super.connectedCallback(),this._loadCustomElements()}async _loadCustomElements(){if(!customElements.get("ha-entity-picker"))try{const e=customElements.get("hui-entities-card");e&&"function"==typeof e.getConfigElement?await e.getConfigElement():console.warn("Could not load ha-entity-picker: getConfigElement not available")}catch(e){console.warn("Could not load ha-entity-picker",e)}}setConfig(e){this._config=kn(kn({},Ke),e)}getConfigValue(e,t){var a;if(!this._config)return t;if(!e.includes(".")){let i=null!=(a=this._config[e])?a:t;if("time_24h"===e){if(!0===i)return"true";if(!1===i)return"false"}return i}const i=e.split(".");let n=this._config;for(const e of i){if(null==n)return t;if(/^\d+$/.test(e)){const a=parseInt(e,10);if(Array.isArray(n)&&a>=0&&a<n.length){n=n[a];continue}return t}if("object"!=typeof n||null===n||!(e in n))return t;n=n[e]}return null!=n?n:t}setConfigValue(e,t){if(!this._config)return;"time_24h"===e&&("true"===t?t=!0:"false"===t&&(t=!1));const a=JSON.parse(JSON.stringify(this._config));if(!e.includes("."))return void 0===t?delete a[e]:a[e]=t,void this._fireConfigChanged(a);const i=e.split("."),n=i.pop();let o=a;for(const e of i)if(/^\d+$/.test(e)){const t=parseInt(e,10);for(Array.isArray(o)||(o=[]);o.length<=t;)o.push({});o[t]&&"object"==typeof o[t]||(o[t]={}),o=o[t]}else Object.prototype.hasOwnProperty.call(o,e)&&"object"==typeof o[e]||(o[e]={}),o=o[e];void 0===t?delete o[n]:o[n]=t,this._fireConfigChanged(a)}_fireConfigChanged(e){const t=Mt(e,Ke);this._config=e,this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:t}}))}_findDeprecatedParams(e){return Object.keys(zn).filter((t=>t in e))}_findDeprecatedEntityParams(e){const t=[];return e.forEach(((e,a)=>{"object"==typeof e&&null!==e&&Object.keys(Tn).forEach((i=>{i in e&&t.push({index:a,param:i})}))})),t}_getCompactModeWarnings(){var e;const t=e=>null!=e&&""!==e,a=this.getConfigValue("compact_days_to_show"),i=this.getConfigValue("compact_events_to_show"),n=(null!=(e=this.getConfigValue("entities"))?e:[]).some((e=>"object"==typeof e&&null!==e&&t(e.compact_events_to_show))),o=["tap_action","hold_action"].some((e=>"expand"===this.getConfigValue(`${e}.action`))),r=Number(this.getConfigValue("days_to_show")),s=Number(a);return{noLimits:o&&!t(a)&&!t(i)&&!n,daysInert:t(a)&&Number.isFinite(s)&&Number.isFinite(r)&&s>=r}}_upgradeConfig(){const e=kn({},this._config);let t=!1;for(const[a,i]of Object.entries(zn))a in e&&(e[i]=e[a],delete e[a],t=!0);Array.isArray(e.entities)&&(e.entities=e.entities.map((e=>{if("object"==typeof e&&null!==e){const a=kn({},e);for(const[e,i]of Object.entries(Tn))e in a&&(a[i]=a[e],delete a[e],t=!0);return a}return e}))),t&&this._fireConfigChanged(e)}_getTranslation(e){var t,a,i;const n=(null==(t=this._config)?void 0:t.language)||(null==(i=null==(a=this.hass)?void 0:a.locale)?void 0:i.language)||"en",o=e.includes(".")?e:`editor.${e}`;return function(e,t,a){const i=pt(e);if("string"==typeof t&&t.includes(".")){const[e,n]=t.split(".");if("editor"===e&&i.editor&&n in i.editor){const e=i.editor[n];if("string"==typeof e||Array.isArray(e))return e}return void 0!==a?a:n}if(t in i){const e=i[t];if("string"==typeof e||Array.isArray(e))return e}return void 0!==a?a:t}(o.startsWith("editor.")&&!function(e){const t=pt(e);return Boolean((null==t?void 0:t.editor)&&Object.keys(t.editor).length>0)}(n)?"en":n,o,e)}_valueChanged(e){if(!e.target)return;e.stopPropagation();const t=e.target,a=t.getAttribute("name");let i=t.value;if(a)if("language_mode"!==a){if("height_mode"===a){const e=t.value,a=this.getConfigValue("height"),i=this.getConfigValue("max_height");return this.setConfigValue("height",void 0),this.setConfigValue("max_height",void 0),void("fixed"===e?this.setConfigValue("height",a&&"auto"!==a?a:"300px"):"maximum"===e&&this.setConfigValue("max_height",i&&"none"!==i?i:"300px"))}if("start_date_mode"!==a){if("start_date_fixed"===a||"start_date_offset"===a){if("start_date_offset"===a&&"change"!==e.type)return;return this.setConfigValue("start_date",t.value),void this.requestUpdate()}"remove_location_country_selector"!==a&&("show_week_numbers"===a&&"null"===i&&(i=null),"HA-SWITCH"===t.tagName&&(i=t.checked),"number"===t.getAttribute("type")&&(i=""===i?void 0:parseFloat(i)),this.setConfigValue(a,i))}else this._handleStartDateModeChange(t.value)}else{const e=t.value;"system"===e?this.setConfigValue("language",void 0):"custom"===e&&(this.getConfigValue("language")||this.setConfigValue("language","en"))}}_selectChanged(e){var t,a;if(!e.target)return;e.stopPropagation();const i=e.target.getAttribute("name"),n=null!=(a=null==(t=e.detail)?void 0:t.value)?a:void 0;if(i)if("language_mode"!==i){if("height_mode"===i){const e=this.getConfigValue("height"),t=this.getConfigValue("max_height");return this.setConfigValue("height",void 0),this.setConfigValue("max_height",void 0),void("fixed"===n?this.setConfigValue("height",e&&"auto"!==e?e:"300px"):"maximum"===n&&this.setConfigValue("max_height",t&&"none"!==t?t:"300px"))}"start_date_mode"!==i?"remove_location_country_selector"!==i&&("show_week_numbers"!==i||"null"!==n?this.setConfigValue(i,n):this.setConfigValue(i,null)):this._handleStartDateModeChange(n)}else"system"===n?this.setConfigValue("language",void 0):"custom"===n&&(this.getConfigValue("language")||this.setConfigValue("language","en"))}_serviceDataChanged(e){if(!e.target)return;const t=e.target,a=t.getAttribute("name");if(!a)return;let i=t.value;try{i=i?JSON.parse(i):{},this.setConfigValue(a,i)}catch(e){}}_getStartDateMode(){const e=this.getConfigValue("start_date",""),t=null!=e?String(e):"";return t&&""!==t?/^\d{4}-\d{2}-\d{2}$/.test(t)?"fixed":/^[+-]?\d+$/.test(t)?"offset":"fixed":"default"}_getStartDateValue(e){const t=this.getConfigValue("start_date",""),a=null!=t?String(t):"";return"fixed"===e&&/^\d{4}-\d{2}-\d{2}$/.test(a)||"offset"===e&&/^[+-]?\d+$/.test(a)?a:""}_handleStartDateModeChange(e){if("default"===e)this.setConfigValue("start_date",void 0);else if("fixed"===e){const e=new Date,t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),i=String(e.getDate()).padStart(2,"0");this.setConfigValue("start_date",`${t}-${a}-${i}`)}else"offset"===e&&this.setConfigValue("start_date","+0")}render(){var e,t;if(!this.hass||!this._config)return I``;const a=this._findDeprecatedParams(this._config),i=this._findDeprecatedEntityParams(null!=(t=null==(e=this._config)?void 0:e.entities)?t:[]),n=a.length>0||i.length>0?I`
<div style="border-radius: 8px; overflow: hidden;">
<ha-alert alert-type="warning">
<div style="height: 6px"></div>
<b>${this._getTranslation("editor.deprecated_config_detected")}</b><br />
${this._getTranslation("editor.deprecated_config_explanation")}<br />
<span style="color: var(--warning-color); font-size: 0.95em;">
${this._getTranslation("editor.deprecated_config_update_hint")}
</span>
<div style="text-align:center;">
<ha-button @click="${()=>this._upgradeConfig()}">
<ha-icon icon="mdi:autorenew"></ha-icon>
${this._getTranslation("editor.update_config")}
</ha-button>
</div>
</ha-alert>
</div>
`:null,o=this._getCompactModeWarnings();return I`
${n}
<div class="card-config">
<!-- CALENDAR ENTITIES -->
${this.addExpansionPanel(this._getTranslation("calendar_entities"),"M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21M19,15H15V11H19V15Z",I` ${this._renderCalendarEntities()} `,!0)}
<!-- CORE SETTINGS -->
${this.addExpansionPanel(this._getTranslation("core_settings"),"M9,10V12H7V10H9M13,10V12H11V10H13M17,10V12H15V10H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H6V1H8V3H16V1H18V3H19M19,19V8H5V19H19M9,14V16H7V14H9M13,14V16H11V14H13M17,14V16H15V14H17Z",I`
<!-- Display Range -->
<h3>${this._getTranslation("time_range")}</h3>
<div class="helper-text">${this._getTranslation("time_range_note")}</div>
${this.addTextField("days_to_show",this._getTranslation("days_to_show"),"number")}
<div class="helper-text">${this._getTranslation("days_to_show_note")}</div>
${this.addSelectField("start_date_mode",this._getTranslation("start_date_mode"),[{value:"default",label:this._getTranslation("start_date_mode_default")},{value:"fixed",label:this._getTranslation("start_date_mode_fixed")},{value:"offset",label:this._getTranslation("start_date_mode_offset")}],!1,String(this._getStartDateMode()),(e=>{this._handleStartDateModeChange(e),this.requestUpdate()}))}
${(()=>{const e=this._getStartDateMode();return"fixed"===e?this.addDateField("start_date_fixed",this._getTranslation("start_date_fixed"),this._getStartDateValue("fixed")):"offset"===e?I`
${this.addTextField("start_date_offset",this._getTranslation("start_date_offset"),"text",this._getStartDateValue("offset"))}
<div class="helper-text">${this._getTranslation("start_date_offset_note")}</div>
`:I``})()}
<!-- Compact Mode -->
<h3>${this._getTranslation("compact_mode")}</h3>
<div class="helper-text">${this._getTranslation("compact_mode_note")}</div>
${o.noLimits?I`
<ha-alert alert-type="warning">
${this._getTranslation("compact_no_limits_warning")}
</ha-alert>
`:null}
${this.addTextField("compact_days_to_show",this._getTranslation("compact_days_to_show"),"number")}
${o.daysInert?I`
<ha-alert alert-type="warning">
${this._getTranslation("compact_days_inert_warning")}
</ha-alert>
`:null}
${this.addTextField("compact_events_to_show",this._getTranslation("compact_events_to_show"),"number")}
<div class="helper-text">${this._getTranslation("compact_events_to_show_note")}</div>
${this.addBooleanField("compact_events_complete_days",this._getTranslation("compact_events_complete_days"))}
<div class="helper-text">
${this._getTranslation("compact_events_complete_days_note")}
</div>
<!-- Event Visibility -->
<h3>${this._getTranslation("event_visibility")}</h3>
${this.addBooleanField("show_past_events",this._getTranslation("show_past_events"))}
${this.addBooleanField("show_empty_days",this._getTranslation("show_empty_days"))}
${this.addBooleanField("filter_duplicates",this._getTranslation("filter_duplicates"))}
<div class="helper-text">${this._getTranslation("filter_duplicates_note")}</div>
<!-- Language & Time Formats -->
<h3>${this._getTranslation("language_time_formats")}</h3>
${this.addSelectField("language_mode",this._getTranslation("language_mode"),[{value:"system",label:this._getTranslation("system")},{value:"custom",label:this._getTranslation("custom")}],!1,void 0!==this.getConfigValue("language")?"custom":"system")}
${(()=>void 0!==this.getConfigValue("language")?I`
${this.addTextField("language",this._getTranslation("language_code"))}
<div class="helper-text">${this._getTranslation("language_code_note")}</div>
`:I``)()}
${this.addSelectField("time_24h",this._getTranslation("time_24h"),[{value:"system",label:this._getTranslation("system")},{value:"true",label:this._getTranslation("24h")},{value:"false",label:this._getTranslation("12h")}])}
`)}
<!-- APPEARANCE & LAYOUT -->
${this.addExpansionPanel(this._getTranslation("appearance_layout"),"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z",I`
<!-- Title Styling -->
<h3>${this._getTranslation("title_styling")}</h3>
${this.addTextField("title",this._getTranslation("title"))}
${this.addTextField("title_font_size",this._getTranslation("title_font_size"))}
${this.addTextField("title_color",this._getTranslation("title_color"))}
<!-- Card Styling -->
<h3>${this._getTranslation("card_styling")}</h3>
${this.addTextField("background_color",this._getTranslation("background_color"))}
${this.addSelectField("height_mode",this._getTranslation("height_mode"),[{value:"auto",label:this._getTranslation("auto")},{value:"fixed",label:this._getTranslation("fixed")},{value:"maximum",label:this._getTranslation("maximum")}],!1,(()=>void 0!==this.getConfigValue("height")&&"auto"!==this.getConfigValue("height")?"fixed":void 0!==this.getConfigValue("max_height")&&"none"!==this.getConfigValue("max_height")?"maximum":"auto")())}
${(()=>void 0!==this.getConfigValue("height")&&"auto"!==this.getConfigValue("height")?I`
${this.addTextField("height",this._getTranslation("height_value"))}
<div class="helper-text">${this._getTranslation("fixed_height_note")}</div>
`:void 0!==this.getConfigValue("max_height")&&"none"!==this.getConfigValue("max_height")?I`
${this.addTextField("max_height",this._getTranslation("height_value"))}
<div class="helper-text">${this._getTranslation("max_height_note")}</div>
`:I``)()}
<!-- Event Styling -->
<h3>${this._getTranslation("event_styling")}</h3>
${this.addTextField("accent_color",this._getTranslation("accent_color"))}
${this.addTextField("event_background_opacity",this._getTranslation("event_background_opacity"),"number")}
${this.addTextField("vertical_line_width",this._getTranslation("vertical_line_width"))}
<!-- Spacing & Alignment -->
<h3>${this._getTranslation("spacing_alignment")}</h3>
${this.addTextField("day_spacing",this._getTranslation("day_spacing"))}
${this.addTextField("event_spacing",this._getTranslation("event_spacing"))}
${this.addTextField("additional_card_spacing",this._getTranslation("additional_card_spacing"))}
`)}
<!-- DATE DISPLAY -->
${this.addExpansionPanel(this._getTranslation("date_display"),"M7,10H12V15H7M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z",I`
<!-- Date Column Formatting -->
<h3>${this._getTranslation("vertical_alignment")}</h3>
${this.addSelectField("date_vertical_alignment",this._getTranslation("date_vertical_alignment"),[{value:"top",label:this._getTranslation("top")},{value:"middle",label:this._getTranslation("middle")},{value:"bottom",label:this._getTranslation("bottom")}])}
<!-- Date Column Formatting -->
<h3>${this._getTranslation("date_formatting")}</h3>
<!-- Weekday Formatting -->
<h5>${this._getTranslation("weekday_font")}</h5>
${this.addTextField("weekday_font_size",this._getTranslation("weekday_font_size"))}
${this.addTextField("weekday_color",this._getTranslation("weekday_color"))}
<!-- Day Formatting -->
<h5>${this._getTranslation("day_font")}</h5>
${this.addTextField("day_font_size",this._getTranslation("day_font_size"))}
${this.addTextField("day_color",this._getTranslation("day_color"))}
<!-- Month Formatting -->
<h5>${this._getTranslation("month_font")}</h5>
${this.addBooleanField("show_month",this._getTranslation("show_month"))}
${this.addTextField("month_font_size",this._getTranslation("month_font_size"))}
${this.addTextField("month_color",this._getTranslation("month_color"))}
<!-- Weekend Highlighting -->
<h5>${this._getTranslation("weekend_highlighting")}</h5>
${this.addTextField("weekend_weekday_color",this._getTranslation("weekend_weekday_color"))}
${this.addTextField("weekend_day_color",this._getTranslation("weekend_day_color"))}
${this.addTextField("weekend_month_color",this._getTranslation("weekend_month_color"))}
<!-- Today Highlighting -->
<h5>${this._getTranslation("today_highlighting")}</h5>
${this.addTextField("today_weekday_color",this._getTranslation("today_weekday_color"))}
${this.addTextField("today_day_color",this._getTranslation("today_day_color"))}
${this.addTextField("today_month_color",this._getTranslation("today_month_color"))}
<!-- Today Indicator -->
<h3>${this._getTranslation("today_indicator")}</h3>
${this.addTodayIndicatorField("today_indicator",this._getTranslation("today_indicator"))}
${(()=>{const e=this.getConfigValue("today_indicator");return e&&"none"!==e?I`
${this.addTextField("today_indicator_position",this._getTranslation("today_indicator_position"))}
${this.addTextField("today_indicator_color",this._getTranslation("today_indicator_color"))}
${this.addTextField("today_indicator_size",this._getTranslation("today_indicator_size"))}
`:I``})()}
<!-- Week Numbers & Separators -->
<h3>${this._getTranslation("week_numbers_separators")}</h3>
<!-- Week Numbers -->
<h5>${this._getTranslation("week_numbers")}</h5>
${this.addSelectField("first_day_of_week",this._getTranslation("first_day_of_week"),[{value:"system",label:this._getTranslation("system")},{value:"sunday",label:this._getTranslation("sunday")},{value:"monday",label:this._getTranslation("monday")}])}
${this.addSelectField("show_week_numbers",this._getTranslation("show_week_numbers"),[{value:"null",label:this._getTranslation("none")},{value:"iso",label:"ISO"},{value:"simple",label:this._getTranslation("simple")}])}
${(()=>{const e=this.getConfigValue("show_week_numbers");return"iso"===e?I`<div class="helper-text">
${this._getTranslation("week_number_note_iso")}
</div>`:"simple"===e?I`<div class="helper-text">
${this._getTranslation("week_number_note_simple")}
</div>`:I``})()}
${(()=>{const e=this.getConfigValue("show_week_numbers");return e&&"null"!==e?I`
${this.addBooleanField("show_current_week_number",this._getTranslation("show_current_week_number"))}
${this.addTextField("week_number_font_size",this._getTranslation("week_number_font_size"))}
${this.addTextField("week_number_color",this._getTranslation("week_number_color"))}
${this.addTextField("week_number_background_color",this._getTranslation("week_number_background_color"))}
`:I``})()}
<!-- Day Separator -->
<h5>${this._getTranslation("day_separator")}</h5>
${this.addBooleanField("day_separator_toggle",this._getTranslation("show_day_separator"),"0px"!==this.getConfigValue("day_separator_width")&&"0"!==this.getConfigValue("day_separator_width"),(e=>{e.target.checked?this.setConfigValue("day_separator_width","1px"):this.setConfigValue("day_separator_width","0px")}),!0)}
${(()=>"0px"!==this.getConfigValue("day_separator_width")&&"0"!==this.getConfigValue("day_separator_width")?I`
${this.addTextField("day_separator_width",this._getTranslation("day_separator_width"))}
${this.addTextField("day_separator_color",this._getTranslation("day_separator_color"))}
`:I``)()}
<!-- Week Separator -->
<h5>${this._getTranslation("week_separator")}</h5>
${this.addBooleanField("week_separator_toggle",this._getTranslation("show_week_separator"),"0px"!==this.getConfigValue("week_separator_width")&&"0"!==this.getConfigValue("week_separator_width"),(e=>{e.target.checked?this.setConfigValue("week_separator_width","1px"):this.setConfigValue("week_separator_width","0px")}),!0)}
${(()=>"0px"!==this.getConfigValue("week_separator_width")&&"0"!==this.getConfigValue("week_separator_width")?I`
${this.addTextField("week_separator_width",this._getTranslation("week_separator_width"))}
${this.addTextField("week_separator_color",this._getTranslation("week_separator_color"))}
`:I``)()}
<!-- Month Separator -->
<h5>${this._getTranslation("month_separator")}</h5>
${this.addBooleanField("month_separator_toggle",this._getTranslation("show_month_separator"),"0px"!==this.getConfigValue("month_separator_width")&&"0"!==this.getConfigValue("month_separator_width"),(e=>{e.target.checked?this.setConfigValue("month_separator_width","1px"):this.setConfigValue("month_separator_width","0px")}),!0)}
${(()=>"0px"!==this.getConfigValue("month_separator_width")&&"0"!==this.getConfigValue("month_separator_width")?I`
${this.addTextField("month_separator_width",this._getTranslation("month_separator_width"))}
${this.addTextField("month_separator_color",this._getTranslation("month_separator_color"))}
`:I``)()}
`)}
<!-- EVENT DISPLAY -->
${this.addExpansionPanel(this._getTranslation("event_display"),"M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M5,13V15H16V13H5M5,9V11H19V9H5Z",I`
<!-- Event Content -->
<h3>${this._getTranslation("event_title")}</h3>
${this.addTextField("event_font_size",this._getTranslation("event_font_size"))}
${this.addTextField("event_color",this._getTranslation("event_color"))}
${this.addTextField("empty_day_color",this._getTranslation("empty_day_color"))}
<!-- Time Display -->
<h3>${this._getTranslation("time")}</h3>
${this.addBooleanField("show_time",this._getTranslation("show_time"))}
${(()=>!0!==this.getConfigValue("show_time")?I``:I`
${this.addBooleanField("show_single_allday_time",this._getTranslation("show_single_allday_time"))}
${this.addBooleanField("show_end_time",this._getTranslation("show_end_time"))}
${this.addBooleanField("time_two_digit_hours",this._getTranslation("time_two_digit_hours"))}
${this.addTextField("time_font_size",this._getTranslation("time_font_size"))}
${this.addTextField("time_color",this._getTranslation("time_color"))}
${this.addTextField("time_icon_size",this._getTranslation("time_icon_size"))}
`)()}
<!-- Location Display -->
<h3>${this._getTranslation("location")}</h3>
${this.addBooleanField("show_location",this._getTranslation("show_location"))}
${(()=>!0!==this.getConfigValue("show_location")?I``:I`
${this.addTextField("location_font_size",this._getTranslation("location_font_size"))}
${this.addTextField("location_color",this._getTranslation("location_color"))}
${this.addTextField("location_icon_size",this._getTranslation("location_icon_size"))}
${this.addSelectField("remove_location_country_selector",this._getTranslation("remove_location_country"),[{value:"false",label:this._getTranslation("none")},{value:"true",label:this._getTranslation("simple")},{value:"custom",label:this._getTranslation("custom")}],!1,(()=>{if(!this._config||!this._config.hasOwnProperty("remove_location_country"))return"false";const e=this._config.remove_location_country;return!0===e||"true"===e?"true":!1===e||"false"===e?"false":"string"==typeof e?"custom":"false"})(),(e=>{"true"===e?this.setConfigValue("remove_location_country",!0):"false"===e?this.setConfigValue("remove_location_country",!1):"custom"===e&&this._config&&"custom"!==this._config.remove_location_country&&"string"!=typeof this._config.remove_location_country&&this.setConfigValue("remove_location_country","USA|United States|Canada")}))}
${(()=>{if(!this._config||!this._config.hasOwnProperty("remove_location_country")||!0===this._config.remove_location_country||!1===this._config.remove_location_country||"true"===this._config.remove_location_country||"false"===this._config.remove_location_country)return I``;const e=this._config.remove_location_country;if("string"==typeof e&&"true"!==e&&"false"!==e){const t=Mn();return mn`
<${t}
label="${this._getTranslation("custom_country_pattern")}"
.value="${e}"
@change="${e=>this.setConfigValue("remove_location_country",e.target.value)}"
></${t}>
<div class="helper-text">
${this._getTranslation("custom_country_pattern_note")}
</div>
`}return I``})()}
`)()}
<!-- Description Display -->
<h3>${this._getTranslation("description")}</h3>
${this.addBooleanField("show_description",this._getTranslation("show_description"))}
${(()=>!0!==this.getConfigValue("show_description")?I``:I`
${this.addTextField("description_font_size",this._getTranslation("description_font_size"))}
${this.addTextField("description_color",this._getTranslation("description_color"))}
${this.addTextField("description_icon_size",this._getTranslation("description_icon_size"))}
${this.addTextField("description_max_lines",this._getTranslation("description_max_lines"))}
`)()}
<!-- Event Icon Alignment -->
<h3>${this._getTranslation("event_icon_alignment")}</h3>
${this.addSelectField("event_icon_vertical_alignment",this._getTranslation("event_icon_vertical_alignment"),[{value:"top",label:this._getTranslation("top")},{value:"middle",label:this._getTranslation("middle")},{value:"bottom",label:this._getTranslation("bottom")}])}
<!-- Progress Indicators -->
<h3>${this._getTranslation("progress_indicators")}</h3>
${this.addBooleanField("show_countdown",this._getTranslation("show_countdown"))}
${(()=>!0!==this.getConfigValue("show_countdown")?I``:I`
${this.addBooleanField("show_countdown_allday",this._getTranslation("show_countdown_allday"))}
`)()}
${this.addBooleanField("show_progress_bar",this._getTranslation("show_progress_bar"))}
${(()=>!0!==this.getConfigValue("show_progress_bar")?I``:I`
${this.addTextField("progress_bar_color",this._getTranslation("progress_bar_color"))}
${this.addTextField("progress_bar_height",this._getTranslation("progress_bar_height"))}
${this.addTextField("progress_bar_width",this._getTranslation("progress_bar_width"))}
`)()}
<!-- Multi-day Event Handling -->
<h3>${this._getTranslation("multiday_event_handling")}</h3>
${this.addBooleanField("split_multiday_events",this._getTranslation("split_multiday_events"))}
`)}
<!-- WEATHER INTEGRATION -->
${this.addExpansionPanel(this._getTranslation("weather_integration"),"M12.74,5.47C15.1,6.5 16.35,9.03 15.92,11.46C17.19,12.56 18,14.19 18,16V16.17C18.31,16.06 18.65,16 19,16A3,3 0 0,1 22,19A3,3 0 0,1 19,22H6A4,4 0 0,1 2,18A4,4 0 0,1 6,14H6.27C5,12.45 4.6,10.24 5.5,8.26C6.72,5.5 9.97,4.24 12.74,5.47M11.93,7.3C10.16,6.5 8.09,7.31 7.31,9.07C6.85,10.09 6.93,11.22 7.41,12.13C8.5,10.83 10.16,10 12,10C12.7,10 13.38,10.12 14,10.34C13.94,9.06 13.18,7.86 11.93,7.3M13.55,3.64C13,3.4 12.45,3.23 11.88,3.12L14.37,1.82L15.27,4.71C14.76,4.29 14.19,3.93 13.55,3.64M6.09,4.44C5.6,4.79 5.17,5.19 4.8,5.63L4.91,2.82L7.87,3.5C7.25,3.71 6.65,4.03 6.09,4.44M18,9.71C17.91,9.12 17.78,8.55 17.59,8L19.97,9.5L17.92,11.73C18.03,11.08 18.05,10.4 18,9.71M3.04,11.3C3.11,11.9 3.24,12.47 3.43,13L1.06,11.5L3.1,9.28C3,9.93 2.97,10.61 3.04,11.3M19,18H16V16A4,4 0 0,0 12,12A4,4 0 0,0 8,16H6A2,2 0 0,0 4,18A2,2 0 0,0 6,20H19A1,1 0 0,0 20,19A1,1 0 0,0 19,18Z",I`
<!-- Weather Entity & Position -->
<h3>${this._getTranslation("weather_entity_position")}</h3>
${this.addEntityPickerField("weather.entity",this._getTranslation("weather_entity"),["weather"])}
<!-- Only show the rest of the weather config when an entity is selected -->
${(()=>this.getConfigValue("weather.entity")?I`
${this.addSelectField("weather.position",this._getTranslation("weather_position"),[{value:"none",label:this._getTranslation("none")},{value:"date",label:this._getTranslation("date")},{value:"event",label:this._getTranslation("event")},{value:"both",label:this._getTranslation("both")}])}
<!-- Conditionally render weather settings based on selected position -->
${(()=>{const e=this.getConfigValue("weather.position","none");return I`
${"date"===e||"both"===e?I`
<!-- Date Column Weather -->
<h3>${this._getTranslation("date_column_weather")}</h3>
${this.addBooleanField("weather.date.show_conditions",this._getTranslation("show_conditions"))}
${this.addBooleanField("weather.date.show_high_temp",this._getTranslation("show_high_temp"))}
${this.addBooleanField("weather.date.show_low_temp",this._getTranslation("show_low_temp"),void 0,void 0,!1,!0===this.getConfigValue("weather.date.show_uv_index"))}
${this.addBooleanField("weather.date.show_uv_index",this._getTranslation("show_uv_index"),void 0,(e=>{e.target.checked&&(this.setConfigValue("weather.date.show_low_temp",!1),this.requestUpdate())}))}
${!0===this.getConfigValue("weather.date.show_uv_index")?this.addTextField("weather.date.uv_index_threshold",this._getTranslation("uv_index_threshold")):W}
${this.addTextField("weather.date.icon_size",this._getTranslation("icon_size"))}
${this.addTextField("weather.date.font_size",this._getTranslation("font_size"))}
${this.addTextField("weather.date.color",this._getTranslation("color"))}
`:I``}
${"event"===e||"both"===e?I`
<!-- Event Row Weather -->
<h3>${this._getTranslation("event_row_weather")}</h3>
${this.addBooleanField("weather.event.show_conditions",this._getTranslation("show_conditions"))}
${this.addBooleanField("weather.event.show_temp",this._getTranslation("show_temp"))}
${this.addBooleanField("weather.event.show_uv_index",this._getTranslation("show_uv_index"))}
${!0===this.getConfigValue("weather.event.show_uv_index")?this.addTextField("weather.event.uv_index_threshold",this._getTranslation("uv_index_threshold")):W}
${this.addBooleanField("weather.event.daily_forecast_fallback",this._getTranslation("daily_forecast_fallback"))}
${this.addTextField("weather.event.icon_size",this._getTranslation("icon_size"))}
${this.addTextField("weather.event.font_size",this._getTranslation("font_size"))}
${this.addTextField("weather.event.color",this._getTranslation("color"))}
`:I``}
`})()}
`:I``)()}
`)}
<!-- INTERACTIONS -->
${this.addExpansionPanel(this._getTranslation("interactions"),"M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M9,12.44V9A2,2 0 0,1 11,7A2,2 0 0,1 13,9V12.44C14.19,11.75 15,10.47 15,9A4,4 0 0,0 11,5A4,4 0 0,0 7,9C7,10.47 7.81,11.75 9,12.44Z",I`
<!-- Tap Action -->
<h3>${this._getTranslation("tap_action")}</h3>
${this._renderActionConfig("tap_action")}
<!-- Hold Action -->
<h3>${this._getTranslation("hold_action")}</h3>
${this._renderActionConfig("hold_action")}
<!-- Refresh Settings -->
<h3>${this._getTranslation("refresh_settings")}</h3>
${this.addTextField("refresh_interval",this._getTranslation("refresh_interval"),"number")}
${this.addBooleanField("refresh_on_navigate",this._getTranslation("refresh_on_navigate"))}
`)}
</div>
`}addTextField(e,t,a,i){let n=this.getConfigValue(e,i);void 0===n&&(n="");const o=Mn();return mn`
<${o}
name="${e}"
label="${null!=t?t:this._getTranslation(e)}"
type="${null!=a?a:"text"}"
.value="${n}"
@input="${this._valueChanged}"
@change="${this._valueChanged}"
></${o}>
`}addEntityPickerField(e,t,a,i){return I`
<ha-entity-picker
.hass="${this.hass}"
name="${e}"
label="${null!=t?t:this._getTranslation(e)}"
.value="${this.getConfigValue(e,i)}"
.includeDomains="${a}"
@value-changed="${t=>{t.stopPropagation(),this.setConfigValue(e,t.detail.value)}}"
></ha-entity-picker>
`}addBooleanField(e,t,a,i,n=!1,o=!1){return I`
<ha-formfield label="${null!=t?t:this._getTranslation(e)}">
<ha-switch
name="${e}"
.checked="${this.getConfigValue(e,a)}"
.disabled="${o}"
@change="${e=>{n||this._valueChanged(e),i&&i(e)}}"
></ha-switch>
</ha-formfield>
`}addSelectField(e,t,a,i,n,o){return I`
<ha-select
name="${e}"
label="${null!=t?t:this._getTranslation(e)}"
.value="${this.getConfigValue(e,n)}"
.clearable="${null!=i&&i}"
.options="${a}"
@selected="${e=>{var t;if(this._selectChanged(e),o){const a=null==(t=e.detail)?void 0:t.value;void 0!==a&&o(a)}}}"
>
</ha-select>
`}addDateField(e,t,a){let i=this.getConfigValue(e,a);return void 0===i&&(i=""),I`
<div class="date-field">
<label class="date-field-label">${null!=t?t:this._getTranslation(e)}</label>
<input type="date" name="${e}" .value="${i}" @change="${this._valueChanged}" />
</div>
`}addExpansionPanel(e,t,a,i){return I`
<ha-expansion-panel .header="${e}" .expanded="${null!=i&&i}" outlined>
<ha-svg-icon slot="leading-icon" .path=${t}></ha-svg-icon>
<div class="panel-content">${a}</div>
</ha-expansion-panel>
`}addButton(e,t,a){return I`
<ha-button @click="${a}">
<ha-icon icon="${t}"></ha-icon>
${e}
</ha-button>
`}addIconPickerField(e,t){return I`
<ha-icon-picker
.hass="${this.hass}"
name="${e}"
label="${null!=t?t:this._getTranslation(e)}"
.value="${this.getConfigValue(e)}"
@value-changed="${t=>{this.setConfigValue(e,t.detail.value)}}"
></ha-icon-picker>
`}addTodayIndicatorField(e,t){const a=[{value:"none",label:this._getTranslation("none")},{value:"dot",label:this._getTranslation("dot")},{value:"pulse",label:this._getTranslation("pulse")},{value:"glow",label:this._getTranslation("glow")},{value:"icon",label:this._getTranslation("icon")},{value:"emoji",label:this._getTranslation("emoji")},{value:"image",label:this._getTranslation("image")}];return this._renderTypeSelector(e,null!=t?t:this._getTranslation(e),a,"indicator")}_renderCalendarEntity(e,t){const a="string"==typeof e,i=a?e:e.entity,n=a||!e.label?`${this._getTranslation("calendar")}: ${i}`:`${this._getTranslation("calendar")}: ${e.label} (${i})`;return I`
${this.addExpansionPanel(n,"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z",I`
<!-- Entity Identification Section -->
<div class="editor-section">
<h4>${this._getTranslation("entity_identification")}</h4>
${this.addEntityPickerField(`entities.${t}${a?"":".entity"}`,this._getTranslation("entity"),["calendar"])}
</div>
${a?I``:I`
<!-- Display Settings Section -->
<div class="editor-section">
<h4>${this._getTranslation("display_settings")}</h4>
<div class="subsection">
<h5>${this._getTranslation("label")}</h5>
${(()=>{const e=`entities.${t}.label`,a=[{value:"none",label:this._getTranslation("none")},{value:"text",label:this._getTranslation("text_emoji")},{value:"icon",label:this._getTranslation("icon")},{value:"image",label:this._getTranslation("image")}];return this._renderTypeSelector(e,this._getTranslation("label_type"),a,"label")})()}
${(()=>{const e=this.getConfigValue(`entities.${t}.label`);return"icon"===this.getValueType(e,"label")?I`
${this.addTextField(`entities.${t}.label_icon_color`,this._getTranslation("label_icon_color"))}
<div class="helper-text">
${this._getTranslation("label_icon_color_note")}
</div>
`:W})()}
<div class="helper-text">${this._getTranslation("label_note")}</div>
</div>
<div class="subsection">
<h5>${this._getTranslation("colors")}</h5>
${this.addTextField(`entities.${t}.color`,this._getTranslation("event_color"))}
<div class="helper-text">${this._getTranslation("entity_color_note")}</div>
${this.addTextField(`entities.${t}.accent_color`,this._getTranslation("accent_color"))}
<div class="helper-text">
${this._getTranslation("entity_accent_color_note")}
</div>
</div>
</div>
<!-- Event Filtering Section -->
<div class="editor-section">
<h4>${this._getTranslation("event_filtering")}</h4>
${this.addTextField(`entities.${t}.blocklist`,this._getTranslation("blocklist"))}
<div class="helper-text">${this._getTranslation("blocklist_note")}</div>
${this.addTextField(`entities.${t}.allowlist`,this._getTranslation("allowlist"))}
<div class="helper-text">${this._getTranslation("allowlist_note")}</div>
</div>
<!-- Entity Overrides Section -->
<div class="editor-section">
<h4>${this._getTranslation("entity_overrides")}</h4>
<div class="helper-text section-note">
${this._getTranslation("entity_overrides_note")}
</div>
${this.addTextField(`entities.${t}.compact_events_to_show`,this._getTranslation("compact_events_to_show"),"number")}
<div class="helper-text">
${this._getTranslation("entity_compact_events_note")}
</div>
${this.addBooleanField(`entities.${t}.show_time`,this._getTranslation("show_time"))}
<div class="helper-text">${this._getTranslation("entity_show_time_note")}</div>
${this.addBooleanField(`entities.${t}.show_location`,this._getTranslation("show_location"))}
<div class="helper-text">
${this._getTranslation("entity_show_location_note")}
</div>
${this.addBooleanField(`entities.${t}.show_description`,this._getTranslation("show_description"))}
<div class="helper-text">
${this._getTranslation("entity_show_description_note")}
</div>
${this.addBooleanField(`entities.${t}.split_multiday_events`,this._getTranslation("split_multiday_events"))}
<div class="helper-text">
${this._getTranslation("entity_split_multiday_note")}
</div>
</div>
`}
<!-- Entity Action Buttons -->
<div class="editor-section button-section">
${this.addButton(this._getTranslation("remove"),"mdi:trash-can",(()=>this._removeCalendarEntity(t)))}
${a?I`
${this.addButton(this._getTranslation("convert_to_advanced"),"mdi:code-json",(()=>this._convertEntityToObject(t)))}
`:I``}
</div>
`)}
`}_renderCalendarEntities(){var e;const t=(null==(e=this._config)?void 0:e.entities)||[];return I`
${t.map(((e,t)=>this._renderCalendarEntity(e,t)))}
${this.addButton(this._getTranslation("add_calendar"),"mdi:plus",(()=>this._addCalendarEntity()))}
`}_addCalendarEntity(){var e;const t=[...(null==(e=this._config)?void 0:e.entities)||[]];t.push({entity:"calendar.calendar"}),this.setConfigValue("entities",t)}_removeCalendarEntity(e){var t;const a=[...(null==(t=this._config)?void 0:t.entities)||[]];a.splice(e,1),this.setConfigValue("entities",a)}_convertEntityToObject(e){var t;const a=[...(null==(t=this._config)?void 0:t.entities)||[]],i=a[e];a[e]={entity:i},this.setConfigValue("entities",a)}_renderActionConfig(e){const t=this.getConfigValue(e,{action:"none"}),a=t.action||"none",i=Mn();return I`
<div class="action-config">
<ha-select
name="${e}.action"
.value="${a}"
.options="${[{value:"none",label:this._getTranslation("none")},{value:"expand",label:this._getTranslation("expand")},{value:"more-info",label:this._getTranslation("more_info")},{value:"navigate",label:this._getTranslation("navigate")},{value:"url",label:this._getTranslation("url")},{value:"call-service",label:this._getTranslation("call_service")}]}"
@selected="${this._selectChanged}"
>
</ha-select>
${"navigate"===a?mn`
<${i}
name="${e}.navigation_path"
.value="${t.navigation_path||""}"
label="${this._getTranslation("navigation_path")}"
@change="${this._valueChanged}"
></${i}>
`:I``}
${"url"===a?mn`
<${i}
name="${e}.url_path"
.value="${t.url_path||""}"
label="${this._getTranslation("url_path")}"
@change="${this._valueChanged}"
></${i}>
`:I``}
${"call-service"===a?mn`
<${i}
name="${e}.service"
.value="${t.service||""}"
label="${this._getTranslation("service")}"
@change="${this._valueChanged}"
></${i}>
<${i}
name="${e}.service_data"
.value="${t.service_data?JSON.stringify(t.service_data):"{}"}"
label="${this._getTranslation("service_data")}"
@change="${this._serviceDataChanged}"
></${i}>
`:I``}
</div>
`}getValueType(e,t="label"){return e&&!1!==e?!0===e?"indicator"===t?"dot":"none":"string"==typeof e?ft(e)?"icon":e.startsWith("/")||/\.(jpg|jpeg|png|gif|svg|webp)$/i.test(e)?"image":"indicator"===t?["dot","pulse","glow"].includes(e)?e:"emoji":"text":"none":"none"}_handleValueTypeChange(e,t,a,i="label"){var n;e.stopPropagation();const o=null==(n=e.detail)?void 0:n.value;let r;"none"===o?r="indicator"!==i&&void 0:"icon"===o?r="string"==typeof a&&ft(a)?a:"indicator"===i?"mdi:star":"mdi:calendar":"image"===o?r="string"==typeof a&&(a.startsWith("/")||/\.(jpg|jpeg|png|gif|svg|webp)$/i.test(a))?a:"indicator"===i?"/local/image.jpg":"/local/calendar.jpg":"indicator"===i?["dot","pulse","glow"].includes(o)?r=o:"emoji"===o&&(r="string"!=typeof a||a.startsWith("mdi:")||/\.(jpg|jpeg|png|gif|svg|webp)$/i.test(a)||/^\/local\//i.test(a)||["dot","pulse","glow"].includes(a)?"🗓️":a):"text"===o&&(r="string"==typeof a&&"text"===this.getValueType(a,"label")?a:"📅"),this.setConfigValue(t,r)}_renderTypeSelector(e,t,a,i="label"){const n=this.getConfigValue(e),o=this.getValueType(n,i);return I`
<div class="type-selector-field">
<ha-select
name="${e}_type"
label="${t}"
.value="${o}"
.options="${a}"
@selected="${t=>this._handleValueTypeChange(t,e,n,i)}"
>
</ha-select>
${this._renderTypeField(o,e,n,i)}
</div>
`}_renderTypeField(e,t,a,i){if("icon"===e)return I`
<div class="icon-picker-wrapper">
<ha-icon-picker
.hass="${this.hass}"
.value="${a}"
@value-changed="${e=>{const a=e.detail.value;a?this.setConfigValue(t,a):this.setConfigValue(t,"indicator"===i?"dot":"")}}"
></ha-icon-picker>
</div>
`;if("emoji"===e||"text"===e){const i="emoji"===e?this._getTranslation("emoji_value"):this._getTranslation("text_value"),n="emoji"===e?this._getTranslation("emoji_indicator_note"):this._getTranslation("text_label_note"),o=Mn();return mn`
<${o}
name="${t}"
label="${i}"
.value="${a}"
@change="${this._valueChanged}"
></${o}>
<div class="helper-text">${n}</div>
`}if("image"===e){const e=Mn();return mn`
<${e}
name="${t}"
label="${this._getTranslation("image_path")}"
.value="${a}"
@change="${this._valueChanged}"
></${e}>
<div class="helper-text">${this._getTranslation("image_indicator_note")}</div>
`}return I``}}wn([de({attribute:!1})],Dn.prototype,"hass"),wn([de({attribute:!1})],Dn.prototype,"_config");var jn=Object.defineProperty,Sn=Object.defineProperties,$n=Object.getOwnPropertyDescriptor,xn=Object.getOwnPropertyDescriptors,Yn=Object.getOwnPropertySymbols,Ln=Object.prototype.hasOwnProperty,En=Object.prototype.propertyIsEnumerable,An=(e,t,a)=>t in e?jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,Cn=(e,t)=>{for(var a in t||(t={}))Ln.call(t,a)&&An(e,a,t[a]);if(Yn)for(var a of Yn(t))En.call(t,a)&&An(e,a,t[a]);return e},Hn=(e,t)=>Sn(e,xn(t)),Pn=(e,t,a,i)=>{for(var n,o=i>1?void 0:i?$n(t,a):t,r=e.length-1;r>=0;r--)(n=e[r])&&(o=(i?n(t,a,o):n(o))||o);return i&&o&&jn(t,a,o),o};let Vn=class extends oe{constructor(){super(),this.config=Cn({},Ke),this.events=[],this.isInitialLoad=!0,this.isLoading=!1,this.isExpanded=!1,this.weatherForecasts={daily:{},hourly:{}},this._instanceId=kt(),this._language="",this._lastUpdateTime=0,this._weatherUnsubscribers=[],this._weatherSetupVersion=0,this._weatherSetupPending=!1,this._activePointerId=null,this._holdTriggered=!1,this._holdTimer=null,this._holdIndicator=null,this._handleVisibilityChange=()=>{if("visible"===document.visibilityState){Date.now()-this._lastUpdateTime>ke&&(Ie("Visibility changed to visible, updating events"),this.updateEvents())}},this._instanceId=kt(),Pe(_e)}static getConfigElement(){return document.createElement("calendar-card-pro-editor")}get safeHass(){return this.hass||null}get effectiveLanguage(){return!this._language&&this.hass&&(this._language=ht(this.config.language,this.hass.locale)),this._language||"en"}get groupedEvents(){return hi(this.events,this.config,this.isExpanded,this.effectiveLanguage)}static get styles(){return xi}connectedCallback(){super.connectedCallback(),Ie("Component connected"),this.startRefreshTimer(),this.updateEvents(),this._scheduleWeatherSetup(),document.addEventListener("visibilitychange",this._handleVisibilityChange)}disconnectedCallback(){super.disconnectedCallback(),this._weatherSetupVersion++,this._weatherSetupPending=!1,this._cleanupWeatherSubscriptions(),this._refreshTimerId&&clearTimeout(this._refreshTimerId),this._initialLoadRetryId&&(clearTimeout(this._initialLoadRetryId),this._initialLoadRetryId=void 0),this._holdTimer&&(clearTimeout(this._holdTimer),this._holdTimer=null),this._holdIndicator&&(Yi(this._holdIndicator),this._holdIndicator=null),document.removeEventListener("visibilitychange",this._handleVisibilityChange),Ie("Component disconnected")}updated(e){var t,a,i,n,o,r,s,l,d;e.has("hass")&&this.hass&&!e.get("hass")&&this.updateEvents(!0),(e.has("hass")&&(null==(t=this.hass)?void 0:t.locale)||e.has("config")&&(null==(a=e.get("config"))?void 0:a.language)!==this.config.language)&&(this._language=ht(this.config.language,null==(i=this.hass)?void 0:i.locale));const _=e.has("hass")&&this.hass&&!e.get("hass"),c=e.get("config"),u=e.has("config")&&((null==(o=null==(n=this.config)?void 0:n.weather)?void 0:o.entity)!==(null==(r=null==c?void 0:c.weather)?void 0:r.entity)||(null==(l=null==(s=this.config)?void 0:s.weather)?void 0:l.position)!==(null==(d=null==c?void 0:c.weather)?void 0:d.position));(_||u)&&this._scheduleWeatherSetup()}getCustomStyles(){return function(e){var t,a,i,n,o,r,s,l,d,_,c,u;const m={"--calendar-card-background-color":e.background_color,"--calendar-card-font-size-weekday":e.weekday_font_size,"--calendar-card-font-size-day":e.day_font_size,"--calendar-card-font-size-month":e.month_font_size,"--calendar-card-font-size-event":e.event_font_size,"--calendar-card-font-size-time":e.time_font_size,"--calendar-card-font-size-location":e.location_font_size,"--calendar-card-font-size-description":e.description_font_size,"--calendar-card-color-weekday":e.weekday_color,"--calendar-card-color-day":e.day_color,"--calendar-card-color-month":e.month_color,"--calendar-card-color-event":e.event_color,"--calendar-card-color-time":e.time_color,"--calendar-card-color-location":e.location_color,"--calendar-card-color-description":e.description_color,"--calendar-card-line-color-vertical":e.accent_color,"--calendar-card-line-width-vertical":e.vertical_line_width,"--calendar-card-day-spacing":e.day_spacing,"--calendar-card-event-spacing":e.event_spacing,"--calendar-card-spacing-additional":e.additional_card_spacing,"--calendar-card-height":e.height||"auto","--calendar-card-max-height":e.max_height,"--calendar-card-progress-bar-color":e.progress_bar_color,"--calendar-card-progress-bar-height":e.progress_bar_height,"--calendar-card-progress-bar-width":e.progress_bar_width,"--calendar-card-icon-size-time":e.time_icon_size||"14px","--calendar-card-icon-size-location":e.location_icon_size||"14px","--calendar-card-icon-size-description":e.description_icon_size||"14px","--calendar-card-description-max-lines":e.description_max_lines>0?String(e.description_max_lines):"none","--calendar-card-date-column-width":1.75*parseFloat(e.day_font_size)+"px","--calendar-card-date-column-vertical-alignment":e.date_vertical_alignment,"--calendar-card-event-icon-vertical-alignment":"top"===e.event_icon_vertical_alignment?"flex-start":"bottom"===e.event_icon_vertical_alignment?"flex-end":"center","--calendar-card-event-border-radius":"calc(var(--ha-card-border-radius, 10px) / 2)","--ha-ripple-hover-opacity":"0.04","--ha-ripple-hover-color":e.accent_color,"--ha-ripple-pressed-opacity":"0.12","--ha-ripple-pressed-color":e.accent_color,"--calendar-card-today-indicator-color":e.today_indicator_color,"--calendar-card-today-indicator-size":e.today_indicator_size,"--calendar-card-week-number-font-size":e.week_number_font_size,"--calendar-card-week-number-color":e.week_number_color,"--calendar-card-week-number-bg-color":e.week_number_background_color,"--calendar-card-empty-day-color":e.empty_day_color===Ke.empty_day_color?"color-mix(in srgb, var(--primary-text-color) 60%, transparent)":e.empty_day_color,"--calendar-card-weather-date-icon-size":(null==(a=null==(t=e.weather)?void 0:t.date)?void 0:a.icon_size)||"14px","--calendar-card-weather-date-font-size":(null==(n=null==(i=e.weather)?void 0:i.date)?void 0:n.font_size)||"12px","--calendar-card-weather-date-color":(null==(r=null==(o=e.weather)?void 0:o.date)?void 0:r.color)||"var(--primary-text-color)","--calendar-card-weather-event-icon-size":(null==(l=null==(s=e.weather)?void 0:s.event)?void 0:l.icon_size)||"14px","--calendar-card-weather-event-font-size":(null==(_=null==(d=e.weather)?void 0:d.event)?void 0:_.font_size)||"12px","--calendar-card-weather-event-color":(null==(u=null==(c=e.weather)?void 0:c.event)?void 0:u.color)||"var(--primary-text-color)"};return e.title_font_size&&(m["--calendar-card-font-size-title"]=e.title_font_size),e.title_color&&(m["--calendar-card-color-title"]=e.title_color),m}(this.config)}startRefreshTimer(){this._refreshTimerId&&clearTimeout(this._refreshTimerId);const e=this.config.refresh_interval||ce,t=60*e*1e3;this._refreshTimerId=window.setTimeout((()=>{this.updateEvents(),this.startRefreshTimer()}),t),Ie(`Scheduled next refresh in ${e} minutes`)}_scheduleWeatherSetup(){this._weatherSetupPending||(this._weatherSetupPending=!0,queueMicrotask((()=>{this._weatherSetupPending=!1,this.isConnected&&this._setupWeatherSubscriptions()})))}async _setupWeatherSubscriptions(){var e,t;const a=++this._weatherSetupVersion;if(this._cleanupWeatherSubscriptions(),!(null==(t=null==(e=this.config)?void 0:e.weather)?void 0:t.entity)||!this.hass)return;const i=function(e){if(!e||!e.entity)return[];return"date"===(e.position||"date")?["daily"]:["daily","hourly"]}(this.config.weather);for(const e of i){if(this._weatherSetupVersion!==a)return;const t=await Qi(this.hass,this.config,e,(t=>{this.weatherForecasts=Hn(Cn({},this.weatherForecasts),{[e]:t}),this.requestUpdate()}));if(this._weatherSetupVersion!==a)return void(t&&t());t&&this._weatherUnsubscribers.push(t)}}_cleanupWeatherSubscriptions(){const e=this._weatherUnsubscribers.length;e>0&&Ie(`Unsubscribing ${e} weather forecast subscription(s)`),this._weatherUnsubscribers.forEach((e=>{try{"function"==typeof e&&e()}catch(e){Fe("Failed to unsubscribe weather forecast",e)}})),this._weatherUnsubscribers=[]}_handlePointerDown(e){var t;this._activePointerId=e.pointerId,this._holdTriggered=!1,"none"!==(null==(t=this.config.hold_action)?void 0:t.action)&&(this._holdTimer&&clearTimeout(this._holdTimer),this._holdTimer=window.setTimeout((()=>{this._activePointerId===e.pointerId&&(this._holdTriggered=!0,this._holdIndicator=function(e,t){const a=document.createElement("div");a.style.position="absolute",a.style.pointerEvents="none",a.style.borderRadius="50%",a.style.backgroundColor=t.accent_color,a.style.opacity=`${be}`,a.style.transform="translate(-50%, -50%) scale(0)",a.style.transition=`transform ${ve}ms ease-out`,a.style.left=e.pageX+"px",a.style.top=e.pageY+"px";const i="touch"===e.pointerType?Me.TOUCH_SIZE:Me.POINTER_SIZE;return a.style.width=`${i}px`,a.style.height=`${i}px`,document.body.appendChild(a),setTimeout((()=>{a.style.transform="translate(-50%, -50%) scale(1)"}),10),Ie("Created hold indicator"),a}(e,this.config))}),ye))}_handlePointerUp(e){e.pointerId===this._activePointerId&&(this._holdTimer&&(clearTimeout(this._holdTimer),this._holdTimer=null),this._holdTriggered&&this.config.hold_action?(Ie("Executing hold action"),$i(this,this.config,"hold",(()=>this.toggleExpanded()))):!this._holdTriggered&&this.config.tap_action&&(Ie("Executing tap action"),$i(this,this.config,"tap",(()=>this.toggleExpanded()))),this._activePointerId=null,this._holdTriggered=!1,this._holdIndicator&&(Yi(this._holdIndicator),this._holdIndicator=null))}_handlePointerCancel(){this._holdTimer&&(clearTimeout(this._holdTimer),this._holdTimer=null),this._activePointerId=null,this._holdTriggered=!1,this._holdIndicator&&(Yi(this._holdIndicator),this._holdIndicator=null)}_handleKeyDown(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),$i(this,this.config,"tap",(()=>this.toggleExpanded())))}setConfig(e){const t=this.config;let a=Cn(Cn({},Ke),e);var i;this.config=a,this.config.entities=(i=this.config.entities,Array.isArray(i)?i.map((e=>"string"==typeof e?{entity:e,color:void 0,accent_color:void 0,label_icon_color:void 0}:"object"==typeof e&&e.entity?{entity:e.entity,label:e.label,color:e.color||void 0,accent_color:e.accent_color||void 0,label_icon_color:e.label_icon_color||void 0,show_time:e.show_time,show_location:e.show_location,show_description:e.show_description,compact_events_to_show:Re(e.compact_events_to_show,0),blocklist:e.blocklist,allowlist:e.allowlist,split_multiday_events:e.split_multiday_events}:null)).filter(Boolean):[]),function(e){var t,a,i;e.days_to_show=null!=(t=Re(e.days_to_show,1))?t:Ke.days_to_show,e.refresh_interval=null!=(a=Re(e.refresh_interval,1))?a:Ke.refresh_interval,e.event_background_opacity=null!=(i=Re(e.event_background_opacity,0))?i:Ke.event_background_opacity,e.compact_days_to_show=Re(e.compact_days_to_show,1),e.compact_events_to_show=Re(e.compact_events_to_show,0)}(this.config),this._instanceId=wt(this.config.entities,this.config.days_to_show,this.config.show_past_events,this.config.start_date);const n=function(e,t){if(!e||0===Object.keys(e).length)return!0;const a=(e.entities||[]).map((e=>"string"==typeof e?e:e.entity)).sort().join(","),i=(t.entities||[]).map((e=>"string"==typeof e?e:e.entity)).sort().join(","),n=(null==e?void 0:e.refresh_interval)!==(null==t?void 0:t.refresh_interval),o=a!==i||e.days_to_show!==t.days_to_show||e.start_date!==t.start_date||e.show_past_events!==t.show_past_events||e.filter_duplicates!==t.filter_duplicates;return(o||n)&&Ie("Configuration change requires data refresh"),o||n}(t,this.config);n&&(Ie("Configuration changed, refreshing data"),this.updateEvents(!0)),this.startRefreshTimer()}async updateEvents(e=!1){if(Ie(`Updating events (force=${e})`),!this.safeHass||!this.config.entities.length)return this.isLoading=!1,void(this.safeHass||(this._initialLoadRetryId&&clearTimeout(this._initialLoadRetryId),this._initialLoadRetryId=window.setTimeout((()=>{this.updateEvents(!0)}),1500)));try{this.isLoading=!0,await this.updateComplete;const t=await mi(this.safeHass,this.config,this._instanceId,e);this.isLoading=!1,this.isInitialLoad=!1,await this.updateComplete,this.events=[...t],this._lastUpdateTime=Date.now(),Oe("Event update completed successfully")}catch(e){Ve("Failed to update events:",e),this.isLoading=!1,this.isInitialLoad=!1}}hasCompactModeLimits(){var e;const t=e=>"number"==typeof e&&Number.isFinite(e);return!(!t(this.config.compact_events_to_show)&&!t(this.config.compact_days_to_show))||(null!=(e=this.config.entities)?e:[]).some((e=>"object"==typeof e&&null!==e&&t(e.compact_events_to_show)))}toggleExpanded(){this.hasCompactModeLimits()&&(this.isExpanded=!this.isExpanded)}handleAction(e){const t=e===this.config.hold_action?"hold":"tap";$i(this,this.config,t,(()=>this.toggleExpanded()))}render(){const e=this.getCustomStyles(),t={keyDown:e=>this._handleKeyDown(e),pointerDown:e=>this._handlePointerDown(e),pointerUp:e=>this._handlePointerUp(e),pointerCancel:()=>this._handlePointerCancel(),pointerLeave:()=>this._handlePointerCancel()};let a;if(this.isInitialLoad)a=Xi("loading",this.effectiveLanguage);else if(this.safeHass&&this.config.entities.length)if(0===this.events.length){a=ln(hi([],this.config,this.isExpanded,this.effectiveLanguage),this.config,this.effectiveLanguage,this.weatherForecasts,this.safeHass)}else a=ln(this.groupedEvents,this.config,this.effectiveLanguage,this.weatherForecasts,this.safeHass);else a=Xi("error",this.effectiveLanguage);return function(e,t,a,i,n=!1,o=!1){return I`
<ha-card
class="calendar-card-pro ${n?"max-height-set":""}"
style=${Fi(e)}
tabindex="0"
aria-busy=${o?"true":"false"}
@keydown=${i.keyDown}
@pointerdown=${i.pointerDown}
@pointerup=${i.pointerUp}
@pointercancel=${i.pointerCancel}
@pointerleave=${i.pointerLeave}
>
<ha-ripple></ha-ripple>
${o?I`
<div class="loading-indicator" role="status" aria-live="polite" title="Loading">
<div class="spinner" aria-hidden="true"></div>
</div>
`:W}
<!-- Title is always rendered with the same structure, even if empty -->
<div class="header-container">
${t?I`<h1 class="card-header">${t}</h1>`:I`<div class="card-header-placeholder"></div>`}
</div>
<!-- Content container is always present -->
<div class="content-container">${a}</div>
</ha-card>
`}(e,this.config.title,a,t,!1,this.isLoading)}};Vn.getStubConfig=Ue,Pn([de({attribute:!1})],Vn.prototype,"hass",2),Pn([de({attribute:!1})],Vn.prototype,"config",2),Pn([de({attribute:!1})],Vn.prototype,"events",2),Pn([de({attribute:!1})],Vn.prototype,"isInitialLoad",2),Pn([de({attribute:!1})],Vn.prototype,"isLoading",2),Pn([de({attribute:!1})],Vn.prototype,"isExpanded",2),Pn([de({attribute:!1})],Vn.prototype,"weatherForecasts",2),Vn=Pn([(e=>(t,a)=>{void 0!==a?a.addInitializer((()=>{customElements.define(e,t)})):customElements.define(e,t)})("calendar-card-pro")],Vn),customElements.define("calendar-card-pro-editor",Dn);const Fn=customElements.get("calendar-card-pro");Fn&&(Fn.getStubConfig=Ue),window.customCards=window.customCards||[],window.customCards.push({type:"calendar-card-pro",name:"Calendar Card Pro",preview:!0,description:"A calendar card that supports multiple calendars with individual styling.",documentationURL:"https://github.com/alexpfau/calendar-card-pro"});