2 lines
52 KiB
JavaScript
2 lines
52 KiB
JavaScript
/*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */
|
||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VanillaCalendarPro={})}(this,(function(e){"use strict";var t=Object.defineProperty,n=Object.defineProperties,a=Object.getOwnPropertyDescriptors,o=Object.getOwnPropertySymbols,l=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable,r=(e,n,a)=>n in e?t(e,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[n]=a,i=(e,t)=>{for(var n in t||(t={}))l.call(t,n)&&r(e,n,t[n]);if(o)for(var n of o(t))s.call(t,n)&&r(e,n,t[n]);return e},c=(e,t,n)=>(r(e,"symbol"!=typeof t?t+"":t,n),n);const d=e=>`${e} is not found, check the first argument passed to new Calendar.`,u='The calendar has not been initialized, please initialize it using the "init()" method first.',m="You specified an incorrect language label or did not specify the required number of values for «locale.weekdays» or «locale.months».",h="The value of the time property can be: false, 12 or 24.",v="For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1.",p=(e,t,n)=>{e.context[t]=n},y=new WeakSet,x="data-vc-prev-tabindex",g=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),b=e=>{if(e.hasAttribute(x))return;const t=e.getAttribute("tabindex");e.setAttribute(x,null!=t?t:"")},f=e=>{if(!e.hasAttribute(x))return;const t=e.getAttribute(x);""===t||null===t?e.removeAttribute("tabindex"):e.setAttribute("tabindex",t),e.removeAttribute(x)},M=e=>{if(e.context.isShowInInputMode&&e.context.currentType){if(e.context.mainElement.dataset.vcCalendarHidden="",p(e,"isShowInInputMode",!1),e.inputMode&&(e=>{g(e)&&(b(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>g(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;b(e),e.tabIndex=-1}})(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach((e=>e())),p(e,"cleanupHandlers",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)){("function"==typeof e.openOnFocus||!0===e.openOnFocus)&&(e=>{y.add(e)})(e),e.context.inputElement.focus()}e.onHide&&e.onHide(e)}};function D(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function E(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function w(e){const{top:t,left:n}={left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0},{top:a,left:o}=D(e),{vh:l,vw:s}=E(),r=a-t,i=o-n;return{top:r,bottom:l-(r+e.clientHeight),left:i,right:s-(i+e.clientWidth)}}function T(e,t,n=5){const a={top:!0,bottom:!0,left:!0,right:!0},o=[];if(!t||!e)return{canShow:a,parentPositions:o};const{bottom:l,top:s}=w(e),{top:r,left:i}=D(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:m}=E(),h=m/2,v=u/2;return[{condition:r<v,position:"top"},{condition:r>v,position:"bottom"},{condition:i<h,position:"left"},{condition:i>h,position:"right"}].forEach((({condition:e,position:t})=>{e&&o.push(t)})),Object.assign(a,{top:c<=s-n,bottom:c<=l-n,left:d<=i,right:d<=m-i}),{canShow:a,parentPositions:o}}const k=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,a])=>((e,t,n,a)=>{var o;const l=a.querySelector(`[data-vc-date="${t}"]`),s=null==l?void 0:l.querySelector("[data-vc-date-btn]");if(!l||!s)return;if((null==n?void 0:n.modifier)&&s.classList.add(...n.modifier.trim().split(" ")),!(null==n?void 0:n.html))return;const r=document.createElement("div");r.className=e.styles.datePopup,r.dataset.vcDatePopup="",r.innerHTML=e.sanitizerHTML(n.html),s.ariaExpanded="true",s.ariaLabel=`${s.ariaLabel}, ${null==(o=null==r?void 0:r.textContent)?void 0:o.replace(/^\s+|\s+(?=\s)|\s+$/g,"").replace(/ /g," ")}`,l.appendChild(r),requestAnimationFrame((()=>{if(!r)return;const{canShow:e}=T(l,r),t=e.bottom?l.offsetHeight:-r.offsetHeight,n=e.left&&!e.right?l.offsetWidth-r.offsetWidth/2:!e.left&&e.right?r.offsetWidth/2:0;Object.assign(r.style,{left:`${n}px`,top:`${t}px`})}))})(e,n,a,t))))},A=e=>new Date(`${e}T00:00:00`),$=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,C=e=>e.reduce(((e,t)=>{if(t instanceof Date||"number"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\d{4}-\d{2}-\d{2})$/g)?e.push(t):t.replace(/(\d{4}-\d{2}-\d{2}).*?(\d{4}-\d{2}-\d{2})/g,((t,n,a)=>{const o=A(n),l=A(a),s=new Date(o.getTime());for(;s<=l;s.setDate(s.getDate()+1))e.push($(s));return t}));return e}),[]),S=(e,t,n,a="")=>{t?e.setAttribute(n,a):e.getAttribute(n)===a&&e.removeAttribute(n)},Y=(e,t,n,a,o,l,s)=>{var r,i,c,d;const u=A(e.context.displayDateMin)>A(l)||A(e.context.displayDateMax)<A(l)||(null==(r=e.context.disableDates)?void 0:r.includes(l))||!e.selectionMonthsMode&&"current"!==s||!e.selectionYearsMode&&A(l).getFullYear()!==t;S(n,u,"data-vc-date-disabled"),a&&S(a,u,"aria-disabled","true"),a&&S(a,u,"tabindex","-1"),S(n,!e.disableToday&&e.context.dateToday===l,"data-vc-date-today"),S(n,!e.disableToday&&e.context.dateToday===l,"aria-current","date"),S(n,null==(i=e.selectedWeekends)?void 0:i.includes(o),"data-vc-date-weekend");const m=(null==(c=e.selectedHolidays)?void 0:c[0])?C(e.selectedHolidays):[];if(S(n,m.includes(l),"data-vc-date-holiday"),(null==(d=e.context.selectedDates)?void 0:d.includes(l))?(n.setAttribute("data-vc-date-selected",""),a&&a.setAttribute("aria-selected","true"),e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode&&(e.context.selectedDates[0]===l&&e.context.selectedDates[e.context.selectedDates.length-1]===l?n.setAttribute("data-vc-date-selected","first-and-last"):e.context.selectedDates[0]===l?n.setAttribute("data-vc-date-selected","first"):e.context.selectedDates[e.context.selectedDates.length-1]===l&&n.setAttribute("data-vc-date-selected","last"),e.context.selectedDates[0]!==l&&e.context.selectedDates[e.context.selectedDates.length-1]!==l&&n.setAttribute("data-vc-date-selected","middle"))):n.hasAttribute("data-vc-date-selected")&&(n.removeAttribute("data-vc-date-selected"),a&&a.removeAttribute("aria-selected")),!e.context.disableDates.includes(l)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode){const t=A(e.context.selectedDates[0]),a=A(e.context.selectedDates[e.context.selectedDates.length-1]),o=A(l);S(n,o>t&&o<a,"data-vc-date-selected","middle")}},N=(e,t)=>{const n=A(e),a=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-a);const o=new Date(n.getFullYear(),0,1),l=Math.ceil(((+n-+o)/864e5+1)/7);return{year:n.getFullYear(),week:l}},L=(e,t,n,a,o,l)=>{const s=A(o).getDay(),r="string"==typeof e.locale&&e.locale.length?e.locale:"en",i=document.createElement("div");let c;i.className=e.styles.date,i.dataset.vcDate=o,i.dataset.vcDateMonth=l,i.dataset.vcDateWeekDay=String(s),i.role="gridcell",("current"===l||e.displayDatesOutside)&&(c=document.createElement("button"),c.className=e.styles.dateBtn,c.type="button",c.ariaLabel=((e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n))(o,r,{dateStyle:"long",timeZone:"UTC"}),c.dataset.vcDateBtn="",c.innerText=String(a),i.appendChild(c)),e.enableWeekNumbers&&((e,t,n)=>{const a=N(n,e.firstWeekday);a&&(t.dataset.vcDateWeekNumber=String(a.week))})(e,i,o),((e,t,n)=>{var a,o,l,s,r;const i=null==(a=e.disableWeekdays)?void 0:a.includes(n),c=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!i&&!c||(null==(l=e.context.enableDates)?void 0:l.includes(t))||(null==(s=e.context.disableDates)?void 0:s.includes(t))||(e.context.disableDates.push(t),null==(r=e.context.disableDates)||r.sort(((e,t)=>+new Date(e)-+new Date(t))))})(e,o,s),Y(e,t,i,c,s,o,l),n.addDate(i),e.onCreateDateEls&&e.onCreateDateEls(e,i)},H=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc="dates"]'),a=e.context.mainElement.querySelectorAll('[data-vc-week="numbers"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=""),n.textContent="";const l=new Date(t);l.setMonth(l.getMonth()+o);const s=l.getMonth(),r=l.getFullYear(),i=(new Date(r,s,1).getDay()-e.firstWeekday+7)%7,c=new Date(r,s+1,0).getDate(),d=i+c,u=Math.ceil(d/7),m=7*u-d,h=[];for(let t=0;t<u;t++){const t=document.createElement("div");t.className=e.styles.datesRow,t.setAttribute("data-vc-dates","row"),t.setAttribute("role","row"),h.push(t)}let v=0,p=0;const y={addDate:e=>{h[v].appendChild(e),p++,p>=7&&(v++,p=0)}};((e,t,n,a,o)=>{let l=new Date(n,a,0).getDate()-(o-1);const s=0===a?n-1:n,r=0===a?12:a<10?`0${a}`:a;for(let a=o;a>0;a--,l++)L(e,n,t,l,`${s}-${r}-${l}`,"prev")})(e,y,r,s,i),((e,t,n,a,o)=>{for(let l=1;l<=n;l++){const n=new Date(a,o,l);L(e,a,t,l,$(n),"current")}})(e,y,c,r,s),((e,t,n,a,o)=>{const l=o+1===12?a+1:a,s=o+1===12?"01":o+2<10?`0${o+2}`:o+2;for(let o=1;o<=n;o++){const n=o<10?`0${o}`:String(o);L(e,a,t,o,`${l}-${s}-${n}`,"next")}})(e,y,m,r,s);for(const e of h)n.appendChild(e);k(e,n),((e,t,n,a,o)=>{if(!e.enableWeekNumbers)return;a.textContent="";const l=document.createElement("b");l.className=e.styles.weekNumbersTitle,l.innerText="#",l.dataset.vcWeekNumbers="title",a.appendChild(l);const s=document.createElement("div");s.className=e.styles.weekNumbersContent,s.dataset.vcWeekNumbers="content",a.appendChild(s);const r=document.createElement("button");r.type="button",r.className=e.styles.weekNumber;const i=o.querySelectorAll("[data-vc-date]"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=i[0===t?6:7*t].dataset.vcDate,a=N(n,e.firstWeekday);if(!a)return;const o=r.cloneNode(!0);o.innerText=String(a.week),o.dataset.vcWeekNumber=String(a.week),o.dataset.vcWeekYear=String(a.year),o.role="rowheader",o.ariaLabel=`${a.week}`,s.appendChild(o)}})(e,i,c,a[o],n)}))},W=e=>`\n <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n <#ArrowPrev [month] />\n <div class="${e.styles.headerContent}" data-vc-header="content">\n <#Month />\n <#Year />\n </div>\n <#ArrowNext [month] />\n </div>\n <div class="${e.styles.wrapper}" data-vc="wrapper">\n <#WeekNumbers />\n <div class="${e.styles.content}" data-vc="content" role="grid">\n <#Week />\n <#Dates />\n <#DateRangeTooltip />\n </div>\n </div>\n <#ControlTime />\n`,I=e=>`\n <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n <div class="${e.styles.headerContent}" data-vc-header="content">\n <#Month />\n <#Year />\n </div>\n </div>\n <div class="${e.styles.wrapper}" data-vc="wrapper">\n <div class="${e.styles.content}" data-vc="content">\n <#Months />\n </div>\n </div>\n`,F=e=>`\n <div class="${e.styles.controls}" data-vc="controls" role="toolbar" aria-label="${e.labels.navigation}">\n <#ArrowPrev [month] />\n <#ArrowNext [month] />\n </div>\n <div class="${e.styles.grid}" data-vc="grid">\n <#Multiple>\n <div class="${e.styles.column}" data-vc="column" role="region">\n <div class="${e.styles.header}" data-vc="header">\n <div class="${e.styles.headerContent}" data-vc-header="content">\n <#Month />\n <#Year />\n </div>\n </div>\n <div class="${e.styles.wrapper}" data-vc="wrapper">\n <#WeekNumbers />\n <div class="${e.styles.content}" data-vc="content" role="grid">\n <#Week />\n <#Dates />\n </div>\n </div>\n </div>\n <#/Multiple>\n <#DateRangeTooltip />\n </div>\n <#ControlTime />\n`,P=e=>`\n <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n <#ArrowPrev [year] />\n <div class="${e.styles.headerContent}" data-vc-header="content">\n <#Month />\n <#Year />\n </div>\n <#ArrowNext [year] />\n </div>\n <div class="${e.styles.wrapper}" data-vc="wrapper">\n <div class="${e.styles.content}" data-vc="content">\n <#Years />\n </div>\n </div>\n`,q={ArrowNext:(e,t)=>`<button type="button" class="${e.styles.arrowNext}" data-vc-arrow="next" aria-label="${e.labels.arrowNext[t]}"></button>`,ArrowPrev:(e,t)=>`<button type="button" class="${e.styles.arrowPrev}" data-vc-arrow="prev" aria-label="${e.labels.arrowPrev[t]}"></button>`,ControlTime:e=>e.selectionTimeMode?`<div class="${e.styles.time}" data-vc="time" role="group" aria-label="${e.labels.selectingTime}"></div>`:"",Dates:e=>`<div class="${e.styles.dates}" data-vc="dates" aria-live="assertive" aria-label="${e.labels.dates}" ${"multiple"===e.type?"aria-multiselectable":""}></div>`,DateRangeTooltip:e=>e.onCreateDateRangeTooltip?`<div class="${e.styles.dateRangeTooltip}" data-vc-date-range-tooltip="hidden"></div>`:"",Month:e=>`<button type="button" class="${e.styles.month}" data-vc="month"></button>`,Months:e=>`<div class="${e.styles.months}" data-vc="months" role="grid" aria-live="assertive" aria-label="${e.labels.months}"></div>`,Week:e=>`<div class="${e.styles.week}" data-vc="week" role="row" aria-label="${e.labels.week}"></div>`,WeekNumbers:e=>e.enableWeekNumbers?`<div class="${e.styles.weekNumbers}" data-vc-week="numbers" role="row" aria-label="${e.labels.weekNumber}"></div>`:"",Year:e=>`<button type="button" class="${e.styles.year}" data-vc="year"></button>`,Years:e=>`<div class="${e.styles.years}" data-vc="years" role="grid" aria-live="assertive" aria-label="${e.labels.years}"></div>`},O=(e,t)=>t.replace(/[\n\t]/g,"").replace(/<#(?!\/?Multiple)(.*?)>/g,((t,n)=>{const a=(n.match(/\[(.*?)\]/)||[])[1],o=n.replace(/[/\s\n\t]|\[(.*?)\]/g,""),l=q[o];const s=l?l(e,null!=a?a:null):"";return e.sanitizerHTML(s)})).replace(/[\n\t]/g,""),_=(e,t)=>{const n={default:W,month:I,year:P,multiple:F};if(Object.keys(n).forEach((t=>{const a=t;e.layouts[a].length||(e.layouts[a]=n[a](e))})),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc="calendar",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role="application",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,"multiple"!==e.context.currentType){if("multiple"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc="controls"]'),a=e.context.mainElement.querySelector('[data-vc="grid"]'),o=t.closest('[data-vc="column"]');return n&&n.remove(),a&&(a.dataset.vcGrid="hidden"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(O(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(O(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(((e,t)=>t.replace(new RegExp("<#Multiple>(.*?)<#\\/Multiple>","gs"),((t,n)=>{const a=Array(e.context.displayMonthsCount).fill(n).join("");return e.sanitizerHTML(a)})).replace(/[\n\t]/g,""))(e,O(e,e.layouts[e.context.currentType])))},R=(e,t,n,a)=>{e.style.visibility=n?"hidden":"",t.style.visibility=a?"hidden":""},K=e=>{if("month"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow="prev"]'),n=e.context.mainElement.querySelector('[data-vc-arrow="next"]');if(!t||!n)return;const a={default:()=>((e,t,n)=>{const a=A($(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(a.getTime()),l=new Date(a.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),l.setMonth(l.getMonth()+e.monthsToSwitch);const s=A(e.context.dateMin),r=A(e.context.dateMax);e.selectionYearsMode||(s.setFullYear(a.getFullYear()),r.setFullYear(a.getFullYear()));const i=!e.selectionMonthsMode||o.getFullYear()<s.getFullYear()||o.getFullYear()===s.getFullYear()&&o.getMonth()<s.getMonth(),c=!e.selectionMonthsMode||l.getFullYear()>r.getFullYear()||l.getFullYear()===r.getFullYear()&&l.getMonth()>r.getMonth()-(e.context.displayMonthsCount-1);R(t,n,i,c)})(e,t,n),year:()=>((e,t,n)=>{const a=A(e.context.dateMin),o=A(e.context.dateMax),l=!!(a.getFullYear()&&e.context.displayYear-7<=a.getFullYear()),s=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());R(t,n,l,s)})(e,t,n)};a["multiple"===e.context.currentType?"default":e.context.currentType]()},z=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc="month"]'),n=e.context.mainElement.querySelectorAll('[data-vc="year"]'),a=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>((e,t,n,a,o)=>{const l=new Date(a.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),s=new Date(a.setMonth(e.context.selectedMonth+n)).getMonth(),r=e.context.locale.months.long[s],i=t.closest('[data-vc="column"]');i&&(i.ariaLabel=`${r} ${l}`);const c={month:{id:s,label:r},year:{id:l,label:l}};t.innerText=String(c[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(c[o].id),t.ariaLabel=`${e.labels[o]} ${c[o].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[o]||"only-arrows"===d[o];u&&(t.tabIndex=-1),t.disabled=u})(e,t,n,a,t.dataset.vc)))))},j=(e,t,n,a,o)=>{var l;const s={month:"[data-vc-months-month]",year:"[data-vc-years-year]"},r={month:{selected:"data-vc-months-month-selected",aria:"aria-selected",value:"vcMonthsMonth",selectedProperty:"selectedMonth"},year:{selected:"data-vc-years-year-selected",aria:"aria-selected",value:"vcYearsYear",selectedProperty:"selectedYear"}};o&&(null==(l=e.context.mainElement.querySelectorAll(s[n]))||l.forEach((e=>{e.removeAttribute(r[n].selected),e.removeAttribute(r[n].aria)})),p(e,r[n].selectedProperty,Number(t.dataset[r[n].value])),z(e),"year"===n&&K(e)),a&&(t.setAttribute(r[n].selected,""),t.setAttribute(r[n].aria,"true"))},U=(e,t)=>{var n;if("multiple"!==e.type)return{currentValue:null,columnID:0};const a=e.context.mainElement.querySelectorAll('[data-vc="column"]'),o=Array.from(a).findIndex((e=>e.closest(`[data-vc-column="${t}"]`)));return{currentValue:o>=0?Number(null==(n=a[o].querySelector(`[data-vc="${t}"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(o,0)}},B=(e,t,n,a,o,l,s)=>{const r=t.cloneNode(!1);return r.className=e.styles.monthsMonth,r.innerText=a,r.ariaLabel=o,r.role="gridcell",r.dataset.vcMonthsMonth=`${s}`,l&&(r.ariaDisabled="true"),l&&(r.tabIndex=-1),r.disabled=l,j(e,r,"month",n===s,!1),r},Z=(e,t)=>{var n,a;const o=null==(n=null==t?void 0:t.closest('[data-vc="header"]'))?void 0:n.querySelector('[data-vc="year"]'),l=o?Number(o.dataset.vcYear):e.context.selectedYear,s=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;p(e,"currentType","month"),_(e,t),z(e);const r=e.context.mainElement.querySelector('[data-vc="months"]');if(!e.selectionMonthsMode||!r)return;const i=e.monthsToSwitch>1?e.context.locale.months.long.map(((t,n)=>s-e.monthsToSwitch*n)).concat(e.context.locale.months.long.map(((t,n)=>s+e.monthsToSwitch*n))).filter((e=>e>=0&&e<=12)):Array.from(Array(12).keys()),c=document.createElement("button");c.type="button";for(let t=0;t<12;t++){const n=A(e.context.dateMin),a=A(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:d}=U(e,"month"),u=l<=n.getFullYear()&&t<n.getMonth()+d||l>=a.getFullYear()&&t>a.getMonth()-o+d||l>a.getFullYear()||t!==s&&!i.includes(t),m=B(e,c,s,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);r.appendChild(m),e.onCreateMonthEls&&e.onCreateMonthEls(e,m)}null==(a=e.context.mainElement.querySelector("[data-vc-months-month]:not([disabled])"))||a.focus()},G=(e,t,n,a,o)=>`\n <label class="${t}" data-vc-time-input="${e}">\n <input type="text" name="${e}" maxlength="2" aria-label="${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${a}" ${o?"disabled":""}>\n </label>\n`,V=(e,t,n,a,o,l,s)=>`\n <label class="${t}" data-vc-time-range="${e}">\n <input type="range" name="${e}" min="${a}" max="${o}" step="${l}" aria-label="${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${s}">\n </label>\n`,J=(e,t,n,a)=>{({hour:()=>p(e,"selectedHours",n),minute:()=>p(e,"selectedMinutes",n)})[a](),p(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:""}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},X=(e,t)=>{var n;return(null==(n={0:{AM:"00",PM:"12"},1:{AM:"01",PM:"13"},2:{AM:"02",PM:"14"},3:{AM:"03",PM:"15"},4:{AM:"04",PM:"16"},5:{AM:"05",PM:"17"},6:{AM:"06",PM:"18"},7:{AM:"07",PM:"19"},8:{AM:"08",PM:"20"},9:{AM:"09",PM:"21"},10:{AM:"10",PM:"22"},11:{AM:"11",PM:"23"},12:{AM:"00",PM:"12"}}[Number(e)])?void 0:n[t])||String(e)},Q=e=>({0:"12",13:"01",14:"02",15:"03",16:"04",17:"05",18:"06",19:"07",20:"08",21:"09",22:"10",23:"11"}[Number(e)]||String(e)),ee=(e,t,n,a)=>{e.value=n,t.value=a},te=(e,t,n,a,o,l,s)=>{const r={hour:(r,i,c)=>{if(!e.selectionTimeMode)return;const d={12:()=>{if(!e.context.selectedKeeping)return;const d=Number(X(i,e.context.selectedKeeping));if(!(d<=l&&d>=s))return ee(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));ee(n,t,Q(i),X(i,e.context.selectedKeeping)),r>12&&((e,t,n)=>{t&&n&&(p(e,"selectedKeeping",n),t.innerText=n)})(e,a,"PM"),J(e,c,Q(i),o)},24:()=>{if(!(r<=l&&r>=s))return ee(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));ee(n,t,i,i),J(e,c,i,o)}};d[e.selectionTimeMode]()},minute:(a,r,i)=>{if(!(a<=l&&a>=s))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,i,!0));n.value=r,t.value=r,J(e,i,r,o)}},i=e=>{const t=Number(n.value),a=n.value.padStart(2,"0");r[o]&&r[o](t,a,e)};return n.addEventListener("change",i),()=>{n.removeEventListener("change",i)}},ne=(e,t,n,a,o)=>{const l=l=>{const s=Number(t.value),r=t.value.padStart(2,"0"),i="hour"===o,c=24===e.selectionTimeMode,d=s>0&&s<12;i&&!c&&((e,t,n)=>{t&&(p(e,"selectedKeeping",n),t.innerText=n)})(e,a,0===s||d?"AM":"PM"),((e,t,n,a,o)=>{t.value=o,J(e,n,o,a)})(e,n,l,o,!i||c||d?r:Q(t.value))};return t.addEventListener("input",l),()=>{t.removeEventListener("input",l)}},ae=e=>e.setAttribute("data-vc-input-focus",""),oe=e=>e.removeAttribute("data-vc-input-focus"),le=(e,t)=>{const n=t.querySelector('[data-vc-time-range="hour"] input[name="hour"]'),a=t.querySelector('[data-vc-time-range="minute"] input[name="minute"]'),o=t.querySelector('[data-vc-time-input="hour"] input[name="hour"]'),l=t.querySelector('[data-vc-time-input="minute"] input[name="minute"]'),s=t.querySelector('[data-vc-time="keeping"]');if(!(n&&a&&o&&l))return;const r=e=>{e.target===n&&ae(o),e.target===a&&ae(l)},i=e=>{e.target===n&&oe(o),e.target===a&&oe(l)};return t.addEventListener("mouseover",r),t.addEventListener("mouseout",i),te(e,n,o,s,"hour",e.timeMaxHour,e.timeMinHour),te(e,a,l,s,"minute",e.timeMaxMinute,e.timeMinMinute),ne(e,n,o,s,"hour"),ne(e,a,l,s,"minute"),s&&((e,t,n,a,o)=>{const l=l=>{const s="AM"===e.context.selectedKeeping?"PM":"AM",r=X(e.context.selectedHours,s);Number(r)<=a&&Number(r)>=o?(p(e,"selectedKeeping",s),n.value=r,J(e,l,e.context.selectedHours,"hour"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,l,!0)};t.addEventListener("click",l)})(e,s,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener("mouseover",r),t.removeEventListener("mouseout",i)}},se=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce(((n,a,o)=>[...n,{id:o,titleShort:e.context.locale.weekdays.short[o],titleLong:a,isWeekend:t.includes(o)}]),[]),a=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc="week"]').forEach((t=>{const n=e.onClickWeekDay?document.createElement("button"):document.createElement("b");e.onClickWeekDay&&(n.type="button"),a.forEach((a=>{const o=n.cloneNode(!0);o.innerText=a.titleShort,o.className=e.styles.weekDay,o.role="columnheader",o.ariaLabel=a.titleLong,o.dataset.vcWeekDay=String(a.id),a.isWeekend&&(o.dataset.vcWeekDayOff=""),t.appendChild(o)}))}))},re=(e,t,n,a,o)=>{const l=t.cloneNode(!1);return l.className=e.styles.yearsYear,l.innerText=String(o),l.ariaLabel=String(o),l.role="gridcell",l.dataset.vcYearsYear=`${o}`,a&&(l.ariaDisabled="true"),a&&(l.tabIndex=-1),l.disabled=a,j(e,l,"year",n===o,!1),l},ie=(e,t)=>{var n;const a=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;p(e,"currentType","year"),_(e,t),z(e),K(e);const o=e.context.mainElement.querySelector('[data-vc="years"]');if(!e.selectionYearsMode||!o)return;const l="multiple"!==e.type||e.context.selectedYear===a?0:1,s=document.createElement("button");s.type="button";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<A(e.context.dateMin).getFullYear()+l||t>A(e.context.dateMax).getFullYear(),r=re(e,s,a,n,t);o.appendChild(r),e.onCreateYearEls&&e.onCreateYearEls(e,r)}null==(n=e.context.mainElement.querySelector("[data-vc-years-year]:not([disabled])"))||n.focus()},ce={value:!1,set:()=>ce.value=!0,check:()=>ce.value},de=(e,t)=>e.dataset.vcTheme=t,ue=(e,t)=>{if(de(e.context.mainElement,t.matches?"dark":"light"),"system"!==e.selectedTheme||ce.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc="calendar"]');null==t||t.forEach((t=>de(t,e.matches?"dark":"light")))};t.addEventListener?t.addEventListener("change",n):t.addListener(n),ce.set()},me=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,a=e.themeAttrDetect.replace(/^.*\[(.+)\]/g,((e,t)=>t));if(!n||"system"===n.getAttribute(a))return void ue(e,t);const o=n.getAttribute(a);o?(de(e.context.mainElement,o),((e,t,n)=>{new MutationObserver((e=>{for(let a=0;a<e.length;a++)if(e[a].attributeName===t){n();break}})).observe(e,{attributes:!0})})(n,a,(()=>{const t=n.getAttribute(a);t&&de(e.context.mainElement,t)}))):ue(e,t)},he=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\./,""),ve=e=>{var t,n,a,o,l,s,r,c;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if("string"==typeof e.locale){if("string"==typeof e.locale&&!e.locale.length)throw new Error(m);Array.from({length:7},((t,n)=>((e,t,n)=>{const a=new Date(`1978-01-0${t+1}T00:00:00.000Z`),o=a.toLocaleString(n,{weekday:"short",timeZone:"UTC"}),l=a.toLocaleString(n,{weekday:"long",timeZone:"UTC"});e.context.locale.weekdays.short.push(he(o)),e.context.locale.weekdays.long.push(he(l))})(e,n,e.locale))),Array.from({length:12},((t,n)=>((e,t,n)=>{const a=new Date(`1978-${String(t+1).padStart(2,"0")}-01T00:00:00.000Z`),o=a.toLocaleString(n,{month:"short",timeZone:"UTC"}),l=a.toLocaleString(n,{month:"long",timeZone:"UTC"});e.context.locale.months.short.push(he(o)),e.context.locale.months.long.push(he(l))})(e,n,e.locale)))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(o=null==(a=e.locale)?void 0:a.weekdays)?void 0:o.long[6])&&(null==(s=null==(l=e.locale)?void 0:l.months)?void 0:s.short[11])&&(null==(c=null==(r=e.locale)?void 0:r.months)?void 0:c.long[11])))throw new Error(m);p(e,"locale",i({},e.locale))}},pe=e=>{const t={default:()=>{se(e),H(e)},multiple:()=>{se(e),H(e)},month:()=>Z(e),year:()=>ie(e)};(e=>{"not all"!==window.matchMedia("(prefers-color-scheme)").media?"system"===e.selectedTheme?me(e,window.matchMedia("(prefers-color-scheme: dark)")):de(e.context.mainElement,e.selectedTheme):de(e.context.mainElement,"light")})(e),ve(e),_(e),z(e),K(e),(e=>{const t=e.context.mainElement.querySelector('[data-vc="time"]');if(!e.selectionTimeMode||!t)return;const[n,a]=[e.timeMinHour,e.timeMaxHour],[o,l]=[e.timeMinMinute,e.timeMaxMinute],s=e.context.selectedKeeping?X(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,r="range"===e.timeControls;var i;t.innerHTML=e.sanitizerHTML(`\n <div class="${e.styles.timeContent}" data-vc-time="content">\n ${G("hour",e.styles.timeHour,e.labels,e.context.selectedHours,r)}\n ${G("minute",e.styles.timeMinute,e.labels,e.context.selectedMinutes,r)}\n ${12===e.selectionTimeMode?(i=e.context.selectedKeeping,`<button type="button" class="${e.styles.timeKeeping}" aria-label="${e.labels.btnKeeping} ${i}" data-vc-time="keeping" ${r?"disabled":""}>${i}</button>`):""}\n </div>\n <div class="${e.styles.timeRanges}" data-vc-time="ranges">\n ${V("hour",e.styles.timeRange,e.labels,n,a,e.timeStepHour,s)}\n ${V("minute",e.styles.timeRange,e.labels,o,l,e.timeStepMinute,e.context.selectedMinutes)}\n </div>\n `),le(e,t)})(e),t[e.context.currentType]()},ye=e=>{const t=t=>{var n;const a=t.target;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key)||"button"!==a.localName)return;const o=Array.from(e.context.mainElement.querySelectorAll('[data-vc="calendar"] button')),l=o.indexOf(a);if(-1===l)return;const s=(r=o[l]).hasAttribute("data-vc-date-btn")?7:r.hasAttribute("data-vc-months-month")?4:r.hasAttribute("data-vc-years-year")?5:1;var r;const i=(0,{ArrowUp:()=>Math.max(0,l-s),ArrowDown:()=>Math.min(o.length-1,l+s),ArrowLeft:()=>Math.max(0,l-1),ArrowRight:()=>Math.min(o.length-1,l+1)}[t.key])();null==(n=o[i])||n.focus()};return e.context.mainElement.addEventListener("keydown",t),()=>e.context.mainElement.removeEventListener("keydown",t)},xe=(e,t)=>{const n=A($(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),p(e,"selectedMonth",n.getMonth()),p(e,"selectedYear",n.getFullYear()),z(e),K(e),H(e)},ge=(e,t)=>void 0===t||("function"==typeof t?t(e):t),be=e=>ge(e,e.enableDateToggle),fe=(e,t,n)=>{const a=t.dataset.vcDate,o=t.closest("[data-vc-date][data-vc-date-selected]"),l=be(e);if(o&&!l)return;const s=o?e.context.selectedDates.filter((e=>e!==a)):n?[...e.context.selectedDates,a]:[a];p(e,"selectedDates",s)},Me=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip="hidden",void(t.textContent="");const a=e.context.mainElement.getBoundingClientRect(),o=n.getBoundingClientRect();t.style.left=o.left-a.left+o.width/2+"px",t.style.top=o.bottom-a.top-o.height+"px",t.dataset.vcDateRangeTooltip="visible",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,o,a))},De={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},Ee=(e,t,n)=>{var a,o,l;if(!(null==(o=null==(a=De.self)?void 0:a.context)?void 0:o.selectedDates[0]))return;const s=$(e);(null==(l=De.self.context.disableDates)?void 0:l.includes(s))||(De.self.context.mainElement.querySelectorAll(`[data-vc-date="${s}"]`).forEach((e=>e.dataset.vcDateHover="")),t.forEach((e=>e.dataset.vcDateHover="first")),n.forEach((e=>{"first"===e.dataset.vcDateHover?e.dataset.vcDateHover="first-and-last":e.dataset.vcDateHover="last"})))},we=()=>{var e,t;if(!(null==(t=null==(e=De.self)?void 0:e.context)?void 0:t.mainElement))return;De.self.context.mainElement.querySelectorAll("[data-vc-date-hover]").forEach((e=>e.removeAttribute("data-vc-date-hover")))},Te=e=>t=>{const n=t.target;De.isHovering||(De.isHovering=!0,requestAnimationFrame((()=>{e(n),De.isHovering=!1})))},ke=Te((e=>{var t,n;if(!e||!(null==(n=null==(t=De.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc="dates"]'))return De.lastDateEl=null,Me(De.self,De.tooltipEl,null),void we();const a=e.closest("[data-vc-date]");if(!a||De.lastDateEl===a)return;De.lastDateEl=a,Me(De.self,De.tooltipEl,a),we();const o=a.dataset.vcDate,l=A(De.self.context.selectedDates[0]),s=A(o),r=De.self.context.mainElement.querySelectorAll(`[data-vc-date="${De.self.context.selectedDates[0]}"]`),i=De.self.context.mainElement.querySelectorAll(`[data-vc-date="${o}"]`),[c,d]=l<s?[r,i]:[i,r],[u,m]=l<s?[l,s]:[s,l];for(let e=new Date(u);e<=m;e.setDate(e.getDate()+1))Ee(e,c,d)})),Ae=Te((e=>{const t=null==e?void 0:e.closest("[data-vc-date-selected]");if(!t&&De.lastDateEl)return De.lastDateEl=null,void Me(De.self,De.tooltipEl,null);t&&De.lastDateEl!==t&&(De.lastDateEl=t,Me(De.self,De.tooltipEl,t))})),$e=e=>{De.self&&"Escape"===e.key&&(De.lastDateEl=null,p(De.self,"selectedDates",[]),De.self.context.mainElement.removeEventListener("mousemove",ke),De.self.context.mainElement.removeEventListener("keydown",$e),Me(De.self,De.tooltipEl,null),we())},Ce=()=>{null!==De.timeoutId&&clearTimeout(De.timeoutId),De.timeoutId=setTimeout((()=>{De.lastDateEl=null,Me(De.self,De.tooltipEl,null),we()}),50)},Se=(e,t)=>{De.self=e,De.lastDateEl=t,we(),e.disableDatesGaps&&(De.rangeMin=De.rangeMin?De.rangeMin:e.context.displayDateMin,De.rangeMax=De.rangeMax?De.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(De.tooltipEl=e.context.mainElement.querySelector("[data-vc-date-range-tooltip]"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),a=t&&!be(e)?[n,n]:t&&be(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];p(e,"selectedDates",a),e.context.selectedDates.length>1&&e.context.selectedDates.sort(((e,t)=>+new Date(e)-+new Date(t)))}({set:()=>(e.disableDatesGaps&&(()=>{var e,t,n,a;if(!(null==(n=null==(t=null==(e=De.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(a=De.self.context.disableDates)?void 0:a[0]))return;const o=A(De.self.context.selectedDates[0]),[l,s]=De.self.context.disableDates.map((e=>A(e))).reduce((([e,t],n)=>[o>=n?n:e,o<n&&null===t?n:t]),[null,null]);l&&p(De.self,"displayDateMin",$(new Date(l.setDate(l.getDate()+1)))),s&&p(De.self,"displayDateMax",$(new Date(s.setDate(s.getDate()-1)))),De.self.disableDatesPast&&!De.self.disableAllDates&&A(De.self.context.displayDateMin)<A(De.self.context.dateToday)&&p(De.self,"displayDateMin",De.self.context.dateToday)})(),Me(De.self,De.tooltipEl,t),De.self.context.mainElement.removeEventListener("mousemove",Ae),De.self.context.mainElement.removeEventListener("mouseleave",Ce),De.self.context.mainElement.removeEventListener("keydown",$e),De.self.context.mainElement.addEventListener("mousemove",ke),De.self.context.mainElement.addEventListener("mouseleave",Ce),De.self.context.mainElement.addEventListener("keydown",$e),()=>{De.self.context.mainElement.removeEventListener("mousemove",ke),De.self.context.mainElement.removeEventListener("mouseleave",Ce),De.self.context.mainElement.removeEventListener("keydown",$e)}),reset:()=>{const[n,a]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],o=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],l=C([`${n}:${a}`]).filter((t=>!e.context.disableDates.includes(t))),s=o?e.enableEdgeDatesOnly?[n,a]:l:[e.context.selectedDates[0],e.context.selectedDates[0]];if(p(e,"selectedDates",s),e.disableDatesGaps&&(p(e,"displayDateMin",De.rangeMin),p(e,"displayDateMax",De.rangeMax)),De.self.context.mainElement.removeEventListener("mousemove",ke),De.self.context.mainElement.removeEventListener("mouseleave",Ce),De.self.context.mainElement.removeEventListener("keydown",$e),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(De.self.context.mainElement.removeEventListener("mousemove",Ae),De.self.context.mainElement.removeEventListener("mouseleave",Ce),Me(De.self,De.tooltipEl,null)),e.context.selectedDates[0]&&(De.self.context.mainElement.addEventListener("mousemove",Ae),De.self.context.mainElement.addEventListener("mouseleave",Ce),Me(De.self,De.tooltipEl,t)),()=>{De.self.context.mainElement.removeEventListener("mousemove",Ae),De.self.context.mainElement.removeEventListener("mouseleave",Ce)}}})[1===e.context.selectedDates.length?"set":"reset"]()},Ye=e=>{e.context.mainElement.querySelectorAll("[data-vc-date]").forEach((t=>{const n=t.querySelector("[data-vc-date-btn]"),a=t.dataset.vcDate,o=A(a).getDay();Y(e,e.context.selectedYear,t,n,o,a,"current")}))},Ne=["month","year"],Le=(e,t,n)=>{const{currentValue:a,columnID:o}=U(e,t);return"month"===e.context.currentType&&o>=0?n-o:"year"===e.context.currentType&&e.context.selectedYear!==a?n-1:n},He=(e,t,n,a)=>{var o;const l={year:()=>{if("multiple"===e.type)return((e,t)=>{const n=Le(e,"year",Number(t.dataset.vcYearsYear)),a=A(e.context.dateMin),o=A(e.context.dateMax),l=e.context.displayMonthsCount-1,{columnID:s}=U(e,"year"),r=e.context.selectedMonth<a.getMonth()&&n<=a.getFullYear(),i=e.context.selectedMonth>o.getMonth()-l+s&&n>=o.getFullYear(),c=n<a.getFullYear(),d=n>o.getFullYear(),u=r||c?a.getFullYear():i||d?o.getFullYear():n,m=r||c?a.getMonth():i||d?o.getMonth()-l+s:e.context.selectedMonth;p(e,"selectedYear",u),p(e,"selectedMonth",m)})(e,a);p(e,"selectedYear",Number(a.dataset.vcYearsYear))},month:()=>{if("multiple"===e.type)return((e,t)=>{const n=t.closest('[data-vc-column="month"]').querySelector('[data-vc="year"]'),a=Le(e,"month",Number(t.dataset.vcMonthsMonth)),o=Number(n.dataset.vcYear),l=A(e.context.dateMin),s=A(e.context.dateMax),r=a<l.getMonth()&&o<=l.getFullYear(),i=a>s.getMonth()&&o>=s.getFullYear();p(e,"selectedYear",o),p(e,"selectedMonth",r?l.getMonth():i?s.getMonth():a)})(e,a);p(e,"selectedMonth",Number(a.dataset.vcMonthsMonth))}};l[n]();({year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}})[n](),e.context.currentType!==e.type?(p(e,"currentType",e.type),pe(e),null==(o=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||o.focus()):j(e,a,n,!0,!0)},We=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};Ne.forEach((a=>{n[a]&&t.target&&((e,t,n)=>{var a;const o=t.target,l=o.closest(`[data-vc="${n}"]`),s={year:()=>ie(e,o),month:()=>Z(e,o)};if(l&&e.onClickTitle&&e.onClickTitle(e,t),l&&e.context.currentType!==n)return s[n]();const r=o.closest(`[data-vc-${n}s-${n}]`);if(r)return He(e,t,n,r);const i=o.closest('[data-vc="grid"]'),c=o.closest('[data-vc="column"]');(e.context.currentType===n&&l||"multiple"===e.type&&e.context.currentType===n&&i&&!c)&&(p(e,"currentType",e.type),pe(e),null==(a=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||a.focus())})(e,t,a)}))},Ie=e=>{const t=t=>{((e,t)=>{const n=t.target.closest("[data-vc-arrow]");if(n){if(["default","multiple"].includes(e.context.currentType))xe(e,n.dataset.vcArrow);else if("year"===e.context.currentType&&void 0!==e.context.displayYear){const a={prev:-15,next:15}[n.dataset.vcArrow];p(e,"displayYear",e.context.displayYear+a),ie(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}})(e,t),((e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest("[data-vc-week-day]"),a=t.target.closest('[data-vc="column"]'),o=a?a.querySelectorAll("[data-vc-date-week-day]"):e.context.mainElement.querySelectorAll("[data-vc-date-week-day]");if(!n||!o[0])return;const l=Number(n.dataset.vcWeekDay),s=Array.from(o).filter((e=>Number(e.dataset.vcDateWeekDay)===l));e.onClickWeekDay(e,l,s,t)})(e,t),((e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest("[data-vc-week-number]"),a=e.context.mainElement.querySelectorAll("[data-vc-date-week-number]");if(!n||!a[0])return;const o=Number(n.innerText),l=Number(n.dataset.vcWeekYear),s=Array.from(a).filter((e=>Number(e.dataset.vcDateWeekNumber)===o));e.onClickWeekNumber(e,o,l,s,t)})(e,t),((e,t)=>{var n;const a=t.target,o=a.closest("[data-vc-date-btn]");if(!e.selectionDatesMode||!["single","multiple","multiple-ranged"].includes(e.selectionDatesMode)||!o)return;const l=o.closest("[data-vc-date]");({single:()=>fe(e,l,!1),multiple:()=>fe(e,l,!0),"multiple-ranged":()=>Se(e,l)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort(((e,t)=>+new Date(e)-+new Date(t))),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const s=a.closest('[data-vc-date-month="prev"]'),r=a.closest('[data-vc-date-month="next"]');({prev:()=>e.enableMonthChangeOnDayClick?xe(e,"prev"):Ye(e),next:()=>e.enableMonthChangeOnDayClick?xe(e,"next"):Ye(e),current:()=>Ye(e)})[s?"prev":r?"next":"current"]()})(e,t),We(e,t)};return e.context.mainElement.addEventListener("click",t),()=>e.context.mainElement.removeEventListener("click",t)},Fe=(e,t)=>"today"===e?(()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)})():e instanceof Date||"number"==typeof e||"string"==typeof e?C([e])[0]:t,Pe=(e,t,n)=>{p(e,"selectedMonth",t),p(e,"selectedYear",n),p(e,"displayYear",n)},qe=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=A(C(e.selectedDates)[0]);return void Pe(e,t.getMonth(),t.getFullYear())}if((e=>{const t=t=>{const n=new Date(t);Pe(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&"today"!==e.displayDateMin&&(n=e.displayDateMin,a=new Date,new Date(n).getTime()>a.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?C(e.selectedDates)[0]:e.displayDateMin;return t(A(Fe(n,e.displayDateMin))),!0}var n,a;if(e.displayDateMax&&"today"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?C(e.selectedDates)[0]:e.displayDateMax;return t(A(Fe(n,e.displayDateMax))),!0}return!1})(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,a=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;Pe(e,n?Number(e.selectedMonth):A(e.context.dateToday).getMonth(),a?Number(e.selectedYear):A(e.context.dateToday).getFullYear())},Oe=e=>{p(e,"currentType",e.type),(e=>{if("multiple"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(v);if("multiple"!==e.type&&e.displayMonthsCount>1)throw new Error(v);p(e,"displayMonthsCount",e.displayMonthsCount?e.displayMonthsCount:"multiple"===e.type?2:1)})(e),(e=>{var t,n,a;const o=Fe(e.dateMin,e.dateMin),l=Fe(e.dateMax,e.dateMax),s=Fe(e.displayDateMin,o),r=Fe(e.displayDateMax,l);p(e,"dateToday",Fe(e.dateToday,e.dateToday)),p(e,"displayDateMin",s?A(o)>=A(s)?o:s:o),p(e,"displayDateMax",r?A(l)<=A(r)?l:r:l);const i=e.disableDatesPast&&!e.disableAllDates&&A(s)<A(e.context.dateToday);p(e,"displayDateMin",i||e.disableAllDates?e.context.dateToday:s),p(e,"displayDateMax",e.disableAllDates?e.context.dateToday:r),p(e,"disableDates",e.disableDates[0]&&!e.disableAllDates?C(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),p(e,"enableDates",e.enableDates[0]?C(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&p(e,"disableDates",e.context.disableDates.filter((t=>!e.context.enableDates.includes(t)))),e.context.enableDates.length>1&&e.context.enableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),(null==(a=e.context.enableDates)?void 0:a[0])&&e.disableAllDates&&(p(e,"displayDateMin",e.context.enableDates[0]),p(e,"displayDateMax",e.context.enableDates[e.context.enableDates.length-1])),p(e,"dateMin",e.displayDisabledDates?o:e.context.displayDateMin),p(e,"dateMax",e.displayDisabledDates?l:e.context.displayDateMax)})(e),qe(e),(e=>{var t;p(e,"selectedDates",(null==(t=e.selectedDates)?void 0:t[0])?C(e.selectedDates):[])})(e),(e=>{var t,n,a;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(h);const o=12===e.selectionTimeMode,l=o?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[s,r,i]=null!=(a=null==(n=null==(t=e.selectedTime)?void 0:t.match(l))?void 0:n.slice(1))?a:[];s?o&&!i&&(i="AM"):(s=o?Q(String(e.timeMinHour)):String(e.timeMinHour),r=String(e.timeMinMinute),i=o?Number(Q(String(e.timeMinHour)))>=12?"PM":"AM":null),p(e,"selectedHours",s.padStart(2,"0")),p(e,"selectedMinutes",r.padStart(2,"0")),p(e,"selectedKeeping",i),p(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${i?` ${i}`:""}`)})(e)},_e=(e,{year:t,month:n,dates:a,time:o,locale:l},s=!0)=>{var r;const i={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};if(e.selectedYear=t?i.year:e.context.selectedYear,e.selectedMonth=n?i.month:e.context.selectedMonth,e.selectedTime=o?i.time:e.context.selectedTime,e.selectedDates="only-first"===a&&(null==(r=e.context.selectedDates)?void 0:r[0])?[e.context.selectedDates[0]]:!0===a?i.dates:e.context.selectedDates,l){p(e,"locale",{months:{short:[],long:[]},weekdays:{short:[],long:[]}})}Oe(e),s&&pe(e),e.selectedYear=i.year,e.selectedMonth=i.month,e.selectedDates=i.dates,e.selectedTime=i.time,"multiple-ranged"===e.selectionDatesMode&&a&&Se(e,null)},Re=e=>{p(e,"inputElement",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout((()=>Ue(e))):(e=>{const t=document.createElement("div");t.className=e.styles.calendar,t.dataset.vc="calendar",t.dataset.vcInput="",t.dataset.vcCalendarHidden="",p(e,"inputModeInit",!0),p(e,"isShowInInputMode",!1),p(e,"mainElement",t),document.body.appendChild(e.context.mainElement),_e(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout((()=>Ue(e))),e.onInit&&e.onInit(e),ye(e),Ie(e)})(e)};e.context.inputElement.addEventListener("click",t);const n="function"==typeof e.openOnFocus||!0===e.openOnFocus,a=()=>{(e=>y.has(e))(e)?(e=>{y.delete(e)})(e):(e=>ge(e,e.openOnFocus))(e)&&t()};n&&e.context.inputElement.addEventListener("focus",a);const o=t=>{const n="Tab"===t.key&&!t.shiftKey,a=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key);(n||a)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const a=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),o=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>a(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:a(e.context.mainElement)?e.context.mainElement:null;!o||o.tabIndex<0||(t.preventDefault(),o.focus())})(t)};return e.context.inputElement.addEventListener("keydown",o),()=>{e.context.inputElement.removeEventListener("click",t),n&&e.context.inputElement.removeEventListener("focus",a),e.context.inputElement.removeEventListener("keydown",o)}},Ke=(e,t)=>{if(!e.context.isInit)throw new Error(u);_e(e,i(i({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},ze=(e,t)=>{const n=Object.keys(t);for(let a=0;a<n.length;a++){const o=n[a];"object"!=typeof e[o]||"object"!=typeof t[o]||t[o]instanceof Date||Array.isArray(t[o])?void 0!==t[o]&&(e[o]=t[o]):ze(e[o],t[o])}};const je=(e,t,n)=>{if(!e)return;const a="auto"===n?function(e,t){const n="left";if(!t||!e)return n;const{canShow:a,parentPositions:o}=T(e,t),l=a.left&&a.right;return(l&&a.bottom?"center":l&&a.top?["top","center"]:Array.isArray(o)?["bottom"===o[0]?"top":"bottom",...o.slice(1)]:o)||n}(e,t):n,o={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},l=Array.isArray(a)?a[0]:"bottom",s=Array.isArray(a)?a[1]:a;t.dataset.vcPosition=l;const{top:r,left:i}=D(e),c=r+o[l];let d=i+o[s];const{vw:u}=E();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},Ue=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();var t;p(e,"cleanupHandlers",[]),p(e,"isShowInInputMode",!0),e.inputMode&&(t=e.context.mainElement,f(t),t.querySelectorAll(`[${x}]`).forEach(f)),je(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute("data-vc-calendar-hidden");const n=()=>{je(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener("resize",n),e.context.cleanupHandlers.push((()=>window.removeEventListener("resize",n)));const a=t=>{"Escape"===t.key&&M(e)};document.addEventListener("keydown",a),e.context.cleanupHandlers.push((()=>document.removeEventListener("keydown",a)));const o=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||M(e)};document.addEventListener("click",o,{capture:!0}),e.context.cleanupHandlers.push((()=>document.removeEventListener("click",o,{capture:!0}))),e.onShow&&e.onShow(e)},Be={application:"Calendar",navigation:"Calendar Navigation",arrowNext:{month:"Next month",year:"Next list of years"},arrowPrev:{month:"Previous month",year:"Previous list of years"},month:"Select month, current selected month:",months:"List of months",year:"Select year, current selected year:",years:"List of years",week:"Days of the week",weekNumber:"Numbers of weeks in a year",dates:"Dates in the current month",selectingTime:"Selecting a time ",inputHour:"Hours",inputMinute:"Minutes",rangeHour:"Slider for selecting hours",rangeMinute:"Slider for selecting minutes",btnKeeping:"Switch AM/PM, current position:"},Ze={calendar:"vc",controls:"vc-controls",grid:"vc-grid",column:"vc-column",header:"vc-header",headerContent:"vc-header__content",month:"vc-month",year:"vc-year",arrowPrev:"vc-arrow vc-arrow_prev",arrowNext:"vc-arrow vc-arrow_next",wrapper:"vc-wrapper",content:"vc-content",months:"vc-months",monthsMonth:"vc-months__month",years:"vc-years",yearsYear:"vc-years__year",week:"vc-week",weekDay:"vc-week__day",weekNumbers:"vc-week-numbers",weekNumbersTitle:"vc-week-numbers__title",weekNumbersContent:"vc-week-numbers__content",weekNumber:"vc-week-number",dates:"vc-dates",datesRow:"vc-dates__row",date:"vc-date",dateBtn:"vc-date__btn",datePopup:"vc-date__popup",dateRangeTooltip:"vc-date-range-tooltip",time:"vc-time",timeContent:"vc-time__content",timeHour:"vc-time__hour",timeMinute:"vc-time__minute",timeKeeping:"vc-time__keeping",timeRanges:"vc-time__ranges",timeRange:"vc-time__range"};class Ge{constructor(){c(this,"type","default"),c(this,"inputMode",!1),c(this,"openOnFocus",!0),c(this,"positionToInput","left"),c(this,"firstWeekday",1),c(this,"monthsToSwitch",1),c(this,"themeAttrDetect","html[data-theme]"),c(this,"locale","en"),c(this,"dateToday","today"),c(this,"dateMin","1970-01-01"),c(this,"dateMax","2470-12-31"),c(this,"displayDateMin"),c(this,"displayDateMax"),c(this,"displayDatesOutside",!0),c(this,"displayDisabledDates",!1),c(this,"displayMonthsCount"),c(this,"disableDates",[]),c(this,"disableAllDates",!1),c(this,"disableDatesPast",!1),c(this,"disableDatesGaps",!1),c(this,"disableWeekdays",[]),c(this,"disableToday",!1),c(this,"enableDates",[]),c(this,"enableEdgeDatesOnly",!0),c(this,"enableDateToggle",!0),c(this,"enableWeekNumbers",!1),c(this,"enableMonthChangeOnDayClick",!0),c(this,"enableJumpToSelectedDate",!1),c(this,"selectionDatesMode","single"),c(this,"selectionMonthsMode",!0),c(this,"selectionYearsMode",!0),c(this,"selectionTimeMode",!1),c(this,"selectedDates",[]),c(this,"selectedMonth"),c(this,"selectedYear"),c(this,"selectedHolidays",[]),c(this,"selectedWeekends",[0,6]),c(this,"selectedTime"),c(this,"selectedTheme","system"),c(this,"timeMinHour",0),c(this,"timeMaxHour",23),c(this,"timeMinMinute",0),c(this,"timeMaxMinute",59),c(this,"timeControls","all"),c(this,"timeStepHour",1),c(this,"timeStepMinute",1),c(this,"sanitizerHTML",(e=>e)),c(this,"onClickDate"),c(this,"onClickWeekDay"),c(this,"onClickWeekNumber"),c(this,"onClickTitle"),c(this,"onClickMonth"),c(this,"onClickYear"),c(this,"onClickArrow"),c(this,"onChangeTime"),c(this,"onChangeToInput"),c(this,"onCreateDateRangeTooltip"),c(this,"onCreateDateEls"),c(this,"onCreateMonthEls"),c(this,"onCreateYearEls"),c(this,"onInit"),c(this,"onUpdate"),c(this,"onDestroy"),c(this,"onShow"),c(this,"onHide"),c(this,"popups",{}),c(this,"labels",i({},Be)),c(this,"layouts",{default:"",multiple:"",month:"",year:""}),c(this,"styles",i({},Ze))}}const Ve=class e extends Ge{constructor(t,o){var l,s;super(),c(this,"init",(()=>{return p(e=this,"originalElement",e.context.mainElement.cloneNode(!0)),p(e,"isInit",!0),e.inputMode?Re(e):(Oe(e),pe(e),e.onInit&&e.onInit(e),ye(e),Ie(e));var e})),c(this,"update",(e=>Ke(this,e))),c(this,"destroy",(()=>(e=>{var t,n,a,o,l;if(!e.context.isInit)throw new Error(u);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(a=null==(n=e.context.inputElement)?void 0:n.replaceWith)||a.call(n,e.context.originalElement),p(e,"inputElement",void 0)):null==(l=(o=e.context.mainElement).replaceWith)||l.call(o,e.context.originalElement),p(e,"mainElement",e.context.originalElement),e.onDestroy&&e.onDestroy(e)})(this))),c(this,"show",(()=>Ue(this))),c(this,"hide",(()=>M(this))),c(this,"set",((e,t)=>((e,t,n)=>{ze(e,t),e.context.isInit&&Ke(e,n)})(this,e,t))),c(this,"context"),this.context=(s=i({},this.context),n(s,a({locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}))),p(this,"mainElement","string"==typeof t?null!=(l=e.memoizedElements.get(t))?l:this.queryAndMemoize(t):t),o&&ze(this,o)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(d(t));return e.memoizedElements.set(t,n),n}};c(Ve,"memoizedElements",new Map);let Je=Ve;e.Calendar=Je,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})})); |