@haiilo/catalyst 5.4.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/catalyst/catalyst.css +1071 -0
- package/dist/catalyst/catalyst.esm.js +1 -1
- package/dist/catalyst/catalyst.esm.js.map +1 -1
- package/dist/catalyst/index.cdn.js +6 -0
- package/dist/catalyst/index.esm.js +2 -2
- package/dist/catalyst/index.esm.js.map +1 -1
- package/dist/catalyst/p-ad5fca6b.entry.js +10 -0
- package/dist/catalyst/p-ad5fca6b.entry.js.map +1 -0
- package/dist/catalyst/p-d7dc291a.js +2 -0
- package/dist/catalyst/p-d7dc291a.js.map +1 -0
- package/dist/catalyst/scss/index.scss +2 -0
- package/dist/catalyst/scss/vendor/_flatpickr.scss +314 -0
- package/dist/cjs/{cat-alert_27.cjs.entry.js → cat-alert_25.cjs.entry.js} +2922 -3480
- package/dist/cjs/cat-alert_25.cjs.entry.js.map +1 -0
- package/dist/cjs/{cat-icon-registry-228164a1.js → cat-icon-registry-6161e2ee.js} +14 -2
- package/dist/cjs/cat-icon-registry-6161e2ee.js.map +1 -0
- package/dist/cjs/catalyst.cjs.js +1 -1
- package/dist/cjs/index.cjs.js +12 -14
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +0 -2
- package/dist/collection/components/cat-avatar/cat-avatar.js +5 -5
- package/dist/collection/components/cat-avatar/cat-avatar.js.map +1 -1
- package/dist/collection/components/cat-button/cat-button.js +5 -7
- package/dist/collection/components/cat-button/cat-button.js.map +1 -1
- package/dist/collection/components/cat-checkbox/cat-checkbox.js +39 -42
- package/dist/collection/components/cat-checkbox/cat-checkbox.js.map +1 -1
- package/dist/collection/components/cat-datepicker/cat-datepicker.config.js +22 -0
- package/dist/collection/components/cat-datepicker/cat-datepicker.config.js.map +1 -0
- package/dist/collection/components/cat-datepicker/cat-datepicker.css +6 -369
- package/dist/collection/components/cat-datepicker/cat-datepicker.js +110 -314
- package/dist/collection/components/cat-datepicker/cat-datepicker.js.map +1 -1
- package/dist/collection/components/cat-datepicker/cat-datepicker.locale.js +51 -0
- package/dist/collection/components/cat-datepicker/cat-datepicker.locale.js.map +1 -0
- package/dist/collection/components/cat-dropdown/cat-dropdown.js +6 -9
- package/dist/collection/components/cat-dropdown/cat-dropdown.js.map +1 -1
- package/dist/collection/components/cat-form-group/cat-form-group.js +4 -5
- package/dist/collection/components/cat-form-group/cat-form-group.js.map +1 -1
- package/dist/collection/components/cat-form-hint/cat-form-hint.js +2 -6
- package/dist/collection/components/cat-form-hint/cat-form-hint.js.map +1 -1
- package/dist/collection/components/cat-i18n/cat-i18n-registry.js +13 -1
- package/dist/collection/components/cat-i18n/cat-i18n-registry.js.map +1 -1
- package/dist/collection/components/cat-input/cat-input.css +0 -377
- package/dist/collection/components/cat-input/cat-input.js +14 -40
- package/dist/collection/components/cat-input/cat-input.js.map +1 -1
- package/dist/collection/components/cat-input/input-type.js.map +1 -1
- package/dist/collection/components/cat-notification/cat-notification.js +11 -13
- package/dist/collection/components/cat-notification/cat-notification.js.map +1 -1
- package/dist/collection/components/cat-pagination/cat-pagination.js +2 -2
- package/dist/collection/components/cat-pagination/cat-pagination.js.map +1 -1
- package/dist/collection/components/cat-radio/cat-radio.js +11 -36
- package/dist/collection/components/cat-radio/cat-radio.js.map +1 -1
- package/dist/collection/components/cat-radio-group/cat-radio-group.js +37 -11
- package/dist/collection/components/cat-radio-group/cat-radio-group.js.map +1 -1
- package/dist/collection/components/cat-scrollable/cat-scrollable.js +2 -3
- package/dist/collection/components/cat-scrollable/cat-scrollable.js.map +1 -1
- package/dist/collection/components/cat-select/cat-select.js +42 -53
- package/dist/collection/components/cat-select/cat-select.js.map +1 -1
- package/dist/collection/components/cat-select-demo/cat-select-demo.js +21 -25
- package/dist/collection/components/cat-select-demo/cat-select-demo.js.map +1 -1
- package/dist/collection/components/cat-tabs/cat-tabs.js +4 -7
- package/dist/collection/components/cat-tabs/cat-tabs.js.map +1 -1
- package/dist/collection/components/cat-textarea/cat-textarea.js +17 -21
- package/dist/collection/components/cat-textarea/cat-textarea.js.map +1 -1
- package/dist/collection/components/cat-toggle/cat-toggle.js +38 -41
- package/dist/collection/components/cat-toggle/cat-toggle.js.map +1 -1
- package/dist/collection/components/cat-tooltip/cat-tooltip.js +17 -22
- package/dist/collection/components/cat-tooltip/cat-tooltip.js.map +1 -1
- package/dist/collection/index.cdn.js +6 -0
- package/dist/collection/scss/index.scss +2 -0
- package/dist/collection/scss/vendor/_flatpickr.scss +314 -0
- package/dist/collection/utils/platform.js +1 -1
- package/dist/collection/utils/platform.js.map +1 -1
- package/dist/components/cat-avatar2.js +5 -5
- package/dist/components/cat-avatar2.js.map +1 -1
- package/dist/components/cat-button2.js +6 -8
- package/dist/components/cat-button2.js.map +1 -1
- package/dist/components/cat-checkbox2.js +14 -15
- package/dist/components/cat-checkbox2.js.map +1 -1
- package/dist/components/cat-datepicker.js +2725 -3028
- package/dist/components/cat-datepicker.js.map +1 -1
- package/dist/components/cat-dropdown2.js +6 -9
- package/dist/components/cat-dropdown2.js.map +1 -1
- package/dist/components/cat-form-group.js +4 -5
- package/dist/components/cat-form-group.js.map +1 -1
- package/dist/components/cat-form-hint.js +2 -6
- package/dist/components/cat-form-hint.js.map +1 -1
- package/dist/components/cat-i18n-registry.js +13 -1
- package/dist/components/cat-i18n-registry.js.map +1 -1
- package/dist/components/cat-input2.js +9 -16
- package/dist/components/cat-input2.js.map +1 -1
- package/dist/components/cat-pagination.js.map +1 -1
- package/dist/components/cat-radio-group.js +15 -9
- package/dist/components/cat-radio-group.js.map +1 -1
- package/dist/components/cat-radio.js +5 -12
- package/dist/components/cat-radio.js.map +1 -1
- package/dist/components/cat-scrollable2.js +2 -3
- package/dist/components/cat-scrollable2.js.map +1 -1
- package/dist/components/cat-select-demo.js +21 -25
- package/dist/components/cat-select-demo.js.map +1 -1
- package/dist/components/cat-select2.js +42 -53
- package/dist/components/cat-select2.js.map +1 -1
- package/dist/components/cat-tabs.js +4 -7
- package/dist/components/cat-tabs.js.map +1 -1
- package/dist/components/cat-textarea.js +11 -11
- package/dist/components/cat-textarea.js.map +1 -1
- package/dist/components/cat-toggle.js +14 -15
- package/dist/components/cat-toggle.js.map +1 -1
- package/dist/components/cat-tooltip.js +17 -22
- package/dist/components/cat-tooltip.js.map +1 -1
- package/dist/components/floating-ui.dom.esm.js +55 -68
- package/dist/components/floating-ui.dom.esm.js.map +1 -1
- package/dist/components/index.js +11 -13
- package/dist/components/index.js.map +1 -1
- package/dist/esm/{cat-alert_27.entry.js → cat-alert_25.entry.js} +2922 -3478
- package/dist/esm/cat-alert_25.entry.js.map +1 -0
- package/dist/esm/{cat-icon-registry-4bd597f4.js → cat-icon-registry-f15b29d9.js} +14 -2
- package/dist/esm/cat-icon-registry-f15b29d9.js.map +1 -0
- package/dist/esm/catalyst.js +1 -1
- package/dist/esm/index.js +13 -15
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/@types/Intl.d.ts +3 -0
- package/dist/types/components/cat-checkbox/cat-checkbox.d.ts +11 -9
- package/dist/types/components/cat-datepicker/cat-datepicker.config.d.ts +1 -0
- package/dist/types/components/cat-datepicker/cat-datepicker.d.ts +21 -65
- package/dist/types/components/cat-datepicker/cat-datepicker.locale.d.ts +3 -0
- package/dist/types/components/cat-i18n/cat-i18n-registry.d.ts +3 -0
- package/dist/types/components/cat-input/cat-input.d.ts +2 -6
- package/dist/types/components/cat-input/input-type.d.ts +1 -1
- package/dist/types/components/cat-pagination/cat-pagination.d.ts +1 -1
- package/dist/types/components/cat-radio/cat-radio.d.ts +3 -7
- package/dist/types/components/cat-radio-group/cat-radio-group.d.ts +6 -1
- package/dist/types/components/cat-textarea/cat-textarea.d.ts +4 -4
- package/dist/types/components/cat-toggle/cat-toggle.d.ts +10 -8
- package/dist/types/components.d.ts +83 -417
- package/package.json +8 -10
- package/dist/catalyst/p-34e0cbba.entry.js +0 -10
- package/dist/catalyst/p-34e0cbba.entry.js.map +0 -1
- package/dist/catalyst/p-cf32399c.js +0 -2
- package/dist/catalyst/p-cf32399c.js.map +0 -1
- package/dist/cjs/cat-alert_27.cjs.entry.js.map +0 -1
- package/dist/cjs/cat-icon-registry-228164a1.js.map +0 -1
- package/dist/collection/components/cat-datepicker/datepicker-type.js +0 -8
- package/dist/collection/components/cat-datepicker/datepicker-type.js.map +0 -1
- package/dist/collection/components/cat-datepicker/dayjs.config.js +0 -8
- package/dist/collection/components/cat-datepicker/dayjs.config.js.map +0 -1
- package/dist/collection/components/cat-datepicker/vanillajs-datepicker.config.js +0 -46
- package/dist/collection/components/cat-datepicker/vanillajs-datepicker.config.js.map +0 -1
- package/dist/collection/components/cat-label/cat-label.css +0 -22
- package/dist/collection/components/cat-label/cat-label.js +0 -134
- package/dist/collection/components/cat-label/cat-label.js.map +0 -1
- package/dist/collection/components/cat-timepicker/cat-timepicker.css +0 -5
- package/dist/collection/components/cat-timepicker/cat-timepicker.js +0 -668
- package/dist/collection/components/cat-timepicker/cat-timepicker.js.map +0 -1
- package/dist/components/cat-label.d.ts +0 -11
- package/dist/components/cat-label.js +0 -73
- package/dist/components/cat-label.js.map +0 -1
- package/dist/components/cat-timepicker.d.ts +0 -11
- package/dist/components/cat-timepicker.js +0 -258
- package/dist/components/cat-timepicker.js.map +0 -1
- package/dist/esm/cat-alert_27.entry.js.map +0 -1
- package/dist/esm/cat-icon-registry-4bd597f4.js.map +0 -1
- package/dist/types/components/cat-datepicker/datepicker-type.d.ts +0 -7
- package/dist/types/components/cat-datepicker/datepicker.d.ts +0 -1
- package/dist/types/components/cat-datepicker/dayjs.config.d.ts +0 -3
- package/dist/types/components/cat-datepicker/vanillajs-datepicker.config.d.ts +0 -4
- package/dist/types/components/cat-label/cat-label.d.ts +0 -27
- package/dist/types/components/cat-timepicker/cat-timepicker.d.ts +0 -158
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"cat-datepicker.js","mappings":";;;;;;;;;AAAA,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAsD,cAAc,CAAC,CAAC,GAAkH,CAAC,CAACA,cAAI,EAAE,UAAU,CAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,4FAA4F,CAAC,CAAC,CAAC,qFAAqF,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,0DAA0D,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,uFAAuF,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,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C,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAA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","names":["this","dayjs","today","i18n","CatDatepicker","log"],"sources":["../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/isoWeek.js","../node_modules/dayjs/plugin/utc.js","./src/components/cat-datepicker/dayjs.config.ts","../node_modules/vanillajs-datepicker/js/lib/utils.js","../node_modules/vanillajs-datepicker/js/lib/date.js","../node_modules/vanillajs-datepicker/js/lib/date-format.js","../node_modules/vanillajs-datepicker/js/lib/dom.js","../node_modules/vanillajs-datepicker/js/lib/event.js","../node_modules/vanillajs-datepicker/js/i18n/base-locales.js","../node_modules/vanillajs-datepicker/js/options/defaultOptions.js","../node_modules/vanillajs-datepicker/js/options/processOptions.js","../node_modules/vanillajs-datepicker/js/options/shortcutKeys.js","../node_modules/vanillajs-datepicker/js/picker/templates/pickerTemplate.js","../node_modules/vanillajs-datepicker/js/picker/templates/daysTemplate.js","../node_modules/vanillajs-datepicker/js/picker/templates/weekNumbersTemplate.js","../node_modules/vanillajs-datepicker/js/picker/views/View.js","../node_modules/vanillajs-datepicker/js/picker/views/DaysView.js","../node_modules/vanillajs-datepicker/js/picker/views/MonthsView.js","../node_modules/vanillajs-datepicker/js/picker/views/YearsView.js","../node_modules/vanillajs-datepicker/js/events/functions.js","../node_modules/vanillajs-datepicker/js/events/pickerListeners.js","../node_modules/vanillajs-datepicker/js/picker/Picker.js","../node_modules/vanillajs-datepicker/js/events/elementListeners.js","../node_modules/vanillajs-datepicker/js/events/otherListeners.js","../node_modules/vanillajs-datepicker/js/Datepicker.js","./src/components/cat-datepicker/datepicker-type.ts","./src/components/cat-datepicker/vanillajs-datepicker.config.ts","./src/components/cat-datepicker/cat-datepicker.scss?tag=cat-datepicker&encapsulation=shadow","./src/components/cat-datepicker/cat-datepicker.tsx"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),l=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?l(1,0):l(31,11);case f:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,l=this;r=Number(r);var $=O.p(h),y=function(t){var e=w(l);return O.w(e.date(e.date()+Math.round(t*r)),l)};if($===f)return this.set(f,this.$M+r);if($===c)return this.set(c,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},$={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||$[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,v=this-M,g=O.m(this,M);return g=($={},$[c]=g/12,$[f]=g,$[h]=g/3,$[o]=(v-m)/6048e5,$[a]=(v-m)/864e5,$[u]=v/n,$[s]=v/e,$[i]=v/t,$)[y]||v,l?g:O.a(g)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[g],w.Ls=D,w.p={},w}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){\"use strict\";var e=\"day\";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf(\"year\"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,\"week\")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return\"isoweek\"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf(\"day\"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(\"day\"):n.bind(this)(e,t)}}}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else r.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","import dayjs from 'dayjs';\nimport isoWeek from 'dayjs/plugin/isoWeek';\nimport utc from 'dayjs/plugin/utc';\n\ndayjs.extend(isoWeek);\ndayjs.extend(utc);\n\nexport const today = () => dayjs().utc().startOf('day').toDate();\n\nexport default dayjs;\n","export function lastItemOf(arr) {\n return arr[arr.length - 1];\n}\n\n// push only the items not included in the array\nexport function pushUnique(arr, ...items) {\n items.forEach((item) => {\n if (arr.includes(item)) {\n return;\n }\n arr.push(item);\n });\n return arr;\n}\n\nexport function stringToArray(str, separator) {\n // convert empty string to an empty array\n return str ? str.split(separator) : [];\n}\n\nexport function isInRange(testVal, min, max) {\n const minOK = min === undefined || testVal >= min;\n const maxOK = max === undefined || testVal <= max;\n return minOK && maxOK;\n}\n\nexport function limitToRange(val, min, max) {\n if (val < min) {\n return min;\n }\n if (val > max) {\n return max;\n }\n return val;\n}\n\nexport function createTagRepeat(tagName, repeat, attributes = {}, index = 0, html = '') {\n const openTagSrc = Object.keys(attributes).reduce((src, attr) => {\n let val = attributes[attr];\n if (typeof val === 'function') {\n val = val(index);\n }\n return `${src} ${attr}=\"${val}\"`;\n }, tagName);\n html += `<${openTagSrc}></${tagName}>`;\n\n const next = index + 1;\n return next < repeat\n ? createTagRepeat(tagName, repeat, attributes, next, html)\n : html;\n}\n\n// Remove the spacing surrounding tags for HTML parser not to create text nodes\n// before/after elements\nexport function optimizeTemplateHTML(html) {\n return html.replace(/>\\s+/g, '>').replace(/\\s+</, '<');\n}\n","export function stripTime(timeValue) {\n return new Date(timeValue).setHours(0, 0, 0, 0);\n}\n\nexport function today() {\n return new Date().setHours(0, 0, 0, 0);\n}\n\n// Get the time value of the start of given date or year, month and day\nexport function dateValue(...args) {\n switch (args.length) {\n case 0:\n return today();\n case 1:\n return stripTime(args[0]);\n }\n\n // use setFullYear() to keep 2-digit year from being mapped to 1900-1999\n const newDate = new Date(0);\n newDate.setFullYear(...args);\n return newDate.setHours(0, 0, 0, 0);\n}\n\nexport function addDays(date, amount) {\n const newDate = new Date(date);\n return newDate.setDate(newDate.getDate() + amount);\n}\n\nexport function addWeeks(date, amount) {\n return addDays(date, amount * 7);\n}\n\nexport function addMonths(date, amount) {\n // If the day of the date is not in the new month, the last day of the new\n // month will be returned. e.g. Jan 31 + 1 month → Feb 28 (not Mar 03)\n const newDate = new Date(date);\n const monthsToSet = newDate.getMonth() + amount;\n let expectedMonth = monthsToSet % 12;\n if (expectedMonth < 0) {\n expectedMonth += 12;\n }\n\n const time = newDate.setMonth(monthsToSet);\n return newDate.getMonth() !== expectedMonth ? newDate.setDate(0) : time;\n}\n\nexport function addYears(date, amount) {\n // If the date is Feb 29 and the new year is not a leap year, Feb 28 of the\n // new year will be returned.\n const newDate = new Date(date);\n const expectedMonth = newDate.getMonth();\n const time = newDate.setFullYear(newDate.getFullYear() + amount);\n return expectedMonth === 1 && newDate.getMonth() === 2 ? newDate.setDate(0) : time;\n}\n\n// Calculate the distance bettwen 2 days of the week\nfunction dayDiff(day, from) {\n return (day - from + 7) % 7;\n}\n\n// Get the date of the specified day of the week of given base date\nexport function dayOfTheWeekOf(baseDate, dayOfWeek, weekStart = 0) {\n const baseDay = new Date(baseDate).getDay();\n return addDays(baseDate, dayDiff(dayOfWeek, weekStart) - dayDiff(baseDay, weekStart));\n}\n\nfunction calcWeekNum(dayOfTheWeek, sameDayOfFirstWeek) {\n return Math.round((dayOfTheWeek - sameDayOfFirstWeek) / 604800000) + 1;\n}\n\n// Get the ISO week number of a date\nexport function getIsoWeek(date) {\n // - Start of ISO week is Monday\n // - Use Thursday for culculation because the first Thursday of ISO week is\n // always in January\n const thuOfTheWeek = dayOfTheWeekOf(date, 4, 1);\n // - Week 1 in ISO week is the week including Jan 04\n // - Use the Thu of given date's week (instead of given date itself) to\n // calculate week 1 of the year so that Jan 01 - 03 won't be miscalculated\n // as week 0 when Jan 04 is Mon - Wed\n const firstThu = dayOfTheWeekOf(new Date(thuOfTheWeek).setMonth(0, 4), 4, 1);\n // return Math.round((thuOfTheWeek - firstThu) / 604800000) + 1;\n return calcWeekNum(thuOfTheWeek, firstThu);\n}\n\n// Calculate week number in traditional week number system\n// @see https://en.wikipedia.org/wiki/Week#Other_week_numbering_systems\nfunction calcTraditionalWeekNumber(date, weekStart) {\n // - Week 1 of traditional week is the week including the Jan 01\n // - Use Jan 01 of given date's year to calculate the start of week 1\n const startOfFirstWeek = dayOfTheWeekOf(new Date(date).setMonth(0, 1), weekStart, weekStart);\n const startOfTheWeek = dayOfTheWeekOf(date, weekStart, weekStart);\n const weekNum = calcWeekNum(startOfTheWeek, startOfFirstWeek);\n if (weekNum < 53) {\n return weekNum;\n }\n // If the 53rd week includes Jan 01, it's actually next year's week 1\n const weekOneOfNextYear = dayOfTheWeekOf(new Date(date).setDate(32), weekStart, weekStart);\n return startOfTheWeek === weekOneOfNextYear ? 1 : weekNum;\n}\n\n// Get the Western traditional week number of a date\nexport function getWesternTradWeek(date) {\n // Start of Western traditionl week is Sunday\n return calcTraditionalWeekNumber(date, 0);\n}\n\n// Get the Middle Eastern week number of a date\nexport function getMidEasternWeek(date) {\n // Start of Middle Eastern week is Saturday\n return calcTraditionalWeekNumber(date, 6);\n}\n\n// Get the start year of the period of years that includes given date\n// years: length of the year period\nexport function startOfYearPeriod(date, years) {\n /* @see https://en.wikipedia.org/wiki/Year_zero#ISO_8601 */\n const year = new Date(date).getFullYear();\n return Math.floor(year / years) * years;\n}\n\n// Convert date to the first/last date of the month/year of the date\nexport function regularizeDate(date, timeSpan, useLastDate) {\n if (timeSpan !== 1 && timeSpan !== 2) {\n return date;\n }\n const newDate = new Date(date);\n if (timeSpan === 1) {\n useLastDate\n ? newDate.setMonth(newDate.getMonth() + 1, 0)\n : newDate.setDate(1);\n } else {\n useLastDate\n ? newDate.setFullYear(newDate.getFullYear() + 1, 0, 0)\n : newDate.setMonth(0, 1);\n }\n return newDate.setHours(0, 0, 0, 0);\n}\n","import {stripTime, today} from './date.js';\nimport {lastItemOf} from './utils.js';\n\n// pattern for format parts\nexport const reFormatTokens = /dd?|DD?|mm?|MM?|yy?(?:yy)?/;\n// pattern for non date parts\nexport const reNonDateParts = /[\\s!-/:-@[-`{-~年月日]+/;\n// cache for persed formats\nlet knownFormats = {};\n// parse funtions for date parts\nconst parseFns = {\n y(date, year) {\n return new Date(date).setFullYear(parseInt(year, 10));\n },\n m(date, month, locale) {\n const newDate = new Date(date);\n let monthIndex = parseInt(month, 10) - 1;\n\n if (isNaN(monthIndex)) {\n if (!month) {\n return NaN;\n }\n\n const monthName = month.toLowerCase();\n const compareNames = name => name.toLowerCase().startsWith(monthName);\n // compare with both short and full names because some locales have periods\n // in the short names (not equal to the first X letters of the full names)\n monthIndex = locale.monthsShort.findIndex(compareNames);\n if (monthIndex < 0) {\n monthIndex = locale.months.findIndex(compareNames);\n }\n if (monthIndex < 0) {\n return NaN;\n }\n }\n\n newDate.setMonth(monthIndex);\n return newDate.getMonth() !== normalizeMonth(monthIndex)\n ? newDate.setDate(0)\n : newDate.getTime();\n },\n d(date, day) {\n return new Date(date).setDate(parseInt(day, 10));\n },\n};\n// format functions for date parts\nconst formatFns = {\n d(date) {\n return date.getDate();\n },\n dd(date) {\n return padZero(date.getDate(), 2);\n },\n D(date, locale) {\n return locale.daysShort[date.getDay()];\n },\n DD(date, locale) {\n return locale.days[date.getDay()];\n },\n m(date) {\n return date.getMonth() + 1;\n },\n mm(date) {\n return padZero(date.getMonth() + 1, 2);\n },\n M(date, locale) {\n return locale.monthsShort[date.getMonth()];\n },\n MM(date, locale) {\n return locale.months[date.getMonth()];\n },\n y(date) {\n return date.getFullYear();\n },\n yy(date) {\n return padZero(date.getFullYear(), 2).slice(-2);\n },\n yyyy(date) {\n return padZero(date.getFullYear(), 4);\n },\n};\n\n// get month index in normal range (0 - 11) from any number\nfunction normalizeMonth(monthIndex) {\n return monthIndex > -1 ? monthIndex % 12 : normalizeMonth(monthIndex + 12);\n}\n\nfunction padZero(num, length) {\n return num.toString().padStart(length, '0');\n}\n\nfunction parseFormatString(format) {\n if (typeof format !== 'string') {\n throw new Error(\"Invalid date format.\");\n }\n if (format in knownFormats) {\n return knownFormats[format];\n }\n\n // sprit the format string into parts and seprators\n const separators = format.split(reFormatTokens);\n const parts = format.match(new RegExp(reFormatTokens, 'g'));\n if (separators.length === 0 || !parts) {\n throw new Error(\"Invalid date format.\");\n }\n\n // collect format functions used in the format\n const partFormatters = parts.map(token => formatFns[token]);\n\n // collect parse function keys used in the format\n // iterate over parseFns' keys in order to keep the order of the keys.\n const partParserKeys = Object.keys(parseFns).reduce((keys, key) => {\n const token = parts.find(part => part[0] !== 'D' && part[0].toLowerCase() === key);\n if (token) {\n keys.push(key);\n }\n return keys;\n }, []);\n\n return knownFormats[format] = {\n parser(dateStr, locale) {\n const dateParts = dateStr.split(reNonDateParts).reduce((dtParts, part, index) => {\n if (part.length > 0 && parts[index]) {\n const token = parts[index][0];\n if (token === 'M') {\n dtParts.m = part;\n } else if (token !== 'D') {\n dtParts[token] = part;\n }\n }\n return dtParts;\n }, {});\n\n // iterate over partParserkeys so that the parsing is made in the oder\n // of year, month and day to prevent the day parser from correcting last\n // day of month wrongly\n return partParserKeys.reduce((origDate, key) => {\n const newDate = parseFns[key](origDate, dateParts[key], locale);\n // ingnore the part failed to parse\n return isNaN(newDate) ? origDate : newDate;\n }, today());\n },\n formatter(date, locale) {\n let dateStr = partFormatters.reduce((str, fn, index) => {\n return str += `${separators[index]}${fn(date, locale)}`;\n }, '');\n // separators' length is always parts' length + 1,\n return dateStr += lastItemOf(separators);\n },\n };\n}\n\nexport function parseDate(dateStr, format, locale) {\n if (dateStr instanceof Date || typeof dateStr === 'number') {\n const date = stripTime(dateStr);\n return isNaN(date) ? undefined : date;\n }\n if (!dateStr) {\n return undefined;\n }\n if (dateStr === 'today') {\n return today();\n }\n\n if (format && format.toValue) {\n const date = format.toValue(dateStr, format, locale);\n return isNaN(date) ? undefined : stripTime(date);\n }\n\n return parseFormatString(format).parser(dateStr, locale);\n}\n\nexport function formatDate(date, format, locale) {\n if (isNaN(date) || (!date && date !== 0)) {\n return '';\n }\n\n const dateObj = typeof date === 'number' ? new Date(date) : date;\n\n if (format.toDisplay) {\n return format.toDisplay(dateObj, format, locale);\n }\n\n return parseFormatString(format).formatter(dateObj, locale);\n}\n","const range = document.createRange();\n\nexport function parseHTML(html) {\n return range.createContextualFragment(html);\n}\n\nexport function getParent(el) {\n return el.parentElement\n || (el.parentNode instanceof ShadowRoot ? el.parentNode.host : undefined);\n}\n\nexport function isActiveElement(el) {\n return el.getRootNode().activeElement === el;\n}\n\n// equivalent to jQuery's :visble\nexport function isVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function hideElement(el) {\n if (el.style.display === 'none') {\n return;\n }\n // back up the existing display setting in data-style-display\n if (el.style.display) {\n el.dataset.styleDisplay = el.style.display;\n }\n el.style.display = 'none';\n}\n\nexport function showElement(el) {\n if (el.style.display !== 'none') {\n return;\n }\n if (el.dataset.styleDisplay) {\n // restore backed-up dispay property\n el.style.display = el.dataset.styleDisplay;\n delete el.dataset.styleDisplay;\n } else {\n el.style.display = '';\n }\n}\n\nexport function emptyChildNodes(el) {\n if (el.firstChild) {\n el.removeChild(el.firstChild);\n emptyChildNodes(el);\n }\n}\n\nexport function replaceChildNodes(el, newChildNodes) {\n emptyChildNodes(el);\n if (newChildNodes instanceof DocumentFragment) {\n el.appendChild(newChildNodes);\n } else if (typeof newChildNodes === 'string') {\n el.appendChild(parseHTML(newChildNodes));\n } else if (typeof newChildNodes.forEach === 'function') {\n newChildNodes.forEach((node) => {\n el.appendChild(node);\n });\n }\n}\n","const listenerRegistry = new WeakMap();\nconst {addEventListener, removeEventListener} = EventTarget.prototype;\n\n// Register event listeners to a key object\n// listeners: array of listener definitions;\n// - each definition must be a flat array of event target and the arguments\n// used to call addEventListener() on the target\nexport function registerListeners(keyObj, listeners) {\n let registered = listenerRegistry.get(keyObj);\n if (!registered) {\n registered = [];\n listenerRegistry.set(keyObj, registered);\n }\n listeners.forEach((listener) => {\n addEventListener.call(...listener);\n registered.push(listener);\n });\n}\n\nexport function unregisterListeners(keyObj) {\n let listeners = listenerRegistry.get(keyObj);\n if (!listeners) {\n return;\n }\n listeners.forEach((listener) => {\n removeEventListener.call(...listener);\n });\n listenerRegistry.delete(keyObj);\n}\n\n// Event.composedPath() polyfill for Edge\n// based on https://gist.github.com/kleinfreund/e9787d73776c0e3750dcfcdc89f100ec\nif (!Event.prototype.composedPath) {\n const getComposedPath = (node, path = []) => {\n path.push(node);\n\n let parent;\n if (node.parentNode) {\n parent = node.parentNode;\n } else if (node.host) { // ShadowRoot\n parent = node.host;\n } else if (node.defaultView) { // Document\n parent = node.defaultView;\n }\n return parent ? getComposedPath(parent, path) : path;\n };\n\n Event.prototype.composedPath = function () {\n return getComposedPath(this.target);\n };\n}\n\nfunction findFromPath(path, criteria, currentTarget) {\n const [node, ...rest] = path;\n if (criteria(node)) {\n return node;\n }\n if (node === currentTarget || node.tagName === 'HTML' || rest.length === 0) {\n // stop when reaching currentTarget or <html>\n return;\n }\n return findFromPath(rest, criteria, currentTarget);\n}\n\n// Search for the actual target of a delegated event\nexport function findElementInEventPath(ev, selector) {\n const criteria = typeof selector === 'function'\n ? selector\n : el => el instanceof Element && el.matches(selector);\n return findFromPath(ev.composedPath(), criteria, ev.currentTarget);\n}\n","// default locales\nexport default {\n en: {\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n today: \"Today\",\n clear: \"Clear\",\n titleFormat: \"MM y\"\n }\n};\n","// config options updatable by setOptions() and their default values\nexport default {\n autohide: false,\n beforeShowDay: null,\n beforeShowDecade: null,\n beforeShowMonth: null,\n beforeShowYear: null,\n clearButton: false,\n dateDelimiter: ',',\n datesDisabled: [],\n daysOfWeekDisabled: [],\n daysOfWeekHighlighted: [],\n defaultViewDate: undefined, // placeholder, defaults to today() by the program\n disableTouchKeyboard: false,\n enableOnReadonly: true,\n format: 'mm/dd/yyyy',\n language: 'en',\n maxDate: null,\n maxNumberOfDates: 1,\n maxView: 3,\n minDate: null,\n nextArrow: '»',\n orientation: 'auto',\n pickLevel: 0,\n prevArrow: '«',\n showDaysOfWeek: true,\n showOnClick: true,\n showOnFocus: true,\n startView: 0,\n title: '',\n todayButton: false,\n todayButtonMode: 0,\n todayHighlight: false,\n updateOnBlur: true,\n weekNumbers: 0,\n weekStart: 0,\n};\n","import {pushUnique} from '../lib/utils.js';\nimport {\n dateValue,\n regularizeDate,\n getIsoWeek,\n getWesternTradWeek,\n getMidEasternWeek,\n} from '../lib/date.js';\nimport {reFormatTokens, parseDate} from '../lib/date-format.js';\nimport {parseHTML} from '../lib/dom.js';\nimport defaultOptions from './defaultOptions.js';\n\nconst {\n language: defaultLang,\n format: defaultFormat,\n weekStart: defaultWeekStart,\n} = defaultOptions;\n\n// Reducer function to filter out invalid day-of-week from the input\nfunction sanitizeDOW(dow, day) {\n return dow.length < 6 && day >= 0 && day < 7\n ? pushUnique(dow, day)\n : dow;\n}\n\nfunction determineGetWeekMethod(numberingMode, weekStart) {\n const methodId = numberingMode === 4\n ? (weekStart === 6 ? 3 : !weekStart + 1)\n : numberingMode;\n switch (methodId) {\n case 1:\n return getIsoWeek;\n case 2:\n return getWesternTradWeek;\n case 3:\n return getMidEasternWeek;\n }\n}\n\nfunction updateWeekStart(newValue, config, weekNumbers) {\n config.weekStart = newValue;\n config.weekEnd = (newValue + 6) % 7;\n if (weekNumbers === 4) {\n config.getWeekNumber = determineGetWeekMethod(4, newValue);\n }\n return newValue;\n}\n\n// validate input date. if invalid, fallback to the original value\nfunction validateDate(value, format, locale, origValue) {\n const date = parseDate(value, format, locale);\n return date !== undefined ? date : origValue;\n}\n\n// Validate viewId. if invalid, fallback to the original value\nfunction validateViewId(value, origValue, max = 3) {\n const viewId = parseInt(value, 10);\n return viewId >= 0 && viewId <= max ? viewId : origValue;\n}\n\nfunction replaceOptions(options, from, to, convert = undefined) {\n if (from in options) {\n if (!(to in options)) {\n options[to] = convert ? convert(options[from]) : options[from];\n }\n delete options[from];\n }\n}\n\n// Create Datepicker configuration to set\nexport default function processOptions(options, datepicker) {\n const inOpts = Object.assign({}, options);\n const config = {};\n const locales = datepicker.constructor.locales;\n const rangeEnd = !!datepicker.rangeSideIndex;\n let {\n datesDisabled,\n format,\n language,\n locale,\n maxDate,\n maxView,\n minDate,\n pickLevel,\n startView,\n weekNumbers,\n weekStart,\n } = datepicker.config || {};\n\n // for backword compatibility\n replaceOptions(inOpts, 'calendarWeeks', 'weekNumbers', val => val ? 1 : 0);\n replaceOptions(inOpts, 'clearBtn', 'clearButton');\n replaceOptions(inOpts, 'todayBtn', 'todayButton');\n replaceOptions(inOpts, 'todayBtnMode', 'todayButtonMode');\n\n if (inOpts.language) {\n let lang;\n if (inOpts.language !== language) {\n if (locales[inOpts.language]) {\n lang = inOpts.language;\n } else {\n // Check if langauge + region tag can fallback to the one without\n // region (e.g. fr-CA → fr)\n lang = inOpts.language.split('-')[0];\n if (!locales[lang]) {\n lang = false;\n }\n }\n }\n delete inOpts.language;\n if (lang) {\n language = config.language = lang;\n\n // update locale as well when updating language\n const origLocale = locale || locales[defaultLang];\n // use default language's properties for the fallback\n locale = Object.assign({\n format: defaultFormat,\n weekStart: defaultWeekStart\n }, locales[defaultLang]);\n if (language !== defaultLang) {\n Object.assign(locale, locales[language]);\n }\n config.locale = locale;\n // if format and/or weekStart are the same as old locale's defaults,\n // update them to new locale's defaults\n if (format === origLocale.format) {\n format = config.format = locale.format;\n }\n if (weekStart === origLocale.weekStart) {\n weekStart = updateWeekStart(locale.weekStart, config, weekNumbers);\n }\n }\n }\n\n if (inOpts.format) {\n const hasToDisplay = typeof inOpts.format.toDisplay === 'function';\n const hasToValue = typeof inOpts.format.toValue === 'function';\n const validFormatString = reFormatTokens.test(inOpts.format);\n if ((hasToDisplay && hasToValue) || validFormatString) {\n format = config.format = inOpts.format;\n }\n delete inOpts.format;\n }\n\n //*** pick level ***//\n let newPickLevel = pickLevel;\n if ('pickLevel' in inOpts) {\n newPickLevel = validateViewId(inOpts.pickLevel, pickLevel, 2);\n delete inOpts.pickLevel;\n }\n if (newPickLevel !== pickLevel) {\n if (newPickLevel > pickLevel) {\n // complement current minDate/madDate so that the existing range will be\n // expanded to fit the new level later\n if (!('minDate' in inOpts)) {\n inOpts.minDate = minDate;\n }\n if (!('maxDate' in inOpts)) {\n inOpts.maxDate = maxDate;\n }\n }\n // complement datesDisabled so that it will be reset later\n if (datesDisabled && !inOpts.datesDisabled) {\n inOpts.datesDisabled = [];\n }\n pickLevel = config.pickLevel = newPickLevel;\n }\n\n //*** dates ***//\n // while min and maxDate for \"no limit\" in the options are better to be null\n // (especially when updating), the ones in the config have to be undefined\n // because null is treated as 0 (= unix epoch) when comparing with time value\n let minDt = minDate;\n let maxDt = maxDate;\n if ('minDate' in inOpts) {\n const defaultMinDt = dateValue(0, 0, 1);\n minDt = inOpts.minDate === null\n ? defaultMinDt // set 0000-01-01 to prevent negative values for year\n : validateDate(inOpts.minDate, format, locale, minDt);\n if (minDt !== defaultMinDt) {\n minDt = regularizeDate(minDt, pickLevel, false);\n }\n delete inOpts.minDate;\n }\n if ('maxDate' in inOpts) {\n maxDt = inOpts.maxDate === null\n ? undefined\n : validateDate(inOpts.maxDate, format, locale, maxDt);\n if (maxDt !== undefined) {\n maxDt = regularizeDate(maxDt, pickLevel, true);\n }\n delete inOpts.maxDate;\n }\n if (maxDt < minDt) {\n minDate = config.minDate = maxDt;\n maxDate = config.maxDate = minDt;\n } else {\n if (minDate !== minDt) {\n minDate = config.minDate = minDt;\n }\n if (maxDate !== maxDt) {\n maxDate = config.maxDate = maxDt;\n }\n }\n\n if (inOpts.datesDisabled) {\n const dtsDisabled = inOpts.datesDisabled;\n if (typeof dtsDisabled === 'function') {\n config.datesDisabled = null;\n config.checkDisabled = (timeValue, viewId) => dtsDisabled(\n new Date(timeValue),\n viewId,\n rangeEnd\n );\n } else {\n const disabled = config.datesDisabled = dtsDisabled.reduce((dates, dt) => {\n const date = parseDate(dt, format, locale);\n return date !== undefined\n ? pushUnique(dates, regularizeDate(date, pickLevel, rangeEnd))\n : dates;\n }, []);\n config.checkDisabled = timeValue => disabled.includes(timeValue);\n }\n delete inOpts.datesDisabled;\n }\n if ('defaultViewDate' in inOpts) {\n const viewDate = parseDate(inOpts.defaultViewDate, format, locale);\n if (viewDate !== undefined) {\n config.defaultViewDate = viewDate;\n }\n delete inOpts.defaultViewDate;\n }\n\n //*** days of week ***//\n if ('weekStart' in inOpts) {\n const wkStart = Number(inOpts.weekStart) % 7;\n if (!isNaN(wkStart)) {\n weekStart = updateWeekStart(wkStart, config, weekNumbers);\n }\n delete inOpts.weekStart;\n }\n if (inOpts.daysOfWeekDisabled) {\n config.daysOfWeekDisabled = inOpts.daysOfWeekDisabled.reduce(sanitizeDOW, []);\n delete inOpts.daysOfWeekDisabled;\n }\n if (inOpts.daysOfWeekHighlighted) {\n config.daysOfWeekHighlighted = inOpts.daysOfWeekHighlighted.reduce(sanitizeDOW, []);\n delete inOpts.daysOfWeekHighlighted;\n }\n\n //*** week numbers ***//\n if ('weekNumbers' in inOpts) {\n let method = inOpts.weekNumbers;\n if (method) {\n const getWeekNumber = typeof method === 'function'\n ? (timeValue, startOfWeek) => method(new Date(timeValue), startOfWeek)\n : determineGetWeekMethod((method = parseInt(method, 10)), weekStart);\n if (getWeekNumber) {\n weekNumbers = config.weekNumbers = method;\n config.getWeekNumber = getWeekNumber;\n }\n } else {\n weekNumbers = config.weekNumbers = 0;\n config.getWeekNumber = null;\n }\n delete inOpts.weekNumbers;\n }\n\n //*** multi date ***//\n if ('maxNumberOfDates' in inOpts) {\n const maxNumberOfDates = parseInt(inOpts.maxNumberOfDates, 10);\n if (maxNumberOfDates >= 0) {\n config.maxNumberOfDates = maxNumberOfDates;\n config.multidate = maxNumberOfDates !== 1;\n }\n delete inOpts.maxNumberOfDates;\n }\n if (inOpts.dateDelimiter) {\n config.dateDelimiter = String(inOpts.dateDelimiter);\n delete inOpts.dateDelimiter;\n }\n\n //*** view ***//\n let newMaxView = maxView;\n if ('maxView' in inOpts) {\n newMaxView = validateViewId(inOpts.maxView, maxView);\n delete inOpts.maxView;\n }\n // ensure max view >= pick level\n newMaxView = pickLevel > newMaxView ? pickLevel : newMaxView;\n if (newMaxView !== maxView) {\n maxView = config.maxView = newMaxView;\n }\n\n let newStartView = startView;\n if ('startView' in inOpts) {\n newStartView = validateViewId(inOpts.startView, newStartView);\n delete inOpts.startView;\n }\n // ensure pick level <= start view <= max view\n if (newStartView < pickLevel) {\n newStartView = pickLevel;\n } else if (newStartView > maxView) {\n newStartView = maxView;\n }\n if (newStartView !== startView) {\n config.startView = newStartView;\n }\n\n //*** template ***//\n if (inOpts.prevArrow) {\n const prevArrow = parseHTML(inOpts.prevArrow);\n if (prevArrow.childNodes.length > 0) {\n config.prevArrow = prevArrow.childNodes;\n }\n delete inOpts.prevArrow;\n }\n if (inOpts.nextArrow) {\n const nextArrow = parseHTML(inOpts.nextArrow);\n if (nextArrow.childNodes.length > 0) {\n config.nextArrow = nextArrow.childNodes;\n }\n delete inOpts.nextArrow;\n }\n\n //*** misc ***//\n if ('disableTouchKeyboard' in inOpts) {\n config.disableTouchKeyboard = 'ontouchstart' in document && !!inOpts.disableTouchKeyboard;\n delete inOpts.disableTouchKeyboard;\n }\n if (inOpts.orientation) {\n const orientation = inOpts.orientation.toLowerCase().split(/\\s+/g);\n config.orientation = {\n x: orientation.find(x => (x === 'left' || x === 'right')) || 'auto',\n y: orientation.find(y => (y === 'top' || y === 'bottom')) || 'auto',\n };\n delete inOpts.orientation;\n }\n if ('todayButtonMode' in inOpts) {\n switch(inOpts.todayButtonMode) {\n case 0:\n case 1:\n config.todayButtonMode = inOpts.todayButtonMode;\n }\n delete inOpts.todayButtonMode;\n }\n\n //*** copy the rest ***//\n Object.entries(inOpts).forEach(([key, value]) => {\n if (value !== undefined && key in defaultOptions) {\n config[key] = value;\n }\n });\n\n return config;\n}\n","const defaultShortcutKeys = {\n show: {key: 'ArrowDown'},\n hide: null,\n toggle: {key: 'Escape'},\n prevButton: {key: 'ArrowLeft', ctrlOrMetaKey: true},\n nextButton: {key: 'ArrowRight', ctrlOrMetaKey: true},\n viewSwitch: {key: 'ArrowUp', ctrlOrMetaKey: true},\n clearButton: {key: 'Backspace', ctrlOrMetaKey: true},\n todayButton: {key: '.', ctrlOrMetaKey: true},\n exitEditMode: {key: 'ArrowDown', ctrlOrMetaKey: true},\n};\n\nexport default function createShortcutKeyConfig(options) {\n return Object.keys(defaultShortcutKeys).reduce((keyDefs, shortcut) => {\n const keyDef = options[shortcut] === undefined\n ? defaultShortcutKeys[shortcut]\n : options[shortcut];\n const key = keyDef && keyDef.key;\n if (!key || typeof key !== 'string') {\n return keyDefs;\n }\n\n const normalizedDef = {\n key,\n ctrlOrMetaKey: !!(keyDef.ctrlOrMetaKey || keyDef.ctrlKey || keyDef.metaKey),\n };\n if (key.length > 1) {\n normalizedDef.altKey = !!keyDef.altKey;\n normalizedDef.shiftKey = !!keyDef.shiftKey;\n }\n keyDefs[shortcut] = normalizedDef;\n return keyDefs;\n }, {});\n}\n","import {optimizeTemplateHTML} from '../../lib/utils.js';\n\nexport default optimizeTemplateHTML(`<div class=\"datepicker\">\n <div class=\"datepicker-picker\">\n <div class=\"datepicker-header\">\n <div class=\"datepicker-title\"></div>\n <div class=\"datepicker-controls\">\n <button type=\"button\" class=\"%buttonClass% prev-button prev-btn\"></button>\n <button type=\"button\" class=\"%buttonClass% view-switch\"></button>\n <button type=\"button\" class=\"%buttonClass% next-button next-btn\"></button>\n </div>\n </div>\n <div class=\"datepicker-main\"></div>\n <div class=\"datepicker-footer\">\n <div class=\"datepicker-controls\">\n <button type=\"button\" class=\"%buttonClass% today-button today-btn\"></button>\n <button type=\"button\" class=\"%buttonClass% clear-button clear-btn\"></button>\n </div>\n </div>\n </div>\n</div>`);\n","import {createTagRepeat, optimizeTemplateHTML} from '../../lib/utils.js';\n\nexport default optimizeTemplateHTML(`<div class=\"days\">\n <div class=\"days-of-week\">${createTagRepeat('span', 7, {class: 'dow'})}</div>\n <div class=\"datepicker-grid\">${createTagRepeat('span', 42)}</div>\n</div>`);\n","import {createTagRepeat, optimizeTemplateHTML} from '../../lib/utils.js';\n\nexport default optimizeTemplateHTML(`<div class=\"week-numbers calendar-weeks\">\n <div class=\"days-of-week\"><span class=\"dow\"></span></div>\n <div class=\"weeks\">${createTagRepeat('span', 6, {class: 'week'})}</div>\n</div>`);\n\n","import {pushUnique} from '../../lib/utils.js';\nimport {parseHTML, replaceChildNodes} from '../../lib/dom.js';\n\n// Base class of the view classes\nexport default class View {\n constructor(picker, config) {\n Object.assign(this, config, {\n picker,\n element: parseHTML(`<div class=\"datepicker-view\"></div>`).firstChild,\n selected: [],\n isRangeEnd: !!picker.datepicker.rangeSideIndex,\n });\n this.init(this.picker.datepicker.config);\n }\n\n init(options) {\n if ('pickLevel' in options) {\n this.isMinView = this.id === options.pickLevel;\n }\n this.setOptions(options);\n this.updateFocus();\n this.updateSelection();\n }\n\n prepareForRender(switchLabel, prevButtonDisabled, nextButtonDisabled) {\n // refresh disabled years on every render in order to clear the ones added\n // by beforeShow hook at previous render\n this.disabled = [];\n\n const picker = this.picker;\n picker.setViewSwitchLabel(switchLabel);\n picker.setPrevButtonDisabled(prevButtonDisabled);\n picker.setNextButtonDisabled(nextButtonDisabled);\n }\n\n setDisabled(date, classList) {\n classList.add('disabled');\n pushUnique(this.disabled, date);\n }\n\n // Execute beforeShow() callback and apply the result to the element\n // args:\n performBeforeHook(el, timeValue) {\n let result = this.beforeShow(new Date(timeValue));\n switch (typeof result) {\n case 'boolean':\n result = {enabled: result};\n break;\n case 'string':\n result = {classes: result};\n }\n\n if (result) {\n const classList = el.classList;\n if (result.enabled === false) {\n this.setDisabled(timeValue, classList);\n }\n if (result.classes) {\n const extraClasses = result.classes.split(/\\s+/);\n classList.add(...extraClasses);\n if (extraClasses.includes('disabled')) {\n this.setDisabled(timeValue, classList);\n }\n }\n if (result.content) {\n replaceChildNodes(el, result.content);\n }\n }\n }\n\n renderCell(el, content, cellVal, date, {selected, range}, outOfScope, extraClasses = []) {\n el.textContent = content;\n if (this.isMinView) {\n el.dataset.date = date;\n }\n\n const classList = el.classList;\n el.className = `datepicker-cell ${this.cellClass}`;\n if (cellVal < this.first) {\n classList.add('prev');\n } else if (cellVal > this.last) {\n classList.add('next');\n }\n classList.add(...extraClasses);\n if (outOfScope || this.checkDisabled(date, this.id)) {\n this.setDisabled(date, classList);\n }\n if (range) {\n const [rangeStart, rangeEnd] = range;\n if (cellVal > rangeStart && cellVal < rangeEnd) {\n classList.add('range');\n }\n if (cellVal === rangeStart) {\n classList.add('range-start');\n }\n if (cellVal === rangeEnd) {\n classList.add('range-end');\n }\n }\n if (selected.includes(cellVal)) {\n classList.add('selected');\n }\n if (cellVal === this.focused) {\n classList.add('focused');\n }\n\n if (this.beforeShow) {\n this.performBeforeHook(el, date);\n }\n }\n\n refreshCell(el, cellVal, selected, [rangeStart, rangeEnd]) {\n const classList = el.classList;\n classList.remove('range', 'range-start', 'range-end', 'selected', 'focused');\n if (cellVal > rangeStart && cellVal < rangeEnd) {\n classList.add('range');\n }\n if (cellVal === rangeStart) {\n classList.add('range-start');\n }\n if (cellVal === rangeEnd) {\n classList.add('range-end');\n }\n if (selected.includes(cellVal)) {\n classList.add('selected');\n }\n if (cellVal === this.focused) {\n classList.add('focused');\n }\n }\n\n changeFocusedCell(cellIndex) {\n this.grid.querySelectorAll('.focused').forEach((el) => {\n el.classList.remove('focused');\n });\n this.grid.children[cellIndex].classList.add('focused');\n }\n}\n","import {today, dateValue, addDays, addWeeks, dayOfTheWeekOf} from '../../lib/date.js';\nimport {formatDate} from '../../lib/date-format.js';\nimport {parseHTML, showElement, hideElement} from '../../lib/dom.js';\nimport daysTemplate from '../templates/daysTemplate.js';\nimport weekNumbersTemplate from '../templates/weekNumbersTemplate.js';\nimport View from './View.js';\n\nexport default class DaysView extends View {\n constructor(picker) {\n super(picker, {\n id: 0,\n name: 'days',\n cellClass: 'day',\n });\n }\n\n init(options, onConstruction = true) {\n if (onConstruction) {\n const inner = parseHTML(daysTemplate).firstChild;\n this.dow = inner.firstChild;\n this.grid = inner.lastChild;\n this.element.appendChild(inner);\n }\n super.init(options);\n }\n\n setOptions(options) {\n let updateDOW;\n\n if ('minDate' in options) {\n this.minDate = options.minDate;\n }\n if ('maxDate' in options) {\n this.maxDate = options.maxDate;\n }\n if (options.checkDisabled) {\n this.checkDisabled = options.checkDisabled;\n }\n if (options.daysOfWeekDisabled) {\n this.daysOfWeekDisabled = options.daysOfWeekDisabled;\n updateDOW = true;\n }\n if (options.daysOfWeekHighlighted) {\n this.daysOfWeekHighlighted = options.daysOfWeekHighlighted;\n }\n if ('todayHighlight' in options) {\n this.todayHighlight = options.todayHighlight;\n }\n if ('weekStart' in options) {\n this.weekStart = options.weekStart;\n this.weekEnd = options.weekEnd;\n updateDOW = true;\n }\n if (options.locale) {\n const locale = this.locale = options.locale;\n this.dayNames = locale.daysMin;\n this.switchLabelFormat = locale.titleFormat;\n updateDOW = true;\n }\n if ('beforeShowDay' in options) {\n this.beforeShow = typeof options.beforeShowDay === 'function'\n ? options.beforeShowDay\n : undefined;\n }\n\n if ('weekNumbers' in options) {\n if (options.weekNumbers && !this.weekNumbers) {\n const weeksElem = parseHTML(weekNumbersTemplate).firstChild;\n this.weekNumbers = {\n element: weeksElem,\n dow: weeksElem.firstChild,\n weeks: weeksElem.lastChild,\n };\n this.element.insertBefore(weeksElem, this.element.firstChild);\n } else if (this.weekNumbers && !options.weekNumbers) {\n this.element.removeChild(this.weekNumbers.element);\n this.weekNumbers = null;\n }\n }\n\n if ('getWeekNumber' in options) {\n this.getWeekNumber = options.getWeekNumber;\n }\n\n if ('showDaysOfWeek' in options) {\n if (options.showDaysOfWeek) {\n showElement(this.dow);\n if (this.weekNumbers) {\n showElement(this.weekNumbers.dow);\n }\n } else {\n hideElement(this.dow);\n if (this.weekNumbers) {\n hideElement(this.weekNumbers.dow);\n }\n }\n }\n\n // update days-of-week when locale, daysOfweekDisabled or weekStart is changed\n if (updateDOW) {\n Array.from(this.dow.children).forEach((el, index) => {\n const dow = (this.weekStart + index) % 7;\n el.textContent = this.dayNames[dow];\n el.className = this.daysOfWeekDisabled.includes(dow) ? 'dow disabled' : 'dow';\n });\n }\n }\n\n // Apply update on the focused date to view's settings\n updateFocus() {\n const viewDate = new Date(this.picker.viewDate);\n const viewYear = viewDate.getFullYear();\n const viewMonth = viewDate.getMonth();\n const firstOfMonth = dateValue(viewYear, viewMonth, 1);\n const start = dayOfTheWeekOf(firstOfMonth, this.weekStart, this.weekStart);\n\n this.first = firstOfMonth;\n this.last = dateValue(viewYear, viewMonth + 1, 0);\n this.start = start;\n this.focused = this.picker.viewDate;\n }\n\n // Apply update on the selected dates to view's settings\n updateSelection() {\n const {dates, rangepicker} = this.picker.datepicker;\n this.selected = dates;\n if (rangepicker) {\n this.range = rangepicker.dates;\n }\n }\n\n // Update the entire view UI\n render() {\n // update today marker on ever render\n this.today = this.todayHighlight ? today() : undefined;\n\n this.prepareForRender(\n formatDate(this.focused, this.switchLabelFormat, this.locale),\n this.first <= this.minDate,\n this.last >= this.maxDate\n );\n\n if (this.weekNumbers) {\n const weekStart = this.weekStart;\n const startOfWeek = dayOfTheWeekOf(this.first, weekStart, weekStart);\n Array.from(this.weekNumbers.weeks.children).forEach((el, index) => {\n const dateOfWeekStart = addWeeks(startOfWeek, index);\n el.textContent = this.getWeekNumber(dateOfWeekStart, weekStart);\n if (index > 3) {\n el.classList[dateOfWeekStart > this.last ? 'add' : 'remove']('next');\n }\n });\n }\n Array.from(this.grid.children).forEach((el, index) => {\n const current = addDays(this.start, index);\n const dateObj = new Date(current);\n const day = dateObj.getDay();\n const extraClasses = [];\n\n if (this.today === current) {\n extraClasses.push('today');\n }\n if (this.daysOfWeekHighlighted.includes(day)) {\n extraClasses.push('highlighted');\n }\n\n this.renderCell(\n el,\n dateObj.getDate(),\n current,\n current,\n this,\n current < this.minDate\n || current > this.maxDate\n || this.daysOfWeekDisabled.includes(day),\n extraClasses\n );\n });\n }\n\n // Update the view UI by applying the changes of selected and focused items\n refresh() {\n const range = this.range || [];\n Array.from(this.grid.children).forEach((el) => {\n this.refreshCell(el, Number(el.dataset.date), this.selected, range);\n });\n }\n\n // Update the view UI by applying the change of focused item\n refreshFocus() {\n this.changeFocusedCell(Math.round((this.focused - this.start) / 86400000));\n }\n}\n","import {pushUnique, createTagRepeat} from '../../lib/utils.js';\nimport {dateValue, regularizeDate} from '../../lib/date.js';\nimport {parseHTML} from '../../lib/dom.js';\nimport View from './View.js';\n\nfunction computeMonthRange(range, thisYear) {\n if (!range || !range[0] || !range[1]) {\n return;\n }\n\n const [[startY, startM], [endY, endM]] = range;\n if (startY > thisYear || endY < thisYear) {\n return;\n }\n return [\n startY === thisYear ? startM : -1,\n endY === thisYear ? endM : 12,\n ];\n}\n\nexport default class MonthsView extends View {\n constructor(picker) {\n super(picker, {\n id: 1,\n name: 'months',\n cellClass: 'month',\n });\n }\n\n init(options, onConstruction = true) {\n if (onConstruction) {\n this.grid = this.element;\n this.element.classList.add('months', 'datepicker-grid');\n this.grid.appendChild(parseHTML(createTagRepeat('span', 12, {'data-month': ix => ix})));\n this.first = 0;\n this.last = 11;\n }\n super.init(options);\n }\n\n setOptions(options) {\n if (options.locale) {\n this.monthNames = options.locale.monthsShort;\n }\n if ('minDate' in options) {\n if (options.minDate === undefined) {\n this.minYear = this.minMonth = this.minDate = undefined;\n } else {\n const minDateObj = new Date(options.minDate);\n this.minYear = minDateObj.getFullYear();\n this.minMonth = minDateObj.getMonth();\n this.minDate = minDateObj.setDate(1);\n }\n }\n if ('maxDate' in options) {\n if (options.maxDate === undefined) {\n this.maxYear = this.maxMonth = this.maxDate = undefined;\n } else {\n const maxDateObj = new Date(options.maxDate);\n this.maxYear = maxDateObj.getFullYear();\n this.maxMonth = maxDateObj.getMonth();\n this.maxDate = dateValue(this.maxYear, this.maxMonth + 1, 0);\n }\n }\n if (options.checkDisabled) {\n this.checkDisabled = this.isMinView || options.datesDisabled === null\n ? options.checkDisabled\n : () => false;\n }\n if ('beforeShowMonth' in options) {\n this.beforeShow = typeof options.beforeShowMonth === 'function'\n ? options.beforeShowMonth\n : undefined;\n }\n }\n\n // Update view's settings to reflect the viewDate set on the picker\n updateFocus() {\n const viewDate = new Date(this.picker.viewDate);\n this.year = viewDate.getFullYear();\n this.focused = viewDate.getMonth();\n }\n\n // Update view's settings to reflect the selected dates\n updateSelection() {\n const {dates, rangepicker} = this.picker.datepicker;\n this.selected = dates.reduce((selected, timeValue) => {\n const date = new Date(timeValue);\n const year = date.getFullYear();\n const month = date.getMonth();\n if (selected[year] === undefined) {\n selected[year] = [month];\n } else {\n pushUnique(selected[year], month);\n }\n return selected;\n }, {});\n if (rangepicker && rangepicker.dates) {\n this.range = rangepicker.dates.map(timeValue => {\n const date = new Date(timeValue);\n return isNaN(date) ? undefined : [date.getFullYear(), date.getMonth()];\n });\n }\n }\n\n // Update the entire view UI\n render() {\n this.prepareForRender(\n this.year,\n this.year <= this.minYear,\n this.year >= this.maxYear\n );\n\n const selected = this.selected[this.year] || [];\n const yrOutOfRange = this.year < this.minYear || this.year > this.maxYear;\n const isMinYear = this.year === this.minYear;\n const isMaxYear = this.year === this.maxYear;\n const range = computeMonthRange(this.range, this.year);\n\n Array.from(this.grid.children).forEach((el, index) => {\n const date = regularizeDate(new Date(this.year, index, 1), 1, this.isRangeEnd);\n\n this.renderCell(\n el,\n this.monthNames[index],\n index,\n date,\n {selected, range},\n yrOutOfRange\n || isMinYear && index < this.minMonth\n || isMaxYear && index > this.maxMonth\n );\n });\n }\n\n // Update the view UI by applying the changes of selected and focused items\n refresh() {\n const selected = this.selected[this.year] || [];\n const range = computeMonthRange(this.range, this.year) || [];\n Array.from(this.grid.children).forEach((el, index) => {\n this.refreshCell(el, index, selected, range);\n });\n }\n\n // Update the view UI by applying the change of focused item\n refreshFocus() {\n this.changeFocusedCell(this.focused);\n }\n}","import {pushUnique, createTagRepeat} from '../../lib/utils.js';\nimport {dateValue, regularizeDate, startOfYearPeriod} from '../../lib/date.js';\nimport {parseHTML} from '../../lib/dom.js';\nimport View from './View.js';\n\nfunction toTitleCase(word) {\n return [...word].reduce((str, ch, ix) => str += ix ? ch : ch.toUpperCase(), '');\n}\n\n// Class representing the years and decades view elements\nexport default class YearsView extends View {\n constructor(picker, config) {\n super(picker, config);\n }\n\n init(options, onConstruction = true) {\n if (onConstruction) {\n this.navStep = this.step * 10;\n this.beforeShowOption = `beforeShow${toTitleCase(this.cellClass)}`;\n this.grid = this.element;\n this.element.classList.add(this.name, 'datepicker-grid');\n this.grid.appendChild(parseHTML(createTagRepeat('span', 12)));\n }\n super.init(options);\n }\n\n setOptions(options) {\n if ('minDate' in options) {\n if (options.minDate === undefined) {\n this.minYear = this.minDate = undefined;\n } else {\n this.minYear = startOfYearPeriod(options.minDate, this.step);\n this.minDate = dateValue(this.minYear, 0, 1);\n }\n }\n if ('maxDate' in options) {\n if (options.maxDate === undefined) {\n this.maxYear = this.maxDate = undefined;\n } else {\n this.maxYear = startOfYearPeriod(options.maxDate, this.step);\n this.maxDate = dateValue(this.maxYear, 11, 31);\n }\n }\n if (options.checkDisabled) {\n this.checkDisabled = this.isMinView || options.datesDisabled === null\n ? options.checkDisabled\n : () => false;\n }\n if (this.beforeShowOption in options) {\n const beforeShow = options[this.beforeShowOption];\n this.beforeShow = typeof beforeShow === 'function' ? beforeShow : undefined;\n }\n }\n\n // Update view's settings to reflect the viewDate set on the picker\n updateFocus() {\n const viewDate = new Date(this.picker.viewDate);\n const first = startOfYearPeriod(viewDate, this.navStep);\n const last = first + 9 * this.step;\n\n this.first = first;\n this.last = last;\n this.start = first - this.step;\n this.focused = startOfYearPeriod(viewDate, this.step);\n }\n\n // Update view's settings to reflect the selected dates\n updateSelection() {\n const {dates, rangepicker} = this.picker.datepicker;\n this.selected = dates.reduce((years, timeValue) => {\n return pushUnique(years, startOfYearPeriod(timeValue, this.step));\n }, []);\n if (rangepicker && rangepicker.dates) {\n this.range = rangepicker.dates.map(timeValue => {\n if (timeValue !== undefined) {\n return startOfYearPeriod(timeValue, this.step);\n }\n });\n }\n }\n\n // Update the entire view UI\n render() {\n this.prepareForRender(\n `${this.first}-${this.last}`,\n this.first <= this.minYear,\n this.last >= this.maxYear\n );\n\n Array.from(this.grid.children).forEach((el, index) => {\n const current = this.start + (index * this.step);\n const date = regularizeDate(new Date(current, 0, 1), 2, this.isRangeEnd);\n\n el.dataset.year = current;\n this.renderCell(\n el,\n current,\n current,\n date,\n this,\n current < this.minYear || current > this.maxYear\n );\n });\n }\n\n // Update the view UI by applying the changes of selected and focused items\n refresh() {\n const range = this.range || [];\n Array.from(this.grid.children).forEach((el) => {\n this.refreshCell(el, Number(el.textContent), this.selected, range);\n });\n }\n\n // Update the view UI by applying the change of focused item\n refreshFocus() {\n this.changeFocusedCell(Math.round((this.focused - this.start) / this.step));\n }\n}\n","import {limitToRange} from '../lib/utils.js';\nimport {today, addMonths, addYears} from '../lib/date.js';\nimport {isActiveElement} from '../lib/dom.js';\n\nexport function triggerDatepickerEvent(datepicker, type) {\n const detail = {\n date: datepicker.getDate(),\n viewDate: new Date(datepicker.picker.viewDate),\n viewId: datepicker.picker.currentView.id,\n datepicker,\n };\n datepicker.element.dispatchEvent(new CustomEvent(type, {detail}));\n}\n\n// direction: -1 (to previous), 1 (to next)\nexport function goToPrevOrNext(datepicker, direction) {\n const {config, picker} = datepicker;\n const {currentView, viewDate} = picker;\n let newViewDate;\n switch (currentView.id) {\n case 0:\n newViewDate = addMonths(viewDate, direction);\n break;\n case 1:\n newViewDate = addYears(viewDate, direction);\n break;\n default:\n newViewDate = addYears(viewDate, direction * currentView.navStep);\n }\n newViewDate = limitToRange(newViewDate, config.minDate, config.maxDate);\n picker.changeFocus(newViewDate).render();\n}\n\nexport function switchView(datepicker) {\n const viewId = datepicker.picker.currentView.id;\n if (viewId === datepicker.config.maxView) {\n return;\n }\n datepicker.picker.changeView(viewId + 1).render();\n}\n\nexport function clearSelection(datepicker) {\n datepicker.setDate({clear: true});\n}\n\nexport function goToOrSelectToday(datepicker) {\n const currentDate = today();\n if (datepicker.config.todayButtonMode === 1) {\n datepicker.setDate(currentDate, {forceRefresh: true, viewDate: currentDate});\n } else {\n datepicker.setFocusedDate(currentDate, true);\n }\n}\n\nexport function unfocus(datepicker) {\n const onBlur = () => {\n if (datepicker.config.updateOnBlur) {\n datepicker.update({revert: true});\n } else {\n datepicker.refresh('input');\n }\n datepicker.hide();\n };\n const element = datepicker.element;\n\n if (isActiveElement(element)) {\n element.addEventListener('blur', onBlur, {once: true});\n } else {\n onBlur();\n }\n}\n","import {addMonths, addYears} from '../lib/date.js';\nimport {findElementInEventPath} from '../lib/event.js';\nimport {goToPrevOrNext, switchView} from './functions.js';\n\nfunction goToSelectedMonthOrYear(datepicker, selection) {\n const picker = datepicker.picker;\n const viewDate = new Date(picker.viewDate);\n const viewId = picker.currentView.id;\n const newDate = viewId === 1\n ? addMonths(viewDate, selection - viewDate.getMonth())\n : addYears(viewDate, selection - viewDate.getFullYear());\n\n picker.changeFocus(newDate).changeView(viewId - 1).render();\n}\n\nexport function onClickViewSwitch(datepicker) {\n switchView(datepicker);\n}\n\nexport function onClickPrevButton(datepicker) {\n goToPrevOrNext(datepicker, -1);\n}\n\nexport function onClickNextButton(datepicker) {\n goToPrevOrNext(datepicker, 1);\n}\n\n// For the picker's main block to delegete the events from `datepicker-cell`s\nexport function onClickView(datepicker, ev) {\n const target = findElementInEventPath(ev, '.datepicker-cell');\n if (!target || target.classList.contains('disabled')) {\n return;\n }\n\n const {id, isMinView} = datepicker.picker.currentView;\n const data = target.dataset;\n if (isMinView) {\n datepicker.setDate(Number(data.date));\n } else if (id === 1) {\n goToSelectedMonthOrYear(datepicker, Number(data.month));\n } else {\n goToSelectedMonthOrYear(datepicker, Number(data.year));\n }\n}\n\nexport function onMousedownPicker(ev) {\n ev.preventDefault();\n}\n","import {lastItemOf, isInRange, limitToRange} from '../lib/utils.js';\nimport {today, regularizeDate} from '../lib/date.js';\nimport {\n parseHTML,\n getParent,\n showElement,\n hideElement,\n emptyChildNodes,\n} from '../lib/dom.js';\nimport {registerListeners} from '../lib/event.js';\nimport pickerTemplate from './templates/pickerTemplate.js';\nimport DaysView from './views/DaysView.js';\nimport MonthsView from './views/MonthsView.js';\nimport YearsView from './views/YearsView.js';\nimport {\n triggerDatepickerEvent,\n clearSelection,\n goToOrSelectToday,\n} from '../events/functions.js';\nimport {\n onClickViewSwitch,\n onClickPrevButton,\n onClickNextButton,\n onClickView,\n onMousedownPicker,\n} from '../events/pickerListeners.js';\n\nconst orientClasses = ['left', 'top', 'right', 'bottom'].reduce((obj, key) => {\n obj[key] = `datepicker-orient-${key}`;\n return obj;\n}, {});\nconst toPx = num => num ? `${num}px` : num;\n\nfunction processPickerOptions(picker, options) {\n if ('title' in options) {\n if (options.title) {\n picker.controls.title.textContent = options.title;\n showElement(picker.controls.title);\n } else {\n picker.controls.title.textContent = '';\n hideElement(picker.controls.title);\n }\n }\n if (options.prevArrow) {\n const prevButton = picker.controls.prevButton;\n emptyChildNodes(prevButton);\n options.prevArrow.forEach((node) => {\n prevButton.appendChild(node.cloneNode(true));\n });\n }\n if (options.nextArrow) {\n const nextButton = picker.controls.nextButton;\n emptyChildNodes(nextButton);\n options.nextArrow.forEach((node) => {\n nextButton.appendChild(node.cloneNode(true));\n });\n }\n if (options.locale) {\n picker.controls.todayButton.textContent = options.locale.today;\n picker.controls.clearButton.textContent = options.locale.clear;\n }\n if ('todayButton' in options) {\n if (options.todayButton) {\n showElement(picker.controls.todayButton);\n } else {\n hideElement(picker.controls.todayButton);\n }\n }\n if ('minDate' in options || 'maxDate' in options) {\n const {minDate, maxDate} = picker.datepicker.config;\n picker.controls.todayButton.disabled = !isInRange(today(), minDate, maxDate);\n }\n if ('clearButton' in options) {\n if (options.clearButton) {\n showElement(picker.controls.clearButton);\n } else {\n hideElement(picker.controls.clearButton);\n }\n }\n}\n\n// Compute view date to reset, which will be...\n// - the last item of the selected dates or defaultViewDate if no selection\n// - limitted to minDate or maxDate if it exceeds the range\nfunction computeResetViewDate(datepicker) {\n const {dates, config, rangeSideIndex} = datepicker;\n const viewDate = dates.length > 0\n ? lastItemOf(dates)\n : regularizeDate(config.defaultViewDate, config.pickLevel, rangeSideIndex);\n return limitToRange(viewDate, config.minDate, config.maxDate);\n}\n\n// Change current view's view date\nfunction setViewDate(picker, newDate) {\n if (!('_oldViewDate' in picker) && newDate !== picker.viewDate) {\n picker._oldViewDate = picker.viewDate;\n }\n picker.viewDate = newDate;\n\n // return whether the new date is in different period on time from the one\n // displayed in the current view\n // when true, the view needs to be re-rendered on the next UI refresh.\n const {id, year, first, last} = picker.currentView;\n const viewYear = new Date(newDate).getFullYear();\n switch (id) {\n case 0:\n return newDate < first || newDate > last;\n case 1:\n return viewYear !== year;\n default:\n return viewYear < first || viewYear > last;\n }\n}\n\nfunction getTextDirection(el) {\n return window.getComputedStyle(el).direction;\n}\n\n// find the closet scrollable ancestor elemnt under the body\nfunction findScrollParents(el) {\n const parent = getParent(el);\n if (parent === document.body || !parent) {\n return;\n }\n\n // checking overflow only is enough because computed overflow cannot be\n // visible or a combination of visible and other when either axis is set\n // to other than visible.\n // (Setting one axis to other than 'visible' while the other is 'visible'\n // results in the other axis turning to 'auto')\n return window.getComputedStyle(parent).overflow !== 'visible'\n ? parent\n : findScrollParents(parent);\n}\n\n// Class representing the picker UI\nexport default class Picker {\n constructor(datepicker) {\n const {config, inputField} = this.datepicker = datepicker;\n\n const template = pickerTemplate.replace(/%buttonClass%/g, config.buttonClass);\n const element = this.element = parseHTML(template).firstChild;\n const [header, main, footer] = element.firstChild.children;\n const title = header.firstElementChild;\n const [prevButton, viewSwitch, nextButton] = header.lastElementChild.children;\n const [todayButton, clearButton] = footer.firstChild.children;\n const controls = {\n title,\n prevButton,\n viewSwitch,\n nextButton,\n todayButton,\n clearButton,\n };\n this.main = main;\n this.controls = controls;\n\n const elementClass = inputField ? 'dropdown' : 'inline';\n element.classList.add(`datepicker-${elementClass}`);\n\n processPickerOptions(this, config);\n this.viewDate = computeResetViewDate(datepicker);\n\n // set up event listeners\n registerListeners(datepicker, [\n [element, 'mousedown', onMousedownPicker],\n [main, 'click', onClickView.bind(null, datepicker)],\n [controls.viewSwitch, 'click', onClickViewSwitch.bind(null, datepicker)],\n [controls.prevButton, 'click', onClickPrevButton.bind(null, datepicker)],\n [controls.nextButton, 'click', onClickNextButton.bind(null, datepicker)],\n [controls.todayButton, 'click', goToOrSelectToday.bind(null, datepicker)],\n [controls.clearButton, 'click', clearSelection.bind(null, datepicker)],\n ]);\n\n // set up views\n this.views = [\n new DaysView(this),\n new MonthsView(this),\n new YearsView(this, {id: 2, name: 'years', cellClass: 'year', step: 1}),\n new YearsView(this, {id: 3, name: 'decades', cellClass: 'decade', step: 10}),\n ];\n this.currentView = this.views[config.startView];\n\n this.currentView.render();\n this.main.appendChild(this.currentView.element);\n if (config.container) {\n config.container.appendChild(this.element);\n } else {\n inputField.after(this.element);\n }\n }\n\n setOptions(options) {\n processPickerOptions(this, options);\n this.views.forEach((view) => {\n view.init(options, false);\n });\n this.currentView.render();\n }\n\n detach() {\n this.element.remove();\n }\n\n show() {\n if (this.active) {\n return;\n }\n\n const {datepicker, element} = this;\n const inputField = datepicker.inputField;\n if (inputField) {\n // ensure picker's direction matches input's\n const inputDirection = getTextDirection(inputField);\n if (inputDirection !== getTextDirection(getParent(element))) {\n element.dir = inputDirection;\n } else if (element.dir) {\n element.removeAttribute('dir');\n }\n\n element.style.visibility = 'hidden';\n element.classList.add('active');\n this.place();\n element.style.visibility = '';\n\n if (datepicker.config.disableTouchKeyboard) {\n inputField.blur();\n }\n } else {\n element.classList.add('active');\n }\n this.active = true;\n triggerDatepickerEvent(datepicker, 'show');\n }\n\n hide() {\n if (!this.active) {\n return;\n }\n this.datepicker.exitEditMode();\n this.element.classList.remove('active');\n this.active = false;\n triggerDatepickerEvent(this.datepicker, 'hide');\n }\n\n place() {\n const {classList, offsetParent, style} = this.element;\n const {config, inputField} = this.datepicker;\n const {\n width: calendarWidth,\n height: calendarHeight,\n } = this.element.getBoundingClientRect();\n const {\n left: inputLeft,\n top: inputTop,\n right: inputRight,\n bottom: inputBottom,\n width: inputWidth,\n height: inputHeight\n } = inputField.getBoundingClientRect();\n let {x: orientX, y: orientY} = config.orientation;\n let left = inputLeft;\n let top = inputTop;\n\n // caliculate offsetLeft/Top of inputField\n if (offsetParent === document.body || !offsetParent) {\n left += window.scrollX;\n top += window.scrollY;\n } else {\n const offsetParentRect = offsetParent.getBoundingClientRect();\n left -= offsetParentRect.left - offsetParent.scrollLeft;\n top -= offsetParentRect.top - offsetParent.scrollTop;\n }\n\n // caliculate the boundaries of the visible area that contains inputField\n const scrollParent = findScrollParents(inputField);\n let scrollAreaLeft = 0;\n let scrollAreaTop = 0;\n let {\n clientWidth: scrollAreaRight,\n clientHeight: scrollAreaBottom,\n } = document.documentElement;\n\n if (scrollParent) {\n const scrollParentRect = scrollParent.getBoundingClientRect();\n if (scrollParentRect.top > 0) {\n scrollAreaTop = scrollParentRect.top;\n }\n if (scrollParentRect.left > 0) {\n scrollAreaLeft = scrollParentRect.left;\n }\n if (scrollParentRect.right < scrollAreaRight) {\n scrollAreaRight = scrollParentRect.right;\n }\n if (scrollParentRect.bottom < scrollAreaBottom) {\n scrollAreaBottom = scrollParentRect.bottom;\n }\n }\n\n // determine the horizontal orientation and left position\n let adjustment = 0;\n if (orientX === 'auto') {\n if (inputLeft < scrollAreaLeft) {\n orientX = 'left';\n adjustment = scrollAreaLeft - inputLeft;\n } else if (inputLeft + calendarWidth > scrollAreaRight) {\n orientX = 'right';\n if (scrollAreaRight < inputRight) {\n adjustment = scrollAreaRight - inputRight;\n }\n } else if (getTextDirection(inputField) === 'rtl') {\n orientX = inputRight - calendarWidth < scrollAreaLeft ? 'left' : 'right';\n } else {\n orientX = 'left';\n }\n }\n if (orientX === 'right') {\n left += inputWidth - calendarWidth;\n }\n left += adjustment;\n\n // determine the vertical orientation and top position\n if (orientY === 'auto') {\n if (inputTop - calendarHeight > scrollAreaTop) {\n orientY = inputBottom + calendarHeight > scrollAreaBottom ? 'top' : 'bottom';\n } else {\n orientY = 'bottom';\n }\n }\n if (orientY === 'top') {\n top -= calendarHeight;\n } else {\n top += inputHeight;\n }\n\n classList.remove(...Object.values(orientClasses));\n classList.add(orientClasses[orientX], orientClasses[orientY]);\n\n style.left = toPx(left);\n style.top = toPx(top);\n }\n\n setViewSwitchLabel(labelText) {\n this.controls.viewSwitch.textContent = labelText;\n }\n\n setPrevButtonDisabled(disabled) {\n this.controls.prevButton.disabled = disabled;\n }\n\n setNextButtonDisabled(disabled) {\n this.controls.nextButton.disabled = disabled;\n }\n\n changeView(viewId) {\n const currentView = this.currentView;\n if (viewId !== currentView.id) {\n if (!this._oldView) {\n this._oldView = currentView;\n }\n this.currentView = this.views[viewId];\n this._renderMethod = 'render';\n }\n return this;\n }\n\n // Change the focused date (view date)\n changeFocus(newViewDate) {\n this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refreshFocus';\n this.views.forEach((view) => {\n view.updateFocus();\n });\n return this;\n }\n\n // Apply the change of the selected dates\n update(viewDate = undefined) {\n const newViewDate = viewDate === undefined\n ? computeResetViewDate(this.datepicker)\n : viewDate;\n this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refresh';\n this.views.forEach((view) => {\n view.updateFocus();\n view.updateSelection();\n });\n return this;\n }\n\n // Refresh the picker UI\n render(quickRender = true) {\n const {currentView, datepicker, _oldView: oldView} = this;\n const oldViewDate = new Date(this._oldViewDate);\n const renderMethod = (quickRender && this._renderMethod) || 'render';\n delete this._oldView;\n delete this._oldViewDate;\n delete this._renderMethod;\n\n currentView[renderMethod]();\n if (oldView) {\n this.main.replaceChild(currentView.element, oldView.element);\n triggerDatepickerEvent(datepicker, 'changeView');\n }\n if (!isNaN(oldViewDate)) {\n const newViewDate = new Date(this.viewDate);\n if (newViewDate.getFullYear() !== oldViewDate.getFullYear()) {\n triggerDatepickerEvent(datepicker, 'changeYear');\n }\n if (newViewDate.getMonth() !== oldViewDate.getMonth()) {\n triggerDatepickerEvent(datepicker, 'changeMonth');\n }\n }\n }\n}\n","import {isInRange} from '../lib/utils.js';\nimport {isActiveElement} from '../lib/dom.js';\nimport {addDays, addMonths, addYears} from '../lib/date.js';\nimport {\n goToPrevOrNext,\n switchView,\n clearSelection,\n goToOrSelectToday,\n unfocus,\n} from './functions.js';\n\n// Find the closest date that doesn't meet the condition for unavailable date\n// Returns undefined if no available date is found\n// addFn: function to calculate the next date\n// - args: time value, amount\n// increase: amount to pass to addFn\n// testFn: function to test the unavailability of the date\n// - args: time value; return: true if unavailable\nfunction findNextAvailableOne(date, addFn, increase, testFn, min, max) {\n if (!isInRange(date, min, max)) {\n return;\n }\n if (testFn(date)) {\n const newDate = addFn(date, increase);\n return findNextAvailableOne(newDate, addFn, increase, testFn, min, max);\n }\n return date;\n}\n\n// direction: -1 (left/up), 1 (right/down)\n// vertical: true for up/down, false for left/right\nfunction moveByArrowKey(datepicker, direction, vertical) {\n const picker = datepicker.picker;\n const currentView = picker.currentView;\n const step = currentView.step || 1;\n let viewDate = picker.viewDate;\n let addFn;\n switch (currentView.id) {\n case 0:\n viewDate = addDays(viewDate, vertical ? direction * 7 : direction);\n addFn = addDays;\n break;\n case 1:\n viewDate = addMonths(viewDate, vertical ? direction * 4 : direction);\n addFn = addMonths;\n break;\n default:\n viewDate = addYears(viewDate, direction * (vertical ? 4 : 1) * step);\n addFn = addYears;\n }\n viewDate = findNextAvailableOne(\n viewDate,\n addFn,\n direction < 0 ? -step : step,\n (date) => currentView.disabled.includes(date),\n currentView.minDate,\n currentView.maxDate\n );\n if (viewDate !== undefined) {\n picker.changeFocus(viewDate).render();\n }\n}\n\nexport function onKeydown(datepicker, ev) {\n const {config, picker, editMode} = datepicker;\n const active = picker.active;\n const {key, altKey, shiftKey} = ev;\n const ctrlOrMetaKey = ev.ctrlKey || ev.metaKey;\n const cancelEvent = () => {\n ev.preventDefault();\n ev.stopPropagation();\n };\n\n // tab/enter keys should not be taken by shortcut keys\n if (key === 'Tab') {\n unfocus(datepicker);\n return;\n }\n if (key === 'Enter') {\n if (!active) {\n datepicker.update();\n } else if (editMode) {\n datepicker.exitEditMode({update: true, autohide: config.autohide});\n } else {\n const currentView = picker.currentView;\n if (currentView.isMinView) {\n datepicker.setDate(picker.viewDate);\n } else {\n picker.changeView(currentView.id - 1).render();\n cancelEvent();\n }\n }\n return;\n }\n\n const shortcutKeys = config.shortcutKeys;\n const keyInfo = {key, ctrlOrMetaKey, altKey, shiftKey};\n const shortcut = Object.keys(shortcutKeys).find((item) => {\n const keyDef = shortcutKeys[item];\n return !Object.keys(keyDef).find(prop => keyDef[prop] !== keyInfo[prop]);\n });\n if (shortcut) {\n let action;\n if (shortcut === 'toggle') {\n action = shortcut;\n } else if (editMode) {\n if (shortcut === 'exitEditMode') {\n action = shortcut;\n }\n } else if (active) {\n if (shortcut === 'hide') {\n action = shortcut;\n } else if (shortcut === 'prevButton') {\n action = [goToPrevOrNext, [datepicker, -1]];\n } else if (shortcut === 'nextButton') {\n action = [goToPrevOrNext, [datepicker, 1]];\n } else if (shortcut === 'viewSwitch') {\n action = [switchView, [datepicker]];\n } else if (config.clearButton && shortcut === 'clearButton') {\n action = [clearSelection, [datepicker]];\n } else if (config.todayButton && shortcut === 'todayButton') {\n action = [goToOrSelectToday, [datepicker]];\n }\n } else if (shortcut === 'show') {\n action = shortcut;\n }\n if (action) {\n if (Array.isArray(action)) {\n action[0].apply(null, action[1]);\n } else {\n datepicker[action]();\n }\n cancelEvent();\n return;\n }\n }\n\n // perform as a regular <input> when picker in hidden or in edit mode\n if (!active || editMode) {\n return;\n }\n\n const handleArrowKeyPress = (direction, vertical) => {\n if (shiftKey || ctrlOrMetaKey || altKey) {\n datepicker.enterEditMode();\n } else {\n moveByArrowKey(datepicker, direction, vertical);\n ev.preventDefault();\n }\n };\n\n if (key === 'ArrowLeft') {\n handleArrowKeyPress(-1, false);\n } else if (key === 'ArrowRight') {\n handleArrowKeyPress(1, false);\n } else if (key === 'ArrowUp') {\n handleArrowKeyPress(-1, true);\n } else if (key === 'ArrowDown') {\n handleArrowKeyPress(1, true);\n } else if (\n key === 'Backspace'\n || key === 'Delete'\n // When autofill is performed, Chromium-based browsers trigger fake\n // keydown/keyup events that don't have the `key` property (on Edge,\n // keyup only) in addition to the input event. Therefore, we need to\n // check the existence of `key`'s value before checking the length.\n // (issue #144)\n || (key && key.length === 1 && !ctrlOrMetaKey)\n ) {\n datepicker.enterEditMode();\n }\n}\n\nexport function onFocus(datepicker) {\n if (datepicker.config.showOnFocus && !datepicker._showing) {\n datepicker.show();\n }\n}\n\n// for the prevention for entering edit mode while getting focus on click\nexport function onMousedown(datepicker, ev) {\n const el = ev.target;\n if (datepicker.picker.active || datepicker.config.showOnClick) {\n el._active = isActiveElement(el);\n el._clicking = setTimeout(() => {\n delete el._active;\n delete el._clicking;\n }, 2000);\n }\n}\n\nexport function onClickInput(datepicker, ev) {\n const el = ev.target;\n if (!el._clicking) {\n return;\n }\n clearTimeout(el._clicking);\n delete el._clicking;\n\n if (el._active) {\n datepicker.enterEditMode();\n }\n delete el._active;\n\n if (datepicker.config.showOnClick) {\n datepicker.show();\n }\n}\n\nexport function onPaste(datepicker, ev) {\n if (ev.clipboardData.types.includes('text/plain')) {\n datepicker.enterEditMode();\n }\n}\n","import {isActiveElement} from '../lib/dom.js';\nimport {findElementInEventPath} from '../lib/event.js';\nimport {unfocus} from './functions.js';\n\n// for the `document` to delegate the events from outside the picker/input field\nexport function onClickOutside(datepicker, ev) {\n const {element, picker} = datepicker;\n // check both picker's and input's activeness to make updateOnBlur work in\n // the cases where...\n // - picker is hidden by ESC key press → input stays focused\n // - input is unfocused by closing mobile keyboard → piker is kept shown\n if (!picker.active && !isActiveElement(element)) {\n return;\n }\n const pickerElem = picker.element;\n if (findElementInEventPath(ev, el => el === element || el === pickerElem)) {\n return;\n }\n unfocus(datepicker);\n}\n","import {lastItemOf, stringToArray, isInRange} from './lib/utils.js';\nimport {today, regularizeDate} from './lib/date.js';\nimport {parseDate, formatDate} from './lib/date-format.js';\nimport {isActiveElement} from './lib/dom.js';\nimport {registerListeners, unregisterListeners} from './lib/event.js';\nimport locales from './i18n/base-locales.js';\nimport defaultOptions from './options/defaultOptions.js';\nimport processOptions from './options/processOptions.js';\nimport createShortcutKeyConfig from './options/shortcutKeys.js';\nimport Picker from './picker/Picker.js';\nimport {triggerDatepickerEvent} from './events/functions.js';\nimport {\n onKeydown,\n onFocus,\n onMousedown,\n onClickInput,\n onPaste,\n} from './events/elementListeners.js';\nimport {onClickOutside} from './events/otherListeners.js';\n\nfunction stringifyDates(dates, config) {\n return dates\n .map(dt => formatDate(dt, config.format, config.locale))\n .join(config.dateDelimiter);\n}\n\n// parse input dates and create an array of time values for selection\n// returns undefined if there are no valid dates in inputDates\n// when origDates (current selection) is passed, the function works to mix\n// the input dates into the current selection\nfunction processInputDates(datepicker, inputDates, clear = false) {\n if (inputDates.length === 0) {\n // empty input is considered valid unless origiDates is passed\n return clear ? [] : undefined;\n }\n\n const {config, dates: origDates, rangeSideIndex} = datepicker;\n const {pickLevel, maxNumberOfDates} = config;\n let newDates = inputDates.reduce((dates, dt) => {\n let date = parseDate(dt, config.format, config.locale);\n if (date === undefined) {\n return dates;\n }\n // adjust to 1st of the month/Jan 1st of the year\n // or to the last day of the monh/Dec 31st of the year if the datepicker\n // is the range-end picker of a rangepicker\n date = regularizeDate(date, pickLevel, rangeSideIndex);\n if (\n isInRange(date, config.minDate, config.maxDate)\n && !dates.includes(date)\n && !config.checkDisabled(date, pickLevel)\n && (pickLevel > 0 || !config.daysOfWeekDisabled.includes(new Date(date).getDay()))\n ) {\n dates.push(date);\n }\n return dates;\n }, []);\n if (newDates.length === 0) {\n return;\n }\n if (config.multidate && !clear) {\n // get the synmetric difference between origDates and newDates\n newDates = newDates.reduce((dates, date) => {\n if (!origDates.includes(date)) {\n dates.push(date);\n }\n return dates;\n }, origDates.filter(date => !newDates.includes(date)));\n }\n // do length check always because user can input multiple dates regardless of the mode\n return maxNumberOfDates && newDates.length > maxNumberOfDates\n ? newDates.slice(maxNumberOfDates * -1)\n : newDates;\n}\n\n// refresh the UI elements\n// modes: 1: input only, 2, picker only, 3 both\nfunction refreshUI(datepicker, mode = 3, quickRender = true, viewDate = undefined) {\n const {config, picker, inputField} = datepicker;\n if (mode & 2) {\n const newView = picker.active ? config.pickLevel : config.startView;\n picker.update(viewDate).changeView(newView).render(quickRender);\n }\n if (mode & 1 && inputField) {\n inputField.value = stringifyDates(datepicker.dates, config);\n }\n}\n\nfunction setDate(datepicker, inputDates, options) {\n const config = datepicker.config;\n let {clear, render, autohide, revert, forceRefresh, viewDate} = options;\n if (render === undefined) {\n render = true;\n }\n if (!render) {\n autohide = forceRefresh = false;\n } else if (autohide === undefined) {\n autohide = config.autohide;\n }\n viewDate = parseDate(viewDate, config.format, config.locale);\n\n const newDates = processInputDates(datepicker, inputDates, clear);\n if (!newDates && !revert) {\n return;\n }\n if (newDates && newDates.toString() !== datepicker.dates.toString()) {\n datepicker.dates = newDates;\n refreshUI(datepicker, render ? 3 : 1, true, viewDate);\n triggerDatepickerEvent(datepicker, 'changeDate');\n } else {\n refreshUI(datepicker, forceRefresh ? 3 : 1, true, viewDate);\n }\n\n if (autohide) {\n datepicker.hide();\n }\n}\n\nfunction getOutputConverter(datepicker, format) {\n return format\n ? date => formatDate(date, format, datepicker.config.locale)\n : date => new Date(date);\n}\n\n/**\n * Class representing a date picker\n */\nexport default class Datepicker {\n /**\n * Create a date picker\n * @param {Element} element - element to bind a date picker\n * @param {Object} [options] - config options\n * @param {DateRangePicker} [rangepicker] - DateRangePicker instance the\n * date picker belongs to. Use this only when creating date picker as a part\n * of date range picker\n */\n constructor(element, options = {}, rangepicker = undefined) {\n element.datepicker = this;\n this.element = element;\n this.dates = [];\n\n // initialize config\n const config = this.config = Object.assign({\n buttonClass: (options.buttonClass && String(options.buttonClass)) || 'button',\n container: null,\n defaultViewDate: today(),\n maxDate: undefined,\n minDate: undefined,\n }, processOptions(defaultOptions, this));\n\n // configure by type\n let inputField;\n if (element.tagName === 'INPUT') {\n inputField = this.inputField = element;\n inputField.classList.add('datepicker-input');\n if (options.container) {\n // omit string type check because it doesn't guarantee to avoid errors\n // (invalid selector string causes abend with sytax error)\n config.container = options.container instanceof HTMLElement\n ? options.container\n : document.querySelector(options.container);\n }\n } else {\n config.container = element;\n }\n if (rangepicker) {\n // check validiry\n const index = rangepicker.inputs.indexOf(inputField);\n const datepickers = rangepicker.datepickers;\n if (index < 0 || index > 1 || !Array.isArray(datepickers)) {\n throw Error('Invalid rangepicker object.');\n }\n // attach itaelf to the rangepicker here so that processInputDates() can\n // determine if this is the range-end picker of the rangepicker while\n // setting inital values when pickLevel > 0\n datepickers[index] = this;\n this.rangepicker = rangepicker;\n this.rangeSideIndex = index;\n }\n\n // set up config\n this._options = options;\n Object.assign(config, processOptions(options, this));\n config.shortcutKeys = createShortcutKeyConfig(options.shortcutKeys || {});\n\n // process initial value\n const initialDates = stringToArray(\n element.value || element.dataset.date,\n config.dateDelimiter\n );\n delete element.dataset.date;\n const inputDateValues = processInputDates(this, initialDates);\n if (inputDateValues && inputDateValues.length > 0) {\n this.dates = inputDateValues;\n }\n if (inputField) {\n inputField.value = stringifyDates(this.dates, config);\n }\n\n // set up picekr element\n const picker = this.picker = new Picker(this);\n\n const keydownListener = [element, 'keydown', onKeydown.bind(null, this)];\n if (inputField) {\n registerListeners(this, [\n keydownListener,\n [inputField, 'focus', onFocus.bind(null, this)],\n [inputField, 'mousedown', onMousedown.bind(null, this)],\n [inputField, 'click', onClickInput.bind(null, this)],\n [inputField, 'paste', onPaste.bind(null, this)],\n // To detect a click on outside, just listening to mousedown is enough,\n // no need to listen to touchstart.\n // Actually, listening to touchstart can be a problem because, while\n // mousedown is fired only on tapping but not on swiping/pinching,\n // touchstart is fired on swiping/pinching as well.\n // (issue #95)\n [document, 'mousedown', onClickOutside.bind(null, this)],\n [window, 'resize', picker.place.bind(picker)]\n ]);\n } else {\n registerListeners(this, [keydownListener]);\n this.show();\n }\n }\n\n /**\n * Format Date object or time value in given format and language\n * @param {Date|Number} date - date or time value to format\n * @param {String|Object} format - format string or object that contains\n * toDisplay() custom formatter, whose signature is\n * - args:\n * - date: {Date} - Date instance of the date passed to the method\n * - format: {Object} - the format object passed to the method\n * - locale: {Object} - locale for the language specified by `lang`\n * - return:\n * {String} formatted date\n * @param {String} [lang=en] - language code for the locale to use\n * @return {String} formatted date\n */\n static formatDate(date, format, lang) {\n return formatDate(date, format, lang && locales[lang] || locales.en);\n }\n\n /**\n * Parse date string\n * @param {String|Date|Number} dateStr - date string, Date object or time\n * value to parse\n * @param {String|Object} format - format string or object that contains\n * toValue() custom parser, whose signature is\n * - args:\n * - dateStr: {String|Date|Number} - the dateStr passed to the method\n * - format: {Object} - the format object passed to the method\n * - locale: {Object} - locale for the language specified by `lang`\n * - return:\n * {Date|Number} parsed date or its time value\n * @param {String} [lang=en] - language code for the locale to use\n * @return {Number} time value of parsed date\n */\n static parseDate(dateStr, format, lang) {\n return parseDate(dateStr, format, lang && locales[lang] || locales.en);\n }\n\n /**\n * @type {Object} - Installed locales in `[languageCode]: localeObject` format\n * en`:_English (US)_ is pre-installed.\n */\n static get locales() {\n return locales;\n }\n\n /**\n * @type {Boolean} - Whether the picker element is shown. `true` whne shown\n */\n get active() {\n return !!(this.picker && this.picker.active);\n }\n\n /**\n * @type {HTMLDivElement} - DOM object of picker element\n */\n get pickerElement() {\n return this.picker ? this.picker.element : undefined;\n }\n\n /**\n * Set new values to the config options\n * @param {Object} options - config options to update\n */\n setOptions(options) {\n const newOptions = processOptions(options, this);\n Object.assign(this._options, options);\n Object.assign(this.config, newOptions);\n this.picker.setOptions(newOptions);\n\n refreshUI(this, 3);\n }\n\n /**\n * Show the picker element\n */\n show() {\n if (this.inputField) {\n const {config, inputField} = this;\n if (inputField.disabled || (inputField.readOnly && !config.enableOnReadonly)) {\n return;\n }\n if (!isActiveElement(inputField) && !config.disableTouchKeyboard) {\n this._showing = true;\n inputField.focus();\n delete this._showing;\n }\n }\n this.picker.show();\n }\n\n /**\n * Hide the picker element\n * Not available on inline picker\n */\n hide() {\n if (!this.inputField) {\n return;\n }\n this.picker.hide();\n this.picker.update().changeView(this.config.startView).render();\n }\n\n /**\n * Toggle the display of the picker element\n * Not available on inline picker\n *\n * Unlike hide(), the picker does not return to the start view when hiding.\n */\n toggle() {\n if (!this.picker.active) {\n this.show();\n } else if (this.inputField) {\n this.picker.hide();\n }\n }\n\n /**\n * Destroy the Datepicker instance\n * @return {Detepicker} - the instance destroyed\n */\n destroy() {\n this.hide();\n unregisterListeners(this);\n this.picker.detach();\n const element = this.element;\n element.classList.remove('datepicker-input');\n delete element.datepicker;\n return this;\n }\n\n /**\n * Get the selected date(s)\n *\n * The method returns a Date object of selected date by default, and returns\n * an array of selected dates in multidate mode. If format string is passed,\n * it returns date string(s) formatted in given format.\n *\n * @param {String} [format] - format string to stringify the date(s)\n * @return {Date|String|Date[]|String[]} - selected date(s), or if none is\n * selected, empty array in multidate mode and undefined in sigledate mode\n */\n getDate(format = undefined) {\n const callback = getOutputConverter(this, format);\n\n if (this.config.multidate) {\n return this.dates.map(callback);\n }\n if (this.dates.length > 0) {\n return callback(this.dates[0]);\n }\n }\n\n /**\n * Set selected date(s)\n *\n * In multidate mode, you can pass multiple dates as a series of arguments\n * or an array. (Since each date is parsed individually, the type of the\n * dates doesn't have to be the same.)\n * The given dates are used to toggle the select status of each date. The\n * number of selected dates is kept from exceeding the length set to\n * maxNumberOfDates.\n *\n * With clear: true option, the method can be used to clear the selection\n * and to replace the selection instead of toggling in multidate mode.\n * If the option is passed with no date arguments or an empty dates array,\n * it works as \"clear\" (clear the selection then set nothing), and if the\n * option is passed with new dates to select, it works as \"replace\" (clear\n * the selection then set the given dates)\n *\n * When render: false option is used, the method omits re-rendering the\n * picker element. In this case, you need to call refresh() method later in\n * order for the picker element to reflect the changes. The input field is\n * refreshed always regardless of this option.\n *\n * When invalid (unparsable, repeated, disabled or out-of-range) dates are\n * passed, the method ignores them and applies only valid ones. In the case\n * that all the given dates are invalid, which is distinguished from passing\n * no dates, the method considers it as an error and leaves the selection\n * untouched. (The input field also remains untouched unless revert: true\n * option is used.)\n * Replacing the selection with the same date(s) also causes a similar\n * situation. In both cases, the method does not refresh the picker element\n * unless forceRefresh: true option is used.\n *\n * If viewDate option is used, the method changes the focused date to the\n * specified date instead of the last item of the selection.\n *\n * @param {...(Date|Number|String)|Array} [dates] - Date strings, Date\n * objects, time values or mix of those for new selection\n * @param {Object} [options] - function options\n * - clear: {boolean} - Whether to clear the existing selection\n * defualt: false\n * - render: {boolean} - Whether to re-render the picker element\n * default: true\n * - autohide: {boolean} - Whether to hide the picker element after re-render\n * Ignored when used with render: false\n * default: config.autohide\n * - revert: {boolean} - Whether to refresh the input field when all the\n * passed dates are invalid\n * default: false\n * - forceRefresh: {boolean} - Whether to refresh the picker element when\n * passed dates don't change the existing selection\n * default: false\n * - viewDate: {Date|Number|String} - Date to be focused after setiing date(s)\n * default: The last item of the resulting selection, or defaultViewDate\n * config option if none is selected\n */\n setDate(...args) {\n const dates = [...args];\n const opts = {};\n const lastArg = lastItemOf(args);\n if (\n lastArg\n && typeof lastArg === 'object'\n && !Array.isArray(lastArg)\n && !(lastArg instanceof Date)\n ) {\n Object.assign(opts, dates.pop());\n }\n\n const inputDates = Array.isArray(dates[0]) ? dates[0] : dates;\n setDate(this, inputDates, opts);\n }\n\n /**\n * Update the selected date(s) with input field's value\n * Not available on inline picker\n *\n * The input field will be refreshed with properly formatted date string.\n *\n * In the case that all the entered dates are invalid (unparsable, repeated,\n * disabled or out-of-range), which is distinguished from empty input field,\n * the method leaves the input field untouched as well as the selection by\n * default. If revert: true option is used in this case, the input field is\n * refreshed with the existing selection.\n * The method also doesn't refresh the picker element in this case and when\n * the entered dates are the same as the existing selection. If\n * forceRefresh: true option is used, the picker element is refreshed in\n * these cases too.\n *\n * @param {Object} [options] - function options\n * - autohide: {boolean} - whether to hide the picker element after refresh\n * default: false\n * - revert: {boolean} - Whether to refresh the input field when all the\n * passed dates are invalid\n * default: false\n * - forceRefresh: {boolean} - Whether to refresh the picer element when\n * input field's value doesn't change the existing selection\n * default: false\n */\n update(options = undefined) {\n if (!this.inputField) {\n return;\n }\n\n const opts = Object.assign(options || {}, {clear: true, render: true, viewDate: undefined});\n const inputDates = stringToArray(this.inputField.value, this.config.dateDelimiter);\n setDate(this, inputDates, opts);\n }\n\n /**\n * Get the focused date\n *\n * The method returns a Date object of focused date by default. If format\n * string is passed, it returns date string formatted in given format.\n *\n * @param {String} [format] - format string to stringify the date\n * @return {Date|String} - focused date (viewDate)\n */\n getFocusedDate(format = undefined) {\n return getOutputConverter(this, format)(this.picker.viewDate);\n }\n\n /**\n * Set focused date\n *\n * By default, the method updates the focus on the view shown at the time,\n * or the one set to the startView config option if the picker is hidden.\n * When resetView: true is passed, the view displayed is changed to the\n * pickLevel config option's if the picker is shown.\n *\n * @param {Date|Number|String} viewDate - date string, Date object, time\n * values of the date to focus\n * @param {Boolean} [resetView] - whether to change the view to pickLevel\n * config option's when the picker is shown. Ignored when the picker is\n * hidden\n */\n setFocusedDate(viewDate, resetView = false) {\n const {config, picker, active, rangeSideIndex} = this;\n const pickLevel = config.pickLevel;\n const newViewDate = parseDate(viewDate, config.format, config.locale);\n if (newViewDate === undefined) {\n return;\n }\n\n picker.changeFocus(regularizeDate(newViewDate, pickLevel, rangeSideIndex));\n if (active && resetView) {\n picker.changeView(pickLevel);\n }\n picker.render();\n }\n\n /**\n * Refresh the picker element and the associated input field\n * @param {String} [target] - target item when refreshing one item only\n * 'picker' or 'input'\n * @param {Boolean} [forceRender] - whether to re-render the picker element\n * regardless of its state instead of optimized refresh\n */\n refresh(target = undefined, forceRender = false) {\n if (target && typeof target !== 'string') {\n forceRender = target;\n target = undefined;\n }\n\n let mode;\n if (target === 'picker') {\n mode = 2;\n } else if (target === 'input') {\n mode = 1;\n } else {\n mode = 3;\n }\n refreshUI(this, mode, !forceRender);\n }\n\n /**\n * Enter edit mode\n * Not available on inline picker or when the picker element is hidden\n */\n enterEditMode() {\n const inputField = this.inputField;\n if (!inputField || inputField.readOnly || !this.picker.active || this.editMode) {\n return;\n }\n this.editMode = true;\n inputField.classList.add('in-edit');\n }\n\n /**\n * Exit from edit mode\n * Not available on inline picker\n * @param {Object} [options] - function options\n * - update: {boolean} - whether to call update() after exiting\n * If false, input field is revert to the existing selection\n * default: false\n */\n exitEditMode(options = undefined) {\n if (!this.inputField || !this.editMode) {\n return;\n }\n const opts = Object.assign({update: false}, options);\n delete this.editMode;\n this.inputField.classList.remove('in-edit');\n if (opts.update) {\n this.update(opts);\n }\n }\n}\n","export enum DatepickerTypeEnum {\n date = 0,\n month = 1,\n year = 2,\n week = 3\n}\n\nexport type DatepickerType = keyof typeof DatepickerTypeEnum;\n","import { Datepicker } from 'vanillajs-datepicker';\nimport { DatepickerType, DatepickerTypeEnum } from './datepicker-type';\nimport dayjs, { today } from './dayjs.config';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\n\nconst browserLanguage = window?.navigator?.language ?? 'en';\n\nconst getDefaultDate = (type: DatepickerType, selectedDate?: string): Date => {\n const date = selectedDate ? dayjs(selectedDate).toDate() : today();\n return type === 'week' ? dayjs(date).startOf('isoWeek').toDate() : date;\n};\n\nexport function getDatepickerOptions(type: DatepickerType, selectedDate?: string) {\n const config: object = {\n enableOnReadonly: false,\n pickLevel: DatepickerTypeEnum[type],\n todayButton: true,\n todayButtonMode: 1,\n todayHighlight: true,\n weekStart: 1, // TO-DO get value from browser Intl.Locale().weekInfo api which is not supported by Firefox or other browsers\n language: 'browser',\n defaultViewDate: getDefaultDate(type, selectedDate)\n };\n return config;\n}\n\nfunction daysForLocale(weekday: 'long' | 'short' | 'narrow' = 'long') {\n const date = new Date();\n const firstDayOfWeek = new Date(date.setUTCDate(date.getUTCDate() - date.getUTCDay()));\n const format = new Intl.DateTimeFormat(browserLanguage, { weekday }).format;\n return [...Array(7).keys()].map(day => format(firstDayOfWeek.setUTCDate(firstDayOfWeek.getUTCDate() + day)));\n}\n\nfunction monthsForLocale(month: 'long' | 'short' = 'long') {\n const date = new Date();\n const format = new Intl.DateTimeFormat(browserLanguage, { month }).format;\n return [...Array(12).keys()].map(month => format(date.setUTCMonth(month)));\n}\n\nif (Datepicker?.locales?.browser) {\n Datepicker.locales.browser = {\n days: daysForLocale('long'),\n daysShort: daysForLocale('short'),\n daysMin: daysForLocale('narrow'),\n months: monthsForLocale('long'),\n monthsShort: monthsForLocale('short'),\n today: i18n.t('input.today')\n };\n}\n\nexport default Datepicker;\n","@use './vanillajs-datepicker';\n","import { Component, Element, Event, EventEmitter, Host, Method, Prop, State, h } from '@stencil/core';\nimport log from 'loglevel';\nimport { ErrorMap } from '../cat-form-hint/cat-form-hint';\nimport { DatepickerType } from './datepicker-type';\nimport dayjs from './dayjs.config';\nimport Datepicker, { getDatepickerOptions } from './vanillajs-datepicker.config';\n\n/**\n * Inputs are used to allow users to provide text input when the expected input\n * is short. As well as plain text, Input supports various types of text,\n * including passwords and numbers.\n *\n * @slot hint - Optional hint element to be displayed with the input.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part label - The label content.\n */\n@Component({\n tag: 'cat-datepicker',\n styleUrl: 'cat-datepicker.scss',\n shadow: true\n})\nexport class CatDatepicker {\n private input!: HTMLInputElement;\n private catInput!: HTMLCatInputElement;\n private datepicker!: any;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedLabel = false;\n\n @State() hasSlottedHint = false;\n\n /**\n * Whether the label need a marker to shown if the input is required or optional.\n */\n @Prop() requiredMarker: 'none' | 'required' | 'optional' | 'none!' | 'optional!' | 'required!' = 'optional';\n\n /**\n * Whether the label is on top or left.\n */\n @Prop() horizontal = false;\n\n /**\n * Hint for form autofill feature.\n */\n @Prop() autoComplete?: string;\n\n /**\n * Whether the input should show a clear button.\n */\n @Prop() clearable = false;\n\n /**\n * Whether the input is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * Optional hint text(s) to be displayed with the input.\n */\n @Prop() hint?: string | string[];\n\n /**\n * The name of an icon to be displayed in the input.\n */\n @Prop() icon?: string;\n\n /**\n * Display the icon on the left.\n */\n @Prop() iconLeft = false;\n\n /**\n * A unique identifier for the input.\n */\n @Prop() identifier?: string;\n\n /**\n * The label for the input.\n */\n @Prop() label = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * A maximum value for date, time and numeric values.\n */\n @Prop() max?: number | string;\n\n /**\n * A minimum value for date, time and numeric values.\n */\n @Prop() min?: number | string;\n\n /**\n * The name of the form control. Submitted with the form as part of a name/value pair.\n */\n @Prop() name?: string;\n\n /**\n * The placeholder text to display within the input.\n */\n @Prop() placeholder?: string;\n\n /**\n * A textual prefix to be displayed in the input.\n */\n @Prop() textPrefix?: string;\n\n /**\n * A textual suffix to be displayed in the input.\n */\n @Prop() textSuffix?: string;\n\n /**\n * The value is not editable.\n */\n @Prop() readonly = false;\n\n /**\n * A value is required or must be check for the form to be submittable.\n */\n @Prop() required = false;\n\n /**\n * The date format after picker selection.\n */\n @Prop() format = 'mm/dd/yyyy';\n\n /**\n * Whether the picker should show the week numbers.\n */\n @Prop() weekNumbers = true;\n\n /**\n * Type of datepicker ('date', 'week', 'month', 'year').\n */\n @Prop() type: DatepickerType = 'date';\n\n /**\n * Dates that should be disabled inside the picker\n */\n @Prop() datesDisabled!: Array<Date> | Array<string>;\n\n /**\n * The value of the control.\n */\n @Prop({ mutable: true }) value?: string;\n\n /**\n * The validation errors for this input. Will render a hint under the input\n * with the translated error message(s) `error.${key}`. If an object is\n * passed, the keys will be used as error keys and the values translation\n * parameters.\n * If the value is `true`, the input will be marked as invalid without any\n * hints under the input.\n */\n @Prop() errors?: boolean | string[] | ErrorMap;\n\n /**\n * Fine-grained control over when the errors are shown. Can be `false` to\n * never show errors, `true` to show errors on blur, or a number to show\n * errors on change with the given delay in milliseconds.\n */\n @Prop() errorUpdate: boolean | number = 0;\n\n /**\n * Attributes that will be added to the native HTML input element.\n */\n @Prop() nativeAttributes?: { [key: string]: string };\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter<InputEvent>;\n\n /**\n * Emitted when the input received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n /**\n * Programmatically move focus to the input. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.input.focus(options);\n }\n\n /**\n * Programmatically remove focus from the input. Use this method instead of\n * `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input.blur();\n }\n\n /**\n * Programmatically simulate a click on the input.\n */\n @Method()\n async doClick(): Promise<void> {\n this.input.click();\n }\n\n /**\n * Clear the input.\n */\n @Method()\n async clear(): Promise<void> {\n this.value = '';\n }\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n this.hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n }\n\n render() {\n return (\n <Host>\n <cat-input\n ref={el => (this.catInput = el as HTMLCatInputElement)}\n requiredMarker={this.requiredMarker}\n horizontal={this.horizontal}\n autoComplete={this.autoComplete}\n clearable={this.clearable}\n disabled={this.disabled}\n hint={this.hint}\n icon={this.icon}\n iconRight={!this.iconLeft}\n identifier={this.identifier}\n label={this.label}\n labelHidden={this.labelHidden}\n name={this.name}\n placeholder={this.placeholder}\n textPrefix={this.textPrefix}\n textSuffix={this.textSuffix}\n readonly={this.readonly}\n required={this.required}\n value={this.value}\n errors={this.errors}\n errorUpdate={this.errorUpdate}\n nativeAttributes={this.nativeAttributes}\n onCatChange={event => this.onCatChange(event)}\n onCatFocus={event => this.onCatFocus(event.detail)}\n onCatBlur={event => this.onCatBlur(event.detail)}\n >\n {this.hasSlottedLabel && (\n <span slot=\"label\">\n <slot name=\"label\"></slot>\n </span>\n )}\n {this.hasSlottedHint && (\n <span slot=\"hint\">\n <slot name=\"hint\"></slot>\n </span>\n )}\n </cat-input>\n </Host>\n );\n }\n\n componentDidLoad() {\n if (this.hostElement) {\n const inputWrapper = this.catInput.shadowRoot?.querySelector('.input-wrapper') as HTMLElement;\n const inputElement = inputWrapper?.querySelector('input');\n\n if (inputElement) {\n this.input = inputElement;\n } else {\n log.error('[CatInput] Missing input element', this);\n return;\n }\n\n this.datepicker = new Datepicker(inputElement, {\n ...getDatepickerOptions(this.type, this.value),\n container: inputWrapper,\n maxDate: this.max,\n minDate: this.min,\n datesDisabled: this.datesDisabled,\n prevArrow: '←',\n nextArrow: '→',\n weekNumbers: this.weekNumbers ? 1 : 0,\n format: {\n toValue: (dateStr: string | Date | number): Date =>\n this.type === 'week' ? this.fromISOWeek(dateStr) : Datepicker.parseDate(dateStr, this.dateFormat),\n toDisplay: (date: Date): string =>\n this.type === 'week' ? this.toISOWeek(date).toString() : Datepicker.formatDate(date, this.dateFormat)\n },\n beforeShowDay: (date: Date) => (this.shouldHighlightAsToday(date) ? 'today' : null),\n beforeShowMonth: (date: Date) => (this.shouldHighlightAsToday(date) ? 'today' : null),\n beforeShowYear: (date: Date) => (this.shouldHighlightAsToday(date) ? 'today' : null)\n });\n\n if (this.type === 'week') {\n this.datepicker.pickerElement.classList.add('weekly');\n }\n\n this.input.addEventListener('show', this.handleWeekDays.bind(this));\n this.input.addEventListener('changeDate', this.handleDateChange.bind(this) as EventListener);\n this.input.addEventListener('changeMonth', this.handleWeekDays.bind(this));\n this.input.addEventListener('changeView', this.handleWeekDays.bind(this));\n this.input.addEventListener('keydown', this.focusAllWeekDays.bind(this));\n }\n }\n\n disconnectedCallback() {\n this.input.removeEventListener('show', this.handleWeekDays.bind(this));\n this.input.removeEventListener('changeDate', this.handleDateChange.bind(this) as EventListener);\n this.input.removeEventListener('changeMonth', this.handleWeekDays.bind(this));\n this.input.removeEventListener('changeView', this.handleWeekDays.bind(this));\n this.input.removeEventListener('keydown', this.focusAllWeekDays.bind(this));\n }\n\n private handleDateChange(event: CustomEvent) {\n this.selectAllWeekDays(event.detail.date);\n this.value = this.input.value;\n this.catChange.emit();\n }\n\n private handleWeekDays(event: Event | Date) {\n this.selectAllWeekDays(event);\n this.focusAllWeekDays();\n }\n\n private selectAllWeekDays(event: Event | Date) {\n const date = event instanceof Date ? event : (event as CustomEvent).detail?.date;\n if (this.type !== 'week') {\n return;\n }\n if (this.input?.value) {\n const firstDayOfWeek = dayjs(date).startOf('isoWeek');\n\n if (!firstDayOfWeek.isSame(dayjs(date).startOf('day'))) {\n this.datepicker.setDate(firstDayOfWeek.toDate());\n } else {\n this.addClassToAllWeekDays('selected');\n }\n }\n }\n\n private focusAllWeekDays() {\n const date = dayjs(this.datepicker.picker.viewDate);\n if (this.type !== 'week' || !date) {\n return;\n }\n\n const firstDayOfWeek = dayjs(date).startOf('isoWeek');\n\n if (!firstDayOfWeek.isSame(dayjs(date).startOf('day'))) {\n this.datepicker.setFocusedDate(firstDayOfWeek.toDate());\n }\n\n this.addClassToAllWeekDays('focused');\n }\n\n private addClassToAllWeekDays(className: string) {\n let weekdaysCount = 7;\n const pickerElement = this.datepicker.pickerElement as HTMLElement;\n let selected = pickerElement.querySelector(`.datepicker-cell:not(.month):not(.year).${className}`);\n while (weekdaysCount > 1) {\n if (selected) {\n selected = selected.nextElementSibling;\n selected?.classList.add(className);\n weekdaysCount--;\n } else {\n break;\n }\n }\n }\n\n private onCatChange(event: unknown) {\n this.value = this.input.value;\n this.catChange.emit(event as InputEvent);\n }\n\n private onCatFocus(event: FocusEvent) {\n this.catFocus.emit(event);\n }\n\n private onCatBlur(event: FocusEvent) {\n this.catBlur.emit(event);\n }\n\n private shouldHighlightAsToday(date: Date) {\n const now = new Date();\n const isSameYear = now.getFullYear() === date.getFullYear();\n const isSameMonth = now.getMonth() === date.getMonth();\n const isSameDay = now.getDate() === date.getDate();\n switch (this.type) {\n case 'date':\n return isSameYear && isSameMonth && isSameDay;\n case 'week':\n return isSameYear && this.toISOWeek(now) === this.toISOWeek(date);\n case 'month':\n return isSameYear && isSameMonth;\n case 'year':\n return isSameYear;\n default:\n return false;\n }\n }\n\n // ----- Date handling\n\n private get dateFormat(): string {\n const date = new Date(Date.UTC(3333, 10, 22));\n const dateStr = new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: this.type !== 'year' ? 'numeric' : undefined,\n day: this.type === 'date' || this.type === 'week' ? 'numeric' : undefined\n }).format(date);\n return dateStr.replace('22', 'dd').replace('11', 'mm').replace('3333', 'yyyy');\n }\n\n private fromISOWeek(week: string | Date | number): Date {\n if (typeof week === 'string' || typeof week === 'number') {\n const weekNumber = parseInt(week.toString(), 10);\n return isNaN(weekNumber) ? new Date() : this.fromISOWeekNumber(weekNumber);\n }\n return week;\n }\n\n private fromISOWeekNumber(weekNumber: number, year = new Date().getFullYear()): Date {\n const refDate = new Date(Date.UTC(year, 0, 4)); // January 4th\n const diffDays = (weekNumber - 1) * 7 - (refDate.getUTCDay() || 7) + 1;\n const date = new Date(refDate);\n date.setUTCDate(date.getUTCDate() + diffDays);\n return date;\n }\n\n private toISOWeek(date: Date): number {\n const currentDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n currentDate.setUTCDate(currentDate.getUTCDate() + 4 - (currentDate.getUTCDay() || 7));\n const firstDayOfYear = new Date(Date.UTC(currentDate.getUTCFullYear(), 0, 1));\n return Math.ceil(((currentDate.getTime() - firstDayOfYear.getTime()) / 86400000 + 1) / 7);\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"cat-datepicker.js","mappings":"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","names":["this","defaultOptions","English","i18n","weekSelectPlugin"],"sources":["../node_modules/flatpickr/dist/esm/types/options.js","../node_modules/flatpickr/dist/esm/l10n/default.js","../node_modules/flatpickr/dist/esm/utils/index.js","../node_modules/flatpickr/dist/esm/utils/dom.js","../node_modules/flatpickr/dist/esm/utils/formatting.js","../node_modules/flatpickr/dist/esm/utils/dates.js","../node_modules/flatpickr/dist/esm/utils/polyfills.js","../node_modules/flatpickr/dist/esm/index.js","../node_modules/flatpickr/dist/plugins/weekSelect/weekSelect.js","./src/components/cat-datepicker/cat-datepicker.config.tsx","./src/components/cat-datepicker/cat-datepicker.locale.tsx","./src/components/cat-datepicker/cat-datepicker.scss?tag=cat-datepicker&encapsulation=shadow","./src/components/cat-datepicker/cat-datepicker.tsx"],"sourcesContent":["export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.weekSelect = factory());\n}(this, (function () { 'use strict';\n\n function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n }\n\n function weekSelectPlugin() {\n return function (fp) {\n function onDayHover(event) {\n var day = getEventTarget(event);\n if (!day.classList.contains(\"flatpickr-day\"))\n return;\n var days = fp.days.childNodes;\n var dayIndex = day.$i;\n var dayIndSeven = dayIndex / 7;\n var weekStartDay = days[7 * Math.floor(dayIndSeven)]\n .dateObj;\n var weekEndDay = days[7 * Math.ceil(dayIndSeven + 0.01) - 1].dateObj;\n for (var i = days.length; i--;) {\n var day_1 = days[i];\n var date = day_1.dateObj;\n if (date > weekEndDay || date < weekStartDay)\n day_1.classList.remove(\"inRange\");\n else\n day_1.classList.add(\"inRange\");\n }\n }\n function highlightWeek() {\n var selDate = fp.latestSelectedDateObj;\n if (selDate !== undefined &&\n selDate.getMonth() === fp.currentMonth &&\n selDate.getFullYear() === fp.currentYear) {\n fp.weekStartDay = fp.days.childNodes[7 * Math.floor(fp.selectedDateElem.$i / 7)].dateObj;\n fp.weekEndDay = fp.days.childNodes[7 * Math.ceil(fp.selectedDateElem.$i / 7 + 0.01) - 1].dateObj;\n }\n var days = fp.days.childNodes;\n for (var i = days.length; i--;) {\n var date = days[i].dateObj;\n if (date >= fp.weekStartDay && date <= fp.weekEndDay)\n days[i].classList.add(\"week\", \"selected\");\n }\n }\n function clearHover() {\n var days = fp.days.childNodes;\n for (var i = days.length; i--;)\n days[i].classList.remove(\"inRange\");\n }\n function onReady() {\n if (fp.daysContainer !== undefined)\n fp.daysContainer.addEventListener(\"mouseover\", onDayHover);\n }\n function onDestroy() {\n if (fp.daysContainer !== undefined)\n fp.daysContainer.removeEventListener(\"mouseover\", onDayHover);\n }\n return {\n onValueUpdate: highlightWeek,\n onMonthChange: highlightWeek,\n onYearChange: highlightWeek,\n onOpen: highlightWeek,\n onClose: clearHover,\n onParseConfig: function () {\n fp.config.mode = \"single\";\n fp.config.enableTime = false;\n fp.config.dateFormat = fp.config.dateFormat\n ? fp.config.dateFormat\n : \"\\\\W\\\\e\\\\e\\\\k #W, Y\";\n fp.config.altFormat = fp.config.altFormat\n ? fp.config.altFormat\n : \"\\\\W\\\\e\\\\e\\\\k #W, Y\";\n },\n onReady: [\n onReady,\n highlightWeek,\n function () {\n fp.loadedPlugins.push(\"weekSelect\");\n },\n ],\n onDestroy: onDestroy,\n };\n };\n }\n\n return weekSelectPlugin;\n\n})));\n","export function getFormat(language: string, mode: 'date' | 'time' | 'datetime' | 'daterange' | 'week'): string {\n const date = new Date(2000, 1, 3, 4, 5, 6);\n const formatDate: Intl.DateTimeFormatOptions = { year: 'numeric', month: '2-digit', day: '2-digit' };\n const formatTime: Intl.DateTimeFormatOptions = { hour: '2-digit', minute: '2-digit' };\n return mode === 'week'\n ? 'W'\n : new Intl.DateTimeFormat(\n language,\n {\n date: formatDate,\n time: formatTime,\n datetime: { ...formatDate, ...formatTime },\n daterange: formatDate\n }[mode]\n )\n .format(date)\n .replace('2000', 'Y')\n .replace('00', 'y')\n .replace('02', 'm')\n .replace('03', 'd')\n .replace('04', 'H')\n .replace('05', 'i')\n .replace(/AM|PM/i, 'K');\n}\n","import { CustomLocale } from 'flatpickr/dist/types/locale';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\n\nexport function getHour12(language: string): boolean {\n const dateStr = new Intl.DateTimeFormat(language, { hour: '2-digit', minute: '2-digit' })\n .format(new Date())\n .toLowerCase();\n return dateStr.includes('am') || dateStr.includes('pm');\n}\n\nfunction getFirstDayOfWeek(language: string): number {\n const locale = new Intl.Locale(language);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const weekInfo = (locale as any).getWeekInfo?.() ?? (locale as any).weekInfo;\n return weekInfo?.firstDay ?? 1;\n}\n\nfunction daysForLocale(language: string, weekday: 'long' | 'short' | 'narrow' = 'long') {\n const date = new Date();\n const firstDayOfWeek = date.getUTCDate() - date.getUTCDay();\n const format = new Intl.DateTimeFormat(language, { weekday }).format;\n return [...Array(7).keys()].map(day => format(date.setUTCDate(firstDayOfWeek + day)));\n}\n\nfunction monthsForLocale(language: string, month: 'long' | 'short' = 'long') {\n const date = new Date();\n const format = new Intl.DateTimeFormat(language, { month }).format;\n return [...Array(12).keys()].map(month => format(date.setUTCMonth(month)));\n}\n\nexport function getLocale(language: string): CustomLocale {\n return {\n firstDayOfWeek: getFirstDayOfWeek(language),\n rangeSeparator: ' – ',\n weekAbbreviation: '',\n yearAriaLabel: i18n.t('datepicker.year'),\n monthAriaLabel: i18n.t('datepicker.month'),\n hourAriaLabel: i18n.t('datepicker.hour'),\n minuteAriaLabel: i18n.t('datepicker.minute'),\n toggleTitle: i18n.t('datepicker.toggle'),\n scrollTitle: i18n.t('datepicker.scroll'),\n time_24hr: !getHour12(language),\n weekdays: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n shorthand: daysForLocale(language, 'short') as any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n longhand: daysForLocale(language, 'long') as any\n },\n months: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n shorthand: monthsForLocale(language, 'short') as any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n longhand: monthsForLocale(language, 'long') as any\n }\n };\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n:host {\n display: flex;\n margin-bottom: $cat-body-margin-bottom;\n}\n\n:host([hidden]) {\n display: none;\n}\n\ncat-input {\n flex: 1 1 auto;\n margin: 0;\n}\n","import { Component, Event, Method, EventEmitter, Prop, h } from '@stencil/core';\nimport flatpickr from 'flatpickr';\nimport weekSelectPlugin from 'flatpickr/dist/plugins/weekSelect/weekSelect';\nimport { ErrorMap } from '../cat-form-hint/cat-form-hint';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\nimport { getFormat } from './cat-datepicker.config';\nimport { getLocale } from './cat-datepicker.locale';\n\n@Component({\n tag: 'cat-datepicker',\n styleUrl: 'cat-datepicker.scss',\n shadow: true\n})\nexport class CatDatepickerFlat {\n private pickr?: flatpickr.Instance;\n private _input?: HTMLCatInputElement;\n private get input(): HTMLInputElement | undefined {\n return this._input?.shadowRoot?.querySelector('input') ?? undefined;\n }\n\n /**\n * Whether the label need a marker to shown if the input is required or optional.\n */\n @Prop() requiredMarker: 'none' | 'required' | 'optional' | 'none!' | 'optional!' | 'required!' = 'optional';\n\n /**\n * Whether the label is on top or left.\n */\n @Prop() horizontal = false;\n\n /**\n * Hint for form autofill feature.\n */\n @Prop() autoComplete?: string;\n\n /**\n * Whether the input should show a clear button.\n */\n @Prop() clearable = false;\n\n /**\n * Whether the input is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * Optional hint text(s) to be displayed with the input.\n */\n @Prop() hint?: string | string[];\n\n /**\n * The name of an icon to be displayed in the input.\n */\n @Prop() icon?: string;\n\n /**\n * Display the icon on the right.\n */\n @Prop() iconRight = false;\n\n /**\n * A unique identifier for the input.\n */\n @Prop() identifier?: string;\n\n /**\n * The label for the input.\n */\n @Prop() label = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * A maximum value as ISO Date string, e.g. 2017-03-04T01:23:43.000Z.\n */\n @Prop() max?: string;\n\n /**\n * A minimum value as ISO Date string, e.g. 2017-03-04T01:23:43.000Z.\n */\n @Prop() min?: string;\n\n /**\n * The mode of the datepicker, to select a date, time, both, a date range or a week number.\n */\n @Prop() mode: 'date' | 'time' | 'datetime' | 'daterange' | 'week' = 'date';\n\n /**\n * The name of the form control. Submitted with the form as part of a name/value pair.\n */\n @Prop() name?: string;\n\n /**\n * The placeholder text to display within the input.\n */\n @Prop() placeholder?: string;\n\n /**\n * A textual prefix to be displayed in the input.\n */\n @Prop() textPrefix?: string;\n\n /**\n * A textual suffix to be displayed in the input.\n */\n @Prop() textSuffix?: string;\n\n /**\n * The value is not editable.\n */\n @Prop() readonly = false;\n\n /**\n * A value is required or must be check for the form to be submittable.\n */\n @Prop() required = false;\n\n /**\n * The step size to use when changing the time.\n */\n @Prop() step = 5;\n\n /**\n * The value as ISO Date string, e.g. 2017-03-04T01:23:43.000Z or as a week number string.\n */\n @Prop({ mutable: true }) value?: string;\n\n /**\n * The validation errors for this input. Will render a hint under the input\n * with the translated error message(s) `error.${key}`. If an object is\n * passed, the keys will be used as error keys and the values translation\n * parameters.\n * If the value is `true`, the input will be marked as invalid without any\n * hints under the input.\n */\n @Prop() errors?: boolean | string[] | ErrorMap;\n\n /**\n * Fine-grained control over when the errors are shown. Can be `false` to\n * never show errors, `true` to show errors on blur, or a number to show\n * errors on change with the given delay in milliseconds.\n */\n @Prop() errorUpdate: boolean | number = 0;\n\n /**\n * Attributes that will be added to the native HTML input element.\n */\n @Prop() nativeAttributes?: { [key: string]: string };\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter<string>;\n\n /**\n * Emitted when the input received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentDidLoad() {\n const input = this.input;\n if (input) {\n const locale = getLocale(i18n.getLocale());\n const format = getFormat(i18n.getLocale(), this.mode);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const plugins = this.mode === 'week' ? [new (weekSelectPlugin as any)({})] : [];\n this.pickr = flatpickr(input, {\n locale,\n plugins,\n altInput: true,\n prevArrow: '←',\n nextArrow: '→',\n dateFormat: 'Z',\n altFormat: format,\n ariaDateFormat: format,\n mode: this.mode === 'daterange' ? 'range' : 'single',\n minDate: this.min,\n maxDate: this.max,\n enableTime: this.mode === 'time' || this.mode === 'datetime',\n noCalendar: this.mode === 'time',\n weekNumbers: true,\n minuteIncrement: this.step,\n onChange: (dates, dateStr, flatpickr) => {\n if (this.mode === 'week') {\n this.value = dates[0] ? flatpickr.config.getWeek(dates[0]).toString() : undefined;\n } else {\n this.value = dateStr;\n }\n this.catChange.emit(this.value);\n console.log(this.value);\n }\n });\n }\n }\n\n /**\n * Programmatically move focus to the datepicker. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this._input?.doFocus(options);\n }\n\n /**\n * Programmatically remove focus from the datepicker. Use this method instead of\n * `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this._input?.doBlur();\n }\n\n render() {\n return (\n <cat-input\n ref={el => (this._input = el)}\n requiredMarker={this.requiredMarker}\n horizontal={this.horizontal}\n autoComplete={this.autoComplete}\n clearable={this.clearable}\n disabled={this.disabled}\n hint={this.hint}\n icon={this.icon}\n iconRight={this.iconRight}\n identifier={this.identifier}\n label={this.label}\n labelHidden={this.labelHidden}\n name={this.name}\n placeholder={this.placeholder}\n textPrefix={this.textPrefix}\n textSuffix={this.textSuffix}\n readonly={this.readonly}\n required={this.required}\n value={this.value}\n errors={this.errors}\n errorUpdate={this.errorUpdate}\n nativeAttributes={this.nativeAttributes}\n onCatChange={e => {\n e.stopPropagation();\n this.pickr?.setDate(e.detail);\n if (this.value !== e.detail || undefined) {\n this.value = e.detail || undefined;\n this.catChange.emit(this.value);\n console.log(this.value);\n }\n }}\n onCatFocus={e => {\n e.stopPropagation();\n this.catFocus.emit(e.detail);\n }}\n onCatBlur={e => {\n e.stopPropagation();\n this.catBlur.emit(e.detail);\n }}\n ></cat-input>\n );\n }\n}\n"],"version":3}
|