Files
Home-Assistant/www/community/calendar-card-pro/calendar-card-pro.js
T
2026-06-11 11:50:50 -04:00

1456 lines
282 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,h=globalThis,m=h.trustedTypes,g=m?m.emptyScript:"",p=h.reactiveElementPolyfillSupport,f=(e,t)=>e,y={toAttribute(e,t){switch(t){case Boolean:e=e?g: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}},v=(e,t)=>!s(e,t),k={attribute:!0,type:String,converter:y,reflect:!1,useDefault:!1,hasChanged:v};Symbol.metadata??=Symbol("metadata"),h.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(f("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(f("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(f("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:y).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:y;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??v)(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[f("elementProperties")]=new Map,w[f("finalized")]=new Map,p?.({ReactiveElement:w}),(h.reactiveElementVersions??=[]).push("2.1.2");const b=globalThis,M=b.trustedTypes,T=M?M.createPolicy("lit-html",{createHTML:e=>e}):void 0,z="$lit$",D=`lit$${Math.random().toFixed(9).slice(2)}$`,$="?"+D,x=`<${$}>`,S=document,j=()=>S.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,H=/-->/g,C=/>/g,P=RegExp(`>|${E}(?:([^\\s"'>=/]+)(${E}*=${E}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),V=/'/g,O=/"/g,F=/^(?: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,U=S.createTreeWalker(S,129);function R(e,t){if(!L(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==T?T.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=H:void 0!==l[1]?r=C:void 0!==l[2]?(F.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]?O:V):r===O||r===V?r=P:r===H||r===C?r=A:(r=P,n=void 0);const c=r===P&&e[t+1].startsWith("/>")?" ":"";o+=r===A?a+x:d>=0?(i.push(s),a.slice(0,d)+z+a.slice(d)+D+c):a+D+(-2===d?t:c)}return[R(e,o+(e[a]||"<?>")+(2===t?"</svg>":3===t?"</math>":"")),i]})(e,t);if(this.el=B.createElement(l,a),U.currentNode=this.el.content,2===t||3===t){const e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(i=U.nextNode())&&s.length<r;){if(1===i.nodeType){if(i.hasAttributes())for(const e of i.getAttributeNames())if(e.endsWith(z)){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(F.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],j()),U.nextNode(),s.push({type:2,index:++n});i.append(e[t],j())}}}else if(8===i.nodeType)if(i.data===$)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=S.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??S).importNode(t,!0);U.currentNode=i;let n=U.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=U.nextNode(),o++)}return U.currentNode=S,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(S.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(R(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(j()),this.O(j()),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(j(),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:y,reflect:!1,hasChanged:v},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.2.0",ce=30,ue=5,he=15,me="cache_data_",ge=0,pe="📅 Calendar Card Pro",fe=500,ye=200,ve=300,ke=3e5,we={WEEK:1,MONTH:1.5},be=.2,Me={TOUCH_SIZE:100,POINTER_SIZE:50},Te=["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 ze=Object.defineProperty,De=Object.defineProperties,$e=Object.getOwnPropertyDescriptors,xe=Object.getOwnPropertySymbols,Se=Object.prototype.hasOwnProperty,je=Object.prototype.propertyIsEnumerable,Ye=(e,t,a)=>t in e?ze(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,Le=(e,t)=>{for(var a in t||(t={}))Se.call(t,a)&&Ye(e,a,t[a]);if(xe)for(var a of xe(t))je.call(t,a)&&Ye(e,a,t[a]);return e},Ee=(e,t)=>De(e,$e(t));let Ae=!1,He=ge;const Ce={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${pe}%cv${e} `,Ce.title,Ce.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}`,Ce.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}`,Ce.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}:`,Ce.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 Oe(e,...t){Ne(1,e,Ce.warn,console.warn,...t)}function Fe(e,...t){Ne(2,e,Ce.prefix,console.log,...t)}function Ie(e,...t){Ne(3,e,Ce.prefix,console.log,...t)}function Ne(e,t,a,i,...n){if(He<e)return;const[o,r]=We(t,a);n.length>0?i(o,r,...n):i(o,r)}function We(e,t){return[`%c[${pe}] ${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_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,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 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 Re={daysOfWeek:["нед.","пон.","вт.","ср.","четв.","пет.","съб."],fullDaysOfWeek:["неделя","понеделник","вторник","сряда","четвъртък","петък","събота"],months:["ян.","фев.","мар","апр.","май","юни","юли","авг.","септ.","окт.","ноем.","дек."],allDay:"цял ден",multiDay:"до",at:"в",endsToday:"приключва днес",endsTomorrow:"приключва утре",noEvents:"Няма планирани събития",loading:"Зареждане на календара със събития...",error:"Грешка: календарът не е намерен или не е конфигуриран правилно"},Be={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"},Je={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"},Ze={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"},Ge={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_days_to_show:"Anzahl kompakter Tage anzeigen",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",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_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",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:"Σφάλμα: Η οντότητα ημερολογίου δεν βρέθηκε ή δεν έχει ρυθμιστεί σωστά"},Qe={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_days_to_show:"Compact days to show",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",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_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",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…"}},Xe={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"},et={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.",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_days_to_show:"Kompaktrežiimis kuvatavad päevad",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",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_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",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…"}},tt={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"},at={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"},it={daysOfWeek:["א'","ב'","ג'","ד'","ה'","ו'","ש'"],fullDaysOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],months:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],allDay:"כל-היום",multiDay:"עד",endsToday:"מסתיים היום",endsTomorrow:"מסתיים מחר",at:"בשעה",noEvents:"אין אירועים קרובים",loading:"טוען אירועי לוח שנה...",error:"שגיאה: ישות לוח השנה לא נמצאה או לא מוגדרת כראוי"},nt={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"},ot={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"},rt={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"},st={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:"a",endsToday:"termina oggi",endsTomorrow:"termina domani",noEvents:"Nessun evento programmato",loading:"Sto caricando il calendario degli eventi...",error:"Errore: Entità Calendario non trovata o non configurata correttamente"};const lt={bg:Re,cs:Be,ca:Je,da:Ze,de:Ge,el:qe,en:Qe,es:Xe,et:et,fi:tt,fr:at,he:it,hr:nt,hu:ot,is:rt,it:st,lt:{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.",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_days_to_show:"Dienų rodyti suglaudintame režime",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",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_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",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ą…"}},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.",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_days_to_show:"Kompakte dager å vise",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",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_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",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.",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_days_to_show:"Dni do wyświetlenia w trybie kompaktowym",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",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_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",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.",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_days_to_show:"Kompaktné dni, ktoré sa zobrazia",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",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_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",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.",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_days_to_show:"Kompakta dagar att visa",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",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_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",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:"錯誤:找不到日曆實體或配置不正確"}},dt="en",_t=new Map;function ct(e,t){const a=`${e||""}:${(null==t?void 0:t.language)||""}`;if(_t.has(a))return _t.get(a);let i;if(e&&""!==e.trim()){const t=e.toLowerCase();if(lt[t])return i=t,_t.set(a,i),i}if(null==t?void 0:t.language){const e=t.language.toLowerCase();if(lt[e])return i=e,_t.set(a,i),i;const n=e.split(/[-_]/)[0];if(n!==e&&lt[n])return i=n,_t.set(a,i),i}return i=dt,_t.set(a,i),i}function ut(e){const t=(null==e?void 0:e.toLowerCase())||dt;return lt[t]||lt[dt]}function ht(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"}function mt(e){return/^[a-z][a-z0-9]*:[a-z0-9]/i.test(e)&&!e.startsWith("http")}function gt(){return Math.random().toString(36).substring(2,15)}function pt(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 ft(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 yt(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=yt(n,t[i]);Object.keys(e).length>0&&(a[i]=e)}}return a}function vt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var kt,wt={exports:{}};function bt(){return kt||(kt=1,wt.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",h="Invalid Date",m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|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,p={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])+"]"}},f=function(e,t,a){var i=String(e);return!i||i.length>=t?e:""+Array(t+1-i.length).join(a)+e},y={s:f,z:function(e){var t=-e.utcOffset(),a=Math.abs(t),i=Math.floor(a/60),n=a%60;return(t<=0?"+":"-")+f(i,2,"0")+":"+f(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}},v="en",k={};k[v]=p;var w="$isDayjsObject",b=function(e){return e instanceof D||!(!e||!e[w])},M=function e(t,a,i){var n;if(!t)return v;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&&(v=n),n||!i&&v},T=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)},z=y;z.l=M,z.i=b,z.w=function(e,t){return T(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var D=function(){function p(e){this.$L=M(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[w]=!0}var f=p.prototype;return f.parse=function(e){this.$d=function(e){var t=e.date,a=e.utc;if(null===t)return new Date(NaN);if(z.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(m);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()},f.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()},f.$utils=function(){return z},f.isValid=function(){return!(this.$d.toString()===h)},f.isSame=function(e,t){var a=T(e);return this.startOf(t)<=a&&a<=this.endOf(t)},f.isAfter=function(e,t){return T(e)<this.startOf(t)},f.isBefore=function(e,t){return this.endOf(t)<T(e)},f.$g=function(e,t,a){return z.u(e)?this[t]:this.set(a,e)},f.unix=function(){return Math.floor(this.valueOf()/1e3)},f.valueOf=function(){return this.$d.getTime()},f.startOf=function(e,t){var a=this,i=!!z.u(t)||t,_=z.p(e),h=function(e,t){var n=z.w(a.$u?Date.UTC(a.$y,t,e):new Date(a.$y,t,e),a);return i?n:n.endOf(s)},m=function(e,t){return z.w(a.toDate()[e].apply(a.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice(t)),a)},g=this.$W,p=this.$M,f=this.$D,y="set"+(this.$u?"UTC":"");switch(_){case c:return i?h(1,0):h(31,11);case d:return i?h(1,p):h(0,p+1);case l:var v=this.$locale().weekStart||0,k=(g<v?g+7:g)-v;return h(i?f-k:f+(6-k),p);case s:case u:return m(y+"Hours",0);case r:return m(y+"Minutes",1);case o:return m(y+"Seconds",2);case n:return m(y+"Milliseconds",3);default:return this.clone()}},f.endOf=function(e){return this.startOf(e,!1)},f.$set=function(e,t){var a,l=z.p(e),_="set"+(this.$u?"UTC":""),h=(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],m=l===s?this.$D+(t-this.$W):t;if(l===d||l===c){var g=this.clone().set(u,1);g.$d[h](m),g.init(),this.$d=g.set(u,Math.min(this.$D,g.daysInMonth())).$d}else h&&this.$d[h](m);return this.init(),this},f.set=function(e,t){return this.clone().$set(e,t)},f.get=function(e){return this[z.p(e)]()},f.add=function(i,_){var u,h=this;i=Number(i);var m=z.p(_),g=function(e){var t=T(h);return z.w(t.date(t.date()+Math.round(e*i)),h)};if(m===d)return this.set(d,this.$M+i);if(m===c)return this.set(c,this.$y+i);if(m===s)return g(1);if(m===l)return g(7);var p=(u={},u[o]=t,u[r]=a,u[n]=e,u)[m]||1,f=this.$d.getTime()+i*p;return z.w(f,this)},f.subtract=function(e,t){return this.add(-1*e,t)},f.format=function(e){var t=this,a=this.$locale();if(!this.isValid())return a.invalidDate||h;var i=e||"YYYY-MM-DDTHH:mm:ssZ",n=z.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 z.s(o%12||12,e,"0")},m=_||function(e,t,a){var i=e<12?"AM":"PM";return a?i.toLowerCase():i};return i.replace(g,(function(e,i){return i||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return z.s(t.$y,4,"0");case"M":return s+1;case"MM":return z.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 z.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 z.s(o,2,"0");case"h":return u(1);case"hh":return u(2);case"a":return m(o,r,!0);case"A":return m(o,r,!1);case"m":return String(r);case"mm":return z.s(r,2,"0");case"s":return String(t.$s);case"ss":return z.s(t.$s,2,"0");case"SSS":return z.s(t.$ms,3,"0");case"Z":return n}return null}(e)||n.replace(":","")}))},f.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},f.diff=function(i,u,h){var m,g=this,p=z.p(u),f=T(i),y=(f.utcOffset()-this.utcOffset())*t,v=this-f,k=function(){return z.m(g,f)};switch(p){case c:m=k()/12;break;case d:m=k();break;case _:m=k()/3;break;case l:m=(v-y)/6048e5;break;case s:m=(v-y)/864e5;break;case r:m=v/a;break;case o:m=v/t;break;case n:m=v/e;break;default:m=v}return h?m:z.a(m)},f.daysInMonth=function(){return this.endOf(d).$D},f.$locale=function(){return k[this.$L]},f.locale=function(e,t){if(!e)return this.$L;var a=this.clone(),i=M(e,t,!0);return i&&(a.$L=i),a},f.clone=function(){return z.w(this.$d,this)},f.toDate=function(){return new Date(this.valueOf())},f.toJSON=function(){return this.isValid()?this.toISOString():null},f.toISOString=function(){return this.$d.toISOString()},f.toString=function(){return this.$d.toUTCString()},p}(),$=D.prototype;return T.prototype=$,[["$ms",i],["$s",n],["$m",o],["$H",r],["$W",s],["$M",d],["$y",c],["$D",u]].forEach((function(e){$[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),T.extend=function(e,t){return e.$i||(e(t,D,T),e.$i=!0),T},T.locale=M,T.isDayjs=b,T.unix=function(e){return T(1e3*e)},T.en=k[v],T.Ls=k,T.p={},T}()),wt.exports}var Mt,Tt=vt(bt()),zt={exports:{}};var Dt,$t=(Mt||(Mt=1,zt.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"}],h=u.length,m=0;m<h;m+=1){var g=u[m];g.d&&(l=r?a(t).diff(o,g.d,!0):o.diff(t,g.d,!0));var p=(e.rounding||Math.round)(Math.abs(l));if(_=l>0,p<=g.r||!g.r){p<=1&&m>0&&(g=u[m-1]);var f=c[g.l];s&&(p=s(""+p)),d="string"==typeof f?f.replace("%d",p):f(p,i,g.l,_);break}}if(i)return d;var y=_?c.future:c.past;return"function"==typeof y?y(d):y.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)}}),zt.exports),xt=vt($t),St={exports:{}};Dt||(Dt=1,St.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}(bt()));var jt,Yt={exports:{}};jt||(jt=1,Yt.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}(bt()));var Lt,Et={exports:{}};Lt||(Lt=1,Et.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}(bt()));var At,Ht={exports:{}};At||(At=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:"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}(bt()));var Ct,Pt={exports:{}};Ct||(Ct=1,Pt.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}(bt()));var Vt,Ot={exports:{}};Vt||(Vt=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:"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}(bt()));var Ft,It={exports:{}};Ft||(Ft=1,It.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 Nt,Wt={exports:{}};Nt||(Nt=1,Wt.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}(bt()));var Kt,Ut={exports:{}};Kt||(Kt=1,Ut.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}(bt()));var Rt,Bt={exports:{}};Rt||(Rt=1,Bt.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}(bt()));var Jt,Zt={exports:{}};Jt||(Jt=1,Zt.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}(bt()));var Gt,qt={exports:{}};Gt||(Gt=1,qt.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}(bt()));var Qt,Xt={exports:{}};Qt||(Qt=1,Xt.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}(bt()));var ea,ta={exports:{}};ea||(ea=1,ta.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}(bt()));var aa,ia={exports:{}};aa||(aa=1,ia.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}(bt()));var na,oa={exports:{}};na||(na=1,oa.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}(bt()));var ra,sa={exports:{}};ra||(ra=1,sa.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}(bt()));var la,da={exports:{}};la||(la=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:"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}(bt()));var _a,ca={exports:{}};_a||(_a=1,ca.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}(bt()));var ua,ha={exports:{}};ua||(ua=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:"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}(bt()));var ma,ga={exports:{}};ma||(ma=1,ga.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}(bt()));var pa,fa={exports:{}};pa||(pa=1,fa.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}(bt()));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:"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}(bt()));var ka,wa={exports:{}};ka||(ka=1,wa.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}(bt()));var ba,Ma={exports:{}};ba||(ba=1,Ma.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}(bt()));var Ta,za={exports:{}};Ta||(Ta=1,za.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}(bt()));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:"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}(bt()));var xa,Sa={exports:{}};xa||(xa=1,Sa.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}(bt()));var ja,Ya={exports:{}};ja||(ja=1,Ya.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}(bt()));var La,Ea={exports:{}};La||(La=1,Ea.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}(bt()));var Aa,Ha={exports:{}};Aa||(Aa=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:"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}(bt()));var Ca,Pa={exports:{}};Ca||(Ca=1,Pa.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}(bt()));var Va,Oa={exports:{}};function Fa(e,t,a,i){const n=!e.start.dateTime;let o,r;n?(o=Ua(e.start.date||""),r=Ua(e.end.date||"")):(o=new Date(e.start.dateTime||""),r=new Date(e.end.dateTime||""));const s=ut(a);if(n){const e=new Date(r);return e.setDate(e.getDate()-1),o.toDateString()!==e.toDateString()?Ka(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(ht(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)):Ka(s.allDay)}const l=!("system"!==t.time_24h||!(null==i?void 0:i.locale)),d=!0===t.time_24h;return o.toDateString()!==r.toDateString()?Ka(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 Ba(e,ft(s.locale,o),r)}return Ba(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(ht(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)):Ka(function(e,t,a,i,n=!0,o=!1,r){if(i&&(null==r?void 0:r.locale)){const i=ft(r.locale,n);return a?`${Ba(e,i,o)} - ${Ba(t,i,o)}`:Ba(e,i,o)}return a?`${Ba(e,n,o)} - ${Ba(t,n,o)}`:Ba(e,n,o)}(o,r,t.show_end_time,l,d,t.time_two_digit_hours,i))}function Ia(e,t="en"){if(e._isEmptyDay||!e.start)return null;const a=new Date,i=e.start.dateTime?new Date(e.start.dateTime):e.start.date?Ua(e.start.date):null;return!i||i<=a?null:function(e,t){const a=function(e){const t=e.toLowerCase();if("zh-cn"===t||"zh-tw"===t)return t;const a=t.split("-")[0];return["bg","cs","da","de","el","en","es","et","fi","fr","he","hr","hu","is","it","lt","nb","nl","nn","pl","pt","ru","sk","sl","sv","th","tr","uk","vi","zh-cn","zh-tw"].includes(a)?a:"en"}(t);return Tt(e).locale(a).fromNow()}(i,t)}function Na(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 Te)if(a.endsWith(e))return a.slice(0,a.length-e.length).replace(/,?\s*$/,"");return a}function Wa(e){if(!e)return"";const t=e.replace(/<[^>]*>/g,""),a=document.createElement("textarea");return a.innerHTML=t,a.value.trim()}function Ka(e){return e&&0!==e.length?e.charAt(0).toUpperCase()+e.slice(1):e}function Ua(e){const[t,a,i]=e.split("-").map(Number);return new Date(t,a-1,i)}function Ra(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function Ba(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?Ja(i):i}:${Ja(n)} ${e}`}return`${a?Ja(i):i}:${Ja(n)}`}function Ja(e){return e.toString().padStart(2,"0")}function Za(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 Ga(e,t,a){const i=t||"iso";return"iso"===i?Za(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}Va||(Va=1,Oa.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}(bt())),Tt.extend(xt);var qa=Object.defineProperty,Qa=Object.defineProperties,Xa=Object.getOwnPropertyDescriptors,ei=Object.getOwnPropertySymbols,ti=Object.prototype.hasOwnProperty,ai=Object.prototype.propertyIsEnumerable,ii=(e,t,a)=>t in e?qa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,ni=(e,t)=>{for(var a in t||(t={}))ti.call(t,a)&&ii(e,a,t[a]);if(ei)for(var a of ei(t))ai.call(t,a)&&ii(e,a,t[a]);return e},oi=(e,t)=>Qa(e,Xa(t));async function ri(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`${me}${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=vi(e,t,a);if(i)return[...i.events];return null}(n,t,o);if(e)return Fe(`Using ${e.length} events from cache`),[...e]}Fe("Fetching events from API");const r=t.entities.map((e=>"string"==typeof e?{entity:e,color:"var(--primary-text-color)"}:e)),s=fi(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()}`;Fe(`Fetching calendar events with path: ${t}`);const r=await e.callApi("GET",t);if(!r||!Array.isArray(r)){Oe(`Invalid response for ${o.entity}`);continue}const s=r.map((e=>oi(ni({},e),{_entityId:o.entity})));i.push(...s),n.add(o.entity)}catch(t){Ve(`Failed to fetch events for ${o.entity}:`,t);try{Fe("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){Oe(`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){Oe(`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=mi(o,t,e)})),a.push(...s)}));const n=function(e,t){const a=[];for(const i of e){if(!_i(i,t)){a.push(i);continue}if(!di(i)){a.push(i);continue}const e=ui(i);a.push(...e)}return a}(a,t);return Ie(`Processed ${n.length} events after filtering and splitting`),n}(l,t);const _=ki(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=Ua(e.start.date)}return t<c})),d.length>0)yi(n,d);else{const e=1e3*he;Fe(`No events returned; caching empty result briefly (${he}s)`),yi(n,d,e)}return d}function si(e,t,a,i){const n=ki(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?Ua(e.start.date):null,n=e.end.date?Ua(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?Ua(e.start.date):null,s=e.end.date?Ua(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 _=Ra(l),c=ut(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:Fa(e,t,i),location:(null!=(a=gi(e._entityId,"show_location",t,e))?a:t.show_location)?Na(e.location||"",t.remove_location_country):"",description:(null!=(n=gi(e._entityId,"show_description",t,e))?n:t.show_description)?Wa(e.description||""):"",start:e.start,end:e.end,_entityId:e._entityId,_entityLabel:mi(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=wi(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?Ua(e.start.date).getTime():e.start.dateTime?new Date(e.start.dateTime).getTime():0,r=n&&a.start.date?Ua(a.start.date).getTime():a.start.dateTime?new Date(a.start.dateTime).getTime():0,i&&n&&o===r){const i=li(e._entityId,t),n=li(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(void 0===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(void 0!==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(Ra(new Date(a.timestamp))),i+=n)}a=u.filter((e=>{const a=Ra(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=oi(ni({},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=ut(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=>Ra(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=Ra(i);if(!s.has(n)){const a=wi(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 li(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 di(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 _i(e,t){return e._entityId&&e._matchedConfig&&void 0!==e._matchedConfig.split_multiday_events?e._matchedConfig.split_multiday_events:t.split_multiday_events}function ci(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function ui(e){const t=[];if(e.start.date&&e.end.date){const a=Ua(e.start.date),i=Ua(e.end.date);i.setDate(i.getDate()-1);for(let n=new Date(a);n<=i;n.setDate(n.getDate()+1)){const a=ci(n),i=new Date(n);i.setDate(i.getDate()+1);const o=ci(i),r=oi(ni({},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=oi(ni({},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=ci(a),n=new Date(a);n.setDate(n.getDate()+1);const o=ci(n),r=oi(ni({},e),{start:{date:i},end:{date:o}});t.push(r)}const l=oi(ni({},e),{start:{dateTime:s.toISOString()},end:{dateTime:i.toISOString()}});t.push(l)}else t.push(ni({},e))}return t}function hi(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: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}(o,a)}function mi(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 gi(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 pi(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 fi(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())&&(Oe(`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())&&(Oe(`Invalid date: ${t}, falling back to today`),a=new Date,a=new Date(a.getFullYear(),a.getMonth(),a.getDate()))):(Oe(`Malformed date: ${t}, falling back to today`),a=new Date,a=new Date(a.getFullYear(),a.getMonth(),a.getDate()))}}catch(e){Oe(`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 yi(e,t,a){try{Fe(`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!==vi(e)}catch(e){return Ve("Failed to cache calendar events:",e),!1}}function vi(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),Fe(`Cache expired and removed for ${e}`),null)}catch(t){Oe("Cache error:",t);try{localStorage.removeItem(e)}catch(e){}return null}}function ki(e){if(e.start_date&&""!==e.start_date.trim()){return fi(e.days_to_show,e.start_date).start}const t=new Date;return new Date(t.getFullYear(),t.getMonth(),t.getDate())}function wi(e,t,a){let i=Ga(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=Za(t)}return i}function bi(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 Mi=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 Ti(e){e.style.opacity="0",e.style.transition=`opacity ${ve}ms ease-out`,setTimeout((()=>{e.parentNode&&(e.parentNode.removeChild(e),Ie("Removed hold indicator"))}),ve)}const zi=1,Di=2,$i=e=>(...t)=>({_$litDirective$:e,values:t});let xi=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 Si=$i(class extends xi{constructor(e){if(super(e),e.type!==zi||"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}}),ji="important",Yi=" !"+ji,Li=$i(class extends xi{constructor(e){if(super(e),e.type!==zi||"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(Yi);e.includes("-")||t?a.setProperty(e,t?i.slice(0,-11):i,t?ji:""):a[e]=i}}return N}}),{I:Ei}=ae,Ai=()=>document.createComment(""),Hi=(e,t,a)=>{const i=e._$AA.parentNode,n=void 0===t?e._$AB:t._$AA;if(void 0===a){const t=i.insertBefore(Ai(),n),o=i.insertBefore(Ai(),n);a=new Ei(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},Ci=(e,t,a=e)=>(e._$AI(t,a),e),Pi={},Vi=(e,t=Pi)=>e._$AH=t,Oi=e=>{e._$AR(),e._$AA.remove()},Fi=(e,t,a)=>{const i=new Map;for(let n=t;n<=a;n++)i.set(e[n],n);return i},Ii=$i(class extends xi{constructor(e){if(super(e),e.type!==Di)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,h=0,m=o.length-1;for(;c<=u&&h<=m;)if(null===n[c])c++;else if(null===n[u])u--;else if(s[c]===r[h])l[h]=Ci(n[c],o[h]),c++,h++;else if(s[u]===r[m])l[m]=Ci(n[u],o[m]),u--,m--;else if(s[c]===r[m])l[m]=Ci(n[c],o[m]),Hi(e,l[m+1],n[c]),c++,m--;else if(s[u]===r[h])l[h]=Ci(n[u],o[h]),Hi(e,n[c],n[u]),u--,h++;else if(void 0===d&&(d=Fi(r,h,m),_=Fi(s,c,u)),d.has(s[c]))if(d.has(s[u])){const t=_.get(r[h]),a=void 0!==t?n[t]:null;if(null===a){const t=Hi(e,n[c]);Ci(t,o[h]),l[h]=t}else l[h]=Ci(a,o[h]),Hi(e,n[c],a),n[t]=null;h++}else Oi(n[u]),u--;else Oi(n[c]),c++;for(;h<=m;){const t=Hi(e,l[m+1]);Ci(t,o[h]),l[h++]=t}for(;c<=u;){const e=n[c++];null!==e&&Oi(e)}return this.ut=r,Vi(e,l),N}});function Ni(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=`${Ra(o)}_${n}`):(o=new Date(e.datetime),i=Ra(o));const r=function(e,t){const a=void 0!==t&&(t>=18||t<6);if(a&&Ki[e])return Ki[e];return Wi[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 Wi={"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"},Ki={sunny:"mdi:weather-night",partlycloudy:"mdi:weather-night-partly-cloudy","lightning-rainy":"mdi:weather-lightning"};async function Ui(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=Ni(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 Ri(e,t){const a=ut(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 Bi(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 Ji(e,t,a,i,n=!1,o="day"){if("0px"===e||n)return W;const r=Bi(e,t,i,o);return I`<div class="${a}" style=${Li(r)}></div>`}function Zi(e){return Ji(e.month_separator_width,e.month_separator_color,"month-separator",e,!1,"month")}function Gi(e,t=!1){return Ji(e.week_separator_width,e.week_separator_color,"week-separator",e,t,"week")}function qi(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:mt(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=${Li(a)}
alt="Today">
</img>`:W;case"emoji":return"string"==typeof t?I` <span class="today-indicator emoji" style=${Li(a)}>
${t}
</span>`:W;default:return W}if(i)return I` <ha-icon
icon="${i}"
class="today-indicator ${e}"
style=${Li(a)}
>
</ha-icon>`;return W}(i,a,n)}
</div>
`}function Qi(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,h=t.month_color;_&&(c=t.weekend_weekday_color||c,u=t.weekend_day_color||u,h=t.weekend_month_color||h),i&&(c=t.today_weekday_color||c,u=t.today_day_color||u,h=t.today_month_color||h);const m=ut(a),g=m.daysOfWeek[e.getDay()],p=e.getDate(),f=m.months[e.getMonth()],y=("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 v=W;if(y&&(null==n?void 0:n.daily)){const a=function(e,t){if(!t)return;return t[Ra(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)";v=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=${Li({"font-size":t.weekday_font_size,color:c})}
>
${g}
</div>
<div
class="day"
style=${Li({"font-size":t.day_font_size,color:u})}
>
${p}
</div>
${t.show_month?I`
<div
class="month"
style=${Li({"font-size":t.month_font_size,color:h})}
>
${f}
</div>
`:W}
${v}
`}function Xi(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 h=W;const m=(null==n?void 0:n.isNewMonth)||!1,g=(null==n?void 0:n.isNewWeek)||!1,p=m&&"0px"!==t.month_separator_width,f=g&&(null!==t.show_week_numbers||"0px"!==t.week_separator_width),y=t.day_separator_width,v=t.day_separator_color;if(i&&"0px"!==y&&!p&&!f){const e=Bi(y,v,t,"day");h=I`<div class="separator" style=${Li(e)}></div>`}return I`
${h}
<table
class=${Si({"day-table":!0,today:_,tomorrow:u,"future-day":!_})}
>
${Ii(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,h=new Date(u.getFullYear(),u.getMonth(),u.getDate()),m=new Date(h);m.setDate(m.getDate()+1);let g=!1;if(!d){if(!e.start.dateTime){let t=e.end.date?Ua(e.end.date):null;if(t){const e=new Date(t);e.setDate(e.getDate()-1),t=e}g=null!==t&&h>t}else{const t=e.end.dateTime?new Date(e.end.dateTime):null;g=null!==t&&u>t}}const p=hi(e._entityId,i,void 0,e),f=i.event_background_opacity>0?i.event_background_opacity:0,y=f>0?hi(e._entityId,i,f,e):"",v=null!=(l=gi(e._entityId,"show_time",i,e))?l:i.show_time,k=!e.start.dateTime,w=k&&e.time&&(e.time.includes(ut(n).multiDay)||e.time.includes(ut(n).endsTomorrow)||e.time.includes(ut(n).endsToday)),b=v&&!(k&&!w&&!i.show_single_allday_time)&&!d;let M=null;!i.show_countdown||d||g||(M=Ia(e,n));const T=pi(e),z=T&&i.show_progress_bar?function(e){if(!pi(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=Fa(e,i,n,s),$=e.location||"",x=e.description||"",S=0===a,j=a===t.events.length-1,Y={event:!0,"event-first":S,"event-middle":!S&&!j,"event-last":j,"past-event":g};return I`
<tr>
${0===a?I`
<td
class="date-column ${c?"weekend":""}"
rowspan="${t.events.length}"
style="position: relative;"
>
${Qi(_,i,n,o,r)}
${qi(i,o)}
</td>
`:""}
<td
class=${Si(Y)}
style="border-inline-start: var(--calendar-card-line-width-vertical) solid ${p}; background-color: ${y};"
>
<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=mi(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 mt(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=function(e,t,a){if(e.start.date&&!e.start.dateTime&&a)return a[Ra(Ua(e.start.date))];if(!e.start.dateTime||!t)return;const i=new Date(e.start.dateTime),n=Ra(i),o=i.getHours(),r=t[`${n}_${o}`];if(r)return r;let s=-1,l=24;return Object.keys(t).forEach((e=>{if(e.startsWith(n)){const t=e.split("_")[1],a=parseInt(t);if(!isNaN(a)){const e=Math.abs(a-o);e<l&&(l=e,s=a)}}})),s>=0?t[`${n}_${s}`]:void 0}(e,a.hourly,a.daily);if(!l)return I``;const d=(null==(o=t.weather)?void 0:o.event)||{},_=!1!==d.show_conditions,c=!1!==d.show_temp,u=!0===d.show_uv_index&&void 0!==l.uv_index&&l.uv_index>=(null!=(r=d.uv_index_threshold)?r:0),h=d.icon_size||"14px",m=d.font_size||"12px",g=d.color||"var(--secondary-text-color)";return I`
<div class="event-weather">
${_?I`<ha-icon .icon=${l.icon} style="--mdc-icon-size: ${h};"></ha-icon>`:W}
${c?I`<span style="font-size: ${m}; color: ${g};">
${l.temperature}°
</span>`:W}
${u?I`<span class="weather-uv-index" style="font-size: ${m}; color: ${g};">
UV${l.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!==z&&i.show_progress_bar?I`
<div class="progress-bar">
<div
class="progress-bar-filled"
style="width: ${z}%"
></div>
</div>
`:W}
</div>
`:M?I`
<div class="time">
<div class="time-actual"></div>
<div class="time-countdown">${M}</div>
</div>
`:null!==z&&i.show_progress_bar?I`
<div class="time">
<div class="time-actual"></div>
<div class="progress-bar">
<div
class="progress-bar-filled"
style="width: ${z}%"
></div>
</div>
</div>
`:W}
${$?I`
<div class="location">
<ha-icon icon="mdi:map-marker-outline"></ha-icon>
<span>${$}</span>
</div>
`:""}
${x?I`
<div class="description">
<ha-icon icon="mdi:information-outline"></ha-icon>
<span>${x}</span>
</div>
`:""}
</div>
</div>
</td>
</tr>
`}(i,e,n,t,a,_,o,r)))}
</table>
`}function en(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,h={isNewWeek:_,isNewMonth:Boolean(c)};let m=W;return!c||"0px"===t.month_separator_width||_&&null!==t.show_week_numbers?_&&(m=u&&null!==t.show_week_numbers&&!t.show_current_week_number?c?Zi(t):Gi(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=${Li(r)}>
<tr>
<td class="week-number-cell">
<div class="week-number">${e}</div>
</td>
<td class="separator-cell" style=${Li(s)}>
<div class="separator-line"></div>
</td>
</tr>
</table>
`}(d,Boolean(c),t,u):Gi(t,u)):m=Zi(t),I`
${m}
${Xi(o,t,a,l,h,i,n)}
`}))}
`}var tn=o`
ha-textfield,
ha-select,
ha-formfield,
ha-entity-picker,
ha-icon-picker {
display: block;
margin: 8px 0;
}
.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);
}
`,an=Object.defineProperty,nn=Object.getOwnPropertySymbols,on=Object.prototype.hasOwnProperty,rn=Object.prototype.propertyIsEnumerable,sn=(e,t,a)=>t in e?an(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,ln=(e,t)=>{for(var a in t||(t={}))on.call(t,a)&&sn(e,a,t[a]);if(nn)for(var a of nn(t))rn.call(t,a)&&sn(e,a,t[a]);return e},dn=(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&&an(t,a,o),o};const _n={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"},cn={max_events_to_show:"compact_events_to_show"};class un extends oe{static get styles(){return tn}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=ln(ln({},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=yt(e,Ke);this._config=e,this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:t}}))}_findDeprecatedParams(e){return Object.keys(_n).filter((t=>t in e))}_findDeprecatedEntityParams(e){const t=[];return e.forEach(((e,a)=>{"object"==typeof e&&null!==e&&Object.keys(cn).forEach((i=>{i in e&&t.push({index:a,param:i})}))})),t}_upgradeConfig(){const e=ln({},this._config);let t=!1;for(const[a,i]of Object.entries(_n))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=ln({},e);for(const[e,i]of Object.entries(cn))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=ut(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=ut(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&&"keyup"===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=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;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>
${this.addTextField("compact_days_to_show",this._getTranslation("compact_days_to_show"),"number")}
${this.addTextField("compact_events_to_show",this._getTranslation("compact_events_to_show"),"number")}
${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"))}
<!-- 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;return"string"==typeof e&&"true"!==e&&"false"!==e?I`
<ha-textfield
label="${this._getTranslation("custom_country_pattern")}"
.value="${e}"
@change="${e=>this.setConfigValue("remove_location_country",e.target.value)}"
></ha-textfield>
<div class="helper-text">
${this._getTranslation("custom_country_pattern_note")}
</div>
`: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"))}
${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.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);return void 0===n&&(n=""),I`
<ha-textfield
name="${e}"
label="${null!=t?t:this._getTranslation(e)}"
type="${null!=a?a:"text"}"
.value="${n}"
@keyup="${this._valueChanged}"
@change="${this._valueChanged}"
></ha-textfield>
`}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";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?I`
<ha-textfield
name="${e}.navigation_path"
.value="${t.navigation_path||""}"
label="${this._getTranslation("navigation_path")}"
@change="${this._valueChanged}"
></ha-textfield>
`:I``}
${"url"===a?I`
<ha-textfield
name="${e}.url_path"
.value="${t.url_path||""}"
label="${this._getTranslation("url_path")}"
@change="${this._valueChanged}"
></ha-textfield>
`:I``}
${"call-service"===a?I`
<ha-textfield
name="${e}.service"
.value="${t.service||""}"
label="${this._getTranslation("service")}"
@change="${this._valueChanged}"
></ha-textfield>
<ha-textfield
name="${e}.service_data"
.value="${t.service_data?JSON.stringify(t.service_data):"{}"}"
label="${this._getTranslation("service_data")}"
@change="${this._serviceDataChanged}"
></ha-textfield>
`:I``}
</div>
`}getValueType(e,t="label"){return e&&!1!==e?!0===e?"indicator"===t?"dot":"none":"string"==typeof e?mt(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&&mt(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");return I`
<ha-textfield
name="${t}"
label="${i}"
.value="${a}"
@change="${this._valueChanged}"
></ha-textfield>
<div class="helper-text">${n}</div>
`}return"image"===e?I`
<ha-textfield
name="${t}"
label="${this._getTranslation("image_path")}"
.value="${a}"
@change="${this._valueChanged}"
></ha-textfield>
<div class="helper-text">${this._getTranslation("image_indicator_note")}</div>
`:I``}}dn([de({attribute:!1})],un.prototype,"hass"),dn([de({attribute:!1})],un.prototype,"_config");var hn=Object.defineProperty,mn=Object.defineProperties,gn=Object.getOwnPropertyDescriptor,pn=Object.getOwnPropertyDescriptors,fn=Object.getOwnPropertySymbols,yn=Object.prototype.hasOwnProperty,vn=Object.prototype.propertyIsEnumerable,kn=(e,t,a)=>t in e?hn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,wn=(e,t)=>{for(var a in t||(t={}))yn.call(t,a)&&kn(e,a,t[a]);if(fn)for(var a of fn(t))vn.call(t,a)&&kn(e,a,t[a]);return e},bn=(e,t)=>mn(e,pn(t)),Mn=(e,t,a,i)=>{for(var n,o=i>1?void 0:i?gn(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&&hn(t,a,o),o};let Tn=class extends oe{constructor(){super(),this.config=wn({},Ke),this.events=[],this.isInitialLoad=!0,this.isLoading=!1,this.isExpanded=!1,this.weatherForecasts={daily:{},hourly:{}},this._instanceId=gt(),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=gt(),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=ct(this.config.language,this.hass.locale)),this._language||"en"}get groupedEvents(){return si(this.events,this.config,this.isExpanded,this.effectiveLanguage)}static get styles(){return Mi}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&&(Ti(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=ct(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 h={"--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&&(h["--calendar-card-font-size-title"]=e.title_font_size),e.title_color&&(h["--calendar-card-color-title"]=e.title_color),h}(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 Ui(this.hass,this.config,e,(t=>{this.weatherForecasts=bn(wn({},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){Oe("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 ${ye}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))}),fe))}_handlePointerUp(e){e.pointerId===this._activePointerId&&(this._holdTimer&&(clearTimeout(this._holdTimer),this._holdTimer=null),this._holdTriggered&&this.config.hold_action?(Ie("Executing hold action"),bi(this,this.config,"hold",(()=>this.toggleExpanded()))):!this._holdTriggered&&this.config.tap_action&&(Ie("Executing tap action"),bi(this,this.config,"tap",(()=>this.toggleExpanded()))),this._activePointerId=null,this._holdTriggered=!1,this._holdIndicator&&(Ti(this._holdIndicator),this._holdIndicator=null))}_handlePointerCancel(){this._holdTimer&&(clearTimeout(this._holdTimer),this._holdTimer=null),this._activePointerId=null,this._holdTriggered=!1,this._holdIndicator&&(Ti(this._holdIndicator),this._holdIndicator=null)}_handleKeyDown(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),bi(this,this.config,"tap",(()=>this.toggleExpanded())))}setConfig(e){const t=this.config;let a=wn(wn({},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:"var(--primary-text-color)",accent_color:void 0,label_icon_color:void 0}:"object"==typeof e&&e.entity?{entity:e.entity,label:e.label,color:e.color||"var(--primary-text-color)",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:e.compact_events_to_show,blocklist:e.blocklist,allowlist:e.allowlist,split_multiday_events:e.split_multiday_events}:null)).filter(Boolean):[]),this._instanceId=pt(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 ri(this.safeHass,this.config,this._instanceId,e);this.isLoading=!1,this.isInitialLoad=!1,await this.updateComplete,this.events=[...t],this._lastUpdateTime=Date.now(),Fe("Event update completed successfully")}catch(e){Ve("Failed to update events:",e),this.isLoading=!1,this.isInitialLoad=!1}}toggleExpanded(){(this.config.compact_events_to_show||this.config.compact_days_to_show)&&(this.isExpanded=!this.isExpanded)}handleAction(e){const t=e===this.config.hold_action?"hold":"tap";bi(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=Ri("loading",this.effectiveLanguage);else if(this.safeHass&&this.config.entities.length)if(0===this.events.length){a=en(si([],this.config,this.isExpanded,this.effectiveLanguage),this.config,this.effectiveLanguage,this.weatherForecasts,this.safeHass)}else a=en(this.groupedEvents,this.config,this.effectiveLanguage,this.weatherForecasts,this.safeHass);else a=Ri("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=${Li(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)}};Tn.getStubConfig=Ue,Mn([de({attribute:!1})],Tn.prototype,"hass",2),Mn([de({attribute:!1})],Tn.prototype,"config",2),Mn([de({attribute:!1})],Tn.prototype,"events",2),Mn([de({attribute:!1})],Tn.prototype,"isInitialLoad",2),Mn([de({attribute:!1})],Tn.prototype,"isLoading",2),Mn([de({attribute:!1})],Tn.prototype,"isExpanded",2),Mn([de({attribute:!1})],Tn.prototype,"weatherForecasts",2),Tn=Mn([(e=>(t,a)=>{void 0!==a?a.addInitializer((()=>{customElements.define(e,t)})):customElements.define(e,t)})("calendar-card-pro")],Tn),customElements.define("calendar-card-pro-editor",un);const zn=customElements.get("calendar-card-pro");zn&&(zn.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"});
//# sourceMappingURL=calendar-card-pro.js.map