UNPKG

preline

Version:

Preline UI is an open-source set of prebuilt UI components based on the utility-first Tailwind CSS framework.

16 lines 123 kB
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var s in n)("object"==typeof exports?exports:e)[s]=n[s]}}(self,(()=>{return e={128:function(e,t,n){"use strict"; /* * HSDatepicker * @version: 3.0.1 * @author: Preline Labs Ltd. * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html) * Copyright 2024 Preline Labs Ltd. */var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(292),a=s(n(632)),i=n(191),l=n(292),r=s(n(442)),d=s(n(961));class c extends d.default{constructor(e,t,n){var s,l,r,d,c,u;super(e,t,n);const h=e.getAttribute("data-hs-datepicker")?JSON.parse(e.getAttribute("data-hs-datepicker")):{};this.dataOptions=Object.assign(Object.assign({},h),t);const p=void 0!==(null===(s=this.dataOptions)||void 0===s?void 0:s.removeDefaultStyles)&&(null===(l=this.dataOptions)||void 0===l?void 0:l.removeDefaultStyles);this.updatedStyles=_.mergeWith(p?{}:a.default.defaultStyles,(null===(r=this.dataOptions)||void 0===r?void 0:r.styles)||{},((e,t)=>{if("string"==typeof e&&"string"==typeof t)return`${e} ${t}`}));const m=new Date,v={styles:this.updatedStyles,dateMin:null!==(d=this.dataOptions.dateMin)&&void 0!==d?d:m.toISOString().split("T")[0],dateMax:null!==(c=this.dataOptions.dateMax)&&void 0!==c?c:"2470-12-31",mode:null!==(u=this.dataOptions.mode)&&void 0!==u?u:"default",inputMode:void 0===this.dataOptions.inputMode||this.dataOptions.inputMode},g=(e,t)=>n=>{null==e||e(n),null==t||t(n)},y=e=>{this.hasTime(e)&&this.initCustomTime(e)},b={layouts:{month:i.templates.month},onInit:g(this.dataOptions.onInit,(e=>{"custom-select"!==v.mode||this.dataOptions.inputMode||y(e)})),onShow:g(this.dataOptions.onShow,(e=>{"custom-select"===v.mode&&(this.updateCustomSelects(e),y(e))})),onHide:g(this.dataOptions.onHide,(e=>{"custom-select"===v.mode&&this.destroySelects(e.context.mainElement)})),onUpdate:g(this.dataOptions.onUpdate,(e=>{this.updateCalendar(e.context.mainElement)})),onCreateDateEls:g(this.dataOptions.onCreateDateEls,(e=>{"custom-select"===v.mode&&this.updateCustomSelects(e)})),onChangeToInput:g(this.dataOptions.onChangeToInput,(e=>{if(!e.context.inputElement)return;this.setInputValue(e.context.inputElement,e.context.selectedDates);const t={selectedDates:e.context.selectedDates,selectedTime:e.context.selectedTime,rest:e.context};this.fireEvent("change",t),(0,o.dispatch)("change.hs.datepicker",this.el,t)})),onChangeTime:g(this.dataOptions.onChangeTime,y),onClickYear:g(this.dataOptions.onClickYear,y),onClickMonth:g(this.dataOptions.onClickMonth,y),onClickArrow:g(this.dataOptions.onClickArrow,(e=>{"custom-select"===v.mode&&setTimeout((()=>{this.disableNav(),this.disableOptions(),this.updateCalendar(e.context.mainElement)}))}))},f=Object.assign(Object.assign({},v),{layouts:{default:this.processCustomTemplate(i.templates.default,"default"),multiple:this.processCustomTemplate(i.templates.multiple,"multiple"),year:this.processCustomTemplate(i.templates.year,"default")}});this.vanillaCalendar=new a.default(this.el,_.merge(b,this.dataOptions,f)),this.init()}init(){var e,t;this.createCollection(window.$hsDatepickerCollection,this),this.vanillaCalendar.init(),(null===(e=this.dataOptions)||void 0===e?void 0:e.selectedDates)&&this.setInputValue(this.vanillaCalendar.context.inputElement,this.formatDateArrayToIndividualDates(null===(t=this.dataOptions)||void 0===t?void 0:t.selectedDates))}getTimeParts(e){const[t,n]=e.split(" "),[s,o]=t.split(":");return[s,o,n]}getCurrentMonthAndYear(e){const t=e.querySelector('[data-vc="month"]'),n=e.querySelector('[data-vc="year"]');return{month:+t.getAttribute("data-vc-month"),year:+n.getAttribute("data-vc-year")}}setInputValue(e,t){var n,s,o,a,i,l,r,d;const c=null!==(o=null===(s=null===(n=this.dataOptions)||void 0===n?void 0:n.inputModeOptions)||void 0===s?void 0:s.dateSeparator)&&void 0!==o?o:".",u=null!==(l=null===(i=null===(a=this.dataOptions)||void 0===a?void 0:a.inputModeOptions)||void 0===i?void 0:i.itemsSeparator)&&void 0!==l?l:", ",h=null!==(d=null===(r=this.dataOptions)||void 0===r?void 0:r.selectionDatesMode)&&void 0!==d?d:"single";if(t.length&&t.length>1)if("multiple"===h){const n=[];t.forEach((e=>n.push(this.changeDateSeparator(e,c)))),e.value=n.join(u)}else e.value=[this.changeDateSeparator(t[0],c),this.changeDateSeparator(t[1],c)].join(u);else t.length&&1===t.length?e.value=this.changeDateSeparator(t[0],c):e.value=""}changeDateSeparator(e,t=".",n="-"){return e.split(n).join(t)}formatDateArrayToIndividualDates(e){var t,n;const s=null!==(n=null===(t=this.dataOptions)||void 0===t?void 0:t.selectionDatesMode)&&void 0!==n?n:"single";return e.flatMap((e=>{if("string"==typeof e){const t=e.match(/^(\d{4}-\d{2}-\d{2})\s*[^a-zA-Z0-9]*\s*(\d{4}-\d{2}-\d{2})$/);if(t){const[e,n,o]=t;return"multiple-ranged"===s?[n,o]:((e,t)=>{const n=new Date(e),s=new Date(t),o=[];for(;n<=s;)o.push(n.toISOString().split("T")[0]),n.setDate(n.getDate()+1);return o})(n.trim(),o.trim())}return[e]}return"number"==typeof e?[new Date(e).toISOString().split("T")[0]]:e instanceof Date?[e.toISOString().split("T")[0]]:[]}))}hasTime(e){const{mainElement:t}=e.context,n=t.querySelector("[data-hs-select].--hours"),s=t.querySelector("[data-hs-select].--minutes"),o=t.querySelector("[data-hs-select].--meridiem");return n&&s&&o}createArrowFromTemplate(e,t=!1){if(!t)return e;const n=(0,l.htmlToElement)(e);return(0,l.classToClassList)(t,n),n.outerHTML}concatObjectProperties(e,t){const n={};return new Set([...Object.keys(e||{}),...Object.keys(t||{})]).forEach((s=>{const o=e[s]||"",a=t[s]||"";n[s]=`${o} ${a}`.trim()})),n}updateTemplate(e,t,n){if(!t)return e;const s=JSON.parse(e.match(/data-hs-select='([^']+)'/)[1]),o=this.concatObjectProperties(t,n),a=_.merge(s,o);return e.replace(/data-hs-select='[^']+'/,`data-hs-select='${JSON.stringify(a)}'`)}initCustomTime(e){var t;const{mainElement:n}=e.context,s=this.getTimeParts(null!==(t=e.selectedTime)&&void 0!==t?t:"12:00 PM"),o={hours:n.querySelector("[data-hs-select].--hours"),minutes:n.querySelector("[data-hs-select].--minutes"),meridiem:n.querySelector("[data-hs-select].--meridiem")};Object.entries(o).forEach((([t,o])=>{if(!r.default.getInstance(o,!0)){const a=new r.default(o);a.setValue(s["meridiem"===t?2:"minutes"===t?1:0]),a.el.addEventListener("change.hs.select",(o=>{this.destroySelects(n);const a="hours"===t?o.detail.payload:s[0],i="minutes"===t?o.detail.payload:s[1],l="meridiem"===t?o.detail.payload:s[2];e.set({selectedTime:`${a}:${i} ${l}`},{dates:!1,year:!1,month:!1})}))}}))}initCustomMonths(e){const{mainElement:t}=e.context,n=Array.from(t.querySelectorAll(".--single-month"));n.length&&n.forEach(((n,s)=>{const o=n.querySelector("[data-hs-select].--month");if(r.default.getInstance(o,!0))return!1;const a=new r.default(o),{month:i,year:l}=this.getCurrentMonthAndYear(n);a.setValue(`${i}`),a.el.addEventListener("change.hs.select",(n=>{this.destroySelects(t),e.set({selectedMonth:+n.detail.payload-s<0?11:+n.detail.payload-s,selectedYear:+n.detail.payload-s<0?+l-1:l},{dates:!1,time:!1})}))}))}initCustomYears(e){const{mainElement:t}=e.context,n=Array.from(t.querySelectorAll(".--single-month"));n.length&&n.forEach((n=>{const s=n.querySelector("[data-hs-select].--year");if(r.default.getInstance(s,!0))return!1;const o=new r.default(s),{month:a,year:i}=this.getCurrentMonthAndYear(n);o.setValue(`${i}`),o.el.addEventListener("change.hs.select",(n=>{const{dateMax:s,displayMonthsCount:o}=this.vanillaCalendar.context,i=new Date(s).getFullYear(),l=new Date(s).getMonth();this.destroySelects(t),e.set({selectedMonth:a>l-o&&+n.detail.payload===i?l-o+1:a,selectedYear:n.detail.payload},{dates:!1,time:!1})}))}))}generateCustomTimeMarkup(){var e,t,n,s;const o=null===(e=this.updatedStyles)||void 0===e?void 0:e.customSelect,a=o?this.updateTemplate(i.templates.hours,(null==o?void 0:o.shared)||{},(null==o?void 0:o.hours)||{}):i.templates.hours,l=o?this.updateTemplate(i.templates.minutes,(null==o?void 0:o.shared)||{},(null==o?void 0:o.minutes)||{}):i.templates.minutes,r=o?this.updateTemplate(i.templates.meridiem,(null==o?void 0:o.shared)||{},(null==o?void 0:o.meridiem)||{}):i.templates.meridiem;return`<div class="--time">${null!==(s=null===(n=null===(t=null==this?void 0:this.dataOptions)||void 0===t?void 0:t.templates)||void 0===n?void 0:n.time)&&void 0!==s?s:`\n\t\t\t<div class="pt-3 flex justify-center items-center gap-x-2">\n ${a}\n <span class="text-gray-800 dark:text-white">:</span>\n ${l}\n ${r}\n </div>\n\t\t`}</div>`}generateCustomMonthMarkup(){var e,t,n;const s=null!==(t=null===(e=null==this?void 0:this.dataOptions)||void 0===e?void 0:e.mode)&&void 0!==t?t:"default",o=null===(n=this.updatedStyles)||void 0===n?void 0:n.customSelect,a=o?this.updateTemplate(i.templates.months,(null==o?void 0:o.shared)||{},(null==o?void 0:o.months)||{}):i.templates.months;return"custom-select"===s?a:"<#Month />"}generateCustomYearMarkup(){var e,t,n,s,o,a,l;if("custom-select"===(null!==(t=null===(e=null==this?void 0:this.dataOptions)||void 0===e?void 0:e.mode)&&void 0!==t?t:"default")){const e=new Date,t=null!==(s=null===(n=null==this?void 0:this.dataOptions)||void 0===n?void 0:n.dateMin)&&void 0!==s?s:e.toISOString().split("T")[0],r=null!==(a=null===(o=null==this?void 0:this.dataOptions)||void 0===o?void 0:o.dateMax)&&void 0!==a?a:"2470-12-31",d=new Date(t),c=new Date(r),u=d.getFullYear(),h=c.getFullYear(),p=()=>{let e="";for(let t=u;t<=h;t++)e+=`<option value="${t}">${t}</option>`;return e},m=i.templates.years(p()),v=null===(l=this.updatedStyles)||void 0===l?void 0:l.customSelect;return v?this.updateTemplate(m,(null==v?void 0:v.shared)||{},(null==v?void 0:v.years)||{}):m}return"<#Year />"}generateCustomArrowPrevMarkup(){var e,t;return(null===(t=null===(e=null==this?void 0:this.dataOptions)||void 0===e?void 0:e.templates)||void 0===t?void 0:t.arrowPrev)?this.createArrowFromTemplate(this.dataOptions.templates.arrowPrev,this.updatedStyles.arrowPrev):"<#ArrowPrev [month] />"}generateCustomArrowNextMarkup(){var e,t;return(null===(t=null===(e=null==this?void 0:this.dataOptions)||void 0===e?void 0:e.templates)||void 0===t?void 0:t.arrowNext)?this.createArrowFromTemplate(this.dataOptions.templates.arrowNext,this.updatedStyles.arrowNext):"<#ArrowNext [month] />"}parseCustomTime(e){return e=e.replace(/<#CustomTime\s*\/>/g,this.generateCustomTimeMarkup())}parseCustomMonth(e){return e=e.replace(/<#CustomMonth\s*\/>/g,this.generateCustomMonthMarkup())}parseCustomYear(e){return e=e.replace(/<#CustomYear\s*\/>/g,this.generateCustomYearMarkup())}parseArrowPrev(e){return e=e.replace(/<#CustomArrowPrev\s*\/>/g,this.generateCustomArrowPrevMarkup())}parseArrowNext(e){return e=e.replace(/<#CustomArrowNext\s*\/>/g,this.generateCustomArrowNextMarkup())}processCustomTemplate(e,t){var n,s,o,a;const i="default"===t?null===(s=null===(n=null==this?void 0:this.dataOptions)||void 0===n?void 0:n.layouts)||void 0===s?void 0:s.default:null===(a=null===(o=null==this?void 0:this.dataOptions)||void 0===o?void 0:o.layouts)||void 0===a?void 0:a.multiple,l=this.parseCustomMonth(null!=i?i:e),r=this.parseCustomYear(l),d=this.parseCustomTime(r),c=this.parseArrowPrev(d);return this.parseArrowNext(c)}disableOptions(){const{mainElement:e,dateMax:t,displayMonthsCount:n}=this.vanillaCalendar.context,s=new Date(t);Array.from(e.querySelectorAll(".--single-month")).forEach(((e,t)=>{var o;const a=+(null===(o=e.querySelector('[data-vc="year"]'))||void 0===o?void 0:o.getAttribute("data-vc-year")),i=e.querySelectorAll("[data-hs-select].--month option"),l=e.querySelectorAll("[data-hs-select-dropdown] [data-value]"),r=e=>+e.getAttribute("data-value")>s.getMonth()-n+t+1&&a===s.getFullYear();Array.from(i).forEach((e=>e.toggleAttribute("disabled",r(e)))),Array.from(l).forEach((e=>e.classList.toggle("disabled",r(e))))}))}disableNav(){const{mainElement:e,dateMax:t,selectedYear:n,selectedMonth:s,displayMonthsCount:o}=this.vanillaCalendar.context,a=new Date(t).getFullYear(),i=e.querySelector('[data-vc-arrow="next"]');i.style.visibility=n===a&&s+o>11?"hidden":""}destroySelects(e){Array.from(e.querySelectorAll("[data-hs-select]")).forEach((e=>{const t=r.default.getInstance(e,!0);t&&t.element.destroy()}))}updateSelect(e,t){const n=r.default.getInstance(e,!0);n&&n.element.setValue(t)}updateCalendar(e){const t=e.querySelectorAll(".--single-month");t.length&&t.forEach((e=>{const{month:t,year:n}=this.getCurrentMonthAndYear(e);this.updateSelect(e.querySelector("[data-hs-select].--month"),`${t}`),this.updateSelect(e.querySelector("[data-hs-select].--year"),`${n}`)}))}updateCustomSelects(e){setTimeout((()=>{this.disableOptions(),this.disableNav(),this.initCustomMonths(e),this.initCustomYears(e)}))}getCurrentState(){return{selectedDates:this.vanillaCalendar.selectedDates,selectedTime:this.vanillaCalendar.selectedTime}}static getInstance(e,t){const n=window.$hsDatepickerCollection.find((t=>t.element.el===("string"==typeof e?document.querySelector(e):e)));return n?t?n:n.element.el:null}static autoInit(){window.$hsDatepickerCollection||(window.$hsDatepickerCollection=[]),document.querySelectorAll(".hs-datepicker:not(.--prevent-on-load-init)").forEach((e=>{window.$hsDatepickerCollection.find((t=>{var n;return(null===(n=null==t?void 0:t.element)||void 0===n?void 0:n.el)===e}))||new c(e)}))}}window.addEventListener("load",(()=>{c.autoInit()})),"undefined"!=typeof window&&(window.HSDatepicker=c),t.default=c},191:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.templates=void 0,t.templates={default:'<div class="--single-month flex flex-col overflow-hidden">\n <div class="grid grid-cols-5 items-center gap-x-3 mx-1.5 pb-3" data-vc="header">\n <div class="col-span-1">\n <#CustomArrowPrev />\n </div>\n <div class="col-span-3 flex justify-center items-center gap-x-1">\n <#CustomMonth />\n <span class="text-gray-800 dark:text-neutral-200">/</span>\n <#CustomYear />\n </div>\n <div class="col-span-1 flex justify-end">\n <#CustomArrowNext />\n </div>\n </div>\n <div data-vc="wrapper">\n <div data-vc="content">\n <#Week />\n <#Dates />\n </div>\n </div>\n </div>',multiple:'<div class="relative flex flex-col overflow-hidden">\n <div class="absolute top-2 start-2">\n <#CustomArrowPrev />\n </div>\n <div class="absolute top-2 end-2">\n <#CustomArrowNext />\n </div>\n <div class="sm:flex" data-vc="grid">\n <#Multiple>\n <div class="p-3 space-y-0.5 --single-month" data-vc="column">\n <div class="pb-3" data-vc="header">\n <div class="flex justify-center items-center gap-x-1" data-vc-header="content">\n <#CustomMonth />\n <span class="text-gray-800 dark:text-neutral-200">/</span>\n <#CustomYear />\n </div>\n </div>\n <div data-vc="wrapper">\n <div data-vc="content">\n <#Week />\n <#Dates />\n </div>\n </div>\n </div>\n <#/Multiple>\n </div>\n </div>',year:'<div class="relative bg-white dark:bg-neutral-900" data-vc="header" role="toolbar">\n <div class="grid grid-cols-5 items-center gap-x-3 mx-1.5 pb-3" data-vc="header">\n <div class="col-span-1">\n <#CustomArrowPrev />\n </div>\n <div class="col-span-3 flex justify-center items-center gap-x-1">\n <#Month />\n <span class="text-gray-800 dark:text-neutral-200">/</span>\n <#Year />\n </div>\n <div class="col-span-1 flex justify-end">\n <#CustomArrowNext />\n </div>\n </div>\n </div>\n <div data-vc="wrapper">\n <div data-vc="content">\n <#Years />\n </div>\n </div>',month:'<div class="pb-3" data-vc="header" role="toolbar">\n <div class="flex justify-center items-center gap-x-1" data-vc-header="content">\n <#Month />\n <span class="text-gray-800 dark:text-neutral-200">/</span>\n <#Year />\n </div>\n </div>\n <div data-vc="wrapper">\n <div data-vc="content">\n <#Months />\n </div>\n </div>',years:e=>`<div class="relative">\n <span class="hidden" data-vc="year"></span>\n <select data-hs-select='{\n "placeholder": "Select year",\n "dropdownScope": "parent",\n "dropdownVerticalFixedPlacement": "bottom",\n "toggleTag": "<button type=\\"button\\"><span data-title></span></button>",\n "toggleClasses": "hs-select-disabled:pointer-events-none hs-select-disabled:opacity-50 relative flex text-nowrap w-full cursor-pointer text-start font-medium text-gray-800 hover:text-gray-600 focus:outline-hidden focus:text-gray-600 before:absolute before:inset-0 before:z-1 dark:text-neutral-200 dark:hover:text-neutral-300 dark:focus:text-neutral-300",\n "dropdownClasses": "mt-2 z-50 w-20 max-h-60 p-1 space-y-0.5 bg-white border border-gray-200 rounded-lg shadow-lg overflow-hidden overflow-y-auto [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500 dark:bg-neutral-900 dark:border-neutral-700",\n "optionClasses": "p-2 w-full text-sm text-gray-800 cursor-pointer hover:bg-gray-100 rounded-lg focus:outline-hidden focus:bg-gray-100 dark:bg-neutral-900 dark:hover:bg-neutral-800 dark:text-neutral-200 dark:focus:bg-neutral-800",\n "optionTemplate": "<div class=\\"flex justify-between items-center w-full\\"><span data-title></span><span class=\\"hidden hs-selected:block\\"><svg class=\\"shrink-0 size-3.5 text-gray-800 dark:text-neutral-200\\" xmlns=\\"http:.w3.org/2000/svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\" fill=\\"none\\" stroke=\\"currentColor\\" stroke-width=\\"2\\" stroke-linecap=\\"round\\" stroke-linejoin=\\"round\\"><polyline points=\\"20 6 9 17 4 12\\"/></svg></span></div>"\n }' class="hidden --year --prevent-on-load-init">\n ${e}\n </select>\n </div>`,months:'<div class="relative">\n <span class="hidden" data-vc="month"></span>\n <select data-hs-select=\'{\n "placeholder": "Select month",\n "dropdownScope": "parent",\n "dropdownVerticalFixedPlacement": "bottom",\n "toggleTag": "<button type=\\"button\\"><span data-title></span></button>",\n "toggleClasses": "hs-select-disabled:pointer-events-none hs-select-disabled:opacity-50 relative flex text-nowrap w-full cursor-pointer text-start font-medium text-gray-800 hover:text-gray-600 focus:outline-hidden focus:text-gray-600 before:absolute before:inset-0 before:z-1 dark:text-neutral-200 dark:hover:text-neutral-300 dark:focus:text-neutral-300",\n "dropdownClasses": "mt-2 z-50 w-32 max-h-60 p-1 space-y-0.5 bg-white border border-gray-200 rounded-lg shadow-lg overflow-hidden overflow-y-auto [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500 dark:bg-neutral-900 dark:border-neutral-700",\n "optionClasses": "p-2 w-full text-sm text-gray-800 cursor-pointer hover:bg-gray-100 rounded-lg hs-select-disabled:opacity-50 hs-select-disabled:pointer-events-none focus:outline-hidden focus:bg-gray-100 dark:bg-neutral-900 dark:hover:bg-neutral-800 dark:text-neutral-200 dark:focus:bg-neutral-800",\n "optionTemplate": "<div class=\\"flex justify-between items-center w-full\\"><span data-title></span><span class=\\"hidden hs-selected:block\\"><svg class=\\"shrink-0 size-3.5 text-gray-800 dark:text-neutral-200\\" xmlns=\\"http:.w3.org/2000/svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\" fill=\\"none\\" stroke=\\"currentColor\\" stroke-width=\\"2\\" stroke-linecap=\\"round\\" stroke-linejoin=\\"round\\"><polyline points=\\"20 6 9 17 4 12\\"/></svg></span></div>"\n }\' class="hidden --month --prevent-on-load-init">\n <option value="0">January</option>\n <option value="1">February</option>\n <option value="2">March</option>\n <option value="3">April</option>\n <option value="4">May</option>\n <option value="5">June</option>\n <option value="6">July</option>\n <option value="7">August</option>\n <option value="8">September</option>\n <option value="9">October</option>\n <option value="10">November</option>\n <option value="11">December</option>\n </select>\n </div>',hours:'<div class="relative">\n <select class="--hours hidden" data-hs-select=\'{\n "placeholder": "Select option...",\n "dropdownVerticalFixedPlacement": "top",\n "toggleClasses": "hs-select-disabled:pointer-events-none hs-select-disabled:opacity-50 relative py-1 px-2 pe-6 flex text-nowrap w-full cursor-pointer bg-white border border-gray-200 rounded-lg text-start text-sm focus:border-blue-500 focus:ring-blue-500 before:absolute before:inset-0 before:z-1 dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400",\n "dropdownClasses": "mt-2 z-50 w-full min-w-24 max-h-72 p-1 space-y-0.5 bg-white border border-gray-200 rounded-lg overflow-hidden overflow-y-auto [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500 dark:bg-neutral-900 dark:border-neutral-700",\n "optionClasses": "hs-selected:bg-gray-100 dark:hs-selected:bg-neutral-800 py-2 px-4 w-full text-sm text-gray-800 cursor-pointer hover:bg-gray-100 rounded-lg focus:outline-hidden focus:bg-gray-100 dark:hs-selected:bg-gray-700 dark:bg-neutral-900 dark:hover:bg-neutral-800 dark:text-neutral-200 dark:focus:bg-neutral-800",\n "optionTemplate": "<div class=\\"flex justify-between items-center w-full\\"><span data-title></span></div>"\n }\'>\n <option value="01">01</option>\n <option value="02">02</option>\n <option value="03">03</option>\n <option value="04">04</option>\n <option value="05">05</option>\n <option value="06">06</option>\n <option value="07">07</option>\n <option value="08">08</option>\n <option value="09">09</option>\n <option value="10">10</option>\n <option value="11">11</option>\n <option value="12" selected>12</option>\n </select>\n <div class="absolute top-1/2 end-2 -translate-y-1/2">\n <svg class="shrink-0 size-3 text-gray-500 dark:text-neutral-500" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m7 15 5 5 5-5"/><path d="m7 9 5-5 5 5"/></svg>\n </div>\n </div>',minutes:'<div class="relative">\n <select class="--minutes hidden" data-hs-select=\'{\n "placeholder": "Select option...",\n "dropdownVerticalFixedPlacement": "top",\n "toggleClasses": "hs-select-disabled:pointer-events-none hs-select-disabled:opacity-50 relative py-1 px-2 pe-6 flex text-nowrap w-full cursor-pointer bg-white border border-gray-200 rounded-lg text-start text-sm focus:border-blue-500 focus:ring-blue-500 before:absolute before:inset-0 before:z-1 dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400",\n "dropdownClasses": "mt-2 z-50 w-full min-w-24 max-h-72 p-1 space-y-0.5 bg-white border border-gray-200 rounded-lg overflow-hidden overflow-y-auto [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500 dark:bg-neutral-900 dark:border-neutral-700",\n "optionClasses": "hs-selected:bg-gray-100 dark:hs-selected:bg-neutral-800 py-2 px-4 w-full text-sm text-gray-800 cursor-pointer hover:bg-gray-100 rounded-lg focus:outline-hidden focus:bg-gray-100 dark:hs-selected:bg-gray-700 dark:bg-neutral-900 dark:hover:bg-neutral-800 dark:text-neutral-200 dark:focus:bg-neutral-800",\n "optionTemplate": "<div class=\\"flex justify-between items-center w-full\\"><span data-title></span></div>"\n }\'>\n <option value="00" selected>00</option>\n <option value="01">01</option>\n <option value="02">02</option>\n <option value="03">03</option>\n <option value="04">04</option>\n <option value="05">05</option>\n <option value="06">06</option>\n <option value="07">07</option>\n <option value="08">08</option>\n <option value="09">09</option>\n <option value="10">10</option>\n <option value="11">11</option>\n <option value="12">12</option>\n <option value="13">13</option>\n <option value="14">14</option>\n <option value="15">15</option>\n <option value="16">16</option>\n <option value="17">17</option>\n <option value="18">18</option>\n <option value="19">19</option>\n <option value="20">20</option>\n <option value="21">21</option>\n <option value="22">22</option>\n <option value="23">23</option>\n <option value="24">24</option>\n <option value="25">25</option>\n <option value="26">26</option>\n <option value="27">27</option>\n <option value="28">28</option>\n <option value="29">29</option>\n <option value="30">30</option>\n <option value="31">31</option>\n <option value="32">32</option>\n <option value="33">33</option>\n <option value="34">34</option>\n <option value="35">35</option>\n <option value="36">36</option>\n <option value="37">37</option>\n <option value="38">38</option>\n <option value="39">39</option>\n <option value="40">40</option>\n <option value="41">41</option>\n <option value="42">42</option>\n <option value="43">43</option>\n <option value="44">44</option>\n <option value="45">45</option>\n <option value="46">46</option>\n <option value="47">47</option>\n <option value="48">48</option>\n <option value="49">49</option>\n <option value="50">50</option>\n <option value="51">51</option>\n <option value="52">52</option>\n <option value="53">53</option>\n <option value="54">54</option>\n <option value="55">55</option>\n <option value="56">56</option>\n <option value="57">57</option>\n <option value="58">58</option>\n <option value="59">59</option>\n </select>\n <div class="absolute top-1/2 end-2 -translate-y-1/2">\n <svg class="shrink-0 size-3 text-gray-500 dark:text-neutral-500" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m7 15 5 5 5-5"/><path d="m7 9 5-5 5 5"/></svg>\n </div>\n </div>',meridiem:'<div class="relative">\n <select class="--meridiem hidden" data-hs-select=\'{\n "placeholder": "Select option...",\n "dropdownVerticalFixedPlacement": "top",\n "toggleClasses": "hs-select-disabled:pointer-events-none hs-select-disabled:opacity-50 relative py-1 px-2 pe-6 flex text-nowrap w-full cursor-pointer bg-white border border-gray-200 rounded-lg text-start text-sm focus:border-blue-500 focus:ring-blue-500 before:absolute before:inset-0 before:z-1 dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400",\n "dropdownClasses": "mt-2 z-50 w-full min-w-24 max-h-72 p-1 space-y-0.5 bg-white border border-gray-200 rounded-lg overflow-hidden overflow-y-auto [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500 dark:bg-neutral-900 dark:border-neutral-700",\n "optionClasses": "hs-selected:bg-gray-100 dark:hs-selected:bg-neutral-800 py-2 px-4 w-full text-sm text-gray-800 cursor-pointer hover:bg-gray-100 rounded-lg focus:outline-hidden focus:bg-gray-100 dark:hs-selected:bg-gray-700 dark:bg-neutral-900 dark:hover:bg-neutral-800 dark:text-neutral-200 dark:focus:bg-neutral-800",\n "optionTemplate": "<div class=\\"flex justify-between items-center w-full\\"><span data-title></span></div>"\n }\'>\n <option value="PM" selected>PM</option>\n <option value="AM">AM</option>\n </select>\n <div class="absolute top-1/2 end-2 -translate-y-1/2">\n <svg class="shrink-0 size-3 text-gray-500 dark:text-neutral-500" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m7 15 5 5 5-5"/><path d="m7 9 5-5 5 5"/></svg>\n </div>\n </div>'}},223:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BREAKPOINTS=t.COMBO_BOX_ACCESSIBILITY_KEY_SET=t.SELECT_ACCESSIBILITY_KEY_SET=t.TABS_ACCESSIBILITY_KEY_SET=t.OVERLAY_ACCESSIBILITY_KEY_SET=t.DROPDOWN_ACCESSIBILITY_KEY_SET=t.POSITIONS=void 0,t.POSITIONS={auto:"auto","auto-start":"auto-start","auto-end":"auto-end",top:"top","top-left":"top-start","top-right":"top-end",bottom:"bottom","bottom-left":"bottom-start","bottom-right":"bottom-end",right:"right","right-start":"right-start","right-end":"right-end",left:"left","left-start":"left-start","left-end":"left-end"},t.DROPDOWN_ACCESSIBILITY_KEY_SET=["Escape","ArrowUp","ArrowDown","ArrowRight","ArrowLeft","Home","End","Enter"],t.OVERLAY_ACCESSIBILITY_KEY_SET=["Escape","Tab"],t.TABS_ACCESSIBILITY_KEY_SET=["ArrowUp","ArrowLeft","ArrowDown","ArrowRight","Home","End"],t.SELECT_ACCESSIBILITY_KEY_SET=["ArrowUp","ArrowLeft","ArrowDown","ArrowRight","Home","End","Escape","Enter","Space","Tab"],t.COMBO_BOX_ACCESSIBILITY_KEY_SET=["ArrowUp","ArrowLeft","ArrowDown","ArrowRight","Home","End","Escape","Enter"],t.BREAKPOINTS={xs:0,sm:640,md:768,lg:1024,xl:1280,"2xl":1536}},292:function(e,t){"use strict"; /* * @version: 3.0.1 * @author: Preline Labs Ltd. * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html) * Copyright 2024 Preline Labs Ltd. */Object.defineProperty(t,"__esModule",{value:!0}),t.menuSearchHistory=t.classToClassList=t.htmlToElement=t.afterTransition=t.dispatch=t.debounce=t.isScrollable=t.isParentOrElementHidden=t.isJson=t.isIpadOS=t.isIOS=t.isDirectChild=t.isFormElement=t.isFocused=t.isEnoughSpace=t.getHighestZIndex=t.getZIndex=t.getClassPropertyAlt=t.getClassProperty=t.stringToBoolean=void 0,t.stringToBoolean=e=>"true"===e,t.getClassProperty=(e,t,n="")=>(window.getComputedStyle(e).getPropertyValue(t)||n).replace(" ",""),t.getClassPropertyAlt=(e,t,n="")=>{let s="";return e.classList.forEach((e=>{e.includes(t)&&(s=e)})),s.match(/:(.*)]/)?s.match(/:(.*)]/)[1]:n};const n=e=>window.getComputedStyle(e).getPropertyValue("z-index");t.getZIndex=n,t.getHighestZIndex=e=>{let t=Number.NEGATIVE_INFINITY;return e.forEach((e=>{let s=n(e);"auto"!==s&&(s=parseInt(s,10),s>t&&(t=s))})),t},t.isDirectChild=(e,t)=>{const n=e.children;for(let e=0;e<n.length;e++)if(n[e]===t)return!0;return!1},t.isEnoughSpace=(e,t,n="auto",s=10,o=null)=>{const a=t.getBoundingClientRect(),i=o?o.getBoundingClientRect():null,l=window.innerHeight,r=i?a.top-i.top:a.top,d=(o?i.bottom:l)-a.bottom,c=e.clientHeight+s;return"bottom"===n?d>=c:"top"===n?r>=c:r>=c||d>=c},t.isFocused=e=>document.activeElement===e,t.isFormElement=e=>e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement,t.isIOS=()=>!!/iPad|iPhone|iPod/.test(navigator.platform)||navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&/MacIntel/.test(navigator.platform),t.isIpadOS=()=>navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&/MacIntel/.test(navigator.platform),t.isJson=e=>{if("string"!=typeof e)return!1;const t=e.trim()[0],n=e.trim().slice(-1);if("{"===t&&"}"===n||"["===t&&"]"===n)try{return JSON.parse(e),!0}catch(e){return!1}return!1};const s=e=>!!e&&("none"===window.getComputedStyle(e).display||s(e.parentElement));t.isParentOrElementHidden=s,t.isScrollable=e=>{const t=window.getComputedStyle(e),n=t.overflowY,s=t.overflowX,o=("scroll"===n||"auto"===n)&&e.scrollHeight>e.clientHeight,a=("scroll"===s||"auto"===s)&&e.scrollWidth>e.clientWidth;return o||a},t.debounce=(e,t=200)=>{let n;return(...s)=>{clearTimeout(n),n=setTimeout((()=>{e.apply(this,s)}),t)}},t.dispatch=(e,t,n=null)=>{const s=new CustomEvent(e,{detail:{payload:n},bubbles:!0,cancelable:!0,composed:!1});t.dispatchEvent(s)},t.afterTransition=(e,t)=>{const n=()=>{t(),e.removeEventListener("transitionend",n,!0)},s=window.getComputedStyle(e),o=s.getPropertyValue("transition-duration");"none"!==s.getPropertyValue("transition-property")&&parseFloat(o)>0?e.addEventListener("transitionend",n,!0):t()},t.htmlToElement=e=>{const t=document.createElement("template");return e=e.trim(),t.innerHTML=e,t.content.firstChild},t.classToClassList=(e,t,n=" ",s="add")=>{e.split(n).forEach((e=>"add"===s?t.classList.add(e):t.classList.remove(e)))};const o={historyIndex:-1,addHistory(e){this.historyIndex=e},existsInHistory(e){return e>this.historyIndex},clearHistory(){this.historyIndex=-1}};t.menuSearchHistory=o},366:function(e,t){ /*! name: vanilla-calendar-pro v3.0.3 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */ !function(e){"use strict";var t=Object.defineProperty,n=Object.defineProperties,s=Object.getOwnPropertyDescriptors,o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,l=(e,n,s)=>n in e?t(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s,r=(e,t)=>{for(var n in t||(t={}))a.call(t,n)&&l(e,n,t[n]);if(o)for(var n of o(t))i.call(t,n)&&l(e,n,t[n]);return e},d=(e,t,n)=>(l(e,"symbol"!=typeof t?t+"":t,n),n);const c=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.',h="You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».",p="The value of the time property can be: false, 12 or 24.",m="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.",v=(e,t,n)=>{e.context[t]=n};function g(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 y(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function b(e){const{top:t,left:n}={left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0},{top:s,left:o}=g(e),{vh:a,vw:i}=y(),l=s-t,r=o-n;return{top:l,bottom:a-(l+e.clientHeight),left:r,right:i-(r+e.clientWidth)}}function f(e,t,n=5){const s={top:!0,bottom:!0,left:!0,right:!0},o=[];if(!t||!e)return{canShow:s,parentPositions:o};const{bottom:a,top:i}=b(e),{top:l,left:r}=g(e),{height:d,width:c}=t.getBoundingClientRect(),{vh:u,vw:h}=y(),p=h/2,m=u/2;return[{condition:l<m,position:"top"},{condition:l>m,position:"bottom"},{condition:r<p,position:"left"},{condition:r>p,position:"right"}].forEach((({condition:e,position:t})=>{e&&o.push(t)})),Object.assign(s,{top:d<=i-n,bottom:d<=a-n,left:c<=r,right:c<=h-r}),{canShow:s,parentPositions:o}}const w=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,s])=>((e,t,n,s)=>{var o;const a=s.querySelector(`[data-vc-date="${t}"]`),i=null==a?void 0:a.querySelector("[data-vc-date-btn]");if(!a||!i)return;if((null==n?void 0:n.modifier)&&i.classList.add(...n.modifier.trim().split(" ")),!(null==n?void 0:n.html))return;const l=document.createElement("div");l.className=e.styles.datePopup,l.dataset.vcDatePopup="",l.innerHTML=e.sanitizerHTML(n.html),i.ariaExpanded="true",i.ariaLabel=`${i.ariaLabel}, ${null==(o=null==l?void 0:l.textContent)?void 0:o.replace(/^\s+|\s+(?=\s)|\s+$/g,"").replace(/&nbsp;/g," ")}`,a.appendChild(l),requestAnimationFrame((()=>{if(!l)return;const{canShow:e}=f(a,l),t=e.bottom?a.offsetHeight:-l.offsetHeight,n=e.left&&!e.right?a.offsetWidth-l.offsetWidth/2:!e.left&&e.right?l.offsetWidth/2:0;Object.assign(l.style,{left:`${n}px`,top:`${t}px`})}))})(e,n,s,t))))},x=e=>new Date(`${e}T00:00:00`),M=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,T=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,s)=>{const o=x(n),a=x(s),i=new Date(o.getTime());for(;i<=a;i.setDate(i.getDate()+1))e.push(M(i));return t}));return e}),[]),E=(e,t,n,s="")=>{t?e.setAttribute(n,s):e.getAttribute(n)===s&&e.removeAttribute(n)},C=(e,t,n,s,o,a,i)=>{var l,r,d,c;const u=x(e.context.displayDateMin)>x(a)||x(e.context.displayDateMax)<x(a)||(null==(l=e.context.disableDates)?void 0:l.includes(a))||!e.selectionMonthsMode&&"current"!==i||!e.selectionYearsMode&&x(a).getFullYear()!==t;E(n,u,"data-vc-date-disabled"),s&&E(s,u,"aria-disabled","true"),s&&E(s,u,"tabindex","-1"),E(n,!e.disableToday&&e.context.dateToday===a,"data-vc-date-today"),E(n,!e.disableToday&&e.context.dateToday===a,"aria-current","date"),E(n,null==(r=e.selectedWeekends)?void 0:r.includes(o),"data-vc-date-weekend");const h=(null==(d=e.selectedHolidays)?void 0:d[0])?T(e.selectedHolidays):[];if(E(n,h.includes(a),"data-vc-date-holiday"),(null==(c=e.context.selectedDates)?void 0:c.includes(a))?(n.setAttribute("data-vc-date-selected",""),s&&s.setAttribute("aria-selected","true"),e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode&&(e.context.selectedDates[0]===a&&e.context.selectedDates[e.context.selectedDates.length-1]===a?n.setAttribute("data-vc-date-selected","first-and-last"):e.context.selectedDates[0]===a?n.setAttribute("data-vc-date-selected","first"):e.context.selectedDates[e.context.selectedDates.length-1]===a&&n.setAttribute("data-vc-date-selected","last"),e.context.selectedDates[0]!==a&&e.context.selectedDates[e.context.selectedDates.length-1]!==a&&n.setAttribute("data-vc-date-selected","middle"))):n.hasAttribute("data-vc-date-selected")&&(n.removeAttribute("data-vc-date-selected"),s&&s.removeAttribute("aria-selected")),!e.context.disableDates.includes(a)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode){const t=x(e.context.selectedDates[0]),s=x(e.context.selectedDates[e.context.selectedDates.length-1]),o=x(a);E(n,o>t&&o<s,"data-vc-date-selected","middle")}},S=(e,t)=>{const n=x(e),s=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-s);const o=new Date(n.getFullYear(),0,1),a=Math.ceil(((+n-+o)/864e5+1)/7);return{year:n.getFullYear(),week:a}},D=(e,t,n,s,o,a)=>{const i=x(o).getDay(),l="string"==typeof e.locale&&e.locale.length?e.locale:"en",r=document.createElement("div");let d;r.className=e.styles.date,r.dataset.vcDate=o,r.dataset.vcDateMonth=a,r.dataset.vcDateWeekDay=String(i),("current"===a||e.displayDatesOutside)&&(d=document.createElement("button"),d.className=e.styles.dateBtn,d.type="button",d.role="gridcell",d.ariaLabel=((e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n))(o,l,{dateStyle:"long",timeZone:"UTC"}),d.dataset.vcDateBtn="",d.innerText=String(s),r.appendChild(d)),e.enableWeekNumbers&&((e,t,n)=>{const s=S(n,e.firstWeekday);s&&(t.dataset.vcDateWeekNumber=String(s.week))})(e,r,o),((e,t,n)=>{var s,o,a,i,l;const r=null==(s=e.disableWeekdays)?void 0:s.includes(n),d=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!r&&!d||(null==(a=e.context.enableDates)?void 0:a.includes(t))||(null==(i=e.context.disableDates)?void 0:i.includes(t))||(e.context.disableDates.push(t),null==(l=e.context.disableDates)||l.sort(((e,t)=>+new Date(e)-+new Date(t))))})(e,o,i),C(e,t,r,d,i,o,a),n.appendChild(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},k=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc="dates"]'),s=e.context.mainElement.querySelectorAll('[data-vc-week="numbers"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=""),n.textContent="";const a=new Date(t);a.setMonth(a.getMonth()+o);const i=a.getMonth(),l=a.getFullYear(),r=(new Date(l,i,1).getDay()-e.firstWeekday+7)%7,d=new Date(l,i+1,0).getDate();((e,t,n,s,o)=>{let a=new Date(n,s,0).getDate()-(o-1);const i=0===s?n-1:n,l=0===s?12:s<10?`0${s}`:s;for(let s=o;s>0;s--,a++)D(e,n,t,a,`${i}-${l}-${a}`,"prev")})(e,n,l,i,r),((e,t,n,s,o)=>{for(let a=1;a<=n;a++){const n=new Date(s,o,a);D(e,s,t,a,M(n),"current")}})(e,n,d,l,i),((e,t,n,s,o,a)=>{const i=a+n,l=7*Math.ceil(i/7)-i,r=o+1===12?s+1:s,d=o+1===12?"01":o+2<10?`0${o+2}`:o+2;for(let n=1;n<=l;n++){const o=n<10?`0${n}`:String(n);D(e,s,t,n,`${r}-${d}-${o}`,"next")}})(e,n,d,l,i,r),w(e,n),((e,t,n,s,o)=>{if(!e.enableWeekNumbers)return;s.textContent="";const a=document.createElement("b");a.className=e.styles.weekNumbersTitle,a.innerText="#",a.dataset.vcWeekNumbers="title",s.appendChild(a);const i=document.createElement("div");i.className=e.styles.weekNumbersContent,i.dataset.vcWeekNumbers="content",s.appendChild(i);const l=document.createElement("button");l.type="button",l.className=e.styles.weekNumber;const r=o.querySelectorAll("[data-vc-date]"),d=Math.ceil((t+n)/7);for(let t=0;t<d;t++){const n=r[0===t?6:7*t].dataset.vcDate,s=S(n,e.firstWeekday);if(!s)return;const o=l.cloneNode(!0);o.innerText=String(s.week),o.dataset.vcWeekNumber=String(s.week),o.dataset.vcWeekYear=String(s.year),o.role="rowheader",o.ariaLabel=`${s.week}`,i.appendChild(o)}})(e,r,d,s[o],n)}))},I=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">\n <#Week />\n <#Dates />\n <#DateRangeTooltip />\n </div>\n </div>\n <#ControlTime />\n`,A=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`,L=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">\n <#Week />\n <#Dates />\n </div>\n </div>\n </div>\n <#/Multiple>\n <#DateRangeTooltip />\n </div>\n <#ControlTime />\n`,O=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`,$={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" role="grid" 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>`},Y=(e,t)=>t.replace(/[\n\t]/g,"").replace(/<#(?!\/?Multiple)(.*?)>/g,((t,n)=>{const s=(n.match(/\[(.*?)\]/)||[])[1],o=n.replace(/[/\s\n\t]|\[(.*?)\]/g,""),a=$[o],i=a?a(e,null!=s?s:null):"";return e.sanitizerHTML(i)})).replace(/[\n\t]/g,""),N=(e,t)=>{const n={default:I,month:A,year:O,multiple:L};if(Object.keys(n).forEach((t=>{const s=t;e.layouts[s].length||(e.layouts[s]=n[s](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"]'),s=e.context.mainElement.querySelector('[data-vc="grid"]'),o=t.closest('[data-vc="column"]');return n&&e.context.mainElement.removeChild(n),s&&(s.dataset.vcGrid="hidden"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(Y(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(Y(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 s=Array(e.context.displayMonthsCount).fill(n).join("");return e.sanitizerHTML(s)})).replace(/[\n\t]/g,""))(e,Y(e,e.layouts[e.context.currentType])))},P=(e,t,n,s)=>{e.style.visibility=n?"hidden":"",t.style.visibility=s?"hidden":""},F=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 s={default:()=>((e,t,n)=>{const s=x(M(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(s.getTime()),a=new Date(s.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),a.setMonth(a.getMonth()+e.monthsToSwitch);const i=x(e.context.dateMin),l=x(e.context.dateMax);e.selectionYearsMode||(i.setFullYear(s.getFullYear()),l.setFullYear(s.getFullYear()));const r=!e.selectionMonthsMode||o.getFullYear()<i.getFullYear()||o.getFullYear()===i.getFullYear()&&o.getMonth()<i.getMonth(),d=!e.selectionMonthsMode||a.getFullYear()>l.getFullYear()||a.getFullYear()===l.getFullYear()&&a.getMonth()>l.getMonth()-(e.context.displayMonthsCount-1);P(t,n,r,d)})(e,t,n),year:()=>((e,t,n)=>{const s=x(e.context.dateMin),o=x(e.context.dateMax),a=!!(s.getFullYear()&&e.context.displayYear-7<=s.getFullYear()),i=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());P(t,n,a,i)})(e,t,n)};s["multiple"===e.context.currentType?"default":e.context.currentType]()},q=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc="month"]'),n=e.context.mainElement.querySelectorAll('[data-vc="year"]'),s=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>((e,t,n,s,o)=>{const a=new Date(s.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),i=new Date(s.setMonth(e.context.selectedMonth+n)).getMonth(),l=e.context.locale.months.long[i],r=t.closest('[data-vc="column"]');r&&(r.ariaLabel=`${l} ${a}`);const d={month:{id:i,label:l},year:{id:a,label:a}};t.innerText=String(d[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(d[o].id),t.ariaLabel=`${e.labels[o]} ${d[o].label}`;const c={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===c[o]||"only-arrows"===c[o];u&&(t.tabIndex=-1),t.disabled=u})(e,t,n,s,t.dataset.vc)))))},H=(e,t,n,s,o)=>{var a;const i={month:"[data-vc-months-month]",year:"[data-vc-years-year]"},l={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==(a=e.context.mainElement.querySelectorAll(i[n]))||a.forEach((e=>{e.removeAttribute(l[n].selected