@uplink-protocol/calendar-controller
Version:
Flexible calendar API supporting both calendar and date-picker integrations for any JavaScript framework or library
1 lines • 73 kB
JavaScript
var e={};function t(e,t){return new Date(e,t+1,0).getDate()}function a(e,t){return new Date(e,t,1).getDay()}function i(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function n(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"),n=e.getFullYear();return t.replace("DD",a).replace("MM",i).replace("YYYY",n.toString()).replace("YY",n.toString().slice(-2))}function s(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 r(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 o(e,t,a){return!(t&&e<t||a&&e>a)}e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();class c{constructor(){Object.defineProperty(this,"_localizationService",{enumerable:!0,configurable:!0,writable:!0,value:null})}setLocalizationService(e){this._localizationService=e}getLocalizationService(){return this._localizationService}generateCalendarDays(e,i,n){const s=t(e,i),r=a(e,i),o=new Date,c=[];let l=(r-n.firstDayOfWeek+7)%7;if(l>0&&!n.hideOtherMonthDays){const a=0===i?11:i-1,s=0===i?e-1:e,r=t(s,a);for(let e=0;e<l;e++){const t=new Date(s,a,r-l+e+1);c.push(this.createCalendarDateObject(t,!1,o,n))}}for(let t=1;t<=s;t++){const a=new Date(e,i,t);c.push(this.createCalendarDateObject(a,!0,o,n))}const h=42-c.length;if(h>0&&!n.hideOtherMonthDays){const t=11===i?0:i+1,a=11===i?e+1:e;for(let e=1;e<=h;e++){const i=new Date(a,t,e);c.push(this.createCalendarDateObject(i,!1,o,n))}}return c}createCalendarDateObject(e,t,a,n){const s=!!n.selectedDate&&i(e,n.selectedDate);let r=!1,o=!1,c=!1;if(n.isRangeSelection&&n.selectedDateRange.startDate&&n.selectedDateRange.endDate){const t=n.selectedDateRange.startDate,a=n.selectedDateRange.endDate;t&&a&&(r=e>=t&&e<=a,o=i(e,t),c=i(e,a))}return{day:e.getDate(),month:e.getMonth(),year:e.getFullYear(),isCurrentMonth:t,isToday:i(e,a),isSelected:s,isInRange:r,isRangeStart:o,isRangeEnd:c,isDisabled:!!n.isDateDisabledFn&&n.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 l{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 n=new Date(e);return a?i?(a=n,i=null):n<a?(i=new Date(a),a=n):i=n:(a=n,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&&i(e,t)}isDateInRange(e,t){const a={isInRange:!1,isRangeStart:!1,isRangeEnd:!1};if(!t.startDate||!t.endDate)return t.startDate&&i(e,t.startDate)&&(a.isRangeStart=!0,a.isInRange=!0),a;const n=new Date(e);n.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=n>=s&&n<=r,a.isRangeStart=i(n,s),a.isRangeEnd=i(n,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 n=new Date(t.endDate);return n.setHours(0,0,0,0),a>=i&&a<=n}}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 i(e,t)}}class d{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)}const a="string"==typeof t?t:this._defaultFormat;if(!a)return e.toISOString().split("T")[0];const i=e.getDate().toString().padStart(2,"0"),n=(e.getMonth()+1).toString().padStart(2,"0"),s=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",s.toString()).replace("YY",s.toString().slice(-2)).replace("MM",n).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,n=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"),n=parseInt(e.substring(i,i+2),10);a=n+(n>=0&&n<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"),n=e.charAt(a),s=e.charAt(a+1);i=s&&/\d/.test(s)?parseInt(n+s,10)-1:parseInt(n,10)-1}if(t.includes("DD")){const a=t.indexOf("DD");n=parseInt(e.substring(a,a+2),10)}else if(t.includes("D")){const a=t.indexOf("D"),i=e.charAt(a),s=e.charAt(a+1);n=s&&/\d/.test(s)?parseInt(i+s,10):parseInt(i,10)}const s=new Date(a,i,n);return isNaN(s.getTime())?null:s}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 u={d:(e,t)=>{for(var a in t)u.o(t,a)&&!u.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},g={};u.d(g,{o8:()=>T,T6:()=>D,Dy:()=>b,ai:()=>v,RW:()=>x,bk:()=>m,Xu:()=>R,Nw:()=>y,_t:()=>C,f:()=>E,op:()=>W,BV:()=>f,Pq:()=>A,vA:()=>O,Kj:()=>M,hq:()=>p,KF:()=>j,XG:()=>U,tt:()=>k,gT:()=>L,Ay:()=>H,y9:()=>I,yl:()=>N,fO:()=>w,vB:()=>_,Ly:()=>P,nj:()=>z,ZZ:()=>F,hh:()=>Y,Xr:()=>B});class D{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 D.instance||(D.instance=new D),D.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 b{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 b{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 v{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=D.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 _(){return D.getInstance()}class m{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 y{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 p(e,t,a){const i=new v(e,a);e.__adapter=i,"initialize"in e&&"function"==typeof e.initialize?Promise.resolve(e.initialize()).then((()=>{S(e,t,i)})).catch((a=>{console.error("Error initializing controller:",a),S(e,t,i)})):S(e,t,i)}function S(e,t,a){if(a.connect(t),e.events&&Object.entries(e.events).forEach((([t,a])=>{a instanceof m&&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 w(e){e.__adapter&&(e.__adapter.disconnect(),delete e.__adapter)}function M(e,t,a){const i=new y(t(...e.map((e=>a.bindings[e].current)))),n=e.map((n=>a.bindings[n].subscribe((()=>{i.set(t(...e.map((e=>a.bindings[e].current))))}))));return i.cleanup=()=>{n.forEach((e=>e()))},i}function O(e){e()}function F(e){_().registerAdapter(e)}function Y(e){_().setDefaultAdapter(e)}class C{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 R{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 C({},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=k(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 k(e,t){const a=[];return t.querySelectorAll("[data-uplink]").forEach((t=>{const i=t.getAttribute("data-uplink");if(!i||!e.bindings[i])return;const n=e.bindings[i];if(t instanceof HTMLInputElement){if(n.current instanceof Date&&e.methods?.formatDate){const a=e.methods.formatDate,i=e.bindings.format?.current||"yyyy-MM-dd";t.value=a(n.current,i)}else t.value=n.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 n.set(t.value)})),a.push(n.subscribe((a=>{if(a instanceof Date&&e.methods?.formatDate){const i=e.methods.formatDate,n=e.bindings.format?.current||"yyyy-MM-dd";t.value=i(a,n)}else t.value=a?.toString()||""})))}else t.textContent=n.current?.toString()||"",a.push(n.subscribe((e=>{t.textContent=e?.toString()||""})))})),()=>{a.forEach((e=>e()))}}class T extends R{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 C(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 P(){return x.getInstance()}function W(e){return function(t){return x.getInstance().register(e,(()=>new t)),t}}function j(e,t){return new y(e,t)}function N(){return"vanilla"}function A(){const e=_();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 z(){A()}"undefined"!=typeof window&&setTimeout((()=>{A()}),0);class E{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 p(this.controller,this.element,"vanilla"),()=>this.disconnect()}disconnect(){this._eventUnsubscribes.forEach((e=>e())),this._eventUnsubscribes=[],w(this.controller),this.element=null}}function B(e,t={}){let a;a="string"==typeof e?P().create(e):"function"==typeof e?e():e;const i={},n="all"===t.trackBindings?Object.keys(a.bindings||{}):t.trackBindings||[];n.forEach((e=>{a.bindings&&a.bindings[e]&&(i[e]=a.bindings[e].current)}));const s=[];n.forEach((e=>{if(a.bindings&&a.bindings[e]){const t=a.bindings[e].subscribe((t=>{i[e]=t}));s.push(t)}}));const r=new E(a);return{controller:a,state:i,methods:a.methods||{},events:a.events||{},connect:(e,t={})=>r.connect(e,t),disconnect:()=>{s.forEach((e=>e())),r.disconnect()}}}function I(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?P().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 E(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 U(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?j(i.initialValue,{customSet:i.customSet,customSubscribe:i.customSubscribe}):j(i)}return t}function L(e){const t={};if(Array.isArray(e))e.forEach((e=>{t[e]=new m}));else for(const a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=new m);return t}const H={connectController:p,disconnectController:w,createBindings:U,createEventEmitters:L,StandardBinding:y,EventEmitter:m,ControllerAdapter:v};var $=g.bk,V=g.KF;class J{initializeBindings(e,t,a,i,n,s,r,o){return{currentMonth:V(e.getMonth()),currentYear:V(e.getFullYear()),currentDate:V(new Date(e)),monthName:V(""),calendarDays:V(s()),calendarMonths:V(r()),calendarYears:V(o()),selectedDate:V(t),selectedDateRange:V(a),focusedDate:V(null),weekdays:V([]),isRangeSelection:V(n),currentYearRangeBase:V(0)}}updateCurrentDate(e,t,a,i,n,s,r){const o=e.getMonth(),c=e.getFullYear();if(t&&"object"==typeof t&&"currentMonth"in t){const e=t,n=a,s=i;e.currentMonth.set(o),e.currentYear.set(c),e.monthName.set(n(o)),e.calendarDays.set(s())}else{const e=a,l=i,h=n;if(t.set(o),e.set(c),l.set(h(o)),s&&r){const e=r;s.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 G{initializeEvents(){return{dateSelected:new $,dateRangeSelected:new $,monthChanged:new $,yearChanged:new $,viewChanged:new $,yearRangeChanged:new $}}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,n=[]){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 s=e.getDay();return n.includes(s)}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,i,n){const s=t(e,i),r=a(e,i),o=new Date,c=[];let l=(r-n.firstDayOfWeek+7)%7;if(l>0&&!n.hideOtherMonthDays){const a=0===i?11:i-1,s=0===i?e-1:e,r=t(s,a);for(let e=0;e<l;e++){const t=new Date(s,a,r-l+e+1);c.push(this.createCalendarDateObject(t,!1,o,n))}}for(let t=1;t<=s;t++){const a=new Date(e,i,t);c.push(this.createCalendarDateObject(a,!0,o,n))}const h=42-c.length;if(h>0&&!n.hideOtherMonthDays){const t=11===i?0:i+1,a=11===i?e+1:e;for(let e=1;e<=h;e++){const i=new Date(a,t,e);c.push(this.createCalendarDateObject(i,!1,o,n))}}return c}generateCalendarMonths(e,t){const a=[],i=t.currentDate||new Date,n=i.getMonth(),r=i.getFullYear();for(let i=0;i<12;i++){const o=e===r&&i===n,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:s(i),isCurrentMonth:o,isSelected:c,isDisabled:l})}return a}generateCalendarYears(e,t,a){const i=[],n=a.currentDate?.getFullYear()??(new Date).getFullYear();for(let s=0;s<t;s++){const t=e+s,r=t===n,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,n){let s=!!n.selectedDate&&i(e,n.selectedDate),r=!1,c=!1,l=!1;if(n.isRangeSelection){const t=n.selectedDateRange.startDate||n.selectedDateRange.start,a=n.selectedDateRange.endDate||n.selectedDateRange.end;t&&(c=i(e,t),a?(r=o(e,t,a),l=i(e,a),(c||l)&&(s=!0)):(r=c,c&&(s=!0)))}const h=!!n.focusedDate&&i(e,n.focusedDate);return{day:e.getDate(),month:e.getMonth(),year:e.getFullYear(),date:e,isCurrentMonth:t,isToday:i(e,a),isSelected:s,isFocused:h,isInRange:r,isRangeStart:c,isRangeEnd:l,isDisabled:!!n.isDateDisabledFn&&n.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),n=[];let s={days:[]};for(let e=0;e<i.length;e++){const t=i[e];if(e>0&&e%7==0){if(a.weekNumbers&&s.days.length>0){const e=s.days[0]?.date;e&&(s.weekNumber=this.getWeekNumber(e,a.locale))}n.push(s),s={days:[]}}s.days.push(t)}if(s.days.length>0){if(a.weekNumbers){const e=s.days[0]?.date;e&&(s.weekNumber=this.getWeekNumber(e,a.locale))}n.push(s)}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",n=new Intl.DateTimeFormat(o,{weekday:i});r.push(n.format(e))}}return{month:t,year:e,weeks:n,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),n=i+a-1;return{years:this.generateCalendarYears(i,a,t),startYear:i,endYear:n}}generateMultiYearView(e,t){const a=t.yearRangeSize||20,i=e,n=e+a-1,s=this.generateCalendarYears(i,a,t);if(t.selectedYearRange){const{startYear:e,endYear:a}=t.selectedYearRange;for(const t of s)e&&a&&t.year>=e&&t.year<=a&&(t.isInRange=!0)}const r=[];for(let e=0;e<a;e+=10)e+i<n&&r.push({startYear:e+i,endYear:Math.min(e+i+9,n)});return{years:s,decades:r,startYear:i,endYear:n}}}class Z{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 Q{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 n=i.getUTCDay();n=(n-t+7)%7,i.setUTCDate(i.getUTCDate()-n+(a-1));const s=new Date(Date.UTC(i.getUTCFullYear(),0,1));let r=s.getUTCDay();r=(r-t+7)%7;let o=new Date(s);if(o.setUTCDate(s.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 ee{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()),n=new Date(t.selectedDate.getFullYear(),t.selectedDate.getMonth(),t.selectedDate.getDate());i.getTime()===n.getTime()&&a.push("selected")}if(t.isRangeSelection&&t.selectedDateRange){const{startDate:i,endDate:n}=t.selectedDateRange;i&&e.getDate()===i.getDate()&&e.getMonth()===i.getMonth()&&e.getFullYear()===i.getFullYear()&&a.push("range start"),n&&e.getDate()===n.getDate()&&e.getMonth()===n.getMonth()&&e.getFullYear()===n.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 s=new Date(i.getFullYear(),i.getMonth()+1,0).getDate();a>s&&i.setDate(s);break;case"prevYear":i.setFullYear(i.getFullYear()-1),1===i.getMonth()&&29===i.getDate()&&((n=i.getFullYear())%4==0&&n%100!=0||n%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 n;return i}selectFocusedDate(e,t){return!!e&&(t(e),!0)}}class te{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,n,s,r){const o=this._accessibilityService.moveFocus(e,t,a);return this._viewStateService.updateFocusedDate(o,n,s),(["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,n,s){return this._accessibilityService.getDateStateDescription(e,{selectedDate:t,selectedDateRange:a,isRangeSelection:i,isDateDisabledFn:n,isTodayFn:s})}}class ae{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,n,s){const r=this._constraintsService.setMinDate(e);return this._viewStateService.updateCurrentDate(a,i,n,s),r}setMaxDate(e,t,a,i,n,s){const r=this._constraintsService.setMaxDate(e);return this._viewStateService.updateCurrentDate(a,i,n,s),r}setDisabledDates(e,t,a,i,n){const s=this._constraintsService.setDisabledDates(e);return this._viewStateService.updateCurrentDate(t,a,i,n),s}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 n=new Date(e),s=[...t,n];return a&&a.set(i()),s}removeDisabledDate(e,t,a,i){if(!e)return t;const n=t.filter((t=>!(e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate())));return a&&a.set(i()),n}setRangeSelectionMode(e,t,a,i){return this._viewStateService.updateSelectionMode(e,t,a,i),e}clearSelection(e,t,a,i,n){const s=this._dateSelectionService.clearSelection(e);return this._viewStateService.updateSelectedDate(s.selectedDate,t,i,n),this._viewStateService.updateDateRange(s.selectedDateRange,a,i,n),s}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,n,s,r,o){if(n(e))return{selectedDate:a,selectedDateRange:i};let c=a,l={...i};return t?(l=this._dateSelectionService.selectDateRange(e,i),this._viewStateService.updateDateRange(l,s.selectedDateRange,s.calendarDays,o),l.endDate&&r?.dateRangeSelected&&this._eventManagerService&&this._eventManagerService.emitDateRangeSelected(r.dateRangeSelected,l)):(c=this._dateSelectionService.selectDate(e),this.focusDate(c,s.focusedDate),this._viewStateService.updateSelectedDate(c,s.selectedDate,s.calendarDays,o),c&&r?.dateSelected&&this._eventManagerService&&this._eventManagerService.emitDateSelected(r.dateSelected,c)),{selectedDate:c,selectedDateRange:l}}}class ie{initializeBindings(e,t,a,i,n,s,r,o,c,l){const h=(new J).initializeBindings(e,t,a,i,n,s,c,l);return h.monthName.set(r(e.getMonth())),h.weekdays.set(o(i)),h.calendarMonths.set(c()),h.calendarYears.set(l()),h}applyConfiguration(e,t,a,i,n){let s=t,r=n;if(e){e.locale&&(s=e.locale),r=new Q(s),a.setLocalizationService(r),i.setLocalizationService(r),e.dateFormatOptions&&i.setDateFormatOptions(e.dateFormatOptions);const t=new K,n=new Z(t,i),o=n.applyConfiguration(e);return{locale:s,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:n}}return{locale:s,minDate:null,maxDate:null,disabledDates:[],selectedDate:null,firstDayOfWeek:0,dateFormat:null,hideOtherMonthDays:!1,isRangeSelection:!1,localizationService:new Q(s),configurationService:new Z(new K,new d)}}}class ne{constructor(e){Object.defineProperty(this,"bindings",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),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,"options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"nextMonth",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"prevMonth",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"previousMonth",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"nextYear",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"prevYear",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),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}),Object.defineProperty(this,"_calendarService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_localizationService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_dateFormattingService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_dateSelectionService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_viewStateService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_eventManagerService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_navigationService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_constraintsService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_calendarGeneratorService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_configurationService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_accessibilityService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_accessibilityManagerService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_calendarStateService",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._calendarService=new c,this._dateFormattingService=new d,this._dateSelectionService=new l,this._viewStateService=new J,this._eventManagerService=new G,this._navigationService=new q,this._constraintsService=new K,this._calendarGeneratorService=new X,this._localizationService=new Q,this._configurationService=new Z(this._constraintsService,this._dateFormattingService),this._accessibilityService=new ee,this._accessibilityManagerService=new te(this._accessibilityService,this._viewStateService),this._calendarStateService=new ae(this._viewStateService,this._dateSelectionService,this._constraintsService,this._eventManagerService),this._calendarService.setLocalizationService(this._localizationService),this._dateFormattingService.setLocalizationService(this._localizationService);const t=new ie;if(e){const a=t.applyConfiguration(e,this._locale,this._calendarService,this._dateFormattingService,this._localizationService);this._localizationService=a.localizationService,this._configurationService=a.configurationService,this._locale=a.locale,this._calendarService.setLocalizationService(this._localizationService),this._dateFormattingService.setLocalizationService(this._localizationService),e.initialSelectedDate&&(this._selectedDate=e.initialSelectedDate),e.minDate&&(this._minDate=e.minDate),e.maxDate&&(this._maxDate=e.maxDate),void 0!==e.firstDayOfWeek&&(this._firstDayOfWeek=e.firstDayOfWeek),e.dateFormat&&(this._dateFormat=e.dateFormat),void 0!==e.isRangeSelection&&(this._isRangeSelection=e.isRangeSelection),void 0!==e.hideOtherMonthDays&&(this._hideOtherMonthDays=e.hideOtherMonthDays),e.dateFormatOptions&&(this._dateFormatOptions=e.dateFormatOptions),e.disabledDates&&(this._disabledDates=[...e.disabledDates]),e.disabledDaysOfWeek&&(this._disabledDaysOfWeek=this._constraintsService.setDisabledDaysOfWeek(e.disabledDaysOfWeek))}this.bindings=this._viewStateService.initializeBindings(this._currentDate,this._selectedDate,this._selectedDateRange,this._firstDayOfWeek,this._isRangeSelection,(()=>this.generateCalendarDays()),(()=>this.generateCalendarMonths()),(()=>this.generateCalendarYears())),this.events=this._eventManagerService.initializeEvents(),this.bindings.monthName.set(this._calendarService.getMonthName(this._currentDate.getMonth())),this.methods={selectDate:this.selectDate.bind(this),goToMonth:this.goToMonth.bind(this),goToYear:this.goToYear.bind(this),goToDate:this.goToDate.bind(this),goToNextMonth:this.goToNextMonth.bind(this),goToPreviousMonth:this.goToPreviousMonth.bind(this),goToNextYear:this.goToNextYear.bind(this),goToPrevious