UNPKG

@uplink-protocol/calendar-controller

Version:

Flexible calendar and time picker API supporting both calendar, date-picker, and time-picker integrations for any JavaScript framework or library

1 lines 215 kB
var e={d:(t,a)=>{for(var i in a)e.o(a,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:a[i]})}};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var t={};e.r(t);var a={};function i(e,t){return new Date(e,t+1,0).getDate()}function s(e,t){return new Date(e,t,1).getDay()}function n(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function r(e,t){if(!t)return e.toISOString().split("T")[0];const a=e.getDate().toString().padStart(2,"0"),i=(e.getMonth()+1).toString().padStart(2,"0"),s=e.getFullYear();return t.replace("DD",a).replace("MM",i).replace("YYYY",s.toString()).replace("YY",s.toString().slice(-2))}function o(e,t=!1){return t?["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][e]:["January","February","March","April","May","June","July","August","September","October","November","December"][e]}function c(e=!1,t=0){const a=e?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];return[...a.slice(t),...a.slice(0,t)]}function l(e,t,a){return!(t&&e<t||a&&e>a)}e.r(a);class d{constructor(){Object.defineProperty(this,"_localizationService",{enumerable:!0,configurable:!0,writable:!0,value:null})}setLocalizationService(e){this._localizationService=e}getLocalizationService(){return this._localizationService}generateCalendarDays(e,t,a){const n=i(e,t),r=s(e,t),o=new Date,c=[];let l=(r-a.firstDayOfWeek+7)%7;if(l>0&&!a.hideOtherMonthDays){const s=0===t?11:t-1,n=0===t?e-1:e,r=i(n,s);for(let e=0;e<l;e++){const t=new Date(n,s,r-l+e+1);c.push(this.createCalendarDateObject(t,!1,o,a))}}for(let i=1;i<=n;i++){const s=new Date(e,t,i);c.push(this.createCalendarDateObject(s,!0,o,a))}const d=42-c.length;if(d>0&&!a.hideOtherMonthDays){const i=11===t?0:t+1,s=11===t?e+1:e;for(let e=1;e<=d;e++){const t=new Date(s,i,e);c.push(this.createCalendarDateObject(t,!1,o,a))}}return c}createCalendarDateObject(e,t,a,i){const s=!!i.selectedDate&&n(e,i.selectedDate);let r=!1,o=!1,c=!1;if(i.isRangeSelection&&i.selectedDateRange.startDate&&i.selectedDateRange.endDate){const t=i.selectedDateRange.startDate,a=i.selectedDateRange.endDate;t&&a&&(r=e>=t&&e<=a,o=n(e,t),c=n(e,a))}return{day:e.getDate(),month:e.getMonth(),year:e.getFullYear(),isCurrentMonth:t,isToday:n(e,a),isSelected:s,isInRange:r,isRangeStart:o,isRangeEnd:c,isDisabled:!!i.isDateDisabledFn&&i.isDateDisabledFn(e)}}getMonthName(e,t=!1){return this._localizationService?this._localizationService.getMonthNames(t)[e]:["January","February","March","April","May","June","July","August","September","October","November","December"][e]}getWeekdayNames(e,t=!1){let a;return a=this._localizationService?this._localizationService.getWeekdayNames(t):["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],[...a.slice(e),...a.slice(0,e)]}getNextMonth(e){const t=new Date(e);return t.setMonth(t.getMonth()+1),t}getPreviousMonth(e){const t=new Date(e);return t.setMonth(t.getMonth()-1),t}getNextYear(e){const t=new Date(e);return t.setFullYear(t.getFullYear()+1),t}getPreviousYear(e){const t=new Date(e);return t.setFullYear(t.getFullYear()-1),t}isDateInSelectedRange(e,t){return!(!t.startDate||!t.endDate)&&e>=t.startDate&&e<=t.endDate}getWeekNumber(e){if(this._localizationService&&"function"==typeof this._localizationService.getWeekNumber)return this._localizationService.getWeekNumber(e);const t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),a=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-a);const i=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t.getTime()-i.getTime())/864e5+1)/7)}isToday(e){const t=new Date;return e.getDate()===t.getDate()&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}}class u{selectDate(e){return new Date(e)}selectDateRange(e,t){let a=null,i=null;(t.startDate||t.start)&&(a=new Date(t.startDate||t.start)),(t.endDate||t.end)&&(i=new Date(t.endDate||t.end));const s=new Date(e);return a?i?(a=s,i=null):s<a?(i=new Date(a),a=s):i=s:(a=s,i=null),{startDate:a??null,endDate:i??null}}clearSelection(){return{selectedDate:null,selectedDateRange:{startDate:null,endDate:null}}}clearDateRange(){return{startDate:null,endDate:null}}isDateSelected(e,t){return!!t&&n(e,t)}isDateInRange(e,t){const a={isInRange:!1,isRangeStart:!1,isRangeEnd:!1};if(!t.startDate||!t.endDate)return t.startDate&&n(e,t.startDate)&&(a.isRangeStart=!0,a.isInRange=!0),a;const i=new Date(e);i.setHours(0,0,0,0);const s=new Date(t.startDate);s.setHours(0,0,0,0);const r=new Date(t.endDate);return r.setHours(0,0,0,0),a.isInRange=i>=s&&i<=r,a.isRangeStart=n(i,s),a.isRangeEnd=n(i,r),a}isDateInSelectedRange(e,t){if(!t.startDate||!t.endDate)return!1;const a=new Date(e);a.setHours(0,0,0,0);const i=new Date(t.startDate);i.setHours(0,0,0,0);const s=new Date(t.endDate);return s.setHours(0,0,0,0),a>=i&&a<=s}}class h{isDateDisabled(e,t,a,i){if(t){const a=new Date(t);if(a.setHours(0,0,0,0),e<a)return!0}if(a){const t=new Date(a);if(t.setHours(23,59,59,999),e>t)return!0}return i.some(t=>this.isSameDay(e,t))}setMinDate(e){if(!e)return null;const t=new Date(e);return t.setHours(0,0,0,0),t}setMaxDate(e){if(!e)return null;const t=new Date(e);return t.setHours(23,59,59,999),t}setDisabledDates(e){return e.map(e=>{const t=new Date(e);return t.setHours(0,0,0,0),t})}isSameDay(e,t){return n(e,t)}}class g{constructor(){Object.defineProperty(this,"_defaultFormat",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_localizationService",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_dateFormatOptions",{enumerable:!0,configurable:!0,writable:!0,value:null})}setLocalizationService(e){this._localizationService=e}getLocalizationService(){return this._localizationService}setDateFormatOptions(e){this._dateFormatOptions=e}getDateFormatOptions(){return this._dateFormatOptions}formatDate(e,t){if(!e)return"";if("string"==typeof t&&"DD/MM/YYYY"===t)return`${e.getDate().toString().padStart(2,"0")}/${(e.getMonth()+1).toString().padStart(2,"0")}/${e.getFullYear()}`;if(this._localizationService){if("object"==typeof t&&null!==t)return this._localizationService.formatDate(e,t);if("string"==typeof t&&("short"===t||"medium"===t||"long"===t||"full"===t))return this._localizationService.formatDate(e,{dateStyle:t});if(!t&&this._dateFormatOptions)return this._localizationService.formatDate(e,this._dateFormatOptions);if(!t&&!this._dateFormatOptions)return this._localizationService.formatDate(e)}const a="string"==typeof t?t:this._defaultFormat;if(!a)return e.toISOString().split("T")[0];const i=e.getDate().toString().padStart(2,"0"),s=(e.getMonth()+1).toString().padStart(2,"0"),n=e.getFullYear(),r=e.getHours().toString().padStart(2,"0"),o=e.getMinutes().toString().padStart(2,"0"),c=e.getSeconds().toString().padStart(2,"0");return a.replace("YYYY",n.toString()).replace("YY",n.toString().slice(-2)).replace("MM",s).replace("M",(e.getMonth()+1).toString()).replace("DD",i).replace("D",e.getDate().toString()).replace("HH",r).replace("H",e.getHours().toString()).replace("mm",o).replace("m",e.getMinutes().toString()).replace("ss",c).replace("s",e.getSeconds().toString())}parseDate(e,t){if(this._localizationService&&this._dateFormatOptions&&!t)try{const t=new Date(e);return isNaN(t.getTime())?null:t}catch(e){}if(!t&&this._defaultFormat&&(t=this._defaultFormat),!t){const t=new Date(e);return isNaN(t.getTime())?null:t}try{let a=0,i=0,s=1;if(t.includes("YYYY")){const i=t.indexOf("YYYY");a=parseInt(e.substring(i,i+4),10)}else if(t.includes("YY")){const i=t.indexOf("YY"),s=parseInt(e.substring(i,i+2),10);a=s+(s>=0&&s<100?2e3:0)}if(t.includes("MM")){const a=t.indexOf("MM");i=parseInt(e.substring(a,a+2),10)-1}else if(t.includes("M")){const a=t.indexOf("M"),s=e.charAt(a),n=e.charAt(a+1);i=n&&/\d/.test(n)?parseInt(s+n,10)-1:parseInt(s,10)-1}if(t.includes("DD")){const a=t.indexOf("DD");s=parseInt(e.substring(a,a+2),10)}else if(t.includes("D")){const a=t.indexOf("D"),i=e.charAt(a),n=e.charAt(a+1);s=n&&/\d/.test(n)?parseInt(i+n,10):parseInt(i,10)}const n=new Date(a,i,s);return isNaN(n.getTime())?null:n}catch(e){return null}}setDefaultFormat(e){this._defaultFormat=e}getDefaultFormat(){return this._defaultFormat}formatMonth(e,t,a){const i=new Date(e,t,1);return this._localizationService&&!a?this._localizationService.formatDate(i,{year:"numeric",month:"long"}):a?this.formatDate(i,a):`${["January","February","March","April","May","June","July","August","September","October","November","December"][t]} ${e}`}formatYear(e){return e.toString()}}var m={d:(e,t)=>{for(var a in t)m.o(t,a)&&!m.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},b={};m.d(b,{o8:()=>Y,T6:()=>v,Dy:()=>D,ai:()=>p,RW:()=>x,bk:()=>S,Xu:()=>k,Nw:()=>w,_t:()=>E,f:()=>I,op:()=>j,BV:()=>f,Pq:()=>z,vA:()=>F,Kj:()=>O,hq:()=>M,KF:()=>N,XG:()=>q,tt:()=>P,gT:()=>$,Ay:()=>U,y9:()=>B,yl:()=>W,fO:()=>_,vB:()=>y,Ly:()=>A,nj:()=>H,ZZ:()=>C,hh:()=>R,Xr:()=>L});class v{constructor(){Object.defineProperty(this,"adapters",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"defaultAdapter",{enumerable:!0,configurable:!0,writable:!0,value:null})}static getInstance(){return v.instance||(v.instance=new v),v.instance}registerAdapter(e){this.adapters.set(e.name,e),e.initialize(),this.defaultAdapter||this.setDefaultAdapter(e.name)}getAdapter(e){return this.adapters.get(e)}getAllAdapters(){return Array.from(this.adapters.values())}hasAdapter(e){return this.adapters.has(e)}removeAdapter(e){return this.adapters.delete(e)}setDefaultAdapter(e){if(!this.hasAdapter(e))throw new Error(`Cannot set default adapter: adapter '${e}' is not registered`);this.defaultAdapter=e}getDefaultAdapter(){return this.defaultAdapter?this.adapters.get(this.defaultAdapter):void 0}setAutoDetect(e){}getAppropriateAdapter(){return this.getDefaultAdapter()}}class D{constructor(){Object.defineProperty(this,"controllerMap",{enumerable:!0,configurable:!0,writable:!0,value:new Map})}initialize(e){console.log(`${this.name} adapter initialized (v${this.version})`)}connectController(e,t){this.controllerMap.set(e,t),this.onControllerConnected(e,t)}disconnectController(e){if(this.controllerMap.has(e)){const t=this.controllerMap.get(e);this.onControllerDisconnected(e,t),this.controllerMap.delete(e)}}handleEvent(e,t,a){const i=this.controllerMap.get(e);i&&this.dispatchDOMEvent(i,t,a),this.onControllerEvent(e,t,a)}dispatchDOMEvent(e,t,a){const i=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:a});e.dispatchEvent(i)}onControllerConnected(e,t){}onControllerDisconnected(e,t){}onControllerEvent(e,t,a){}}class f extends D{constructor(){super(...arguments),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"vanilla"}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:"1.0.0"})}watchProperty(e,t,a){if(e.bindings&&e.bindings[t])if("function"==typeof e.bindings[t].subscribe)e.bindings[t].subscribe(a);else if(null!==e.bindings[t]){let i=e.bindings[t].current;Object.defineProperty(e.bindings,t,{get:()=>i,set:e=>{const t=i;i=e,t!==e&&a(e)},enumerable:!0,configurable:!0})}}updateProperty(e,t,a){e.bindings&&e.bindings[t]&&("function"==typeof e.bindings[t].set?e.bindings[t].set(a):null!==e.bindings[t]&&(e.bindings[t]=a))}callMethod(e,t,a=[]){if(e.methods&&"function"==typeof e.methods[t])return e.methods[t](...a);if("function"==typeof e[t])return e[t](...a);throw new Error(`Method '${t}' not found on controller`)}onControllerConnected(e,t){e.meta&&e.meta.events&&Object.keys(e.meta.events).forEach(a=>{t.addEventListener(a,t=>{if(e.events&&e.events[a]){const i=t.detail;e.events[a].emit(i)}})})}}class p{constructor(e,t){if(Object.defineProperty(this,"registry",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"adapter",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"element",{enumerable:!0,configurable:!0,writable:!0,value:null}),this.controller=e,this.registry=v.getInstance(),t&&this.registry.hasAdapter(t))this.adapter=this.registry.getAdapter(t);else{const e=this.registry.getAppropriateAdapter();if(e)this.adapter=e;else{const e=new f;this.registry.registerAdapter(e),this.adapter=e}}}connect(e){this.element=e,this.adapter.connectController(this.controller,e)}disconnect(){this.element&&(this.adapter.disconnectController(this.controller),this.element=null)}emitEvent(e,t){this.adapter.handleEvent(this.controller,e,t)}watchProperty(e,t){this.adapter.watchProperty(this.controller,e,t)}updateProperty(e,t){this.adapter.updateProperty(this.controller,e,t)}callMethod(e,t){return this.adapter.callMethod(this.controller,e,t)}getAdapter(){return this.adapter}setAdapter(e){if(this.registry.hasAdapter(e)){const t=this.registry.getAdapter(e);return this.element&&this.adapter.disconnectController(this.controller),this.adapter=t,this.element&&this.adapter.connectController(this.controller,this.element),!0}return!1}}function y(){return v.getInstance()}class S{constructor(e){Object.defineProperty(this,"listeners",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"adapter",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"eventName",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.eventName=e}connectToAdapter(e,t){this.eventName=t,this.adapter=e.__adapter}emit(e){this.listeners.forEach(t=>t(e)),this.adapter&&this.eventName&&this.adapter.emitEvent(this.eventName,e)}subscribe(e){return this.listeners.push(e),()=>{this.listeners=this.listeners.filter(t=>t!==e)}}}class w{constructor(e,t){Object.defineProperty(this,"current",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_callbacks",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"_customSet",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_customSubscribe",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.current=e,this._customSet=t?.customSet,this._customSubscribe=t?.customSubscribe}set(e){if(this._customSet)return void this._customSet(e);this.current=e;const t=this._callbacks.slice();for(let a=0;a<t.length;a++)try{t[a](e)}catch(e){console.error("Error in binding subscriber:",e)}}subscribe(e){if(this._customSubscribe)return this._customSubscribe(e);if("function"!=typeof e)return console.error("Attempted to subscribe with non-function:",e),()=>{};this._callbacks.push(e);let t=!1;return()=>{t||(t=!0,this._callbacks=this._callbacks.filter(t=>t!==e))}}}function M(e,t,a){const i=new p(e,a);e.__adapter=i,"initialize"in e&&"function"==typeof e.initialize?Promise.resolve(e.initialize()).then(()=>{T(e,t,i)}).catch(a=>{console.error("Error initializing controller:",a),T(e,t,i)}):T(e,t,i)}function T(e,t,a){if(a.connect(t),e.events&&Object.entries(e.events).forEach(([t,a])=>{a instanceof S&&a.connectToAdapter(e,t)}),"connect"in e&&"function"==typeof e.connect)try{e.connect(t)}catch(e){console.error("Error in controller.connect():",e)}if("registerUI"in e&&"function"==typeof e.registerUI)try{if(1===e.registerUI.length){if("connect"in e&&"function"==typeof e.connect){const a=e.connect(t);a&&e.registerUI(a)}}else 2===e.registerUI.length&&e.registerUI(t)}catch(e){console.error("Error in controller.registerUI():",e)}}function _(e){e.__adapter&&(e.__adapter.disconnect(),delete e.__adapter)}function O(e,t,a){const i=new w(t(...e.map(e=>a.bindings[e].current))),s=e.map(s=>a.bindings[s].subscribe(()=>{i.set(t(...e.map(e=>a.bindings[e].current)))}));return i.cleanup=()=>{s.forEach(e=>e())},i}function F(e){e()}function C(e){y().registerAdapter(e)}function R(e){y().setDefaultAdapter(e)}class E{constructor(e,t){Object.defineProperty(this,"_state",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_frameworkContext",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_subscriptions",{enumerable:!0,configurable:!0,writable:!0,value:[]}),this._state=e,this._frameworkContext=t}get frameworkContext(){return this._frameworkContext}get element(){return this._frameworkContext.element||this._frameworkContext.getElement&&this._frameworkContext.getElement()||document.createElement("div")}get state(){return this._state}setState(e){this._state={...this._state,...e},this._frameworkContext.render&&this._frameworkContext.render()}addSubscription(e){this._subscriptions.push(e)}cleanup(){this._frameworkContext.cleanup&&this._frameworkContext.cleanup(),this._subscriptions.forEach(e=>e()),this._subscriptions=[]}}class k{constructor(){Object.defineProperty(this,"bindings",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,"methods",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"events",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"meta",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"__adapter",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_uiContexts",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"_activeContext",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_globalSubscriptions",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"_isSyncingState",{enumerable:!0,configurable:!0,writable:!0,value:!1})}getActiveContext(){if(!this._activeContext&&this._uiContexts.size>0&&(this._activeContext=this._uiContexts.values().next().value),!this._activeContext)throw new Error("No active UI context - Controller must be connected to a UI before using methods");return this._activeContext}setActiveContext(e){this._uiContexts.has(e.frameworkContext.id)&&this._activeContext!==e&&(this._activeContext=e,this.syncStateFromContext(e))}syncStateFromContext(e){this._isSyncingState?console.warn("Preventing recursive syncStateFromContext call"):(this._isSyncingState=!0,this._isSyncingState=!1)}connect(e){return this.connectWithContext({id:e.id||`element-${Date.now()}`,element:e,getElement:()=>e})}connectWithContext(e){const t=new E({},e);return this._uiContexts.set(e.id,t),this._activeContext=t,this.syncStateFromContext(t),t}disconnect(e){e.cleanup(),this._uiContexts.delete(e.frameworkContext.id),this._activeContext===e&&(this._activeContext=null,this._uiContexts.size>0&&(this._activeContext=this._uiContexts.values().next().value,this.syncStateFromContext(this._activeContext)))}dispose(){for(const e of this._uiContexts.values())e.cleanup();this._uiContexts.clear(),this._globalSubscriptions.forEach(e=>e()),this._globalSubscriptions=[]}registerUI(e){const t=this._activeContext;this._activeContext=e;try{if(e.frameworkContext.element){const t=P(this,e.frameworkContext.element);return e.addSubscription(t),t}return()=>{}}finally{this._activeContext=t}}batchUpdates(e){const t=new Map,a=new Map;Object.keys(this.bindings).forEach(e=>{const i=this.bindings[e];t.set(e,i.set.bind(i)),i.set=t=>{a.set(e,t)}});try{e(),a.forEach((e,a)=>{t.get(a)?.(e)})}finally{Object.keys(this.bindings).forEach(e=>{const a=this.bindings[e],i=t.get(e);i&&(a.set=i)})}}}function P(e,t){const a=[];return t.querySelectorAll("[data-uplink]").forEach(t=>{const i=t.getAttribute("data-uplink");if(!i||!e.bindings[i])return;const s=e.bindings[i];if(t instanceof HTMLInputElement){if(s.current instanceof Date&&e.methods?.formatDate){const a=e.methods.formatDate,i=e.bindings.format?.current||"yyyy-MM-dd";t.value=a(s.current,i)}else t.value=s.current?.toString()||"";t.addEventListener("input",()=>{if("selectedDate"===i&&e.methods?.setDate)try{const a=new Date(t.value);isNaN(a.getTime())||(0,e.methods.setDate)(a)}catch(e){console.error("Invalid date input:",e)}else s.set(t.value)}),a.push(s.subscribe(a=>{if(a instanceof Date&&e.methods?.formatDate){const i=e.methods.formatDate,s=e.bindings.format?.current||"yyyy-MM-dd";t.value=i(a,s)}else t.value=a?.toString()||""}))}else t.textContent=s.current?.toString()||"",a.push(s.subscribe(e=>{t.textContent=e?.toString()||""}))}),()=>{a.forEach(e=>e())}}class Y extends k{connect(e){const t={id:e.id||`element-${Date.now()}`,element:e,getElement:()=>e};return this.connectWithContext(t)}connectWithContext(e){const t=this.createInitialUIState(),a=new E(t,e);return this._uiContexts.set(e.id,a),this._activeContext=a,this.registerUI(a),this.setupBindingSyncToActiveContext(),this.syncStateFromContext(a),a}setupBindingSyncToActiveContext(){const e=Object.keys(this.bindings).reduce((e,t)=>(t in this.createInitialUIState()&&(e[t]=t),e),{});Object.entries(e).forEach(([e,t])=>{const a=this.bindings[e];a&&"function"==typeof a.subscribe&&this._globalSubscriptions.push(a.subscribe(e=>{const a=this.getActiveContext();if(a&&!this._isSyncingState){const i={[t]:e};a.setState(i)}}))})}updateActiveContext(e){const t=this.getActiveContext();t.setState(e),this.syncStateFromContext(t)}batchUpdateActiveContext(e){this._isSyncingState=!0;try{const t=this.getActiveContext();t.setState(e),this.batchUpdates(()=>{this.syncStateFromContext(t)})}finally{this._isSyncingState=!1}}}class x{constructor(){Object.defineProperty(this,"factories",{enumerable:!0,configurable:!0,writable:!0,value:new Map})}static getInstance(){return x.instance||(x.instance=new x),x.instance}register(e,t){this.factories.set(e,t)}create(e){const t=this.factories.get(e);if(!t)throw new Error(`Controller factory not registered for '${e}'`);return t()}has(e){return this.factories.has(e)}unregister(e){return this.factories.delete(e)}}function A(){return x.getInstance()}function j(e){return function(t){return x.getInstance().register(e,()=>new t),t}}function N(e,t){return new w(e,t)}function W(){return"vanilla"}function z(){const e=y();if(e.getAllAdapters().length>0)return void console.log("Uplink Protocol adapters are already registered");const t=new f;e.registerAdapter(t),e.setDefaultAdapter("vanilla"),console.log("Uplink Protocol initialized with vanilla adapter")}function H(){z()}"undefined"!=typeof window&&setTimeout(()=>{z()},0);class I{constructor(e){Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"element",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_eventUnsubscribes",{enumerable:!0,configurable:!0,writable:!0,value:[]}),this.controller=e}connect(e,t={}){if(this.element=e,this.element.setAttribute("data-uplink-controller",""),this.controller.events)for(const[e,a]of Object.entries(this.controller.events)){const i=t[`on${e.charAt(0).toUpperCase()+e.slice(1)}`];if("function"==typeof i){const e=a.subscribe(e=>{i(e)});this._eventUnsubscribes.push(e)}}return M(this.controller,this.element,"vanilla"),()=>this.disconnect()}disconnect(){this._eventUnsubscribes.forEach(e=>e()),this._eventUnsubscribes=[],_(this.controller),this.element=null}}function L(e,t={}){let a;a="string"==typeof e?A().create(e):"function"==typeof e?e():e;const i={},s="all"===t.trackBindings?Object.keys(a.bindings||{}):t.trackBindings||[];s.forEach(e=>{a.bindings&&a.bindings[e]&&(i[e]=a.bindings[e].current)});const n=[];s.forEach(e=>{if(a.bindings&&a.bindings[e]){const t=a.bindings[e].subscribe(t=>{i[e]=t});n.push(t)}});const r=new I(a);return{controller:a,state:i,methods:a.methods||{},events:a.events||{},connect:(e,t={})=>r.connect(e,t),disconnect:()=>{n.forEach(e=>e()),r.disconnect()}}}function B(e,t,a={}){"undefined"!=typeof customElements?customElements.define(e,class extends HTMLElement{constructor(){if(super(),Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cleanup",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"eventHandlers",{enumerable:!0,configurable:!0,writable:!0,value:{}}),this.controller="string"==typeof t?A().create(t):"function"==typeof t?t():t,a.onEvent&&this.controller.events)for(const[e,t]of Object.entries(a.onEvent))this.controller.events[e]&&(this.eventHandlers[`on${e.charAt(0).toUpperCase()+e.slice(1)}`]=e=>t(e,this));a.shadow&&this.attachShadow({mode:"open"})}connectedCallback(){a.template&&(this.shadowRoot?this.shadowRoot.innerHTML=a.template:this.innerHTML=a.template);const e=new I(this.controller);this.cleanup=e.connect(this.shadowRoot?this.shadowRoot:this,this.eventHandlers),a.onConnected&&a.onConnected(this.shadowRoot?this.shadowRoot:this,this.controller)}disconnectedCallback(){a.onDisconnected&&a.onDisconnected(this.shadowRoot?this.shadowRoot:this,this.controller),this.cleanup&&(this.cleanup(),this.cleanup=null)}}):console.error("Custom Elements are not supported in this browser")}function q(e){const t={};for(const a in e)if(Object.prototype.hasOwnProperty.call(e,a)){const i=e[a];t[a]=i&&"object"==typeof i&&"initialValue"in i?N(i.initialValue,{customSet:i.customSet,customSubscribe:i.customSubscribe}):N(i)}return t}function $(e){const t={};if(Array.isArray(e))e.forEach(e=>{t[e]=new S});else for(const a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=new S);return t}const U={connectController:M,disconnectController:_,createBindings:q,createEventEmitters:$,StandardBinding:w,EventEmitter:S,ControllerAdapter:p};var V=b.bk,G=b.KF;class J{initializeBindings(e,t,a,i,s,n,r,o){return{currentMonth:G(e.getMonth()),currentYear:G(e.getFullYear()),currentDate:G(new Date(e)),monthName:G(""),calendarDays:G(n()),calendarMonths:G(r()),calendarYears:G(o()),selectedDate:G(t),selectedDateRange:G(a),focusedDate:G(null),weekdays:G([]),isRangeSelection:G(s),currentYearRangeBase:G(0)}}updateCurrentDate(e,t,a,i,s,n,r){const o=e.getMonth(),c=e.getFullYear();if(t&&"object"==typeof t&&"currentMonth"in t){const e=t,s=a,n=i;e.currentMonth.set(o),e.currentYear.set(c),e.monthName.set(s(o)),e.calendarDays.set(n())}else{const e=a,l=i,d=s;if(t.set(o),e.set(c),l.set(d(o)),n&&r){const e=r;n.set(e())}}return{month:o,year:c}}updateSelectedDate(e,t,a,i){t.set(e),a&&i&&a.set(i())}updateDateRange(e,t,a,i){t.set(e),a.set(i())}updateSelectionMode(e,t,a,i){t.set(e),a.set(i())}updateSelectedDateRange(e,t){t.set(e)}updateCalendarDays(e,t){t.set(e)}updateFocusedDate(e,t,a){!t||a?t&&a&&t.set(a()):t.set(e?new Date(e):null)}}class Z{initializeEvents(){return{dateSelected:new V,dateRangeSelected:new V,monthChanged:new V,yearChanged:new V,viewChanged:new V,yearRangeChanged:new V}}emitDateSelected(e,t){e.emit(t)}emitDateRangeSelected(e,t){t.startDate&&t.endDate&&e.emit(t)}emitMonthChanged(e,t){e.emit(t)}emitYearChanged(e,t){e.emit(t)}emitViewChanged(e,t){e.emit(t)}emitYearRangeChanged(e,t){e.emit(t)}}class Q{navigateToNextMonth(e){const t=new Date(e);return t.setMonth(e.getMonth()+1),t}navigateToPreviousMonth(e){const t=new Date(e);return t.setMonth(e.getMonth()-1),t}navigateToNextYear(e){const t=new Date(e);return t.setFullYear(e.getFullYear()+1),t}navigateToPreviousYear(e){const t=new Date(e);return t.setFullYear(e.getFullYear()-1),t}navigateToMonth(e,t){if(t<0||t>11)return e;const a=new Date(e);return a.setMonth(t),a}navigateToYear(e,t){const a=new Date(e);return 1===e.getMonth()&&29===e.getDate()&&!(t%4==0&&t%100!=0||t%400==0)&&a.setDate(28),a.setFullYear(t),a}navigateToYearRange(e,t,a){return e-e%t+a*t}navigateToDate(e,t){return void 0===t?(t=e,new Date(t)):new Date(t)}navigateToToday(){return new Date}}class K{constructor(){Object.defineProperty(this,"_minDate",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_maxDate",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_disabledDates",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"_disabledDaysOfWeek",{enumerable:!0,configurable:!0,writable:!0,value:[]})}setMinDate(e){return this._minDate=e,this._minDate}setMaxDate(e){return this._maxDate=e,this._maxDate}setDisabledDates(e){return this._disabledDates=e||[],this._disabledDates}setDisabledDaysOfWeek(e){const t=(e||[]).filter(e=>"number"==typeof e&&e>=0&&e<=6);return this._disabledDaysOfWeek=[...new Set(t)],this._disabledDaysOfWeek}isDateDisabled(e,t,a,i,s=[]){if(!e)return!1;if(t&&e<t)return!0;if(a&&e>a)return!0;if(i.some(t=>t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate()))return!0;const n=e.getDay();return s.includes(n)}getConstraints(){return{minDate:this._minDate,maxDate:this._maxDate,disabledDates:[...this._disabledDates],disabledDaysOfWeek:[...this._disabledDaysOfWeek]}}addDisabledDate(e){return this._disabledDates.some(t=>t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate())||this._disabledDates.push(new Date(e)),[...this._disabledDates]}removeDisabledDate(e){return this._disabledDates=this._disabledDates.filter(t=>!(t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate())),[...this._disabledDates]}addDisabledDayOfWeek(e){return"number"!=typeof e||e<0||e>6||this._disabledDaysOfWeek.includes(e)||this._disabledDaysOfWeek.push(e),[...this._disabledDaysOfWeek]}removeDisabledDayOfWeek(e){return this._disabledDaysOfWeek=this._disabledDaysOfWeek.filter(t=>t!==e),[...this._disabledDaysOfWeek]}getDisabledDaysOfWeek(){return[...this._disabledDaysOfWeek]}}class X{getWeekNumber(e,t){if(!e)return 1;if(t&&(t.startsWith("de")||t.startsWith("fr")||t.startsWith("es"))){const a=new Date(e.getTime());a.setHours(0,0,0,0),a.setDate(a.getDate()+4-(a.getDay()+6)%7);const i=new Date(a.getFullYear(),0,4);return t&&(t.startsWith("de")||t.startsWith("fr")||t.startsWith("es")),Math.ceil(((a.getTime()-i.getTime())/864e5+1)/7)}{const t=new Date(e.getTime());t.setHours(0,0,0,0),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)}}generateCalendarDays(e,t,a){const n=i(e,t),r=s(e,t),o=new Date,c=[];let l=(r-a.firstDayOfWeek+7)%7;if(l>0&&!a.hideOtherMonthDays){const s=0===t?11:t-1,n=0===t?e-1:e,r=i(n,s);for(let e=0;e<l;e++){const t=new Date(n,s,r-l+e+1);c.push(this.createCalendarDateObject(t,!1,o,a))}}for(let i=1;i<=n;i++){const s=new Date(e,t,i);c.push(this.createCalendarDateObject(s,!0,o,a))}const d=42-c.length;if(d>0&&!a.hideOtherMonthDays){const i=11===t?0:t+1,s=11===t?e+1:e;for(let e=1;e<=d;e++){const t=new Date(s,i,e);c.push(this.createCalendarDateObject(t,!1,o,a))}}return c}generateCalendarMonths(e,t){const a=[],i=t.currentDate||new Date,s=i.getMonth(),n=i.getFullYear();for(let i=0;i<12;i++){const r=e===n&&i===s,c=!!t.selectedDate&&t.selectedDate.getMonth()===i&&t.selectedDate.getFullYear()===e,l=!!t.isMonthDisabledFn&&t.isMonthDisabledFn(e,i);a.push({month:i,year:e,name:o(i),isCurrentMonth:r,isSelected:c,isDisabled:l})}return a}generateCalendarYears(e,t,a){const i=[],s=a.currentDate?.getFullYear()??(new Date).getFullYear();for(let n=0;n<t;n++){const t=e+n,r=t===s,o=!!a.selectedDate&&a.selectedDate.getFullYear()===t,c=!!a.isYearDisabledFn&&a.isYearDisabledFn(t);let l=!1;if(a.selectedYearRange){const{startYear:e,endYear:i}=a.selectedYearRange;l=t>=e&&t<=i}i.push({year:t,isCurrentYear:r,isSelected:o,isDisabled:c,isInRange:l})}return i}createCalendarDateObject(e,t,a,i){let s=!!i.selectedDate&&n(e,i.selectedDate),r=!1,o=!1,c=!1;if(i.isRangeSelection){const t=i.selectedDateRange.startDate||i.selectedDateRange.start,a=i.selectedDateRange.endDate||i.selectedDateRange.end;t&&(o=n(e,t),a?(r=l(e,t,a),c=n(e,a),(o||c)&&(s=!0)):(r=o,o&&(s=!0)))}const d=!!i.focusedDate&&n(e,i.focusedDate);return{day:e.getDate(),month:e.getMonth(),year:e.getFullYear(),date:e,isCurrentMonth:t,isToday:n(e,a),isSelected:s,isFocused:d,isInRange:r,isRangeStart:o,isRangeEnd:c,isDisabled:!!i.isDateDisabledFn&&i.isDateDisabledFn(e)}}getCalendarDaysGenerator(e,t){return()=>{const a=e(),i=t();return this.generateCalendarDays(a.getFullYear(),a.getMonth(),i)}}generateMonthView(e,t,a){const i=this.generateCalendarDays(e,t,a),s=[];let n={days:[]};for(let e=0;e<i.length;e++){const t=i[e];if(e>0&&e%7==0){if(a.weekNumbers&&n.days.length>0){const e=n.days[0]?.date;e&&(n.weekNumber=this.getWeekNumber(e,a.locale))}s.push(n),n={days:[]}}n.days.push(t)}if(n.days.length>0){if(a.weekNumbers){const e=n.days[0]?.date;e&&(n.weekNumber=this.getWeekNumber(e,a.locale))}s.push(n)}const r=[],o=a.locale||"en-US",c=o.startsWith("en")||!1,l=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];for(let e=0;e<7;e++){const t=(a.firstDayOfWeek+e)%7;if(c)r.push(l[t]);else{const e=new Date(2e3,0,2+t),i=!1===a.fullWeekdays?"short":"long",s=new Intl.DateTimeFormat(o,{weekday:i});r.push(s.format(e))}}return{month:t,year:e,weeks:s,weekdays:r}}generateYearView(e,t){return{months:this.generateCalendarMonths(e,t),year:e}}generateDecadeView(e,t){const a=12===(t.yearRangeSize||10)?12:10,i=10*Math.floor(e/10),s=i+a-1;return{years:this.generateCalendarYears(i,a,t),startYear:i,endYear:s}}generateMultiYearView(e,t){const a=t.yearRangeSize||20,i=e,s=e+a-1,n=this.generateCalendarYears(i,a,t);if(t.selectedYearRange){const{startYear:e,endYear:a}=t.selectedYearRange;for(const t of n)e&&a&&t.year>=e&&t.year<=a&&(t.isInRange=!0)}const r=[];for(let e=0;e<a;e+=10)e+i<s&&r.push({startYear:e+i,endYear:Math.min(e+i+9,s)});return{years:n,decades:r,startYear:i,endYear:s}}}class ee{constructor(e,t){Object.defineProperty(this,"_constraintsService",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"_dateFormattingService",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"_firstDayOfWeek",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_dateFormat",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_hideOtherMonthDays",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"_showWeekNumbers",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"_isRangeSelection",{enumerable:!0,configurable:!0,writable:!0,value:!1})}applyConfiguration(e){let t=null,a=null,i=[];return void 0!==e.minDate&&(t=this._constraintsService.setMinDate(e.minDate)),void 0!==e.maxDate&&(a=this._constraintsService.setMaxDate(e.maxDate)),void 0!==e.disabledDates&&(i=this._constraintsService.setDisabledDates(e.disabledDates)),void 0!==e.firstDayOfWeek&&(this._firstDayOfWeek=e.firstDayOfWeek),void 0!==e.dateFormat&&(this._dateFormattingService.setDefaultFormat(e.dateFormat),this._dateFormat=e.dateFormat),void 0!==e.hideOtherMonthDays&&(this._hideOtherMonthDays=e.hideOtherMonthDays),void 0!==e.showWeekNumbers&&(this._showWeekNumbers=e.showWeekNumbers),void 0!==e.isRangeSelection&&(this._isRangeSelection=e.isRangeSelection),e.dateFormatOptions&&this._dateFormattingService.setDateFormatOptions(e.dateFormatOptions),{minDate:t,maxDate:a,disabledDates:i,selectedDate:e.initialSelectedDate||null,firstDayOfWeek:this._firstDayOfWeek,dateFormat:this._dateFormat,hideOtherMonthDays:this._hideOtherMonthDays,showWeekNumbers:this._showWeekNumbers,isRangeSelection:this._isRangeSelection,locale:e.locale,dateFormatOptions:e.dateFormatOptions}}getFirstDayOfWeek(){return this._firstDayOfWeek}setFirstDayOfWeek(e){return e>=0&&e<=6&&(this._firstDayOfWeek=e),this._firstDayOfWeek}getDateFormat(){return this._dateFormat}setDateFormat(e){return this._dateFormat=e,e&&this._dateFormattingService.setDefaultFormat(e),this._dateFormat}getHideOtherMonthDays(){return this._hideOtherMonthDays}setHideOtherMonthDays(e){return this._hideOtherMonthDays=e,this._hideOtherMonthDays}getShowWeekNumbers(){return this._showWeekNumbers}setShowWeekNumbers(e){return this._showWeekNumbers=e,this._showWeekNumbers}getIsRangeSelection(){return this._isRangeSelection}setIsRangeSelection(e){return this._isRangeSelection=e,this._isRangeSelection}}class te{constructor(e){Object.defineProperty(this,"_locale",{enumerable:!0,configurable:!0,writable:!0,value:"en-US"}),e&&(this._locale=e)}getMonthNames(e=!1){const t=[],a=new Intl.DateTimeFormat(this._locale,{month:e?"short":"long"});for(let e=0;e<12;e++){const i=new Date(2e3,e,1);t.push(a.format(i))}return t}getWeekdayNames(e=!1,t=0){const a=[],i=new Intl.DateTimeFormat(this._locale,{weekday:e?"short":"long"});for(let e=0;e<7;e++){const t=new Date(2023,0,e+1);a.push(i.format(t))}return 0!==t?[...a.slice(t),...a.slice(0,t)]:a}getShortWeekdayNames(e=0){return this.getWeekdayNames(!0,e)}getLocale(){return this._locale}setLocale(e){this._locale=e}formatDate(e,t){return new Intl.DateTimeFormat(this._locale,t).format(e)}getWeekNumber(e){let t=1,a=4;try{if("function"==typeof Intl.Locale){const e=new Intl.Locale(this._locale);e.weekInfo&&(t=e.weekInfo.firstDay,a=e.weekInfo.minDays)}}catch{}const i=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()));let s=i.getUTCDay();s=(s-t+7)%7,i.setUTCDate(i.getUTCDate()-s+(a-1));const n=new Date(Date.UTC(i.getUTCFullYear(),0,1));let r=n.getUTCDay();r=(r-t+7)%7;let o=new Date(n);if(o.setUTCDate(n.getUTCDate()+(a-1-r)),i<o)return this.getWeekNumber(new Date(e.getFullYear()-1,11,31));const c=i.getTime()-o.getTime();return Math.floor(c/6048e5)+1}}class ae{getAccessibleDateLabel(e,t){return e?t?`${t(e.getMonth())} ${e.getDate()}, ${e.getFullYear()}`:`${["January","February","March","April","May","June","July","August","September","October","November","December"][e.getMonth()]} ${e.getDate()}, ${e.getFullYear()}`:""}getDateStateDescription(e,t){if(!e)return"";const a=[];if(t.isTodayFn(e)&&a.push("today"),t.selectedDate){const i=new Date(e.getFullYear(),e.getMonth(),e.getDate()),s=new Date(t.selectedDate.getFullYear(),t.selectedDate.getMonth(),t.selectedDate.getDate());i.getTime()===s.getTime()&&a.push("selected")}if(t.isRangeSelection&&t.selectedDateRange){const{startDate:i,endDate:s}=t.selectedDateRange;i&&e.getDate()===i.getDate()&&e.getMonth()===i.getMonth()&&e.getFullYear()===i.getFullYear()&&a.push("range start"),s&&e.getDate()===s.getDate()&&e.getMonth()===s.getMonth()&&e.getFullYear()===s.getFullYear()&&a.push("range end")}return t.isDateDisabledFn(e)&&a.push("disabled"),a.join(", ")}moveFocus(e,t,a){let i=t||a||new Date;switch(i=new Date(i),e){case"right":i.setDate(i.getDate()+1);break;case"left":i.setDate(i.getDate()-1);break;case"up":i.setDate(i.getDate()-7);break;case"down":i.setDate(i.getDate()+7);break;case"start":i=new Date(i.getFullYear(),i.getMonth(),1);break;case"end":i=new Date(i.getFullYear(),i.getMonth()+1,0);break;case"prevMonth":const e=i.getDate();i.setMonth(i.getMonth()-1);const t=new Date(i.getFullYear(),i.getMonth()+1,0).getDate();e>t&&i.setDate(t);break;case"nextMonth":const a=i.getDate();i.setMonth(i.getMonth()+1);const n=new Date(i.getFullYear(),i.getMonth()+1,0).getDate();a>n&&i.setDate(n);break;case"prevYear":i.setFullYear(i.getFullYear()-1),1===i.getMonth()&&29===i.getDate()&&((s=i.getFullYear())%4==0&&s%100!=0||s%400==0||i.setDate(28));break;case"nextYear":i.setFullYear(i.getFullYear()+1),1===i.getMonth()&&29===i.getDate()&&((e=>e%4==0&&e%100!=0||e%400==0)(i.getFullYear())||i.setDate(28))}var s;return i}selectFocusedDate(e,t){return!!e&&(t(e),!0)}}class ie{constructor(e,t){Object.defineProperty(this,"_accessibilityService",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"_viewStateService",{enumerable:!0,configurable:!0,writable:!0,value:t})}manageFocus(e,t,a,i,s,n,r){const o=this._accessibilityService.moveFocus(e,t,a);return this._viewStateService.updateFocusedDate(o,s,n),(["prevMonth","nextMonth","prevYear","nextYear"].includes(e)||o.getMonth()!==i.getMonth()||o.getFullYear()!==i.getFullYear())&&r&&r(o),o}selectFocusedDate(e,t){return this._accessibilityService.selectFocusedDate(e,t)}getAccessibleDateLabel(e,t){return this._accessibilityService.getAccessibleDateLabel(e,t)}getDateStateDescription(e,t,a,i,s,n){return this._accessibilityService.getDateStateDescription(e,{selectedDate:t,selectedDateRange:a,isRangeSelection:i,isDateDisabledFn:s,isTodayFn:n})}getAriaLabel(e){return this._accessibilityService.getAccessibleDateLabel(e)}getAriaLabelForMonth(e,t){return`${["January","February","March","April","May","June","July","August","September","October","November","December"][e]} ${t}`}getAriaLabelForYear(e){return`Year ${e}`}}class se{constructor(e,t,a,i){Object.defineProperty(this,"_viewStateService",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"_dateSelectionService",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"_constraintsService",{enumerable:!0,configurable:!0,writable:!0,value:a}),Object.defineProperty(this,"_eventManagerService",{enumerable:!0,configurable:!0,writable:!0,value:i})}setMinDate(e,t,a,i,s,n){const r=this._constraintsService.setMinDate(e);return this._viewStateService.updateCurrentDate(a,i,s,n),r}setMaxDate(e,t,a,i,s,n){const r=this._constraintsService.setMaxDate(e);return this._viewStateService.updateCurrentDate(a,i,s,n),r}setDisabledDates(e,t,a,i,s){const n=this._constraintsService.setDisabledDates(e);return this._viewStateService.updateCurrentDate(t,a,i,s),n}addDisabledDate(e,t,a,i){if(!e)return t;if(t.some(t=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()))return t;const s=new Date(e),n=[...t,s];return a&&a.set(i()),n}removeDisabledDate(e,t,a,i){if(!e)return t;const s=t.filter(t=>!(e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()));return a&&a.set(i()),s}setRangeSelectionMode(e,t,a,i){return this._viewStateService.updateSelectionMode(e,t,a,i),e}clearSelection(e,t,a,i,s){const n=this._dateSelectionService.clearSelection(e);return this._viewStateService.updateSelectedDate(n.selectedDate,t,i,s),this._viewStateService.updateDateRange(n.selectedDateRange,a,i,s),n}focusDate(e,t){if(e){const a=new Date(e);return t&&t.set(a),a}return t&&t.set(null),null}selectDate(e,t,a,i,s,n,r,o){if(s(e))return{selectedDate:a,selectedDateRange:i};let c=a,l={...i};return t?(l=this._dateSelectionService.selectDateRange(e,i),this._viewStateService.updateDateRange(l,n.selectedDateRange,n.calendarDays,o),l.endDate&&r?.dateRangeSelected&&this._eventManagerService&&this._eventManagerService.emitDateRangeSelected(r.dateRangeSelected,l)):(c=this._dateSelectionService.selectDate(e),this.focusDate(c,n.focusedDate),this._viewStateService.updateSelectedDate(c,n.selectedDate,n.calendarDays,o),c&&r?.dateSelected&&this._eventManagerService&&this._eventManagerService.emitDateSelected(r.dateSelected,c)),{selectedDate:c,selectedDateRange:l}}getCurrentState(e,t,a,i,s,n,r,o,c){return{currentDate:e,selectedDate:t,selectedDateRange:a,focusedDate:i,isDateDisabledFn:s,isDateSelectedFn:n,isDateInRangeFn:r,isTodayFn:o,hasEventsFn:c}}}class ne{initializeBindings(e,t,a,i,s,n,r,o,c,l){const d=(new J).initializeBindings(e,t,a,i,s,n,c,l);return d.monthName.set(r(e.getMonth())),d.weekdays.set(o(i)),d.calendarMonths.set(c()),d.calendarYears.set(l()),d}applyConfiguration(e,t,a,i,s){let n=t,r=s;if(e){e.locale&&(n=e.locale),r=new te(n),a.setLocalizationService(r),i.setLocalizationService(r),e.dateFormatOptions&&i.setDateFormatOptions(e.dateFormatOptions);const t=new K,s=new ee(t,i),o=s.applyConfiguration(e);return{locale:n,minDate:o.minDate,maxDate:o.maxDate,disabledDates:o.disabledDates,selectedDate:o.selectedDate,firstDayOfWeek:o.firstDayOfWeek,dateFormat:o.dateFormat,isRangeSelection:o.isRangeSelection,hideOtherMonthDays:o.hideOtherMonthDays,localizationService:r,configurationService:s}}return{locale:n,minDate:null,maxDate:null,disabledDates:[],selectedDate:null,firstDayOfWeek:0,dateFormat:null,hideOtherMonthDays:!1,isRangeSelection:!1,localizationService:new te(n),configurationService:new ee(new K,new g)}}}class re{constructor(){Object.defineProperty(this,"_currentDate",{enumerable:!0,configurable:!0,writable:!0,value:new Date}),Object.defineProperty(this,"_selectedDate",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_selectedDateRange",{enumerable:!0,configurable:!0,writable:!0,value:{startDate:null,endDate:null}}),Object.defineProperty(this,"_focusedDate",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_minDate",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_maxDate",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_disabledDates",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"_disabledDaysOfWeek",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"_firstDayOfWeek",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_dateFormat",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_isRangeSelection",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"_hideOtherMonthDays",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"_locale",{enumerable:!0,configurable:!0,writable:!0,value:"en-US"}),Object.defineProperty(this,"_dateFormatOptions",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"_yearRangeSize",{enumerable:!0,configurable:!0,writable:!0,value:12}),Object.defineProperty(this,"_currentYearRangeBase",{enumerable:!0,configurable:!0,writable:!0,value:0})}get currentDate(){return this._currentDate}set currentDate(e){this._currentDate=e}get selectedDate(){return this._selectedDate}set selectedDate(e){this._selectedDate=e}get selectedDateRange(){return this._selectedDateRange}set selectedDateRange(e){this._selectedDateRange=e}get focusedDate(){return this._focusedDate}set focusedDate(e){this._focusedDate=e}get minDate(){return this._minDate}set minDate(e){this._minDate=e}get maxDate(){return this._maxDate}set maxDate(e){this._maxDate=e}get disabledDates(){return this._disabledDates}set disabledDates(e){this._disabledDates=e}get disabledDaysOfWeek(){return this._disabledDaysOfWeek}set disabledDaysOfWeek(e){this._disabledDaysOfWeek=e}get firstDayOfWeek(){return this._firstDayOfWeek}set firstDayOfWeek(e){this._firstDayOfWeek=e}get dateFormat(){return this._dateFormat}set dateFormat(e){this._dateFormat=e}get isRangeSelection(){return this._isRangeSelection}set isRangeSelection(e){this._isRangeSelection=e}get hideOtherMonthDays(){return this._hideOtherMonthDays}set hideOtherMonthDays(e){this._hideOtherMonthDays=e}get locale(){return this._locale}set locale(e){this._locale=e}get dateFormatOptions(){return this._dateFormatOptions}set dateFormatOptions(e){this._dateFormatOptions=e}get yearRangeSize(){return this._yearRangeSize}set yearRangeSize(e){this._yearRangeSize=e}get currentYearRangeBase(){return this._currentYearRangeBase}set currentYearRangeBase(e){this._currentYearRangeBase=e}getStateSnapshot(){return{currentDate:this._currentDate,selectedDate:this._selectedDate,selectedDateRange:{...this._selectedDateRange},focusedDate:this._focusedDate,minDate:this._minDate,maxDate:this._maxDate,disabledDates:[...this._disabledDates],disabledDaysOfWeek:[...this._disabledDaysOfWeek],firstDayOfWeek:this._firstDayOfWeek,dateFormat:this._dateFormat,isRangeSelection:this._isRangeSelection,hideOtherMonthDays:this._hideOtherMonthDays,locale:this._locale,dateFormatOptions:this._dateFormatOptions,yearRangeSize:this._yearRangeSize,currentYearRangeBase:this._currentYearRangeBase}}}class oe{updateAllBindings(e,t,a){const i=a||{selectedDate:!0,selectedDateRange:!0,focusedDate:!0,currentDate:!0,calendarDays:!0,calendarMonths:!0,calendarYears:!0,weekdays:!0,isRangeSelection:!0,currentYearRangeBase:!0},s=[];i.selectedDate&&e.selectedDate&&s.push(()=>e.selectedDate.set(t.selectedDate())),i.selectedDateRange&&e.selectedDateRange&&s.push(()=>e.selectedDateRange.set(t.selectedDateRange())),i.focusedDate&&e.focusedDate&&s.push(()=>e.focusedDate.set(t.focusedDate())),i.currentDate&&(e.currentDate&&s.push(()=>e.currentDate.set(new Date(t.currentDate()))),e.currentMonth&&s.push(()=>e.currentMonth.set(t.currentMonth())),e.currentYear&&s.push(()=>e.currentYear.set(t.currentYear())),e.monthName&&s.push(()=>e.monthName.set(t.monthName()))),i.calendarDays&&e.calendarDays&&s.push(()=>e.calendarDays.set(t.calendarDays())),i.calendarMonths&&e.calendarMonths&&s.push(()=>e.calendarMonths.set(t.calendarMonths())),i.calendarYears&&e.calendarYears&&s.push(()=>e.calendarYears.set(t.calendarYears())),i.weekdays&&e.weekdays&&s.push(()=>e.weekdays.set(t.weekdays())),i.isRangeSelection&&e.isRangeSelection&&s.push(()=>e.isRangeSelection.set(t.isRangeSelection())),i.currentYearRangeBase&&e.currentYearRangeBase&&s.push(()=>e.currentYearRangeBase.set(t.currentYearRangeBase())),this.executeBatchedBindingUpdates(s)}executeBatchedBindingUpdates(t){void 0===e.g||!e.g.jest&&"undefined"==typeof describe?("undefined"!=typeof requestAnimationFrame?requestAnimationFrame:e=>setTimeout(e,0))(()=>{t.forEach(e=>e())}):t.forEach(e=>e())}updateCalendarViewBindings(e,t){e.calendarDays&&e.calendarDays.set(t.calendarDays()),e.calendarMonths&&e.calendarMonths.set(t.calendarMonths()),e.calendarYears&&e.calendarYears.set(t.calendarYears())}}class ce{constructor(e,t,a){Object.defineProperty(this,"navigationService",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"stateManager",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"bindingsCoordinator",{enumerable:!0,configurable:!0,writable:!0,value:a})}goToMonth(e,t,a,i,s,n,r){this.stateManager.currentDate=new Date(t,e,1),this.updateCurrentDate(this.stateManager.currentDate,a,i,s,n