@adyen/bento-vue2 2.0.1-rc.0 → 2.1.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/README.md +2 -2
- package/dist/@types/index.d.ts +114 -82
- package/dist/accordion.js +1 -1
- package/dist/action-bar.js +1 -1
- package/dist/ai-tag.js +1 -1
- package/dist/alert.js +1 -1
- package/dist/anchor-scroller.js +1 -1
- package/dist/assets/accordion-item.css +1 -1
- package/dist/assets/action-bar.css +1 -1
- package/dist/assets/base-modal.css +1 -1
- package/dist/assets/button-actions.css +1 -1
- package/dist/assets/button.css +1 -1
- package/dist/assets/calendar.css +1 -1
- package/dist/assets/card.css +1 -1
- package/dist/assets/checkbox.css +1 -1
- package/dist/assets/chip.css +1 -1
- package/dist/assets/currency.css +1 -1
- package/dist/assets/data-grid.css +1 -1
- package/dist/assets/date-range-picker.css +1 -1
- package/dist/assets/dialog-page.css +1 -1
- package/dist/assets/draggable.css +1 -1
- package/dist/assets/dropdown.css +1 -1
- package/dist/assets/file-uploader.css +1 -1
- package/dist/assets/filter-bar.css +1 -1
- package/dist/assets/header-with-views.css +1 -1
- package/dist/assets/input-field.css +1 -1
- package/dist/assets/input-time.css +1 -1
- package/dist/assets/inspector.css +1 -1
- package/dist/assets/modal-fullscreen.css +1 -1
- package/dist/assets/navigation-menu-group.css +1 -1
- package/dist/assets/pagination.css +1 -1
- package/dist/assets/rich-text-editor.css +1 -1
- package/dist/assets/search-bar.css +1 -1
- package/dist/assets/secondary-nav.css +1 -1
- package/dist/assets/selection-card-group.css +1 -1
- package/dist/assets/sidepanel.css +1 -1
- package/dist/assets/step.css +1 -1
- package/dist/assets/structured-list-item.css +1 -1
- package/dist/assets/tab.css +1 -1
- package/dist/assets/textarea.css +1 -1
- package/dist/assets/toggle.css +1 -1
- package/dist/assets/typography.css +1 -1
- package/dist/avatar.js +1 -1
- package/dist/button.js +3 -3
- package/dist/card.js +1 -1
- package/dist/checkbox.js +2 -2
- package/dist/chip.js +1 -1
- package/dist/chunks/{accordion-item.DOj7vqeL.js → accordion-item.C158YxId.js} +6 -6
- package/dist/chunks/{accordion-item.DOj7vqeL.js.map → accordion-item.C158YxId.js.map} +1 -1
- package/dist/chunks/{action-bar.KJSfr89B.js → action-bar.D29UQHoA.js} +15 -15
- package/dist/chunks/{action-bar.KJSfr89B.js.map → action-bar.D29UQHoA.js.map} +1 -1
- package/dist/chunks/{ai-button.BnFk5CzK.js → ai-button.qEaHYybv.js} +3 -3
- package/dist/chunks/{ai-button.BnFk5CzK.js.map → ai-button.qEaHYybv.js.map} +1 -1
- package/dist/chunks/{ai-tag.TLrUno9t.js → ai-tag.BLi-Xoh_.js} +3 -3
- package/dist/chunks/{ai-tag.TLrUno9t.js.map → ai-tag.BLi-Xoh_.js.map} +1 -1
- package/dist/chunks/{alert.DT6T5Uxb.js → alert.BddJPWMN.js} +70 -52
- package/dist/chunks/alert.BddJPWMN.js.map +1 -0
- package/dist/chunks/{anchor-scroller.BbvghQxZ.js → anchor-scroller.Clb_9RNz.js} +5 -5
- package/dist/chunks/{anchor-scroller.BbvghQxZ.js.map → anchor-scroller.Clb_9RNz.js.map} +1 -1
- package/dist/chunks/{avatar.CxPKc8Gy.js → avatar.BN4MI-42.js} +2 -2
- package/dist/chunks/{avatar.CxPKc8Gy.js.map → avatar.BN4MI-42.js.map} +1 -1
- package/dist/chunks/{base-button.DOhHyU7x.js → base-button.DYroENBg.js} +3 -3
- package/dist/chunks/{base-button.DOhHyU7x.js.map → base-button.DYroENBg.js.map} +1 -1
- package/dist/chunks/{base-modal.CGHkdr9t.js → base-modal._-Cc6jfi.js} +7 -7
- package/dist/chunks/{base-modal.CGHkdr9t.js.map → base-modal._-Cc6jfi.js.map} +1 -1
- package/dist/chunks/{button-actions-with-menu.CjTaZoYW.js → button-actions-with-menu.1vZJWN1K.js} +2 -2
- package/dist/chunks/{button-actions-with-menu.CjTaZoYW.js.map → button-actions-with-menu.1vZJWN1K.js.map} +1 -1
- package/dist/chunks/{button-actions.sLmpjWGK.js → button-actions.CdetBz3J.js} +9 -9
- package/dist/chunks/button-actions.CdetBz3J.js.map +1 -0
- package/dist/chunks/button-actions.types.BptAXjD8.js.map +1 -1
- package/dist/chunks/{button.DII5Ifwa.js → button.tsTeQRcP.js} +3 -3
- package/dist/chunks/{button.DII5Ifwa.js.map → button.tsTeQRcP.js.map} +1 -1
- package/dist/chunks/{calendar.BNRImpE_.js → calendar.BalfhApP.js} +308 -305
- package/dist/chunks/calendar.BalfhApP.js.map +1 -0
- package/dist/chunks/{card.DmnYYMmv.js → card.BhhC01dV.js} +8 -8
- package/dist/chunks/{card.DmnYYMmv.js.map → card.BhhC01dV.js.map} +1 -1
- package/dist/chunks/{checkbox-group.D1SE-hz6.js → checkbox-group.C-1v4X3c.js} +4 -4
- package/dist/chunks/{checkbox-group.D1SE-hz6.js.map → checkbox-group.C-1v4X3c.js.map} +1 -1
- package/dist/chunks/{checkbox.CyGdeEdp.js → checkbox.CnuIUi4-.js} +6 -6
- package/dist/chunks/{checkbox.CyGdeEdp.js.map → checkbox.CnuIUi4-.js.map} +1 -1
- package/dist/chunks/{chip.DRsJylWl.js → chip.Cc4f2vws.js} +14 -12
- package/dist/chunks/{chip.DRsJylWl.js.map → chip.Cc4f2vws.js.map} +1 -1
- package/dist/chunks/{code-snippet.BwswvtkY.js → code-snippet.Bkd8R0vf.js} +6 -6
- package/dist/chunks/{code-snippet.BwswvtkY.js.map → code-snippet.Bkd8R0vf.js.map} +1 -1
- package/dist/chunks/{controls-group.DUNvd6DZ.js → controls-group.Bku83Fm_.js} +3 -3
- package/dist/chunks/{controls-group.DUNvd6DZ.js.map → controls-group.Bku83Fm_.js.map} +1 -1
- package/dist/chunks/{copy.DSnfQU_F.js → copy.B12-P_8A.js} +4 -4
- package/dist/chunks/{copy.DSnfQU_F.js.map → copy.B12-P_8A.js.map} +1 -1
- package/dist/chunks/{country.UZbwr635.js → country._NpkT-91.js} +2 -2
- package/dist/chunks/{country.UZbwr635.js.map → country._NpkT-91.js.map} +1 -1
- package/dist/chunks/country.types.BCOrkmVK.js.map +1 -1
- package/dist/chunks/{currency.POwX-Trj.js → currency.BXsSGoWa.js} +4 -4
- package/dist/chunks/{currency.POwX-Trj.js.map → currency.BXsSGoWa.js.map} +1 -1
- package/dist/chunks/{dashboard-section.CowwqnVA.js → dashboard-section.yS2FNoIV.js} +3 -3
- package/dist/chunks/{dashboard-section.CowwqnVA.js.map → dashboard-section.yS2FNoIV.js.map} +1 -1
- package/dist/chunks/{dashed-underline.dNu0qaf7.js → dashed-underline.RcRbre03.js} +4 -4
- package/dist/chunks/{dashed-underline.dNu0qaf7.js.map → dashed-underline.RcRbre03.js.map} +1 -1
- package/dist/chunks/{data-grid-template.D5699UWb.js → data-grid-template.B5A9whlD.js} +4 -4
- package/dist/chunks/{data-grid-template.D5699UWb.js.map → data-grid-template.B5A9whlD.js.map} +1 -1
- package/dist/chunks/{data-grid.CN25cWaQ.js → data-grid.Pg5iM8CJ.js} +29 -29
- package/dist/chunks/{data-grid.CN25cWaQ.js.map → data-grid.Pg5iM8CJ.js.map} +1 -1
- package/dist/chunks/{date-picker.DhIMx1wH.js → date-picker.RFus1MVJ.js} +9 -9
- package/dist/chunks/{date-picker.DhIMx1wH.js.map → date-picker.RFus1MVJ.js.map} +1 -1
- package/dist/chunks/date-picker.types.Ckt7zxGy.js.map +1 -1
- package/dist/chunks/{date-range-picker.Cz6ijJAa.js → date-range-picker.B2B4hO6R.js} +411 -370
- package/dist/chunks/date-range-picker.B2B4hO6R.js.map +1 -0
- package/dist/chunks/date-range-picker.types.Ckt7zxGy.js.map +1 -1
- package/dist/chunks/{date-time-picker.CHELyYSN.js → date-time-picker.DJxDa81N.js} +6 -6
- package/dist/chunks/{date-time-picker.CHELyYSN.js.map → date-time-picker.DJxDa81N.js.map} +1 -1
- package/dist/chunks/{date.CPo8t1n9.js → date.P3Xx7JdV.js} +2 -2
- package/dist/chunks/{date.CPo8t1n9.js.map → date.P3Xx7JdV.js.map} +1 -1
- package/dist/chunks/{dialog-page.Bct3zOQO.js → dialog-page.DORdXmEm.js} +3 -3
- package/dist/chunks/{dialog-page.Bct3zOQO.js.map → dialog-page.DORdXmEm.js.map} +1 -1
- package/dist/chunks/{draggable-handle.C75v14oN.js → draggable-handle.BM07OVdH.js} +2 -2
- package/dist/chunks/{draggable-handle.C75v14oN.js.map → draggable-handle.BM07OVdH.js.map} +1 -1
- package/dist/chunks/{draggable.COHEAPF5.js → draggable.BczXedk7.js} +59 -56
- package/dist/chunks/draggable.BczXedk7.js.map +1 -0
- package/dist/chunks/{dropdown-tag.DKGloEzh.js → dropdown-tag.BmUNKoNw.js} +7 -7
- package/dist/chunks/{dropdown-tag.DKGloEzh.js.map → dropdown-tag.BmUNKoNw.js.map} +1 -1
- package/dist/chunks/{dropdown.QLkWJ9zk.js → dropdown.CpZQYisR.js} +10 -10
- package/dist/chunks/{dropdown.QLkWJ9zk.js.map → dropdown.CpZQYisR.js.map} +1 -1
- package/dist/chunks/{empty-state.CRdHhJLl.js → empty-state.L3DTfiY7.js} +4 -4
- package/dist/chunks/{empty-state.CRdHhJLl.js.map → empty-state.L3DTfiY7.js.map} +1 -1
- package/dist/chunks/{error-message.DKnoUezI.js → error-message.B-n8wzFo.js} +2 -2
- package/dist/chunks/{error-message.DKnoUezI.js.map → error-message.B-n8wzFo.js.map} +1 -1
- package/dist/chunks/es6.yPcTMnSH.js.map +1 -1
- package/dist/chunks/{field-label.CEp7WMYe.js → field-label.BQaDr37D.js} +3 -3
- package/dist/chunks/{field-label.CEp7WMYe.js.map → field-label.BQaDr37D.js.map} +1 -1
- package/dist/chunks/{file-uploader.2MeaNIlv.js → file-uploader.Bo17jWtf.js} +13 -14
- package/dist/chunks/{file-uploader.2MeaNIlv.js.map → file-uploader.Bo17jWtf.js.map} +1 -1
- package/dist/chunks/filter-bar.Bio9nf9V.js +3132 -0
- package/dist/chunks/filter-bar.Bio9nf9V.js.map +1 -0
- package/dist/chunks/{fixed-scroller.YC4bZifw.js → fixed-scroller.CHmrgoTQ.js} +2 -2
- package/dist/chunks/{fixed-scroller.YC4bZifw.js.map → fixed-scroller.CHmrgoTQ.js.map} +1 -1
- package/dist/chunks/{focus-trap.BDpcWIxI.js → focus-trap.fd6_d2EW.js} +2 -1
- package/dist/chunks/{focus-trap.BDpcWIxI.js.map → focus-trap.fd6_d2EW.js.map} +1 -1
- package/dist/chunks/{footer-actions.B5YZ95jM.js → footer-actions.B8f-gEQV.js} +4 -4
- package/dist/chunks/{footer-actions.B5YZ95jM.js.map → footer-actions.B8f-gEQV.js.map} +1 -1
- package/dist/chunks/{form-layout-group.D4T0Z5xk.js → form-layout-group.BSC2esG8.js} +2 -2
- package/dist/chunks/{form-layout-group.D4T0Z5xk.js.map → form-layout-group.BSC2esG8.js.map} +1 -1
- package/dist/chunks/{form-layout-title.BStxZj9d.js → form-layout-title.b2BMYjnl.js} +3 -3
- package/dist/chunks/{form-layout-title.BStxZj9d.js.map → form-layout-title.b2BMYjnl.js.map} +1 -1
- package/dist/chunks/{header-with-views.DQh7mz0T.js → header-with-views.BJCjvhem.js} +16 -16
- package/dist/chunks/{header-with-views.DQh7mz0T.js.map → header-with-views.BJCjvhem.js.map} +1 -1
- package/dist/chunks/{header.DeRBttdY.js → header.CDiold9n.js} +5 -5
- package/dist/chunks/{header.DeRBttdY.js.map → header.CDiold9n.js.map} +1 -1
- package/dist/chunks/{info-icon-with-popover.8pL3B3m3.js → info-icon-with-popover.BzGVcMqy.js} +4 -4
- package/dist/chunks/{info-icon-with-popover.8pL3B3m3.js.map → info-icon-with-popover.BzGVcMqy.js.map} +1 -1
- package/dist/chunks/{info-icon.CmWiZXvc.js → info-icon.D11usblr.js} +3 -3
- package/dist/chunks/{info-icon.CmWiZXvc.js.map → info-icon.D11usblr.js.map} +1 -1
- package/dist/chunks/{input-field-password.BiPMXS1j.js → input-field-password.D4Jn2yCi.js} +6 -6
- package/dist/chunks/{input-field-password.BiPMXS1j.js.map → input-field-password.D4Jn2yCi.js.map} +1 -1
- package/dist/chunks/{input-field-phone-number.GK1UAt7-.js → input-field-phone-number.lV7yePoJ.js} +3 -3
- package/dist/chunks/{input-field-phone-number.GK1UAt7-.js.map → input-field-phone-number.lV7yePoJ.js.map} +1 -1
- package/dist/chunks/{input-field.BT5tx_DM.js → input-field.90DWNO1a.js} +7 -7
- package/dist/chunks/{input-field.BT5tx_DM.js.map → input-field.90DWNO1a.js.map} +1 -1
- package/dist/chunks/input-time.D7IsprlH.js +157 -0
- package/dist/chunks/input-time.D7IsprlH.js.map +1 -0
- package/dist/chunks/{inspector-page.C5VCiyLD.js → inspector-page.IoC9naSV.js} +4 -4
- package/dist/chunks/{inspector-page.C5VCiyLD.js.map → inspector-page.IoC9naSV.js.map} +1 -1
- package/dist/chunks/{inspector.BoZBD8_z.js → inspector.BwtV4rE9.js} +6 -6
- package/dist/chunks/{inspector.BoZBD8_z.js.map → inspector.BwtV4rE9.js.map} +1 -1
- package/dist/chunks/{layout-row.LBn6aJv4.js → layout-row.DYx7F4cb.js} +2 -2
- package/dist/chunks/{layout-row.LBn6aJv4.js.map → layout-row.DYx7F4cb.js.map} +1 -1
- package/dist/chunks/{link.Cls8XShm.js → link.iNnolG9W.js} +2 -2
- package/dist/chunks/{link.Cls8XShm.js.map → link.iNnolG9W.js.map} +1 -1
- package/dist/chunks/{list-item.Bh5Z1f0K.js → list-item.ByyA5h1d.js} +5 -5
- package/dist/chunks/{list-item.Bh5Z1f0K.js.map → list-item.ByyA5h1d.js.map} +1 -1
- package/dist/chunks/{listbox-option-tag.BY6i9YgP.js → listbox-option-tag.Cp_W_p4z.js} +3 -3
- package/dist/chunks/{listbox-option-tag.BY6i9YgP.js.map → listbox-option-tag.Cp_W_p4z.js.map} +1 -1
- package/dist/chunks/{modal-fullscreen.Bteroyik.js → modal-fullscreen.DG8Q-jHL.js} +10 -10
- package/dist/chunks/modal-fullscreen.DG8Q-jHL.js.map +1 -0
- package/dist/chunks/{modal.C6OJMJ_D.js → modal.UkzON4bz.js} +7 -7
- package/dist/chunks/{modal.C6OJMJ_D.js.map → modal.UkzON4bz.js.map} +1 -1
- package/dist/chunks/{navigation-menu-group.uqIv5yZG.js → navigation-menu-group.BzKRuhrd.js} +9 -9
- package/dist/chunks/navigation-menu-group.BzKRuhrd.js.map +1 -0
- package/dist/chunks/{pagination.CGiu-kog.js → pagination.DZEVT-CA.js} +8 -7
- package/dist/chunks/{pagination.CGiu-kog.js.map → pagination.DZEVT-CA.js.map} +1 -1
- package/dist/chunks/{payment-method.DcAITDcK.js → payment-method.meF6XN_X.js} +2 -2
- package/dist/chunks/{payment-method.DcAITDcK.js.map → payment-method.meF6XN_X.js.map} +1 -1
- package/dist/chunks/payment-method.types.BqtH7RM2.js.map +1 -1
- package/dist/chunks/popover.types.DvIwSAAp.js +6 -0
- package/dist/chunks/{popover.types.CoDfZgDc.js.map → popover.types.DvIwSAAp.js.map} +1 -1
- package/dist/chunks/{popper-container.Co4j6qME.js → popper-container.Cj3AWXSd.js} +2 -2
- package/dist/chunks/{popper-container.Co4j6qME.js.map → popper-container.Cj3AWXSd.js.map} +1 -1
- package/dist/chunks/{progress-bar.CJ6j8lIr.js → progress-bar.CaurNYsc.js} +4 -4
- package/dist/chunks/{progress-bar.CJ6j8lIr.js.map → progress-bar.CaurNYsc.js.map} +1 -1
- package/dist/chunks/{promo-banner.B5szTysj.js → promo-banner.CcYpFY9b.js} +3 -3
- package/dist/chunks/{promo-banner.B5szTysj.js.map → promo-banner.CcYpFY9b.js.map} +1 -1
- package/dist/chunks/{radio-group.CQfxWRbM.js → radio-group.CLbYlzD7.js} +5 -5
- package/dist/chunks/{radio-group.CQfxWRbM.js.map → radio-group.CLbYlzD7.js.map} +1 -1
- package/dist/chunks/{rich-text-editor.CDrX-0g1.js → rich-text-editor.5SMm2BbC.js} +11 -11
- package/dist/chunks/{rich-text-editor.CDrX-0g1.js.map → rich-text-editor.5SMm2BbC.js.map} +1 -1
- package/dist/chunks/{scroll-to-section.DhW8SFy0.js → scroll-to-section.CzeBpNj4.js} +2 -2
- package/dist/chunks/{scroll-to-section.DhW8SFy0.js.map → scroll-to-section.CzeBpNj4.js.map} +1 -1
- package/dist/chunks/{search-bar.CFscAHEn.js → search-bar.DrIwlAQj.js} +8 -8
- package/dist/chunks/{search-bar.CFscAHEn.js.map → search-bar.DrIwlAQj.js.map} +1 -1
- package/dist/chunks/{secondary-nav.Ba7pNe_-.js → secondary-nav.DRs5yAve.js} +17 -17
- package/dist/chunks/{secondary-nav.Ba7pNe_-.js.map → secondary-nav.DRs5yAve.js.map} +1 -1
- package/dist/chunks/{segmented-control.Dp7Xd5Oa.js → segmented-control.CcQoBTfT.js} +3 -3
- package/dist/chunks/{segmented-control.Dp7Xd5Oa.js.map → segmented-control.CcQoBTfT.js.map} +1 -1
- package/dist/chunks/segmented-control.types.BHRLV8KU.js.map +1 -1
- package/dist/chunks/{selection-card-group.B2IEfuke.js → selection-card-group.BYBAG8ig.js} +49 -48
- package/dist/chunks/{selection-card-group.B2IEfuke.js.map → selection-card-group.BYBAG8ig.js.map} +1 -1
- package/dist/chunks/{sidepanel.B9QGoXGV.js → sidepanel.CLbVkH7v.js} +15 -15
- package/dist/chunks/{sidepanel.B9QGoXGV.js.map → sidepanel.CLbVkH7v.js.map} +1 -1
- package/dist/chunks/{status.DJ1Dfh5s.js → status.BdWYs5MK.js} +2 -2
- package/dist/chunks/{status.DJ1Dfh5s.js.map → status.BdWYs5MK.js.map} +1 -1
- package/dist/chunks/status.types.Dx8MDhEH.js.map +1 -1
- package/dist/chunks/{step.BCa9IOWB.js → step.SkRHgSxN.js} +5 -5
- package/dist/chunks/step.SkRHgSxN.js.map +1 -0
- package/dist/chunks/{structured-list-item.Cp1OuRJJ.js → structured-list-item.BgcR0XlO.js} +10 -9
- package/dist/chunks/structured-list-item.BgcR0XlO.js.map +1 -0
- package/dist/chunks/{summary-grid.types.Ddf7FShu.js → summary-grid.types.Do2PZQGm.js} +6 -6
- package/dist/chunks/{summary-grid.types.Ddf7FShu.js.map → summary-grid.types.Do2PZQGm.js.map} +1 -1
- package/dist/chunks/{tab.DavwEprr.js → tab.zeRxc-3T.js} +49 -48
- package/dist/chunks/tab.zeRxc-3T.js.map +1 -0
- package/dist/chunks/{table-of-contents.BTy95Rrs.js → table-of-contents.D4sF13f8.js} +3 -3
- package/dist/chunks/{table-of-contents.BTy95Rrs.js.map → table-of-contents.D4sF13f8.js.map} +1 -1
- package/dist/chunks/{tag.HGmLa47S.js → tag.CgsX8v2m.js} +3 -3
- package/dist/chunks/{tag.HGmLa47S.js.map → tag.CgsX8v2m.js.map} +1 -1
- package/dist/chunks/{textarea.CFCNYWVT.js → textarea.DMBnJaB1.js} +7 -7
- package/dist/chunks/textarea.DMBnJaB1.js.map +1 -0
- package/dist/chunks/{timeline-item.BIDEQCUw.js → timeline-item.CS7TCdoU.js} +10 -10
- package/dist/chunks/{timeline-item.BIDEQCUw.js.map → timeline-item.CS7TCdoU.js.map} +1 -1
- package/dist/chunks/{title-details.kDWlIY1W.js → title-details.BhR2nis-.js} +4 -4
- package/dist/chunks/{title-details.kDWlIY1W.js.map → title-details.BhR2nis-.js.map} +1 -1
- package/dist/chunks/{toast.CO6ByH3n.js → toast.CjDkuh2x.js} +4 -4
- package/dist/chunks/{toast.CO6ByH3n.js.map → toast.CjDkuh2x.js.map} +1 -1
- package/dist/chunks/{toggle.Dgh7aw1D.js → toggle.BL_w2xUm.js} +4 -4
- package/dist/chunks/{toggle.Dgh7aw1D.js.map → toggle.BL_w2xUm.js.map} +1 -1
- package/dist/chunks/{tooltip.D9Nqxoyp.js → tooltip.BOe7LOfD.js} +4 -4
- package/dist/chunks/{tooltip.D9Nqxoyp.js.map → tooltip.BOe7LOfD.js.map} +1 -1
- package/dist/chunks/{tutorial.dS_oywbu.js → tutorial.DSbBx_2h.js} +5 -5
- package/dist/chunks/{tutorial.dS_oywbu.js.map → tutorial.DSbBx_2h.js.map} +1 -1
- package/dist/chunks/{typography.D1OZJbEa.js → typography.Cd386LC_.js} +5 -5
- package/dist/chunks/{typography.D1OZJbEa.js.map → typography.Cd386LC_.js.map} +1 -1
- package/dist/chunks/{use-bento-toast-controller.A5xraVqa.js → use-bento-toast-controller.DMA9d_oD.js} +2 -2
- package/dist/chunks/{use-bento-toast-controller.A5xraVqa.js.map → use-bento-toast-controller.DMA9d_oD.js.map} +1 -1
- package/dist/chunks/{use-date-input-formatter.5r7srQZU.js → use-date-input-formatter.CouOE5tF.js} +2 -2
- package/dist/chunks/{use-date-input-formatter.5r7srQZU.js.map → use-date-input-formatter.CouOE5tF.js.map} +1 -1
- package/dist/chunks/{use-dynamic-date-fns-locale.Bpb2DeYR.js → use-dynamic-date-fns-locale.DGqfz_nF.js} +2 -2
- package/dist/chunks/{use-dynamic-date-fns-locale.Bpb2DeYR.js.map → use-dynamic-date-fns-locale.DGqfz_nF.js.map} +1 -1
- package/dist/chunks/use-expandable-content-height.DmFeas9-.js +36 -0
- package/dist/chunks/use-expandable-content-height.DmFeas9-.js.map +1 -0
- package/dist/code-snippet.js +1 -1
- package/dist/country.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/dashboard-template.js +1 -1
- package/dist/dashed-underline.js +1 -1
- package/dist/data-grid-template.js +1 -1
- package/dist/data-grid.js +1 -1
- package/dist/date-picker.js +2 -2
- package/dist/date-range-picker.js +2 -2
- package/dist/date-time-picker.js +1 -1
- package/dist/date.js +1 -1
- package/dist/draggable.js +2 -2
- package/dist/dropdown.js +2 -2
- package/dist/empty-state.js +1 -1
- package/dist/file-uploader.js +1 -1
- package/dist/filter-bar.js +1 -1
- package/dist/focus-trap.js +1 -1
- package/dist/form-layout.js +2 -2
- package/dist/header-with-views.js +1 -1
- package/dist/header.js +1 -1
- package/dist/index.js +178 -153
- package/dist/index.js.map +1 -1
- package/dist/info-icon.js +1 -1
- package/dist/input-field-password.js +1 -1
- package/dist/input-field-phone-number.js +1 -1
- package/dist/input-field.js +1 -1
- package/dist/input-time.js +1 -1
- package/dist/inspector.js +2 -2
- package/dist/internal.js +14 -14
- package/dist/layout.js +1 -1
- package/dist/link.js +1 -1
- package/dist/list.js +1 -1
- package/dist/menu.js +1 -1
- package/dist/modal-fullscreen.js +1 -1
- package/dist/modal.js +2 -2
- package/dist/navigation-menu.js +1 -1
- package/dist/pagination.js +1 -1
- package/dist/payment-method.js +1 -1
- package/dist/popover.js +2 -2
- package/dist/popper-container.js +1 -1
- package/dist/progress-bar.js +1 -1
- package/dist/promo-banner.js +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/rich-text-editor.js +1 -1
- package/dist/search-bar.js +2 -2
- package/dist/secondary-nav.js +1 -1
- package/dist/segmented-control.js +1 -1
- package/dist/selection-card.js +1 -1
- package/dist/sidepanel.js +1 -1
- package/dist/status.js +1 -1
- package/dist/stepper.js +1 -1
- package/dist/structured-list.js +1 -1
- package/dist/styles/bento-dark.css +3 -0
- package/dist/styles/bento-light.css +3 -0
- package/dist/styles/bento.css +3 -0
- package/dist/styles/legacy.css +3 -0
- package/dist/styles/styleguide.css +3 -0
- package/dist/styles/utility.css +9 -0
- package/dist/summary-grid.js +1 -1
- package/dist/table-of-contents.js +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tag.js +1 -1
- package/dist/textarea.js +1 -1
- package/dist/timeline.js +1 -1
- package/dist/toast.js +1 -1
- package/dist/toggle.js +1 -1
- package/dist/tutorial.js +1 -1
- package/dist/typography.js +1 -1
- package/dist/web-types.json +1278 -54
- package/package.json +8 -8
- package/dist/assets/date-filter.css +0 -1
- package/dist/assets/date-range-filter.css +0 -1
- package/dist/assets/input-with-dropdown-filter.css +0 -1
- package/dist/chunks/alert.DT6T5Uxb.js.map +0 -1
- package/dist/chunks/button-actions.sLmpjWGK.js.map +0 -1
- package/dist/chunks/calendar.BNRImpE_.js.map +0 -1
- package/dist/chunks/date-filter.BZVe74cH.js +0 -117
- package/dist/chunks/date-filter.BZVe74cH.js.map +0 -1
- package/dist/chunks/date-range-filter.CDrrP22U.js +0 -868
- package/dist/chunks/date-range-filter.CDrrP22U.js.map +0 -1
- package/dist/chunks/date-range-picker.Cz6ijJAa.js.map +0 -1
- package/dist/chunks/draggable.COHEAPF5.js.map +0 -1
- package/dist/chunks/filter-bar.DUw139BE.js +0 -1867
- package/dist/chunks/filter-bar.DUw139BE.js.map +0 -1
- package/dist/chunks/input-time.DGaMMWxj.js +0 -105
- package/dist/chunks/input-time.DGaMMWxj.js.map +0 -1
- package/dist/chunks/input-with-dropdown-filter.axFutymM.js +0 -80
- package/dist/chunks/input-with-dropdown-filter.axFutymM.js.map +0 -1
- package/dist/chunks/modal-fullscreen.Bteroyik.js.map +0 -1
- package/dist/chunks/navigation-menu-group.uqIv5yZG.js.map +0 -1
- package/dist/chunks/popover.types.CoDfZgDc.js +0 -6
- package/dist/chunks/select-avatar-filter.EG4IpfbR.js +0 -51
- package/dist/chunks/select-avatar-filter.EG4IpfbR.js.map +0 -1
- package/dist/chunks/select-country-filter.BtUlbnFP.js +0 -55
- package/dist/chunks/select-country-filter.BtUlbnFP.js.map +0 -1
- package/dist/chunks/select-currency-filter.B__ByL7N.js +0 -89
- package/dist/chunks/select-currency-filter.B__ByL7N.js.map +0 -1
- package/dist/chunks/select-payment-method-filter.DndRc65T.js +0 -51
- package/dist/chunks/select-payment-method-filter.DndRc65T.js.map +0 -1
- package/dist/chunks/select-tag-filter.DiWow_m7.js +0 -59
- package/dist/chunks/select-tag-filter.DiWow_m7.js.map +0 -1
- package/dist/chunks/step.BCa9IOWB.js.map +0 -1
- package/dist/chunks/structured-list-item.Cp1OuRJJ.js.map +0 -1
- package/dist/chunks/tab.DavwEprr.js.map +0 -1
- package/dist/chunks/textarea.CFCNYWVT.js.map +0 -1
- package/dist/chunks/use-expandable-content-height.Bdd9hQwq.js +0 -34
- package/dist/chunks/use-expandable-content-height.Bdd9hQwq.js.map +0 -1
- package/dist/chunks/warning-filled.DI6aB6vH.js +0 -26
- package/dist/chunks/warning-filled.DI6aB6vH.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-filter.CDrrP22U.js","sources":["../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isDate.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isValid.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDayOfYear.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightFormatters.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.js","../../src/components/filter-bar/components/date-range-filter/date-range-filter.vue"],"sourcesContent":["/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","<template>\n <bento-base-filter\n ref=\"baseFilter\"\n class=\"b-base-filter-date-range-filter\"\n :button-label=\"buttonLabel\"\n :button-secondary-label=\"buttonSecondaryLabel\"\n :controlled=\"!onlySlot\"\n :disabled=\"disabled\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n :disable-secondary-button=\"isSecondaryButtonDisabled\"\n :default-value=\"defaultValue\"\n :field=\"field\"\n :label=\"label\"\n :only-slot=\"onlySlot\"\n :tooltip-position=\"options?.tooltipPosition\"\n :tooltip-text=\"options?.tooltipText\"\n :value=\"value\"\n fit-content\n @open=\"openFilter\"\n @clear=\"clearFilter\"\n @reset=\"resetFilter\"\n @cancel=\"onCancel\"\n >\n <bento-date-range-picker\n v-if=\"onlySlot\"\n :allow-time-input=\"options?.allowTimeInput\"\n :model-value=\"internalFilterValue\"\n :first-day-of-week=\"options?.firstDayOfWeek\"\n :is-date-disabled=\"options?.isDateDisabled\"\n :number-of-months=\"options?.numberOfMonths\"\n :quick-select-ranges=\"options?.quickSelectRanges\"\n :variant=\"options?.variant\"\n :year-range=\"options?.yearRange\"\n :disabled=\"disabled\"\n :granularities=\"options?.granularities\"\n :max-range=\"options?.maxRange\"\n :min=\"options?.min\"\n :max=\"options?.max\"\n :date-form-data=\"formData\"\n :show-end-date-on-open=\"options?.showEndDateOnOpen\"\n :aria-labelledby=\"$attrs?.['aria-labelledby']\"\n @update:model-value=\"onDateInputSelected\"\n />\n\n <template v-else>\n <div class=\"b-date-range-filter\">\n <date-range-picker-calendar\n :allow-time-input=\"options?.allowTimeInput\"\n :first-day-of-week=\"options?.firstDayOfWeek\"\n :is-date-disabled=\"options?.isDateDisabled\"\n :granularities=\"options?.granularities\"\n :max-range=\"options?.maxRange\"\n :min=\"options?.min\"\n :max=\"options?.max\"\n :number-of-months=\"options?.numberOfMonths\"\n :quick-select-ranges=\"adjustedQuickSelectRanges\"\n :value=\"internalFilterValue\"\n :date-form-data=\"formData\"\n :show-end-date-on-open=\"options?.showEndDateOnOpen\"\n :variant=\"options?.variant\"\n :year-range=\"options?.yearRange\"\n @input=\"onDateSelected\"\n @custom-range=\"onRangeSelectorInput\"\n @error=\"onDatePickerRangeError\"\n @form-date=\"onDatePickerRangeFormDateInputUpdate\"\n @start-date-selected=\"isSelectingDate = true\"\n >\n <template #title>\n <bento-typography strongest variant=\"body\" el=\"span\">\n {{ label }}\n </bento-typography>\n </template>\n <template #actions>\n <bento-divider class=\"b-date-range-filter__divider\" />\n\n <bento-button-actions\n class=\"b-date-range-filter__actions\"\n :actions=\"actions\"\n layout=\"space-between\"\n />\n </template>\n </date-range-picker-calendar>\n </div>\n </template>\n </bento-base-filter>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, type PropType, reactive, ref, toRef, watch } from 'vue';\n import { BentoBaseFilter, useBaseFilter } from '../base-filter';\n import {\n type BentoDateRangeFilterOptions,\n type BentoDateRangeFilterValue,\n BentoFilterEvent,\n } from '../../filter-bar.types';\n import { DateRangePickerCalendar } from '@/components/date-range-picker/components/date-range-picker-calendar';\n import { BentoDateRangePicker, type BentoDateRangePickerValue } from '@/components/date-range-picker';\n import { BentoDivider } from '@/components/divider';\n import { BentoTypography } from '@/components/typography';\n import { BentoButtonActions, type BentoButtonActionsList } from '@/components/button/components/button-actions';\n import { useI18n } from '@/utils/ts/i18n';\n import { isSameDay } from 'date-fns/isSameDay';\n import { format } from 'date-fns/format';\n import { isEqual } from 'date-fns/isEqual';\n import { isToday } from 'date-fns/isToday';\n import { dateToTimeInputString } from '@/utils/ts/format-date';\n import { useDateInputFormatter, useDynamicDateFnsLocale } from '@/composables';\n\n import messages from './messages.json';\n import {\n type DateRangePickerCalendarFormData,\n type DateRangePickerCalendarRangeSelectorItem,\n type DateRangePickerCalendarRangeSelectorItems,\n } from '@/components/date-range-picker/components/date-range-picker-calendar/date-range-picker-calendar.types';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n /**\n * The Date filter displays a calendar that allows\n * to select a single date.\n *\n * @example\n * import { BentoDateRangeFilter } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDateRangeFilter },\n * template: `\n * <bento-date-range-filter\n * :field=\"filter.field\"\n * :label=\"filter.label\"\n * :options=\"filter.options\"\n * :value=\"filter.value\"\n * @update=\"updateFilterHandler\"\n * >\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-date-range-filter',\n components: {\n BentoBaseFilter,\n BentoButtonActions,\n BentoDateRangePicker,\n BentoTypography,\n BentoDivider,\n DateRangePickerCalendar,\n },\n props: {\n /**\n * Disables the filter from being interacted with.\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Default value of the filter to reset to.\n */\n defaultValue: { type: Object as PropType<BentoDateRangeFilterValue>, default: null },\n\n /**\n * Filter name/key referencing the actual property name in the data set.\n * Should be unique per filter bar.\n */\n field: { type: String, required: true },\n\n /**\n * Label text to be displayed\n */\n label: { type: String, required: true },\n\n /**\n * Renders the base filter's slot content only - leaving out the button and the popover.\n * Used for the allFiltersModal component.\n */\n onlySlot: { type: Boolean, default: false },\n\n /**\n * List of options that are needed to setup the filter\n * Available options:\n * - allowTimeInput: Allows user to enter time values in the form\n * - firstDayOfWeek: Allows user to set the first day of the week. 0 is sunday, 1 is monday, 6 is saturday\n * - isDateDisabled: Indicate if a date should be disabled or not\n * - maxRange: Set a maximum number of dates to be selectable by the range\n * - numberOfMonths: Number of months rendered on pane\n * - quickSelectRanges: An array that sets the custom range dropdown items. @see BentoDateRangePicker\n * - showEndDateOnOpen: Upon opening date range picker, end date's month will be pre-selected.\n * - granularities: A list of available granularities.\n * - variant: The type of calendar to display. Defaults to showing days.\n * - tooltipPosition: The position of the tooltip attached to the filter button\n * - tooltipText: The content of the tooltip attached to the filter button\n */\n options: {\n type: Object as PropType<BentoDateRangeFilterOptions>,\n default: undefined,\n },\n\n /**\n * Current value of the filter\n */\n value: {\n type: Object as PropType<BentoDateRangeFilterValue>,\n default: () => ({ startDate: undefined, endDate: undefined }),\n },\n },\n emits: [BentoFilterEvent.INPUT, BentoFilterEvent.UPDATE],\n setup(props, { emit }) {\n const { locale, t } = useI18n<{ message: MessageSchema }>({ messages });\n const dateLocale = useDynamicDateFnsLocale(locale);\n const { dateToInputDateString } = useDateInputFormatter();\n const { internalFilterValue, isSecondaryButtonDisabled, isApplyButtonDisabled } = useBaseFilter(\n toRef(props, 'value'),\n toRef(props, 'defaultValue')\n );\n const isSelectingDate = ref(false);\n\n const adjustedQuickSelectRanges = computed<Array<DateRangePickerCalendarRangeSelectorItem>>(() => {\n return (\n props?.options?.quickSelectRanges &&\n props.options.quickSelectRanges.map((range: DateRangePickerCalendarRangeSelectorItem) => {\n const timeDiff = !range.data.endDate\n ? new Date(Date.now()).getTime() - range.data.startDate.getTime()\n : undefined;\n return {\n ...range,\n data: {\n ...range.data,\n // Adding timeDifference to calculate an up-to-date endDate on range selection\n timeDifference: timeDiff,\n },\n };\n })\n );\n });\n\n const baseFilter = ref(null);\n const isDateIncorrect = ref(false);\n const formData = reactive({\n startDate: dateToInputDateString(props.value?.startDate),\n endDate: dateToInputDateString(props.value?.endDate),\n startTime: dateToTimeInputString(props.value?.startDate),\n endTime: dateToTimeInputString(props.value?.endDate),\n });\n watch(\n () => props.value,\n () => {\n formData.startDate = dateToInputDateString(props.value?.startDate);\n formData.endDate = dateToInputDateString(props.value?.endDate);\n formData.startTime = dateToTimeInputString(props.value?.startDate);\n formData.endTime = dateToTimeInputString(props.value?.endDate);\n }\n );\n\n function isQuickSelectAnArray(\n quickSelectRanges: BentoDateRangeFilterOptions['quickSelectRanges']\n ): quickSelectRanges is DateRangePickerCalendarRangeSelectorItems {\n return (quickSelectRanges as DateRangePickerCalendarRangeSelectorItems)?.length !== undefined;\n }\n\n const calculateSecondaryLabel = (currentValue: BentoDateRangeFilterValue) => {\n if (!currentValue || (!currentValue?.startDate && !currentValue.endDate)) {\n return null;\n }\n // If quick select range selected then display its label\n if (\n isQuickSelectAnArray(props.options?.quickSelectRanges) &&\n props.options?.quickSelectRanges?.length > 0\n ) {\n const customRangeSelected = props.options?.quickSelectRanges?.find(({ value, data }) => {\n if (currentValue) {\n if (currentValue.range) {\n return value === currentValue.range;\n }\n\n if (!currentValue.startDate || !currentValue.endDate) {\n return false;\n }\n\n if (!data?.endDate) {\n // Autoselecting the correct value for open-ended ranges\n return (\n isEqual(data?.startDate, currentValue.startDate) && isToday(currentValue.endDate)\n );\n }\n // If no range selected but start and end dates correspond to one of the preselected ranges, select it\n return (\n isEqual(data?.startDate, currentValue.startDate) &&\n isEqual(data?.endDate, currentValue.endDate)\n );\n }\n return false;\n });\n\n if (customRangeSelected) {\n return customRangeSelected.label;\n }\n }\n\n if (!currentValue.startDate || !currentValue.endDate) {\n return null;\n }\n\n return isSameDay(currentValue.startDate, currentValue.endDate) && props?.options?.allowTimeInput\n ? `${format(currentValue.startDate, 'dd MMM, yyyy HH:mm:ss', {\n locale: dateLocale.value,\n })} - ${format(currentValue.endDate, 'HH:mm:ss', {\n locale: dateLocale.value,\n })}`\n : `${format(currentValue.startDate, 'dd MMM, yyyy', {\n locale: dateLocale.value,\n })} - ${format(currentValue.endDate, 'dd MMM, yyyy', {\n locale: dateLocale.value,\n })}`;\n };\n\n const buttonSecondaryLabel = computed(() => calculateSecondaryLabel(props.value));\n const buttonLabel = computed(() => props.label);\n\n const updateFilter = () => {\n baseFilter.value.closePopover();\n // Omit the onlySlot prop as it is not needed\n const { onlySlot, ...cleanedProps } = props;\n emit(BentoFilterEvent.UPDATE, { ...cleanedProps, value: internalFilterValue.value });\n };\n\n const clearFilter = () => {\n internalFilterValue.value = undefined;\n updateFilter();\n };\n\n const resetFilter = () => {\n internalFilterValue.value = props.defaultValue;\n updateFilter();\n };\n\n const openFilter = () => {\n internalFilterValue.value = props.value;\n };\n\n // If we click outside or press escape this should cancel and reset the form inputs\n // set all internal states back to their initial values\n const onCancel = () => {\n internalFilterValue.value = props.value;\n isSelectingDate.value = false;\n formData.startDate = dateToInputDateString(props.value?.startDate);\n formData.endDate = dateToInputDateString(props.value?.endDate);\n formData.startTime = dateToTimeInputString(props.value?.startDate);\n formData.endTime = dateToTimeInputString(props.value?.endDate);\n };\n\n const onDateSelected = (selectedDate: BentoDateRangePickerValue) => {\n isSelectingDate.value = false;\n internalFilterValue.value = selectedDate;\n formData.startDate = dateToInputDateString(selectedDate.startDate);\n formData.endDate = dateToInputDateString(selectedDate.endDate);\n emit(BentoFilterEvent.INPUT, { ...props, value: internalFilterValue.value });\n };\n\n const onRangeSelectorInput = (quickSelectRanges?: { startDate: Date; endDate: Date }) => {\n if (quickSelectRanges?.startDate && quickSelectRanges?.endDate) {\n internalFilterValue.value = quickSelectRanges;\n formData.startDate = dateToInputDateString(quickSelectRanges.startDate);\n formData.endDate = dateToInputDateString(quickSelectRanges.endDate);\n emit(BentoFilterEvent.INPUT, { ...props, value: internalFilterValue.value });\n }\n };\n\n // Need to update the internal value and emit the date when using the date-picker input\n const onDateInputSelected = (selectedDate: BentoDateRangePickerValue) => {\n onDateSelected(selectedDate);\n emit(BentoFilterEvent.INPUT, { ...props, value: internalFilterValue.value });\n };\n\n const actions = computed(\n () =>\n [\n {\n title: t('apply') as string,\n event: updateFilter,\n disabled: isSelectingDate.value || isDateIncorrect.value || isApplyButtonDisabled.value,\n },\n {\n title: (props.defaultValue ? t('reset') : t('clear')) as string,\n event: (props.defaultValue ? resetFilter : clearFilter) as () => void,\n disabled: isDateIncorrect.value && isSecondaryButtonDisabled.value,\n },\n ] as BentoButtonActionsList\n );\n\n const onDatePickerRangeError = () => {\n isDateIncorrect.value = true;\n internalFilterValue.value = { startDate: undefined, endDate: undefined };\n emit(BentoFilterEvent.INPUT, { ...props, value: internalFilterValue.value });\n };\n\n const onDatePickerRangeFormDateInputUpdate = (dateFormDate: DateRangePickerCalendarFormData) => {\n isDateIncorrect.value = false;\n\n if (dateFormDate.startTime) {\n formData.startTime = dateFormDate.startTime;\n }\n\n if (dateFormDate.endTime) {\n formData.endTime = dateFormDate.endTime;\n }\n };\n\n return {\n // Refs\n baseFilter,\n\n // Values\n actions,\n formData,\n internalFilterValue,\n isApplyButtonDisabled,\n isSecondaryButtonDisabled,\n isSelectingDate,\n buttonLabel,\n buttonSecondaryLabel,\n adjustedQuickSelectRanges,\n\n // Events\n onCancel,\n onDateSelected,\n openFilter,\n clearFilter,\n resetFilter,\n updateFilter,\n onDatePickerRangeError,\n onDatePickerRangeFormDateInputUpdate,\n onDateInputSelected,\n onRangeSelectorInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-filter.scss\" />\n"],"names":["isDate","value","isValid","date","toDate","getDayOfYear","options","_date","differenceInCalendarDays","startOfYear","addLeadingZeros","number","targetLength","sign","output","lightFormatters","token","signedYear","year","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","localize","era","signedWeekYear","getWeekYear","weekYear","twoDigitYear","isoWeekYear","getISOWeekYear","quarter","week","getWeek","isoWeek","getISOWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","offset","delimiter","absOffset","minutes","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","format","formatStr","defaultOptions","getDefaultOptions","locale","enUS","firstWeekContainsDate","weekStartsOn","originalDate","parts","substring","firstCharacter","longFormatter","longFormatters","cleanEscapedString","formatterOptions","part","isProtectedWeekYearToken","isProtectedDayOfYearToken","warnOrThrowProtectedError","formatter","input","matched","_sfc_main","defineComponent","messages","BentoBaseFilter","BentoButtonActions","BentoDateRangePicker","BentoTypography","BentoDivider","DateRangePickerCalendar","BentoFilterEvent","props","emit","t","useI18n","dateLocale","useDynamicDateFnsLocale","dateToInputDateString","useDateInputFormatter","internalFilterValue","isSecondaryButtonDisabled","isApplyButtonDisabled","useBaseFilter","toRef","isSelectingDate","ref","adjustedQuickSelectRanges","computed","range","timeDiff","baseFilter","isDateIncorrect","formData","reactive","dateToTimeInputString","watch","isQuickSelectAnArray","quickSelectRanges","calculateSecondaryLabel","currentValue","customRangeSelected","data","isEqual","isToday","isSameDay","buttonSecondaryLabel","buttonLabel","updateFilter","onlySlot","cleanedProps","clearFilter","resetFilter","openFilter","onCancel","onDateSelected","selectedDate","onRangeSelectorInput","onDateInputSelected","actions","dateFormDate"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-picker.Cz6ijJAa.js","sources":["../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getYear.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isEqual.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameQuarter.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfSecond.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameSecond.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isToday.js","../../src/components/date-range-picker/components/date-time-input/date-time-input.vue","../../src/components/internal/calendar/components/calendar-month/composables/granular-min-max-date.ts","../../src/components/date-range-picker/composables/use-granularity-memory.ts","../../src/components/date-range-picker/components/date-range-picker-calendar/date-range-picker-calendar.types.ts","../../src/components/date-range-picker/components/date-range-picker-calendar/date-range-picker-calendar.vue","../../src/components/date-range-picker/composables/use-date-range-picker-calendar-text.ts","../../src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getYear} function options.\n */\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The year\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport function getYear(date, options) {\n return toDate(date, options?.in).getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default getYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The dates are equal\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport function isEqual(leftDate, rightDate) {\n return +toDate(leftDate) === +toDate(rightDate);\n}\n\n// Fallback for modularized imports:\nexport default isEqual;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfQuarter } from \"./startOfQuarter.js\";\n\n/**\n * The {@link isSameQuarter} function options.\n */\n\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same quarter (and year)\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport function isSameQuarter(laterDate, earlierDate, options) {\n const [dateLeft_, dateRight_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return +startOfQuarter(dateLeft_) === +startOfQuarter(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameQuarter;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfSecond} function options.\n */\n\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a second\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport function startOfSecond(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setMilliseconds(0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfSecond;\n","import { startOfSecond } from \"./startOfSecond.js\";\n\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second (and hour and day)?\n *\n * @description\n * Are the given dates in the same second (and hour and day)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n *\n * @returns The dates are in the same second (and hour and day)\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n *\n * @example\n * // Are 4 September 2014 06:00:15.000 and 4 September 2014 06:01.15.000 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 4, 6, 1, 15)\n * )\n * //=> false\n *\n * @example\n * // Are 4 September 2014 06:00:15.000 and 5 September 2014 06:00.15.000 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 5, 6, 0, 15)\n * )\n * //=> false\n */\nexport function isSameSecond(laterDate, earlierDate) {\n return +startOfSecond(laterDate) === +startOfSecond(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default isSameSecond;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { constructNow } from \"./constructNow.js\";\nimport { isSameDay } from \"./isSameDay.js\";\n\n/**\n * The {@link isToday} function options.\n */\n\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is today\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nexport function isToday(date, options) {\n return isSameDay(\n constructFrom(options?.in || date, date),\n constructNow(options?.in || date),\n );\n}\n\n// Fallback for modularized imports:\nexport default isToday;\n","<template>\n <bento-form-layout-group :layout=\"showTimeInput ? '50-50' : '100'\" :error-message=\"errorMessage\">\n <bento-input-field\n v-bind=\"resolvedDateProps\"\n :model-value=\"dateModelValue\"\n @update:model-value=\"$emit('update:date-model-value', $event)\"\n @keydown=\"$emit('date:keydown', $event)\"\n />\n\n <bento-input-time\n v-if=\"showTimeInput\"\n v-bind=\"resolvedTimeProps\"\n :model-value=\"timeModelValue\"\n @update:model-value=\"$emit('update:time-model-value', $event)\"\n @input:error=\"$emit('time:error')\"\n @input:valid=\"$emit('time:valid')\"\n />\n </bento-form-layout-group>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue';\n import { BentoFormLayoutGroup } from '@/components/form-layout';\n import { BentoInputField } from '@/components/input-field';\n import { BentoInputTime } from '@/components/input-time';\n\n import type { BentoDateTimeInputEmits, BentoDateTimeInputProps } from './date-time-input.types';\n\n const props = defineProps({\n dateModelValue: { default: '' },\n dateProps: { default: () => ({}) },\n errorMessage: { default: null },\n showTimeInput: { type: Boolean, default: false },\n timeModelValue: { default: '' },\n timeProps: { default: () => ({}) }\n});\n\n defineEmits([\"update:date-model-value\", \"date:keydown\", \"update:time-model-value\", \"time:error\", \"time:valid\"]);\n\n const resolvedDateProps = computed(() => ({\n errorMessage: props.errorMessage,\n ...props.dateProps,\n }));\n\n const resolvedTimeProps = computed(() => ({\n errorMessage: props.errorMessage,\n ...props.timeProps,\n }));\n</script>\n\n<script lang=\"ts\">\n /**\n * Internal component that combines a date input field and an optional time input\n * within a form layout group, providing a shared error message pattern.\n *\n * @example\n * import { DateTimeInput } from '@/internal';\n *\n * export default {\n * components: { DateTimeInput },\n * template: `\n * <date-time-input\n * date-aria-label=\"Date from\"\n * :date-model-value=\"dateValue\"\n * :show-time-input=\"true\"\n * time-aria-label=\"Time from\"\n * :time-model-value=\"timeValue\"\n * :error-message=\"errorMsg\"\n * @update:date-model-value=\"onDateChange\"\n * @update:time-model-value=\"onTimeChange\"\n * />\n * `\n * }\n */\n export default {\n name: 'date-time-input',\n };\n</script>\n","import { addDays } from 'date-fns/addDays';\nimport { addMonths } from 'date-fns/addMonths';\nimport { addQuarters } from 'date-fns/addQuarters';\nimport { endOfDay } from 'date-fns/endOfDay';\nimport { endOfMonth } from 'date-fns/endOfMonth';\nimport { endOfQuarter } from 'date-fns/endOfQuarter';\nimport { endOfWeek } from 'date-fns/endOfWeek';\nimport { isSameDay } from 'date-fns/isSameDay';\nimport { startOfDay } from 'date-fns/startOfDay';\nimport { startOfMonth } from 'date-fns/startOfMonth';\nimport { startOfQuarter } from 'date-fns/startOfQuarter';\nimport { startOfWeek } from 'date-fns/startOfWeek';\nimport { subDays } from 'date-fns/subDays';\nimport { subMonths } from 'date-fns/subMonths';\nimport { subQuarters } from 'date-fns/subQuarters';\n\nimport type { CalendarGranularityConfig } from '../../../calendar.types';\nimport type { UseGranularMinMaxDate } from './granular-min-max-date.types';\n\n/**\n * Provides utility function to set calendar min/max dates based on the granularity selected.\n * @param props Configured min/max dates, and the day the week starts on.\n * @returns Function to calculate calendar limits.\n */\nexport const useGranularMinMaxDate: UseGranularMinMaxDate = ({\n firstDayOfWeek,\n min: minimumDate,\n max: maximumDate,\n}) => {\n const getGranularCalendarLimits = (granularity: CalendarGranularityConfig) => {\n if (!minimumDate && !maximumDate) {\n return { min: null, max: null };\n }\n\n let min = minimumDate ? startOfDay(minimumDate) : null;\n let max = maximumDate ? endOfDay(maximumDate) : null;\n\n if (granularity?.type === 'weekly') {\n if (granularity.earliest) {\n min = startOfDay(granularity.earliest);\n } else if (min) {\n const startOfMin = startOfWeek(min, { weekStartsOn: firstDayOfWeek });\n\n // If the minimum is in the middle of a week, set to the end (only allow full weeks)\n if (!isSameDay(min, startOfMin)) {\n min = startOfDay(addDays(endOfWeek(min, { weekStartsOn: firstDayOfWeek }), 1));\n }\n }\n\n if (granularity.latest) {\n max = endOfDay(granularity.latest);\n } else if (max) {\n const endOfMax = endOfWeek(max, { weekStartsOn: firstDayOfWeek });\n\n // If the maximum is in the middle of a week, set to the end of last week (only allow full weeks)\n if (!isSameDay(max, endOfMax)) {\n max = endOfDay(subDays(startOfWeek(max, { weekStartsOn: firstDayOfWeek }), 1));\n }\n }\n }\n\n if (granularity?.type === 'monthly') {\n if (granularity.earliest) {\n min = startOfDay(granularity.earliest);\n } else if (min) {\n const startOfMin = startOfMonth(min);\n\n // If the minimum is in the middle of a month, set to the start of next month (only allow full month)\n if (!isSameDay(min, startOfMin)) {\n min = startOfMonth(addMonths(min, 1));\n }\n }\n\n if (granularity.latest) {\n max = endOfDay(granularity.latest);\n } else if (max) {\n const endOfMax = endOfMonth(max);\n\n // If the maximum is in the middle of a month, set to the end of last month (only allow full months)\n if (!isSameDay(max, endOfMax)) {\n max = endOfMonth(subMonths(max, 1));\n }\n }\n }\n\n if (granularity?.type === 'quarterly') {\n if (granularity.earliest) {\n min = startOfQuarter(granularity.earliest);\n } else if (min) {\n const startOfMin = startOfQuarter(min);\n\n // If the minimum is in the middle of a quarter, set to the start of next quarter (only allow full fiscal quarters)\n if (!isSameDay(min, startOfMin)) {\n min = startOfQuarter(addQuarters(min, 1));\n }\n }\n\n if (granularity.latest) {\n max = endOfDay(granularity.latest);\n } else if (max) {\n const endOfMax = endOfQuarter(max);\n\n // If the maximum is in the middle of a quarter, set to the end of last quarter (only allow full fiscal quarters)\n if (!isSameDay(max, endOfMax)) {\n max = endOfQuarter(subQuarters(max, 1));\n }\n }\n }\n\n return { min, max };\n };\n\n return { getGranularCalendarLimits };\n};\n","import { reactive } from 'vue';\n\nimport type { CalendarGranularityType } from '../../internal/calendar/calendar.types';\nimport type { UseGranularityMemory } from './use-granularity-memory.types';\n\n/**\n * Provides utility property and functions to store date ranges based on granularity.\n * This is used to revert back to the previously selected range when users switch between granularities\n * @returns Saved date ranges per granularity, and functions to save/reset ranges.\n */\nexport const useGranularityMemory: UseGranularityMemory = () => {\n const savedRanges = reactive<{\n daily: { startDate: Date; endDate: Date } | null;\n weekly: { startDate: Date; endDate: Date } | null;\n monthly: { startDate: Date; endDate: Date } | null;\n quarterly: { startDate: Date; endDate: Date } | null;\n }>({\n daily: null,\n weekly: null,\n monthly: null,\n quarterly: null,\n });\n\n const saveRange = (type: CalendarGranularityType, range: { startDate: Date; endDate: Date }) => {\n savedRanges[type] = range;\n };\n\n const resetSavedRanges = () => {\n savedRanges.daily = null;\n savedRanges.weekly = null;\n savedRanges.monthly = null;\n savedRanges.quarterly = null;\n };\n\n return {\n savedRanges,\n\n saveRange,\n resetSavedRanges,\n };\n};\n","import { type CalendarGranularityType } from '@/internal/calendar/calendar.types';\n\nexport interface DateRangePickerCalendarFormData {\n startDate: string;\n endDate: string;\n startTime?: string;\n endTime?: string;\n granularity?: CalendarGranularityType;\n}\n\nexport enum DateRangePickerCalendarEvent {\n CUSTOM_RANGE = 'custom-range',\n INPUT = 'input',\n ERROR = 'error',\n FORM_DATE = 'form-date',\n START_DATE_SELECTED = 'start-date-selected',\n}\n\nexport interface DateRangePickerCalendarRangeSelectorItem {\n label: string;\n value: string;\n data: {\n startDate: Date;\n endDate?: Date;\n granularity?: CalendarGranularityType;\n isRelativeToNow?: boolean;\n timeDifference?: number;\n };\n}\n\nexport type DateRangePickerCalendarRangeSelectorItems = Array<DateRangePickerCalendarRangeSelectorItem>;\n","<template>\n <div class=\"b-date-range-picker-calendar\">\n <!-- Form -->\n <div\n class=\"b-date-range-picker-calendar__form-container\"\n :class=\"computedFormContainerClasses\"\n data-testid=\"date-range-picker-calendar-form-container\"\n >\n <div class=\"b-date-range-picker-calendar__form\">\n <template v-if=\"hasSlot('title')\">\n <slot name=\"title\" />\n </template>\n\n <bento-dropdown\n v-if=\"quickSelectRanges\"\n :aria-label=\"t('customRange')\"\n :items=\"quickSelectRangeDefaultItems\"\n :model-value=\"selectedRangeSelectorValue\"\n @update:model-value=\"onRangeSelectorInput\"\n />\n\n <bento-segmented-control\n v-if=\"granularities\"\n :items=\"granularityItems\"\n :model-value=\"internalRangeDate.granularity\"\n full-width\n @update:model-value=\"onGranularityInput\"\n >\n </bento-segmented-control>\n\n <bento-alert v-if=\"maxRangeMessage\" variant=\"tip\">\n <template #description>\n {{ maxRangeMessage }}\n </template>\n </bento-alert>\n\n <div>\n <bento-typography stronger el=\"span\" class=\"b-date-range-picker-calendar__label\">\n {{ t('from') }}\n </bento-typography>\n\n <date-time-input\n :date-model-value=\"startDateValue\"\n :date-props=\"{\n 'aria-label': t('dateFrom'),\n type: dateInputType,\n description: !isTouchDevice ? t(dateFormat) : undefined,\n errorMessage: startDateErrorText,\n }\"\n :error-message=\"startSharedError\"\n :show-time-input=\"allowTimeInput\"\n :time-model-value=\"dateTextInput.startTime\"\n :time-props=\"{\n 'aria-label': t('timeFrom'),\n errorMessage: startSharedError,\n }\"\n class=\"b-date-range-picker-calendar__form-input\"\n @update:date-model-value=\"onStartDateInput\"\n @date:keydown=\"onDateInputKeyDown\"\n @update:time-model-value=\"onStartTimeInput\"\n @time:error=\"onStartTimeError\"\n @time:valid=\"onStartTimeValid\"\n />\n </div>\n\n <div>\n <bento-typography stronger el=\"span\" class=\"b-date-range-picker-calendar__label\">\n {{ t('to') }}\n </bento-typography>\n\n <date-time-input\n :date-model-value=\"endDateValue\"\n :date-props=\"{\n 'aria-label': t('dateTo'),\n type: dateInputType,\n description: !isTouchDevice ? t(dateFormat) : undefined,\n errorMessage: endDateErrorText,\n }\"\n :error-message=\"endSharedError\"\n :show-time-input=\"allowTimeInput\"\n :time-model-value=\"dateTextInput.endTime\"\n :time-props=\"{\n 'aria-label': t('timeTo'),\n errorMessage: endSharedError,\n }\"\n class=\"b-date-range-picker-calendar__form-input\"\n @update:date-model-value=\"onEndDateInput\"\n @date:keydown=\"onDateInputKeyDown\"\n @update:time-model-value=\"onEndTimeInput\"\n @time:error=\"onEndTimeError\"\n @time:valid=\"onEndTimeValid\"\n />\n </div>\n </div>\n\n <div v-if=\"hasSlot('actions')\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <!-- Calendar -->\n <div\n v-if=\"!hasNoCalendars && !isTouchDevice\"\n class=\"b-date-range-picker-calendar__calendars-container\"\n data-testid=\"date-range-picker-calendar-calendar-container\"\n >\n <calendar\n :value=\"internalRangeDate\"\n :first-day-of-week=\"firstDayOfWeek\"\n :is-date-disabled=\"isDateDisabled\"\n :max-range=\"maxRange\"\n :min=\"computedMinMax.min\"\n :max=\"computedMinMax.max\"\n :number-of-months=\"numberOfMonths\"\n :show-end-date-on-open=\"showEndDateOnOpen\"\n :granularity=\"selectedGranularity\"\n :variant=\"variant\"\n :year-range=\"yearRange\"\n is-range\n @input=\"onDateInput\"\n @start-date-selected=\"onStartDateSelected\"\n @end-date-selected=\"onEndDateSelected\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, onMounted, type PropType, reactive, ref, toRaw, useSlots } from 'vue';\n import { Calendar, type CalendarGranularityType } from '@/internal';\n import { DateTimeInput } from '../date-time-input';\n import { BentoAlert } from '@/components/alert';\n import { BentoTypography } from '@/components/typography';\n import BentoDropdown from '@/components/dropdown/dropdown.vue';\n import { BentoSegmentedControl, type BentoSegmentedControlItem } from '@/components/segmented-control';\n import { useI18n } from '@/utils/ts/i18n';\n import { debounce } from '@/utils/ts/debounce';\n import { useDateInputFormatter, useHasSlot, useTouchDevice } from '@/composables';\n import { useGranularityAdjustments } from '@/components/internal/calendar/composables/use-granularity-adjustments';\n import { useGranularMinMaxDate } from '@/components/internal/calendar/components/calendar-month/composables/granular-min-max-date';\n import { useGranularityMemory } from '../../composables/use-granularity-memory';\n import {\n DateRangePickerCalendarEvent,\n type DateRangePickerCalendarFormData,\n type DateRangePickerCalendarRangeSelectorItems,\n } from './date-range-picker-calendar.types';\n import type {\n BentoDateRangePickerGranularityConfig,\n BentoDateRangePickerValue,\n } from '../../date-range-picker.types';\n import { endOfDay } from 'date-fns/endOfDay';\n import { startOfDay } from 'date-fns/startOfDay';\n import { isSameSecond } from 'date-fns/isSameSecond';\n import { isSameDay } from 'date-fns/isSameDay';\n import { isEqual } from 'date-fns/isEqual';\n import { isToday } from 'date-fns/isToday';\n import { setMilliseconds } from 'date-fns/setMilliseconds';\n import {\n dateToNativeDateString,\n dateToNativeMonthString,\n dateToTimeInputString,\n parseNativeMonthString,\n } from '@/utils/ts/format-date/format-date';\n import { isValidTimeString } from '@/utils/ts/time-input';\n import { setTimeInDateObject } from '@/utils/ts/format-date';\n import type { BentoRangeEndpoint } from '@/components/internal/calendar/composables/use-granularity-adjustments.types';\n\n import messages from './messages.json';\n\n const FORM_INPUT_DEBOUNCE_TIME = 300;\n const RANGE_SELECTOR_CUSTOM_RANGE_KEY = 'customRange';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const maxRangeMessageKeyMap: Record<CalendarGranularityType, keyof MessageSchema> = {\n daily: 'maxRangeDays',\n weekly: 'maxRangeWeeks',\n monthly: 'maxRangeMonths',\n quarterly: 'maxRangeQuarters',\n };\n\n const props = defineProps({\n /**\n * Allows user to enter time values in the form\n */\n allowTimeInput: { type: Boolean, default: false },\n\n /**\n * Ranges form persistance data\n */\n dateFormData: {\n type: Object as PropType<DateRangePickerCalendarFormData>,\n default: () => ({ startDate: undefined, endDate: undefined, startTime: undefined, endTime: undefined }),\n },\n\n /**\n * Allows you to set the first day of the week. 0 is sunday, 1 is monday, 6 is saturday\n */\n firstDayOfWeek: Calendar.props.firstDayOfWeek,\n\n /**\n * A list of available granularities.\n * If present, the date picker will display a segmented control to change granularity.\n */\n granularities: {\n type: Array as PropType<Array<BentoDateRangePickerGranularityConfig>>,\n default: null,\n },\n\n /**\n * Indicate if a date should be disabled or not\n */\n isDateDisabled: Calendar.props.isDateDisabled,\n\n /**\n * Set a maximum number of dates to be selectable by the range.\n */\n maxRange: Calendar.props.maxRange,\n\n /**\n * Sets a minimum limit for selectable dates - dates before `min` will not be selectable\n */\n min: Calendar.props.min,\n\n /**\n * Sets a maximum limit for selectable dates - dates after `max` will not be selectable\n */\n max: Calendar.props.max,\n\n /**\n * Number of months rendered on pane\n */\n numberOfMonths: {\n type: Calendar.props.numberOfMonths.type,\n default: Calendar.props.numberOfMonths.default,\n validator: (n: number) => n >= 0,\n },\n\n /**\n * Displays the end date's month when the calendar is opened. Defaults to false i.e. the start date's month is displayed.\n */\n showEndDateOnOpen: { type: Boolean, default: false },\n\n /**\n * Enables the custom range selector.\n * If provided, must be an array that sets the custom range dropdown items. Items are of the structure:\n * `label` - label of custom range item.\n * `value` - a unique key of the custom range item.\n * `data` - an object `{ startDate: Date; endDate: Date }` to set the date picker range to upon selecting.\n */\n quickSelectRanges: {\n type: Array as PropType<DateRangePickerCalendarRangeSelectorItems>,\n default: undefined,\n },\n\n /**\n * Selected date\n */\n value: { type: Object as PropType<BentoDateRangePickerValue>, default: undefined },\n\n /**\n * The type of calendar to display. Defaults to showing days.\n */\n variant: Calendar.props.variant,\n\n /**\n * Range of years to be selectable from the year dropdown\n */\n yearRange: Calendar.props.yearRange,\n });\n\n const emit = defineEmits([\n DateRangePickerCalendarEvent.CUSTOM_RANGE,\n DateRangePickerCalendarEvent.INPUT,\n DateRangePickerCalendarEvent.ERROR,\n DateRangePickerCalendarEvent.FORM_DATE,\n DateRangePickerCalendarEvent.START_DATE_SELECTED,\n ]);\n\n const slots = useSlots();\n const hasSlot = useHasSlot(slots);\n\n const { t, tc } = useI18n<{ message: MessageSchema }>({ messages });\n const { isTouchDevice } = useTouchDevice();\n const {\n dateFormat,\n isFormatValid,\n parseDate,\n onKeyDown,\n autoFormat,\n formatDate: formatDateUtil,\n } = useDateInputFormatter();\n const calculatedIsRelativeToNowQuickSelectRanges = ref({});\n\n const defaultGranularity = computed(() => (props.variant === 'month' ? 'monthly' : 'daily'));\n const hasNoCalendars = computed(() => props.numberOfMonths === 0);\n\n const internalRangeDate = reactive<BentoDateRangePickerValue>({\n startDate: props.value?.startDate,\n endDate: props.value?.endDate,\n range: props.value?.range,\n ...(props.granularities\n ? {\n granularity: props.value?.granularity || defaultGranularity.value,\n }\n : {}),\n });\n\n /**\n * Currently range selector dropdown item that is selected.\n * The logic will try and find in each range item:\n * - If an endDate does not exist, then only check if the startDate day matches and if today's day matches.\n * - if time input has been enabled, then check if the seconds match.\n * - if an endDate does exist then just check if the startDate day and the endDate day match.\n *\n * Note: All date comparisons use local time consistently. Both sides of each comparison\n * originate from the same timezone context, so no UTC normalization is needed.\n */\n const selectedRangeSelectorValue = computed(() => {\n return (\n // eslint-disable-next-line consistent-return\n props?.quickSelectRanges?.find(({ value, data }) => {\n if (!data.endDate) {\n // Check if this quick select range is explicitly marked as \"relative to now\"\n if (data.isRelativeToNow) {\n // Retrieve previously calculated start/end dates for this relative range.\n // We use these if the user has already clicked on this time of quick range\n const newlyCalculatedQuickSelectDates =\n calculatedIsRelativeToNowQuickSelectRanges.value?.[value];\n return newlyCalculatedQuickSelectDates\n ? isEqual(newlyCalculatedQuickSelectDates.startDate, internalRangeDate.startDate) &&\n isEqual(newlyCalculatedQuickSelectDates.endDate, internalRangeDate.endDate)\n : // If not stored calculated dates, fall back to comparing the quick select item's value\n // with the internal range's stored range identifier.\n value === internalRangeDate.range;\n }\n // This block handles quick select ranges that do not have an endDate\n // AND are NOT explicitly marked as 'isRelativeToNow'.\n // This means the endDate will be today at the end of the day.\n // Uses isEqual for startDate to prevent false matches (e.g. same-day selection\n // accidentally matching a \"This week\" range). When time input is enabled,\n // also verify the end time is at end of day so that manual time changes\n // correctly fall back to \"Custom range\".\n return (\n isEqual(data.startDate, internalRangeDate.startDate) &&\n isToday(internalRangeDate.endDate) &&\n (!props.allowTimeInput ||\n isSameSecond(internalRangeDate.endDate, endOfDay(internalRangeDate.endDate))) &&\n (props.granularities ? data.granularity === internalRangeDate.granularity : true)\n );\n }\n\n if (props.allowTimeInput) {\n const res =\n isSameSecond(data.startDate, internalRangeDate.startDate) &&\n isSameSecond(data.endDate, internalRangeDate.endDate) &&\n (props.granularities ? data.granularity === internalRangeDate.granularity : true);\n return res;\n }\n\n if (data.endDate) {\n return (\n isSameDay(data.startDate, internalRangeDate.startDate) &&\n isSameDay(data.endDate, internalRangeDate.endDate) &&\n (props.granularities ? data.granularity === internalRangeDate.granularity : true)\n );\n }\n })?.value ?? RANGE_SELECTOR_CUSTOM_RANGE_KEY\n );\n });\n const quickSelectRangeDefaultItems = computed(() => [\n { label: t('customRange'), value: RANGE_SELECTOR_CUSTOM_RANGE_KEY },\n ...(props.quickSelectRanges ? props.quickSelectRanges : []),\n ]);\n\n const selectedGranularity = computed(\n () => props.granularities?.find(({ type }) => type === internalRangeDate.granularity) || null\n );\n\n const granularityItems = computed<Array<BentoSegmentedControlItem>>(\n () =>\n props.granularities?.map(({ type, disabled }) => ({\n label: t(type),\n value: type,\n disabled,\n })) ?? []\n );\n\n const { getGranularCalendarLimits } = useGranularMinMaxDate(props);\n\n const computedMinMax = computed(() =>\n props.granularities\n ? getGranularCalendarLimits(selectedGranularity.value)\n : { min: props.min ? startOfDay(props.min) : null, max: props.max ? endOfDay(props.max) : null }\n );\n\n const { normalizeRange } = useGranularityAdjustments(props.firstDayOfWeek);\n const { savedRanges, saveRange, resetSavedRanges } = useGranularityMemory();\n\n /**\n * Format date to a string value in current format\n * @param dateToFormat - Date to be formatted\n */\n const formatDate = (dateToFormat?: Date) => {\n if (!dateToFormat) {\n return '';\n }\n return formatDateUtil(dateToFormat);\n };\n\n /**\n * Applies all active range constraints to the current value.\n * @param fixedEndpoint - Endpoint to keep unchanged when maxRange shortens the range.\n * @param alignToGranularity - Whether to expand dates to complete granularity units.\n */\n const normalizeInternalRange = (fixedEndpoint: BentoRangeEndpoint, alignToGranularity = true) => {\n if (!internalRangeDate.startDate || !internalRangeDate.endDate) {\n return;\n }\n\n const normalizedRange = normalizeRange({\n startDate: internalRangeDate.startDate,\n endDate: internalRangeDate.endDate,\n fixedEndpoint,\n granularity: selectedGranularity.value,\n alignToGranularity,\n fallbackMaxRange: props.maxRange,\n min: computedMinMax.value.min,\n max: computedMinMax.value.max,\n });\n if (\n isEqual(normalizedRange.startDate, internalRangeDate.startDate) &&\n isEqual(normalizedRange.endDate, internalRangeDate.endDate)\n ) {\n return;\n }\n\n internalRangeDate.startDate = normalizedRange.startDate;\n internalRangeDate.endDate = normalizedRange.endDate;\n dateTextInput.startDate = formatDate(normalizedRange.startDate);\n dateTextInput.endDate = formatDate(normalizedRange.endDate);\n };\n\n // Form error keys\n const startDateError = ref<keyof MessageSchema | null>(null);\n const endDateError = ref<keyof MessageSchema | null>(null);\n\n // Translated error messages for the template\n const startDateErrorText = computed(() => (startDateError.value ? t(startDateError.value) : null));\n const endDateErrorText = computed(() => (endDateError.value ? t(endDateError.value) : null));\n\n // Shared errors exclude format errors since those only concern the date input\n const startSharedError = computed(() =>\n startDateError.value === 'invalidDateFormat' ? null : startDateErrorText.value\n );\n const endSharedError = computed(() => (endDateError.value === 'invalidDateFormat' ? null : endDateErrorText.value));\n\n /**\n * Returns a translated error message for a given date string, or null if valid.\n * @param dateText The date string to validate.\n * @param counterpartDate Optional date to compare against for range order validation.\n * @param role Whether the date being validated is the 'start' or 'end' of the range.\n */\n const getDateErrorMessage = (\n dateText: string,\n counterpartDate?: Date,\n role?: 'start' | 'end',\n resolvedDateTime?: Date\n ): keyof MessageSchema | null => {\n if (!dateText || !isFormatValid(dateText)) {\n return 'invalidDateFormat';\n }\n\n const date = parseDate(dateText);\n const dayDate = startOfDay(date);\n\n if ((props.min && dayDate < startOfDay(props.min)) || (props.max && dayDate > startOfDay(props.max))) {\n return 'selectedDateIsNotAvailable';\n }\n\n if (props.isDateDisabled && props.isDateDisabled(dayDate)) {\n return 'selectedDateIsNotAvailable';\n }\n\n if (counterpartDate) {\n // When time input is enabled and we have a resolved datetime, compare full datetimes;\n // otherwise fall back to day-level comparison.\n const current = resolvedDateTime ? setMilliseconds(resolvedDateTime, 0).getTime() : dayDate.getTime();\n const counterpart = resolvedDateTime\n ? setMilliseconds(counterpartDate, 0).getTime()\n : startOfDay(counterpartDate).getTime();\n\n const isInvalid = role === 'start' ? current >= counterpart : current <= counterpart;\n\n if (isInvalid) {\n return 'startDateMustPrecedeEndDate';\n }\n }\n\n return null;\n };\n\n // Form input text used in range variant\n const dateTextInput = reactive({\n startDate: props.dateFormData.startDate,\n endDate: props.dateFormData.endDate,\n startTime: props.dateFormData.startTime,\n endTime: props.dateFormData.endTime,\n });\n\n /**\n * Checks if a time string is valid and within the min/max bounds if a date is provided.\n * @param timeText The time string to validate.\n * @param date The date string to check the time against.\n * @returns True if the time is valid, false otherwise.\n */\n const isValidTime = (timeText: string, date?: string) => {\n const isTimeAllowed = () => {\n if (date && isValidDate(date)) {\n const dateToCheckWithTime = setTimeInDateObject(parseDate(date), timeText);\n // Check if date is between min/max bounds, if there are any\n if (\n (props.min && dateToCheckWithTime < setMilliseconds(props.min, 0)) ||\n (props.max && dateToCheckWithTime > setMilliseconds(props.max, 0))\n ) {\n return false;\n }\n }\n\n return true;\n };\n\n return isValidTimeString(timeText) && isTimeAllowed();\n };\n\n const isMonthVariant = computed(() => props.variant === 'month');\n\n const formatNativeDate = (date: Date): string => {\n if (!date) {\n return '';\n }\n\n return isMonthVariant.value ? dateToNativeMonthString(date) : dateToNativeDateString(date);\n };\n\n const nativeStartDate = computed(() => formatNativeDate(internalRangeDate.startDate));\n const nativeEndDate = computed(() => formatNativeDate(internalRangeDate.endDate));\n const dateInputType = computed(() => (isTouchDevice.value ? (isMonthVariant.value ? 'month' : 'date') : 'text'));\n\n const startDateValue = computed(() => (isTouchDevice.value ? nativeStartDate.value : dateTextInput.startDate));\n const endDateValue = computed(() => (isTouchDevice.value ? nativeEndDate.value : dateTextInput.endDate));\n\n /**\n * Sets the time in a date object if the time is valid and the variant is not 'month'.\n * @param date The date object to modify.\n * @param time The time string to set.\n * @returns The modified date object or the original if time is not set.\n */\n const setTimeInDateRef = (date: Date, time: string) => {\n // Do not set time if month variant\n if (!time || !isValidTimeString(time) || props.variant === 'month') {\n return date;\n }\n\n return setTimeInDateObject(new Date(date), time);\n };\n\n const onDateInput = (selectedRange: BentoDateRangePickerValue) => {\n dateTextInput.startTime = dateToTimeInputString(\n props.min && props.allowTimeInput && isSameDay(props.min, selectedRange.startDate)\n ? props.min\n : startOfDay(selectedRange.startDate)\n );\n dateTextInput.endTime = dateToTimeInputString(\n props.max && props.allowTimeInput && isSameDay(props.max, selectedRange.endDate)\n ? props.max\n : endOfDay(selectedRange.endDate)\n );\n\n internalRangeDate.startDate = setTimeInDateRef(selectedRange.startDate, dateTextInput.startTime);\n internalRangeDate.endDate = setTimeInDateRef(selectedRange.endDate, dateTextInput.endTime);\n // Resetting internal range date when selecting a custom range through the calendar\n internalRangeDate.range = null;\n\n if (props.granularities) {\n // Reset saved ranges on input\n resetSavedRanges();\n }\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n };\n\n /**\n * Checks if a date string is in current format and if the date is enabled.\n * @param dateText The date string to validate.\n * @returns True if the date is valid and enabled, false otherwise.\n */\n const isValidDate = (dateText: string): boolean => !!dateText && !getDateErrorMessage(dateText);\n\n /**\n * When mounted, set the input error states to true if the values are not valid\n */\n onMounted(() => {\n // Start date validation\n startDateError.value = props.dateFormData.startDate ? getDateErrorMessage(props.dateFormData.startDate) : null;\n\n // Start time validation is delegated to bento-input-time via events\n\n // End date validation\n endDateError.value = props.dateFormData.endDate ? getDateErrorMessage(props.dateFormData.endDate) : null;\n\n // End time validation is delegated to bento-input-time via events\n });\n\n const onStartDateSelected = (newStartDate: Date) => {\n dateTextInput.startDate = formatDate(newStartDate);\n if (!dateTextInput.startTime) {\n // Set the time to the beginning of the day\n dateTextInput.startTime = dateToTimeInputString(newStartDate);\n }\n\n startDateError.value = null;\n\n if (endDateError.value === 'startDateMustPrecedeEndDate') {\n endDateError.value = null;\n }\n\n emit(DateRangePickerCalendarEvent.START_DATE_SELECTED, newStartDate);\n };\n\n const onEndDateSelected = (newEndDate: Date) => {\n dateTextInput.endDate = formatDate(newEndDate);\n if (!dateTextInput.endTime) {\n // Set the time to the end of the day\n dateTextInput.endTime = dateToTimeInputString(endOfDay(newEndDate));\n }\n\n endDateError.value = null;\n\n if (startDateError.value === 'startDateMustPrecedeEndDate') {\n startDateError.value = null;\n }\n };\n\n const getDate = (keyName: 'startDate' | 'endDate') => {\n const dateProp = props.value?.[keyName];\n if (dateProp) {\n return dateProp;\n }\n\n if (props.dateFormData[keyName] && isValidDate(props.dateFormData[keyName])) {\n return parseDate(props.dateFormData[keyName]);\n }\n\n return undefined;\n };\n\n const validateStartDate = (startDateText: string, alignToGranularity = false) => {\n if (isValidDate(startDateText)) {\n const dateText = startDateText;\n\n startDateError.value = null;\n\n dateTextInput.startDate = dateText;\n\n const startDate = startOfDay(parseDate(dateText));\n internalRangeDate.startDate = setTimeInDateRef(startDate, dateTextInput.startTime);\n\n if (isValidDate(dateTextInput.endDate)) {\n internalRangeDate.endDate = setTimeInDateRef(\n startOfDay(parseDate(dateTextInput.endDate)),\n dateTextInput.endTime\n );\n }\n\n const endDate = getDate('endDate');\n const rangeError = getDateErrorMessage(\n dateText,\n props.allowTimeInput ? internalRangeDate.endDate : endDate,\n 'start',\n props.allowTimeInput ? internalRangeDate.startDate : undefined\n );\n\n if (rangeError) {\n startDateError.value = rangeError;\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n return;\n }\n\n if (endDateError.value === 'startDateMustPrecedeEndDate') {\n endDateError.value = null;\n }\n\n // The user changed the start date, so preserve the existing end date.\n normalizeInternalRange('end', alignToGranularity);\n\n // Resetting internal range date when selecting a custom range through the calendar\n internalRangeDate.range = null;\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: internalRangeDate.startDate,\n endDate: internalRangeDate.endDate,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n } else {\n // Indicate form error\n startDateError.value = getDateErrorMessage(startDateText);\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n };\n\n const validateStartDateDebounced = debounce(validateStartDate, FORM_INPUT_DEBOUNCE_TIME);\n\n const onStartDateInput = (startDateText: string) => {\n // Set the date as string when input through the form\n // Bypassing autoFormat for native month input since it doesn't support YYYY-MM\n dateTextInput.startDate =\n isTouchDevice.value && isMonthVariant.value ? startDateText : autoFormat(startDateText);\n\n if (isTouchDevice.value) {\n if (isMonthVariant.value && startDateText) {\n validateStartDate(formatDate(parseNativeMonthString(startDateText)), true);\n } else if (dateTextInput.startDate) {\n validateStartDate(dateTextInput.startDate);\n } else {\n // on touch devices, skip the any intermediate values e.g. pressing zero first\n startDateError.value = null;\n }\n } else {\n validateStartDateDebounced(dateTextInput.startDate);\n }\n };\n\n const validateEndDate = (endDateText: string, alignToGranularity = false) => {\n if (isValidDate(endDateText)) {\n const dateText = endDateText;\n\n endDateError.value = null;\n\n dateTextInput.endDate = dateText;\n\n // Format date string to Date object\n const endDate = startOfDay(parseDate(dateText));\n internalRangeDate.endDate = setTimeInDateRef(endDate, dateTextInput.endTime);\n if (isValidDate(dateTextInput.startDate)) {\n internalRangeDate.startDate = setTimeInDateRef(\n startOfDay(parseDate(dateTextInput.startDate)),\n dateTextInput.startTime\n );\n }\n\n const startDate = getDate('startDate');\n const rangeError = getDateErrorMessage(\n dateText,\n props.allowTimeInput ? internalRangeDate.startDate : startDate,\n 'end',\n props.allowTimeInput ? internalRangeDate.endDate : undefined\n );\n\n if (rangeError) {\n endDateError.value = rangeError;\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n return;\n }\n\n if (startDateError.value === 'startDateMustPrecedeEndDate') {\n startDateError.value = null;\n }\n\n // The user changed the end date, so preserve the existing start date.\n normalizeInternalRange('start', alignToGranularity);\n\n // Resetting internal range date when selecting a custom range through the calendar\n internalRangeDate.range = null;\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: internalRangeDate.startDate,\n endDate: internalRangeDate.endDate,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n } else {\n // Indicate form error\n endDateError.value = getDateErrorMessage(endDateText);\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n };\n\n const validateEndDateDebounced = debounce(validateEndDate, FORM_INPUT_DEBOUNCE_TIME);\n\n const onEndDateInput = (endDateText: string) => {\n // Set the date as string when input through the form\n // Bypassing autoFormat for native month input since it doesn't support YYYY-MM\n dateTextInput.endDate = isTouchDevice.value && isMonthVariant.value ? endDateText : autoFormat(endDateText);\n\n if (isTouchDevice.value) {\n if (isMonthVariant.value && endDateText) {\n validateEndDate(formatDate(parseNativeMonthString(endDateText)), true);\n } else if (dateTextInput.endDate) {\n validateEndDate(dateTextInput.endDate);\n } else {\n // on touch devices, skip the any intermediate values e.g. pressing zero first\n endDateError.value = null;\n }\n } else {\n validateEndDateDebounced(dateTextInput.endDate);\n }\n };\n\n const onDateInputKeyDown = (event: KeyboardEvent) => {\n onKeyDown(event);\n };\n\n const onStartTimeError = () => {\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n };\n\n const onStartTimeValid = () => {\n const startTimeText = dateTextInput.startTime;\n if (!isValidTime(startTimeText, dateTextInput.startDate)) {\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n return;\n }\n internalRangeDate.startDate = setTimeInDateRef(internalRangeDate.startDate, startTimeText);\n\n // Validate range order with updated time\n if (dateTextInput.startDate && internalRangeDate.endDate) {\n const rangeError = getDateErrorMessage(\n dateTextInput.startDate,\n internalRangeDate.endDate,\n 'start',\n internalRangeDate.startDate\n );\n\n if (rangeError) {\n startDateError.value = rangeError;\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n return;\n }\n }\n\n startDateError.value = null;\n if (endDateError.value === 'startDateMustPrecedeEndDate') {\n endDateError.value = null;\n }\n\n const endDate = getDate('endDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: internalRangeDate.startDate,\n endDate,\n startTime: startTimeText,\n endTime: dateTextInput.endTime ?? props.dateFormData.endTime,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n };\n\n const onEndTimeError = () => {\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n };\n\n const onEndTimeValid = () => {\n const endTimeText = dateTextInput.endTime;\n if (!isValidTime(endTimeText, dateTextInput.endDate)) {\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n return;\n }\n internalRangeDate.endDate = setTimeInDateRef(internalRangeDate.endDate, endTimeText);\n\n // Validate range order with updated time\n if (dateTextInput.endDate && internalRangeDate.startDate) {\n const rangeError = getDateErrorMessage(\n dateTextInput.endDate,\n internalRangeDate.startDate,\n 'end',\n internalRangeDate.endDate\n );\n\n if (rangeError) {\n endDateError.value = rangeError;\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n return;\n }\n }\n\n endDateError.value = null;\n if (startDateError.value === 'startDateMustPrecedeEndDate') {\n startDateError.value = null;\n }\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: internalRangeDate.startDate,\n endDate: internalRangeDate.endDate,\n startTime: dateTextInput.startTime ?? props.dateFormData.startTime,\n endTime: endTimeText,\n });\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n };\n\n const onStartTimeInput = (startTimeText: string) => {\n dateTextInput.startTime = startTimeText;\n };\n\n const onEndTimeInput = (endTimeText: string) => {\n dateTextInput.endTime = endTimeText;\n };\n\n const setInternalRange = (\n startDate: Date,\n endDate: Date,\n granularity?: CalendarGranularityType,\n range?: string\n ) => {\n internalRangeDate.startDate = startDate;\n internalRangeDate.endDate = endDate;\n\n if (granularity) {\n internalRangeDate.granularity = granularity;\n }\n\n if (range) {\n internalRangeDate.range = range;\n }\n };\n\n const onRangeSelectorInput = (newCustomRangeValue: string) => {\n const foundResult = props.quickSelectRanges?.find(({ value }) => value === newCustomRangeValue);\n\n if (foundResult) {\n resetSavedRanges();\n const date = foundResult.data;\n const newEndDate =\n date.endDate || (date.isRelativeToNow ? new Date(Date.now()) : endOfDay(new Date(Date.now())));\n // If the time difference between start and end dates is available,\n // calculating start date dynamically\n const newStartDate =\n date.isRelativeToNow && date.timeDifference\n ? new Date(newEndDate.getTime() - date.timeDifference)\n : date.startDate;\n\n // Set Form input Dates\n dateTextInput.endDate = formatDate(newEndDate);\n dateTextInput.startDate = formatDate(newStartDate);\n\n setInternalRange(newStartDate, newEndDate, null, newCustomRangeValue);\n\n if (props.granularities) {\n internalRangeDate.granularity = date.granularity || defaultGranularity.value;\n }\n\n // Set Form input time to quick select range time\n dateTextInput.startTime = dateToTimeInputString(newStartDate);\n dateTextInput.endTime = dateToTimeInputString(newEndDate);\n\n // Set calendar selection\n internalRangeDate.startDate = newStartDate;\n internalRangeDate.endDate = newEndDate;\n\n if (date.isRelativeToNow) {\n // Store this calculated start and end dates to be used in the selectedRangeSelectorValue logic\n calculatedIsRelativeToNowQuickSelectRanges.value = {\n ...calculatedIsRelativeToNowQuickSelectRanges.value,\n [newCustomRangeValue]: {\n startDate: newStartDate,\n endDate: newEndDate,\n },\n };\n }\n\n // Emit everytime the date range changes\n emit(DateRangePickerCalendarEvent.CUSTOM_RANGE, {\n ...foundResult.data,\n startDate: newStartDate,\n endDate: newEndDate,\n range: foundResult.value,\n });\n }\n };\n\n const onGranularityInput = (value: CalendarGranularityType) => {\n const previousValue = internalRangeDate.granularity;\n\n internalRangeDate.granularity = value;\n\n // Save previously selected range\n if (previousValue) {\n saveRange(previousValue, structuredClone(toRaw(internalRangeDate)));\n }\n\n if (internalRangeDate.startDate && internalRangeDate.endDate) {\n if (savedRanges[value]) {\n setInternalRange(savedRanges[value].startDate, savedRanges[value].endDate, value);\n }\n\n // Keep the most recent endpoint when the new granularity shortens the range.\n normalizeInternalRange('end');\n\n dateTextInput.startDate = formatDate(internalRangeDate.startDate);\n dateTextInput.endDate = formatDate(internalRangeDate.endDate);\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n }\n };\n\n const computedFormContainerClasses = computed(() => ({\n 'b-date-range-picker-calendar__form-container--no-calendars': hasNoCalendars.value || isTouchDevice.value,\n }));\n\n const maxRangeMessage = computed(() => {\n const granularity = selectedGranularity.value;\n const count = granularity?.maxRange || props.maxRange;\n if (!count) {\n return null;\n }\n const key = maxRangeMessageKeyMap[granularity?.type ?? 'daily'];\n return tc(key, count, { count });\n });\n</script>\n\n<script lang=\"ts\">\n /**\n * Calendar for range dates. Contains the logic to handle the range forms.\n *\n * @example\n * import DatePickerCalendarRange from './date-range-picker-calendar.vue';\n *\n * export default {\n * components: { DatePickerCalendarRange },\n * template: `\n * <date-range-picker-calendar\n * :value=\"{startDate: new Date(), endDate: new Date() }\"\n * :first-day-of-week=\"BentoDatePickerFirstDayOfWeek.MONDAY\"\n * :is-date-disabled=\"(date: Date) => boolean\"\n * :number-of-months=\"2\"\n * @input=\"({ startDate, endDate }) => void\"\n * />\n * `\n * }\n */\n export default {\n name: 'date-range-picker-calendar',\n i18n: { messages },\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-picker-calendar.scss\" />\n","import { computed, reactive, watch } from 'vue';\nimport { useI18n } from '@/utils/ts/i18n';\nimport { type UseDateDisplayText } from './use-date-range-picker-calendar-text.types';\nimport { type CalendarRangeDateValue } from '@/internal';\nimport { type DateRangePickerCalendarFormData } from '../components/date-range-picker-calendar/date-range-picker-calendar.types';\nimport { getQuarter } from 'date-fns/getQuarter';\nimport { getYear } from 'date-fns/getYear';\nimport { isSameQuarter } from 'date-fns/isSameQuarter';\nimport { dateToTimeInputString, getDateTimeFormatter } from '@/utils/ts/format-date';\nimport { useDateInputFormatter } from '@/composables/use-date-input-formatter/use-date-input-formatter';\nimport messages from '../messages.json';\n\ntype MessageSchema = (typeof messages)['en-US'];\n\n/**\n * Composable that sets and formats the date to be displayed in the input box of a Date Range Picker\n * @param {Ref<Date>} option.datePickerValue Ref to the datePickerValue set in the DateRangePicker component\n * @param {Ref<boolean>} option.isDateIncorrect Indicates if the date is correct or not\n * @param {Ref<DateRangePickerCalendarRangeSelectorItems>} option.quickSelectRanges Ref to the quick select date ranges (optional)\n * @param {?Ref<boolean>} option.isMonthVariant Indicates if the date range picker has variant \"month\"\n */\nexport const useDateRangePickerCalendarText: UseDateDisplayText<CalendarRangeDateValue> = ({\n datePickerValue,\n isDateIncorrect,\n quickSelectRanges,\n isMonthVariant,\n withTimeInput,\n placeholder,\n}) => {\n const { locale, t } = useI18n<{ message: MessageSchema }>({ messages });\n const { dateToInputDateString } = useDateInputFormatter();\n\n const isValidDate = date => !!date && !isNaN(date.getTime());\n\n // Handle the form input text\n const textInputDisplayValue = reactive<DateRangePickerCalendarFormData>({\n startDate: null,\n endDate: null,\n startTime: null,\n endTime: null,\n });\n\n watch(\n datePickerValue,\n newDatePickerValue => {\n textInputDisplayValue.startDate = dateToInputDateString(newDatePickerValue?.startDate);\n textInputDisplayValue.endDate = dateToInputDateString(newDatePickerValue?.endDate);\n textInputDisplayValue.startTime = dateToTimeInputString(newDatePickerValue?.startDate);\n textInputDisplayValue.endTime = dateToTimeInputString(newDatePickerValue?.endDate);\n },\n { immediate: true }\n );\n\n const dateDisplayValue = computed(() => {\n // Display incorrect date when there's an error with the input\n if (isDateIncorrect.value) {\n return `${textInputDisplayValue.startDate || ''} - ${textInputDisplayValue.endDate || ''}`;\n }\n\n // Display \"Select a date\" when there's no date selected or input\n if (!datePickerValue.value || (!datePickerValue.value.startDate && !datePickerValue.value.endDate)) {\n return placeholder?.value || (t('selectDateRange') as string);\n }\n\n if (quickSelectRanges.value?.length) {\n const customRangeSelected = quickSelectRanges.value.find(({ value }) => {\n return value === datePickerValue.value?.range;\n });\n\n if (customRangeSelected) {\n return customRangeSelected.label;\n }\n }\n\n if (datePickerValue.value.granularity === 'quarterly') {\n const { startDate, endDate } = datePickerValue.value;\n const startQuarter = t('quarter', { quarter: getQuarter(startDate), year: getYear(startDate) });\n\n // If a single quarter is selected, show it only (e.g.: `Q2 2024`)\n if (isSameQuarter(startDate, endDate)) {\n return startQuarter;\n }\n\n const endQuarter = t('quarter', { quarter: getQuarter(endDate), year: getYear(endDate) });\n return `${startQuarter} - ${endQuarter}`;\n }\n\n if (!isValidDate(datePickerValue.value.startDate) || !isValidDate(datePickerValue.value.endDate)) {\n return `${textInputDisplayValue.startDate || ''} - ${textInputDisplayValue.endDate || ''}`;\n }\n\n let formatRangeOptions: Intl.DateTimeFormatOptions = isMonthVariant?.value\n ? { month: 'long', year: 'numeric' }\n : { month: 'short', day: '2-digit', year: 'numeric' };\n\n if (withTimeInput.value) {\n formatRangeOptions = {\n ...formatRangeOptions,\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false,\n };\n }\n\n return getDateTimeFormatter(locale.value, formatRangeOptions).formatRange(\n datePickerValue.value.startDate,\n datePickerValue.value.endDate\n );\n });\n\n const formatTextInputDisplayValue = () => '';\n\n return {\n // Values\n dateDisplayValue,\n textInputDisplayValue,\n\n // Methods\n formatTextInputDisplayValue,\n };\n};\n","<!-- TODO: Remove aria props as these are part of JSX elements /vue/types/jsx.d.ts -->\n<!-- eslint-disable vue/attribute-hyphenation -->\n<template>\n <div v-bento-click-outside-directive=\"closeDateRangePicker\" class=\"b-date-range-picker\">\n <!-- Label -->\n <field-label\n v-if=\"label\"\n :id=\"labelId\"\n :label=\"label\"\n :tooltip-text=\"tooltipText\"\n :optional=\"optional\"\n :required=\"required\"\n />\n\n <!-- Input -->\n <div ref=\"inputWrapperRef\" @keydown.enter=\"onEnterPressedOverInput\">\n <dropdown-input-default\n ref=\"inputContainerRef\"\n always-combobox-is-input\n :ariaControls=\"datePickerContainerId\"\n :ariaExpanded=\"isDateRangePickerOpen\"\n :aria-labelledby=\"dropdownInputAriaLabelledBy\"\n :aria-describedby=\"ariaDescribedBy\"\n :aria-required=\"required\"\n :disabled=\"disabled\"\n :is-invalid=\"!!errorMessage || shouldDisplayError\"\n :open=\"isDateRangePickerOpen\"\n :display-value=\"localDateDisplayValue\"\n :readonly=\"isReadOnly\"\n @open=\"openDateRangePicker\"\n @clear=\"clearDateRangePickerValue\"\n @close=\"closeDateRangePicker\"\n />\n </div>\n\n <!-- Error Messages -->\n <error-message\n v-if=\"shouldDisplayError\"\n :id=\"dateErrorId\"\n :error-message=\"t('invalidDateFormat')\"\n class=\"b-date-range-picker__error-message\"\n />\n <error-message\n v-if=\"!!errorMessage\"\n :id=\"errorId\"\n :error-message=\"errorMessage\"\n class=\"b-date-range-picker__error-message\"\n />\n\n <!-- Description -->\n <bento-typography\n v-if=\"description\"\n :id=\"descriptionId\"\n class=\"b-date-range-picker__description\"\n :class=\"descriptionConditionalClasses\"\n el=\"span\"\n >\n {{ description }}\n </bento-typography>\n\n <!-- Calendar container -->\n <bento-popover\n v-if=\"inputContainerRef\"\n :id=\"datePickerContainerId\"\n class=\"b-date-range-picker__container\"\n :open=\"isDateRangePickerOpen\"\n :target-element=\"inputContainerRef\"\n :aria-label=\"popoverAriaLabel\"\n position=\"bottom-start\"\n fallback-strategy=\"initialPlacement\"\n without-space\n fit-content\n :match-width=\"shouldMatchPopoverWidth\"\n trap-all\n overflow-visible\n :trap-all-options=\"trapAllOptions\"\n @keydown.esc.native=\"closeDateRangePicker\"\n >\n <date-range-picker-calendar\n :allow-time-input=\"withTimeInput\"\n :quick-select-ranges=\"adjustedQuickSelectRanges\"\n :value=\"selectedDate\"\n :first-day-of-week=\"resolvedFirstDayOfWeek\"\n :granularities=\"granularities\"\n :is-date-disabled=\"isDateDisabled\"\n :max-range=\"maxRange\"\n :min=\"min\"\n :max=\"max\"\n :number-of-months=\"computedNumberOfMonths\"\n :show-end-date-on-open=\"showEndDateOnOpen\"\n :date-form-data=\"displayedTextInputValue\"\n :variant=\"variant\"\n :year-range=\"yearRange\"\n @custom-range=\"onRangeSelectorInput\"\n @input=\"onDateRangePickerInput\"\n @error=\"onDateRangePickerError\"\n @form-date=\"onDateRangePickerFormDateInputUpdate\"\n >\n <template #actions>\n <bento-divider />\n\n <div class=\"b-date-range-picker__footer\">\n <bento-button-actions\n :actions=\"rangePickerButtonActions\"\n :layout=\"BentoButtonActionsLayout.SPACE_BETWEEN\"\n />\n </div>\n </template>\n </date-range-picker-calendar>\n </bento-popover>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, type HTMLAttributes, onMounted, ref, toRaw, toRef, useAttrs, watch } from 'vue';\n import { useBreakpoints, useElementSize } from '@vueuse/core';\n\n // Components\n import { BentoButtonActions, BentoButtonActionsLayout } from '../button';\n import { BentoDivider } from '@/components/divider';\n import { BentoPopover } from '@/components/popover';\n import { BentoTypography } from '../typography';\n import { DateRangePickerCalendar } from './components/date-range-picker-calendar';\n import { DropdownInputDefault } from '@/components/dropdown/components';\n import { ErrorMessage, FieldLabel } from '@/internal';\n\n // Utils\n import { generateUid } from '@/utils/ts/generate-uid';\n import { useI18n } from '@/utils/ts/i18n';\n import { dateToTimeInputString } from '@/utils/ts/format-date';\n import { useDateInputFormatter } from '@/composables/use-date-input-formatter/use-date-input-formatter';\n\n // Composables\n import { useDateRangePickerCalendarText } from './composables/use-date-range-picker-calendar-text';\n import { useFirstDayOfWeek, useFormLayoutFieldLoading } from '@/composables';\n\n // Directives\n import { BentoClickOutsideDirective as vBentoClickOutsideDirective } from '@/directives';\n\n // Types\n import {\n type BentoDateRangePickerEmits,\n type BentoDateRangePickerProps,\n type BentoDateRangePickerValue,\n } from './date-range-picker.types';\n import type { MaybeElement } from '@/types/elements';\n import {\n type DateRangePickerCalendarFormData,\n type DateRangePickerCalendarRangeSelectorItem,\n } from './components/date-range-picker-calendar/date-range-picker-calendar.types';\n\n import messages from './messages.json';\n import { useFormFieldEmits } from '@/utils/ts/form-field/form-field';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const emit = defineEmits([\"update:model-value\"]);\n const props = defineProps({\n description: { default: undefined },\n disabled: { type: Boolean, default: false },\n errorMessage: { default: null },\n label: { default: undefined },\n optional: { type: Boolean, default: false },\n placeholder: { default: null },\n readonly: { type: Boolean, default: false },\n required: { type: Boolean, default: false },\n tooltipText: { default: null },\n allowTimeInput: { type: Boolean },\n firstDayOfWeek: { default: undefined },\n granularities: null,\n isDateDisabled: { default: undefined },\n showEndDateOnOpen: { type: Boolean, default: false },\n quickSelectRanges: { default: undefined },\n maxRange: { default: null },\n min: { default: null },\n max: { default: null },\n numberOfMonths: { default: undefined },\n modelValue: { default: null },\n variant: { default: undefined },\n yearRange: { default: undefined }\n});\n const attrs: HTMLAttributes = useAttrs();\n\n const { t } = useI18n<{ message: MessageSchema }>({ messages });\n const { dateToInputDateString } = useDateInputFormatter();\n const datePickerContainerId = generateUid('bento-date-range-picker-container');\n const labelId = generateUid('bento-date-range-picker-label');\n const descriptionId = generateUid('bento-date-range-picker-description');\n const errorId = generateUid('bento-date-range-picker-error');\n const dateErrorId = generateUid('bento-date-range-picker-date-error');\n const popoverAriaLabel = computed(() => props.label || t('dateRangePicker', { name: datePickerContainerId }));\n const { resolvedFirstDayOfWeek } = useFirstDayOfWeek(toRef(props, 'firstDayOfWeek'));\n const breakpoints = useBreakpoints({\n none: 0,\n one: 710, // width of date range picker with one panes\n two: 1030, // width of date range picker with two panes\n three: 1290, // width of date range picker with three panes\n });\n const computedNumberOfMonths = computed(() => {\n const activeBreakpoint = breakpoints.active().value;\n const breakpointToCalendarPanesMap = {\n none: 0,\n one: 1,\n two: 2,\n };\n\n if (activeBreakpoint in breakpointToCalendarPanesMap) {\n const maxPanes =\n breakpointToCalendarPanesMap[activeBreakpoint as keyof typeof breakpointToCalendarPanesMap];\n // If numberOfMonths is not provided, use the max panes for the breakpoint.\n // Otherwise, use the smaller of the two values.\n return props.numberOfMonths === undefined ? maxPanes : Math.min(props.numberOfMonths, maxPanes);\n }\n\n // Default case for 'three' and larger breakpoints, respect user-provided numberOfMonths.\n return props.numberOfMonths;\n });\n\n const adjustedQuickSelectRanges = computed<Array<DateRangePickerCalendarRangeSelectorItem>>(() => {\n return (\n props?.quickSelectRanges &&\n props.quickSelectRanges.map((range: DateRangePickerCalendarRangeSelectorItem) => {\n const timeDiff = !range.data.endDate\n ? new Date(Date.now()).getTime() - range.data.startDate.getTime()\n : undefined;\n return {\n ...range,\n data: {\n ...range.data,\n // Adding timeDifference to calculate an up-to-date endDate on range selection\n timeDifference: timeDiff,\n },\n };\n })\n );\n });\n\n const dropdownInputAriaLabelledBy = computed(() => (props.label ? labelId : (attrs?.['aria-labelledby'] ?? null)));\n\n const isDateIncorrect = ref(false);\n const inputContainerRef = ref<MaybeElement>(null);\n const inputWrapperRef = ref<HTMLElement | null>(null);\n const isDateRangePickerOpen = ref(false);\n\n const { width: inputWrapperWidth } = useElementSize(inputWrapperRef);\n const { isReadOnly } = useFormLayoutFieldLoading(toRef(props, 'readonly'));\n const { emitValue } = useFormFieldEmits(emit);\n\n watch(\n () => props.disabled,\n () => {\n // Close date picker popover if it's opened when it's disabled\n if (props.disabled && isDateRangePickerOpen.value) {\n isDateRangePickerOpen.value = false;\n }\n }\n );\n\n const shouldMatchPopoverWidth = computed(\n () => computedNumberOfMonths.value === 0 && inputWrapperWidth.value > 0 && inputWrapperWidth.value < 332 // size of date range picker form\n );\n\n const internalModelValue = computed(() => props.modelValue);\n\n const shouldDisplayError = computed(() => !isApplyDisabled.value && isDateIncorrect.value);\n\n const descriptionConditionalClasses = computed(() => ({\n 'b-date-range-picker__description--error': !!props.errorMessage || shouldDisplayError.value,\n }));\n\n const isMonthVariant = computed(() => props.variant === 'month');\n const withTimeInput = computed(() => props.allowTimeInput && props.variant !== 'month');\n\n const { dateDisplayValue, textInputDisplayValue, formatTextInputDisplayValue } = useDateRangePickerCalendarText({\n datePickerValue: internalModelValue,\n isDateIncorrect,\n quickSelectRanges: adjustedQuickSelectRanges,\n isMonthVariant,\n withTimeInput,\n placeholder: toRef(props, 'placeholder'),\n });\n\n const ariaDescribedBy = computed(\n () =>\n `${props.description ? descriptionId : ''} ${props.errorMessage ? errorId : ''} ${\n isDateIncorrect.value ? dateErrorId : ''\n }`.trim() || null\n );\n\n const closeDateRangePicker = () => {\n isDateRangePickerOpen.value = false;\n };\n\n const openDateRangePicker = () => {\n isDateRangePickerOpen.value = true;\n formatTextInputDisplayValue();\n };\n\n const localDateDisplayValue = ref(dateDisplayValue.value);\n const localTextInputDisplayValue = ref<DateRangePickerCalendarFormData>(\n // textInputDisplayValue is a reactive object\n structuredClone(toRaw(textInputDisplayValue))\n );\n const selectedDate = ref<BentoDateRangePickerValue>(props.modelValue);\n const isApplyDisabled = ref(true);\n\n const displayedTextInputValue = ref<DateRangePickerCalendarFormData>(localTextInputDisplayValue.value);\n\n const trapAllOptions = {\n allowOutsideClick: true,\n };\n\n onMounted(() => {\n if (\n props.granularities &&\n props.variant !== 'month' &&\n props.granularities.find(({ type }) => type === 'quarterly')\n ) {\n throw new Error('Quarterly granularity is only supported by BentoDateRangePicker with variant: \"month\"');\n }\n });\n\n // Sync the local draft display state back to the committed model value.\n // Since `displayedTextInputValue` is a mutable ref, it must point to the new cloned draft object.\n const syncLocalDisplayStateFromCommittedValue = () => {\n localDateDisplayValue.value = dateDisplayValue.value;\n localTextInputDisplayValue.value = structuredClone(toRaw(textInputDisplayValue));\n displayedTextInputValue.value = localTextInputDisplayValue.value;\n selectedDate.value = internalModelValue.value;\n };\n\n // On update for the model value we need to update all the locally stored data\n watch(\n () => props.modelValue,\n () => {\n syncLocalDisplayStateFromCommittedValue();\n }\n );\n\n const cancelDateRangePicker = () => {\n // Reset local date range picker state\n syncLocalDisplayStateFromCommittedValue();\n isDateIncorrect.value = false;\n isApplyDisabled.value = true;\n\n closeDateRangePicker();\n };\n\n const rangePickerButtonActions = computed(() => [\n {\n title: t('apply'),\n event: () => {\n emitValue(selectedDate.value);\n closeDateRangePicker();\n\n isApplyDisabled.value = true;\n },\n disabled: isApplyDisabled.value,\n },\n {\n title: t('cancel'),\n event: cancelDateRangePicker,\n },\n ]);\n\n watch(selectedDate, date => {\n isApplyDisabled.value = isDateIncorrect.value || date === internalModelValue.value;\n });\n\n const onDateRangePickerInput = (selectedRange: BentoDateRangePickerValue) => {\n // Reset the errors when the date is correct\n isDateIncorrect.value = false;\n\n displayedTextInputValue.value.startDate = dateToInputDateString(selectedRange.startDate);\n displayedTextInputValue.value.endDate = dateToInputDateString(selectedRange.endDate);\n displayedTextInputValue.value.startTime = dateToTimeInputString(selectedRange.startDate);\n displayedTextInputValue.value.endTime = dateToTimeInputString(selectedRange.endDate);\n\n selectedDate.value = selectedRange;\n };\n\n const clearDateRangePickerValue = async () => {\n if (isDateIncorrect.value) {\n isDateIncorrect.value = false;\n }\n\n selectedDate.value = null;\n };\n\n const onEnterPressedOverInput = () => {\n // open the datepicker\n if (!isDateRangePickerOpen.value) {\n isDateRangePickerOpen.value = true;\n\n return;\n }\n\n // Close the date picker if the date is correct and it is open\n if (!isDateIncorrect.value) {\n isDateRangePickerOpen.value = false;\n }\n };\n\n const onDateRangePickerFormDateInputUpdate = (dateFormDate: DateRangePickerCalendarFormData) => {\n isDateIncorrect.value = false;\n\n if (dateFormDate.startTime) {\n displayedTextInputValue.value.startTime = dateFormDate.startTime;\n }\n\n if (dateFormDate.endTime) {\n displayedTextInputValue.value.endTime = dateFormDate.endTime;\n }\n };\n\n const onDateRangePickerError = dateTextInput => {\n isDateIncorrect.value = true;\n displayedTextInputValue.value.startDate = dateTextInput.startDate;\n displayedTextInputValue.value.endDate = dateTextInput.endDate;\n\n // Remove current date range selection\n selectedDate.value = { startDate: null, endDate: null };\n };\n\n const onRangeSelectorInput = (quickSelectRanges?: BentoDateRangePickerValue) => {\n if (quickSelectRanges) {\n displayedTextInputValue.value.startDate = dateToInputDateString(quickSelectRanges.startDate);\n displayedTextInputValue.value.endDate = dateToInputDateString(quickSelectRanges.endDate);\n displayedTextInputValue.value.startTime = dateToTimeInputString(quickSelectRanges.startDate);\n displayedTextInputValue.value.endTime = dateToTimeInputString(quickSelectRanges.endDate);\n\n selectedDate.value = quickSelectRanges;\n }\n };\n</script>\n\n<script lang=\"ts\">\n /**\n * Date range picker selector.\n *\n * @example\n * import { BentoDateRangePicker } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDateRangePicker },\n * template: `\n * <bento-date-range-picker\n * label=\"Label\"\n * description=\"Supporting text\"\n * required\n * optional\n * disabled\n * v-model=\"selectedDate\"\n * />\n * `,\n * setup() {\n * const selectedDate = ref(new Date()); // reactive({ startDate: new Date(), endDate: new Date() })\n * return {\n * selectedDate,\n * }\n * }\n * }\n */\n export default {\n i18n: { messages },\n name: 'bento-date-range-picker',\n model: { prop: 'modelValue', event: 'update:model-value' },\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-picker.scss\" />\n"],"names":["getYear","date","options","toDate","isEqual","leftDate","rightDate","isSameQuarter","laterDate","earlierDate","dateLeft_","dateRight_","normalizeDates","startOfQuarter","startOfSecond","date_","isSameSecond","isToday","isSameDay","constructFrom","constructNow","__default__$2","resolvedDateProps","computed","props","resolvedTimeProps","useGranularMinMaxDate","firstDayOfWeek","minimumDate","maximumDate","granularity","min","startOfDay","max","endOfDay","startOfMin","startOfWeek","addDays","endOfWeek","endOfMax","subDays","startOfMonth","addMonths","endOfMonth","subMonths","addQuarters","endOfQuarter","subQuarters","useGranularityMemory","savedRanges","reactive","type","range","DateRangePickerCalendarEvent","DateRangePickerCalendarEvent2","__default__$1","messages$1","FORM_INPUT_DEBOUNCE_TIME","RANGE_SELECTOR_CUSTOM_RANGE_KEY","maxRangeMessageKeyMap","slots","useSlots","hasSlot","useHasSlot","t","tc","useI18n","isTouchDevice","useTouchDevice","dateFormat","isFormatValid","parseDate","onKeyDown","autoFormat","formatDateUtil","useDateInputFormatter","calculatedIsRelativeToNowQuickSelectRanges","ref","defaultGranularity","hasNoCalendars","internalRangeDate","selectedRangeSelectorValue","value","data","newlyCalculatedQuickSelectDates","quickSelectRangeDefaultItems","selectedGranularity","granularityItems","disabled","getGranularCalendarLimits","computedMinMax","normalizeRange","useGranularityAdjustments","saveRange","resetSavedRanges","formatDate","dateToFormat","normalizeInternalRange","fixedEndpoint","alignToGranularity","normalizedRange","dateTextInput","startDateError","endDateError","startDateErrorText","endDateErrorText","startSharedError","endSharedError","getDateErrorMessage","dateText","counterpartDate","role","resolvedDateTime","dayDate","current","setMilliseconds","counterpart","isValidTime","timeText","isTimeAllowed","isValidDate","dateToCheckWithTime","setTimeInDateObject","isValidTimeString","isMonthVariant","formatNativeDate","dateToNativeMonthString","dateToNativeDateString","nativeStartDate","nativeEndDate","dateInputType","startDateValue","endDateValue","setTimeInDateRef","time","onDateInput","selectedRange","dateToTimeInputString","emit","onMounted","onStartDateSelected","newStartDate","onEndDateSelected","newEndDate","getDate","keyName","dateProp","validateStartDate","startDateText","startDate","endDate","rangeError","validateStartDateDebounced","debounce","onStartDateInput","parseNativeMonthString","validateEndDate","endDateText","validateEndDateDebounced","onEndDateInput","onDateInputKeyDown","event","onStartTimeError","onStartTimeValid","startTimeText","onEndTimeError","onEndTimeValid","endTimeText","onStartTimeInput","onEndTimeInput","setInternalRange","onRangeSelectorInput","newCustomRangeValue","foundResult","onGranularityInput","previousValue","toRaw","computedFormContainerClasses","maxRangeMessage","count","key","useDateRangePickerCalendarText","datePickerValue","isDateIncorrect","quickSelectRanges","withTimeInput","placeholder","locale","dateToInputDateString","textInputDisplayValue","watch","newDatePickerValue","customRangeSelected","startQuarter","getQuarter","endQuarter","formatRangeOptions","getDateTimeFormatter","__default__","messages","attrs","useAttrs","datePickerContainerId","generateUid","labelId","descriptionId","errorId","dateErrorId","popoverAriaLabel","resolvedFirstDayOfWeek","useFirstDayOfWeek","toRef","breakpoints","useBreakpoints","computedNumberOfMonths","activeBreakpoint","breakpointToCalendarPanesMap","maxPanes","adjustedQuickSelectRanges","timeDiff","dropdownInputAriaLabelledBy","inputContainerRef","inputWrapperRef","isDateRangePickerOpen","inputWrapperWidth","useElementSize","isReadOnly","useFormLayoutFieldLoading","emitValue","useFormFieldEmits","shouldMatchPopoverWidth","internalModelValue","shouldDisplayError","isApplyDisabled","descriptionConditionalClasses","dateDisplayValue","formatTextInputDisplayValue","ariaDescribedBy","closeDateRangePicker","openDateRangePicker","localDateDisplayValue","localTextInputDisplayValue","selectedDate","displayedTextInputValue","trapAllOptions","syncLocalDisplayStateFromCommittedValue","cancelDateRangePicker","rangePickerButtonActions","dateFormDate"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draggable.COHEAPF5.js","sources":["../../src/components/draggable/composables/use-track-keyboard-user/use-track-keyboard-user.ts","../../src/components/draggable/draggable.vue"],"sourcesContent":["import { createGlobalState, useEventListener } from '@vueuse/core';\nimport { ref } from 'vue';\n\nexport const useTrackKeyboardUser = createGlobalState(() => {\n // 1. Define this OUTSIDE the setup function so it acts as a global singleton\n const isKeyboardUser = ref(false);\n\n if (typeof window !== 'undefined') {\n // Switch to keyboard mode on Tab\n useEventListener(\n window,\n 'keydown',\n e => {\n if (e.key === 'Tab') {\n isKeyboardUser.value = true;\n }\n },\n { capture: true }\n );\n\n // Switch back to mouse mode on click/touch\n useEventListener(\n window,\n 'mousedown',\n () => {\n isKeyboardUser.value = false;\n },\n { capture: true }\n );\n\n useEventListener(\n window,\n 'touchstart',\n () => {\n isKeyboardUser.value = false;\n },\n { capture: true, passive: true }\n );\n\n useEventListener(window, 'blur', () => {\n isKeyboardUser.value = false;\n });\n }\n\n return { isKeyboardUser };\n});\n","<template>\n <component :is=\"el\" ref=\"containerRef\">\n <slot\n v-for=\"(item, index) of items\"\n :item=\"item\"\n :index=\"index\"\n :move-up=\"() => moveItemUp(index)\"\n :move-right=\"() => moveItemRight(index)\"\n :move-down=\"() => moveItemDown(index)\"\n :move-left=\"() => moveItemLeft(index)\"\n :move-top=\"() => moveItemTop(index)\"\n :move-bottom=\"() => moveItemBottom(index)\"\n :disabled-menus=\"disabledMenuItems(index)\"\n name=\"default\"\n ></slot>\n <div class=\"b-draggable__announcement\" role=\"status\" aria-live=\"polite\">\n {{ announcementMessage }}\n </div>\n </component>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, nextTick, ref, watch } from 'vue';\n import type {\n BentoDraggableEmits,\n BentoDraggableItems,\n BentoDraggableOptions,\n BentoDraggableProps,\n BentoDraggableSortableEvent,\n } from './draggable.types';\n import { useBentoDraggable } from './composables/use-bento-draggable/use-bento-draggable';\n import { useDraggableAnnouncement } from './composables/use-draggable-announcement';\n import { useTrackKeyboardUser } from './composables/use-track-keyboard-user';\n import { useI18n } from '@/utils/ts/i18n';\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const ALL_CHILDREN_EXCEPT_SCREEN_READER_ELEMENTS = '>:not(.b-draggable__announcement)';\n\n const props = defineProps({\n announcement: { default: '' },\n disableAutoSort: { type: Boolean, default: false },\n el: { default: 'div' },\n items: { default: () => [] },\n options: { default: () => ({}) }\n});\n\n const emit = defineEmits([\"update:items\"]);\n\n /**\n * Reference to the container of the draggable elements.\n */\n const containerRef = ref<HTMLElement | null>(null);\n /**\n * Indicates if there is an element being dragged inside the container.\n */\n const isDragging = ref<boolean>(false);\n\n /**\n * Internal copy of items used to track position changes for focus restoration.\n */\n const internalItems = ref<BentoDraggableItems>([]);\n\n /**\n * Tracks the item being moved via keyboard so focus can be restored to the correct element.\n */\n const lastMovedItem = ref<BentoDraggableItems[number] | null>(null);\n\n const computedOptions = computed<BentoDraggableOptions>(() => {\n if (!containerRef.value) {\n return {};\n }\n\n return {\n ...props.options,\n draggable: props.options?.draggable ?? ALL_CHILDREN_EXCEPT_SCREEN_READER_ELEMENTS,\n onStart: (event: BentoDraggableSortableEvent) => {\n isDragging.value = true;\n\n if (props.options?.onStart) {\n props.options?.onStart(event);\n }\n },\n onEnd: (event: BentoDraggableSortableEvent) => {\n // This is a hack to move the event to the end of the event queue.\n // cf this issue: https://github.com/SortableJS/Sortable/issues/1184\n setTimeout(() => {\n isDragging.value = false;\n\n if (props.options?.onEnd) {\n props.options?.onEnd(event);\n }\n });\n },\n onSort: (event: BentoDraggableSortableEvent) => {\n // Always execute the user's custom onSort callback if provided\n if (props.options?.onSort) {\n props.options.onSort(event);\n return;\n }\n\n // Automatically sync the v-model unless the user explicitly disabled it\n if (!props.disableAutoSort) {\n const { oldIndex, newIndex, from, to } = event;\n\n if (\n from === to &&\n from === containerRef.value &&\n oldIndex !== undefined &&\n newIndex !== undefined\n ) {\n moveItem(oldIndex, newIndex);\n }\n }\n },\n };\n });\n\n /**\n * Handle reordering announcements for screen readers.\n */\n const { announcementMessage, announce } = useDraggableAnnouncement();\n\n const { t } = useI18n<{ message: MessageSchema }>({ messages });\n\n const { draggableElement } = useBentoDraggable(containerRef, computedOptions);\n\n // When moving items between sibling `bento-draggable`, the item may be removed, causing the DOM to be destroyed and temporarily lose focus\n // This is an alternative to query element `:focus-within` as the `:focus-within` will be gone until the other `bento-draggable` adds it into the list\n const { isKeyboardUser } = useTrackKeyboardUser();\n\n /**\n * Focuses the draggable handle button at the given index.\n * Waits for the next tick to ensure the DOM has been updated before focusing.\n *\n * @param index - The index of the item whose handle should receive focus.\n */\n const focus = async (index: number) => {\n await nextTick();\n\n if (index !== -1 && containerRef.value) {\n const itemElement = containerRef.value.children[index] as HTMLElement;\n const button = itemElement?.querySelector<HTMLButtonElement>('.b-draggable-handle button');\n await nextTick();\n button?.focus();\n }\n };\n\n /**\n * Moves an item from one position to another within the list,\n * emits the updated list, and announces the change for screen readers.\n *\n * @param indexOrigin - The current index of the item to move.\n * @param indexTarget - The desired index to move the item to.\n */\n const moveItem = async (indexOrigin: number, indexTarget: number) => {\n if (\n indexOrigin < 0 ||\n indexTarget < 0 ||\n indexOrigin >= props.items.length ||\n indexTarget >= props.items.length ||\n indexOrigin === indexTarget\n ) {\n return;\n }\n\n const newList = Array.from(props.items as BentoDraggableItems);\n const [removed] = newList.splice(indexOrigin, 1);\n newList.splice(indexTarget, 0, removed);\n\n lastMovedItem.value = removed;\n\n // Occasionally, there may be race conditions where the index is out-of-date due to the fast drag-and-drop or\n // other async operations like onEnd > setTimeout.\n // Filtering out null/undefined values ensures the list remains valid.\n emit('update:items', newList.filter(Boolean));\n\n const itemLabel = removed.label;\n\n const message =\n props?.announcement ||\n t('youHaveMovedFromPositionToPosition', {\n itemLabel,\n indexOrigin: indexOrigin + 1,\n indexTarget: indexTarget + 1,\n total: props.items.length,\n });\n\n if (props.announcement !== 'disabled') {\n announce(message);\n }\n };\n\n const moveItemUp = (index: number) => moveItem(index, index - 1);\n\n const moveItemDown = (index: number) => moveItem(index, index + 1);\n\n const moveItemLeft = (index: number) => moveItem(index, index - 1);\n\n const moveItemRight = (index: number) => moveItem(index, index + 1);\n\n const moveItemTop = (index: number) => moveItem(index, 0);\n\n const moveItemBottom = (index: number) => moveItem(index, props.items.length - 1);\n\n /**\n * Returns a pre-calculated disabled menus object for the current item.\n */\n const disabledMenuItems = (index: number) => {\n return {\n up: index === 0,\n top: index === 0,\n down: index === props.items.length - 1,\n bottom: index === props.items.length - 1,\n left: true,\n right: true,\n };\n };\n\n /**\n * Watch for items changes and restore focus automatically\n */\n watch(\n () => props.items,\n async newItems => {\n if (!newItems) {\n return;\n }\n\n if (isKeyboardUser.value && newItems.length > 0 && internalItems.value.length > 0) {\n if (lastMovedItem.value) {\n // Within-list reorder: focus the moved item at its new position\n const movedItemIndex = newItems.indexOf(lastMovedItem.value);\n\n if (movedItemIndex !== -1) {\n await focus(movedItemIndex);\n }\n\n lastMovedItem.value = null;\n } else if (newItems.length > internalItems.value.length) {\n // Cross-list addition: focus the newly added item\n const newItemIndex = newItems.findIndex(item => !internalItems.value.includes(item));\n\n if (newItemIndex !== -1) {\n await focus(newItemIndex);\n }\n }\n }\n\n internalItems.value = [...newItems];\n },\n { deep: true, immediate: true }\n );\n\n defineExpose({\n /**\n * A ref to the container DOM element.\n */\n containerRef,\n /**\n * The underlying SortableJS instance, which provides methods like `toArray()`, `sort()`, and `destroy()`.\n */\n draggableElement,\n /**\n * A boolean ref that is `true` when an item is being dragged.\n */\n isDragging,\n /**\n * Announces a message to screen reader users via the live region.\n */\n announce,\n /**\n * Moves an item from one index to another and emits the updated list.\n */\n moveItem,\n /**\n * Programmatically focuses the draggable handle button at the given index.\n */\n focus,\n });\n</script>\n\n<script lang=\"ts\">\n /**\n * Drag and drop container that transforms a list of items into draggable elements.\n * The library is based on SortableJS.\n * @see {@link https://github.com/SortableJS/Sortable#readme | SortableJS documentation}\n *\n * @example\n * import { BentoDraggable, BentoDraggableHandle, type BentoDraggableEvents } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDraggable, BentoDraggableHandle },\n * template: `\n * <bento-draggable\n * v-model=\"items\"\n * condensed\n * :options=\"{\n * group: 'nested',\n * animation: 150\n * }\"\n * >\n * <template #default=\"{ item, index, moveUp, moveDown }\">\n * <div :key=\"item.id\">\n * <bento-draggable-handle\n * :label=\"item.label\"\n * @move-up=\"moveUp\"\n * @move-down=\"moveDown\"\n * />\n * </div>\n * </template>\n * </bento-draggable>\n * `,\n * setup () {\n * const items = ref([\n * { id: '1', label: 'Item 1' },\n * { id: '2', label: 'Item 2' }\n * ]);\n * return {\n * items,\n * }\n * }\n * }\n */\n\n export default {\n name: 'bento-draggable',\n model: { prop: 'items', event: 'update:items' },\n i18n: { messages },\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./draggable.scss\" />\n"],"names":["useTrackKeyboardUser","createGlobalState","isKeyboardUser","ref","useEventListener","e","__default__","messages","ALL_CHILDREN_EXCEPT_SCREEN_READER_ELEMENTS","containerRef","isDragging","internalItems","lastMovedItem","computedOptions","computed","props","event","oldIndex","newIndex","from","to","moveItem","announcementMessage","announce","useDraggableAnnouncement","t","useI18n","draggableElement","useBentoDraggable","focus","index","nextTick","button","indexOrigin","indexTarget","newList","removed","emit","itemLabel","message","moveItemUp","moveItemDown","moveItemLeft","moveItemRight","moveItemTop","moveItemBottom","disabledMenuItems","watch","newItems","movedItemIndex","newItemIndex","item","expose"],"mappings":";;;;;;AAGO,MAAAA,IAAAC,EAAA,MAAA;AAEH,QAAAC,IAAAC,EAAA,EAAA;AAEA,SAAA,OAAA,SAAA,QAEIC;AAAA,IAAA;AAAA,IACI;AAAA,IACA,CAAAC,MAAA;AAEI,MAAAA,EAAA,QAAA,UACIH,EAAA,QAAA;AAAA,IACJ;AAAA,IACJ,EAAA,SAAA,GAAA;AAAA,EACgB,GAIpBE;AAAA,IAAA;AAAA,IACI;AAAA,IACA,MAAA;AAEI,MAAAF,EAAA,QAAA;AAAA,IAAuB;AAAA,IAC3B,EAAA,SAAA,GAAA;AAAA,EACgB,GAGpBE;AAAA,IAAA;AAAA,IACI;AAAA,IACA,MAAA;AAEI,MAAAF,EAAA,QAAA;AAAA,IAAuB;AAAA,IAC3B,EAAA,SAAA,IAAA,SAAA,GAAA;AAAA,EAC+B,GAGnCE,EAAA,QAAA,QAAA,MAAA;AACI,IAAAF,EAAA,QAAA;AAAA,EAAuB,CAAA,IAI/B,EAAA,gBAAAA,EAAA;AACJ,CAAA;;;;;;;;;;;;GCyRII,IAAA;AAAA,EAAe,MAAA;AAAA,EACL,OAAA,EAAA,MAAA,SAAA,OAAA,eAAA;AAAA,EACwC,MAAA,EAAA,UAAAC,EAAA;AAElD;;;;;;;;;;;iBApSAC,IAAA,qCAeAC,IAAAN,EAAA,IAAA,GAIAO,IAAAP,EAAA,EAAA,GAKAQ,IAAAR,EAAA,CAAA,CAAA,GAKAS,IAAAT,EAAA,IAAA,GAEAU,IAAAC,EAAA,MACIL,EAAA,QAIA;AAAA,MAAO,GAAAM,EAAA;AAAA,MACM,WAAAA,EAAA,SAAA,aAAAP;AAAA,MAC8B,SAAA,CAAAQ,MAAA;AAEnC,QAAAN,EAAA,QAAA,IAEAK,EAAA,SAAA,WACIA,EAAA,SAAA,QAAAC,CAAA;AAAA,MACJ;AAAA,MACJ,OAAA,CAAAA,MAAA;AAII,mBAAA,MAAA;AACI,UAAAN,EAAA,QAAA,IAEAK,EAAA,SAAA,SACIA,EAAA,SAAA,MAAAC,CAAA;AAAA,QACJ,CAAA;AAAA,MACH;AAAA,MACL,QAAA,CAAAA,MAAA;AAGI,YAAAD,EAAA,SAAA,QAAA;AACI,UAAAA,EAAA,QAAA,OAAAC,CAAA;AACA;AAAA,QAAA;AAIJ,YAAA,CAAAD,EAAA,iBAAA;AACI,gBAAA,EAAA,UAAAE,GAAA,UAAAC,GAAA,MAAAC,GAAA,IAAAC,EAAA,IAAAJ;AAEA,UAAAG,MAAAC,KAAAD,MAAAV,EAAA,SAAAQ,MAAA,UAAAC,MAAA,UAMIG,EAAAJ,GAAAC,CAAA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,IA5CA,CAAA,CA6CJ,GAMJ,EAAA,qBAAAI,GAAA,UAAAC,EAAA,IAAAC,EAAA,GAEA,EAAA,GAAAC,EAAA,IAAAC,EAAA,GAEA,EAAA,kBAAAC,EAAA,IAAAC,EAAAnB,GAAAI,CAAA,GAIA,EAAA,gBAAAX,EAAA,IAAAF,EAAA,GAQA6B,IAAA,OAAAC,MAAA;AAGI,UAFA,MAAAC,EAAA,GAEAD,MAAA,MAAArB,EAAA,OAAA;AAEI,cAAAuB,IADAvB,EAAA,MAAA,SAAAqB,CAAA,GACA,cAAA,4BAAA;AACA,cAAAC,EAAA,GACAC,GAAA,MAAA;AAAA,MAAc;AAAA,IAClB,GAUJX,IAAA,OAAAY,GAAAC,MAAA;AACI,UAAAD,IAAA,KAAAC,IAAA,KAAAD,KAAAlB,EAAA,MAAA,UAAAmB,KAAAnB,EAAA,MAAA,UAAAkB,MAAAC;AAOI;AAGJ,YAAAC,IAAA,MAAA,KAAApB,EAAA,KAAA,GACA,CAAAqB,CAAA,IAAAD,EAAA,OAAAF,GAAA,CAAA;AACA,MAAAE,EAAA,OAAAD,GAAA,GAAAE,CAAA,GAEAxB,EAAA,QAAAwB,GAKAC,EAAA,gBAAAF,EAAA,OAAA,OAAA,CAAA;AAEA,YAAAG,IAAAF,EAAA,OAEAG,IAAAxB,GAAA,gBAAAU,EAAA,sCAAA;AAAA,QAE4C,WAAAa;AAAA,QACpC,aAAAL,IAAA;AAAA,QAC2B,aAAAC,IAAA;AAAA,QACA,OAAAnB,EAAA,MAAA;AAAA,MACR,CAAA;AAG3B,MAAAA,EAAA,iBAAA,cACIQ,EAAAgB,CAAA;AAAA,IACJ,GAGJC,IAAA,CAAAV,MAAAT,EAAAS,GAAAA,IAAA,CAAA,GAEAW,IAAA,CAAAX,MAAAT,EAAAS,GAAAA,IAAA,CAAA,GAEAY,IAAA,CAAAZ,MAAAT,EAAAS,GAAAA,IAAA,CAAA,GAEAa,IAAA,CAAAb,MAAAT,EAAAS,GAAAA,IAAA,CAAA,GAEAc,IAAA,CAAAd,MAAAT,EAAAS,GAAA,CAAA,GAEAe,IAAA,CAAAf,MAAAT,EAAAS,GAAAf,EAAA,MAAA,SAAA,CAAA,GAKA+B,IAAA,CAAAhB,OACI;AAAA,MAAO,IAAAA,MAAA;AAAA,MACW,KAAAA,MAAA;AAAA,MACC,MAAAA,MAAAf,EAAA,MAAA,SAAA;AAAA,MACsB,QAAAe,MAAAf,EAAA,MAAA,SAAA;AAAA,MACE,MAAA;AAAA,MACjC,OAAA;AAAA,IACC;AAOf,WAAAgC;AAAA,MAAA,MAAAhC,EAAA;AAAA,MACgB,OAAAiC,MAAA;AAER,YAAAA,GAIA;AAAA,cAAA9C,EAAA,SAAA8C,EAAA,SAAA,KAAArC,EAAA,MAAA,SAAA;AACI,gBAAAC,EAAA,OAAA;AAEI,oBAAAqC,IAAAD,EAAA,QAAApC,EAAA,KAAA;AAEA,cAAAqC,MAAA,MACI,MAAApB,EAAAoB,CAAA,GAGJrC,EAAA,QAAA;AAAA,YAAsB,WAAAoC,EAAA,SAAArC,EAAA,MAAA,QAAA;AAGtB,oBAAAuC,IAAAF,EAAA,UAAA,CAAAG,MAAA,CAAAxC,EAAA,MAAA,SAAAwC,CAAA,CAAA;AAEA,cAAAD,MAAA,MACI,MAAArB,EAAAqB,CAAA;AAAA,YACJ;AAAA;AAIR,UAAAvC,EAAA,QAAA,CAAA,GAAAqC,CAAA;AAAA;AAAA,MAAkC;AAAA,MACtC,EAAA,MAAA,IAAA,WAAA,GAAA;AAAA,IAC8B,GAGlCI,EAAA;AAAA;AAAA;AAAA;AAAA,MAAa,cAAA3C;AAAA;AAAA;AAAA;AAAA,MAIT,kBAAAkB;AAAA;AAAA;AAAA;AAAA,MAIA,YAAAjB;AAAA;AAAA;AAAA;AAAA,MAIA,UAAAa;AAAA;AAAA;AAAA;AAAA,MAIA,UAAAF;AAAA;AAAA;AAAA;AAAA,MAIA,OAAAQ;AAAA,IAIA,CAAA;;;;;;;;;;;;;;;;;"}
|