@adyen/bento-vue3 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@types/components/accordion/accordion.keys.d.ts +1 -0
- package/dist/@types/components/accordion/accordion.types.d.ts +24 -0
- package/dist/@types/components/accordion/accordion.vue.d.ts +57 -0
- package/dist/@types/components/accordion/components/accordion-item.vue.d.ts +35 -0
- package/dist/@types/components/accordion/index.d.ts +3 -0
- package/dist/@types/components/alert/alert.types.d.ts +6 -0
- package/dist/@types/components/alert/alert.vue.d.ts +47 -0
- package/dist/@types/components/alert/index.d.ts +2 -0
- package/dist/@types/components/avatar-image/avatar-image.types.d.ts +10 -0
- package/dist/@types/components/avatar-image/avatar-image.vue.d.ts +55 -0
- package/dist/@types/components/avatar-image/index.d.ts +2 -0
- package/dist/@types/components/badge/badge.types.d.ts +7 -0
- package/dist/@types/components/badge/badge.vue.d.ts +32 -0
- package/dist/@types/components/badge/index.d.ts +2 -0
- package/dist/@types/components/button/button.demo.d.ts +6 -0
- package/dist/@types/components/button/button.types.d.ts +11 -0
- package/dist/@types/components/button/button.vue.d.ts +68 -0
- package/dist/@types/components/button/components/button-actions/button-actions.types.d.ts +28 -0
- package/dist/@types/components/button/components/button-actions/button-actions.vue.d.ts +33 -0
- package/dist/@types/components/button/components/button-actions/index.d.ts +2 -0
- package/dist/@types/components/button/components/button-group.vue.d.ts +9 -0
- package/dist/@types/components/button/components/loading-button/index.d.ts +2 -0
- package/dist/@types/components/button/components/loading-button/loading-button.types.d.ts +9 -0
- package/dist/@types/components/button/components/loading-button/loading-button.vue.d.ts +55 -0
- package/dist/@types/components/button/index.d.ts +5 -0
- package/dist/@types/components/card/card.types.d.ts +8 -0
- package/dist/@types/components/card/card.vue.d.ts +113 -0
- package/dist/@types/components/card/index.d.ts +2 -0
- package/dist/@types/components/checkbox/checkbox.types.d.ts +7 -0
- package/dist/@types/components/checkbox/checkbox.vue.d.ts +80 -0
- package/dist/@types/components/checkbox/components/checkbox-group/checkbox-group.types.d.ts +12 -0
- package/dist/@types/components/checkbox/components/checkbox-group/checkbox-group.vue.d.ts +67 -0
- package/dist/@types/components/checkbox/components/checkbox-group/index.d.ts +2 -0
- package/dist/@types/components/checkbox/index.d.ts +3 -0
- package/dist/@types/components/click-outside/click-outside.d.ts +13 -0
- package/dist/@types/components/click-outside/index.d.ts +1 -0
- package/dist/@types/components/controls-group/controls-group.vue.d.ts +49 -0
- package/dist/@types/components/controls-group/index.d.ts +1 -0
- package/dist/@types/components/country/composables/index.d.ts +4 -0
- package/dist/@types/components/country/composables/useCountryCapital/useCountryCapital.d.ts +3 -0
- package/dist/@types/components/country/composables/useCountryFlag.d.ts +2 -0
- package/dist/@types/components/country/composables/useCountryName/useCountryName.d.ts +2 -0
- package/dist/@types/components/country/composables/useCountryPhoneCode/useCountryPhoneCode.d.ts +3 -0
- package/dist/@types/components/country/country.types.d.ts +260 -0
- package/dist/@types/components/country/country.vue.d.ts +42 -0
- package/dist/@types/components/country/index.d.ts +3 -0
- package/dist/@types/components/currency/currency.types.d.ts +170 -0
- package/dist/@types/components/currency/currency.vue.d.ts +32 -0
- package/dist/@types/components/currency/index.d.ts +2 -0
- package/dist/@types/components/data-grid/components/data-grid-columns/data-grid-columns-types.d.ts +17 -0
- package/dist/@types/components/data-grid/components/data-grid-columns/data-grid-columns.vue.d.ts +159 -0
- package/dist/@types/components/data-grid/components/data-grid-config-settings/components/data-grid-config-settings-column-row/data-grid-config-settings-column-row.vue.d.ts +38 -0
- package/dist/@types/components/data-grid/components/data-grid-config-settings/data-grid-config-settings.types.d.ts +4 -0
- package/dist/@types/components/data-grid/components/data-grid-config-settings/data-grid-config-settings.vue.d.ts +66 -0
- package/dist/@types/components/data-grid/components/index.d.ts +2 -0
- package/dist/@types/components/data-grid/composables/index.d.ts +6 -0
- package/dist/@types/components/data-grid/composables/useCalculateColumnWidth/useCalculateColumnWidth.d.ts +31 -0
- package/dist/@types/components/data-grid/composables/useCalculateColumnWidth/useCalculateColumnWidth.types.d.ts +10 -0
- package/dist/@types/components/data-grid/composables/useColumnReorderer/useColumnReorderer.d.ts +64 -0
- package/dist/@types/components/data-grid/composables/useConfigSettings/useConfigSettings.d.ts +69 -0
- package/dist/@types/components/data-grid/composables/useResizer.d.ts +10 -0
- package/dist/@types/components/data-grid/composables/useSelector.d.ts +11 -0
- package/dist/@types/components/data-grid/composables/useSorter.d.ts +9 -0
- package/dist/@types/components/data-grid/data-grid.types.d.ts +68 -0
- package/dist/@types/components/data-grid/data-grid.vue.d.ts +477 -0
- package/dist/@types/components/data-grid/index.d.ts +2 -0
- package/dist/@types/components/date/date.types.d.ts +18 -0
- package/dist/@types/components/date/date.vue.d.ts +30 -0
- package/dist/@types/components/date/index.d.ts +2 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar/components/date-picker-calendar-day/__test__/date-picker-calendar-day-stub.vue.d.ts +45 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar/components/date-picker-calendar-day/date-picker-calendar-day.types.d.ts +20 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar/components/date-picker-calendar-day/date-picker-calendar-day.vue.d.ts +52 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar/components/date-picker-calendar-day/index.d.ts +2 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar/date-picker-calendar.types.d.ts +18 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar/date-picker-calendar.vue.d.ts +92 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar/index.d.ts +2 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar-pane/composables/use-range-pane.d.ts +2 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar-pane/composables/use-single-pane.d.ts +2 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar-pane/date-picker-calendar-pane.types.d.ts +21 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar-pane/date-picker-calendar-pane.vue.d.ts +198 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar-pane/index.d.ts +1 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar-range/date-picker-calendar-range.types.d.ts +5 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar-range/date-picker-calendar-range.vue.d.ts +78 -0
- package/dist/@types/components/date-picker/components/date-picker-calendar-range/index.d.ts +1 -0
- package/dist/@types/components/date-picker/composables/use-date-picker-range-calendar-text.d.ts +2 -0
- package/dist/@types/components/date-picker/composables/use-date-picker-single-calendar-text.d.ts +2 -0
- package/dist/@types/components/date-picker/date-picker.types.d.ts +24 -0
- package/dist/@types/components/date-picker/date-picker.vue.d.ts +150 -0
- package/dist/@types/components/date-picker/index.d.ts +2 -0
- package/dist/@types/components/divider/divider.vue.d.ts +6 -0
- package/dist/@types/components/divider/index.d.ts +1 -0
- package/dist/@types/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.types.d.ts +55 -0
- package/dist/@types/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.vue.d.ts +159 -0
- package/dist/@types/components/dropdown/components/dropdown-default-textbox/dropdown-default-textbox.vue.d.ts +146 -0
- package/dist/@types/components/dropdown/components/dropdown-options-container/dropdown-options-container.vue.d.ts +129 -0
- package/dist/@types/components/dropdown/components/dropdown-options-container/index.d.ts +1 -0
- package/dist/@types/components/dropdown/components/dropdown-small-textbox/dropdown-small-textbox.vue.d.ts +118 -0
- package/dist/@types/components/dropdown/components/index.d.ts +3 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-avatar/dropdown-avatar.types.d.ts +5 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-avatar/dropdown-avatar.vue.d.ts +152 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-country/composables/useCountryItems.d.ts +5 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-country/dropdown-country.types.d.ts +7 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-country/dropdown-country.vue.d.ts +161 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-currency/dropdown-currency.types.d.ts +6 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-currency/dropdown-currency.vue.d.ts +147 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-payment-method/dropdown-payment-method.types.d.ts +6 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-payment-method/dropdown-payment-method.vue.d.ts +147 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-tag/dropdown-tag.types.d.ts +6 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-tag/dropdown-tag.vue.d.ts +152 -0
- package/dist/@types/components/dropdown/dropdown.types.d.ts +4 -0
- package/dist/@types/components/dropdown/dropdown.vue.d.ts +165 -0
- package/dist/@types/components/dropdown/index.d.ts +6 -0
- package/dist/@types/components/filter-bar/components/all-filters-modal/all-filters-modal.types.d.ts +3 -0
- package/dist/@types/components/filter-bar/components/all-filters-modal/all-filters-modal.vue.d.ts +1058 -0
- package/dist/@types/components/filter-bar/components/all-filters-modal/components/all-filters-modal-button/all-filters-modal-button.vue.d.ts +46 -0
- package/dist/@types/components/filter-bar/components/base-filter/base-filter.types.d.ts +7 -0
- package/dist/@types/components/filter-bar/components/base-filter/base-filter.vue.d.ts +142 -0
- package/dist/@types/components/filter-bar/components/base-filter/components/filter-bar-filter-button/filter-bar-filter-button.vue.d.ts +55 -0
- package/dist/@types/components/filter-bar/components/base-filter/components/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/base-filter/composables/use-base-filter.d.ts +6 -0
- package/dist/@types/components/filter-bar/components/base-filter/index.d.ts +2 -0
- package/dist/@types/components/filter-bar/components/base-filter-button/base-filter-button.vue.d.ts +62 -0
- package/dist/@types/components/filter-bar/components/boolean-filter/boolean-filter.vue.d.ts +67 -0
- package/dist/@types/components/filter-bar/components/boolean-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/date-filter/date-filter.vue.d.ts +143 -0
- package/dist/@types/components/filter-bar/components/date-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/date-range-filter/date-range-filter.vue.d.ts +227 -0
- package/dist/@types/components/filter-bar/components/date-range-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/index.d.ts +12 -0
- package/dist/@types/components/filter-bar/components/input-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/input-filter/input-filter.vue.d.ts +64 -0
- package/dist/@types/components/filter-bar/components/range-filter/range-filter.vue.d.ts +68 -0
- package/dist/@types/components/filter-bar/components/select-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/select-filter/select-filter.vue.d.ts +76 -0
- package/dist/@types/components/filter-bar/components/select-filter/variants/select-avatar-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/select-filter/variants/select-avatar-filter/select-avatar-filter.vue.d.ts +63 -0
- package/dist/@types/components/filter-bar/components/select-filter/variants/select-country-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/select-filter/variants/select-country-filter/select-country-filter.vue.d.ts +78 -0
- package/dist/@types/components/filter-bar/components/select-filter/variants/select-currency-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/select-filter/variants/select-currency-filter/select-currency-filter.vue.d.ts +63 -0
- package/dist/@types/components/filter-bar/components/select-filter/variants/select-payment-method-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/select-filter/variants/select-payment-method-filter/select-payment-method-filter.vue.d.ts +63 -0
- package/dist/@types/components/filter-bar/components/select-filter/variants/select-tag-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/select-filter/variants/select-tag-filter/select-tag-filter.vue.d.ts +81 -0
- package/dist/@types/components/filter-bar/filter-bar.types.d.ts +83 -0
- package/dist/@types/components/filter-bar/filter-bar.vue.d.ts +42 -0
- package/dist/@types/components/filter-bar/index.d.ts +2 -0
- package/dist/@types/components/focus-trap/focus-trap.types.d.ts +18 -0
- package/dist/@types/components/focus-trap/focus-trap.vue.d.ts +39 -0
- package/dist/@types/components/focus-trap/index.d.ts +1 -0
- package/dist/@types/components/header/header.types.d.ts +4 -0
- package/dist/@types/components/header/header.vue.d.ts +66 -0
- package/dist/@types/components/header/index.d.ts +1 -0
- package/dist/@types/components/info-icon/index.d.ts +1 -0
- package/dist/@types/components/info-icon/info-icon.vue.d.ts +24 -0
- package/dist/@types/components/input-field/index.d.ts +2 -0
- package/dist/@types/components/input-field/input-field.types.d.ts +37 -0
- package/dist/@types/components/input-field/input-field.vue.d.ts +138 -0
- package/dist/@types/components/internal/avatar/avatar.vue.d.ts +40 -0
- package/dist/@types/components/internal/avatar/index.d.ts +1 -0
- package/dist/@types/components/internal/base-button/base-button.types.d.ts +15 -0
- package/dist/@types/components/internal/base-button/base-button.vue.d.ts +47 -0
- package/dist/@types/components/internal/base-button/index.d.ts +2 -0
- package/dist/@types/components/internal/copy/copy.types.d.ts +5 -0
- package/dist/@types/components/internal/copy/copy.vue.d.ts +31 -0
- package/dist/@types/components/internal/copy/index.d.ts +1 -0
- package/dist/@types/components/internal/grid-layout/grid-layout.types.d.ts +11 -0
- package/dist/@types/components/internal/grid-layout/grid-layout.vue.d.ts +34 -0
- package/dist/@types/components/internal/grid-layout/index.d.ts +2 -0
- package/dist/@types/components/internal/index.d.ts +4 -0
- package/dist/@types/components/internal/listbox/components/listbox-multi-select/components/listbox-multi-select-options.vue.d.ts +37 -0
- package/dist/@types/components/internal/listbox/components/listbox-multi-select/index.d.ts +1 -0
- package/dist/@types/components/internal/listbox/components/listbox-multi-select/listbox-multi-select.vue.d.ts +54 -0
- package/dist/@types/components/internal/listbox/components/listbox-option/index.d.ts +1 -0
- package/dist/@types/components/internal/listbox/components/listbox-option/listbox-option.vue.d.ts +29 -0
- package/dist/@types/components/internal/listbox/components/listbox-option-tag/index.d.ts +1 -0
- package/dist/@types/components/internal/listbox/components/listbox-option-tag/listbox-option-tag.vue.d.ts +19 -0
- package/dist/@types/components/internal/listbox/components/listbox-single-select-option/index.d.ts +1 -0
- package/dist/@types/components/internal/listbox/components/listbox-single-select-option/listbox-single-select-option.vue.d.ts +40 -0
- package/dist/@types/components/internal/listbox/index.d.ts +2 -0
- package/dist/@types/components/internal/listbox/listbox.vue.d.ts +81 -0
- package/dist/@types/components/link/index.d.ts +2 -0
- package/dist/@types/components/link/link.types.d.ts +4 -0
- package/dist/@types/components/link/link.vue.d.ts +41 -0
- package/dist/@types/components/loading-indicator/index.d.ts +2 -0
- package/dist/@types/components/loading-indicator/loading-indicator.types.d.ts +4 -0
- package/dist/@types/components/loading-indicator/loading-indicator.vue.d.ts +39 -0
- package/dist/@types/components/menu/components/index.d.ts +2 -0
- package/dist/@types/components/menu/components/menu-item/index.d.ts +2 -0
- package/dist/@types/components/menu/components/menu-item/menu-item.types.d.ts +12 -0
- package/dist/@types/components/menu/components/menu-item/menu-item.vue.d.ts +96 -0
- package/dist/@types/components/menu/components/menu-item-list/index.d.ts +1 -0
- package/dist/@types/components/menu/components/menu-item-list/menu-item-list.vue.d.ts +59 -0
- package/dist/@types/components/menu/components/menu-list-container/menu-list-container.vue.d.ts +2 -0
- package/dist/@types/components/menu/components/sub-menu-item-list/sub-menu-item-list.vue.d.ts +55 -0
- package/dist/@types/components/menu/index.d.ts +2 -0
- package/dist/@types/components/menu/menu.types.d.ts +12 -0
- package/dist/@types/components/menu/menu.vue.d.ts +92 -0
- package/dist/@types/components/modal/components/base-modal/__mocks__/base-modal.vue.d.ts +123 -0
- package/dist/@types/components/modal/components/base-modal/base-modal.vue.d.ts +128 -0
- package/dist/@types/components/modal/components/base-modal/index.d.ts +1 -0
- package/dist/@types/components/modal/components/index.d.ts +3 -0
- package/dist/@types/components/modal/components/modal-default/modal-default.vue.d.ts +128 -0
- package/dist/@types/components/modal/components/modal-dialog/modal-dialog.vue.d.ts +81 -0
- package/dist/@types/components/modal/index.d.ts +2 -0
- package/dist/@types/components/modal/modal.types.d.ts +27 -0
- package/dist/@types/components/modal/modal.vue.d.ts +149 -0
- package/dist/@types/components/pagination/components/pagination-context/pagination-context.vue.d.ts +32 -0
- package/dist/@types/components/pagination/components/pagination-controls/pagination-controls.vue.d.ts +39 -0
- package/dist/@types/components/pagination/components/pagination-results-per-page/pagination-results-per-page.vue.d.ts +35 -0
- package/dist/@types/components/pagination/index.d.ts +1 -0
- package/dist/@types/components/pagination/pagination.vue.d.ts +71 -0
- package/dist/@types/components/payment-method/composables/index.d.ts +1 -0
- package/dist/@types/components/payment-method/composables/usePaymentIcon.d.ts +3 -0
- package/dist/@types/components/payment-method/index.d.ts +2 -0
- package/dist/@types/components/payment-method/payment-method.types.d.ts +1079 -0
- package/dist/@types/components/payment-method/payment-method.vue.d.ts +40 -0
- package/dist/@types/components/popover/components/popover-dismiss-button/popover-dismiss-button.vue.d.ts +20 -0
- package/dist/@types/components/popover/components/popover-image/index.d.ts +1 -0
- package/dist/@types/components/popover/components/popover-image/popover-image.vue.d.ts +20 -0
- package/dist/@types/components/popover/components/popover-title/popover-title.vue.d.ts +28 -0
- package/dist/@types/components/popover/index.d.ts +2 -0
- package/dist/@types/components/popover/popover.types.d.ts +19 -0
- package/dist/@types/components/popover/popover.vue.d.ts +170 -0
- package/dist/@types/components/popper-container/index.d.ts +2 -0
- package/dist/@types/components/popper-container/popper-container.types.d.ts +54 -0
- package/dist/@types/components/popper-container/popper-container.utils.d.ts +23 -0
- package/dist/@types/components/popper-container/popper-container.vue.d.ts +134 -0
- package/dist/@types/components/radio-group/components/radio-button/radio-button.types.d.ts +4 -0
- package/dist/@types/components/radio-group/components/radio-button/radio-button.vue.d.ts +58 -0
- package/dist/@types/components/radio-group/index.d.ts +2 -0
- package/dist/@types/components/radio-group/radio-group.types.d.ts +12 -0
- package/dist/@types/components/radio-group/radio-group.vue.d.ts +76 -0
- package/dist/@types/components/search-bar/index.d.ts +3 -0
- package/dist/@types/components/search-bar/search-bar.types.d.ts +15 -0
- package/dist/@types/components/search-bar/search-bar.vue.d.ts +278 -0
- package/dist/@types/components/search-bar/useSearchBarDataFilter.d.ts +3 -0
- package/dist/@types/components/segmented-control/components/segmented-option.vue.d.ts +59 -0
- package/dist/@types/components/segmented-control/index.d.ts +3 -0
- package/dist/@types/components/segmented-control/segmented-control.keys.d.ts +1 -0
- package/dist/@types/components/segmented-control/segmented-control.types.d.ts +15 -0
- package/dist/@types/components/segmented-control/segmented-control.vue.d.ts +42 -0
- package/dist/@types/components/status/index.d.ts +2 -0
- package/dist/@types/components/status/status.types.d.ts +8 -0
- package/dist/@types/components/status/status.vue.d.ts +23 -0
- package/dist/@types/components/structured-list/components/structered-list-item/structured-list-item.vue.d.ts +46 -0
- package/dist/@types/components/structured-list/index.d.ts +2 -0
- package/dist/@types/components/structured-list/structured-list.vue.d.ts +2 -0
- package/dist/@types/components/summary-grid/components/summary-grid-item/index.d.ts +2 -0
- package/dist/@types/components/summary-grid/components/summary-grid-item/summary-grid-item.types.d.ts +7 -0
- package/dist/@types/components/summary-grid/components/summary-grid-item/summary-grid-item.vue.d.ts +119 -0
- package/dist/@types/components/summary-grid/components/summary-grid-item-amount/summary-grid-item-amount.vue.d.ts +89 -0
- package/dist/@types/components/summary-grid/components/summary-grid-item-custom/summary-grid-item-custom.vue.d.ts +40 -0
- package/dist/@types/components/summary-grid/components/summary-grid-item-numeric/summary-grid-item-numeric.vue.d.ts +80 -0
- package/dist/@types/components/summary-grid/components/summary-grid-item-percentage/summary-grid-item-percentage.vue.d.ts +80 -0
- package/dist/@types/components/summary-grid/components/summary-grid-item-text/summary-grid-item-text.vue.d.ts +51 -0
- package/dist/@types/components/summary-grid/index.d.ts +7 -0
- package/dist/@types/components/summary-grid/summary-grid.types.d.ts +16 -0
- package/dist/@types/components/summary-grid/summary-grid.vue.d.ts +19 -0
- package/dist/@types/components/tabs/components/tab.types.d.ts +5 -0
- package/dist/@types/components/tabs/components/tab.vue.d.ts +25 -0
- package/dist/@types/components/tabs/index.d.ts +2 -0
- package/dist/@types/components/tabs/tabs.keys.d.ts +2 -0
- package/dist/@types/components/tabs/tabs.types.d.ts +4 -0
- package/dist/@types/components/tabs/tabs.utils.d.ts +3 -0
- package/dist/@types/components/tabs/tabs.vue.d.ts +14 -0
- package/dist/@types/components/tag/index.d.ts +2 -0
- package/dist/@types/components/tag/tag.types.d.ts +8 -0
- package/dist/@types/components/tag/tag.vue.d.ts +47 -0
- package/dist/@types/components/textarea/index.d.ts +1 -0
- package/dist/@types/components/textarea/textarea.vue.d.ts +43 -0
- package/dist/@types/components/toast/components/toast-item/index.d.ts +2 -0
- package/dist/@types/components/toast/components/toast-item/toast-item.types.d.ts +9 -0
- package/dist/@types/components/toast/components/toast-item/toast-item.vue.d.ts +33 -0
- package/dist/@types/components/toast/index.d.ts +2 -0
- package/dist/@types/components/toast/toast.vue.d.ts +13 -0
- package/dist/@types/components/toggle/index.d.ts +2 -0
- package/dist/@types/components/toggle/toggle.types.d.ts +3 -0
- package/dist/@types/components/toggle/toggle.vue.d.ts +60 -0
- package/dist/@types/components/tooltip/tooltip.vue.d.ts +319 -0
- package/dist/@types/components/typography/index.d.ts +2 -0
- package/dist/@types/components/typography/typography.types.d.ts +27 -0
- package/dist/@types/components/typography/typography.vue.d.ts +78 -0
- package/dist/@types/components.d.ts +119 -0
- package/dist/@types/composables/index.d.ts +3 -0
- package/dist/@types/composables/initials.d.ts +3 -0
- package/dist/@types/composables/use-checkbox-select-all/use-checkbox-select-all.d.ts +8 -0
- package/dist/@types/composables/use-default-slot-validator/use-default-slot-validator.d.ts +1 -0
- package/dist/@types/composables/useDynamicImport.d.ts +2 -0
- package/dist/@types/directives/click-outside/directive.d.ts +6 -0
- package/dist/@types/directives/click-outside/index.d.ts +1 -0
- package/dist/@types/directives/click-outside/on-click-outside.d.ts +3 -0
- package/dist/@types/directives/click-outside/types.d.ts +8 -0
- package/dist/@types/directives/click-outside/useEventListener/index.d.ts +7 -0
- package/dist/@types/directives/click-outside/useEventListener/types.d.ts +6 -0
- package/dist/@types/directives/click-outside/utils.d.ts +6 -0
- package/dist/@types/directives/index.d.ts +3 -0
- package/dist/@types/directives/keyboard-navigation/index.d.ts +2 -0
- package/dist/@types/directives/keyboard-navigation/keyboard-navigation.d.ts +2 -0
- package/dist/@types/directives/keyboard-navigation/keyboard-navigation.types.d.ts +7 -0
- package/dist/@types/directives/tooltip/index.d.ts +2 -0
- package/dist/@types/directives/tooltip/tooltip.d.ts +9 -0
- package/dist/@types/directives/tooltip/tooltip.types.d.ts +17 -0
- package/dist/@types/index.d.ts +38 -0
- package/dist/@types/install.d.ts +11 -0
- package/dist/@types/plugins/toastController.d.ts +12 -0
- package/dist/@types/types/date-format.d.ts +14 -0
- package/dist/@types/types/elements.d.ts +7 -0
- package/dist/@types/types/functions.d.ts +2 -0
- package/dist/@types/types/index.d.ts +8 -0
- package/dist/@types/types/label-position.d.ts +4 -0
- package/dist/@types/types/listbox.d.ts +11 -0
- package/dist/@types/types/maybe-ref.d.ts +2 -0
- package/dist/@types/types/omit-strict.d.ts +1 -0
- package/dist/@types/types/prop-types.d.ts +1 -0
- package/dist/@types/types/refs.d.ts +4 -0
- package/dist/@types/types/utils-events.d.ts +12 -0
- package/dist/@types/utils/ts/aria-label.d.ts +9 -0
- package/dist/@types/utils/ts/currency/countries-list.d.ts +4 -0
- package/dist/@types/utils/ts/currency/currency.d.ts +6 -0
- package/dist/@types/utils/ts/currency/currency.types.d.ts +24 -0
- package/dist/@types/utils/ts/debounce/debounce.d.ts +1 -0
- package/dist/@types/utils/ts/debounce/index.d.ts +1 -0
- package/dist/@types/utils/ts/deep-merge/deep-merge.d.ts +1 -0
- package/dist/@types/utils/ts/deep-merge/index.d.ts +1 -0
- package/dist/@types/utils/ts/events.d.ts +2 -0
- package/dist/@types/utils/ts/focus-trap.utils.d.ts +8 -0
- package/dist/@types/utils/ts/hasSlot.d.ts +2 -0
- package/dist/@types/utils/ts/i18n.d.ts +32 -0
- package/dist/@types/utils/ts/inject-css.d.ts +2 -0
- package/dist/@types/utils/ts/resize.d.ts +1 -0
- package/dist/@types/utils/ts/storybook.d.ts +8 -0
- package/dist/@types/utils/ts/toastController.d.ts +2 -0
- package/dist/@types/utils/ts/truncate.d.ts +1 -0
- package/dist/@types/utils/ts/unique-id.d.ts +1 -0
- package/dist/fonts/Inter-Bold.otf +0 -0
- package/dist/fonts/Inter-Bold.ttf +0 -0
- package/dist/fonts/Inter-Bold.woff +0 -0
- package/dist/fonts/Inter-Bold.woff2 +0 -0
- package/dist/fonts/Inter-ExtraBold.otf +0 -0
- package/dist/fonts/Inter-ExtraBold.ttf +0 -0
- package/dist/fonts/Inter-ExtraBold.woff +0 -0
- package/dist/fonts/Inter-ExtraBold.woff2 +0 -0
- package/dist/fonts/Inter-ExtraLight.otf +0 -0
- package/dist/fonts/Inter-ExtraLight.ttf +0 -0
- package/dist/fonts/Inter-ExtraLight.woff +0 -0
- package/dist/fonts/Inter-ExtraLight.woff2 +0 -0
- package/dist/fonts/Inter-Italic.woff +0 -0
- package/dist/fonts/Inter-Italic.woff2 +0 -0
- package/dist/fonts/Inter-Light.otf +0 -0
- package/dist/fonts/Inter-Light.ttf +0 -0
- package/dist/fonts/Inter-Light.woff +0 -0
- package/dist/fonts/Inter-Light.woff2 +0 -0
- package/dist/fonts/Inter-Medium.otf +0 -0
- package/dist/fonts/Inter-Medium.ttf +0 -0
- package/dist/fonts/Inter-Medium.woff +0 -0
- package/dist/fonts/Inter-Medium.woff2 +0 -0
- package/dist/fonts/Inter-Regular.otf +0 -0
- package/dist/fonts/Inter-Regular.ttf +0 -0
- package/dist/fonts/Inter-Regular.woff +0 -0
- package/dist/fonts/Inter-Regular.woff2 +0 -0
- package/dist/fonts/Inter-SemiBold.otf +0 -0
- package/dist/fonts/Inter-SemiBold.ttf +0 -0
- package/dist/fonts/Inter-SemiBold.woff +0 -0
- package/dist/fonts/Inter-SemiBold.woff2 +0 -0
- package/dist/fonts/Inter-Thin.otf +0 -0
- package/dist/fonts/Inter-Thin.ttf +0 -0
- package/dist/fonts/Inter-Thin.woff +0 -0
- package/dist/fonts/Inter-Thin.woff2 +0 -0
- package/dist/fonts/fonts.css +71 -0
- package/dist/index.js +24449 -0
- package/dist/index.js.map +1 -0
- package/dist/web-types.json +11 -0
- package/package.json +91 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../vue2/src/utils/ts/inject-css.ts","../../../node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/uuid/dist/esm-browser/native.js","../../../node_modules/uuid/dist/esm-browser/v4.js","../../vue2/src/utils/ts/unique-id.ts","../../vue2/src/plugins/toastController.ts","../../vue2/src/install.ts","../../vue2/src/components/alert/alert.types.ts","../../vue2/src/components/button/button.types.ts","../../vue2/src/components/typography/typography.types.ts","../../vue2/src/components/typography/typography.vue","../../vue2/src/utils/ts/hasSlot.ts","../../vue2/src/components/button/button.vue","../../vue2/src/components/button/components/button-group.vue","../../vue2/src/components/button/components/button-actions/button-actions.types.ts","../../vue2/src/components/button/components/button-actions/button-actions.vue","../../vue2/src/components/button/components/loading-button/loading-button.types.ts","../../vue2/src/components/loading-indicator/loading-indicator.types.ts","../../vue2/src/components/loading-indicator/loading-indicator.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross-circle-fill.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark-circle-fill.vue","../../vue2/src/components/button/components/loading-button/loading-button.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross-small.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/warning-filled.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/info-filled.vue","../../vue2/src/components/alert/alert.vue","../../vue2/src/utils/ts/aria-label.ts","../../vue2/src/components/checkbox/checkbox.types.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark-small.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/minus-small.vue","../../vue2/src/composables/initials.ts","../../vue2/src/composables/use-default-slot-validator/use-default-slot-validator.ts","../../vue2/src/composables/use-checkbox-select-all/use-checkbox-select-all.ts","../../vue2/src/components/checkbox/checkbox.vue","../../vue2/src/components/controls-group/controls-group.vue","../../vue2/src/components/checkbox/components/checkbox-group/checkbox-group.types.ts","../../vue2/src/components/checkbox/components/checkbox-group/checkbox-group.vue","../../vue2/src/components/avatar-image/avatar-image.types.ts","../../vue2/src/components/avatar-image/avatar-image.vue","../../vue2/src/components/internal/avatar/avatar.vue","../../vue2/src/components/internal/listbox/components/listbox-option/listbox-option.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark.vue","../../vue2/src/components/internal/listbox/components/listbox-single-select-option/listbox-single-select-option.vue","../../../node_modules/@intlify/shared/dist/shared.esm-bundler.js","../../../node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js","../../../node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js","../../../node_modules/@intlify/core-base/dist/core-base.esm-bundler.js","../node_modules/vue-i18n/dist/vue-i18n.esm-bundler.js","../../vue2/src/utils/ts/i18n.ts","../../vue2/src/components/internal/listbox/components/listbox-multi-select/components/listbox-multi-select-options.vue","../../vue2/src/components/internal/listbox/components/listbox-multi-select/listbox-multi-select.vue","../../vue2/src/components/internal/listbox/listbox.vue","../../vue2/src/components/tag/tag.types.ts","../../vue2/src/directives/click-outside/utils.ts","../../vue2/src/directives/click-outside/useEventListener/index.ts","../../vue2/src/directives/click-outside/on-click-outside.ts","../../vue2/src/directives/click-outside/directive.ts","../../../node_modules/focus-lock/dist/es2015/constants.js","../../../node_modules/focus-lock/dist/es2015/utils/array.js","../../../node_modules/focus-lock/dist/es2015/utils/is.js","../../../node_modules/focus-lock/dist/es2015/utils/tabOrder.js","../../../node_modules/focus-lock/dist/es2015/utils/tabbables.js","../../../node_modules/focus-lock/dist/es2015/utils/tabUtils.js","../../../node_modules/focus-lock/dist/es2015/utils/DOMutils.js","../../../node_modules/focus-lock/dist/es2015/utils/all-affected.js","../../../node_modules/focus-lock/dist/es2015/utils/getActiveElement.js","../../../node_modules/focus-lock/dist/es2015/focusInside.js","../../../node_modules/focus-lock/dist/es2015/focusIsHidden.js","../../../node_modules/focus-lock/dist/es2015/utils/correctFocus.js","../../../node_modules/focus-lock/dist/es2015/utils/firstFocus.js","../../../node_modules/focus-lock/dist/es2015/solver.js","../../../node_modules/focus-lock/dist/es2015/utils/parenting.js","../../../node_modules/focus-lock/dist/es2015/focusMerge.js","../../../node_modules/focus-lock/dist/es2015/focusables.js","../../../node_modules/focus-lock/dist/es2015/setFocus.js","../../vue2/src/components/focus-trap/focus-trap.types.ts","../../vue2/src/utils/ts/focus-trap.utils.ts","../../vue2/src/components/focus-trap/focus-trap.vue","../../vue2/src/components/popper-container/popper-container.types.ts","../../vue2/src/components/popper-container/popper-container.utils.ts","../../vue2/src/components/popper-container/popper-container.vue","../../vue2/src/directives/tooltip/tooltip.types.ts","../../vue2/src/utils/ts/events.ts","../../vue2/src/types/utils-events.ts","../../vue2/src/components/tooltip/tooltip.vue","../../vue2/src/directives/tooltip/tooltip.ts","../../vue2/src/directives/keyboard-navigation/keyboard-navigation.ts","../../vue2/src/components/tag/tag.vue","../../vue2/src/components/internal/listbox/components/listbox-option-tag/listbox-option-tag.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/copy.vue","../../vue2/src/components/internal/copy/copy.types.ts","../../vue2/src/components/internal/copy/copy.vue","../../vue2/src/components/internal/grid-layout/grid-layout.types.ts","../../vue2/src/components/internal/grid-layout/grid-layout.vue","../../vue2/src/components/dropdown/dropdown.types.ts","../../vue2/src/components/dropdown/components/dropdown-options-container/dropdown-options-container.vue","../../vue2/src/utils/ts/debounce/debounce.ts","../../vue2/src/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.types.ts","../../vue2/src/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-down.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-up.vue","../../vue2/src/components/dropdown/components/dropdown-default-textbox/dropdown-default-textbox.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-down-small.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-up-small.vue","../../vue2/src/components/dropdown/components/dropdown-small-textbox/dropdown-small-textbox.vue","../../vue2/src/components/search-bar/useSearchBarDataFilter.ts","../../vue2/src/components/dropdown/dropdown.vue","../../vue2/src/components/dropdown/components/variants/dropdown-avatar/dropdown-avatar.vue","../../vue2/src/components/country/composables/useCountryCapital/useCountryCapital.ts","../../vue2/src/components/country/composables/useCountryFlag.ts","../../vue2/src/components/country/composables/useCountryName/useCountryName.ts","../../vue2/src/components/country/composables/useCountryPhoneCode/useCountryPhoneCode.ts","../../vue2/src/components/country/country.types.ts","../../vue2/src/components/country/country.vue","../../vue2/src/components/dropdown/components/variants/dropdown-country/composables/useCountryItems.ts","../../vue2/src/components/dropdown/components/variants/dropdown-country/dropdown-country.vue","../../vue2/src/components/dropdown/components/variants/dropdown-currency/dropdown-currency.vue","../../vue2/src/components/payment-method/payment-method.types.ts","../../vue2/src/components/payment-method/composables/usePaymentIcon.ts","../../vue2/src/components/payment-method/payment-method.vue","../../vue2/src/components/dropdown/components/variants/dropdown-payment-method/dropdown-payment-method.vue","../../vue2/src/components/dropdown/components/variants/dropdown-tag/dropdown-tag.vue","../../vue2/src/components/pagination/components/pagination-results-per-page/pagination-results-per-page.vue","../../vue2/src/components/pagination/components/pagination-context/pagination-context.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/skip-left.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/skip-right.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-left-small.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-right-small.vue","../../vue2/src/components/pagination/components/pagination-controls/pagination-controls.vue","../../vue2/src/components/pagination/pagination.vue","../../vue2/src/components/filter-bar/filter-bar.types.ts","../../vue2/src/components/popover/popover.types.ts","../../vue2/src/components/popover/components/popover-title/popover-title.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross.vue","../../vue2/src/components/popover/components/popover-dismiss-button/popover-dismiss-button.vue","../../vue2/src/components/popover/popover.vue","../../vue2/src/components/internal/base-button/base-button.types.ts","../../vue2/src/components/internal/base-button/base-button.vue","../../vue2/src/components/filter-bar/components/base-filter-button/base-filter-button.vue","../../vue2/src/components/filter-bar/components/base-filter/components/filter-bar-filter-button/filter-bar-filter-button.vue","../../vue2/src/components/filter-bar/components/base-filter/base-filter.types.ts","../../vue2/src/components/filter-bar/components/base-filter/base-filter.vue","../../vue2/src/components/filter-bar/components/base-filter/composables/use-base-filter.ts","../../vue2/src/components/input-field/input-field.types.ts","../../vue2/src/components/input-field/input-field.vue","../../vue2/src/utils/ts/truncate.ts","../../vue2/src/components/filter-bar/components/input-filter/input-filter.vue","../../../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../../node_modules/date-fns/esm/isDate/index.js","../../../node_modules/date-fns/esm/toDate/index.js","../../../node_modules/date-fns/esm/isValid/index.js","../../../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../../../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../../../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../../../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../../../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../../../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../../../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../../../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../../../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../../../node_modules/date-fns/esm/locale/en-US/index.js","../../../node_modules/date-fns/esm/_lib/toInteger/index.js","../../../node_modules/date-fns/esm/addMilliseconds/index.js","../../../node_modules/date-fns/esm/subMilliseconds/index.js","../../../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../../../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../../../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../../../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../../../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../../../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../../../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../../../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../../../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../../../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../../../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../../../node_modules/date-fns/esm/_lib/format/formatters/index.js","../../../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../../../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../../../node_modules/date-fns/esm/format/index.js","../../../node_modules/date-fns/esm/addDays/index.js","../../../node_modules/date-fns/esm/addMonths/index.js","../../../node_modules/date-fns/esm/startOfDay/index.js","../../../node_modules/date-fns/esm/compareAsc/index.js","../../../node_modules/date-fns/esm/isSameDay/index.js","../../../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../../../node_modules/date-fns/esm/differenceInMilliseconds/index.js","../../../node_modules/date-fns/esm/_lib/roundingMethods/index.js","../../../node_modules/date-fns/esm/endOfDay/index.js","../../../node_modules/date-fns/esm/endOfMonth/index.js","../../../node_modules/date-fns/esm/isLastDayOfMonth/index.js","../../../node_modules/date-fns/esm/differenceInMonths/index.js","../../../node_modules/date-fns/esm/differenceInSeconds/index.js","../../../node_modules/date-fns/esm/startOfMonth/index.js","../../../node_modules/date-fns/esm/_lib/assign/index.js","../../../node_modules/date-fns/esm/_lib/cloneObject/index.js","../../../node_modules/date-fns/esm/formatDistance/index.js","../../../node_modules/date-fns/esm/formatDistanceToNow/index.js","../../../node_modules/date-fns/esm/subMonths/index.js","../../../node_modules/date-fns/esm/isAfter/index.js","../../../node_modules/date-fns/esm/isBefore/index.js","../../../node_modules/date-fns/esm/isWithinInterval/index.js","../../../node_modules/date-fns/esm/setDay/index.js","../../../node_modules/date-fns/esm/locale/de/_lib/formatDistance/index.js","../../../node_modules/date-fns/esm/locale/de/_lib/formatLong/index.js","../../../node_modules/date-fns/esm/locale/de/_lib/formatRelative/index.js","../../../node_modules/date-fns/esm/locale/de/_lib/localize/index.js","../../../node_modules/date-fns/esm/locale/de/_lib/match/index.js","../../../node_modules/date-fns/esm/locale/de/index.js","../../../node_modules/date-fns/esm/locale/fr/_lib/formatDistance/index.js","../../../node_modules/date-fns/esm/locale/fr/_lib/formatLong/index.js","../../../node_modules/date-fns/esm/locale/fr/_lib/formatRelative/index.js","../../../node_modules/date-fns/esm/locale/fr/_lib/localize/index.js","../../../node_modules/date-fns/esm/locale/fr/_lib/match/index.js","../../../node_modules/date-fns/esm/locale/fr/index.js","../../vue2/src/components/date/date.types.ts","../../vue2/src/components/date/date.vue","../../vue2/src/components/date-picker/components/date-picker-calendar/components/date-picker-calendar-day/date-picker-calendar-day.types.ts","../../vue2/src/components/date-picker/components/date-picker-calendar/components/date-picker-calendar-day/date-picker-calendar-day.vue","../../vue2/src/components/date-picker/components/date-picker-calendar/date-picker-calendar.types.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-left.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-right.vue","../../vue2/src/components/date-picker/components/date-picker-calendar/date-picker-calendar.vue","../../vue2/src/components/date-picker/components/date-picker-calendar-pane/date-picker-calendar-pane.types.ts","../../vue2/src/components/date-picker/components/date-picker-calendar-pane/composables/use-single-pane.ts","../../vue2/src/components/date-picker/components/date-picker-calendar-pane/composables/use-range-pane.ts","../../vue2/src/components/date-picker/components/date-picker-calendar-pane/date-picker-calendar-pane.vue","../../vue2/src/components/divider/divider.vue","../../vue2/src/components/date-picker/date-picker.types.ts","../../vue2/src/components/date-picker/components/date-picker-calendar-range/date-picker-calendar-range.types.ts","../../vue2/src/types/label-position.ts","../../vue2/src/types/date-format.ts","../../vue2/src/components/date-picker/components/date-picker-calendar-range/date-picker-calendar-range.vue","../../vue2/src/components/date-picker/composables/use-date-picker-single-calendar-text.ts","../../vue2/src/components/date-picker/composables/use-date-picker-range-calendar-text.ts","../../vue2/src/components/date-picker/date-picker.vue","../../vue2/src/components/filter-bar/components/date-filter/date-filter.vue","../../vue2/src/components/filter-bar/components/date-range-filter/date-range-filter.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/search.vue","../../vue2/src/components/search-bar/search-bar.types.ts","../../vue2/src/components/search-bar/search-bar.vue","../../vue2/src/components/filter-bar/components/select-filter/select-filter.vue","../../vue2/src/components/filter-bar/components/select-filter/variants/select-avatar-filter/select-avatar-filter.vue","../../vue2/src/components/filter-bar/components/select-filter/variants/select-currency-filter/select-currency-filter.vue","../../vue2/src/components/filter-bar/components/select-filter/variants/select-country-filter/select-country-filter.vue","../../vue2/src/components/filter-bar/components/select-filter/variants/select-payment-method-filter/select-payment-method-filter.vue","../../vue2/src/components/filter-bar/components/select-filter/variants/select-tag-filter/select-tag-filter.vue","../../vue2/src/components/radio-group/radio-group.types.ts","../../vue2/src/components/radio-group/components/radio-button/radio-button.types.ts","../../vue2/src/components/radio-group/components/radio-button/radio-button.vue","../../vue2/src/components/radio-group/radio-group.vue","../../vue2/src/components/filter-bar/components/boolean-filter/boolean-filter.vue","../../vue2/src/components/filter-bar/components/range-filter/range-filter.vue","../../vue2/src/utils/ts/toastController.ts","../../vue2/src/components/modal/modal.types.ts","../../vue2/src/components/modal/components/base-modal/base-modal.vue","../../vue2/src/components/modal/components/modal-default/modal-default.vue","../../vue2/src/components/modal/components/modal-dialog/modal-dialog.vue","../../vue2/src/components/modal/modal.vue","../../vue2/src/components/filter-bar/components/all-filters-modal/all-filters-modal.types.ts","../../vue2/src/components/filter-bar/components/all-filters-modal/components/all-filters-modal-button/all-filters-modal-button.vue","../../vue2/src/components/filter-bar/components/all-filters-modal/all-filters-modal.vue","../../vue2/src/components/filter-bar/filter-bar.vue","../../vue2/src/components/data-grid/data-grid.types.ts","../../vue2/src/components/data-grid/components/data-grid-columns/data-grid-columns-types.ts","../../vue2/src/components/data-grid/composables/useResizer.ts","../../vue2/src/utils/ts/resize.ts","../../vue2/src/components/data-grid/composables/useCalculateColumnWidth/useCalculateColumnWidth.ts","../../vue2/src/components/data-grid/composables/useSorter.ts","../../vue2/src/components/data-grid/composables/useSelector.ts","../../vue2/src/components/data-grid/composables/useColumnReorderer/useColumnReorderer.ts","../../vue2/src/components/data-grid/composables/useConfigSettings/useConfigSettings.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/info.vue","../../vue2/src/components/info-icon/info-icon.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/options-vertical.vue","../../vue2/src/components/menu/components/menu-item/menu-item.vue","../../vue2/src/components/menu/menu.types.ts","../../vue2/src/components/menu/components/menu-list-container/menu-list-container.vue","../../vue2/src/components/menu/components/sub-menu-item-list/sub-menu-item-list.vue","../../vue2/src/components/menu/components/menu-item-list/menu-item-list.vue","../../vue2/src/components/menu/menu.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-up.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-down.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/arrow-left.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/arrow-right.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/freeze.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/hide.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/show.vue","../../vue2/src/components/data-grid/components/data-grid-columns/data-grid-columns.vue","../../vue2/src/components/toggle/toggle.types.ts","../../vue2/src/components/toggle/toggle.vue","../../vue2/src/components/data-grid/components/data-grid-config-settings/data-grid-config-settings.types.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/settings.vue","../../vue2/src/components/data-grid/components/data-grid-config-settings/components/data-grid-config-settings-column-row/data-grid-config-settings-column-row.vue","../../vue2/src/components/data-grid/components/data-grid-config-settings/data-grid-config-settings.vue","../../vue2/src/components/data-grid/data-grid.vue","../../vue2/src/components/card/card.types.ts","../../vue2/src/components/card/card.vue","../../vue2/src/components/click-outside/click-outside.ts","../../vue2/src/utils/ts/currency/countries-list.ts","../../vue2/src/utils/ts/currency/currency.ts","../../vue2/src/components/currency/currency.types.ts","../../vue2/src/components/currency/currency.vue","../../vue2/src/components/link/link.types.ts","../../vue2/src/components/link/link.vue","../../vue2/src/components/header/header.types.ts","../../vue2/src/components/header/header.vue","../../vue2/src/components/status/status.types.ts","../../vue2/src/components/status/status.vue","../../vue2/src/components/tabs/tabs.keys.ts","../../vue2/src/components/tabs/components/tab.vue","../../vue2/src/components/tabs/tabs.utils.ts","../../vue2/src/components/tabs/tabs.vue","../../vue2/src/components/toast/components/toast-item/toast-item.vue","../../vue2/src/components/toast/toast.vue"],"sourcesContent":["const injectCSS = (cssStyles: string) => {\n const cssCode = JSON.stringify(cssStyles?.trim());\n try {\n if (typeof document !== 'undefined') {\n const elementStyle = document.createElement('style');\n elementStyle.appendChild(document.createTextNode(cssCode));\n document.head.appendChild(elementStyle);\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('css vars injection error', e);\n }\n};\n\nexport default injectCSS;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { v4 } from 'uuid';\n\n/**\n * Returns a unique identifier optionally prefixed by a custom string\n * @param value - The string to be prepended to the unique identifier\n */\nexport const generateUid = (value: string): string => (value ? `${value}-${v4()}` : v4());\n","import { reactive } from 'vue';\nimport { generateUid } from '@/utils/ts/unique-id';\nimport { BentoToastItem } from '@/components/toast/components/toast-item';\n\n/* eslint-disable no-underscore-dangle */\nexport default class ToastController {\n get state(): { queue: Array<BentoToastItem> } {\n return this._state;\n }\n\n private _state: { queue: Array<BentoToastItem> };\n\n constructor() {\n this._state = reactive({ queue: [] });\n }\n\n private dismissToast(toast: BentoToastItem): void {\n this._state.queue.splice(this._state.queue.indexOf(toast), 1);\n }\n\n public addToast(params: BentoToastItem) {\n const id = generateUid('toast');\n const toast = {\n ...params,\n id,\n dismiss: () => this.dismissToast(toast),\n };\n\n // new messages always appear in front\n this._state.queue.push(toast);\n\n // return API to manipulate toast\n return {\n dismiss: () => this.dismissToast(toast),\n };\n }\n}\n/* eslint-enable no-underscore-dangle */\n","import type { PluginFunction, PluginObject } from 'vue';\nimport { isVue2 } from 'vue-demi';\nimport bentoCssVars from '@adyen/bento-design-tokens/dist/css/bento/variables.css';\nimport bentoLegacyCssVars from '@adyen/bento-design-tokens/dist/css/bento/variables-legacy.css';\nimport injectCSS from './utils/ts/inject-css';\nimport ToastController from './plugins/toastController';\n\nexport enum BentoTheme {\n LEGACY = 'b-legacy-theme',\n BENTO = '',\n}\n\ninterface BentoVuePlugin {\n theme: BentoTheme;\n withToast: boolean;\n}\n\nconst setDefaultTheme = () => {\n document.body.classList.add(BentoTheme.LEGACY);\n};\n\nconst install: PluginFunction<BentoVuePlugin> = (Vue, options: { theme: BentoTheme; withToast: boolean }) => {\n if (options?.theme === BentoTheme.LEGACY) {\n setDefaultTheme();\n injectCSS(bentoLegacyCssVars);\n } else {\n injectCSS(bentoCssVars);\n }\n if (options?.withToast) {\n if (isVue2) {\n // Adds a new property to the Vue instance\n // eslint-disable-next-line no-param-reassign\n Vue.prototype.$bentoToastController = new ToastController();\n } else {\n // eslint-disable-next-line no-param-reassign\n (Vue as any).config.globalProperties.$bentoToastController = new ToastController();\n }\n }\n};\n\nexport default {\n install,\n} as PluginObject<BentoVuePlugin>;\n","export enum BentoAlertSeverityOption {\n WARNING = 'warning',\n CRITICAL = 'critical',\n HIGHLIGHT = 'highlight',\n SUCCESS = 'success',\n}\n","export enum BentoButtonVariant {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n TERTIARY = 'tertiary',\n}\n\nexport enum BentoButtonPropClass {\n CONDENSED = 'condensed',\n GROUPED = 'grouped',\n DESTRUCTIVE = 'critical',\n ICON_ONLY = 'icon-only',\n}\n","export enum BentoTypographyVariant {\n CAPTION = 'caption',\n BODY = 'body',\n SUBTITLE = 'subtitle',\n TITLE = 'title',\n}\n\nexport enum BentoTypographyModifier {\n WIDE = 'wide',\n STRONGER = 'stronger',\n STRONGER_WIDE = 'stronger-wide',\n STRONGEST = 'strongest',\n STRONGEST_WIDE = 'strongest-wide',\n MEDIUM = 'm',\n LARGE = 'l',\n MOBILE = 'mobile',\n}\n\nexport enum BentoTypographyElement {\n H1 = 'h1',\n H2 = 'h2',\n H3 = 'h3',\n H4 = 'h4',\n H5 = 'h5',\n H6 = 'h6',\n DIV = 'div',\n PARAGRAPH = 'p',\n SPAN = 'span',\n}\n","<template>\n <component :is=\"el\" class=\"b-typography\" :class=\"conditionalClasses\" data-testid=\"typography\">\n <slot />\n </component>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTypographyElement, BentoTypographyModifier, BentoTypographyVariant } from './typography.types';\n\n /**\n * The Typography component makes it easy to apply a default set of font weights, sizes and other text styles\n * easily to text. The variants and properties match with those found in Figma.\n *\n * For example, seeing text with the typography styling of\n *\n * @example\n * import { BentoTypography } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoTypography },\n * template: `\n * <bento-typography>\n * ... text content\n * </bento-typography>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-typography',\n inheritAttrs: true,\n props: {\n /**\n * Sets the HTML DOM element.\n * @values h1, h2, h3, h4, h5, h6, div, p, span\n */\n el: {\n type: String as PropType<BentoTypographyElement>,\n default: BentoTypographyElement.PARAGRAPH,\n validator: (value: BentoTypographyElement) => Object.values(BentoTypographyElement).includes(value),\n },\n\n /**\n * Adds the stronger class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n stronger: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the strongest class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n strongest: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the type of typography variant.\n * @values caption, body, subtitle, title.\n */\n variant: {\n type: String as PropType<BentoTypographyVariant>,\n default: BentoTypographyVariant.BODY,\n validator: (value: BentoTypographyVariant) => Object.values(BentoTypographyVariant).includes(value),\n },\n\n /**\n * Adds the medium class modifier.\n * Applicable to the Title variant.\n */\n medium: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the large class modifier.\n * Applicable to the Title variant.\n */\n large: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the medium class modifier.\n * Applicable to tje Body variant.\n */\n wide: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const conditionalClasses = computed(() => ({\n // Caption\n [`b-typography--${BentoTypographyVariant.CAPTION}`]: props.variant === BentoTypographyVariant.CAPTION,\n [`b-typography--${BentoTypographyVariant.CAPTION}-${BentoTypographyModifier.WIDE}`]:\n props.variant === BentoTypographyVariant.CAPTION && props.wide,\n [`b-typography--${BentoTypographyVariant.CAPTION}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.CAPTION && props.stronger,\n\n // Body\n [`b-typography--${BentoTypographyVariant.BODY}`]: props.variant === BentoTypographyVariant.BODY,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.WIDE}`]:\n props.variant === BentoTypographyVariant.BODY && props.wide,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.BODY && props.stronger,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.STRONGEST}`]:\n props.variant === BentoTypographyVariant.BODY && props.strongest,\n\n // Subtitle\n [`b-typography--${BentoTypographyVariant.SUBTITLE}`]: props.variant === BentoTypographyVariant.SUBTITLE,\n [`b-typography--${BentoTypographyVariant.SUBTITLE}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.SUBTITLE && props.stronger,\n\n // Title\n [`b-typography--${BentoTypographyVariant.TITLE}`]:\n props.variant === BentoTypographyVariant.TITLE && !props.medium && !props.large,\n [`b-typography--${BentoTypographyVariant.TITLE}-${BentoTypographyModifier.MEDIUM}`]:\n props.variant === BentoTypographyVariant.TITLE && props.medium,\n [`b-typography--${BentoTypographyVariant.TITLE}-${BentoTypographyModifier.LARGE}`]:\n props.variant === BentoTypographyVariant.TITLE && props.large,\n }));\n\n return {\n conditionalClasses,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./typography.scss\" />\n","import type { Slots } from 'vue/types/v3-setup-context';\n\n/**\n * High order function that allows to verify if a Slot exits in a component.\n *\n * @example\n * <script lang=\"ts\">\n * import { hasSlot } from '@/utils/ts/hasSlot';\n *\n * export default defineComponent({\n * setup(props, { slots }) {\n * return {\n * //...\n *\n * // Methods\n * hasSlot: hasSlot(slots),\n * }\n * }\n * })\n * </script>\n *\n * @param {function(slots: Slots)} hasSlots Encloses the slots object to be checked when the closure is called\n * @returns {function(name: string)} Checks if the named slot defined by \"name\" exists in the component\n */\nexport const hasSlot = (slots: Slots) => (name: string) => !!slots[name];\n","<template>\n <button\n class=\"b-button\"\n :class=\"conditionalClasses\"\n :disabled=\"disabled\"\n :type=\"type\"\n :aria-controls=\"ariaAttributes['aria-controls']\"\n :aria-expanded=\"ariaAttributes['aria-expanded']\"\n @click=\"onClickButton\"\n >\n <span v-if=\"hasSlot('iconLeft')\" class=\"b-button__icon-left\" data-testid=\"icon-button-left\">\n <slot name=\"iconLeft\" />\n </span>\n <bento-typography\n v-if=\"hasSlot('default')\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n class=\"b-button__label\"\n >\n <slot />\n </bento-typography>\n <span v-if=\"hasSlot('iconRight')\" class=\"b-button__icon-right\" data-testid=\"icon-button-right\">\n <slot name=\"iconRight\" />\n </span>\n </button>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoButtonPropClass, BentoButtonVariant } from './button.types';\n import type { ButtonHTMLAttributes } from 'vue/types/jsx';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { Booleanish } from '@/types';\n\n /**\n * Button component for all the various types of bento buttons.\n *\n * @usage\n * import { BentoButton, AdlIconPosition } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoButton },\n * template: `\n * <bento-button\n * disabled\n * :icon-position=\"AdlIconPosition.AFTER\"\n * >\n * Button text\n * </bento-button>\n * `,\n * }\n */\n export default defineComponent({\n name: 'bento-button',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Disables button functionality\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Displays button as critical\n */\n critical: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The default behavior of the button.\n * Possible values are: 'button', 'reset', 'submit'\n */\n type: {\n type: String as PropType<ButtonHTMLAttributes['type']>,\n default: 'button',\n },\n\n /**\n * Reduces sizing of button\n */\n condensed: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Types of flavour of Button\n * @values primary, secondary, tertiary\n */\n variant: {\n type: String as PropType<BentoButtonVariant>,\n default: BentoButtonVariant.PRIMARY,\n validator: (value: BentoButtonVariant) => Object.values(BentoButtonVariant).includes(value),\n },\n },\n emits: ['click', 'focus', 'blur', 'keydown.esc'],\n setup(props, { slots, emit, attrs }) {\n const ariaAttributes = computed(() => ({\n 'aria-controls': attrs['aria-controls']?.toString() as string,\n 'aria-expanded': attrs['aria-expanded']?.toString() as Booleanish,\n }));\n\n const variantClass = computed((): { [x: string]: boolean } => ({\n [`b-button--${props.variant}${props.critical ? `-${BentoButtonPropClass.DESTRUCTIVE}` : ''}`]: true,\n }));\n\n const conditionalClasses = computed(\n (): {\n [x: string]: boolean;\n } => ({\n ...variantClass.value,\n [`b-button--${BentoButtonPropClass.CONDENSED}`]: props.condensed,\n [`b-button--${BentoButtonPropClass.ICON_ONLY}`]: !slots.default,\n })\n );\n\n const onClickButton = (e: MouseEvent) => {\n if (!props.disabled) {\n emit('click', e);\n }\n };\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n ariaAttributes,\n conditionalClasses,\n\n // Methods\n onClickButton,\n hasSlot: hasSlot(slots),\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./button.scss\" />\n","<template>\n <div class=\"b-button-group\">\n <slot></slot>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n .b-button-group {\n display: flex;\n\n button {\n $grouped-button-offset: -1px;\n\n border-radius: 0;\n border-right-width: 0;\n margin-right: $grouped-button-offset;\n\n &:first-of-type {\n border-bottom-left-radius: var(--b-button-border-radius);\n border-top-left-radius: var(--b-button-border-radius);\n }\n\n &:last-of-type {\n border-bottom-right-radius: var(--b-button-border-radius);\n border-right-width: var(--b-button-border-width);\n border-top-right-radius: var(--b-button-border-radius);\n margin-right: 0;\n }\n }\n }\n</style>\n","import type { VueNodeElement } from '@/types';\nimport type { BentoButtonVariant } from '@/components/button';\n\nexport interface BentoButtonActionObject {\n title: string;\n event: (event: Event) => void;\n icon?: VueNodeElement;\n disabled?: boolean;\n variant?: BentoButtonVariant;\n critical?: boolean;\n}\n\nexport type BentoButtonActionsList = Array<BentoButtonActionObject>;\n\nexport enum BentoButtonActionsLayoutBasic {\n BUTTONS_END = 'buttons-end',\n FILL_CONTAINER = 'fill-container',\n SPACE_BETWEEN = 'space-between',\n VERTICAL_STACK = 'vertical-stack',\n}\n\nexport enum BentoButtonActionsLayoutExtended {\n BUTTONS_START = 'buttons-start',\n}\n\nexport const BentoButtonActionsLayout = { ...BentoButtonActionsLayoutBasic, ...BentoButtonActionsLayoutExtended };\nexport type BentoButtonActionsLayout = BentoButtonActionsLayoutBasic | BentoButtonActionsLayoutExtended;\n","<template>\n <div class=\"b-button-actions\">\n <div class=\"b-button-actions__container-wrapper\" :class=\"conditionalClasses\" role=\"group\">\n <div v-for=\"(button, index) in reversedActionsList\" :key=\"index\" class=\"b-button-actions__button-wrapper\">\n <bento-button\n :critical=\"button.critical\"\n :disabled=\"button.disabled\"\n :variant=\"button.variant || generateButtonVariantByIndex(index)\"\n @click=\"button.event\"\n >\n <template v-if=\"button.icon\" #iconLeft>\n <component :is=\"button.icon\" :svg-title=\"button.title\"></component>\n </template>\n {{ button.title }}\n </bento-button>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoButtonVariant } from '../../button.types';\n import BentoButton from '../../button.vue';\n import { BentoButtonActionsLayout, BentoButtonActionsList } from './button-actions.types';\n\n export default defineComponent({\n name: 'bento-button-actions',\n components: { BentoButton },\n inheritAttrs: false,\n props: {\n /**\n * List of actions that will be used to render the buttons.\n * First element in the list will be rendered as \"primary\".\n * All elements after the first will be rendered as \"secondary\".\n *\n * Each object in the list should have a `title`, an `event` and\n * (optional) a Vue `icon` from the library `@adyen/ui-assets-icons-16`.\n *\n * `title`: Button's text.\n *\n * `event`: Event triggered when clicking the Button.\n *\n * `icon` (optional): Vue Icon from the library `@adyen/ui-assets-icons-16`.\n *\n * `disabled` (optional): Disables the action.\n *\n * `variant` (optional): Sets button's variant background color.\n *\n * `critical` (optional): Sets button red border adn color.\n *\n * ```\n * [{\n * title: 'Primary',\n * event: () => { ... },\n * icon: FourPeopleIcon\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * disabled: true,\n * variant: BentoButtonVariant.PRIMARY,\n * critical: true\n * }]\n * ```\n */\n actions: {\n type: Array as PropType<BentoButtonActionsList>,\n required: true,\n },\n\n /**\n * Defines the layout in which the button actions is presented.\n * It can be one of:\n *\n * @values BUTTONS_START\n * @values BUTTONS_END\n * @values FILL_CONTAINER\n * @values SPACE_BETWEEN\n * @values VERTICAL_STACK\n */\n layout: {\n type: String as PropType<BentoButtonActionsLayout>,\n default: BentoButtonActionsLayout.BUTTONS_END,\n validator: (layout: BentoButtonActionsLayout) =>\n Object.values(BentoButtonActionsLayout).includes(layout),\n },\n },\n setup(props) {\n const reversedActionsList = computed(() => props.actions.slice().reverse());\n const generateButtonVariantByIndex = actionIndex => {\n const lastActionIndex = props.actions.length - 1;\n return actionIndex === lastActionIndex ? BentoButtonVariant.PRIMARY : BentoButtonVariant.SECONDARY;\n };\n\n const conditionalClasses = computed(() => ({\n [`b-button-actions--${props.layout}`]: true,\n }));\n\n return {\n // Values\n conditionalClasses,\n reversedActionsList,\n\n // Methods\n generateButtonVariantByIndex,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./button-actions.scss\" />\n","export enum BentoLoadingButtonState {\n START = 'start',\n LOADING = 'loading',\n SUCCESS = 'success',\n FAIL = 'fail',\n}\n\nexport type BentoLoadingButtonIconState = Partial<{ [key in BentoLoadingButtonState]: string }>;\n","export enum BentoLoadingIndicatorEvent {\n START = 'loading-start',\n END = 'loading-end',\n}\n","<template>\n <div class=\"b-loading-indicator\" :class=\"conditionalClasses\" aria-hidden=\"true\" data-testid=\"loading-indicator\" />\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, onUnmounted } from 'vue';\n import { BentoLoadingIndicatorEvent } from './loading-indicator.types';\n\n export default defineComponent({\n name: 'bento-loading-indicator',\n inheritAttrs: false,\n props: {\n /**\n * Displays the loading indicator in a small size\n */\n small: { type: Boolean, default: false },\n /**\n * Displays the loading indicator in a large size\n */\n large: { type: Boolean, default: false },\n /**\n * Displays the loading indicator in a white variant\n */\n inverse: { type: Boolean, default: false },\n },\n emits: [BentoLoadingIndicatorEvent.START, BentoLoadingIndicatorEvent.END],\n setup(props, { emit }) {\n onMounted(() => emit(BentoLoadingIndicatorEvent.START));\n\n onUnmounted(() => emit(BentoLoadingIndicatorEvent.END));\n\n const conditionalClasses = computed(() => ({\n 'b-loading-indicator--inverse': props.inverse,\n 'b-loading-indicator--small': props.small,\n 'b-loading-indicator--large': props.large,\n }));\n\n return {\n conditionalClasses,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./loading-indicator.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><g :clip-path=\"'url(#uia-icons-16-cross_circle_fill__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M0.25 8C0.25 3.71979 3.71979 0.25 8 0.25C12.2802 0.25 15.75 3.71979 15.75 8C15.75 12.2802 12.2802 15.75 8 15.75C3.71979 15.75 0.25 12.2802 0.25 8ZM5.46967 5.46967C5.76256 5.17678 6.23744 5.17678 6.53033 5.46967L8 6.93934L9.46967 5.46967C9.76256 5.17678 10.2374 5.17678 10.5303 5.46967C10.8232 5.76256 10.8232 6.23744 10.5303 6.53033L9.06066 8L10.5303 9.46967C10.8232 9.76256 10.8232 10.2374 10.5303 10.5303C10.2374 10.8232 9.76256 10.8232 9.46967 10.5303L8 9.06066L6.53033 10.5303C6.23744 10.8232 5.76256 10.8232 5.46967 10.5303C5.17678 10.2374 5.17678 9.76256 5.46967 9.46967L6.93934 8L5.46967 6.53033C5.17678 6.23744 5.17678 5.76256 5.46967 5.46967Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-cross_circle_fill__a' + uuid\"><rect width=\"16\" height=\"16\" fill=\"#fff\"/></clipPath></defs></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><g :clip-path=\"'url(#uia-icons-16-checkmark_circle_fill__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M0.249878 7.99988C0.249878 3.71967 3.71967 0.249878 7.99988 0.249878C12.2801 0.249878 15.7499 3.71967 15.7499 7.99988C15.7499 12.2801 12.2801 15.7499 7.99988 15.7499C3.71967 15.7499 0.249878 12.2801 0.249878 7.99988ZM11.5302 5.46955C11.8231 5.76244 11.8231 6.23731 11.5302 6.53021L7.53021 10.5302C7.27393 10.7865 6.87832 10.8185 6.5872 10.6263C6.54561 10.5989 6.50565 10.5663 6.46904 10.5297L4.46955 8.53021C4.17665 8.23732 4.17665 7.76244 4.46955 7.46955C4.76244 7.17665 5.23731 7.17665 5.53021 7.46955L6.99988 8.93922L10.4695 5.46955C10.7624 5.17665 11.2373 5.17665 11.5302 5.46955Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-checkmark_circle_fill__a' + uuid\"><rect width=\"16\" height=\"16\" fill=\"#fff\"/></clipPath></defs></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div class=\"b-loading-button\" data-testid=\"loading-button\" :class=\"conditionalClasses\">\n <bento-button\n :critical=\"state === BentoLoadingButtonState.FAIL\"\n :variant=\"variant\"\n :condensed=\"condensed\"\n :disabled=\"disabled\"\n @click=\"onClick\"\n >\n <slot></slot>\n <template v-if=\"state !== BentoLoadingButtonState.START\" #iconLeft>\n <span class=\"b-loading-button__icon\" data-testid=\"loading-button-rotating-icon\">\n <cross v-if=\"state === BentoLoadingButtonState.FAIL\" svg-title=\"failed\" />\n <checkmark v-else-if=\"state === BentoLoadingButtonState.SUCCESS\" svg-title=\"succeded\" />\n <!-- TODO: Replace with new loading-indicator component -->\n <bento-loading-indicator\n v-else-if=\"state === BentoLoadingButtonState.LOADING\"\n small\n :inverse=\"isInverseLoadingIndicator\"\n />\n </span>\n </template>\n </bento-button>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoButtonVariant } from '@/components/button/button.types';\n import { BentoLoadingButtonState } from './loading-button.types';\n import { BentoLoadingIndicator } from '@/components/loading-indicator';\n import BentoButton from '@/components/button/button.vue';\n import Cross from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import Checkmark from '@adyen/ui-assets-icons-16/vue/checkmark-circle-fill';\n\n export default defineComponent({\n name: 'bento-loading-button',\n components: { BentoButton, Cross, Checkmark, BentoLoadingIndicator },\n inheritAttrs: false,\n props: {\n /**\n * Reduces sizing of button\n */\n condensed: {\n type: BentoButton.props.condensed.type,\n default: false,\n },\n\n /**\n * Disables button functonality\n */\n disabled: {\n type: BentoButton.props.disabled.type,\n default: false,\n },\n\n /**\n * State of the button.\n * @values start, loading, success, fail\n */\n state: {\n type: String as PropType<BentoLoadingButtonState>,\n default: BentoLoadingButtonState.START,\n validator: (value: BentoLoadingButtonState) => Object.values(BentoLoadingButtonState).includes(value),\n },\n\n /**\n * Types of flavour of Button\n * @values primary, secondary, tertiary\n */\n variant: {\n type: BentoButton.props.variant.type,\n default: BentoButtonVariant.PRIMARY,\n validator: BentoButton.props.variant.validator,\n },\n },\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.LOADING}`]:\n props.state === BentoLoadingButtonState.LOADING && !props.disabled,\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.SUCCESS}`]:\n props.state === BentoLoadingButtonState.SUCCESS,\n }));\n\n const isInverseLoadingIndicator = computed(() => props.variant === BentoButtonVariant.PRIMARY);\n\n const onClick = () => {\n if (props.state !== BentoLoadingButtonState.LOADING) {\n emit('click');\n }\n };\n\n return {\n // Enums\n BentoLoadingButtonState,\n\n // Functions\n onClick,\n\n // Values\n conditionalClasses,\n isInverseLoadingIndicator,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./loading-button.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.0303 6.03033C11.3232 5.73744 11.3232 5.26256 11.0303 4.96967C10.7374 4.67678 10.2626 4.67678 9.96967 4.96967L8 6.93934L6.03033 4.96967C5.73744 4.67678 5.26256 4.67678 4.96967 4.96967C4.67678 5.26256 4.67678 5.73744 4.96967 6.03033L6.93934 8L4.96967 9.96967C4.67678 10.2626 4.67678 10.7374 4.96967 11.0303C5.26256 11.3232 5.73744 11.3232 6.03033 11.0303L8 9.06066L9.96967 11.0303C10.2626 11.3232 10.7374 11.3232 11.0303 11.0303C11.3232 10.7374 11.3232 10.2626 11.0303 9.96967L9.06066 8L11.0303 6.03033Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M15.349 11.5376L9.99897 2.19758C9.79966 1.85738 9.51482 1.57524 9.17274 1.37919C8.83066 1.18314 8.44325 1.07999 8.04897 1.07999C7.65469 1.07999 7.26727 1.18314 6.92519 1.37919C6.58311 1.57524 6.29827 1.85738 6.09897 2.19758L0.648967 11.5376C0.450427 11.8833 0.347305 12.2755 0.350155 12.6742C0.353005 13.0728 0.461725 13.4636 0.665188 13.8064C0.868651 14.1493 1.15955 14.4319 1.50812 14.6254C1.85668 14.8188 2.2504 14.9162 2.64897 14.9076H13.399C13.7933 14.9073 14.1807 14.8034 14.5222 14.6063C14.8638 14.4092 15.1475 14.1258 15.345 13.7845C15.5425 13.4431 15.6468 13.0559 15.6475 12.6615C15.6482 12.2672 15.5453 11.8796 15.349 11.5376ZM7.24897 5.32758C7.24897 5.12866 7.32798 4.9379 7.46864 4.79725C7.60929 4.65659 7.80006 4.57758 7.99897 4.57758C8.19788 4.57758 8.38864 4.65659 8.5293 4.79725C8.66995 4.9379 8.74897 5.12866 8.74897 5.32758V8.32758C8.74897 8.52649 8.66995 8.71725 8.5293 8.85791C8.38864 8.99856 8.19788 9.07758 7.99897 9.07758C7.80006 9.07758 7.60929 8.99856 7.46864 8.85791C7.32798 8.71725 7.24897 8.52649 7.24897 8.32758V5.32758ZM7.99897 12.3276C7.80119 12.3276 7.60785 12.2689 7.4434 12.159C7.27895 12.0492 7.15077 11.893 7.07509 11.7103C6.9994 11.5275 6.9796 11.3265 7.01818 11.1325C7.05677 10.9385 7.15201 10.7603 7.29186 10.6205C7.43171 10.4806 7.6099 10.3854 7.80388 10.3468C7.99786 10.3082 8.19893 10.328 8.38165 10.4037C8.56438 10.4794 8.72056 10.6076 8.83044 10.772C8.94032 10.9365 8.99897 11.1298 8.99897 11.3276C8.99897 11.5928 8.89361 11.8471 8.70607 12.0347C8.51854 12.2222 8.26418 12.3276 7.99897 12.3276Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><g :clip-path=\"'url(#uia-icons-16-info_filled__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M5.0342 0.839937C6.45033 0.253358 8.0086 0.0998821 9.51195 0.398918C11.0153 0.697953 12.3962 1.43607 13.4801 2.51993C14.5639 3.60378 15.3021 4.9847 15.6011 6.48805C15.9001 7.99141 15.7466 9.54967 15.1601 10.9658C14.5735 12.3819 13.5801 13.5923 12.3057 14.4439C11.0312 15.2955 9.53281 15.75 8 15.75C5.94457 15.75 3.97333 14.9335 2.51992 13.4801C1.06652 12.0267 0.25 10.0554 0.25 8C0.25 6.4672 0.70453 4.96881 1.55611 3.69433C2.40769 2.41985 3.61808 1.42652 5.0342 0.839937ZM8.75 4.5C8.75 4.69778 8.69135 4.89112 8.58147 5.05557C8.47159 5.22002 8.31541 5.34819 8.13268 5.42388C7.94996 5.49957 7.74889 5.51937 7.55491 5.48079C7.36093 5.4422 7.18275 5.34696 7.04289 5.20711C6.90304 5.06725 6.8078 4.88907 6.76922 4.69509C6.73063 4.50111 6.75043 4.30004 6.82612 4.11732C6.90181 3.93459 7.02998 3.77841 7.19443 3.66853C7.35888 3.55865 7.55222 3.5 7.75 3.5C8.01522 3.5 8.26957 3.60536 8.45711 3.79289C8.64464 3.98043 8.75 4.23478 8.75 4.5ZM7 6.25C6.58579 6.25 6.25 6.58579 6.25 7C6.25 7.41421 6.58579 7.75 7 7.75H7.25V10.25H7C6.58579 10.25 6.25 10.5858 6.25 11C6.25 11.4142 6.58579 11.75 7 11.75H9C9.41421 11.75 9.75 11.4142 9.75 11C9.75 10.5858 9.41421 10.25 9 10.25H8.75V7C8.75 6.58579 8.41421 6.25 8 6.25H7Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-info_filled__a' + uuid\"><rect width=\"16\" height=\"16\" fill=\"#fff\"/></clipPath></defs></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div class=\"b-alert\" :role=\"computedRole\" data-testid=\"alert-container\">\n <div class=\"b-alert__inner-container\" :class=\"alertConditionalClasses\">\n <div class=\"b-alert__severity-icon\" data-testid=\"alert-severity-icon\" aria-hidden=\"true\">\n <checked-circle\n v-if=\"severity === BentoAlertSeverityOption.SUCCESS\"\n :svg-title=\"BentoAlertSeverityOption.SUCCESS\"\n />\n <info\n v-else-if=\"severity === BentoAlertSeverityOption.HIGHLIGHT\"\n :svg-title=\"BentoAlertSeverityOption.HIGHLIGHT\"\n />\n <warning\n v-else-if=\"severity === BentoAlertSeverityOption.WARNING\"\n :svg-title=\"BentoAlertSeverityOption.WARNING\"\n />\n <cross-circle\n v-else-if=\"severity === BentoAlertSeverityOption.CRITICAL\"\n :svg-title=\"BentoAlertSeverityOption.CRITICAL\"\n />\n </div>\n\n <div class=\"b-alert__content\">\n <bento-typography\n v-if=\"$slots.default\"\n class=\"b-alert__content-title\"\n aria-label=\"alert title\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n strongest\n >\n <slot />\n </bento-typography>\n\n <bento-typography\n v-if=\"$slots.description\"\n class=\"b-alert__content-description\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"description\" />\n </bento-typography>\n\n <div v-if=\"$slots.actions\" class=\"b-alert__content-actions\" aria-label=\"alert actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <bento-button\n v-if=\"closeButton\"\n class=\"b-alert__close-button\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n type=\"button\"\n @click=\"onCloseButtonClick\"\n >\n <cross-small svg-title=\"close\" />\n </bento-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, PropType } from 'vue';\n import { BentoAlertSeverityOption } from '@/components/alert/alert.types';\n import { BentoButtonVariant } from '@/components/button/button.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoButton } from '@/components/button';\n\n import CrossSmall from '@adyen/ui-assets-icons-16/vue/cross-small';\n import Warning from '@adyen/ui-assets-icons-16/vue/warning-filled';\n import CrossCircle from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import CheckedCircle from '@adyen/ui-assets-icons-16/vue/checkmark-circle-fill';\n import Info from '@adyen/ui-assets-icons-16/vue/info-filled';\n\n /**\n * An Alert component is used to display a persistent\n * notification containing information important to the user\n *\n * @example\n * import { BentoAlert, BentoAlertSeverityOption } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoAlert },\n * template: `\n * <bento-alert :severity=\"BentoAlertSeverityOption.HIGHLIGHT\">\n * Title of the Alert\n * </bento-alert>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-alert',\n components: { CrossSmall, BentoButton, Warning, CrossCircle, CheckedCircle, Info, BentoTypography },\n inheritAttrs: false,\n props: {\n // TODO to rename the property to \"type\" or any other name, when designers finalize it\n /**\n * severity levels set a distinctive icon and color\n */\n severity: {\n type: String as PropType<BentoAlertSeverityOption>,\n default: BentoAlertSeverityOption.HIGHLIGHT,\n },\n /**\n * adds a cross icon on the right side of the alert\n */\n closeButton: {\n type: Boolean,\n default: false,\n },\n /**\n * Alert has less padding and is overall smaller than the default option\n */\n inline: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['close-alert'],\n setup(props, { slots, emit }) {\n const alertConditionalClasses = computed(() => ({\n [`b-alert--${props.severity}`]: props.severity,\n 'b-alert--inline': props.inline,\n }));\n\n const computedRole = computed(() =>\n props.severity === BentoAlertSeverityOption.CRITICAL ||\n props.severity === BentoAlertSeverityOption.WARNING\n ? 'alert'\n : 'status'\n );\n\n const onCloseButtonClick = () => {\n emit('close-alert');\n };\n\n onMounted(() => {\n if (!slots.default) {\n throw new Error('Alert Component requires header title in the slot');\n }\n });\n\n return {\n // Values\n alertConditionalClasses,\n computedRole,\n\n // Methods\n onCloseButtonClick,\n\n // Enums\n BentoButtonVariant,\n BentoAlertSeverityOption,\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./alert.scss\" />\n","import { computed, ComputedRef, ref } from 'vue';\nimport { MaybeRef } from '@/types/maybe-ref';\n\ninterface ariaLabelOptions {\n ariaLabel?: MaybeRef<string | null>;\n label?: MaybeRef<string | null>;\n defaultFallback?: MaybeRef<string | null>;\n}\n\n/**\n * Returns a valid aria-label for the element it's invoked for\n * @param ariaLabel - The aria label, which has to be set manually through the homonymous prop\n * @param label - Any other label provided, usually the component's main text\n * @param defaultFallback - The default fallback if no other value is provided\n * @returns {string | null} - A string corresponding to the aria label or null if no value is provided\n */\nexport const useAriaLabel = ({\n ariaLabel = null,\n label = null,\n defaultFallback = null,\n}: ariaLabelOptions): ComputedRef<string> => {\n const computedAriaLabel = ref(ariaLabel);\n const computedLabel = ref(label);\n const computedDefaultFallback = ref(defaultFallback);\n\n return computed(() => computedAriaLabel.value ?? computedLabel.value ?? computedDefaultFallback.value);\n};\n","export type BentoMultiCheckboxType = Array<string | number>;\nexport type BentoCheckboxType = boolean | BentoMultiCheckboxType;\n\nexport enum BentoCheckboxState {\n UNCHECKED = 'unchecked',\n DISABLED = 'disabled',\n ERROR = 'error',\n}\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.5303 6.53033C11.8232 6.23744 11.8232 5.76256 11.5303 5.46967C11.2374 5.17678 10.7626 5.17678 10.4697 5.46967L7 8.93934L5.53033 7.46967C5.23744 7.17678 4.76256 7.17678 4.46967 7.46967C4.17678 7.76256 4.17678 8.23744 4.46967 8.53033L6.46967 10.5303C6.76256 10.8232 7.23744 10.8232 7.53033 10.5303C7.53021 10.5304 7.53045 10.5302 7.53033 10.5303L11.5303 6.53033Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M4.25 8C4.25 7.58579 4.58579 7.25 5 7.25H11C11.4142 7.25 11.75 7.58579 11.75 8C11.75 8.41421 11.4142 8.75 11 8.75H5C4.58579 8.75 4.25 8.41421 4.25 8Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","import { computed, ComputedRef, ref } from 'vue';\nimport { MaybeRef } from '@/types';\n\n/** Extracts the first letter of a username\n * @param username - The name to return the initials of\n * Common patterns:\n * 1. John => J\n * 2. John Smith => J\n * John Smith Doe Holly => J\n */\nexport const useInitials = (username: MaybeRef<string | null>): ComputedRef<string | null> => {\n const computedUsername = ref(username);\n return computed(() => (computedUsername.value ? computedUsername.value.trim().charAt(0).toUpperCase() : null));\n};\n","import { onMounted } from 'vue';\n\nexport const useDefaultSlotValidator = (\n componentName: string,\n hasDefaultSlot: boolean,\n ...hasOptionalSlots: boolean[]\n) => {\n onMounted(() => {\n if (!hasDefaultSlot && hasOptionalSlots.some(hasSlot => hasSlot)) {\n throw new Error(`${componentName}: optional slots should only be provided together with #default slot`);\n }\n });\n};\n","import { computed } from 'vue';\nimport type { ComputedRef } from 'vue';\nimport type { BentoListboxMultiSelectValue, Fn } from '@/types';\nimport { BentoListboxOptions } from '@/types';\n\n/**\n * Callback function that alllows to select all the items when called\n * @callback selectAllCallback\n */\n\n/**\n * Callback function that alllows to select all the items when called\n * @callback unselectAllCallback\n */\n\n/**\n * @typedef {Object} UseCheckboxSelectAll\n * @property {Ref<boolean>} isAllSelected - Indicates if all values are selected. Pass this to the :value property.\n * @property {Ref<boolean>} isIndeterminate - Indicates if it is in an indeterminated state (not all values are selected nor unselected). Pass this to the :indeterminate property.\n * @property {(selectedValue: boolean) => void} toggleSelectAll - Handles the select all flow, selects or unselects all and nullifies the indeterminated state. Pass this to the @input method.\n */\n\n/**\n * Composable to handle a 3 way checkbox state that allows to manage\n * a \"select all\", \"unselect all\" and an intermediate state where\n * not all are selected.\n *\n * @example\n * const checkboxVModelRef = ref<number[]>([]);\n *\n * const { isAllSelected, isIndeterminate, toggleSelectAll, updateIndeterminate } = useCheckboxSelectAll(\n * checkboxVModelRef,\n * () => { checkboxVModelRef.value = [...] // select all logic },\n * () => { checkboxVModelRef.value = [] // unselect all logic },\n * );\n * toggleSelectAll(true|false); // Hook this to the @input method\n * updateIndeterminate(totalOfAvailableItems);\n *\n *\n * @param {ComputedRef<BentoListboxMultiSelectValue>} selectedItemsList - Reference to the list of selected values\n * @param {ComputedRef<BentoListboxOptions>} items - Reference to the list of all available items in the dropdown\n * @param {selectAllCallback} selectAll - Callback function that alllows to select all the items when called\n * @param {unselectAllCallback} unselectAll - Callback function that alllows to select all the items when called\n * @returns {UseCheckboxSelectAll} Values to be set to the bento-checkbox value and indeterminate props, as well as functions to update them accordingly\n *\n */\nexport const useCheckboxSelectAll = (\n selectedItemsList: ComputedRef<BentoListboxMultiSelectValue>,\n items: ComputedRef<BentoListboxOptions>,\n selectAll: Fn,\n unselectAll: Fn\n) => {\n const isAllSelected = computed(() => selectedItemsList.value?.length === items.value.length);\n const isIndeterminate = computed(() => {\n // eslint-disable-next-line eqeqeq\n if (selectedItemsList.value == undefined || selectedItemsList.value.length === 0) {\n return false;\n }\n\n return selectedItemsList.value?.length !== items.value.length;\n });\n\n const toggleSelectAll = (selectedValue: boolean) => {\n if (selectedValue) {\n selectAll();\n } else {\n unselectAll();\n }\n };\n\n return {\n isAllSelected,\n isIndeterminate,\n\n toggleSelectAll,\n };\n};\n","<template>\n <label class=\"b-checkbox\" :class=\"conditionalClass\">\n <div class=\"b-checkbox__input-container\">\n <!-- Don't change order because it matters for CSS. Icons first -->\n <checkmark-small-icon v-if=\"isChecked\" class=\"b-checkbox__icon\" svg-title=\"checked\" />\n <minus-small-icon v-if=\"isIndeterminate\" class=\"b-checkbox__icon\" svg-title=\"intermediate\" />\n <input\n ref=\"input\"\n role=\"checkbox\"\n class=\"b-checkbox__outline\"\n type=\"checkbox\"\n v-bind=\"$attrs\"\n :aria-label=\"computedAriaLabel\"\n :aria-checked=\"ariaChecked\"\n :aria-invalid=\"ariaInvalid\"\n :checked=\"isChecked\"\n :disabled=\"disabled\"\n :indeterminate.prop=\"isIndeterminate\"\n :value=\"value\"\n :class=\"conditionalClassOutline\"\n @change=\"onChange\"\n />\n </div>\n <span v-if=\"defaultSlotValue\" class=\"b-checkbox__text\">\n <bento-typography\n v-if=\"defaultSlotValue\"\n class=\"b-checkbox__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot></slot>\n </bento-typography>\n <bento-typography\n v-if=\"defaultSlotValue && descriptionSlotValue\"\n class=\"b-checkbox__description\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"description\"></slot>\n </bento-typography>\n </span>\n </label>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, toRefs } from 'vue';\n import { BentoCheckboxState, BentoCheckboxType, BentoMultiCheckboxType } from './checkbox.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import type { HTMLAttributes } from 'vue/types/jsx';\n import CheckmarkSmallIcon from '@adyen/ui-assets-icons-16/vue/checkmark-small';\n import MinusSmallIcon from '@adyen/ui-assets-icons-16/vue/minus-small';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { useDefaultSlotValidator } from '@/composables';\n import { hasSlot } from '@/utils/ts/hasSlot';\n\n /**\n * Checkboxes are used to make a binary choice about an option.\n * The label tag area is also clickable.\n *\n * @usage\n * import { BentoCheckbox } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoCheckbox },\n * template: `\n * <bento-checkbox>\n * Label text\n * <template #description>Sub label text</template>\n * </bento-checkbox>\n * `,\n * }\n */\n export default defineComponent({\n name: 'bento-checkbox',\n components: {\n BentoTypography,\n CheckmarkSmallIcon,\n MinusSmallIcon,\n },\n inheritAttrs: false,\n model: { prop: 'modelValue' },\n props: {\n /**\n * The value of the component. The DOM API casts this to a string.\n * The browser uses \"on\" as the default value.\n *\n * In the case of multiple checkboxes this value is used as a unique key.\n */\n value: { type: [String, Number], default: null },\n\n /**\n * When handling a single checkbox with a singular state, use a boolean.\n *\n * When handling multiple checkboxes, use an array of keys.\n * These keys exist as a set \"value\" prop for each checkbox.\n */\n modelValue: { type: [Boolean, Array] as PropType<BentoCheckboxType>, default: false },\n\n /**\n * Setting this property to true will disable the checkbox in your form.\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Setting this property to true will show the checkbox in error state.\n */\n hasError: { type: Boolean, default: false },\n\n /**\n * The :indeterminate CSS pseudo-class represents any form element\n * whose state is indeterminate, such as checkboxes which have their HTML indeterminate attribute\n * set to true, radio buttons which are members of a group in which all radio buttons are unchecked,\n * and indeterminate <progress> elements. https://developer.mozilla.org/en-US/docs/Web/CSS/:indeterminate\n * This property lets you control the input.indeterminate native property.\n */\n indeterminate: { type: Boolean, default: false },\n /**\n * Accessible name for the radio button component. It is strongly recommended to pas this value in case this component is used without a label.\n */\n ariaLabel: { type: String, default: null },\n },\n emits: ['input'],\n setup(props, { emit, slots }) {\n const { ariaLabel, disabled, indeterminate, modelValue, value } = toRefs(props);\n\n const defaultSlotValue = hasSlot(slots)('default');\n const descriptionSlotValue = hasSlot(slots)('description');\n\n useDefaultSlotValidator('bento-checkbox', defaultSlotValue, descriptionSlotValue);\n\n const isCheckboxGroup = computed(() => Array.isArray(modelValue.value));\n const isChecked = computed(() => {\n if (!isCheckboxGroup.value) {\n return modelValue.value as boolean;\n }\n\n return (modelValue.value as BentoMultiCheckboxType).some(item => item === value.value);\n });\n const isIndeterminate = computed(() => !isChecked.value && indeterminate.value);\n\n // ARIA fields\n const ariaChecked = computed<HTMLAttributes['aria-checked']>(() =>\n isIndeterminate.value ? 'mixed' : `${!!isChecked.value}`\n );\n\n const computedAriaLabel = useAriaLabel({\n ariaLabel,\n label: slots.default?.()?.[0]?.text ?? slots.default?.()?.[0]?.children?.toString(),\n defaultFallback: 'checkbox',\n });\n\n const ariaInvalid = computed<HTMLAttributes['aria-invalid']>(() => props.hasError);\n\n const conditionalClass = computed(() => ({\n [`b-checkbox--${BentoCheckboxState.DISABLED}`]: disabled.value,\n }));\n const conditionalClassOutline = computed(() => ({\n [`b-checkbox__outline--${BentoCheckboxState.UNCHECKED}`]: !isChecked.value && !isIndeterminate.value,\n [`b-checkbox__outline--${BentoCheckboxState.ERROR}`]: props.hasError,\n }));\n\n const onChange = (event: Event) => {\n if (disabled.value) {\n return;\n }\n\n const newValue: boolean = (event.target as HTMLInputElement).checked;\n\n if (isCheckboxGroup.value) {\n const newCheckedList = [...(modelValue.value as BentoMultiCheckboxType)];\n const index = newCheckedList.indexOf(value.value);\n\n if (index === -1) {\n newCheckedList.push(value.value);\n } else {\n newCheckedList.splice(index, 1);\n }\n emit('input', newCheckedList);\n } else {\n emit('input', newValue);\n }\n };\n\n return {\n // Values\n ariaChecked,\n computedAriaLabel,\n ariaInvalid,\n conditionalClass,\n conditionalClassOutline,\n defaultSlotValue,\n descriptionSlotValue,\n isCheckboxGroup,\n isChecked,\n isIndeterminate,\n\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Events\n onChange,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./checkbox.scss\" />\n","<template>\n <fieldset class=\"b-controls-group\" :class=\"conditionalClasses\" :form=\"form\" :disabled=\"disabled\">\n <legend class=\"b-controls-group__label\" :class=\"legendConditionalClasses\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\">\n {{ label }}\n </bento-typography>\n </legend>\n <slot />\n </fieldset>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n\n /**\n * A controls group components should be used whenever it is necessary to group a set of controls (i.e. radio buttons or checkboxes)\n * This component conforms to the official WAI-ARIA guidelines for grouping controls: https://www.w3.org/WAI/tutorials/forms/grouping/\n *\n * NOTE: This component should not be used by itself but more implemented by other exported components\n * @example\n * import { ControlsGroup, BentoCheckbox } from '@adyen/bento-vue2/';\n *\n * export default {\n * components: { ControlsGroup, RadioButton },\n * template: `\n * <controls-group label=\"Your group label\">\n * <radio-button\n * disabled\n * value=\"inputRadio\"\n * >\n * Label text\n * </radio-button>\n * <radio-button\n * value=\"inputRadio\"\n * >\n * Another label text\n * </radio-button>\n * </controls-group>\n * `\n * };\n */\n export default defineComponent({\n name: 'controls-group',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * The name associated with the group. Required for accessibility purposes.\n */\n label: { type: String, required: true },\n /**\n * Shows/hides the group label.\n */\n showLabel: { type: Boolean, default: false },\n /**\n * The value of the id attribute of a <form> element the <fieldset> is to part of, even if it is not inside the form itself.\n */\n form: { type: String, default: null },\n /**\n * Sets all child controls of the <fieldset> as disabled.\n */\n disabled: { type: Boolean, default: false },\n },\n setup(props) {\n const conditionalClasses = computed(() => ({\n 'b-controls-group--disabled': props.disabled,\n }));\n\n const legendConditionalClasses = computed(() => ({\n 'b-controls-group__label--hidden': !props.showLabel,\n }));\n\n return {\n // Enums\n BentoTypographyElement,\n\n // Values\n conditionalClasses,\n legendConditionalClasses,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./controls-group.scss\" />\n","export enum BentoCheckboxGroupVariant {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport interface BentoCheckboxGroupItem {\n value: string | number;\n label: string;\n description?: string;\n disabled?: boolean;\n hasError?: boolean;\n}\n\nexport type BentoCheckboxGroupItems = Array<BentoCheckboxGroupItem>;\n","<template>\n <controls-group\n class=\"b-checkbox-group\"\n :class=\"conditionalClasses\"\n :form=\"formId\"\n :disabled=\"disabled\"\n :label=\"label\"\n >\n <bento-checkbox\n v-for=\"item in items\"\n :key=\"item.value\"\n :model-value=\"modelValue\"\n :value=\"item.value\"\n :disabled=\"disabled || item.disabled\"\n :has-error=\"hasError || item.hasError\"\n @input=\"onInput\"\n >\n {{ item.label }}\n <template v-if=\"item.description\" #description>{{ item.description }}</template>\n </bento-checkbox>\n </controls-group>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { ControlsGroup } from '@/components/controls-group';\n import { BentoCheckboxGroupItems, BentoCheckboxGroupVariant } from './checkbox-group.types';\n import BentoCheckbox from '@/components/checkbox/checkbox.vue';\n\n /**\n * A checkbox group component should be used whenever it is necessary to group a set of checkboxes that are related together\n * This component conforms to the official WAI-ARIA guidelines for grouping controls: https://www.w3.org/WAI/tutorials/forms/grouping/\n *\n * import { BentoCheckboxGroup } from '@adyen/bento-vue2/';\n *\n * export default {\n * components: { BentoCheckboxGroup },\n * template: `\n * <bento-checkbox-group\n * label=\"Your group label\"\n * :items=\"[\n * { value: 1, label: 'Your label' },\n * { value: 2, label: 'Another label', description: 'Your sub label' },\n * ]\"\n * />\n * `\n * };\n */\n export default defineComponent({\n name: 'bento-checkbox-group',\n components: { BentoCheckbox, ControlsGroup },\n inheritAttrs: false,\n props: {\n /**\n * The checkbox group's items.\n */\n items: {\n type: Array as PropType<BentoCheckboxGroupItems>,\n required: true,\n },\n /**\n * The checkbox group's layout. It can be vertical or horizontal. Defaults to vertical.\n */\n variant: {\n type: String as PropType<BentoCheckboxGroupVariant>,\n default: BentoCheckboxGroupVariant.VERTICAL,\n validator: (value: BentoCheckboxGroupVariant) =>\n Object.values(BentoCheckboxGroupVariant).includes(value),\n },\n /**\n * The form id the checkbox group is associated with. Defaults to null, as a checkbox group can also be used standalone.\n */\n formId: {\n type: String,\n default: null,\n },\n /**\n * If set to true, renders all checkboxes in the group in a disabled state.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * If set to true, renders all checkboxes in the group in an error state.\n */\n hasError: {\n type: Boolean,\n default: false,\n },\n /**\n * The name associated with the group. Required for accessibility purposes.\n */\n label: { type: String, required: true },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n 'b-checkbox-group--horizontal': props.variant === BentoCheckboxGroupVariant.HORIZONTAL,\n }));\n const modelValue = ref([]);\n\n const onInput = value => {\n modelValue.value = value;\n emit('input', value);\n };\n\n return {\n // Values\n conditionalClasses,\n modelValue,\n\n // Methods\n onInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./checkbox-group.scss\" />\n","export enum BentoAvatarImageVariant {\n LARGE = 'large',\n SMALL = 'small',\n}\n\nexport enum BentoAvatarImageColor {\n BLUE = 'blue',\n GREEN = 'green',\n RED = 'red',\n YELLOW = 'yellow',\n}\n","<template>\n <div class=\"b-avatar-image\" :class=\"conditionalClasses\" aria-hidden=\"true\" data-testid=\"avatar\">\n <img v-if=\"src\" :src=\"src\" class=\"b-avatar-image__image\" alt=\"Profile picture\" data-testid=\"avatar-content\" />\n <div v-else class=\"b-avatar-image__default\" data-testid=\"avatar-content\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.BODY\" strongest>\n {{ initials }}\n </bento-typography>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, toRefs } from 'vue';\n import { BentoAvatarImageColor, BentoAvatarImageVariant } from './avatar-image.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { useInitials } from '@/composables';\n\n export default defineComponent({\n name: 'avatar-image',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Image src to load the profile picture.\n */\n src: {\n type: String,\n default: null,\n },\n /**\n * Name of the user that will be used to extract initials to display default value.\n * John => J\n * John Smith => JS\n * John Smith Doe => JD\n * John Smith Doe Holly => JH\n */\n username: {\n type: String,\n default: null,\n },\n /**\n * Variants supported for small and large.\n * Default - large\n */\n variant: {\n type: String as PropType<BentoAvatarImageVariant>,\n default: BentoAvatarImageVariant.LARGE,\n validator: (value: BentoAvatarImageVariant) => Object.values(BentoAvatarImageVariant).includes(value),\n },\n /**\n * Avatar color. Defaults to yellow.\n */\n color: {\n type: String as PropType<BentoAvatarImageColor>,\n default: BentoAvatarImageColor.YELLOW,\n validator: (value: BentoAvatarImageColor) => Object.values(BentoAvatarImageColor).includes(value),\n },\n },\n setup(props) {\n const { username } = toRefs(props);\n const initials = useInitials(username);\n\n const conditionalClasses = computed(() => ({\n [`b-avatar-image--${BentoAvatarImageVariant.SMALL}`]: props.variant === BentoAvatarImageVariant.SMALL,\n [`b-avatar-image--${props.color}`]: props.color,\n }));\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n conditionalClasses,\n initials,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./avatar-image.scss\" />\n","<template>\n <div class=\"b-avatar\" :aria-label=\"computedAriaLabel\">\n <avatar-image\n :src=\"src\"\n :username=\"computedUsername\"\n :variant=\"BentoAvatarImageVariant.SMALL\"\n :color=\"avatarColor\"\n />\n <bento-typography\n v-if=\"!iconOnly\"\n class=\"b-avatar__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n {{ username }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, toRefs } from 'vue';\n import { AvatarImage, BentoAvatarImageColor, BentoAvatarImageVariant } from '@/components/avatar-image';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { useInitials } from '@/composables';\n\n /**\n * Displays an user profile including an avatar and optionally a label.\n *\n * @example\n * import { BentoUserProfile } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoUserProfile },\n * template: `\n * <bento-user-profile :src=\"userAvatarSrc\" username=\"Jane\" />\n */\n export default defineComponent({\n name: 'bento-avatar',\n components: { AvatarImage, BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Displays the user profile without the label.\n */\n iconOnly: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Name of the user that will be used both in the label and to extract initials to display default value.\n * John => J\n * John Smith => JS\n * John Smith Doe => JD\n * John Smith Doe Holly => JH\n */\n username: {\n type: String,\n required: true,\n },\n\n /**\n * Image src to load the profile picture.\n */\n src: {\n type: String,\n default: null,\n },\n },\n\n setup(props) {\n const { username } = toRefs(props);\n\n const computedAriaLabel = computed(() => (props.iconOnly ? props.username : null));\n const computedUsername = computed(() => (!props.src ? props.username : null));\n const initials = useInitials(username);\n\n // Returns the UTF-16 char code\n const charCode = computed(() => (initials.value ? initials.value.charCodeAt(0) - 65 : null));\n\n // Returns a computed color based on the letter passed\n const avatarColor = computed(() => {\n const numberOfAlphabetLetters = 26;\n const numberOfColors = Object.keys(BentoAvatarImageColor).length;\n const rangeStep = numberOfAlphabetLetters / numberOfColors;\n\n if (charCode.value <= rangeStep) {\n return BentoAvatarImageColor.YELLOW;\n }\n if (charCode.value <= rangeStep * 2) {\n return BentoAvatarImageColor.BLUE;\n }\n if (charCode.value <= rangeStep * 3) {\n return BentoAvatarImageColor.GREEN;\n }\n return BentoAvatarImageColor.RED;\n });\n\n return {\n // Enums\n BentoAvatarImageVariant,\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n computedAriaLabel,\n computedUsername,\n avatarColor,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./avatar.scss\" />\n","<template>\n <label\n class=\"b-listbox-option\"\n role=\"option\"\n :class=\"conditionalClasses\"\n v-bind=\"{ ...$attrs, ...$props }\"\n @click=\"onClick\"\n @keydown.enter.self=\"$emit('enter-pressed')\"\n @keydown.escape.self=\"$emit('escape-pressed')\"\n >\n <slot></slot>\n </label>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n\n /**\n * listbox option wrapper.\n * Contains only styles and allows the Multi-Select and Single-Select DRY the styles.\n *\n * Options and Attributes are inherited (`inheritAttrs: true`)\n *\n * @example\n * <bento-listbox-option\n * ...props\n * ...attrs\n * />\n */\n export default defineComponent({\n name: 'bento-listbox-option',\n props: {\n /**\n * Setting this property to true will disable the option.\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Indicates if the value is selected. Only one element can be selected at a time.\n */\n selected: { type: Boolean, default: false },\n },\n emits: ['click', 'enter-pressed', 'escape-pressed'],\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n 'b-listbox-option--disabled': props.disabled,\n 'b-listbox-option--selected': props.selected,\n }));\n\n const onClick = (e: Event) => emit('click', e);\n\n return {\n // Values\n conditionalClasses,\n\n // Events\n onClick,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./listbox-option.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M14.5303 4.53033C14.8232 4.23744 14.8232 3.76256 14.5303 3.46967C14.2374 3.17678 13.7626 3.17678 13.4697 3.46967L6 10.9393L2.53033 7.46967C2.23744 7.17678 1.76256 7.17678 1.46967 7.46967C1.17678 7.76256 1.17678 8.23744 1.46967 8.53033L5.46967 12.5303C5.50628 12.5669 5.54574 12.599 5.58732 12.6264C5.87844 12.8186 6.27405 12.7866 6.53033 12.5303L14.5303 4.53033Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <bento-listbox-option\n class=\"b-listbox-single-select-option\"\n :disabled=\"disabled\"\n :selected=\"selected\"\n :aria-selected=\"ariaSelected\"\n :aria-disabled=\"ariaDisabled\"\n :tabindex=\"tabIndex\"\n @click=\"onOptionSelected\"\n @enter-pressed=\"onOptionSelected\"\n @escape-pressed=\"$emit('escape-pressed')\"\n >\n <slot v-bind=\"option\">\n <span class=\"b-listbox-single-select-option__text\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\">{{ option.label }}</bento-typography>\n <bento-typography\n v-if=\"option.description\"\n class=\"b-listbox-single-select-option__description\"\n :el=\"BentoTypographyElement.SPAN\"\n >\n {{ option.description }}\n </bento-typography>\n </span>\n </slot>\n <span class=\"b-listbox-single-select-option__check-icon\">\n <checkmark-icon v-show=\"selected\" svg-title=\"selected\" />\n </span>\n </bento-listbox-option>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { BentoListboxOption } from '../listbox-option';\n import type { BentoListboxOptionItem } from '@/types';\n import CheckmarkIcon from '@adyen/ui-assets-icons-16/vue/checkmark';\n\n /**\n * Listbox option element.\n *\n * @example\n * <bento-listbox-single-select-option\n * v-for=\"option in options\"\n * :key=\"option.value\"\n * :option=\"option\"\n * :selected=\"option.selected\"\n * @select=\"onOptionSelected\"\n * />\n */\n export default defineComponent({\n name: 'bento-listbox-single-select-option',\n components: {\n BentoListboxOption,\n BentoTypography,\n CheckmarkIcon,\n },\n inheritAttrs: false,\n props: {\n /**\n * Setting this property to true will disable the option.\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * The option item that contains all the option item's data.\n * @type {BentoListboxOptionItem}\n */\n option: {\n type: Object as PropType<BentoListboxOptionItem>,\n required: true,\n },\n\n /**\n * Indicates if the value is selected. Only one element can be selected at a time.\n */\n selected: { type: Boolean, default: false },\n },\n emits: ['select', 'escape-pressed'],\n setup(props, { emit }) {\n const onOptionSelected = () => {\n if (props.disabled) {\n return;\n }\n\n /**\n * Trigerred when an option is clicked.\n * Indicates which option was selected.\n *\n * @event select\n * @property {number} selectedValue - Selected option's value\n */\n emit('select', props.option.value);\n };\n\n const ariaDisabled = computed(() => (props.disabled ? true : null));\n const ariaSelected = computed(() => (props.selected ? true : null));\n const tabIndex = computed(() => (props.disabled ? -1 : 0));\n\n return {\n // Values\n ariaDisabled,\n ariaSelected,\n tabIndex,\n\n // Enums\n BentoTypographyElement,\n\n // Events\n onOptionSelected,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./listbox-single-select-option.scss\" />\n","/*!\n * shared v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n/**\r\n * Original Utilities\r\n * written by kazuya kawaguchi\r\n */\r\nconst inBrowser = typeof window !== 'undefined';\r\nlet mark;\r\nlet measure;\r\nif ((process.env.NODE_ENV !== 'production')) {\r\n const perf = inBrowser && window.performance;\r\n if (perf &&\r\n perf.mark &&\r\n perf.measure &&\r\n perf.clearMarks &&\r\n perf.clearMeasures) {\r\n mark = (tag) => perf.mark(tag);\r\n measure = (name, startTag, endTag) => {\r\n perf.measure(name, startTag, endTag);\r\n perf.clearMarks(startTag);\r\n perf.clearMarks(endTag);\r\n };\r\n }\r\n}\r\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\r\n/* eslint-disable */\r\nfunction format(message, ...args) {\r\n if (args.length === 1 && isObject(args[0])) {\r\n args = args[0];\r\n }\r\n if (!args || !args.hasOwnProperty) {\r\n args = {};\r\n }\r\n return message.replace(RE_ARGS, (match, identifier) => {\r\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\r\n });\r\n}\r\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\r\nconst makeSymbol = (name) => hasSymbol ? Symbol(name) : name;\r\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\r\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\r\n .replace(/\\u2028/g, '\\\\u2028')\r\n .replace(/\\u2029/g, '\\\\u2029')\r\n .replace(/\\u0027/g, '\\\\u0027');\r\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\r\nconst isDate = (val) => toTypeString(val) === '[object Date]';\r\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\r\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\r\nfunction warn(msg, err) {\r\n if (typeof console !== 'undefined') {\r\n console.warn(`[intlify] ` + msg);\r\n /* istanbul ignore if */\r\n if (err) {\r\n console.warn(err.stack);\r\n }\r\n }\r\n}\r\nconst assign = Object.assign;\r\nlet _globalThis;\r\nconst getGlobalThis = () => {\r\n // prettier-ignore\r\n return (_globalThis ||\r\n (_globalThis =\r\n typeof globalThis !== 'undefined'\r\n ? globalThis\r\n : typeof self !== 'undefined'\r\n ? self\r\n : typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : {}));\r\n};\r\nfunction escapeHtml(rawText) {\r\n return rawText\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n}\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nfunction hasOwn(obj, key) {\r\n return hasOwnProperty.call(obj, key);\r\n}\r\n/* eslint-enable */\r\n/**\r\n * Useful Utilities By Evan you\r\n * Modified by kazuya kawaguchi\r\n * MIT License\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\r\n */\r\nconst isArray = Array.isArray;\r\nconst isFunction = (val) => typeof val === 'function';\r\nconst isString = (val) => typeof val === 'string';\r\nconst isBoolean = (val) => typeof val === 'boolean';\r\nconst isSymbol = (val) => typeof val === 'symbol';\r\nconst isObject = (val) => // eslint-disable-line\r\n val !== null && typeof val === 'object';\r\nconst isPromise = (val) => {\r\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n};\r\nconst objectToString = Object.prototype.toString;\r\nconst toTypeString = (value) => objectToString.call(value);\r\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\r\n// for converting list and named values to displayed strings.\r\nconst toDisplayString = (val) => {\r\n return val == null\r\n ? ''\r\n : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\r\n ? JSON.stringify(val, null, 2)\r\n : String(val);\r\n};\r\nconst RANGE = 2;\r\nfunction generateCodeFrame(source, start = 0, end = source.length) {\r\n const lines = source.split(/\\r?\\n/);\r\n let count = 0;\r\n const res = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n count += lines[i].length + 1;\r\n if (count >= start) {\r\n for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\r\n if (j < 0 || j >= lines.length)\r\n continue;\r\n const line = j + 1;\r\n res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\r\n const lineLength = lines[j].length;\r\n if (j === i) {\r\n // push underline\r\n const pad = start - (count - lineLength) + 1;\r\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\r\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\r\n }\r\n else if (j > i) {\r\n if (end > count) {\r\n const length = Math.max(Math.min(end - count, lineLength), 1);\r\n res.push(` | ` + '^'.repeat(length));\r\n }\r\n count += lineLength + 1;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n return res.join('\\n');\r\n}\n\n/**\r\n * Event emitter, forked from the below:\r\n * - original repository url: https://github.com/developit/mitt\r\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\r\n * - author: Jason Miller (https://github.com/developit)\r\n * - license: MIT\r\n */\r\n/**\r\n * Create a event emitter\r\n *\r\n * @returns An event emitter\r\n */\r\nfunction createEmitter() {\r\n const events = new Map();\r\n const emitter = {\r\n events,\r\n on(event, handler) {\r\n const handlers = events.get(event);\r\n const added = handlers && handlers.push(handler);\r\n if (!added) {\r\n events.set(event, [handler]);\r\n }\r\n },\r\n off(event, handler) {\r\n const handlers = events.get(event);\r\n if (handlers) {\r\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\r\n }\r\n },\r\n emit(event, payload) {\r\n (events.get(event) || [])\r\n .slice()\r\n .map(handler => handler(payload));\r\n (events.get('*') || [])\r\n .slice()\r\n .map(handler => handler(event, payload));\r\n }\r\n };\r\n return emitter;\r\n}\n\nexport { assign, createEmitter, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, makeSymbol, mark, measure, objectToString, toDisplayString, toTypeString, warn };\n","/*!\n * message-compiler v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { format, assign, isString } from '@intlify/shared';\n\nconst CompileErrorCodes = {\r\n // tokenizer error codes\r\n EXPECTED_TOKEN: 1,\r\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\r\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\r\n UNKNOWN_ESCAPE_SEQUENCE: 4,\r\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\r\n UNBALANCED_CLOSING_BRACE: 6,\r\n UNTERMINATED_CLOSING_BRACE: 7,\r\n EMPTY_PLACEHOLDER: 8,\r\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\r\n INVALID_LINKED_FORMAT: 10,\r\n // parser error codes\r\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\r\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\r\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\r\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\r\n // Special value for higher-order compilers to pick up the last code\r\n // to avoid collision of error codes. This should always be kept as the last\r\n // item.\r\n __EXTEND_POINT__: 15\r\n};\r\n/** @internal */\r\nconst errorMessages = {\r\n // tokenizer error messages\r\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\r\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\r\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\r\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\r\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\r\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\r\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\r\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\r\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\r\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\r\n // parser error messages\r\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\r\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`\r\n};\r\nfunction createCompileError(code, loc, options = {}) {\r\n const { domain, messages, args } = options;\r\n const msg = (process.env.NODE_ENV !== 'production')\r\n ? format((messages || errorMessages)[code] || '', ...(args || []))\r\n : code;\r\n const error = new SyntaxError(String(msg));\r\n error.code = code;\r\n if (loc) {\r\n error.location = loc;\r\n }\r\n error.domain = domain;\r\n return error;\r\n}\r\n/** @internal */\r\nfunction defaultOnError(error) {\r\n throw error;\r\n}\n\nconst LocationStub = {\r\n start: { line: 1, column: 1, offset: 0 },\r\n end: { line: 1, column: 1, offset: 0 }\r\n};\r\nfunction createPosition(line, column, offset) {\r\n return { line, column, offset };\r\n}\r\nfunction createLocation(start, end, source) {\r\n const loc = { start, end };\r\n if (source != null) {\r\n loc.source = source;\r\n }\r\n return loc;\r\n}\n\nconst CHAR_SP = ' ';\r\nconst CHAR_CR = '\\r';\r\nconst CHAR_LF = '\\n';\r\nconst CHAR_LS = String.fromCharCode(0x2028);\r\nconst CHAR_PS = String.fromCharCode(0x2029);\r\nfunction createScanner(str) {\r\n const _buf = str;\r\n let _index = 0;\r\n let _line = 1;\r\n let _column = 1;\r\n let _peekOffset = 0;\r\n const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\r\n const isLF = (index) => _buf[index] === CHAR_LF;\r\n const isPS = (index) => _buf[index] === CHAR_PS;\r\n const isLS = (index) => _buf[index] === CHAR_LS;\r\n const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\r\n const index = () => _index;\r\n const line = () => _line;\r\n const column = () => _column;\r\n const peekOffset = () => _peekOffset;\r\n const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\r\n const currentChar = () => charAt(_index);\r\n const currentPeek = () => charAt(_index + _peekOffset);\r\n function next() {\r\n _peekOffset = 0;\r\n if (isLineEnd(_index)) {\r\n _line++;\r\n _column = 0;\r\n }\r\n if (isCRLF(_index)) {\r\n _index++;\r\n }\r\n _index++;\r\n _column++;\r\n return _buf[_index];\r\n }\r\n function peek() {\r\n if (isCRLF(_index + _peekOffset)) {\r\n _peekOffset++;\r\n }\r\n _peekOffset++;\r\n return _buf[_index + _peekOffset];\r\n }\r\n function reset() {\r\n _index = 0;\r\n _line = 1;\r\n _column = 1;\r\n _peekOffset = 0;\r\n }\r\n function resetPeek(offset = 0) {\r\n _peekOffset = offset;\r\n }\r\n function skipToPeek() {\r\n const target = _index + _peekOffset;\r\n // eslint-disable-next-line no-unmodified-loop-condition\r\n while (target !== _index) {\r\n next();\r\n }\r\n _peekOffset = 0;\r\n }\r\n return {\r\n index,\r\n line,\r\n column,\r\n peekOffset,\r\n charAt,\r\n currentChar,\r\n currentPeek,\r\n next,\r\n peek,\r\n reset,\r\n resetPeek,\r\n skipToPeek\r\n };\r\n}\n\nconst EOF = undefined;\r\nconst LITERAL_DELIMITER = \"'\";\r\nconst ERROR_DOMAIN$1 = 'tokenizer';\r\nfunction createTokenizer(source, options = {}) {\r\n const location = options.location !== false;\r\n const _scnr = createScanner(source);\r\n const currentOffset = () => _scnr.index();\r\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\r\n const _initLoc = currentPosition();\r\n const _initOffset = currentOffset();\r\n const _context = {\r\n currentType: 14 /* EOF */,\r\n offset: _initOffset,\r\n startLoc: _initLoc,\r\n endLoc: _initLoc,\r\n lastType: 14 /* EOF */,\r\n lastOffset: _initOffset,\r\n lastStartLoc: _initLoc,\r\n lastEndLoc: _initLoc,\r\n braceNest: 0,\r\n inLinked: false,\r\n text: ''\r\n };\r\n const context = () => _context;\r\n const { onError } = options;\r\n function emitError(code, pos, offset, ...args) {\r\n const ctx = context();\r\n pos.column += offset;\r\n pos.offset += offset;\r\n if (onError) {\r\n const loc = createLocation(ctx.startLoc, pos);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN$1,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function getToken(context, type, value) {\r\n context.endLoc = currentPosition();\r\n context.currentType = type;\r\n const token = { type };\r\n if (location) {\r\n token.loc = createLocation(context.startLoc, context.endLoc);\r\n }\r\n if (value != null) {\r\n token.value = value;\r\n }\r\n return token;\r\n }\r\n const getEndToken = (context) => getToken(context, 14 /* EOF */);\r\n function eat(scnr, ch) {\r\n if (scnr.currentChar() === ch) {\r\n scnr.next();\r\n return ch;\r\n }\r\n else {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function peekSpaces(scnr) {\r\n let buf = '';\r\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\r\n buf += scnr.currentPeek();\r\n scnr.peek();\r\n }\r\n return buf;\r\n }\r\n function skipSpaces(scnr) {\r\n const buf = peekSpaces(scnr);\r\n scnr.skipToPeek();\r\n return buf;\r\n }\r\n function isIdentifierStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n cc === 95 // _\r\n );\r\n }\r\n function isNumberStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n }\r\n function isNamedIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isListIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\r\n const ret = isNumberStart(ch);\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLiteralStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDotStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 8 /* LinkedAlias */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \".\" /* LinkedDot */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedModifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 9 /* LinkedDot */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDelimiterStart(scnr, context) {\r\n const { currentType } = context;\r\n if (!(currentType === 8 /* LinkedAlias */ ||\r\n currentType === 12 /* LinkedModifier */)) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \":\" /* LinkedDelimiter */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedReferStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 10 /* LinkedDelimiter */) {\r\n return false;\r\n }\r\n const fn = () => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return isIdentifierStart(scnr.peek());\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n ch === \":\" /* LinkedDelimiter */ ||\r\n ch === \".\" /* LinkedDot */ ||\r\n ch === CHAR_SP ||\r\n !ch) {\r\n return false;\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn();\r\n }\r\n else {\r\n // other characters\r\n return isIdentifierStart(ch);\r\n }\r\n };\r\n const ret = fn();\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isPluralStart(scnr) {\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"|\" /* Pipe */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function detectModuloStart(scnr) {\r\n const spaces = peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"%\" /* Modulo */ &&\r\n scnr.peek() === \"{\" /* BraceLeft */;\r\n scnr.resetPeek();\r\n return {\r\n isModulo: ret,\r\n hasSpace: spaces.length > 0\r\n };\r\n }\r\n function isTextStart(scnr, reset = true) {\r\n const fn = (hasSpace = false, prev = '', detectModulo = false) => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return prev === \"%\" /* Modulo */ ? false : hasSpace;\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ || !ch) {\r\n return prev === \"%\" /* Modulo */ ? true : hasSpace;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n scnr.peek();\r\n return fn(hasSpace, \"%\" /* Modulo */, true);\r\n }\r\n else if (ch === \"|\" /* Pipe */) {\r\n return prev === \"%\" /* Modulo */ || detectModulo\r\n ? true\r\n : !(prev === CHAR_SP || prev === CHAR_LF);\r\n }\r\n else if (ch === CHAR_SP) {\r\n scnr.peek();\r\n return fn(true, CHAR_SP, detectModulo);\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn(true, CHAR_LF, detectModulo);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n const ret = fn();\r\n reset && scnr.resetPeek();\r\n return ret;\r\n }\r\n function takeChar(scnr, fn) {\r\n const ch = scnr.currentChar();\r\n if (ch === EOF) {\r\n return EOF;\r\n }\r\n if (fn(ch)) {\r\n scnr.next();\r\n return ch;\r\n }\r\n return null;\r\n }\r\n function takeIdentifierChar(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n (cc >= 48 && cc <= 57) || // 0-9\r\n cc === 95 || // _\r\n cc === 36 // $\r\n );\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeHexDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 48 && cc <= 57) || // 0-9\r\n (cc >= 65 && cc <= 70) || // A-F\r\n (cc >= 97 && cc <= 102)); // a-f\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function getDigits(scnr) {\r\n let ch = '';\r\n let num = '';\r\n while ((ch = takeDigit(scnr))) {\r\n num += ch;\r\n }\r\n return num;\r\n }\r\n function readModulo(scnr) {\r\n skipSpaces(scnr);\r\n const ch = scnr.currentChar();\r\n if (ch !== \"%\" /* Modulo */) {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n }\r\n scnr.next();\r\n return \"%\" /* Modulo */;\r\n }\r\n function readText(scnr) {\r\n let buf = '';\r\n while (true) {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"}\" /* BraceRight */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n break;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else if (ch === CHAR_SP || ch === CHAR_LF) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else if (isPluralStart(scnr)) {\r\n break;\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n return buf;\r\n }\r\n function readNamedIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return name;\r\n }\r\n function readListIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let value = '';\r\n if (scnr.currentChar() === '-') {\r\n scnr.next();\r\n value += `-${getDigits(scnr)}`;\r\n }\r\n else {\r\n value += getDigits(scnr);\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return value;\r\n }\r\n function readLiteral(scnr) {\r\n skipSpaces(scnr);\r\n eat(scnr, `\\'`);\r\n let ch = '';\r\n let literal = '';\r\n const fn = (x) => x !== LITERAL_DELIMITER && x !== CHAR_LF;\r\n while ((ch = takeChar(scnr, fn))) {\r\n if (ch === '\\\\') {\r\n literal += readEscapeSequence(scnr);\r\n }\r\n else {\r\n literal += ch;\r\n }\r\n }\r\n const current = scnr.currentChar();\r\n if (current === CHAR_LF || current === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\r\n // TODO: Is it correct really?\r\n if (current === CHAR_LF) {\r\n scnr.next();\r\n eat(scnr, `\\'`);\r\n }\r\n return literal;\r\n }\r\n eat(scnr, `\\'`);\r\n return literal;\r\n }\r\n function readEscapeSequence(scnr) {\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case '\\\\':\r\n case `\\'`:\r\n scnr.next();\r\n return `\\\\${ch}`;\r\n case 'u':\r\n return readUnicodeEscapeSequence(scnr, ch, 4);\r\n case 'U':\r\n return readUnicodeEscapeSequence(scnr, ch, 6);\r\n default:\r\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\r\n eat(scnr, unicode);\r\n let sequence = '';\r\n for (let i = 0; i < digits; i++) {\r\n const ch = takeHexDigit(scnr);\r\n if (!ch) {\r\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\r\n break;\r\n }\r\n sequence += ch;\r\n }\r\n return `\\\\${unicode}${sequence}`;\r\n }\r\n function readInvalidIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let identifiers = '';\r\n const closure = (ch) => ch !== \"{\" /* BraceLeft */ &&\r\n ch !== \"}\" /* BraceRight */ &&\r\n ch !== CHAR_SP &&\r\n ch !== CHAR_LF;\r\n while ((ch = takeChar(scnr, closure))) {\r\n identifiers += ch;\r\n }\r\n return identifiers;\r\n }\r\n function readLinkedModifier(scnr) {\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n return name;\r\n }\r\n function readLinkedRefer(scnr) {\r\n const fn = (detect = false, buf) => {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_SP) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_LF) {\r\n buf += ch;\r\n scnr.next();\r\n return fn(detect, buf);\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n return fn(true, buf);\r\n }\r\n };\r\n return fn(false, '');\r\n }\r\n function readPlural(scnr) {\r\n skipSpaces(scnr);\r\n const plural = eat(scnr, \"|\" /* Pipe */);\r\n skipSpaces(scnr);\r\n return plural;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInPlaceholder(scnr, context) {\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n if (context.braceNest >= 1) {\r\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 2 /* BraceLeft */, \"{\" /* BraceLeft */);\r\n skipSpaces(scnr);\r\n context.braceNest++;\r\n return token;\r\n case \"}\" /* BraceRight */:\r\n if (context.braceNest > 0 &&\r\n context.currentType === 2 /* BraceLeft */) {\r\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n context.braceNest--;\r\n context.braceNest > 0 && skipSpaces(scnr);\r\n if (context.inLinked && context.braceNest === 0) {\r\n context.inLinked = false;\r\n }\r\n return token;\r\n case \"@\" /* LinkedAlias */:\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = readTokenInLinked(scnr, context) || getEndToken(context);\r\n context.braceNest = 0;\r\n return token;\r\n default:\r\n let validNamedIdentifier = true;\r\n let validListIdentifier = true;\r\n let validLiteral = true;\r\n if (isPluralStart(scnr)) {\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (context.braceNest > 0 &&\r\n (context.currentType === 5 /* Named */ ||\r\n context.currentType === 6 /* List */ ||\r\n context.currentType === 7 /* Literal */)) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n context.braceNest = 0;\r\n return readToken(scnr, context);\r\n }\r\n if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\r\n token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\r\n token = getToken(context, 6 /* List */, readListIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validLiteral = isLiteralStart(scnr, context))) {\r\n token = getToken(context, 7 /* Literal */, readLiteral(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\r\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\r\n token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));\r\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInLinked(scnr, context) {\r\n const { currentType } = context;\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n if ((currentType === 8 /* LinkedAlias */ ||\r\n currentType === 9 /* LinkedDot */ ||\r\n currentType === 12 /* LinkedModifier */ ||\r\n currentType === 10 /* LinkedDelimiter */) &&\r\n (ch === CHAR_LF || ch === CHAR_SP)) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n switch (ch) {\r\n case \"@\" /* LinkedAlias */:\r\n scnr.next();\r\n token = getToken(context, 8 /* LinkedAlias */, \"@\" /* LinkedAlias */);\r\n context.inLinked = true;\r\n return token;\r\n case \".\" /* LinkedDot */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 9 /* LinkedDot */, \".\" /* LinkedDot */);\r\n case \":\" /* LinkedDelimiter */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 10 /* LinkedDelimiter */, \":\" /* LinkedDelimiter */);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (isLinkedDotStart(scnr, context) ||\r\n isLinkedDelimiterStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return readTokenInLinked(scnr, context);\r\n }\r\n if (isLinkedModifierStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));\r\n }\r\n if (isLinkedReferStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n if (ch === \"{\" /* BraceLeft */) {\r\n // scan the placeholder\r\n return readTokenInPlaceholder(scnr, context) || token;\r\n }\r\n else {\r\n return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));\r\n }\r\n }\r\n if (currentType === 8 /* LinkedAlias */) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return readToken(scnr, context);\r\n }\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readToken(scnr, context) {\r\n let token = { type: 14 /* EOF */ };\r\n if (context.braceNest > 0) {\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n }\r\n if (context.inLinked) {\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n }\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n case \"}\" /* BraceRight */:\r\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\r\n scnr.next();\r\n return getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n case \"@\" /* LinkedAlias */:\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n const { isModulo, hasSpace } = detectModuloStart(scnr);\r\n if (isModulo) {\r\n return hasSpace\r\n ? getToken(context, 0 /* Text */, readText(scnr))\r\n : getToken(context, 4 /* Modulo */, readModulo(scnr));\r\n }\r\n if (isTextStart(scnr)) {\r\n return getToken(context, 0 /* Text */, readText(scnr));\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n function nextToken() {\r\n const { currentType, offset, startLoc, endLoc } = _context;\r\n _context.lastType = currentType;\r\n _context.lastOffset = offset;\r\n _context.lastStartLoc = startLoc;\r\n _context.lastEndLoc = endLoc;\r\n _context.offset = currentOffset();\r\n _context.startLoc = currentPosition();\r\n if (_scnr.currentChar() === EOF) {\r\n return getToken(_context, 14 /* EOF */);\r\n }\r\n return readToken(_scnr, _context);\r\n }\r\n return {\r\n nextToken,\r\n currentOffset,\r\n currentPosition,\r\n context\r\n };\r\n}\n\nconst ERROR_DOMAIN = 'parser';\r\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\r\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\r\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\r\n switch (match) {\r\n case `\\\\\\\\`:\r\n return `\\\\`;\r\n case `\\\\\\'`:\r\n return `\\'`;\r\n default: {\r\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\r\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\r\n return String.fromCodePoint(codePoint);\r\n }\r\n // invalid ...\r\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\r\n return '�';\r\n }\r\n }\r\n}\r\nfunction createParser(options = {}) {\r\n const location = options.location !== false;\r\n const { onError } = options;\r\n function emitError(tokenzer, code, start, offset, ...args) {\r\n const end = tokenzer.currentPosition();\r\n end.offset += offset;\r\n end.column += offset;\r\n if (onError) {\r\n const loc = createLocation(start, end);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function startNode(type, offset, loc) {\r\n const node = {\r\n type,\r\n start: offset,\r\n end: offset\r\n };\r\n if (location) {\r\n node.loc = { start: loc, end: loc };\r\n }\r\n return node;\r\n }\r\n function endNode(node, offset, pos, type) {\r\n node.end = offset;\r\n if (type) {\r\n node.type = type;\r\n }\r\n if (location && node.loc) {\r\n node.loc.end = pos;\r\n }\r\n }\r\n function parseText(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(3 /* Text */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseList(tokenizer, index) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(5 /* List */, offset, loc);\r\n node.index = parseInt(index, 10);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseNamed(tokenizer, key) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(4 /* Named */, offset, loc);\r\n node.key = key;\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLiteral(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(9 /* Literal */, offset, loc);\r\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinkedModifier(tokenizer) {\r\n const token = tokenizer.nextToken();\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\r\n const node = startNode(8 /* LinkedModifier */, offset, loc);\r\n if (token.type !== 12 /* LinkedModifier */) {\r\n // empty modifier\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\r\n node.value = '';\r\n endNode(node, offset, loc);\r\n return {\r\n nextConsumeToken: token,\r\n node\r\n };\r\n }\r\n // check token\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.value = token.value || '';\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node\r\n };\r\n }\r\n function parseLinkedKey(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinked(tokenizer) {\r\n const context = tokenizer.context();\r\n const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);\r\n let token = tokenizer.nextToken();\r\n if (token.type === 9 /* LinkedDot */) {\r\n const parsed = parseLinkedModifier(tokenizer);\r\n linkedNode.modifier = parsed.node;\r\n token = parsed.nextConsumeToken || tokenizer.nextToken();\r\n }\r\n // asset check token\r\n if (token.type !== 10 /* LinkedDelimiter */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n token = tokenizer.nextToken();\r\n // skip brace left\r\n if (token.type === 2 /* BraceLeft */) {\r\n token = tokenizer.nextToken();\r\n }\r\n switch (token.type) {\r\n case 11 /* LinkedKey */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseNamed(tokenizer, token.value || '');\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseList(tokenizer, token.value || '');\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\r\n break;\r\n default:\r\n // empty key\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\r\n const nextContext = tokenizer.context();\r\n const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);\r\n emptyLinkedKeyNode.value = '';\r\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\r\n linkedNode.key = emptyLinkedKeyNode;\r\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\r\n return {\r\n nextConsumeToken: token,\r\n node: linkedNode\r\n };\r\n }\r\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node: linkedNode\r\n };\r\n }\r\n function parseMessage(tokenizer) {\r\n const context = tokenizer.context();\r\n const startOffset = context.currentType === 1 /* Pipe */\r\n ? tokenizer.currentOffset()\r\n : context.offset;\r\n const startLoc = context.currentType === 1 /* Pipe */\r\n ? context.endLoc\r\n : context.startLoc;\r\n const node = startNode(2 /* Message */, startOffset, startLoc);\r\n node.items = [];\r\n let nextToken = null;\r\n do {\r\n const token = nextToken || tokenizer.nextToken();\r\n nextToken = null;\r\n switch (token.type) {\r\n case 0 /* Text */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseText(tokenizer, token.value || ''));\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseList(tokenizer, token.value || ''));\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseNamed(tokenizer, token.value || ''));\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseLiteral(tokenizer, token.value || ''));\r\n break;\r\n case 8 /* LinkedAlias */:\r\n const parsed = parseLinked(tokenizer);\r\n node.items.push(parsed.node);\r\n nextToken = parsed.nextConsumeToken || null;\r\n break;\r\n }\r\n } while (context.currentType !== 14 /* EOF */ &&\r\n context.currentType !== 1 /* Pipe */);\r\n // adjust message node loc\r\n const endOffset = context.currentType === 1 /* Pipe */\r\n ? context.lastOffset\r\n : tokenizer.currentOffset();\r\n const endLoc = context.currentType === 1 /* Pipe */\r\n ? context.lastEndLoc\r\n : tokenizer.currentPosition();\r\n endNode(node, endOffset, endLoc);\r\n return node;\r\n }\r\n function parsePlural(tokenizer, offset, loc, msgNode) {\r\n const context = tokenizer.context();\r\n let hasEmptyMessage = msgNode.items.length === 0;\r\n const node = startNode(1 /* Plural */, offset, loc);\r\n node.cases = [];\r\n node.cases.push(msgNode);\r\n do {\r\n const msg = parseMessage(tokenizer);\r\n if (!hasEmptyMessage) {\r\n hasEmptyMessage = msg.items.length === 0;\r\n }\r\n node.cases.push(msg);\r\n } while (context.currentType !== 14 /* EOF */);\r\n if (hasEmptyMessage) {\r\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseResource(tokenizer) {\r\n const context = tokenizer.context();\r\n const { offset, startLoc } = context;\r\n const msgNode = parseMessage(tokenizer);\r\n if (context.currentType === 14 /* EOF */) {\r\n return msgNode;\r\n }\r\n else {\r\n return parsePlural(tokenizer, offset, startLoc, msgNode);\r\n }\r\n }\r\n function parse(source) {\r\n const tokenizer = createTokenizer(source, assign({}, options));\r\n const context = tokenizer.context();\r\n const node = startNode(0 /* Resource */, context.offset, context.startLoc);\r\n if (location && node.loc) {\r\n node.loc.source = source;\r\n }\r\n node.body = parseResource(tokenizer);\r\n // assert whether achieved to EOF\r\n if (context.currentType !== 14 /* EOF */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n return { parse };\r\n}\r\nfunction getTokenCaption(token) {\r\n if (token.type === 14 /* EOF */) {\r\n return 'EOF';\r\n }\r\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\r\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\r\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\r\n) {\r\n const _context = {\r\n ast,\r\n helpers: new Set()\r\n };\r\n const context = () => _context;\r\n const helper = (name) => {\r\n _context.helpers.add(name);\r\n return name;\r\n };\r\n return { context, helper };\r\n}\r\nfunction traverseNodes(nodes, transformer) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n traverseNode(nodes[i], transformer);\r\n }\r\n}\r\nfunction traverseNode(node, transformer) {\r\n // TODO: if we need pre-hook of transform, should be implemented to here\r\n switch (node.type) {\r\n case 1 /* Plural */:\r\n traverseNodes(node.cases, transformer);\r\n transformer.helper(\"plural\" /* PLURAL */);\r\n break;\r\n case 2 /* Message */:\r\n traverseNodes(node.items, transformer);\r\n break;\r\n case 6 /* Linked */:\r\n const linked = node;\r\n traverseNode(linked.key, transformer);\r\n transformer.helper(\"linked\" /* LINKED */);\r\n transformer.helper(\"type\" /* TYPE */);\r\n break;\r\n case 5 /* List */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"list\" /* LIST */);\r\n break;\r\n case 4 /* Named */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"named\" /* NAMED */);\r\n break;\r\n }\r\n // TODO: if we need post-hook of transform, should be implemented to here\r\n}\r\n// transform AST\r\nfunction transform(ast, options = {} // eslint-disable-line\r\n) {\r\n const transformer = createTransformer(ast);\r\n transformer.helper(\"normalize\" /* NORMALIZE */);\r\n // traverse\r\n ast.body && traverseNode(ast.body, transformer);\r\n // set meta information\r\n const context = transformer.context();\r\n ast.helpers = Array.from(context.helpers);\r\n}\n\nfunction createCodeGenerator(ast, options) {\r\n const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\r\n const _context = {\r\n source: ast.loc.source,\r\n filename,\r\n code: '',\r\n column: 1,\r\n line: 1,\r\n offset: 0,\r\n map: undefined,\r\n breakLineCode,\r\n needIndent: _needIndent,\r\n indentLevel: 0\r\n };\r\n const context = () => _context;\r\n function push(code, node) {\r\n _context.code += code;\r\n }\r\n function _newline(n, withBreakLine = true) {\r\n const _breakLineCode = withBreakLine ? breakLineCode : '';\r\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\r\n }\r\n function indent(withNewLine = true) {\r\n const level = ++_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function deindent(withNewLine = true) {\r\n const level = --_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function newline() {\r\n _newline(_context.indentLevel);\r\n }\r\n const helper = (key) => `_${key}`;\r\n const needIndent = () => _context.needIndent;\r\n return {\r\n context,\r\n push,\r\n indent,\r\n deindent,\r\n newline,\r\n helper,\r\n needIndent\r\n };\r\n}\r\nfunction generateLinkedNode(generator, node) {\r\n const { helper } = generator;\r\n generator.push(`${helper(\"linked\" /* LINKED */)}(`);\r\n generateNode(generator, node.key);\r\n if (node.modifier) {\r\n generator.push(`, `);\r\n generateNode(generator, node.modifier);\r\n generator.push(`, _type`);\r\n }\r\n else {\r\n generator.push(`, undefined, _type`);\r\n }\r\n generator.push(`)`);\r\n}\r\nfunction generateMessageNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n generator.push(`${helper(\"normalize\" /* NORMALIZE */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.items.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.items[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push('])');\r\n}\r\nfunction generatePluralNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n if (node.cases.length > 1) {\r\n generator.push(`${helper(\"plural\" /* PLURAL */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.cases.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.cases[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push(`])`);\r\n }\r\n}\r\nfunction generateResource(generator, node) {\r\n if (node.body) {\r\n generateNode(generator, node.body);\r\n }\r\n else {\r\n generator.push('null');\r\n }\r\n}\r\nfunction generateNode(generator, node) {\r\n const { helper } = generator;\r\n switch (node.type) {\r\n case 0 /* Resource */:\r\n generateResource(generator, node);\r\n break;\r\n case 1 /* Plural */:\r\n generatePluralNode(generator, node);\r\n break;\r\n case 2 /* Message */:\r\n generateMessageNode(generator, node);\r\n break;\r\n case 6 /* Linked */:\r\n generateLinkedNode(generator, node);\r\n break;\r\n case 8 /* LinkedModifier */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 7 /* LinkedKey */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 5 /* List */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"list\" /* LIST */)}(${node.index}))`, node);\r\n break;\r\n case 4 /* Named */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"named\" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);\r\n break;\r\n case 9 /* Literal */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 3 /* Text */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n default:\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n throw new Error(`unhandled codegen node type: ${node.type}`);\r\n }\r\n }\r\n}\r\n// generate code from AST\r\nconst generate = (ast, options = {} // eslint-disable-line\r\n) => {\r\n const mode = isString(options.mode) ? options.mode : 'normal';\r\n const filename = isString(options.filename)\r\n ? options.filename\r\n : 'message.intl';\r\n const sourceMap = !!options.sourceMap;\r\n // prettier-ignore\r\n const breakLineCode = options.breakLineCode != null\r\n ? options.breakLineCode\r\n : mode === 'arrow'\r\n ? ';'\r\n : '\\n';\r\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\r\n const helpers = ast.helpers || [];\r\n const generator = createCodeGenerator(ast, {\r\n mode,\r\n filename,\r\n sourceMap,\r\n breakLineCode,\r\n needIndent\r\n });\r\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\r\n generator.indent(needIndent);\r\n if (helpers.length > 0) {\r\n generator.push(`const { ${helpers.map(s => `${s}: _${s}`).join(', ')} } = ctx`);\r\n generator.newline();\r\n }\r\n generator.push(`return `);\r\n generateNode(generator, ast);\r\n generator.deindent(needIndent);\r\n generator.push(`}`);\r\n const { code, map } = generator.context();\r\n return {\r\n ast,\r\n code,\r\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\r\n };\r\n};\n\nfunction baseCompile(source, options = {}) {\r\n const assignedOptions = assign({}, options);\r\n // parse source codes\r\n const parser = createParser(assignedOptions);\r\n const ast = parser.parse(source);\r\n // transform ASTs\r\n transform(ast, assignedOptions);\r\n // generate javascript codes\r\n return generate(ast, assignedOptions);\r\n}\n\nexport { CompileErrorCodes, ERROR_DOMAIN, LocationStub, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, errorMessages };\n","/*!\n * devtools-if v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst IntlifyDevToolsHooks = {\r\n I18nInit: 'i18n:init',\r\n FunctionTranslate: 'function:translate'\r\n};\n\nexport { IntlifyDevToolsHooks };\n","/*!\n * core-base v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { isObject, isString, isFunction, isNumber, isPlainObject, toDisplayString, isArray, format, isBoolean, assign, isRegExp, warn, escapeHtml, inBrowser, mark, measure, isEmptyObject, generateCodeFrame, generateFormatCacheKey, isDate, getGlobalThis } from '@intlify/shared';\nimport { defaultOnError, baseCompile, CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nimport { IntlifyDevToolsHooks } from '@intlify/devtools-if';\n\nconst pathStateMachine = [];\r\npathStateMachine[0 /* BEFORE_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [0 /* BEFORE_PATH */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[1 /* IN_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[2 /* BEFORE_IDENT */] = {\r\n [\"w\" /* WORKSPACE */]: [2 /* BEFORE_IDENT */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */]\r\n};\r\npathStateMachine[3 /* IN_IDENT */] = {\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */, 1 /* PUSH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */, 1 /* PUSH */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */, 1 /* PUSH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */, 1 /* PUSH */]\r\n};\r\npathStateMachine[4 /* IN_SUB_PATH */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */],\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [\r\n 4 /* IN_SUB_PATH */,\r\n 2 /* INC_SUB_PATH_DEPTH */\r\n ],\r\n [\"]\" /* RIGHT_BRACKET */]: [1 /* IN_PATH */, 3 /* PUSH_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */]\r\n};\r\npathStateMachine[5 /* IN_SINGLE_QUOTE */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */]\r\n};\r\npathStateMachine[6 /* IN_DOUBLE_QUOTE */] = {\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */]\r\n};\r\n/**\r\n * Check if an expression is a literal value.\r\n */\r\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\r\nfunction isLiteral(exp) {\r\n return literalValueRE.test(exp);\r\n}\r\n/**\r\n * Strip quotes from a string\r\n */\r\nfunction stripQuotes(str) {\r\n const a = str.charCodeAt(0);\r\n const b = str.charCodeAt(str.length - 1);\r\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\r\n}\r\n/**\r\n * Determine the type of a character in a keypath.\r\n */\r\nfunction getPathCharType(ch) {\r\n if (ch === undefined || ch === null) {\r\n return \"o\" /* END_OF_FAIL */;\r\n }\r\n const code = ch.charCodeAt(0);\r\n switch (code) {\r\n case 0x5b: // [\r\n case 0x5d: // ]\r\n case 0x2e: // .\r\n case 0x22: // \"\r\n case 0x27: // '\r\n return ch;\r\n case 0x5f: // _\r\n case 0x24: // $\r\n case 0x2d: // -\r\n return \"i\" /* IDENT */;\r\n case 0x09: // Tab (HT)\r\n case 0x0a: // Newline (LF)\r\n case 0x0d: // Return (CR)\r\n case 0xa0: // No-break space (NBSP)\r\n case 0xfeff: // Byte Order Mark (BOM)\r\n case 0x2028: // Line Separator (LS)\r\n case 0x2029: // Paragraph Separator (PS)\r\n return \"w\" /* WORKSPACE */;\r\n }\r\n return \"i\" /* IDENT */;\r\n}\r\n/**\r\n * Format a subPath, return its plain form if it is\r\n * a literal string or number. Otherwise prepend the\r\n * dynamic indicator (*).\r\n */\r\nfunction formatSubPath(path) {\r\n const trimmed = path.trim();\r\n // invalid leading 0\r\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\r\n return false;\r\n }\r\n return isLiteral(trimmed)\r\n ? stripQuotes(trimmed)\r\n : \"*\" /* ASTARISK */ + trimmed;\r\n}\r\n/**\r\n * Parse a string path into an array of segments\r\n */\r\nfunction parse(path) {\r\n const keys = [];\r\n let index = -1;\r\n let mode = 0 /* BEFORE_PATH */;\r\n let subPathDepth = 0;\r\n let c;\r\n let key; // eslint-disable-line\r\n let newChar;\r\n let type;\r\n let transition;\r\n let action;\r\n let typeMap;\r\n const actions = [];\r\n actions[0 /* APPEND */] = () => {\r\n if (key === undefined) {\r\n key = newChar;\r\n }\r\n else {\r\n key += newChar;\r\n }\r\n };\r\n actions[1 /* PUSH */] = () => {\r\n if (key !== undefined) {\r\n keys.push(key);\r\n key = undefined;\r\n }\r\n };\r\n actions[2 /* INC_SUB_PATH_DEPTH */] = () => {\r\n actions[0 /* APPEND */]();\r\n subPathDepth++;\r\n };\r\n actions[3 /* PUSH_SUB_PATH */] = () => {\r\n if (subPathDepth > 0) {\r\n subPathDepth--;\r\n mode = 4 /* IN_SUB_PATH */;\r\n actions[0 /* APPEND */]();\r\n }\r\n else {\r\n subPathDepth = 0;\r\n if (key === undefined) {\r\n return false;\r\n }\r\n key = formatSubPath(key);\r\n if (key === false) {\r\n return false;\r\n }\r\n else {\r\n actions[1 /* PUSH */]();\r\n }\r\n }\r\n };\r\n function maybeUnescapeQuote() {\r\n const nextChar = path[index + 1];\r\n if ((mode === 5 /* IN_SINGLE_QUOTE */ &&\r\n nextChar === \"'\" /* SINGLE_QUOTE */) ||\r\n (mode === 6 /* IN_DOUBLE_QUOTE */ &&\r\n nextChar === \"\\\"\" /* DOUBLE_QUOTE */)) {\r\n index++;\r\n newChar = '\\\\' + nextChar;\r\n actions[0 /* APPEND */]();\r\n return true;\r\n }\r\n }\r\n while (mode !== null) {\r\n index++;\r\n c = path[index];\r\n if (c === '\\\\' && maybeUnescapeQuote()) {\r\n continue;\r\n }\r\n type = getPathCharType(c);\r\n typeMap = pathStateMachine[mode];\r\n transition = typeMap[type] || typeMap[\"l\" /* ELSE */] || 8 /* ERROR */;\r\n // check parse error\r\n if (transition === 8 /* ERROR */) {\r\n return;\r\n }\r\n mode = transition[0];\r\n if (transition[1] !== undefined) {\r\n action = actions[transition[1]];\r\n if (action) {\r\n newChar = c;\r\n if (action() === false) {\r\n return;\r\n }\r\n }\r\n }\r\n // check parse finish\r\n if (mode === 7 /* AFTER_PATH */) {\r\n return keys;\r\n }\r\n }\r\n}\r\n// path token cache\r\nconst cache = new Map();\r\n/**\r\n * key-value message resolver\r\n *\r\n * @remarks\r\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveWithKeyValue(obj, path) {\r\n return isObject(obj) ? obj[path] : null;\r\n}\r\n/**\r\n * message resolver\r\n *\r\n * @remarks\r\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveValue(obj, path) {\r\n // check object\r\n if (!isObject(obj)) {\r\n return null;\r\n }\r\n // parse path\r\n let hit = cache.get(path);\r\n if (!hit) {\r\n hit = parse(path);\r\n if (hit) {\r\n cache.set(path, hit);\r\n }\r\n }\r\n // check hit\r\n if (!hit) {\r\n return null;\r\n }\r\n // resolve path value\r\n const len = hit.length;\r\n let last = obj;\r\n let i = 0;\r\n while (i < len) {\r\n const val = last[hit[i]];\r\n if (val === undefined) {\r\n return null;\r\n }\r\n last = val;\r\n i++;\r\n }\r\n return last;\r\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\r\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\r\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\r\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : values.join('');\r\nconst DEFAULT_INTERPOLATE = toDisplayString;\r\nfunction pluralDefault(choice, choicesLength) {\r\n choice = Math.abs(choice);\r\n if (choicesLength === 2) {\r\n // prettier-ignore\r\n return choice\r\n ? choice > 1\r\n ? 1\r\n : 0\r\n : 1;\r\n }\r\n return choice ? Math.min(choice, 2) : 0;\r\n}\r\nfunction getPluralIndex(options) {\r\n // prettier-ignore\r\n const index = isNumber(options.pluralIndex)\r\n ? options.pluralIndex\r\n : -1;\r\n // prettier-ignore\r\n return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\r\n ? isNumber(options.named.count)\r\n ? options.named.count\r\n : isNumber(options.named.n)\r\n ? options.named.n\r\n : index\r\n : index;\r\n}\r\nfunction normalizeNamed(pluralIndex, props) {\r\n if (!props.count) {\r\n props.count = pluralIndex;\r\n }\r\n if (!props.n) {\r\n props.n = pluralIndex;\r\n }\r\n}\r\nfunction createMessageContext(options = {}) {\r\n const locale = options.locale;\r\n const pluralIndex = getPluralIndex(options);\r\n const pluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? options.pluralRules[locale]\r\n : pluralDefault;\r\n const orgPluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? pluralDefault\r\n : undefined;\r\n const plural = (messages) => {\r\n return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\r\n };\r\n const _list = options.list || [];\r\n const list = (index) => _list[index];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _named = options.named || {};\r\n isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\r\n const named = (key) => _named[key];\r\n function message(key) {\r\n // prettier-ignore\r\n const msg = isFunction(options.messages)\r\n ? options.messages(key)\r\n : isObject(options.messages)\r\n ? options.messages[key]\r\n : false;\r\n return !msg\r\n ? options.parent\r\n ? options.parent.message(key) // resolve from parent messages\r\n : DEFAULT_MESSAGE\r\n : msg;\r\n }\r\n const _modifier = (name) => options.modifiers\r\n ? options.modifiers[name]\r\n : DEFAULT_MODIFIER;\r\n const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\r\n ? options.processor.normalize\r\n : DEFAULT_NORMALIZE;\r\n const interpolate = isPlainObject(options.processor) &&\r\n isFunction(options.processor.interpolate)\r\n ? options.processor.interpolate\r\n : DEFAULT_INTERPOLATE;\r\n const type = isPlainObject(options.processor) && isString(options.processor.type)\r\n ? options.processor.type\r\n : DEFAULT_MESSAGE_DATA_TYPE;\r\n const linked = (key, ...args) => {\r\n const [arg1, arg2] = args;\r\n let type = 'text';\r\n let modifier = '';\r\n if (args.length === 1) {\r\n if (isObject(arg1)) {\r\n modifier = arg1.modifier || modifier;\r\n type = arg1.type || type;\r\n }\r\n else if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n }\r\n else if (args.length === 2) {\r\n if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n if (isString(arg2)) {\r\n type = arg2 || type;\r\n }\r\n }\r\n let msg = message(key)(ctx);\r\n // The message in vnode resolved with linked are returned as an array by processor.nomalize\r\n if (type === 'vnode' && isArray(msg) && modifier) {\r\n msg = msg[0];\r\n }\r\n return modifier ? _modifier(modifier)(msg, type) : msg;\r\n };\r\n const ctx = {\r\n [\"list\" /* LIST */]: list,\r\n [\"named\" /* NAMED */]: named,\r\n [\"plural\" /* PLURAL */]: plural,\r\n [\"linked\" /* LINKED */]: linked,\r\n [\"message\" /* MESSAGE */]: message,\r\n [\"type\" /* TYPE */]: type,\r\n [\"interpolate\" /* INTERPOLATE */]: interpolate,\r\n [\"normalize\" /* NORMALIZE */]: normalize\r\n };\r\n return ctx;\r\n}\n\nlet devtools = null;\r\nfunction setDevToolsHook(hook) {\r\n devtools = hook;\r\n}\r\nfunction getDevToolsHook() {\r\n return devtools;\r\n}\r\nfunction initI18nDevTools(i18n, version, meta) {\r\n // TODO: queue if devtools is undefined\r\n devtools &&\r\n devtools.emit(IntlifyDevToolsHooks.I18nInit, {\r\n timestamp: Date.now(),\r\n i18n,\r\n version,\r\n meta\r\n });\r\n}\r\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(IntlifyDevToolsHooks.FunctionTranslate);\r\nfunction createDevToolsHook(hook) {\r\n return (payloads) => devtools && devtools.emit(hook, payloads);\r\n}\n\nconst CoreWarnCodes = {\r\n NOT_FOUND_KEY: 1,\r\n FALLBACK_TO_TRANSLATE: 2,\r\n CANNOT_FORMAT_NUMBER: 3,\r\n FALLBACK_TO_NUMBER_FORMAT: 4,\r\n CANNOT_FORMAT_DATE: 5,\r\n FALLBACK_TO_DATE_FORMAT: 6,\r\n __EXTEND_POINT__: 7\r\n};\r\n/** @internal */\r\nconst warnMessages = {\r\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\r\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\n/**\r\n * Fallback with simple implemenation\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a simple fallback algorithm.\r\n *\r\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\r\n) {\r\n // prettier-ignore\r\n return [...new Set([\r\n start,\r\n ...(isArray(fallback)\r\n ? fallback\r\n : isObject(fallback)\r\n ? Object.keys(fallback)\r\n : isString(fallback)\r\n ? [fallback]\r\n : [start])\r\n ])];\r\n}\r\n/**\r\n * Fallback with locale chain\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\r\n const startLocale = isString(start) ? start : DEFAULT_LOCALE;\r\n const context = ctx;\r\n if (!context.__localeChainCache) {\r\n context.__localeChainCache = new Map();\r\n }\r\n let chain = context.__localeChainCache.get(startLocale);\r\n if (!chain) {\r\n chain = [];\r\n // first block defined by start\r\n let block = [start];\r\n // while any intervening block found\r\n while (isArray(block)) {\r\n block = appendBlockToChain(chain, block, fallback);\r\n }\r\n // prettier-ignore\r\n // last block defined by default\r\n const defaults = isArray(fallback) || !isPlainObject(fallback)\r\n ? fallback\r\n : fallback['default']\r\n ? fallback['default']\r\n : null;\r\n // convert defaults to array\r\n block = isString(defaults) ? [defaults] : defaults;\r\n if (isArray(block)) {\r\n appendBlockToChain(chain, block, false);\r\n }\r\n context.__localeChainCache.set(startLocale, chain);\r\n }\r\n return chain;\r\n}\r\nfunction appendBlockToChain(chain, block, blocks) {\r\n let follow = true;\r\n for (let i = 0; i < block.length && isBoolean(follow); i++) {\r\n const locale = block[i];\r\n if (isString(locale)) {\r\n follow = appendLocaleToChain(chain, block[i], blocks);\r\n }\r\n }\r\n return follow;\r\n}\r\nfunction appendLocaleToChain(chain, locale, blocks) {\r\n let follow;\r\n const tokens = locale.split('-');\r\n do {\r\n const target = tokens.join('-');\r\n follow = appendItemToChain(chain, target, blocks);\r\n tokens.splice(-1, 1);\r\n } while (tokens.length && follow === true);\r\n return follow;\r\n}\r\nfunction appendItemToChain(chain, target, blocks) {\r\n let follow = false;\r\n if (!chain.includes(target)) {\r\n follow = true;\r\n if (target) {\r\n follow = target[target.length - 1] !== '!';\r\n const locale = target.replace(/!/g, '');\r\n chain.push(locale);\r\n if ((isArray(blocks) || isPlainObject(blocks)) &&\r\n blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n follow = blocks[locale];\r\n }\r\n }\r\n }\r\n return follow;\r\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Intlify core-base version\r\n * @internal\r\n */\r\nconst VERSION = '9.2.2';\r\nconst NOT_REOSLVED = -1;\r\nconst DEFAULT_LOCALE = 'en-US';\r\nconst MISSING_RESOLVE_VALUE = '';\r\nconst capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\r\nfunction getDefaultLinkedModifiers() {\r\n return {\r\n upper: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toUpperCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toUpperCase()\r\n : val;\r\n },\r\n lower: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toLowerCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toLowerCase()\r\n : val;\r\n },\r\n capitalize: (val, type) => {\r\n // prettier-ignore\r\n return (type === 'text' && isString(val)\r\n ? capitalize(val)\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? capitalize(val.children)\r\n : val);\r\n }\r\n };\r\n}\r\nlet _compiler;\r\nfunction registerMessageCompiler(compiler) {\r\n _compiler = compiler;\r\n}\r\nlet _resolver;\r\n/**\r\n * Register the message resolver\r\n *\r\n * @param resolver - A {@link MessageResolver} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerMessageResolver(resolver) {\r\n _resolver = resolver;\r\n}\r\nlet _fallbacker;\r\n/**\r\n * Register the locale fallbacker\r\n *\r\n * @param fallbacker - A {@link LocaleFallbacker} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerLocaleFallbacker(fallbacker) {\r\n _fallbacker = fallbacker;\r\n}\r\n// Additional Meta for Intlify DevTools\r\nlet _additionalMeta = null;\r\nconst setAdditionalMeta = (meta) => {\r\n _additionalMeta = meta;\r\n};\r\nconst getAdditionalMeta = () => _additionalMeta;\r\nlet _fallbackContext = null;\r\nconst setFallbackContext = (context) => {\r\n _fallbackContext = context;\r\n};\r\nconst getFallbackContext = () => _fallbackContext;\r\n// ID for CoreContext\r\nlet _cid = 0;\r\nfunction createCoreContext(options = {}) {\r\n // setup options\r\n const version = isString(options.version) ? options.version : VERSION;\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n isString(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const messages = isPlainObject(options.messages)\r\n ? options.messages\r\n : { [locale]: {} };\r\n const datetimeFormats = isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [locale]: {} }\r\n ;\r\n const numberFormats = isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [locale]: {} }\r\n ;\r\n const modifiers = assign({}, options.modifiers || {}, getDefaultLinkedModifiers());\r\n const pluralRules = options.pluralRules || {};\r\n const missing = isFunction(options.missing) ? options.missing : null;\r\n const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n const fallbackFormat = !!options.fallbackFormat;\r\n const unresolving = !!options.unresolving;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n const processor = isPlainObject(options.processor) ? options.processor : null;\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const escapeParameter = !!options.escapeParameter;\r\n const messageCompiler = isFunction(options.messageCompiler)\r\n ? options.messageCompiler\r\n : _compiler;\r\n const messageResolver = isFunction(options.messageResolver)\r\n ? options.messageResolver\r\n : _resolver || resolveWithKeyValue;\r\n const localeFallbacker = isFunction(options.localeFallbacker)\r\n ? options.localeFallbacker\r\n : _fallbacker || fallbackWithSimple;\r\n const fallbackContext = isObject(options.fallbackContext)\r\n ? options.fallbackContext\r\n : undefined;\r\n const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\r\n // setup internal options\r\n const internalOptions = options;\r\n const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\r\n ? internalOptions.__datetimeFormatters\r\n : new Map()\r\n ;\r\n const __numberFormatters = isObject(internalOptions.__numberFormatters)\r\n ? internalOptions.__numberFormatters\r\n : new Map()\r\n ;\r\n const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\r\n _cid++;\r\n const context = {\r\n version,\r\n cid: _cid,\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n modifiers,\r\n pluralRules,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackFormat,\r\n unresolving,\r\n postTranslation,\r\n processor,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageCompiler,\r\n messageResolver,\r\n localeFallbacker,\r\n fallbackContext,\r\n onWarn,\r\n __meta\r\n };\r\n {\r\n context.datetimeFormats = datetimeFormats;\r\n context.numberFormats = numberFormats;\r\n context.__datetimeFormatters = __datetimeFormatters;\r\n context.__numberFormatters = __numberFormatters;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n context.__v_emitter =\r\n internalOptions.__v_emitter != null\r\n ? internalOptions.__v_emitter\r\n : undefined;\r\n }\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n initI18nDevTools(context, version, __meta);\r\n }\r\n return context;\r\n}\r\n/** @internal */\r\nfunction isTranslateFallbackWarn(fallback, key) {\r\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\r\n}\r\n/** @internal */\r\nfunction isTranslateMissingWarn(missing, key) {\r\n return missing instanceof RegExp ? missing.test(key) : missing;\r\n}\r\n/** @internal */\r\nfunction handleMissing(context, key, locale, missingWarn, type) {\r\n const { missing, onWarn } = context;\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"missing\" /* MISSING */, {\r\n locale,\r\n key,\r\n type,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n if (missing !== null) {\r\n const ret = missing(context, locale, key, type);\r\n return isString(ret) ? ret : key;\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\r\n }\r\n return key;\r\n }\r\n}\r\n/** @internal */\r\nfunction updateFallbackLocale(ctx, locale, fallback) {\r\n const context = ctx;\r\n context.__localeChainCache = new Map();\r\n ctx.localeFallbacker(ctx, fallback, locale);\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\r\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\r\nfunction checkHtmlMessage(source, options) {\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n if (warnHtmlMessage && RE_HTML_TAG.test(source)) {\r\n warn(format(WARN_MESSAGE, { source }));\r\n }\r\n}\r\nconst defaultOnCacheKey = (source) => source;\r\nlet compileCache = Object.create(null);\r\nfunction clearCompileCache() {\r\n compileCache = Object.create(null);\r\n}\r\nfunction compileToFunction(source, options = {}) {\r\n {\r\n // check HTML message\r\n (process.env.NODE_ENV !== 'production') && checkHtmlMessage(source, options);\r\n // check caches\r\n const onCacheKey = options.onCacheKey || defaultOnCacheKey;\r\n const key = onCacheKey(source);\r\n const cached = compileCache[key];\r\n if (cached) {\r\n return cached;\r\n }\r\n // compile error detecting\r\n let occurred = false;\r\n const onError = options.onError || defaultOnError;\r\n options.onError = (err) => {\r\n occurred = true;\r\n onError(err);\r\n };\r\n // compile\r\n const { code } = baseCompile(source, options);\r\n // evaluate function\r\n const msg = new Function(`return ${code}`)();\r\n // if occurred compile error, don't cache\r\n return !occurred ? (compileCache[key] = msg) : msg;\r\n }\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst CoreErrorCodes = {\r\n INVALID_ARGUMENT: code,\r\n INVALID_DATE_ARGUMENT: inc(),\r\n INVALID_ISO_DATE_ARGUMENT: inc(),\r\n __EXTEND_POINT__: inc() // 18\r\n};\r\nfunction createCoreError(code) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\r\n}\r\n/** @internal */\r\nconst errorMessages = {\r\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\r\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\r\n 'Make sure your Date represents a valid date.',\r\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string'\r\n};\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\r\nconst isMessageFunction = (val) => isFunction(val);\r\n// implementation of `translate` function\r\nfunction translate(context, ...args) {\r\n const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\r\n const [key, options] = parseTranslateArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const escapeParameter = isBoolean(options.escapeParameter)\r\n ? options.escapeParameter\r\n : context.escapeParameter;\r\n const resolvedMessage = !!options.resolvedMessage;\r\n // prettier-ignore\r\n const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\r\n ? !isBoolean(options.default)\r\n ? options.default\r\n : (!messageCompiler ? () => key : key)\r\n : fallbackFormat // default by `fallbackFormat` option\r\n ? (!messageCompiler ? () => key : key)\r\n : '';\r\n const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n // escape params\r\n escapeParameter && escapeParams(options);\r\n // resolve message format\r\n // eslint-disable-next-line prefer-const\r\n let [formatScope, targetLocale, message] = !resolvedMessage\r\n ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\r\n : [\r\n key,\r\n locale,\r\n messages[locale] || {}\r\n ];\r\n // NOTE:\r\n // Fix to work around `ssrTransfrom` bug in Vite.\r\n // https://github.com/vitejs/vite/issues/4306\r\n // To get around this, use temporary variables.\r\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\r\n let format = formatScope;\r\n // if you use default message, set it as message format!\r\n let cacheBaseKey = key;\r\n if (!resolvedMessage &&\r\n !(isString(format) || isMessageFunction(format))) {\r\n if (enableDefaultMsg) {\r\n format = defaultMsgOrKey;\r\n cacheBaseKey = format;\r\n }\r\n }\r\n // checking message format and target locale\r\n if (!resolvedMessage &&\r\n (!(isString(format) || isMessageFunction(format)) ||\r\n !isString(targetLocale))) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\r\n warn(`The message format compilation is not supported in this build. ` +\r\n `Because message compiler isn't included. ` +\r\n `You need to pre-compilation all message format. ` +\r\n `So translate function return '${key}'.`);\r\n return key;\r\n }\r\n // setup compile error detecting\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n // compile message format\r\n const msg = !isMessageFunction(format)\r\n ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector)\r\n : format;\r\n // if occurred compile error, return the message format\r\n if (occurred) {\r\n return format;\r\n }\r\n // evaluate message with context\r\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\r\n const msgContext = createMessageContext(ctxOptions);\r\n const messaged = evaluateMessage(context, msg, msgContext);\r\n // if use post translation option, proceed it with handler\r\n const ret = postTranslation\r\n ? postTranslation(messaged, key)\r\n : messaged;\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n // prettier-ignore\r\n const payloads = {\r\n timestamp: Date.now(),\r\n key: isString(key)\r\n ? key\r\n : isMessageFunction(format)\r\n ? format.key\r\n : '',\r\n locale: targetLocale || (isMessageFunction(format)\r\n ? format.locale\r\n : ''),\r\n format: isString(format)\r\n ? format\r\n : isMessageFunction(format)\r\n ? format.source\r\n : '',\r\n message: ret\r\n };\r\n payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\r\n translateDevTools(payloads);\r\n }\r\n return ret;\r\n}\r\nfunction escapeParams(options) {\r\n if (isArray(options.list)) {\r\n options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\r\n }\r\n else if (isObject(options.named)) {\r\n Object.keys(options.named).forEach(key => {\r\n if (isString(options.named[key])) {\r\n options.named[key] = escapeHtml(options.named[key]);\r\n }\r\n });\r\n }\r\n}\r\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\r\n const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\r\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n let message = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'translate';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n message =\r\n messages[targetLocale] || {};\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-resolve-start';\r\n endTag = 'intlify-message-resolve-end';\r\n mark && mark(startTag);\r\n }\r\n if ((format = resolveValue(message, key)) === null) {\r\n // if null, resolve with object key path\r\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start && format) {\r\n emitter.emit(\"message-resolve\" /* MESSAGE_RESOLVE */, {\r\n type: \"message-resolve\" /* MESSAGE_RESOLVE */,\r\n key,\r\n message: format,\r\n time: end - start,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message resolve', startTag, endTag);\r\n }\r\n }\r\n if (isString(format) || isFunction(format))\r\n break;\r\n const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n key, targetLocale, missingWarn, type);\r\n if (missingRet !== key) {\r\n format = missingRet;\r\n }\r\n from = to;\r\n }\r\n return [format, targetLocale, message];\r\n}\r\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector) {\r\n const { messageCompiler, warnHtmlMessage } = context;\r\n if (isMessageFunction(format)) {\r\n const msg = format;\r\n msg.locale = msg.locale || targetLocale;\r\n msg.key = msg.key || key;\r\n return msg;\r\n }\r\n if (messageCompiler == null) {\r\n const msg = (() => format);\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n return msg;\r\n }\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-compilation-start';\r\n endTag = 'intlify-message-compilation-end';\r\n mark && mark(startTag);\r\n }\r\n const msg = messageCompiler(format, getCompileOptions(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, errorDetector));\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-compilation\" /* MESSAGE_COMPILATION */, {\r\n type: \"message-compilation\" /* MESSAGE_COMPILATION */,\r\n message: format,\r\n time: end - start,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message compilation', startTag, endTag);\r\n }\r\n }\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n msg.source = format;\r\n return msg;\r\n}\r\nfunction evaluateMessage(context, msg, msgCtx) {\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-evaluation-start';\r\n endTag = 'intlify-message-evaluation-end';\r\n mark && mark(startTag);\r\n }\r\n const messaged = msg(msgCtx);\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-evaluation\" /* MESSAGE_EVALUATION */, {\r\n type: \"message-evaluation\" /* MESSAGE_EVALUATION */,\r\n value: messaged,\r\n time: end - start,\r\n groupId: `${'translate'}:${msg.key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message evaluation', startTag, endTag);\r\n }\r\n }\r\n return messaged;\r\n}\r\n/** @internal */\r\nfunction parseTranslateArgs(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n if (!isString(arg1) && !isNumber(arg1) && !isMessageFunction(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n // prettier-ignore\r\n const key = isNumber(arg1)\r\n ? String(arg1)\r\n : isMessageFunction(arg1)\r\n ? arg1\r\n : arg1;\r\n if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isString(arg2)) {\r\n options.default = arg2;\r\n }\r\n else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\r\n options.named = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n options.list = arg2;\r\n }\r\n if (isNumber(arg3)) {\r\n options.plural = arg3;\r\n }\r\n else if (isString(arg3)) {\r\n options.default = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n assign(options, arg3);\r\n }\r\n return [key, options];\r\n}\r\nfunction getCompileOptions(context, locale, key, source, warnHtmlMessage, errorDetector) {\r\n return {\r\n warnHtmlMessage,\r\n onError: (err) => {\r\n errorDetector && errorDetector(err);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const message = `Message compilation error: ${err.message}`;\r\n const codeFrame = err.location &&\r\n generateCodeFrame(source, err.location.start.offset, err.location.end.offset);\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"compile-error\" /* COMPILE_ERROR */, {\r\n message: source,\r\n error: err.message,\r\n start: err.location && err.location.start.offset,\r\n end: err.location && err.location.end.offset,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\r\n }\r\n else {\r\n throw err;\r\n }\r\n },\r\n onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\r\n };\r\n}\r\nfunction getMessageContextOptions(context, locale, message, options) {\r\n const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\r\n const resolveMessage = (key) => {\r\n let val = resolveValue(message, key);\r\n // fallback to root context\r\n if (val == null && fallbackContext) {\r\n const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\r\n val = resolveValue(message, key);\r\n }\r\n if (isString(val)) {\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n const msg = compileMessageFormat(context, key, locale, val, key, errorDetector);\r\n return !occurred\r\n ? msg\r\n : NOOP_MESSAGE_FUNCTION;\r\n }\r\n else if (isMessageFunction(val)) {\r\n return val;\r\n }\r\n else {\r\n // TODO: should be implemented warning message\r\n return NOOP_MESSAGE_FUNCTION;\r\n }\r\n };\r\n const ctxOptions = {\r\n locale,\r\n modifiers,\r\n pluralRules,\r\n messages: resolveMessage\r\n };\r\n if (context.processor) {\r\n ctxOptions.processor = context.processor;\r\n }\r\n if (options.list) {\r\n ctxOptions.list = options.list;\r\n }\r\n if (options.named) {\r\n ctxOptions.named = options.named;\r\n }\r\n if (isNumber(options.plural)) {\r\n ctxOptions.pluralIndex = options.plural;\r\n }\r\n return ctxOptions;\r\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\r\nconst Availabilities = {\r\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\r\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\r\n};\n\n// implementation of `datetime` function\r\nfunction datetime(context, ...args) {\r\n const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __datetimeFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.DateTimeFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let datetimeFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'datetime format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n datetimeFormat =\r\n datetimeFormats[targetLocale] || {};\r\n format = datetimeFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __datetimeFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\r\n __datetimeFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst DATETIME_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'weekday',\r\n 'era',\r\n 'year',\r\n 'month',\r\n 'day',\r\n 'hour',\r\n 'minute',\r\n 'second',\r\n 'timeZoneName',\r\n 'formatMatcher',\r\n 'hour12',\r\n 'timeZone',\r\n 'dateStyle',\r\n 'timeStyle',\r\n 'calendar',\r\n 'dayPeriod',\r\n 'numberingSystem',\r\n 'hourCycle',\r\n 'fractionalSecondDigits'\r\n];\r\n/** @internal */\r\nfunction parseDateTimeArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n let value;\r\n if (isString(arg1)) {\r\n // Only allow ISO strings - other date formats are often supported,\r\n // but may cause different results in different browsers.\r\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\r\n if (!matches) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n // Some browsers can not parse the iso datetime separated by space,\r\n // this is a compromise solution by replace the 'T'/' ' with 'T'\r\n const dateTime = matches[3]\r\n ? matches[3].trim().startsWith('T')\r\n ? `${matches[1].trim()}${matches[3].trim()}`\r\n : `${matches[1].trim()}T${matches[3].trim()}`\r\n : matches[1].trim();\r\n value = new Date(dateTime);\r\n try {\r\n // This will fail if the date is not valid\r\n value.toISOString();\r\n }\r\n catch (e) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n }\r\n else if (isDate(arg1)) {\r\n if (isNaN(arg1.getTime())) {\r\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\r\n }\r\n value = arg1;\r\n }\r\n else if (isNumber(arg1)) {\r\n value = arg1;\r\n }\r\n else {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearDateTimeFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__datetimeFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__datetimeFormatters.delete(id);\r\n }\r\n}\n\n// implementation of `number` function\r\nfunction number(context, ...args) {\r\n const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __numberFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseNumberArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.NumberFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let numberFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'number format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n numberFormat =\r\n numberFormats[targetLocale] || {};\r\n format = numberFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __numberFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\r\n __numberFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst NUMBER_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'style',\r\n 'currency',\r\n 'currencyDisplay',\r\n 'currencySign',\r\n 'useGrouping',\r\n 'minimumIntegerDigits',\r\n 'minimumFractionDigits',\r\n 'maximumFractionDigits',\r\n 'minimumSignificantDigits',\r\n 'maximumSignificantDigits',\r\n 'compactDisplay',\r\n 'notation',\r\n 'signDisplay',\r\n 'unit',\r\n 'unitDisplay',\r\n 'roundingMode',\r\n 'roundingPriority',\r\n 'roundingIncrement',\r\n 'trailingZeroDisplay'\r\n];\r\n/** @internal */\r\nfunction parseNumberArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n if (!isNumber(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const value = arg1;\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearNumberFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__numberFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__numberFormatters.delete(id);\r\n }\r\n}\n\n// TODO: we could not exports for Node native ES Moudles yet...\r\n{\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n}\n\nexport { CoreErrorCodes, CoreWarnCodes, DATETIME_FORMAT_OPTIONS_KEYS, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, NUMBER_FORMAT_OPTIONS_KEYS, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getWarnMessage, handleMissing, initI18nDevTools, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale };\n","/*!\n * vue-i18n v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { getGlobalThis, format, makeSymbol, isPlainObject, isArray, isString, hasOwn, isObject, isBoolean, isRegExp, isFunction, inBrowser, assign, isNumber, warn, createEmitter, isEmptyObject } from '@intlify/shared';\nimport { CoreWarnCodes, CompileErrorCodes, createCompileError, DEFAULT_LOCALE, updateFallbackLocale, setFallbackContext, createCoreContext, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, getFallbackContext, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, fallbackWithLocaleChain, NUMBER_FORMAT_OPTIONS_KEYS, DATETIME_FORMAT_OPTIONS_KEYS, registerMessageCompiler, compileToFunction, registerMessageResolver, resolveValue, registerLocaleFallbacker, setDevToolsHook } from '@intlify/core-base';\nimport { createVNode, Text, ref, computed, watch, getCurrentInstance, Fragment, h, effectScope, inject, onMounted, onUnmounted, shallowRef, onBeforeMount, isRef } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\nimport { VueDevToolsLabels, VueDevToolsPlaceholders, VueDevToolsTimelineColors } from '@intlify/vue-devtools';\n\n/**\r\n * Vue I18n Version\r\n *\r\n * @remarks\r\n * Semver format. Same format as the package.json `version` field.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst VERSION = '9.2.2';\r\n/**\r\n * This is only called in esm-bundler builds.\r\n * istanbul-ignore-next\r\n */\r\nfunction initFeatureFlags() {\r\n let needWarn = false;\r\n if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;\r\n }\r\n if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_LEGACY_API__ = true;\r\n }\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && needWarn) {\r\n console.warn(`You are running the esm-bundler build of vue-i18n. It is recommended to ` +\r\n `configure your bundler to explicitly replace feature flag globals ` +\r\n `with boolean literals to get proper tree-shaking in the final bundle.`);\r\n }\r\n}\n\nlet code$1 = CoreWarnCodes.__EXTEND_POINT__;\r\nconst inc$1 = () => ++code$1;\r\nconst I18nWarnCodes = {\r\n FALLBACK_TO_ROOT: code$1,\r\n NOT_SUPPORTED_PRESERVE: inc$1(),\r\n NOT_SUPPORTED_FORMATTER: inc$1(),\r\n NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(),\r\n NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(),\r\n COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(),\r\n NOT_FOUND_PARENT_SCOPE: inc$1() // 13\r\n};\r\nconst warnMessages = {\r\n [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,\r\n [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,\r\n [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst I18nErrorCodes = {\r\n // composer module errors\r\n UNEXPECTED_RETURN_TYPE: code,\r\n // legacy module errors\r\n INVALID_ARGUMENT: inc(),\r\n // i18n module errors\r\n MUST_BE_CALL_SETUP_TOP: inc(),\r\n NOT_INSLALLED: inc(),\r\n NOT_AVAILABLE_IN_LEGACY_MODE: inc(),\r\n // directive module errors\r\n REQUIRED_VALUE: inc(),\r\n INVALID_VALUE: inc(),\r\n // vue-devtools errors\r\n CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(),\r\n NOT_INSLALLED_WITH_PROVIDE: inc(),\r\n // unexpected error\r\n UNEXPECTED_ERROR: inc(),\r\n // not compatible legacy vue-i18n constructor\r\n NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(),\r\n // bridge support vue 2.x only\r\n BRIDGE_SUPPORT_VUE_2_ONLY: inc(),\r\n // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``\r\n MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(),\r\n // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly\r\n NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(),\r\n // for enhancement\r\n __EXTEND_POINT__: inc() // 29\r\n};\r\nfunction createI18nError(code, ...args) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);\r\n}\r\nconst errorMessages = {\r\n [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\r\n [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\r\n [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\r\n [I18nErrorCodes.NOT_INSLALLED]: 'Need to install with `app.use` function',\r\n [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\r\n [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode',\r\n [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\r\n [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\r\n [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\r\n [I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\r\n [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\r\n [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only',\r\n [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: 'Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode',\r\n [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly'\r\n};\n\nconst TransrateVNodeSymbol = \r\n/* #__PURE__*/ makeSymbol('__transrateVNode');\r\nconst DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts');\r\nconst NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts');\r\nconst EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter');\r\nconst DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter');\r\nconst SetPluralRulesSymbol = makeSymbol('__setPluralRules');\r\nmakeSymbol('__intlifyMeta');\r\nconst InejctWithOption = /* #__PURE__*/ makeSymbol('__injectWithOption');\r\nconst __VUE_I18N_BRIDGE__ = '__VUE_I18N_BRIDGE__';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Transform flat json in obj to normal json in obj\r\n */\r\nfunction handleFlatJson(obj) {\r\n // check obj\r\n if (!isObject(obj)) {\r\n return obj;\r\n }\r\n for (const key in obj) {\r\n // check key\r\n if (!hasOwn(obj, key)) {\r\n continue;\r\n }\r\n // handle for normal json\r\n if (!key.includes('.')) {\r\n // recursive process value if value is also a object\r\n if (isObject(obj[key])) {\r\n handleFlatJson(obj[key]);\r\n }\r\n }\r\n // handle for flat json, transform to normal json\r\n else {\r\n // go to the last object\r\n const subKeys = key.split('.');\r\n const lastIndex = subKeys.length - 1;\r\n let currentObj = obj;\r\n for (let i = 0; i < lastIndex; i++) {\r\n if (!(subKeys[i] in currentObj)) {\r\n currentObj[subKeys[i]] = {};\r\n }\r\n currentObj = currentObj[subKeys[i]];\r\n }\r\n // update last object value, delete old property\r\n currentObj[subKeys[lastIndex]] = obj[key];\r\n delete obj[key];\r\n // recursive process value if value is also a object\r\n if (isObject(currentObj[subKeys[lastIndex]])) {\r\n handleFlatJson(currentObj[subKeys[lastIndex]]);\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\nfunction getLocaleMessages(locale, options) {\r\n const { messages, __i18n, messageResolver, flatJson } = options;\r\n // prettier-ignore\r\n const ret = isPlainObject(messages)\r\n ? messages\r\n : isArray(__i18n)\r\n ? {}\r\n : { [locale]: {} };\r\n // merge locale messages of i18n custom block\r\n if (isArray(__i18n)) {\r\n __i18n.forEach(custom => {\r\n if ('locale' in custom && 'resource' in custom) {\r\n const { locale, resource } = custom;\r\n if (locale) {\r\n ret[locale] = ret[locale] || {};\r\n deepCopy(resource, ret[locale]);\r\n }\r\n else {\r\n deepCopy(resource, ret);\r\n }\r\n }\r\n else {\r\n isString(custom) && deepCopy(JSON.parse(custom), ret);\r\n }\r\n });\r\n }\r\n // handle messages for flat json\r\n if (messageResolver == null && flatJson) {\r\n for (const key in ret) {\r\n if (hasOwn(ret, key)) {\r\n handleFlatJson(ret[key]);\r\n }\r\n }\r\n }\r\n return ret;\r\n}\r\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction deepCopy(src, des) {\r\n // src and des should both be objects, and non of then can be a array\r\n if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n for (const key in src) {\r\n if (hasOwn(src, key)) {\r\n if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) {\r\n // replace with src[key] when:\r\n // src[key] or des[key] is not a object, or\r\n // src[key] or des[key] is a array\r\n des[key] = src[key];\r\n }\r\n else {\r\n // src[key] and des[key] are both object, merge them\r\n deepCopy(src[key], des[key]);\r\n }\r\n }\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getComponentOptions(instance) {\r\n return instance.type ;\r\n}\r\nfunction adjustI18nResources(global, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n let messages = isObject(options.messages) ? options.messages : {};\r\n if ('__i18nGlobal' in componentOptions) {\r\n messages = getLocaleMessages(global.locale.value, {\r\n messages,\r\n __i18n: componentOptions.__i18nGlobal\r\n });\r\n }\r\n // merge locale messages\r\n const locales = Object.keys(messages);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeLocaleMessage(locale, messages[locale]);\r\n });\r\n }\r\n {\r\n // merge datetime formats\r\n if (isObject(options.datetimeFormats)) {\r\n const locales = Object.keys(options.datetimeFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\r\n });\r\n }\r\n }\r\n // merge number formats\r\n if (isObject(options.numberFormats)) {\r\n const locales = Object.keys(options.numberFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeNumberFormat(locale, options.numberFormats[locale]);\r\n });\r\n }\r\n }\r\n }\r\n}\r\nfunction createTextNode(key) {\r\n return createVNode(Text, null, key, 0)\r\n ;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n// extend VNode interface\r\nconst DEVTOOLS_META = '__INTLIFY_META__';\r\nlet composerID = 0;\r\nfunction defineCoreMissingHandler(missing) {\r\n return ((ctx, locale, key, type) => {\r\n return missing(locale, key, getCurrentInstance() || undefined, type);\r\n });\r\n}\r\n// for Intlify DevTools\r\nconst getMetaInfo = () => {\r\n const instance = getCurrentInstance();\r\n let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\r\n ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : null;\r\n};\r\n/**\r\n * Create composer interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createComposer(options = {}, VueI18nLegacy) {\r\n const { __root } = options;\r\n const _isGlobal = __root === undefined;\r\n let _inheritLocale = isBoolean(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.locale.value\r\n : isString(options.locale)\r\n ? options.locale\r\n : DEFAULT_LOCALE);\r\n const _fallbackLocale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.fallbackLocale.value\r\n : isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = ref(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // prettier-ignore\r\n const _numberFormats = ref(isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // warning suppress options\r\n // prettier-ignore\r\n let _missingWarn = __root\r\n ? __root.missingWarn\r\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackWarn = __root\r\n ? __root.fallbackWarn\r\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackRoot = __root\r\n ? __root.fallbackRoot\r\n : isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n let _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n let _missing = isFunction(options.missing) ? options.missing : null;\r\n let _runtimeMissing = isFunction(options.missing)\r\n ? defineCoreMissingHandler(options.missing)\r\n : null;\r\n // postTranslation handler\r\n let _postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n let _warnHtmlMessage = __root\r\n ? __root.warnHtmlMessage\r\n : isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n let _escapeParameter = !!options.escapeParameter;\r\n // custom linked modifiers\r\n // prettier-ignore\r\n const _modifiers = __root\r\n ? __root.modifiers\r\n : isPlainObject(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\r\n // runtime context\r\n // eslint-disable-next-line prefer-const\r\n let _context;\r\n const getCoreContext = () => {\r\n _isGlobal && setFallbackContext(null);\r\n const ctxOptions = {\r\n version: VERSION,\r\n locale: _locale.value,\r\n fallbackLocale: _fallbackLocale.value,\r\n messages: _messages.value,\r\n modifiers: _modifiers,\r\n pluralRules: _pluralRules,\r\n missing: _runtimeMissing === null ? undefined : _runtimeMissing,\r\n missingWarn: _missingWarn,\r\n fallbackWarn: _fallbackWarn,\r\n fallbackFormat: _fallbackFormat,\r\n unresolving: true,\r\n postTranslation: _postTranslation === null ? undefined : _postTranslation,\r\n warnHtmlMessage: _warnHtmlMessage,\r\n escapeParameter: _escapeParameter,\r\n messageResolver: options.messageResolver,\r\n __meta: { framework: 'vue' }\r\n };\r\n {\r\n ctxOptions.datetimeFormats = _datetimeFormats.value;\r\n ctxOptions.numberFormats = _numberFormats.value;\r\n ctxOptions.__datetimeFormatters = isPlainObject(_context)\r\n ? _context.__datetimeFormatters\r\n : undefined;\r\n ctxOptions.__numberFormatters = isPlainObject(_context)\r\n ? _context.__numberFormatters\r\n : undefined;\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n ctxOptions.__v_emitter = isPlainObject(_context)\r\n ? _context.__v_emitter\r\n : undefined;\r\n }\r\n const ctx = createCoreContext(ctxOptions);\r\n _isGlobal && setFallbackContext(ctx);\r\n return ctx;\r\n };\r\n _context = getCoreContext();\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ]\r\n ;\r\n }\r\n // locale\r\n const locale = computed({\r\n get: () => _locale.value,\r\n set: val => {\r\n _locale.value = val;\r\n _context.locale = _locale.value;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = computed({\r\n get: () => _fallbackLocale.value,\r\n set: val => {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = _fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, val);\r\n }\r\n });\r\n // messages\r\n const messages = computed(() => _messages.value);\r\n // datetimeFormats\r\n const datetimeFormats = /* #__PURE__*/ computed(() => _datetimeFormats.value);\r\n // numberFormats\r\n const numberFormats = /* #__PURE__*/ computed(() => _numberFormats.value);\r\n // getPostTranslationHandler\r\n function getPostTranslationHandler() {\r\n return isFunction(_postTranslation) ? _postTranslation : null;\r\n }\r\n // setPostTranslationHandler\r\n function setPostTranslationHandler(handler) {\r\n _postTranslation = handler;\r\n _context.postTranslation = handler;\r\n }\r\n // getMissingHandler\r\n function getMissingHandler() {\r\n return _missing;\r\n }\r\n // setMissingHandler\r\n function setMissingHandler(handler) {\r\n if (handler !== null) {\r\n _runtimeMissing = defineCoreMissingHandler(handler);\r\n }\r\n _missing = handler;\r\n _context.missing = _runtimeMissing;\r\n }\r\n function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n return type !== 'translate' || !arg.resolvedMessage;\r\n }\r\n const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {\r\n trackReactivityValues(); // track reactive dependency\r\n // NOTE: experimental !!\r\n let ret;\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n try {\r\n setAdditionalMeta(getMetaInfo());\r\n if (!_isGlobal) {\r\n _context.fallbackContext = __root\r\n ? getFallbackContext()\r\n : undefined;\r\n }\r\n ret = fn(_context);\r\n }\r\n finally {\r\n setAdditionalMeta(null);\r\n if (!_isGlobal) {\r\n _context.fallbackContext = undefined;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fn(_context);\r\n }\r\n if (isNumber(ret) && ret === NOT_REOSLVED) {\r\n const [key, arg2] = argumentParser();\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n __root &&\r\n isString(key) &&\r\n isResolvedTranslateMessage(warnType, arg2)) {\r\n if (_fallbackRoot &&\r\n (isTranslateFallbackWarn(_fallbackWarn, key) ||\r\n isTranslateMissingWarn(_missingWarn, key))) {\r\n warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\r\n key,\r\n type: warnType\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const { __v_emitter: emitter } = _context;\r\n if (emitter && _fallbackRoot) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type: warnType,\r\n key,\r\n to: 'global',\r\n groupId: `${warnType}:${key}`\r\n });\r\n }\r\n }\r\n }\r\n return __root && _fallbackRoot\r\n ? fallbackSuccess(__root)\r\n : fallbackFail(key);\r\n }\r\n else if (successCondition(ret)) {\r\n return ret;\r\n }\r\n else {\r\n /* istanbul ignore next */\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\r\n }\r\n };\r\n // t\r\n function t(...args) {\r\n return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val));\r\n }\r\n // rt\r\n function rt(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n if (arg3 && !isObject(arg3)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);\r\n }\r\n // d\r\n function d(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // n\r\n function n(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // for custom processor\r\n function normalize(values) {\r\n return values.map(val => isString(val) || isNumber(val) || isBoolean(val)\r\n ? createTextNode(String(val))\r\n : val);\r\n }\r\n const interpolate = (val) => val;\r\n const processor = {\r\n normalize,\r\n interpolate,\r\n type: 'vnode'\r\n };\r\n // transrateVNode, using for `i18n-t` component\r\n function transrateVNode(...args) {\r\n return wrapWithDeps(context => {\r\n let ret;\r\n const _context = context;\r\n try {\r\n _context.processor = processor;\r\n ret = Reflect.apply(translate, null, [_context, ...args]);\r\n }\r\n finally {\r\n _context.processor = null;\r\n }\r\n return ret;\r\n }, () => parseTranslateArgs(...args), 'translate', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[TransrateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val));\r\n }\r\n // numberParts, using for `i18n-n` component\r\n function numberParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[NumberPartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n // datetimeParts, using for `i18n-d` component\r\n function datetimeParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[DatetimePartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n function setPluralRules(rules) {\r\n _pluralRules = rules;\r\n _context.pluralRules = _pluralRules;\r\n }\r\n // te\r\n function te(key, locale) {\r\n const targetLocale = isString(locale) ? locale : _locale.value;\r\n const message = getLocaleMessage(targetLocale);\r\n return _context.messageResolver(message, key) !== null;\r\n }\r\n function resolveMessages(key) {\r\n let messages = null;\r\n const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);\r\n for (let i = 0; i < locales.length; i++) {\r\n const targetLocaleMessages = _messages.value[locales[i]] || {};\r\n const messageValue = _context.messageResolver(targetLocaleMessages, key);\r\n if (messageValue != null) {\r\n messages = messageValue;\r\n break;\r\n }\r\n }\r\n return messages;\r\n }\r\n // tm\r\n function tm(key) {\r\n const messages = resolveMessages(key);\r\n // prettier-ignore\r\n return messages != null\r\n ? messages\r\n : __root\r\n ? __root.tm(key) || {}\r\n : {};\r\n }\r\n // getLocaleMessage\r\n function getLocaleMessage(locale) {\r\n return (_messages.value[locale] || {});\r\n }\r\n // setLocaleMessage\r\n function setLocaleMessage(locale, message) {\r\n _messages.value[locale] = message;\r\n _context.messages = _messages.value;\r\n }\r\n // mergeLocaleMessage\r\n function mergeLocaleMessage(locale, message) {\r\n _messages.value[locale] = _messages.value[locale] || {};\r\n deepCopy(message, _messages.value[locale]);\r\n _context.messages = _messages.value;\r\n }\r\n // getDateTimeFormat\r\n function getDateTimeFormat(locale) {\r\n return _datetimeFormats.value[locale] || {};\r\n }\r\n // setDateTimeFormat\r\n function setDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = format;\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // mergeDateTimeFormat\r\n function mergeDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format);\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // getNumberFormat\r\n function getNumberFormat(locale) {\r\n return _numberFormats.value[locale] || {};\r\n }\r\n // setNumberFormat\r\n function setNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = format;\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // mergeNumberFormat\r\n function mergeNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format);\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // for debug\r\n composerID++;\r\n // watch root locale & fallbackLocale\r\n if (__root && inBrowser) {\r\n watch(__root.locale, (val) => {\r\n if (_inheritLocale) {\r\n _locale.value = val;\r\n _context.locale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n watch(__root.fallbackLocale, (val) => {\r\n if (_inheritLocale) {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n }\r\n // define basic composition API!\r\n const composer = {\r\n id: composerID,\r\n locale,\r\n fallbackLocale,\r\n get inheritLocale() {\r\n return _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n _inheritLocale = val;\r\n if (val && __root) {\r\n _locale.value = __root.locale.value;\r\n _fallbackLocale.value = __root.fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n },\r\n get availableLocales() {\r\n return Object.keys(_messages.value).sort();\r\n },\r\n messages,\r\n get modifiers() {\r\n return _modifiers;\r\n },\r\n get pluralRules() {\r\n return _pluralRules || {};\r\n },\r\n get isGlobal() {\r\n return _isGlobal;\r\n },\r\n get missingWarn() {\r\n return _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n _missingWarn = val;\r\n _context.missingWarn = _missingWarn;\r\n },\r\n get fallbackWarn() {\r\n return _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n _fallbackWarn = val;\r\n _context.fallbackWarn = _fallbackWarn;\r\n },\r\n get fallbackRoot() {\r\n return _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n _fallbackRoot = val;\r\n },\r\n get fallbackFormat() {\r\n return _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n _fallbackFormat = val;\r\n _context.fallbackFormat = _fallbackFormat;\r\n },\r\n get warnHtmlMessage() {\r\n return _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n _warnHtmlMessage = val;\r\n _context.warnHtmlMessage = val;\r\n },\r\n get escapeParameter() {\r\n return _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n _escapeParameter = val;\r\n _context.escapeParameter = val;\r\n },\r\n t,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n [SetPluralRulesSymbol]: setPluralRules\r\n };\r\n {\r\n composer.datetimeFormats = datetimeFormats;\r\n composer.numberFormats = numberFormats;\r\n composer.rt = rt;\r\n composer.te = te;\r\n composer.tm = tm;\r\n composer.d = d;\r\n composer.n = n;\r\n composer.getDateTimeFormat = getDateTimeFormat;\r\n composer.setDateTimeFormat = setDateTimeFormat;\r\n composer.mergeDateTimeFormat = mergeDateTimeFormat;\r\n composer.getNumberFormat = getNumberFormat;\r\n composer.setNumberFormat = setNumberFormat;\r\n composer.mergeNumberFormat = mergeNumberFormat;\r\n composer[InejctWithOption] = options.__injectWithOption;\r\n composer[TransrateVNodeSymbol] = transrateVNode;\r\n composer[DatetimePartsSymbol] = datetimeParts;\r\n composer[NumberPartsSymbol] = numberParts;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n composer[EnableEmitter] = (emitter) => {\r\n _context.__v_emitter = emitter;\r\n };\r\n composer[DisableEmitter] = () => {\r\n _context.__v_emitter = undefined;\r\n };\r\n }\r\n return composer;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Convert to I18n Composer Options from VueI18n Options\r\n *\r\n * @internal\r\n */\r\nfunction convertComposerOptions(options) {\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const missing = isFunction(options.missing) ? options.missing : undefined;\r\n const missingWarn = isBoolean(options.silentTranslationWarn) ||\r\n isRegExp(options.silentTranslationWarn)\r\n ? !options.silentTranslationWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.silentFallbackWarn) ||\r\n isRegExp(options.silentFallbackWarn)\r\n ? !options.silentFallbackWarn\r\n : true;\r\n const fallbackRoot = isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n const fallbackFormat = !!options.formatFallbackMessages;\r\n const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};\r\n const pluralizationRules = options.pluralizationRules;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : undefined;\r\n const warnHtmlMessage = isString(options.warnHtmlInMessage)\r\n ? options.warnHtmlInMessage !== 'off'\r\n : true;\r\n const escapeParameter = !!options.escapeParameterHtml;\r\n const inheritLocale = isBoolean(options.sync) ? options.sync : true;\r\n if ((process.env.NODE_ENV !== 'production') && options.formatter) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && options.preserveDirectiveContent) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n }\r\n let messages = options.messages;\r\n if (isPlainObject(options.sharedMessages)) {\r\n const sharedMessages = options.sharedMessages;\r\n const locales = Object.keys(sharedMessages);\r\n messages = locales.reduce((messages, locale) => {\r\n const message = messages[locale] || (messages[locale] = {});\r\n assign(message, sharedMessages[locale]);\r\n return messages;\r\n }, (messages || {}));\r\n }\r\n const { __i18n, __root, __injectWithOption } = options;\r\n const datetimeFormats = options.datetimeFormats;\r\n const numberFormats = options.numberFormats;\r\n const flatJson = options.flatJson;\r\n return {\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n flatJson,\r\n datetimeFormats,\r\n numberFormats,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackRoot,\r\n fallbackFormat,\r\n modifiers,\r\n pluralRules: pluralizationRules,\r\n postTranslation,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageResolver: options.messageResolver,\r\n inheritLocale,\r\n __i18n,\r\n __root,\r\n __injectWithOption\r\n };\r\n}\r\n/**\r\n * create VueI18n interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createVueI18n(options = {}, VueI18nLegacy) {\r\n {\r\n const composer = createComposer(convertComposerOptions(options));\r\n // defines VueI18n\r\n const vueI18n = {\r\n // id\r\n id: composer.id,\r\n // locale\r\n get locale() {\r\n return composer.locale.value;\r\n },\r\n set locale(val) {\r\n composer.locale.value = val;\r\n },\r\n // fallbackLocale\r\n get fallbackLocale() {\r\n return composer.fallbackLocale.value;\r\n },\r\n set fallbackLocale(val) {\r\n composer.fallbackLocale.value = val;\r\n },\r\n // messages\r\n get messages() {\r\n return composer.messages.value;\r\n },\r\n // datetimeFormats\r\n get datetimeFormats() {\r\n return composer.datetimeFormats.value;\r\n },\r\n // numberFormats\r\n get numberFormats() {\r\n return composer.numberFormats.value;\r\n },\r\n // availableLocales\r\n get availableLocales() {\r\n return composer.availableLocales;\r\n },\r\n // formatter\r\n get formatter() {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n // dummy\r\n return {\r\n interpolate() {\r\n return [];\r\n }\r\n };\r\n },\r\n set formatter(val) {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n },\r\n // missing\r\n get missing() {\r\n return composer.getMissingHandler();\r\n },\r\n set missing(handler) {\r\n composer.setMissingHandler(handler);\r\n },\r\n // silentTranslationWarn\r\n get silentTranslationWarn() {\r\n return isBoolean(composer.missingWarn)\r\n ? !composer.missingWarn\r\n : composer.missingWarn;\r\n },\r\n set silentTranslationWarn(val) {\r\n composer.missingWarn = isBoolean(val) ? !val : val;\r\n },\r\n // silentFallbackWarn\r\n get silentFallbackWarn() {\r\n return isBoolean(composer.fallbackWarn)\r\n ? !composer.fallbackWarn\r\n : composer.fallbackWarn;\r\n },\r\n set silentFallbackWarn(val) {\r\n composer.fallbackWarn = isBoolean(val) ? !val : val;\r\n },\r\n // modifiers\r\n get modifiers() {\r\n return composer.modifiers;\r\n },\r\n // formatFallbackMessages\r\n get formatFallbackMessages() {\r\n return composer.fallbackFormat;\r\n },\r\n set formatFallbackMessages(val) {\r\n composer.fallbackFormat = val;\r\n },\r\n // postTranslation\r\n get postTranslation() {\r\n return composer.getPostTranslationHandler();\r\n },\r\n set postTranslation(handler) {\r\n composer.setPostTranslationHandler(handler);\r\n },\r\n // sync\r\n get sync() {\r\n return composer.inheritLocale;\r\n },\r\n set sync(val) {\r\n composer.inheritLocale = val;\r\n },\r\n // warnInHtmlMessage\r\n get warnHtmlInMessage() {\r\n return composer.warnHtmlMessage ? 'warn' : 'off';\r\n },\r\n set warnHtmlInMessage(val) {\r\n composer.warnHtmlMessage = val !== 'off';\r\n },\r\n // escapeParameterHtml\r\n get escapeParameterHtml() {\r\n return composer.escapeParameter;\r\n },\r\n set escapeParameterHtml(val) {\r\n composer.escapeParameter = val;\r\n },\r\n // preserveDirectiveContent\r\n get preserveDirectiveContent() {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n return true;\r\n },\r\n set preserveDirectiveContent(val) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n },\r\n // pluralizationRules\r\n get pluralizationRules() {\r\n return composer.pluralRules || {};\r\n },\r\n // for internal\r\n __composer: composer,\r\n // t\r\n t(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n rt(...args) {\r\n return Reflect.apply(composer.rt, composer, [...args]);\r\n },\r\n // tc\r\n tc(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = { plural: 1 };\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n // te\r\n te(key, locale) {\r\n return composer.te(key, locale);\r\n },\r\n // tm\r\n tm(key) {\r\n return composer.tm(key);\r\n },\r\n // getLocaleMessage\r\n getLocaleMessage(locale) {\r\n return composer.getLocaleMessage(locale);\r\n },\r\n // setLocaleMessage\r\n setLocaleMessage(locale, message) {\r\n composer.setLocaleMessage(locale, message);\r\n },\r\n // mergeLocaleMessage\r\n mergeLocaleMessage(locale, message) {\r\n composer.mergeLocaleMessage(locale, message);\r\n },\r\n // d\r\n d(...args) {\r\n return Reflect.apply(composer.d, composer, [...args]);\r\n },\r\n // getDateTimeFormat\r\n getDateTimeFormat(locale) {\r\n return composer.getDateTimeFormat(locale);\r\n },\r\n // setDateTimeFormat\r\n setDateTimeFormat(locale, format) {\r\n composer.setDateTimeFormat(locale, format);\r\n },\r\n // mergeDateTimeFormat\r\n mergeDateTimeFormat(locale, format) {\r\n composer.mergeDateTimeFormat(locale, format);\r\n },\r\n // n\r\n n(...args) {\r\n return Reflect.apply(composer.n, composer, [...args]);\r\n },\r\n // getNumberFormat\r\n getNumberFormat(locale) {\r\n return composer.getNumberFormat(locale);\r\n },\r\n // setNumberFormat\r\n setNumberFormat(locale, format) {\r\n composer.setNumberFormat(locale, format);\r\n },\r\n // mergeNumberFormat\r\n mergeNumberFormat(locale, format) {\r\n composer.mergeNumberFormat(locale, format);\r\n },\r\n // getChoiceIndex\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n getChoiceIndex(choice, choicesLength) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));\r\n return -1;\r\n },\r\n // for internal\r\n __onComponentInstanceCreated(target) {\r\n const { componentInstanceCreatedListener } = options;\r\n if (componentInstanceCreatedListener) {\r\n componentInstanceCreatedListener(target, vueI18n);\r\n }\r\n }\r\n };\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n vueI18n.__enableEmitter = (emitter) => {\r\n const __composer = composer;\r\n __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\r\n };\r\n vueI18n.__disableEmitter = () => {\r\n const __composer = composer;\r\n __composer[DisableEmitter] && __composer[DisableEmitter]();\r\n };\r\n }\r\n return vueI18n;\r\n }\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst baseFormatProps = {\r\n tag: {\r\n type: [String, Object]\r\n },\r\n locale: {\r\n type: String\r\n },\r\n scope: {\r\n type: String,\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n validator: (val /* ComponetI18nScope */) => val === 'parent' || val === 'global',\r\n default: 'parent' /* ComponetI18nScope */\r\n },\r\n i18n: {\r\n type: Object\r\n }\r\n};\n\nfunction getInterpolateArg(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n{ slots }, // SetupContext,\r\nkeys) {\r\n if (keys.length === 1 && keys[0] === 'default') {\r\n // default slot with list\r\n const ret = slots.default ? slots.default() : [];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return ret.reduce((slot, current) => {\r\n return (slot = [\r\n ...slot,\r\n ...(isArray(current.children) ? current.children : [current])\r\n ]);\r\n }, []);\r\n }\r\n else {\r\n // named slots\r\n return keys.reduce((arg, key) => {\r\n const slot = slots[key];\r\n if (slot) {\r\n arg[key] = slot();\r\n }\r\n return arg;\r\n }, {});\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getFragmentableTag(tag) {\r\n return Fragment ;\r\n}\n\n/**\r\n * Translation Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [TranslationProps](component#translationprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\r\n *\r\n * @example\r\n * ```html\r\n * <div id=\"app\">\r\n * <!-- ... -->\r\n * <i18n path=\"term\" tag=\"label\" for=\"tos\">\r\n * <a :href=\"url\" target=\"_blank\">{{ $t('tos') }}</a>\r\n * </i18n>\r\n * <!-- ... -->\r\n * </div>\r\n * ```\r\n * ```js\r\n * import { createApp } from 'vue'\r\n * import { createI18n } from 'vue-i18n'\r\n *\r\n * const messages = {\r\n * en: {\r\n * tos: 'Term of Service',\r\n * term: 'I accept xxx {0}.'\r\n * },\r\n * ja: {\r\n * tos: '利用規約',\r\n * term: '私は xxx の{0}に同意します。'\r\n * }\r\n * }\r\n *\r\n * const i18n = createI18n({\r\n * locale: 'en',\r\n * messages\r\n * })\r\n *\r\n * const app = createApp({\r\n * data: {\r\n * url: '/term'\r\n * }\r\n * }).use(i18n).mount('#app')\r\n * ```\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst Translation = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-t',\r\n props: assign({\r\n keypath: {\r\n type: String,\r\n required: true\r\n },\r\n plural: {\r\n type: [Number, String],\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n validator: (val) => isNumber(val) || !isNaN(val)\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const { slots, attrs } = context;\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n const i18n = props.i18n ||\r\n useI18n({\r\n useScope: props.scope,\r\n __useComponent: true\r\n });\r\n return () => {\r\n const keys = Object.keys(slots).filter(key => key !== '_');\r\n const options = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (props.plural !== undefined) {\r\n options.plural = isString(props.plural) ? +props.plural : props.plural;\r\n }\r\n const arg = getInterpolateArg(context, keys);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const children = i18n[TransrateVNodeSymbol](props.keypath, arg, options);\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n }\r\n};\n\nfunction isVNode(target) {\r\n return isArray(target) && !isString(target[0]);\r\n}\r\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\r\n const { slots, attrs } = context;\r\n return () => {\r\n const options = { part: true };\r\n let overrides = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (isString(props.format)) {\r\n options.key = props.format;\r\n }\r\n else if (isObject(props.format)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (isString(props.format.key)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n options.key = props.format.key;\r\n }\r\n // Filter out number format options only\r\n overrides = Object.keys(props.format).reduce((options, prop) => {\r\n return slotKeys.includes(prop)\r\n ? assign({}, options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : options;\r\n }, {});\r\n }\r\n const parts = partFormatter(...[props.value, options, overrides]);\r\n let children = [options.key];\r\n if (isArray(parts)) {\r\n children = parts.map((part, index) => {\r\n const slot = slots[part.type];\r\n const node = slot\r\n ? slot({ [part.type]: part.value, index, parts })\r\n : [part.value];\r\n if (isVNode(node)) {\r\n node[0].key = `${part.type}-${index}`;\r\n }\r\n return node;\r\n });\r\n }\r\n else if (isString(parts)) {\r\n children = [parts];\r\n }\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n}\n\n/**\r\n * Number Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst NumberFormat = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-n',\r\n props: assign({\r\n value: {\r\n type: Number,\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[NumberPartsSymbol](...args));\r\n }\r\n};\n\n/**\r\n * Datetime Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst DatetimeFormat = /*defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-d',\r\n props: assign({\r\n value: {\r\n type: [Number, Date],\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[DatetimePartsSymbol](...args));\r\n }\r\n};\n\nfunction getComposer$2(i18n, instance) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n return (i18nInternal.__getInstance(instance) || i18n.global);\r\n }\r\n else {\r\n const vueI18n = i18nInternal.__getInstance(instance);\r\n return vueI18n != null\r\n ? vueI18n.__composer\r\n : i18n.global.__composer;\r\n }\r\n}\r\nfunction vTDirective(i18n) {\r\n const _process = (binding) => {\r\n const { instance, modifiers, value } = binding;\r\n /* istanbul ignore if */\r\n if (!instance || !instance.$) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const composer = getComposer$2(i18n, instance.$);\r\n if ((process.env.NODE_ENV !== 'production') && modifiers.preserve) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));\r\n }\r\n const parsedValue = parseValue(value);\r\n return [\r\n Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),\r\n composer\r\n ];\r\n };\r\n const register = (el, binding) => {\r\n const [textContent, composer] = _process(binding);\r\n if (inBrowser && i18n.global === composer) {\r\n // global scope only\r\n el.__i18nWatcher = watch(composer.locale, () => {\r\n binding.instance && binding.instance.$forceUpdate();\r\n });\r\n }\r\n el.__composer = composer;\r\n el.textContent = textContent;\r\n };\r\n const unregister = (el) => {\r\n if (inBrowser && el.__i18nWatcher) {\r\n el.__i18nWatcher();\r\n el.__i18nWatcher = undefined;\r\n delete el.__i18nWatcher;\r\n }\r\n if (el.__composer) {\r\n el.__composer = undefined;\r\n delete el.__composer;\r\n }\r\n };\r\n const update = (el, { value }) => {\r\n if (el.__composer) {\r\n const composer = el.__composer;\r\n const parsedValue = parseValue(value);\r\n el.textContent = Reflect.apply(composer.t, composer, [\r\n ...makeParams(parsedValue)\r\n ]);\r\n }\r\n };\r\n const getSSRProps = (binding) => {\r\n const [textContent] = _process(binding);\r\n return { textContent };\r\n };\r\n return {\r\n created: register,\r\n unmounted: unregister,\r\n beforeUpdate: update,\r\n getSSRProps\r\n };\r\n}\r\nfunction parseValue(value) {\r\n if (isString(value)) {\r\n return { path: value };\r\n }\r\n else if (isPlainObject(value)) {\r\n if (!('path' in value)) {\r\n throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\r\n }\r\n return value;\r\n }\r\n else {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n}\r\nfunction makeParams(value) {\r\n const { path, locale, args, choice, plural } = value;\r\n const options = {};\r\n const named = args || {};\r\n if (isString(locale)) {\r\n options.locale = locale;\r\n }\r\n if (isNumber(choice)) {\r\n options.plural = choice;\r\n }\r\n if (isNumber(plural)) {\r\n options.plural = plural;\r\n }\r\n return [path, named, options];\r\n}\n\nfunction apply(app, i18n, ...options) {\r\n const pluginOptions = isPlainObject(options[0])\r\n ? options[0]\r\n : {};\r\n const useI18nComponentName = !!pluginOptions.useI18nComponentName;\r\n const globalInstall = isBoolean(pluginOptions.globalInstall)\r\n ? pluginOptions.globalInstall\r\n : true;\r\n if ((process.env.NODE_ENV !== 'production') && globalInstall && useI18nComponentName) {\r\n warn(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {\r\n name: Translation.name\r\n }));\r\n }\r\n if (globalInstall) {\r\n // install components\r\n app.component(!useI18nComponentName ? Translation.name : 'i18n', Translation);\r\n app.component(NumberFormat.name, NumberFormat);\r\n app.component(DatetimeFormat.name, DatetimeFormat);\r\n }\r\n // install directive\r\n {\r\n app.directive('t', vTDirective(i18n));\r\n }\r\n}\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\r\nlet devtoolsApi;\r\nasync function enableDevTools(app, i18n) {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n setupDevtoolsPlugin({\r\n id: \"vue-devtools-plugin-vue-i18n\" /* PLUGIN */,\r\n label: VueDevToolsLabels[\"vue-devtools-plugin-vue-i18n\" /* PLUGIN */],\r\n packageName: 'vue-i18n',\r\n homepage: 'https://vue-i18n.intlify.dev',\r\n logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\r\n componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\r\n app: app // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }, api => {\r\n devtoolsApi = api;\r\n api.on.visitComponentTree(({ componentInstance, treeNode }) => {\r\n updateComponentTreeTags(componentInstance, treeNode, i18n);\r\n });\r\n api.on.inspectComponent(({ componentInstance, instanceData }) => {\r\n if (componentInstance.vnode.el &&\r\n componentInstance.vnode.el.__VUE_I18N__ &&\r\n instanceData) {\r\n if (i18n.mode === 'legacy') {\r\n // ignore global scope on legacy mode\r\n if (componentInstance.vnode.el.__VUE_I18N__ !==\r\n i18n.global.__composer) {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n else {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n });\r\n api.addInspector({\r\n id: \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */,\r\n label: VueDevToolsLabels[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */],\r\n icon: 'language',\r\n treeFilterPlaceholder: VueDevToolsPlaceholders[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]\r\n });\r\n api.on.getInspectorTree(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n registerScope(payload, i18n);\r\n }\r\n });\r\n const roots = new Map();\r\n api.on.getInspectorState(async (payload) => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n api.unhighlightElement();\r\n inspectScope(payload, i18n);\r\n if (payload.nodeId === 'global') {\r\n if (!roots.has(payload.app)) {\r\n const [root] = await api.getComponentInstances(payload.app);\r\n roots.set(payload.app, root);\r\n }\r\n api.highlightElement(roots.get(payload.app));\r\n }\r\n else {\r\n const instance = getComponentInstance(payload.nodeId, i18n);\r\n instance && api.highlightElement(instance);\r\n }\r\n }\r\n });\r\n api.on.editInspectorState(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n editScope(payload, i18n);\r\n }\r\n });\r\n api.addTimelineLayer({\r\n id: \"vue-i18n-timeline\" /* TIMELINE */,\r\n label: VueDevToolsLabels[\"vue-i18n-timeline\" /* TIMELINE */],\r\n color: VueDevToolsTimelineColors[\"vue-i18n-timeline\" /* TIMELINE */]\r\n });\r\n resolve(true);\r\n });\r\n }\r\n catch (e) {\r\n console.error(e);\r\n reject(false);\r\n }\r\n });\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getI18nScopeLable(instance) {\r\n return (instance.type.name ||\r\n instance.type.displayName ||\r\n instance.type.__file ||\r\n 'Anonymous');\r\n}\r\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\r\ntreeNode, i18n) {\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\r\n // add custom tags local scope only\r\n if (instance.vnode.el.__VUE_I18N__ !== global) {\r\n const tag = {\r\n label: `i18n (${getI18nScopeLable(instance)} Scope)`,\r\n textColor: 0x000000,\r\n backgroundColor: 0xffcd19\r\n };\r\n treeNode.tags.push(tag);\r\n }\r\n }\r\n}\r\nfunction inspectComposer(instanceData, composer) {\r\n const type = VUE_I18N_COMPONENT_TYPES;\r\n instanceData.state.push({\r\n type,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n });\r\n {\r\n instanceData.state.push({\r\n type,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n });\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getLocaleMessageValue(messages) {\r\n const value = {};\r\n Object.keys(messages).forEach((key) => {\r\n const v = messages[key];\r\n if (isFunction(v) && 'source' in v) {\r\n value[key] = getMessageFunctionDetails(v);\r\n }\r\n else if (isObject(v)) {\r\n value[key] = getLocaleMessageValue(v);\r\n }\r\n else {\r\n value[key] = v;\r\n }\r\n });\r\n return value;\r\n}\r\nconst ESC = {\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n '&': '&'\r\n};\r\nfunction escape(s) {\r\n return s.replace(/[<>\"&]/g, escapeChar);\r\n}\r\nfunction escapeChar(a) {\r\n return ESC[a] || a;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getMessageFunctionDetails(func) {\r\n const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\r\n return {\r\n _custom: {\r\n type: 'function',\r\n display: `<span>ƒ</span> ${argString}`\r\n }\r\n };\r\n}\r\nfunction registerScope(payload, i18n) {\r\n payload.rootNodes.push({\r\n id: 'global',\r\n label: 'Global Scope'\r\n });\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n for (const [keyInstance, instance] of i18n.__instances) {\r\n // prettier-ignore\r\n const composer = i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n if (global === composer) {\r\n continue;\r\n }\r\n payload.rootNodes.push({\r\n id: composer.id.toString(),\r\n label: `${getI18nScopeLable(keyInstance)} Scope`\r\n });\r\n }\r\n}\r\nfunction getComponentInstance(nodeId, i18n) {\r\n let instance = null;\r\n if (nodeId !== 'global') {\r\n for (const [component, composer] of i18n.__instances.entries()) {\r\n if (composer.id.toString() === nodeId) {\r\n instance = component;\r\n break;\r\n }\r\n }\r\n }\r\n return instance;\r\n}\r\nfunction getComposer$1(nodeId, i18n) {\r\n if (nodeId === 'global') {\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n }\r\n else {\r\n const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\r\n if (instance) {\r\n return i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\r\nfunction inspectScope(payload, i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n // TODO:\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n payload.state = makeScopeInspectState(composer);\r\n }\r\n return null;\r\n}\r\nfunction makeScopeInspectState(composer) {\r\n const state = {};\r\n const localeType = 'Locale related info';\r\n const localeStates = [\r\n {\r\n type: localeType,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n },\r\n {\r\n type: localeType,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n }\r\n ];\r\n state[localeType] = localeStates;\r\n const localeMessagesType = 'Locale messages info';\r\n const localeMessagesStates = [\r\n {\r\n type: localeMessagesType,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n }\r\n ];\r\n state[localeMessagesType] = localeMessagesStates;\r\n {\r\n const datetimeFormatsType = 'Datetime formats info';\r\n const datetimeFormatsStates = [\r\n {\r\n type: datetimeFormatsType,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n }\r\n ];\r\n state[datetimeFormatsType] = datetimeFormatsStates;\r\n const numberFormatsType = 'Datetime formats info';\r\n const numberFormatsStates = [\r\n {\r\n type: numberFormatsType,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n }\r\n ];\r\n state[numberFormatsType] = numberFormatsStates;\r\n }\r\n return state;\r\n}\r\nfunction addTimelineEvent(event, payload) {\r\n if (devtoolsApi) {\r\n let groupId;\r\n if (payload && 'groupId' in payload) {\r\n groupId = payload.groupId;\r\n delete payload.groupId;\r\n }\r\n devtoolsApi.addTimelineEvent({\r\n layerId: \"vue-i18n-timeline\" /* TIMELINE */,\r\n event: {\r\n title: event,\r\n groupId,\r\n time: Date.now(),\r\n meta: {},\r\n data: payload || {},\r\n logType: event === \"compile-error\" /* COMPILE_ERROR */\r\n ? 'error'\r\n : event === \"fallback\" /* FALBACK */ ||\r\n event === \"missing\" /* MISSING */\r\n ? 'warning'\r\n : 'default'\r\n }\r\n });\r\n }\r\n}\r\nfunction editScope(payload, i18n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n const [field] = payload.path;\r\n if (field === 'locale' && isString(payload.state.value)) {\r\n composer.locale.value = payload.state.value;\r\n }\r\n else if (field === 'fallbackLocale' &&\r\n (isString(payload.state.value) ||\r\n isArray(payload.state.value) ||\r\n isObject(payload.state.value))) {\r\n composer.fallbackLocale.value = payload.state.value;\r\n }\r\n else if (field === 'inheritLocale' && isBoolean(payload.state.value)) {\r\n composer.inheritLocale = payload.state.value;\r\n }\r\n }\r\n}\n\n/**\r\n * Supports compatibility for legacy vue-i18n APIs\r\n * This mixin is used when we use vue-i18n@v9.x or later\r\n */\r\nfunction defineMixin(vuei18n, composer, i18n) {\r\n return {\r\n beforeCreate() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const options = this.$options;\r\n if (options.i18n) {\r\n const optionsI18n = options.i18n;\r\n if (options.__i18n) {\r\n optionsI18n.__i18n = options.__i18n;\r\n }\r\n optionsI18n.__root = composer;\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, optionsI18n);\r\n }\r\n else {\r\n optionsI18n.__injectWithOption = true;\r\n this.$i18n = createVueI18n(optionsI18n);\r\n }\r\n }\r\n else if (options.__i18n) {\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, options);\r\n }\r\n else {\r\n this.$i18n = createVueI18n({\r\n __i18n: options.__i18n,\r\n __injectWithOption: true,\r\n __root: composer\r\n });\r\n }\r\n }\r\n else {\r\n // set global\r\n this.$i18n = vuei18n;\r\n }\r\n if (options.__i18nGlobal) {\r\n adjustI18nResources(composer, options, options);\r\n }\r\n vuei18n.__onComponentInstanceCreated(this.$i18n);\r\n i18n.__setInstance(instance, this.$i18n);\r\n // defines vue-i18n legacy APIs\r\n this.$t = (...args) => this.$i18n.t(...args);\r\n this.$rt = (...args) => this.$i18n.rt(...args);\r\n this.$tc = (...args) => this.$i18n.tc(...args);\r\n this.$te = (key, locale) => this.$i18n.te(key, locale);\r\n this.$d = (...args) => this.$i18n.d(...args);\r\n this.$n = (...args) => this.$i18n.n(...args);\r\n this.$tm = (key) => this.$i18n.tm(key);\r\n },\r\n mounted() {\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n this.$el &&\r\n this.$i18n) {\r\n this.$el.__VUE_I18N__ = this.$i18n.__composer;\r\n const emitter = (this.__v_emitter =\r\n createEmitter());\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n unmounted() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n this.$el &&\r\n this.$el.__VUE_I18N__) {\r\n if (this.__v_emitter) {\r\n this.__v_emitter.off('*', addTimelineEvent);\r\n delete this.__v_emitter;\r\n }\r\n if (this.$i18n) {\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\r\n delete this.$el.__VUE_I18N__;\r\n }\r\n }\r\n delete this.$t;\r\n delete this.$rt;\r\n delete this.$tc;\r\n delete this.$te;\r\n delete this.$d;\r\n delete this.$n;\r\n delete this.$tm;\r\n i18n.__deleteInstance(instance);\r\n delete this.$i18n;\r\n }\r\n };\r\n}\r\nfunction mergeToRoot(root, options) {\r\n root.locale = options.locale || root.locale;\r\n root.fallbackLocale = options.fallbackLocale || root.fallbackLocale;\r\n root.missing = options.missing || root.missing;\r\n root.silentTranslationWarn =\r\n options.silentTranslationWarn || root.silentFallbackWarn;\r\n root.silentFallbackWarn =\r\n options.silentFallbackWarn || root.silentFallbackWarn;\r\n root.formatFallbackMessages =\r\n options.formatFallbackMessages || root.formatFallbackMessages;\r\n root.postTranslation = options.postTranslation || root.postTranslation;\r\n root.warnHtmlInMessage = options.warnHtmlInMessage || root.warnHtmlInMessage;\r\n root.escapeParameterHtml =\r\n options.escapeParameterHtml || root.escapeParameterHtml;\r\n root.sync = options.sync || root.sync;\r\n root.__composer[SetPluralRulesSymbol](options.pluralizationRules || root.pluralizationRules);\r\n const messages = getLocaleMessages(root.locale, {\r\n messages: options.messages,\r\n __i18n: options.__i18n\r\n });\r\n Object.keys(messages).forEach(locale => root.mergeLocaleMessage(locale, messages[locale]));\r\n if (options.datetimeFormats) {\r\n Object.keys(options.datetimeFormats).forEach(locale => root.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\r\n }\r\n if (options.numberFormats) {\r\n Object.keys(options.numberFormats).forEach(locale => root.mergeNumberFormat(locale, options.numberFormats[locale]));\r\n }\r\n return root;\r\n}\n\n/**\r\n * Injection key for {@link useI18n}\r\n *\r\n * @remarks\r\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\r\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst I18nInjectionKey = \r\n/* #__PURE__*/ makeSymbol('global-vue-i18n');\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction createI18n(options = {}, VueI18nLegacy) {\r\n // prettier-ignore\r\n const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)\r\n ? options.legacy\r\n : __VUE_I18N_LEGACY_API__;\r\n // prettier-ignore\r\n const __globalInjection = isBoolean(options.globalInjection)\r\n ? options.globalInjection\r\n : true;\r\n // prettier-ignore\r\n const __allowComposition = __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? !!options.allowComposition\r\n : true;\r\n const __instances = new Map();\r\n const [globalScope, __global] = createGlobal(options, __legacyMode);\r\n const symbol = makeSymbol((process.env.NODE_ENV !== 'production') ? 'vue-i18n' : '');\r\n function __getInstance(component) {\r\n return __instances.get(component) || null;\r\n }\r\n function __setInstance(component, instance) {\r\n __instances.set(component, instance);\r\n }\r\n function __deleteInstance(component) {\r\n __instances.delete(component);\r\n }\r\n {\r\n const i18n = {\r\n // mode\r\n get mode() {\r\n return __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? 'legacy'\r\n : 'composition';\r\n },\r\n // allowComposition\r\n get allowComposition() {\r\n return __allowComposition;\r\n },\r\n // install plugin\r\n async install(app, ...options) {\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false) {\r\n app.__VUE_I18N__ = i18n;\r\n }\r\n // setup global provider\r\n app.__VUE_I18N_SYMBOL__ = symbol;\r\n app.provide(app.__VUE_I18N_SYMBOL__, i18n);\r\n // global method and properties injection for Composition API\r\n if (!__legacyMode && __globalInjection) {\r\n injectGlobalFields(app, i18n.global);\r\n }\r\n // install built-in components and directive\r\n if (__VUE_I18N_FULL_INSTALL__) {\r\n apply(app, i18n, ...options);\r\n }\r\n // setup mixin for Legacy API\r\n if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\r\n app.mixin(defineMixin(__global, __global.__composer, i18n));\r\n }\r\n // release global scope\r\n const unmountApp = app.unmount;\r\n app.unmount = () => {\r\n i18n.dispose();\r\n unmountApp();\r\n };\r\n // setup vue-devtools plugin\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\r\n const ret = await enableDevTools(app, i18n);\r\n if (!ret) {\r\n throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\r\n }\r\n const emitter = createEmitter();\r\n if (__legacyMode) {\r\n const _vueI18n = __global;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = __global;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n }\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n // global accessor\r\n get global() {\r\n return __global;\r\n },\r\n dispose() {\r\n globalScope.stop();\r\n },\r\n // @internal\r\n __instances,\r\n // @internal\r\n __getInstance,\r\n // @internal\r\n __setInstance,\r\n // @internal\r\n __deleteInstance\r\n };\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction useI18n(options = {}) {\r\n const instance = getCurrentInstance();\r\n if (instance == null) {\r\n throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\r\n }\r\n if (!instance.isCE &&\r\n instance.appContext.app != null &&\r\n !instance.appContext.app.__VUE_I18N_SYMBOL__) {\r\n throw createI18nError(I18nErrorCodes.NOT_INSLALLED);\r\n }\r\n const i18n = getI18nInstance(instance);\r\n const global = getGlobalComposer(i18n);\r\n const componentOptions = getComponentOptions(instance);\r\n const scope = getScope(options, componentOptions);\r\n if (__VUE_I18N_LEGACY_API__) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (i18n.mode === 'legacy' && !options.__useComponent) {\r\n if (!i18n.allowComposition) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);\r\n }\r\n return useI18nForLegacy(instance, scope, global, options);\r\n }\r\n }\r\n if (scope === 'global') {\r\n adjustI18nResources(global, options, componentOptions);\r\n return global;\r\n }\r\n if (scope === 'parent') {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let composer = getComposer(i18n, instance, options.__useComponent);\r\n if (composer == null) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\r\n }\r\n composer = global;\r\n }\r\n return composer;\r\n }\r\n const i18nInternal = i18n;\r\n let composer = i18nInternal.__getInstance(instance);\r\n if (composer == null) {\r\n const composerOptions = assign({}, options);\r\n if ('__i18n' in componentOptions) {\r\n composerOptions.__i18n = componentOptions.__i18n;\r\n }\r\n if (global) {\r\n composerOptions.__root = global;\r\n }\r\n composer = createComposer(composerOptions);\r\n setupLifeCycle(i18nInternal, instance, composer);\r\n i18nInternal.__setInstance(instance, composer);\r\n }\r\n return composer;\r\n}\r\n/**\r\n * Cast to VueI18n legacy compatible type\r\n *\r\n * @remarks\r\n * This API is provided only with [vue-i18n-bridge](https://vue-i18n.intlify.dev/guide/migration/ways.html#what-is-vue-i18n-bridge).\r\n *\r\n * The purpose of this function is to convert an {@link I18n} instance created with {@link createI18n | createI18n(legacy: true)} into a `vue-i18n@v8.x` compatible instance of `new VueI18n` in a TypeScript environment.\r\n *\r\n * @param i18n - An instance of {@link I18n}\r\n * @returns A i18n instance which is casted to {@link VueI18n} type\r\n *\r\n * @VueI18nTip\r\n * :new: provided by **vue-i18n-bridge only**\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst castToVueI18n = (i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) => {\r\n if (!(__VUE_I18N_BRIDGE__ in i18n)) {\r\n throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N);\r\n }\r\n return i18n;\r\n};\r\nfunction createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n const scope = effectScope();\r\n {\r\n const obj = __VUE_I18N_LEGACY_API__ && legacyMode\r\n ? scope.run(() => createVueI18n(options))\r\n : scope.run(() => createComposer(options));\r\n if (obj == null) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n return [scope, obj];\r\n }\r\n}\r\nfunction getI18nInstance(instance) {\r\n {\r\n const i18n = inject(!instance.isCE\r\n ? instance.appContext.app.__VUE_I18N_SYMBOL__\r\n : I18nInjectionKey);\r\n /* istanbul ignore if */\r\n if (!i18n) {\r\n throw createI18nError(!instance.isCE\r\n ? I18nErrorCodes.UNEXPECTED_ERROR\r\n : I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE);\r\n }\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getScope(options, componentOptions) {\r\n // prettier-ignore\r\n return isEmptyObject(options)\r\n ? ('__i18n' in componentOptions)\r\n ? 'local'\r\n : 'global'\r\n : !options.useScope\r\n ? 'local'\r\n : options.useScope;\r\n}\r\nfunction getGlobalComposer(i18n) {\r\n // prettier-ignore\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer\r\n ;\r\n}\r\nfunction getComposer(i18n, target, useComponent = false) {\r\n let composer = null;\r\n const root = target.root;\r\n let current = target.parent;\r\n while (current != null) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n composer = i18nInternal.__getInstance(current);\r\n }\r\n else {\r\n if (__VUE_I18N_LEGACY_API__) {\r\n const vueI18n = i18nInternal.__getInstance(current);\r\n if (vueI18n != null) {\r\n composer = vueI18n\r\n .__composer;\r\n if (useComponent &&\r\n composer &&\r\n !composer[InejctWithOption] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n composer = null;\r\n }\r\n }\r\n }\r\n }\r\n if (composer != null) {\r\n break;\r\n }\r\n if (root === current) {\r\n break;\r\n }\r\n current = current.parent;\r\n }\r\n return composer;\r\n}\r\nfunction setupLifeCycle(i18n, target, composer) {\r\n let emitter = null;\r\n {\r\n onMounted(() => {\r\n // inject composer instance to DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el) {\r\n target.vnode.el.__VUE_I18N__ = composer;\r\n emitter = createEmitter();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n }, target);\r\n onUnmounted(() => {\r\n // remove composer instance from DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el &&\r\n target.vnode.el.__VUE_I18N__) {\r\n emitter && emitter.off('*', addTimelineEvent);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[DisableEmitter] && _composer[DisableEmitter]();\r\n delete target.vnode.el.__VUE_I18N__;\r\n }\r\n i18n.__deleteInstance(target);\r\n }, target);\r\n }\r\n}\r\nfunction useI18nForLegacy(instance, scope, root, options = {} // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n const isLocale = scope === 'local';\r\n const _composer = shallowRef(null);\r\n if (isLocale &&\r\n instance.proxy &&\r\n !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) {\r\n throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);\r\n }\r\n const _inheritLocale = isBoolean(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = ref(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.locale.value\r\n : isString(options.locale)\r\n ? options.locale\r\n : DEFAULT_LOCALE);\r\n const _fallbackLocale = ref(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.fallbackLocale.value\r\n : isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = ref(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _numberFormats = ref(isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _missingWarn = isLocale\r\n ? root.missingWarn\r\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackWarn = isLocale\r\n ? root.fallbackWarn\r\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackRoot = isLocale\r\n ? root.fallbackRoot\r\n : isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n const _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n const _missing = isFunction(options.missing) ? options.missing : null;\r\n // postTranslation handler\r\n const _postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n const _warnHtmlMessage = isLocale\r\n ? root.warnHtmlMessage\r\n : isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const _escapeParameter = !!options.escapeParameter;\r\n // prettier-ignore\r\n const _modifiers = isLocale\r\n ? root.modifiers\r\n : isPlainObject(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n const _pluralRules = options.pluralRules || (isLocale && root.pluralRules);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ];\r\n }\r\n // locale\r\n const locale = computed({\r\n get: () => {\r\n return _composer.value ? _composer.value.locale.value : _locale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.locale.value = val;\r\n }\r\n _locale.value = val;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = computed({\r\n get: () => {\r\n return _composer.value\r\n ? _composer.value.fallbackLocale.value\r\n : _fallbackLocale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.fallbackLocale.value = val;\r\n }\r\n _fallbackLocale.value = val;\r\n }\r\n });\r\n // messages\r\n const messages = computed(() => {\r\n if (_composer.value) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _composer.value.messages.value;\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _messages.value;\r\n }\r\n });\r\n const datetimeFormats = computed(() => _datetimeFormats.value);\r\n const numberFormats = computed(() => _numberFormats.value);\r\n function getPostTranslationHandler() {\r\n return _composer.value\r\n ? _composer.value.getPostTranslationHandler()\r\n : _postTranslation;\r\n }\r\n function setPostTranslationHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setPostTranslationHandler(handler);\r\n }\r\n }\r\n function getMissingHandler() {\r\n return _composer.value ? _composer.value.getMissingHandler() : _missing;\r\n }\r\n function setMissingHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setMissingHandler(handler);\r\n }\r\n }\r\n function warpWithDeps(fn) {\r\n trackReactivityValues();\r\n return fn();\r\n }\r\n function t(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function rt(...args) {\r\n return _composer.value\r\n ? Reflect.apply(_composer.value.rt, null, [...args])\r\n : '';\r\n }\r\n function d(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function n(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function tm(key) {\r\n return _composer.value ? _composer.value.tm(key) : {};\r\n }\r\n function te(key, locale) {\r\n return _composer.value ? _composer.value.te(key, locale) : false;\r\n }\r\n function getLocaleMessage(locale) {\r\n return _composer.value ? _composer.value.getLocaleMessage(locale) : {};\r\n }\r\n function setLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.setLocaleMessage(locale, message);\r\n _messages.value[locale] = message;\r\n }\r\n }\r\n function mergeLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.mergeLocaleMessage(locale, message);\r\n }\r\n }\r\n function getDateTimeFormat(locale) {\r\n return _composer.value ? _composer.value.getDateTimeFormat(locale) : {};\r\n }\r\n function setDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setDateTimeFormat(locale, format);\r\n _datetimeFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeDateTimeFormat(locale, format);\r\n }\r\n }\r\n function getNumberFormat(locale) {\r\n return _composer.value ? _composer.value.getNumberFormat(locale) : {};\r\n }\r\n function setNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setNumberFormat(locale, format);\r\n _numberFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeNumberFormat(locale, format);\r\n }\r\n }\r\n const wrapper = {\r\n get id() {\r\n return _composer.value ? _composer.value.id : -1;\r\n },\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n datetimeFormats,\r\n numberFormats,\r\n get inheritLocale() {\r\n return _composer.value ? _composer.value.inheritLocale : _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n if (_composer.value) {\r\n _composer.value.inheritLocale = val;\r\n }\r\n },\r\n get availableLocales() {\r\n return _composer.value\r\n ? _composer.value.availableLocales\r\n : Object.keys(_messages.value);\r\n },\r\n get modifiers() {\r\n return (_composer.value ? _composer.value.modifiers : _modifiers);\r\n },\r\n get pluralRules() {\r\n return (_composer.value ? _composer.value.pluralRules : _pluralRules);\r\n },\r\n get isGlobal() {\r\n return _composer.value ? _composer.value.isGlobal : false;\r\n },\r\n get missingWarn() {\r\n return _composer.value ? _composer.value.missingWarn : _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackWarn() {\r\n return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackRoot() {\r\n return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackRoot = val;\r\n }\r\n },\r\n get fallbackFormat() {\r\n return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackFormat = val;\r\n }\r\n },\r\n get warnHtmlMessage() {\r\n return _composer.value\r\n ? _composer.value.warnHtmlMessage\r\n : _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n if (_composer.value) {\r\n _composer.value.warnHtmlMessage = val;\r\n }\r\n },\r\n get escapeParameter() {\r\n return _composer.value\r\n ? _composer.value.escapeParameter\r\n : _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n if (_composer.value) {\r\n _composer.value.escapeParameter = val;\r\n }\r\n },\r\n t,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n rt,\r\n d,\r\n n,\r\n tm,\r\n te,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getDateTimeFormat,\r\n setDateTimeFormat,\r\n mergeDateTimeFormat,\r\n getNumberFormat,\r\n setNumberFormat,\r\n mergeNumberFormat\r\n };\r\n function sync(composer) {\r\n composer.locale.value = _locale.value;\r\n composer.fallbackLocale.value = _fallbackLocale.value;\r\n Object.keys(_messages.value).forEach(locale => {\r\n composer.mergeLocaleMessage(locale, _messages.value[locale]);\r\n });\r\n Object.keys(_datetimeFormats.value).forEach(locale => {\r\n composer.mergeDateTimeFormat(locale, _datetimeFormats.value[locale]);\r\n });\r\n Object.keys(_numberFormats.value).forEach(locale => {\r\n composer.mergeNumberFormat(locale, _numberFormats.value[locale]);\r\n });\r\n composer.escapeParameter = _escapeParameter;\r\n composer.fallbackFormat = _fallbackFormat;\r\n composer.fallbackRoot = _fallbackRoot;\r\n composer.fallbackWarn = _fallbackWarn;\r\n composer.missingWarn = _missingWarn;\r\n composer.warnHtmlMessage = _warnHtmlMessage;\r\n }\r\n onBeforeMount(() => {\r\n if (instance.proxy == null || instance.proxy.$i18n == null) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const composer = (_composer.value = instance.proxy.$i18n\r\n .__composer);\r\n if (scope === 'global') {\r\n _locale.value = composer.locale.value;\r\n _fallbackLocale.value = composer.fallbackLocale.value;\r\n _messages.value = composer.messages.value;\r\n _datetimeFormats.value = composer.datetimeFormats.value;\r\n _numberFormats.value = composer.numberFormats.value;\r\n }\r\n else if (isLocale) {\r\n sync(composer);\r\n }\r\n });\r\n return wrapper;\r\n}\r\nconst globalExportProps = [\r\n 'locale',\r\n 'fallbackLocale',\r\n 'availableLocales'\r\n];\r\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm'] ;\r\nfunction injectGlobalFields(app, composer) {\r\n const i18n = Object.create(null);\r\n globalExportProps.forEach(prop => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, prop);\r\n if (!desc) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const wrap = isRef(desc.value) // check computed props\r\n ? {\r\n get() {\r\n return desc.value.value;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set(val) {\r\n desc.value.value = val;\r\n }\r\n }\r\n : {\r\n get() {\r\n return desc.get && desc.get();\r\n }\r\n };\r\n Object.defineProperty(i18n, prop, wrap);\r\n });\r\n app.config.globalProperties.$i18n = i18n;\r\n globalExportMethods.forEach(method => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, method);\r\n if (!desc || !desc.value) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\r\n });\r\n}\n\n// register message compiler at vue-i18n\r\nregisterMessageCompiler(compileToFunction);\r\n// register message resolver at vue-i18n\r\nregisterMessageResolver(resolveValue);\r\n// register fallback locale at vue-i18n\r\nregisterLocaleFallbacker(fallbackWithLocaleChain);\r\n{\r\n initFeatureFlags();\r\n}\r\n// NOTE: experimental !!\r\nif ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n const target = getGlobalThis();\r\n target.__INTLIFY__ = true;\r\n setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\r\n}\r\nif ((process.env.NODE_ENV !== 'production')) ;\n\nexport { DatetimeFormat, I18nInjectionKey, NumberFormat, Translation, VERSION, castToVueI18n, createI18n, useI18n, vTDirective };\n","import { computed, getCurrentInstance, inject } from 'vue';\nimport type { WritableComputedRef } from 'vue';\nimport { useI18n as useI18nBridge } from 'vue-i18n-bridge';\nimport VueI18n from 'vue-i18n';\n\nexport const defaultI18nOptions = {\n locale: 'en-US',\n fallbackLocale: 'en-US',\n fallbackRoot: false,\n};\n\nlet i18n: VueI18n = null;\n\nexport function createI18n(options = defaultI18nOptions): VueI18n {\n i18n = new VueI18n(options);\n return i18n;\n}\n\nexport interface Composer {\n locale: WritableComputedRef<string>;\n t: typeof VueI18n.prototype.t;\n tc: typeof VueI18n.prototype.tc;\n te: typeof VueI18n.prototype.te;\n d: typeof VueI18n.prototype.d;\n n: typeof VueI18n.prototype.n;\n}\n\ninterface i18nMessages {\n 'en-US': {\n [key: string]: string;\n };\n [key: string]: {\n [key: string]: string;\n };\n}\n\nexport function useI18n(params?: { messages?: i18nMessages } | undefined, onlyLocale = false): Composer | any {\n const currentInstance = getCurrentInstance() as unknown;\n // eslint-disable-next-line no-underscore-dangle\n const vue3InjectionI18nKey = (currentInstance as any)?.appContext?.app?.__VUE_I18N_SYMBOL__;\n const locale = computed({\n get() {\n return i18n.locale;\n },\n set(v: string) {\n i18n.locale = v;\n },\n });\n\n // Vue 3\n // eslint-disable-next-line no-underscore-dangle\n if (vue3InjectionI18nKey) {\n if (!onlyLocale) {\n const { t, d, te, n, locale: coolLocale } = useI18nBridge({ messages: params?.messages });\n return {\n locale: coolLocale,\n t,\n d,\n te,\n n,\n };\n }\n\n // eslint-disable-next-line no-underscore-dangle\n const vue3I18nInstance = inject(vue3InjectionI18nKey);\n const vue3GlobalI18nComposer = (vue3I18nInstance as any)?.global;\n if (vue3GlobalI18nComposer) {\n i18n = vue3GlobalI18nComposer;\n }\n\n return {\n locale,\n };\n }\n\n // Vue 2\n const instance = currentInstance as { proxy: any & { _i18n: VueI18n } } | null;\n const vm = instance.proxy;\n // If no VueI18n has been intialised then attempt to get the globally attached one from the Vue VM\n // eslint-disable-next-line no-underscore-dangle\n if (vm?._i18n) {\n // eslint-disable-next-line no-underscore-dangle -- reading the i18n local instance\n i18n = vm._i18n;\n }\n\n return {\n locale,\n t: vm.$t.bind(vm),\n tc: vm.$tc.bind(vm),\n d: vm.$d.bind(vm),\n te: vm.$te.bind(vm),\n n: vm.$n.bind(vm),\n };\n}\n","<template>\n <div>\n <bento-listbox-option\n v-for=\"option in items\"\n :key=\"`selected-${option.value}`\"\n class=\"b-listbox-multi-select-option\"\n :disabled=\"isOptionDisabled ? isOptionDisabled(option) : null\"\n >\n <bento-checkbox\n :model-value=\"selectedItemsList\"\n :aria-label=\"option.label\"\n :disabled=\"isOptionDisabled ? isOptionDisabled(option) : null\"\n :value=\"option.value\"\n @input=\"toggleCheckboxSelection(option.value)\"\n />\n <slot v-bind=\"option\">\n <span class=\"b-listbox-multi-select__option-text\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\">{{ option.label }}</bento-typography>\n <bento-typography\n v-if=\"option.description\"\n class=\"b-listbox-multi-select__option-description\"\n :el=\"BentoTypographyElement.SPAN\"\n >\n {{ option.description }}\n </bento-typography>\n </span>\n </slot>\n </bento-listbox-option>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import { BentoCheckbox } from '@/components/checkbox';\n import { BentoListboxOption } from '../../listbox-option';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { BentoListboxIsOptionDisabled, BentoListboxOptions, BentoListboxValue } from '@/types';\n\n /**\n * Listbox multi-select options list\n *\n * @example\n * import { BentoListboxMultiSelect } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoListboxMultiSelect },\n * template: `\n * <bento-listbox-multi-select\n * :items=\"[{ label: 'Option 1', value: 'option-1' }]\"\n * :selected-values=\"['option-1']\"\n * />\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-listbox-multi-select-option',\n components: {\n BentoCheckbox,\n BentoListboxOption,\n BentoTypography,\n },\n inheritAttrs: false,\n props: {\n /**\n * Function that allows the options to be disabled\n *\n * @type {BentoListboxIsOptionDisabled}\n * @param {BentoListboxOptionItem} option - listbox option object\n * @param {string} option.label - Option's label text\n * @param {string|number} option.value - Option's value\n * @param {unknown} option.data - Option's extra data to be passed to the default slot\n */\n isOptionDisabled: {\n type: Function as PropType<BentoListboxIsOptionDisabled>,\n default: () => false,\n },\n\n /**\n * The option elements to populate the listbox with.\n * It must be an array of {@see BentoListboxOptionItem }.\n *\n * @property {string} value.label - Text to be displayed in the option\n * @property {string,number} value.value - Value of the option\n */\n items: {\n type: Array as PropType<BentoListboxOptions>,\n required: true,\n },\n\n selectedItemsList: {\n type: Array as PropType<BentoListboxValue[]>,\n default: () => [],\n },\n },\n emits: ['select', 'toggle-checkbox-selection'],\n setup(_props, { emit }) {\n const toggleCheckboxSelection = (value: BentoListboxValue) => emit('toggle-checkbox-selection', value);\n\n return {\n // Methods\n toggleCheckboxSelection,\n\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./listbox-multi-select-options.scss\" />\n","<template>\n <div class=\"b-listbox-multi-select\">\n <bento-listbox-option class=\"b-listbox-multi-select__option\">\n <bento-checkbox\n :aria-label=\"selectAllCheckboxText\"\n :model-value=\"isAllSelected\"\n :indeterminate=\"isIndeterminate\"\n @input=\"toggleSelectAll\"\n />\n <bento-typography :el=\"BentoTypographyElement.SPAN\">\n {{ selectAllCheckboxText }}\n </bento-typography>\n </bento-listbox-option>\n\n <div v-if=\"isAnOptionSelected\">\n <hr class=\"b-listbox-multi-select__divider\" />\n\n <bento-listbox-multi-select-options\n :items=\"selectedOptions\"\n :is-option-disabled=\"isOptionDisabled\"\n :selected-items-list=\"selectedItemsList\"\n @toggle-checkbox-selection=\"toggleCheckboxSelection\"\n >\n <template v-for=\"(_, slot) of $scopedSlots || $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-listbox-multi-select-options>\n </div>\n\n <div v-show=\"!isAllItemsIncludingDisabled\">\n <hr class=\"b-listbox-multi-select__divider\" />\n\n <bento-listbox-multi-select-options\n :items=\"items\"\n :is-option-disabled=\"isOptionDisabled\"\n :selected-items-list=\"selectedItemsList\"\n @toggle-checkbox-selection=\"toggleCheckboxSelection\"\n >\n <template v-for=\"(_, slot) of $scopedSlots || $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-listbox-multi-select-options>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, watch } from 'vue';\n import { BentoCheckbox } from '@/components/checkbox';\n import { BentoListboxOption } from '../listbox-option';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { useCheckboxSelectAll } from '@/composables';\n import { useI18n } from '@/utils/ts/i18n';\n import {\n BentoListboxIsOptionDisabled,\n BentoListboxMultiSelectValue,\n BentoListboxOptionItem,\n BentoListboxOptions,\n BentoListboxSelectedValue,\n BentoListboxValue,\n } from '@/types';\n import BentoListboxMultiSelectOptions from './components/listbox-multi-select-options.vue';\n\n import messages from './messages.json';\n\n /**\n * Listbox multi-select options list\n *\n * @example\n * import { BentoListboxMultiSelect } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoListboxMultiSelect },\n * template: `\n * <bento-listbox-multi-select\n * :items=\"[{ label: 'Option 1', value: 'option-1' }]\"\n * :selected-values=\"['option-1']\"\n * />\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-listbox-multi-select',\n components: {\n BentoCheckbox,\n BentoListboxOption,\n BentoListboxMultiSelectOptions,\n BentoTypography,\n },\n inheritAttrs: false,\n props: {\n /**\n * Function that allows the options to be disabled\n *\n * @type {BentoListboxIsOptionDisabled}\n * @param {BentoListboxOptionItem} option - listbox option object\n * @param {string} option.label - Option's label text\n * @param {string|number} option.value - Option's value\n * @param {unknown} option.data - Option's extra data to be passed to the default slot\n */\n isOptionDisabled: {\n type: Function as PropType<BentoListboxIsOptionDisabled>,\n default: () => false,\n },\n\n /**\n * The option elements to populate the listbox with.\n * It must be an array of {@see BentoListboxOptionItem }.\n *\n * @property {string} value.label - Text to be displayed in the option\n * @property {string,number} value.value - Value of the option\n */\n items: {\n type: Array as PropType<BentoListboxOptions>,\n required: true,\n },\n\n /**\n * Flag that indicates that an external search it's being made\n * to filter out the items inside the the multi-select listbox\n *\n * If enabled, hides the \"Select all\" checkbox in \"multiple\" mode.\n */\n searching: { type: Boolean, default: false },\n\n /**\n * The `input` value.\n * Providing an empty array will select no options.\n */\n selectedValues: {\n type: Array as PropType<BentoListboxSelectedValue>,\n default: () => [] as BentoListboxSelectedValue,\n },\n },\n emits: ['select'],\n setup(props, { emit }) {\n const { t } = useI18n({ messages });\n const optionStates = (option: BentoListboxOptionItem) => {\n const isDisabled = props.isOptionDisabled(option);\n const isPreSelected =\n (props.selectedValues as BentoListboxMultiSelectValue)?.includes(option.value) || false;\n return { isDisabled, isPreSelected };\n };\n // Items that are not disabled and pre-selected disabled items\n const enabledItems = computed(() =>\n props.items.filter(option => {\n const { isDisabled, isPreSelected } = optionStates(option);\n return (isDisabled && isPreSelected) || !isDisabled;\n })\n );\n\n const selectedItemsList = ref((props.selectedValues || []) as BentoListboxMultiSelectValue);\n watch(\n () => props.selectedValues,\n () => {\n selectedItemsList.value = (props.selectedValues || []) as BentoListboxMultiSelectValue;\n }\n );\n\n const visibleSelectedList = computed(\n () =>\n enabledItems.value?.filter(({ value }) =>\n selectedItemsList.value?.includes(value)\n ) as unknown as BentoListboxMultiSelectValue\n );\n\n const selectAllCheckboxText = computed(() => {\n const total = props.items.length;\n const amountSelectedValues = visibleSelectedList.value?.length || 0;\n\n if (amountSelectedValues === 0) {\n return t('selectAll', { total });\n }\n\n return amountSelectedValues === total\n ? t('allSelected', { total })\n : t('numberOfTotalSelected', { number: amountSelectedValues, total });\n });\n\n const selectAll = () => {\n const filterOutDisabledAndNotPreselectedOptions = option => {\n const { isDisabled, isPreSelected } = optionStates(option);\n return (isDisabled && isPreSelected) || !isDisabled;\n };\n\n // Adding or removing this list of values\n const addOrRemoveList = props.items\n .filter(filterOutDisabledAndNotPreselectedOptions)\n .filter(item => !selectedItemsList.value.includes(item.value)) // MAKE SURE NOT TO ADD DUPLICATES\n .map(({ value }) => value);\n\n selectedItemsList.value = [...selectedItemsList.value, ...addOrRemoveList];\n emit('select', selectedItemsList.value);\n };\n\n const unselectAll = () => {\n const findEnabledUnselectedItems = option => {\n const { isDisabled, isPreSelected } = optionStates(option);\n return !(isDisabled && isPreSelected);\n };\n\n const unselectedItemsList = props.items.filter(findEnabledUnselectedItems).map(({ value }) => value);\n selectedItemsList.value = selectedItemsList.value.filter(item => !unselectedItemsList?.includes(item));\n emit('select', selectedItemsList.value);\n };\n\n const { isAllSelected, isIndeterminate, toggleSelectAll } = useCheckboxSelectAll(\n visibleSelectedList,\n enabledItems,\n selectAll,\n unselectAll\n );\n\n const toggleCheckboxSelection = (value: BentoListboxValue) => {\n let exists = false;\n selectedItemsList.value = selectedItemsList.value.filter(option => {\n if (value === option) {\n exists = true;\n return false;\n }\n\n return true;\n });\n\n if (!exists) {\n selectedItemsList.value.push(value);\n }\n\n emit('select', selectedItemsList.value);\n };\n\n const selectedOptions = computed(() =>\n props.items?.filter(item => selectedItemsList.value?.includes(item.value))\n );\n\n const isAnOptionSelected = computed(() => selectedOptions.value?.length > 0);\n\n const isAllItemsIncludingDisabled = computed(\n () => visibleSelectedList.value?.length === props.items?.length\n );\n\n return {\n // Values\n isAllSelected,\n isAllItemsIncludingDisabled,\n isAnOptionSelected,\n isIndeterminate,\n selectedItemsList,\n selectAllCheckboxText,\n selectedOptions,\n\n // Enums\n BentoTypographyElement,\n\n // Methods\n toggleCheckboxSelection,\n toggleSelectAll,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./listbox-multi-select.scss\" />\n","<template>\n <div :id=\"id\" class=\"b-listbox\" role=\"listbox\" tabindex=\"-1\" :aria-label=\"ariaLabel\">\n <!-- Empty search message -->\n <div v-if=\"isSearchResultEmpty\" class=\"b-listbox__empty-search-message\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\">{{ noResultsMessage }}</bento-typography>\n </div>\n\n <template v-else>\n <!-- Multi select -->\n <template v-if=\"multiple\">\n <bento-listbox-multi-select\n :items=\"items\"\n :selected-values=\"selectedValue\"\n :searching=\"searching\"\n :is-option-disabled=\"isOptionDisabled\"\n @select=\"onOptionSelected\"\n >\n <template v-for=\"(_, slot) of $scopedSlots || $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-listbox-multi-select>\n </template>\n\n <!-- Single select -->\n <template v-else>\n <bento-listbox-single-select-option\n v-for=\"option in items\"\n :key=\"option.value\"\n role=\"option\"\n :option=\"option\"\n :disabled=\"isOptionDisabled ? isOptionDisabled(option) : null\"\n :selected=\"option.value === selectedValue\"\n @select=\"onOptionSelected\"\n >\n <template v-for=\"(_, slot) of $scopedSlots || $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-listbox-single-select-option>\n </template>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoListboxIsOptionDisabled, BentoListboxOptions, BentoListboxSelectedValue } from '@/types';\n import { BentoListboxSingleSelectOption } from './components/listbox-single-select-option';\n import { BentoListboxMultiSelect } from './components/listbox-multi-select';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n\n /**\n * Listbox container.\n * It lists all the available options.\n *\n * @example\n * <bento-listbox\n * v-slot=\"{label, value}\"\n * :id=\"listboxOptionsContainerId\"\n * :aria-label=\"ariaLabel\"\n * :disabled=\"disabled\"\n * :multiple=\"multiple\"\n * :selected=\"value\"\n * :isOptionDisabled=\"option => option.value === 2\"\n * :items=\"[{\n * { label: 'Option 1', value: 1 },\n * { label: 'Option 2', value: 2 },\n * }]\"\n * @select=\"onOptionSelected\"\n * >\n * </bento-listbox>\n */\n export default defineComponent({\n name: 'bento-listbox',\n components: {\n BentoListboxSingleSelectOption,\n BentoListboxMultiSelect,\n BentoTypography,\n },\n props: {\n /**\n * Defines a string value that labels an interactive element.\n */\n ariaLabel: { type: String, default: null },\n\n /**\n * Identifies the listbox whose contents are controlled by the the combobox on which the aria-controls attribute is set.\n */\n id: { type: String, required: true },\n\n /**\n * Function that allows the options to be disabled\n *\n * @type {BentoListboxIsOptionDisabled}\n * @param {BentoListboxOptionItem} option - Listbox option object\n * @param {string} option.label - Option's label text\n * @param {string|number} option.value - Option's value\n * @param {unknown} option.data - Option's extra data to be passed to the default slot\n */\n isOptionDisabled: {\n type: Function as PropType<BentoListboxIsOptionDisabled>,\n default: undefined,\n },\n\n /**\n * The option elements to populate the listbox with.\n * It must be an array of {@see BentoListboxOptionItem }\n * * @property {string} value.label - Text to be displayed in the option\n * * @property {string,number} value.value - Value of the option\n */\n items: {\n type: Array as PropType<BentoListboxOptions>,\n required: true,\n },\n\n /**\n * If enabled, the user will be able to select multiple items.\n */\n multiple: { type: Boolean, default: false },\n\n /**\n * Messaged displayed when no items are listed in the listbox\n */\n noResultsMessage: { type: String, required: true },\n\n /**\n * Flag that indicates that an external search it's being made\n * to filter out the items inside the the multi-select listbox\n *\n * If enabled, hides the \"Select all\" checkbox in \"multiple\" mode.\n */\n searching: BentoListboxMultiSelect.props.searching,\n\n /**\n * The `input` value.\n * Providing an empty string or empty array will select no options.\n * Set to an empty string `''` if you don't want any of the available options to be selected for single select\n */\n selectedValue: {\n type: [String, Number, Array] as PropType<BentoListboxSelectedValue>,\n default: undefined,\n },\n },\n emits: ['select'],\n setup(props, { emit }) {\n const onOptionSelected = (selectedValue: BentoListboxSelectedValue) => {\n emit('select', selectedValue);\n };\n\n const isSearchResultEmpty = computed(() => props.searching && props.items?.length === 0);\n\n return {\n // Values\n isSearchResultEmpty,\n\n // Methods\n onOptionSelected,\n\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./listbox.scss\" />\n","export enum BentoTagVariant {\n GREY = 'grey',\n BLUE = 'blue',\n GREEN = 'green',\n ORANGE = 'orange',\n RED = 'red',\n WHITE = 'white',\n}\n","import type { AnyFn, MaybeComputedElementRef, MaybeElement, VueInstance } from '@/types';\nimport { unref } from 'vue';\n\nconst isClient = typeof window !== 'undefined';\n\nexport const defaultWindow = /* #__PURE__ */ isClient ? window : undefined;\n\nexport const isIOS =\n /* #__PURE__ */ isClient && window?.navigator?.userAgent && /iP(ad|hone|od)/.test(window.navigator.userAgent);\n\n/**\n * Get the value of value/ref/getter.\n */\nexport function resolveUnref<T>(r): T {\n return typeof r === 'function' ? (r as AnyFn<T>)() : unref<T>(r);\n}\n\n/**\n * Get the dom element of a ref of element or Vue component instance\n *\n * @param elRef\n */\nexport function unrefElement<T extends MaybeElement>(elRef: MaybeComputedElementRef<T>): any {\n const plain = resolveUnref(elRef);\n return (plain as VueInstance)?.$el ?? plain;\n}\n\n// No operation\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const noop = () => {};\n","import type { Fn, MaybeComputedRef, MaybeElementRef } from '@/types';\nimport type { Arrayable, GeneralEventListener } from './types';\nimport { watch } from 'vue';\nimport { defaultWindow, noop, resolveUnref, unrefElement } from '../utils';\n\n/**\n * Verify type of input value\n * @param val Value to be evaluated as string\n * @returns {boolean} true if the value is a \"string\", false if it's something else\n */\nconst isString = (val: unknown): val is string => typeof val === 'string';\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 1: Omitted Window target\n *\n * @see https://vueuse.org/useEventListener\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<E extends keyof WindowEventMap>(\n event: Arrayable<E>,\n listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => unknown>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 2: Explicitly Window target\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<E extends keyof WindowEventMap>(\n target: Window,\n event: Arrayable<E>,\n listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => unknown>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 3: Explicitly Document target\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<E extends keyof DocumentEventMap>(\n target: DocumentOrShadowRoot,\n event: Arrayable<E>,\n listener: Arrayable<(this: Document, ev: DocumentEventMap[E]) => unknown>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 4: Custom event target with event type infer\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<Names extends string, EventType = Event>(\n target: EventTarget,\n event: Arrayable<Names>,\n listener: Arrayable<GeneralEventListener<EventType>>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 5: Custom event target fallback\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<EventType = Event>(\n target: MaybeComputedRef<EventTarget | null | undefined>,\n event: Arrayable<string>,\n listener: Arrayable<GeneralEventListener<EventType>>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\nexport function useEventListener(...args) {\n let target: MaybeComputedRef<EventTarget> | undefined;\n let events: Arrayable<string>;\n let listeners: Arrayable<EventListenerOrEventListenerObject>;\n let options: MaybeComputedRef<boolean | AddEventListenerOptions> | undefined;\n\n if (isString(args[0]) || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n\n if (!target) return noop;\n\n if (!Array.isArray(events)) events = [events];\n if (!Array.isArray(listeners)) listeners = [listeners];\n\n const cleanups: Array<() => void> = [];\n const cleanup = () => {\n cleanups.forEach(fn => fn());\n cleanups.length = 0;\n };\n\n const register = (\n el: EventTarget,\n event: string,\n listener: EventListenerOrEventListenerObject,\n registerOptions: boolean | AddEventListenerOptions\n ) => {\n // eslint-disable-next-line scanjs-rules/call_addEventListener\n el.addEventListener(event, listener, registerOptions);\n return () => el.removeEventListener(event, listener, registerOptions);\n };\n\n const stopWatch = watch(\n () => [unrefElement(target as unknown as MaybeElementRef), resolveUnref(options)],\n ([el, stopWatchOptions]) => {\n cleanup();\n if (!el) return;\n\n cleanups.push(\n ...(events as string[]).flatMap(event =>\n (listeners as EventListenerOrEventListenerObject[]).map(listener =>\n register(\n el as EventTarget,\n event,\n listener as EventListenerOrEventListenerObject,\n stopWatchOptions as boolean | AddEventListenerOptions\n )\n )\n )\n );\n },\n { immediate: true, flush: 'post' }\n );\n\n const stop = () => {\n stopWatch();\n cleanup();\n };\n\n return stop;\n}\n","import type { Fn, MaybeElementRef } from '@/types';\nimport type { OnClickOutsideHandler, OnClickOutsideOptions } from './types';\nimport { useEventListener } from './useEventListener';\nimport { defaultWindow, isIOS, noop, unrefElement } from './utils';\n\n// eslint-disable-next-line no-underscore-dangle\nlet _iOSWorkaround = false;\n\n/**\n * Listen for clicks outside of an element.\n *\n * @see https://vueuse.org/onClickOutside\n * @param target\n * @param handler\n * @param options\n */\nexport function onClickOutside<T extends OnClickOutsideOptions>(\n target: MaybeElementRef,\n handler: OnClickOutsideHandler,\n options: T = {} as T\n) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n\n if (!window) return;\n\n // Fixes \"onClickOutside not working on Safari iOS\": https://github.com/vueuse/vueuse/issues/1520\n // How it works: https://stackoverflow.com/a/39712411\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n // eslint-disable-next-line scanjs-rules/call_addEventListener\n Array.from(window.document.body.children).forEach((el: Element) => el.addEventListener('click', noop));\n }\n\n let shouldListen = true;\n\n const shouldIgnore = (event: PointerEvent) =>\n // eslint-disable-next-line @typescript-eslint/no-shadow\n ignore.some(target => {\n if (typeof target === 'string') {\n return Array.from(window.document.querySelectorAll(target)).some(\n (el: Element) => el === event.target || event.composedPath().includes(el)\n );\n }\n\n const el = unrefElement(target) as EventTarget;\n return el && (event.target === el || event.composedPath().includes(el));\n });\n\n const listener = (event: PointerEvent) => {\n const el = unrefElement(target) as EventTarget;\n\n if (!el || el === event.target || event.composedPath().includes(el)) return;\n\n if (event.detail === 0) shouldListen = !shouldIgnore(event);\n\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n\n handler(event);\n };\n\n const cleanup = [\n useEventListener(window, 'click', listener, { passive: true, capture }),\n useEventListener(\n window,\n 'pointerdown',\n e => {\n const el = unrefElement(target) as EventTarget;\n if (el) shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n },\n { passive: true }\n ),\n detectIframe &&\n useEventListener(window, 'blur', event => {\n const el: Element = unrefElement(target);\n if (window.document.activeElement?.tagName === 'IFRAME' && !el?.contains(window.document.activeElement))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler(event as any);\n }),\n ].filter(Boolean) as Fn[];\n\n const stop = () => cleanup.forEach(fn => fn());\n\n // eslint-disable-next-line consistent-return\n return stop;\n}\n","import type { ObjectDirective } from 'vue';\nimport { onClickOutside } from './on-click-outside';\n\ntype Element = HTMLElement & { __onClickOutside_stop?: () => void };\n\nexport const BentoClickOutsideDirective: ObjectDirective<Element> = {\n // Attach listener to target element\n inserted(targetElement, binding) {\n const capture = !binding.modifiers.bubble;\n if (typeof binding.value === 'function') {\n // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n targetElement.__onClickOutside_stop = onClickOutside(targetElement, binding.value, { capture });\n } else {\n const [handler, options] = binding.value;\n // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n targetElement.__onClickOutside_stop = onClickOutside(targetElement, handler, { capture, ...options });\n }\n },\n // Remove listener from the target element\n unbind(targetElement) {\n // eslint-disable-next-line no-underscore-dangle\n targetElement.__onClickOutside_stop();\n },\n};\n","/**\n * defines a focus group\n */\nexport var FOCUS_GROUP = 'data-focus-lock';\n/**\n * disables element discovery inside a group marked by key\n */\nexport var FOCUS_DISABLED = 'data-focus-lock-disabled';\n/**\n * allows uncontrolled focus within the marked area, effectively disabling focus lock for it's content\n */\nexport var FOCUS_ALLOW = 'data-no-focus-lock';\n/**\n * instructs autofocus engine to pick default autofocus inside a given node\n * can be set on the element or container\n */\nexport var FOCUS_AUTO = 'data-autofocus-inside';\n/**\n * instructs autofocus to ignore elements within a given node\n * can be set on the element or container\n */\nexport var FOCUS_NO_AUTOFOCUS = 'data-no-autofocus';\n","/*\nIE11 support\n */\nexport var toArray = function (a) {\n var ret = Array(a.length);\n for (var i = 0; i < a.length; ++i) {\n ret[i] = a[i];\n }\n return ret;\n};\nexport var asArray = function (a) { return (Array.isArray(a) ? a : [a]); };\n","import { FOCUS_NO_AUTOFOCUS } from '../constants';\nvar isElementHidden = function (node) {\n // we can measure only \"elements\"\n // consider others as \"visible\"\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n var computedStyle = window.getComputedStyle(node, null);\n if (!computedStyle || !computedStyle.getPropertyValue) {\n return false;\n }\n return (computedStyle.getPropertyValue('display') === 'none' || computedStyle.getPropertyValue('visibility') === 'hidden');\n};\nvar getParentNode = function (node) {\n // DOCUMENT_FRAGMENT_NODE can also point on ShadowRoot. In this case .host will point on the next node\n return node.parentNode && node.parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node.parentNode.host\n : node.parentNode;\n};\nvar isTopNode = function (node) {\n // @ts-ignore\n return node === document || (node && node.nodeType === Node.DOCUMENT_NODE);\n};\nvar isVisibleUncached = function (node, checkParent) {\n return !node || isTopNode(node) || (!isElementHidden(node) && checkParent(getParentNode(node)));\n};\nexport var isVisibleCached = function (visibilityCache, node) {\n var cached = visibilityCache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isVisibleUncached(node, isVisibleCached.bind(undefined, visibilityCache));\n visibilityCache.set(node, result);\n return result;\n};\nvar isAutoFocusAllowedUncached = function (node, checkParent) {\n return node && !isTopNode(node) ? (isAutoFocusAllowed(node) ? checkParent(getParentNode(node)) : false) : true;\n};\nexport var isAutoFocusAllowedCached = function (cache, node) {\n var cached = cache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isAutoFocusAllowedUncached(node, isAutoFocusAllowedCached.bind(undefined, cache));\n cache.set(node, result);\n return result;\n};\nexport var getDataset = function (node) {\n // @ts-ignore\n return node.dataset;\n};\nexport var isHTMLButtonElement = function (node) { return node.tagName === 'BUTTON'; };\nexport var isHTMLInputElement = function (node) { return node.tagName === 'INPUT'; };\nexport var isRadioElement = function (node) {\n return isHTMLInputElement(node) && node.type === 'radio';\n};\nexport var notHiddenInput = function (node) {\n return !((isHTMLInputElement(node) || isHTMLButtonElement(node)) && (node.type === 'hidden' || node.disabled));\n};\nexport var isAutoFocusAllowed = function (node) {\n var attribute = node.getAttribute(FOCUS_NO_AUTOFOCUS);\n return ![true, 'true', ''].includes(attribute);\n};\nexport var isGuard = function (node) { var _a; return Boolean(node && ((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.focusGuard)); };\nexport var isNotAGuard = function (node) { return !isGuard(node); };\nexport var isDefined = function (x) { return Boolean(x); };\n","import { toArray } from './array';\nexport var tabSort = function (a, b) {\n var tabDiff = a.tabIndex - b.tabIndex;\n var indexDiff = a.index - b.index;\n if (tabDiff) {\n if (!a.tabIndex) {\n return 1;\n }\n if (!b.tabIndex) {\n return -1;\n }\n }\n return tabDiff || indexDiff;\n};\nexport var orderByTabIndex = function (nodes, filterNegative, keepGuards) {\n return toArray(nodes)\n .map(function (node, index) { return ({\n node: node,\n index: index,\n tabIndex: keepGuards && node.tabIndex === -1 ? ((node.dataset || {}).focusGuard ? 0 : -1) : node.tabIndex,\n }); })\n .filter(function (data) { return !filterNegative || data.tabIndex >= 0; })\n .sort(tabSort);\n};\n","/**\n * list of the object to be considered as focusable\n */\nexport var tabbables = [\n 'button:enabled',\n 'select:enabled',\n 'textarea:enabled',\n 'input:enabled',\n // elements with explicit roles will also use explicit tabindex\n // '[role=\"button\"]',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n];\n","import { FOCUS_AUTO } from '../constants';\nimport { toArray } from './array';\nimport { tabbables } from './tabbables';\nvar queryTabbables = tabbables.join(',');\nvar queryGuardTabbables = \"\".concat(queryTabbables, \", [data-focus-guard]\");\nvar getFocusablesWithShadowDom = function (parent, withGuards) {\n var _a;\n return toArray(((_a = parent.shadowRoot) === null || _a === void 0 ? void 0 : _a.children) || parent.children).reduce(function (acc, child) {\n return acc.concat(child.matches(withGuards ? queryGuardTabbables : queryTabbables) ? [child] : [], getFocusablesWithShadowDom(child));\n }, []);\n};\nexport var getFocusables = function (parents, withGuards) {\n return parents.reduce(function (acc, parent) {\n return acc.concat(\n // add all tabbables inside and within shadow DOMs in DOM order\n getFocusablesWithShadowDom(parent, withGuards), \n // add if node is tabbable itself\n parent.parentNode\n ? toArray(parent.parentNode.querySelectorAll(queryTabbables)).filter(function (node) { return node === parent; })\n : []);\n }, []);\n};\n/**\n * return a list of focusable nodes within an area marked as \"auto-focusable\"\n * @param parent\n */\nexport var getParentAutofocusables = function (parent) {\n var parentFocus = parent.querySelectorAll(\"[\".concat(FOCUS_AUTO, \"]\"));\n return toArray(parentFocus)\n .map(function (node) { return getFocusables([node]); })\n .reduce(function (acc, nodes) { return acc.concat(nodes); }, []);\n};\n","import { toArray } from './array';\nimport { isAutoFocusAllowedCached, isVisibleCached, notHiddenInput } from './is';\nimport { orderByTabIndex } from './tabOrder';\nimport { getFocusables, getParentAutofocusables } from './tabUtils';\n/**\n * given list of focusable elements keeps the ones user can interact with\n * @param nodes\n * @param visibilityCache\n */\nexport var filterFocusable = function (nodes, visibilityCache) {\n return toArray(nodes)\n .filter(function (node) { return isVisibleCached(visibilityCache, node); })\n .filter(function (node) { return notHiddenInput(node); });\n};\nexport var filterAutoFocusable = function (nodes, cache) {\n if (cache === void 0) { cache = new Map(); }\n return toArray(nodes).filter(function (node) { return isAutoFocusAllowedCached(cache, node); });\n};\n/**\n * only tabbable ones\n * (but with guards which would be ignored)\n */\nexport var getTabbableNodes = function (topNodes, visibilityCache, withGuards) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes, withGuards), visibilityCache), true, withGuards);\n};\n/**\n * actually anything \"focusable\", not only tabbable\n * (without guards, as long as they are not expected to be focused)\n */\nexport var getAllTabbableNodes = function (topNodes, visibilityCache) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes), visibilityCache), false);\n};\n/**\n * return list of nodes which are expected to be auto-focused\n * @param topNode\n * @param visibilityCache\n */\nexport var parentAutofocusables = function (topNode, visibilityCache) {\n return filterFocusable(getParentAutofocusables(topNode), visibilityCache);\n};\n/*\n * Determines if element is contained in scope, including nested shadow DOMs\n */\nexport var contains = function (scope, element) {\n return ((scope.shadowRoot\n ? contains(scope.shadowRoot, element)\n : scope.contains(element)) || Array.from(scope.children).some(function (child) { return contains(child, element); }));\n};\n","import { FOCUS_DISABLED, FOCUS_GROUP } from '../constants';\nimport { asArray, toArray } from './array';\n/**\n * in case of multiple nodes nested inside each other\n * keeps only top ones\n * this is O(nlogn)\n * @param nodes\n * @returns {*}\n */\nvar filterNested = function (nodes) {\n var contained = new Set();\n var l = nodes.length;\n for (var i = 0; i < l; i += 1) {\n for (var j = i + 1; j < l; j += 1) {\n var position = nodes[i].compareDocumentPosition(nodes[j]);\n /* eslint-disable no-bitwise */\n if ((position & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {\n contained.add(j);\n }\n if ((position & Node.DOCUMENT_POSITION_CONTAINS) > 0) {\n contained.add(i);\n }\n /* eslint-enable */\n }\n }\n return nodes.filter(function (_, index) { return !contained.has(index); });\n};\n/**\n * finds top most parent for a node\n * @param node\n * @returns {*}\n */\nvar getTopParent = function (node) {\n return node.parentNode ? getTopParent(node.parentNode) : node;\n};\n/**\n * returns all \"focus containers\" inside a given node\n * @param node\n * @returns {T}\n */\nexport var getAllAffectedNodes = function (node) {\n var nodes = asArray(node);\n return nodes.filter(Boolean).reduce(function (acc, currentNode) {\n var group = currentNode.getAttribute(FOCUS_GROUP);\n acc.push.apply(acc, (group\n ? filterNested(toArray(getTopParent(currentNode).querySelectorAll(\"[\".concat(FOCUS_GROUP, \"=\\\"\").concat(group, \"\\\"]:not([\").concat(FOCUS_DISABLED, \"=\\\"disabled\\\"])\"))))\n : [currentNode]));\n return acc;\n }, []);\n};\n","var getNestedShadowActiveElement = function (shadowRoot) {\n return shadowRoot.activeElement\n ? shadowRoot.activeElement.shadowRoot\n ? getNestedShadowActiveElement(shadowRoot.activeElement.shadowRoot)\n : shadowRoot.activeElement\n : undefined;\n};\n/**\n * returns active element from document or from nested shadowdoms\n */\nexport var getActiveElement = function () {\n return (document.activeElement\n ? document.activeElement.shadowRoot\n ? getNestedShadowActiveElement(document.activeElement.shadowRoot)\n : document.activeElement\n : undefined); // eslint-disable-next-line @typescript-eslint/no-explicit-any\n};\n","import { contains } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\nvar focusInFrame = function (frame) { return frame === document.activeElement; };\nvar focusInsideIframe = function (topNode) {\n return Boolean(toArray(topNode.querySelectorAll('iframe')).some(function (node) { return focusInFrame(node); }));\n};\n/**\n * @returns {Boolean} true, if the current focus is inside given node or nodes\n */\nexport var focusInside = function (topNode) {\n var activeElement = document && getActiveElement();\n if (!activeElement || (activeElement.dataset && activeElement.dataset.focusGuard)) {\n return false;\n }\n return getAllAffectedNodes(topNode).some(function (node) { return contains(node, activeElement) || focusInsideIframe(node); });\n};\n","import { FOCUS_ALLOW } from './constants';\nimport { contains } from './utils/DOMutils';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\n/**\n * focus is hidden FROM the focus-lock\n * ie contained inside a node focus-lock shall ignore\n * @returns {boolean} focus is currently is in \"allow\" area\n */\nexport var focusIsHidden = function () {\n var activeElement = document && getActiveElement();\n if (!activeElement) {\n return false;\n }\n // this does not support setting FOCUS_ALLOW within shadow dom\n return toArray(document.querySelectorAll(\"[\".concat(FOCUS_ALLOW, \"]\"))).some(function (node) { return contains(node, activeElement); });\n};\n","import { isRadioElement } from './is';\nvar findSelectedRadio = function (node, nodes) {\n return nodes\n .filter(isRadioElement)\n .filter(function (el) { return el.name === node.name; })\n .filter(function (el) { return el.checked; })[0] || node;\n};\nexport var correctNode = function (node, nodes) {\n if (isRadioElement(node) && node.name) {\n return findSelectedRadio(node, nodes);\n }\n return node;\n};\n/**\n * giving a set of radio inputs keeps only selected (tabbable) ones\n * @param nodes\n */\nexport var correctNodes = function (nodes) {\n // IE11 has no Set(array) constructor\n var resultSet = new Set();\n nodes.forEach(function (node) { return resultSet.add(correctNode(node, nodes)); });\n // using filter to support IE11\n return nodes.filter(function (node) { return resultSet.has(node); });\n};\n","import { correctNode } from './correctFocus';\nexport var pickFirstFocus = function (nodes) {\n if (nodes[0] && nodes.length > 1) {\n return correctNode(nodes[0], nodes);\n }\n return nodes[0];\n};\nexport var pickFocusable = function (nodes, index) {\n if (nodes.length > 1) {\n return nodes.indexOf(correctNode(nodes[index], nodes));\n }\n return index;\n};\n","import { correctNodes } from './utils/correctFocus';\nimport { pickFocusable } from './utils/firstFocus';\nimport { isGuard } from './utils/is';\nexport var NEW_FOCUS = 'NEW_FOCUS';\n/**\n * Main solver for the \"find next focus\" question\n * @param innerNodes\n * @param outerNodes\n * @param activeElement\n * @param lastNode\n * @returns {number|string|undefined|*}\n */\nexport var newFocus = function (innerNodes, outerNodes, activeElement, lastNode) {\n var cnt = innerNodes.length;\n var firstFocus = innerNodes[0];\n var lastFocus = innerNodes[cnt - 1];\n var isOnGuard = isGuard(activeElement);\n // focus is inside\n if (activeElement && innerNodes.indexOf(activeElement) >= 0) {\n return undefined;\n }\n var activeIndex = activeElement !== undefined ? outerNodes.indexOf(activeElement) : -1;\n var lastIndex = lastNode ? outerNodes.indexOf(lastNode) : activeIndex;\n var lastNodeInside = lastNode ? innerNodes.indexOf(lastNode) : -1;\n var indexDiff = activeIndex - lastIndex;\n var firstNodeIndex = outerNodes.indexOf(firstFocus);\n var lastNodeIndex = outerNodes.indexOf(lastFocus);\n var correctedNodes = correctNodes(outerNodes);\n var correctedIndex = activeElement !== undefined ? correctedNodes.indexOf(activeElement) : -1;\n var correctedIndexDiff = correctedIndex - (lastNode ? correctedNodes.indexOf(lastNode) : activeIndex);\n var returnFirstNode = pickFocusable(innerNodes, 0);\n var returnLastNode = pickFocusable(innerNodes, cnt - 1);\n // new focus\n if (activeIndex === -1 || lastNodeInside === -1) {\n return NEW_FOCUS;\n }\n // old focus\n if (!indexDiff && lastNodeInside >= 0) {\n return lastNodeInside;\n }\n // first element\n if (activeIndex <= firstNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnLastNode;\n }\n // last element\n if (activeIndex >= lastNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnFirstNode;\n }\n // jump out, but not on the guard\n if (indexDiff && Math.abs(correctedIndexDiff) > 1) {\n return lastNodeInside;\n }\n // focus above lock\n if (activeIndex <= firstNodeIndex) {\n return returnLastNode;\n }\n // focus below lock\n if (activeIndex > lastNodeIndex) {\n return returnFirstNode;\n }\n // index is inside tab order, but outside Lock\n if (indexDiff) {\n if (Math.abs(indexDiff) > 1) {\n return lastNodeInside;\n }\n return (cnt + lastNodeInside + indexDiff) % cnt;\n }\n // do nothing\n return undefined;\n};\n","import { parentAutofocusables } from './DOMutils';\nimport { contains } from './DOMutils';\nimport { asArray } from './array';\nvar getParents = function (node, parents) {\n if (parents === void 0) { parents = []; }\n parents.push(node);\n if (node.parentNode) {\n getParents(node.parentNode.host || node.parentNode, parents);\n }\n return parents;\n};\n/**\n * finds a parent for both nodeA and nodeB\n * @param nodeA\n * @param nodeB\n * @returns {boolean|*}\n */\nexport var getCommonParent = function (nodeA, nodeB) {\n var parentsA = getParents(nodeA);\n var parentsB = getParents(nodeB);\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < parentsA.length; i += 1) {\n var currentParent = parentsA[i];\n if (parentsB.indexOf(currentParent) >= 0) {\n return currentParent;\n }\n }\n return false;\n};\nexport var getTopCommonParent = function (baseActiveElement, leftEntry, rightEntries) {\n var activeElements = asArray(baseActiveElement);\n var leftEntries = asArray(leftEntry);\n var activeElement = activeElements[0];\n var topCommon = false;\n leftEntries.filter(Boolean).forEach(function (entry) {\n topCommon = getCommonParent(topCommon || entry, entry) || topCommon;\n rightEntries.filter(Boolean).forEach(function (subEntry) {\n var common = getCommonParent(activeElement, subEntry);\n if (common) {\n if (!topCommon || contains(common, topCommon)) {\n topCommon = common;\n }\n else {\n topCommon = getCommonParent(common, topCommon);\n }\n }\n });\n });\n // TODO: add assert here?\n return topCommon;\n};\n/**\n * return list of nodes which are expected to be autofocused inside a given top nodes\n * @param entries\n * @param visibilityCache\n */\nexport var allParentAutofocusables = function (entries, visibilityCache) {\n return entries.reduce(function (acc, node) { return acc.concat(parentAutofocusables(node, visibilityCache)); }, []);\n};\n","import { NEW_FOCUS, newFocus } from './solver';\nimport { filterAutoFocusable, getAllTabbableNodes, getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { pickFirstFocus } from './utils/firstFocus';\nimport { getActiveElement } from './utils/getActiveElement';\nimport { getDataset, isDefined, isNotAGuard } from './utils/is';\nimport { allParentAutofocusables, getTopCommonParent } from './utils/parenting';\nvar findAutoFocused = function (autoFocusables) {\n return function (node) { var _a; \n // @ts-expect-error\n return node.autofocus || !!((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.autofocus) || autoFocusables.indexOf(node) >= 0; };\n};\nvar reorderNodes = function (srcNodes, dstNodes) {\n var remap = new Map();\n // no Set(dstNodes) for IE11 :(\n dstNodes.forEach(function (entity) { return remap.set(entity.node, entity); });\n // remap to dstNodes\n return srcNodes.map(function (node) { return remap.get(node); }).filter(isDefined);\n};\n/**\n * given top node(s) and the last active element return the element to be focused next\n * @param topNode\n * @param lastNode\n */\nexport var getFocusMerge = function (topNode, lastNode) {\n var activeElement = document && getActiveElement();\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(activeElement || topNode, topNode, entries);\n var visibilityCache = new Map();\n var anyFocusable = getAllTabbableNodes(entries, visibilityCache);\n var innerElements = getTabbableNodes(entries, visibilityCache).filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n });\n if (!innerElements[0]) {\n innerElements = anyFocusable;\n if (!innerElements[0]) {\n return undefined;\n }\n }\n var outerNodes = getAllTabbableNodes([commonParent], visibilityCache).map(function (_a) {\n var node = _a.node;\n return node;\n });\n var orderedInnerElements = reorderNodes(outerNodes, innerElements);\n var innerNodes = orderedInnerElements.map(function (_a) {\n var node = _a.node;\n return node;\n });\n var newId = newFocus(innerNodes, outerNodes, activeElement, lastNode);\n if (newId === NEW_FOCUS) {\n var autoFocusable = filterAutoFocusable(anyFocusable.map(function (_a) {\n var node = _a.node;\n return node;\n })).filter(findAutoFocused(allParentAutofocusables(entries, visibilityCache)));\n return {\n node: autoFocusable && autoFocusable.length\n ? pickFirstFocus(autoFocusable)\n : pickFirstFocus(filterAutoFocusable(innerNodes)),\n };\n }\n if (newId === undefined) {\n return newId;\n }\n return orderedInnerElements[newId];\n};\n","import { getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { isGuard, isNotAGuard } from './utils/is';\nimport { getTopCommonParent } from './utils/parenting';\n/**\n * return list of focusable elements inside a given top node\n * @deprecated use {@link getFocusableIn}. Yep, there is typo in the function name\n */\nexport var getFocusabledIn = function (topNode) {\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(topNode, topNode, entries);\n var visibilityCache = new Map();\n var outerNodes = getTabbableNodes([commonParent], visibilityCache, true);\n var innerElements = getTabbableNodes(entries, visibilityCache)\n .filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n })\n .map(function (_a) {\n var node = _a.node;\n return node;\n });\n return outerNodes.map(function (_a) {\n var node = _a.node, index = _a.index;\n return ({\n node: node,\n index: index,\n lockItem: innerElements.indexOf(node) >= 0,\n guard: isGuard(node),\n });\n });\n};\n/**\n * return list of focusable elements inside a given top node\n */\nexport var getFocusableIn = getFocusabledIn;\n","import { getFocusMerge } from './focusMerge';\nexport var focusOn = function (target, focusOptions) {\n if ('focus' in target) {\n target.focus(focusOptions);\n }\n if ('contentWindow' in target && target.contentWindow) {\n target.contentWindow.focus();\n }\n};\nvar guardCount = 0;\nvar lockDisabled = false;\n/**\n * Sets focus at a given node. The last focused element will help to determine which element(first or last) should be focused.\n * HTML markers (see {@link import('./constants').FOCUS_AUTO} constants) can control autofocus\n * @param topNode\n * @param lastNode\n * @param options\n */\nexport var setFocus = function (topNode, lastNode, options) {\n if (options === void 0) { options = {}; }\n var focusable = getFocusMerge(topNode, lastNode);\n if (lockDisabled) {\n return;\n }\n if (focusable) {\n if (guardCount > 2) {\n // tslint:disable-next-line:no-console\n console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +\n 'See https://github.com/theKashey/focus-lock/#focus-fighting');\n lockDisabled = true;\n setTimeout(function () {\n lockDisabled = false;\n }, 1);\n return;\n }\n guardCount++;\n focusOn(focusable.node, options.focusOptions);\n guardCount--;\n }\n};\n","export enum BentoFocusTrapArrowNavigationDirection {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n}\n\nexport enum BentoFocusTrapVerticalNavigationEvent {\n ARROW_UP = 'arrowup',\n ARROW_DOWN = 'arrowdown',\n}\n\nexport enum BentoFocusTrapHorizontalNavigationEvent {\n ARROW_LEFT = 'arrowleft',\n ARROW_RIGHT = 'arrowright',\n}\n\nexport interface BentoFocusTrapFocusableIn {\n node: HTMLElement;\n /**\n * tab index\n */\n index: number;\n /**\n * true, if this node belongs to a Lock\n */\n lockItem: boolean;\n /**\n * true, if this node is a focus-guard (system node)\n */\n guard: boolean;\n}\n","import { getFocusableIn } from 'focus-lock';\nimport {\n BentoFocusTrapFocusableIn,\n BentoFocusTrapHorizontalNavigationEvent,\n BentoFocusTrapVerticalNavigationEvent,\n} from '@/components/focus-trap/focus-trap.types';\n\n/**\n * Perform callback before next re-paint frame of browser.\n *\n * @param action\n * @returns\n */\nexport const deferAction = (callback: FrameRequestCallback) => requestAnimationFrame(callback);\n\n/**\n * Get's the index number of the current node inside an array of focusable elements.\n *\n * @param node an HTMLElement node\n * @param nodes an array of focusable elements\n * @returns\n */\nconst getNodeIndex = (node: Element, nodes: BentoFocusTrapFocusableIn[]) => {\n const index = nodes.findIndex(item => item.node === node);\n return index === -1 ? 0 : index;\n};\n\n/**\n * Retrieves the next focusable element using a factor to either choose\n * the next or previous focusable element.\n *\n * @param factor a number +1 or -1\n * @param element the element to checks for focusable elements inside of\n * @returns\n */\nexport const getNextFocusableElement = (factor, element): HTMLElement => {\n const currentFocusedEl = document.activeElement;\n const focusableElements = getFocusableIn(element);\n const nextIndex = getNodeIndex(currentFocusedEl, focusableElements) + factor;\n return focusableElements[nextIndex]?.node || (currentFocusedEl as HTMLElement);\n};\n\n/**\n * Returns an object is if keyboard event key is an arrow previous or next key.\n * this changes depending on if the arrow navigation is horizontal or vertical.\n *\n * @param event\n * @param arrowOrder\n * @returns { isArrowNext: boolean, isArrowPrev: boolean }\n */\nexport const getArrowType = (\n event: KeyboardEvent,\n arrowOrder: BentoFocusTrapVerticalNavigationEvent[] | BentoFocusTrapHorizontalNavigationEvent[]\n) => {\n const eventKey = event.key.toLowerCase();\n return {\n isArrowNext: eventKey === arrowOrder[0],\n isArrowPrev: eventKey === arrowOrder[1],\n };\n};\n\n/**\n * Default scrolling into view options\n */\nexport const SCROLL_INTO_VIEW_OPTIONS: ScrollIntoViewOptions = {\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n};\n","<template>\n <div\n v-if=\"$slots.default\"\n class=\"b-focus-trap\"\n data-testid=\"focus-trap\"\n tabindex=\"-1\"\n v-on=\"arrowNavigation ? { keydown: onKeyDown } : {}\"\n @focusout=\"onBlur\"\n >\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import moveFocusInside, { focusInside, focusIsHidden } from 'focus-lock';\n import {\n BentoFocusTrapArrowNavigationDirection,\n BentoFocusTrapHorizontalNavigationEvent,\n BentoFocusTrapVerticalNavigationEvent,\n } from './focus-trap.types';\n import {\n deferAction,\n getArrowType,\n getNextFocusableElement,\n SCROLL_INTO_VIEW_OPTIONS,\n } from '@/utils/ts/focus-trap.utils';\n\n /**\n * Locks the focus inside an element for a11y navigation.\n * Useful for things like modals, popovers, etc...\n *\n * @example\n * import { BentoFocusTrap, BentoButton } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFocusTrap, BentoButton },\n * template: `\n * <div id=\"import-choice\">\n * <bento-focus-trap>\n * Make a choice to proceed further!\n * <bento-button>Yes</bento-button>\n * <bento-button>No</bento-button>\n * </bento-focus-trap>\n * </div>\n * `\n * };\n */\n export default defineComponent({\n name: 'bento-focus-trap',\n props: {\n /**\n * Enables / Disables arrow navigation as well can determine the type of arrow navigation.\n * The types of arrow navigation are horizontal and vertical.\n */\n arrowNavigation: {\n type: String as PropType<BentoFocusTrapArrowNavigationDirection>,\n default: undefined,\n validator: value =>\n Object.values(BentoFocusTrapArrowNavigationDirection).includes(\n value as BentoFocusTrapArrowNavigationDirection\n ),\n },\n /**\n * Enables / disables the focus trap.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n data: () => ({\n lastFocusedElement: null,\n }),\n computed: {\n isHorizontalArrowNavigation(): boolean {\n return this.arrowNavigation === BentoFocusTrapArrowNavigationDirection.HORIZONTAL;\n },\n isVerticalArrowNavigation(): boolean {\n return this.arrowNavigation === BentoFocusTrapArrowNavigationDirection.VERTICAL;\n },\n arrowOrder() {\n return this.isVerticalArrowNavigation\n ? Object.values(BentoFocusTrapVerticalNavigationEvent)\n : Object.values(BentoFocusTrapHorizontalNavigationEvent);\n },\n },\n watch: {\n /**\n * If the disabled prop changes, then enable / disable the focus trap.\n */\n disabled() {\n if (this.disabled) {\n this.disable();\n } else {\n this.setFocusInside();\n }\n },\n },\n mounted() {\n if (this.disabled) {\n return;\n }\n this.setFocusInside();\n },\n beforeUnmount() {\n if (this.disabled) {\n return;\n }\n this.disable();\n },\n methods: {\n /**\n * Set focus back inside the element area, giving the last focus element\n * `focus-lock` can determine the next interable element to focus on.\n */\n async setFocusInside() {\n const isFocusOnBody = document.activeElement === document.body;\n if (isFocusOnBody || focusIsHidden() || !this.lastFocusedElement) {\n if (!focusInside(this.$el as HTMLElement)) {\n moveFocusInside(this.$el as HTMLElement, this.lastFocusedElement);\n }\n this.lastFocusedElement = document.activeElement;\n }\n },\n /**\n * On blur, trap the focus inside!\n */\n onBlur() {\n if (this.disabled) {\n return;\n }\n deferAction(this.setFocusInside);\n },\n /**\n * If the no arrow navigation is enabled\n * or if the currently focus element is a textarea or an input then prevent navigation.\n */\n shouldPreventNavigation() {\n if (!this.isVerticalArrowNavigation && !this.isHorizontalArrowNavigation) {\n return false;\n }\n\n const currentTag = document.activeElement.tagName.toLowerCase();\n const possibleFormControls = this.isVerticalArrowNavigation\n ? ['textarea', 'select']\n : ['input', 'textarea'];\n return possibleFormControls.includes(currentTag);\n },\n /**\n * When an arrow key is pressed then navigate to the next focusable element.\n * If trap is disabled or is content editable then prevent arrow navigation.\n *\n * @param event on keyboard press event\n */\n onKeyDown(event: KeyboardEvent) {\n if (\n this.disabled ||\n (document.activeElement as HTMLElement).isContentEditable ||\n this.shouldPreventNavigation()\n ) {\n return;\n }\n\n const { isArrowNext, isArrowPrev } = getArrowType(event, this.arrowOrder);\n if (isArrowPrev || isArrowNext) {\n event.preventDefault();\n event.stopPropagation();\n const focusableEl = getNextFocusableElement(isArrowPrev ? 1 : -1, this.$el);\n focusableEl.focus();\n if ('scrollIntoView' in focusableEl) {\n const options =\n 'scrollBehavior' in document.documentElement.style ? SCROLL_INTO_VIEW_OPTIONS : false;\n focusableEl.scrollIntoView(options);\n }\n }\n },\n /**\n * If focus trap is disabled then return focus to last focus element, parent node or simply the document body.\n */\n disable() {\n const focusOnDestroyEl = this.lastFocusedElement || this.$el.parentNode || document.body;\n if (focusOnDestroyEl) {\n focusOnDestroyEl.focus();\n }\n },\n },\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .b-focus-trap {\n outline: none;\n }\n</style>\n","import type { Modifier, StrictModifiers } from '@popperjs/core';\n\ntype ArrowModifier = Modifier<'arrow', unknown>;\ntype ApplyArrowHideModifier = Modifier<'applyArrowHide', unknown>;\ntype SameWidthModifier = Modifier<'sameWidth', unknown>;\ntype TrackPositionModifer = Modifier<'trackPosition', unknown>;\ntype FlipModifer = Modifier<'flip', unknown>;\nexport type ExtendedModifiers =\n | StrictModifiers\n | ArrowModifier\n | ApplyArrowHideModifier\n | SameWidthModifier\n | TrackPositionModifer\n | FlipModifer;\n\nexport interface PopperContainerArrowProp {\n classes?: string[];\n padding?: string;\n}\n\nexport enum PopperContainerPositionBasic {\n TOP = 'top',\n RIGHT = 'right',\n BOTTOM = 'bottom',\n LEFT = 'left',\n}\n\nexport enum PopperContainerPositionExtended {\n AUTO = 'auto',\n AUTO_START = 'auto-start',\n AUTO_END = 'auto-end',\n TOP_START = 'top-start',\n TOP_END = 'top-end',\n RIGHT_START = 'right-start',\n RIGHT_END = 'right-end',\n BOTTOM_START = 'bottom-start',\n BOTTOM_END = 'bottom-end',\n LEFT_START = 'left-start',\n LEFT_END = 'left-end',\n}\n\n// TODO: add more roles as we figure them out\nexport enum PopperContainerAriaRole {\n TOOLTIP = 'tooltip',\n POPOVER = 'dialog',\n}\n\nexport const PopperContainerPosition = { ...PopperContainerPositionBasic, ...PopperContainerPositionExtended };\nexport type PopperContainerPosition = PopperContainerPositionBasic | PopperContainerPositionExtended;\n\nexport type FallbackPositionProp = PopperContainerPosition[] | PopperContainerPosition;\n","import type { VueNodeElement } from '@/types';\nimport { ExtendedModifiers, FallbackPositionProp, PopperContainerArrowProp } from './popper-container.types';\n\n/**\n * Creates an arrow modifier for popper container.\n * If padding is set in arrow props, then implement in modifier.\n * @param arrow arrow element\n * @param arrowProps arrow props\n * @returns ArrowModifier\n */\nexport const getArrowModifier = (arrow: VueNodeElement, arrowProps: PopperContainerArrowProp) => ({\n name: 'arrow',\n options: {\n element: arrow,\n padding: arrowProps.padding || 0,\n },\n});\n\n/**\n * Created an offset modifier for the popper.\n * If an arrow is set (i.e. an arrow is present in popper) then adjust offset accordingly.\n * See popper docs for more info: https://popper.js.org/docs/v2/modifiers/offset/\n * @param arrow arrow props\n * @param offset offset numbered array\n * @returns OffsetModifier\n */\nexport const getOffsetModifier = (arrowProps: PopperContainerArrowProp, offset: number[]) => ({\n name: 'offset',\n options: { offset: arrowProps ? [offset[0], offset[1] + 7] : offset },\n});\n\n/**\n * Creates popover fallback position for popper if it's scheduled to overflow a given boundary.\n * See docs for more info: https://popper.js.org/docs/v2/modifiers/flip/\n * @param fallbackPosition fallbackPosition\n * @returns FlipModifier\n */\nexport const getFlipModifier = (fallbackPosition: FallbackPositionProp) => ({\n name: 'flip',\n options: {\n fallbackPlacements: Array.isArray(fallbackPosition) ? fallbackPosition : [fallbackPosition],\n },\n});\n\n/**\n * Applies a data-hide attribute to arrow element depending on center offset.\n */\nexport const arrowDataHideAttributeModifier: ExtendedModifiers = {\n name: 'applyArrowHide',\n enabled: true,\n phase: 'write',\n fn({ state }) {\n const { arrow } = state.elements;\n\n if (arrow) {\n if (state.modifiersData.arrow.centerOffset !== 0) {\n arrow.setAttribute('data-hide', '');\n } else {\n arrow.removeAttribute('data-hide');\n }\n }\n },\n};\n\nexport const sameWidthModifier: ExtendedModifiers = {\n name: 'sameWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: ({ state }) => {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n },\n effect: ({ state }) => {\n state.elements.popper.style.width = `${(state.elements.reference as HTMLElement).offsetWidth}px`;\n },\n};\n","<template>\n <bento-focus-trap\n :id=\"id\"\n :disabled=\"disabledFocusTrap\"\n class=\"b-popper-container\"\n :role=\"ariaRole\"\n :aria-label=\"ariaLabel\"\n >\n <slot></slot>\n <span\n v-if=\"arrow\"\n ref=\"arrow\"\n :class=\"arrowClasses\"\n class=\"b-popper-container__arrow\"\n data-testid=\"arrow\"\n ></span>\n </bento-focus-trap>\n</template>\n\n<script lang=\"ts\">\n import { createPopper } from '@popperjs/core';\n import type { Instance, PositioningStrategy } from '@popperjs/core';\n import { defineComponent, PropType } from 'vue';\n import { BentoFocusTrap } from '@/components/focus-trap';\n import {\n ExtendedModifiers,\n FallbackPositionProp,\n PopperContainerAriaRole,\n PopperContainerArrowProp,\n PopperContainerPosition,\n PopperContainerPositionBasic,\n } from './popper-container.types';\n import {\n arrowDataHideAttributeModifier,\n getArrowModifier,\n getFlipModifier,\n getOffsetModifier,\n sameWidthModifier,\n } from './popper-container.utils';\n import type { VueNodeElement } from '@/types';\n\n /**\n * A wrapper for the 'popper/core' package that overlays a small piece of content near a target element.\n *\n * NOTE: This component should not be used by itself but more implemented by other exported components\n * e.g. Tooltip\n * More info here on the package: https://popper.js.org/docs/v2/\n *\n * * @usage\n * import { PopperContainer } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { PopperContainer },\n * computed: {\n * targetElement() {\n * return this.$refs.tooltipTarget;\n * },\n * },\n * template: `\n * <popper-container\n * :target-element=\"targetElement\"\n * :position=\"position\"\n * >\n * {{ content }}\n * </popper-container>`,\n * }\n */\n export default defineComponent({\n components: { BentoFocusTrap },\n props: {\n /**\n * The id to be set on the component. Use it for accessibility purposes.\n */\n id: { type: String, default: null },\n /**\n * Defines a string value that provides an accessible name for the popper-container.\n */\n ariaLabel: { type: String, default: null },\n /**\n * Reference to the DOM element or Vue component for positioning\n */\n targetElement: { type: [Element, Object] as PropType<VueNodeElement>, required: true },\n /**\n * Position relative to the target element\n * @see {@link https://popper.js.org/docs/v2/constructors/#placement}\n */\n position: {\n type: String as PropType<PopperContainerPosition>,\n default: PopperContainerPosition.AUTO,\n validator: value =>\n Object.values(PopperContainerPosition).includes(value as PopperContainerPositionBasic),\n },\n /**\n * Instructs popover to be visible outside of the containing container.\n * Useful when component would be used in limited containers like Modal, Side panel, etc.\n * https://popper.js.org/docs/v2/constructors/#strategy\n */\n fixedPositioning: { type: Boolean, default: false },\n /**\n * Indicates if container should have additional arrow, pointing at target element\n * Can be just a boolean flag, or an object with additional configuration:\n * @property {Array<string>} arrow.classes – apply any additional classes to the arrow element.\n * @property {string} arrow.padding – useful when content has rounded corners, https://popper.js.org/docs/v2/modifiers/arrow/#padding\n */\n arrow: { type: Object as PropType<PopperContainerArrowProp | boolean>, default: undefined },\n /**\n * Allows to displace a popper container from its target element.\n * @see {@link https://popper.js.org/docs/v2/modifiers/offset/}\n */\n offset: {\n type: Array as PropType<number[]>,\n default: () => [0, 0],\n validator: (value: number[]) => value?.length === 2,\n },\n /**\n * Instructs popper container to have the same width as target element.\n */\n matchWidth: { type: Boolean, default: false },\n /**\n * Disables wrapping focus-trap component.\n * Mostly useful for the storybook demo.\n */\n disabledFocusTrap: { type: Boolean, default: false },\n /**\n * Custom set of modifiers. Useful for low-level control over Popper behavior in some really complex use cases.\n */\n modifiers: { type: Array, default: null },\n /**\n * Allows to configure to fallback position to the one specified, it could be 'auto' or ['right', 'top', ...].\n * Useful when not using auto as starting placement.\n * https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements\n */\n fallbackPosition: {\n type: [Array, String] as PropType<FallbackPositionProp>,\n default: null,\n },\n /**\n * The aria role assigned to the container. Defaults to null, which means it's not set if nothing is passed.\n */\n ariaRole: {\n type: String as PropType<PopperContainerAriaRole>,\n default: null,\n validator: value => Object.values(PopperContainerAriaRole).includes(value as PopperContainerAriaRole),\n },\n },\n data: () => ({\n popper: null,\n emittedPosition: null,\n }),\n computed: {\n strategy(): PositioningStrategy {\n return this.fixedPositioning ? 'fixed' : 'absolute';\n },\n /**\n * Retrieves all the popper modifiers to be applied to popover.\n * Read utils file for more info on each modifier.\n */\n allModifiers(): ExtendedModifiers[] {\n const currentModifiers: ExtendedModifiers[] = this.modifiers || [];\n const allModifiers = [\n // Create arrow modifier if arrow props are set\n ...(this.arrow ? [getArrowModifier(this.$refs.arrow as VueNodeElement, this.arrow)] : []),\n // Create offset modifier\n getOffsetModifier(this.arrow, this.offset),\n // Apply data-hide attribute to arrow element depnding on center offset.\n arrowDataHideAttributeModifier,\n // If matchWidth set to true, set the width of popover to same as target element.\n ...(this.matchWidth ? [sameWidthModifier] : []),\n // Emits position of popover when position is updated.\n {\n name: 'trackPosition',\n enabled: true,\n phase: 'afterWrite',\n fn: ({ state }) => {\n // Add conditional to make sure that event is only emitted for new placement values\n if (this.emittedPosition !== state.placement) {\n this.emittedPosition = state.placement;\n this.$emit('position', this.emittedPosition);\n }\n },\n },\n // Sets Flip modifier if fallbackPosition is set\n ...(this.fallbackPosition ? [getFlipModifier(this.fallbackPosition)] : []),\n ...(currentModifiers || []),\n ];\n return allModifiers as ExtendedModifiers[];\n },\n /**\n * Sets default arrow classes if none have been set.\n */\n arrowClasses(): string[] {\n return this?.arrow?.classes ?? [];\n },\n },\n watch: {\n targetElement(element: VueNodeElement) {\n this.destroyPopper();\n if (this.$el && element) {\n this.initPopper();\n }\n },\n position(position: PopperContainerPosition) {\n this.updatePopperOptions({ placement: position });\n },\n strategy(strategy: PositioningStrategy) {\n this.updatePopperOptions({ strategy });\n },\n async arrow(arrow: PopperContainerArrowProp | boolean) {\n if (arrow) {\n // Wait for the next rendering cycle to make sure that arrow element is rendered, but only when it is displayed\n await this.$nextTick();\n }\n this.updateModifiers();\n },\n offset: 'updateModifiers',\n matchWidth: 'updateModifiers',\n },\n mounted() {\n this.initPopper();\n },\n beforeUnmount() {\n this.destroyPopper();\n },\n methods: {\n initPopper() {\n const popperElement = (this.targetElement as any).$el\n ? ((this.targetElement as any).$el as Element)\n : (this.targetElement as Element);\n this.popper = createPopper<ExtendedModifiers>(popperElement, this.$el as HTMLElement, {\n placement: this.position,\n strategy: this.strategy,\n modifiers: this.allModifiers as ExtendedModifiers[],\n });\n },\n destroyPopper() {\n // Add some time before destroy to run fade-out animation\n if (this.popper) {\n (this.popper as Instance).destroy();\n }\n },\n updatePopperOptions(options) {\n if (this.popper) {\n (this.popper as Instance).setOptions(options);\n }\n },\n updateModifiers() {\n this.updatePopperOptions({ modifiers: this.allModifiers });\n },\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./popper-container.scss\" />\n","import { PopperContainerPositionBasic } from '@/components/popper-container';\n\nexport const BentoTooltipPosition = { ...PopperContainerPositionBasic };\nexport type BentoTooltipPosition = PopperContainerPositionBasic;\n\nexport enum BentoTooltipState {\n HIDDEN = 'hidden',\n}\n\nexport interface TooltipInstance {\n target: HTMLElement;\n content: string;\n position: BentoTooltipPosition;\n removeListeners: Array<() => void>;\n}\n","import { ListenOptions } from '@/types/utils-events';\n\n/**\n * Browser event options object feature support\n * @type {object}\n * @property {boolean} capture\n * @property {boolean} passive\n * @property {boolean} once\n */\nconst optionsSupport = (() => {\n const support = {\n capture: false,\n passive: false,\n once: false,\n };\n\n try {\n // `addEventListener`/`removeEventListener` last argument can be boolean or Object.\n // Old browsers only support boolean, so passing an Object would make them evaluate are true.\n // To detect Object support and each feature, we provide an object with getters.\n // If the getter is invoked means that browser supports that specific feature.\n const options = {\n get capture() {\n support.capture = true;\n return false;\n },\n get passive() {\n support.passive = true;\n return false;\n },\n get once() {\n support.once = true;\n return false;\n },\n };\n // eslint-disable-next-line scanjs-rules/call_addEventListener\n document.addEventListener('test', null, options);\n document.removeEventListener('test', null, options);\n } catch {\n // ignored\n }\n\n return support;\n})();\n\n/**\n * Attach event listeners using options object (implementing browser fallbacks), easy cleanup\n *\n * @param {EventTarget} target - Target where the event will be attached\n * @param {string} type - Event type(s). Accepts multiple types separated by space\n * @param {EventHandler} listener - Handler function\n * @param {ListenOptions}[options] - Listener options\n * @param {boolean} [options.capture] - Capture event listener\n * @param {boolean} [options.passive] - Passive event listener\n * @param {boolean} [options.once] - Auto cleanup after event is fired for the first time\n * @param {boolean} [options.self] - Only trigger if the target of the event is itself\n * @param {Vue} [options.vm] - Auto cleanup when vue instance is destroyed\n * @param {Function} [options.onCleanup] - Callback function invoked after cleaning up\n * @return {Function} Cleanup function that removes the listener\n */\nexport function listen(target: EventTarget, type: string, listener: EventListener, options?: ListenOptions) {\n if (type.indexOf(' ') >= 0) {\n const cleanupBatch = type.split(' ').map(eventType => listen(target, eventType, listener, options));\n return () => cleanupBatch.forEach(cleanup => cleanup && cleanup());\n }\n\n let cleanup;\n let eventOptions: boolean | AddEventListenerOptions;\n let useNativeOnce = false;\n\n // Listener wrapper\n const eventListener = event => {\n if (options?.self && event.target !== target) {\n return;\n }\n try {\n listener(event);\n } finally {\n if (options?.once) {\n cleanup();\n }\n }\n };\n\n // Cleanup function\n cleanup = () => {\n if (!useNativeOnce) {\n target.removeEventListener(type, eventListener, eventOptions);\n }\n options?.vm?.$off('hook:beforeDestroy', cleanup);\n options?.onCleanup?.();\n };\n\n // addEventListener options adjustments\n if (options?.capture) {\n eventOptions = optionsSupport.capture ? { capture: true } : true;\n }\n\n if (options?.passive && optionsSupport.passive) {\n eventOptions = { ...(eventOptions as AddEventListenerOptions), passive: true };\n }\n\n if (options?.once && optionsSupport.once) {\n // `self`, `vm` and `onCleanup` options forces to skip native `once`\n if (!options?.self && !options?.vm && !options?.onCleanup) {\n useNativeOnce = true;\n eventOptions = { ...(eventOptions as AddEventListenerOptions), once: true };\n }\n }\n\n // TODO: vue 3 uses old vue event emitter, do we need this?\n // https://v3-migration.vuejs.org/breaking-changes/events-api.html#event-bus\n // if (options?.vm) {\n // if (!(options.vm instanceof Vue)) {\n // throw new TypeError('options.vm is not a Vue component instance');\n // }\n // options.vm.$once('hook:beforeDestroy', cleanup);\n // }\n // eslint-disable-next-line scanjs-rules/call_addEventListener\n target.addEventListener(type, eventListener, eventOptions);\n return cleanup;\n}\n","import Vue from 'vue';\n\nexport interface ListenOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n self?: boolean;\n vm?: Vue;\n onCleanup?: () => void;\n}\n\nexport enum KeyCode {\n ESCAPE = 27,\n}\n","<template>\n <popper-container\n :id=\"id\"\n :target-element=\"targetElement\"\n :position=\"position\"\n :offset=\"[0, 4]\"\n :arrow=\"{ classes: ['b-tooltip__arrow'] }\"\n :aria-hidden=\"!isShown\"\n :class=\"conditionalClasses\"\n :tabindex=\"tabIndex\"\n class=\"b-tooltip\"\n :aria-role=\"PopperContainerAriaRole.TOOLTIP\"\n :fallback-position=\"PopperContainerPositionExtended.AUTO\"\n >\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.CAPTION\">\n {{ content }}\n </bento-typography>\n </popper-container>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTooltipPosition, BentoTooltipState } from '@/directives/tooltip/tooltip.types';\n import {\n PopperContainer,\n PopperContainerAriaRole,\n PopperContainerPositionExtended,\n } from '@/components/popper-container';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { VueNodeElement } from '@/types';\n\n /**\n * Tooltip container, to be used internally to render the tooltip container where the text is shown.\n */\n export const Tooltip = {\n name: 'tooltip',\n components: { BentoTypography, PopperContainer },\n inheritAttrs: false,\n props: {\n /**\n * The tooltip's id. Necessary for accessibility purposes.\n */\n id: { type: String, default: null },\n /**\n * Tooltip's target reference to the DOM element or Vue component.\n * The tooltip will position itself relatively to target element, in the specified position.\n */\n targetElement: { type: [Element, Object] as PropType<VueNodeElement>, required: true },\n /**\n * Tooltip's position relative to the target element.\n * Possible values are: 'top', 'bottom', 'left' and 'right'.\n */\n position: {\n type: String as PropType<BentoTooltipPosition>,\n default: BentoTooltipPosition.TOP,\n validator: value => Object.values(BentoTooltipPosition).includes(value as BentoTooltipPosition),\n },\n /**\n * Tooltip's offset.\n * If specified, the tooltip will have an offset in pixels between it and the target element\n * in specified position.\n */\n offset: { type: Number, default: 0 },\n /**\n * Tooltip's text content.\n */\n content: { type: String, required: true },\n /**\n * Shows / Hides the Tooltip component\n */\n isShown: { type: Boolean, default: false },\n },\n setup(props) {\n const conditionalClasses = computed(() => ({\n [`b-tooltip--${BentoTooltipState.HIDDEN}`]: !props.isShown,\n }));\n\n const tabIndex = computed((): number => (props.isShown ? 1 : -1));\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n PopperContainerAriaRole,\n PopperContainerPositionExtended,\n\n // Values\n conditionalClasses,\n tabIndex,\n };\n },\n };\n\n export default defineComponent(Tooltip);\n</script>\n\n<style lang=\"scss\" scoped src=\"./tooltip.scss\" />\n","import { nextTick, reactive } from 'vue';\nimport { listen } from '@/utils/ts/events';\nimport { generateUid } from '@/utils/ts/unique-id';\nimport { KeyCode } from '@/types/utils-events';\nimport { BentoTooltipPosition, TooltipInstance } from './tooltip.types';\nimport type { DirectiveBinding } from 'vue/types/options';\nimport { createApp, Vue, Vue2 } from 'vue-demi';\nimport Tooltip from '@/components/tooltip/tooltip.vue';\n\n/**\n * Tooltip directive to render a tooltip on a given HTML element or component.\n *\n * @usage\n * import { BentoTooltipDirective } from '@adyen/bento-vue2';\n *\n * export default {\n * directives: { BentoTooltipDirective },\n * template: `\n * <bento-button\n * v-bento-tooltip-directive:top=\"Tooltip Content\"\n * >\n * Button text\n * </bento-button>\n * `,\n * }\n */\nconst tooltipInstances: Array<TooltipInstance> = [];\nconst ariaDescribedByAttr = 'aria-describedby';\nconst tooltipId = generateUid('tooltip');\n\nlet tooltipVNode;\n\n// Reusable Tooltip component instance.\nlet tooltip;\n// Global visibility state to prevent tooltips from showing after it being instructed to hide\nlet open = false;\n\nconst tooltipProps = reactive({\n targetElement: null,\n content: 'START_MESSAGE',\n id: tooltipId,\n position: undefined,\n isShown: false,\n});\n\n/**\n * Creates a new Tooltip component instance and inserts it into DOM.\n * @param {HTMLElement} el the target element for the Tooltip\n * @internal\n */\nconst createTooltip = (el: HTMLElement) => {\n // Sets the target's 'aria-describedby' attribute\n el.setAttribute(ariaDescribedByAttr, tooltipId);\n // Sets the target's tabindex so as to make the tooltip interactive via keyboard navigation\n el.setAttribute('tabindex', '0');\n // eslint-disable-next-line no-param-reassign\n el.style.width = 'fit-content';\n\n if (Vue2) {\n const TooltipComponent = Vue.extend(Tooltip);\n tooltip = new TooltipComponent({ propsData: { targetElement: el, content: '', id: tooltipId } }).$mount();\n document.body.appendChild(tooltip.$el);\n } else {\n tooltipProps.targetElement = el;\n tooltip = createApp({\n components: { Tooltip },\n template: `<tooltip \n :targetElement=\"tooltipProps.targetElement\"\n :content=\"tooltipProps.content\"\n :id=\"tooltipProps.id\"\n :is-shown=\"tooltipProps.isShown\"\n />`,\n setup() {\n return { tooltipProps };\n },\n });\n tooltipVNode = document.createElement('div');\n tooltipVNode.id = 'tooltip-parent';\n document.body.appendChild(tooltipVNode);\n tooltip.mount('#tooltip-parent');\n }\n};\n\n/**\n * Removes Tooltip component instance from the DOM and destroys it.\n * @internal\n */\nconst destroyTooltip = () => {\n if (Vue2) {\n document.body.removeChild(tooltip.$el);\n tooltip.$destroy();\n } else {\n tooltip.unmount();\n document.body.removeChild(tooltipVNode);\n }\n\n tooltip = undefined;\n};\n\n/**\n * Returns tooltip position based on the specified argument.\n * By default returns 'top' if no argument is specified.\n * @param {DirectiveBinding} binding Directive binding object.\n * @returns {string} Tooltip position.\n * @internal\n */\nconst getTooltipPosition = (binding: DirectiveBinding): BentoTooltipPosition =>\n Object.values(BentoTooltipPosition).includes(binding.arg as BentoTooltipPosition)\n ? (binding.arg as BentoTooltipPosition)\n : BentoTooltipPosition.TOP;\n\n/**\n * Get the correct Tooltip instance for the given target element\n * @param {HTMLElement} el the target element for the Tooltip\n * @returns\n */\nconst getTooltipInstanceForTarget = (el: HTMLElement): TooltipInstance =>\n tooltipInstances.find(\n ctx =>\n // isEqualNode doesn't work correct for svg element, hence the second check here\n ctx.target.isEqualNode(el) && ctx.target === el\n );\n\n/**\n * On mouse enter event updates tooltip with correct content and position, and shows tooltip.\n * @param {?HTMLElement} el - Target element\n * @internal\n */\nconst showTooltip = (el?: HTMLElement) => {\n const tooltipInstance = getTooltipInstanceForTarget(el);\n\n // If tooltip content is empty – do not show the tooltip\n if (!tooltipInstance.content || !el) {\n return;\n }\n\n open = true;\n\n tooltip.content = tooltipInstance.content;\n tooltip.position = tooltipInstance.position;\n\n tooltipProps.content = tooltipInstance.content;\n tooltipProps.position = tooltipInstance.position;\n\n // Do calculations on a next tick, otherwise tooltip position calculations will be wrong\n nextTick(() => {\n // Do not open tooltip if it has been instructed to hide in process\n if (!open) {\n return;\n }\n tooltip.targetElement = el;\n tooltip.isShown = true;\n\n tooltipProps.targetElement = el;\n tooltipProps.isShown = true;\n });\n};\n\n/**\n * On mouse leave event hides the tooltip.\n * @internal\n */\nconst hideTooltip = () => {\n open = false;\n tooltip.isShown = false;\n tooltipProps.isShown = false;\n};\n\nconst tooltipBind = (el, binding) => {\n // eslint-disable-next-line no-prototype-builtins\n if (!binding.hasOwnProperty('value') || binding.value) {\n // Create Tooltip component singleton instance\n if (tooltipInstances.length === 0) {\n createTooltip(el);\n }\n\n const show = () => showTooltip(el);\n const hide = () => hideTooltip();\n\n // Create and store context object, which has directive related handlers and content.\n const tooltipInstance: TooltipInstance = {\n target: el,\n content: binding.value,\n position: getTooltipPosition(binding),\n removeListeners: [\n listen(el, 'mouseenter', show),\n listen(el, 'mouseleave', hide),\n listen(el, 'focus', show),\n listen(el, 'blur', hide),\n listen(el, 'keydown', evt => {\n const keyboardEvent = <KeyboardEvent>evt;\n if (keyboardEvent.keyCode === KeyCode.ESCAPE) {\n hide();\n }\n }),\n ],\n };\n\n tooltipInstances.push(tooltipInstance);\n }\n};\n\nconst tooltipUpdate = (el, binding) => {\n const tooltipInstance = getTooltipInstanceForTarget(el);\n // Update tooltip content value if it is changed\n if (tooltipInstance.content !== binding.value) {\n tooltipInstance.content = binding.value;\n // If tooltip is currently shown for current element – update tooltip's content value\n if (tooltip.isShown && tooltip.targetElement.isEqualNode(el)) {\n if (!tooltipInstance.content) {\n tooltip.isShown = false;\n } else {\n tooltip.content = binding.value;\n }\n }\n }\n // Update tooltip position if it is changed\n if (tooltipInstance.position !== binding.arg) {\n const position = getTooltipPosition(binding);\n tooltipInstance.position = position;\n tooltip.position = position;\n }\n};\n\nconst tooltipUnbind = el => {\n const context = getTooltipInstanceForTarget(el);\n\n // Prevent unbinding/removing when there's nothing to unbind, leads to stack overflow errors\n if (!context) {\n return;\n }\n\n context.removeListeners.forEach(removeListener => {\n removeListener();\n });\n\n // If el is removed while tooltip is displayed, the tooltip doesnt hide as\n // there is no el to trigger mouseleave/blur.\n hideTooltip();\n\n tooltipInstances.splice(tooltipInstances.indexOf(context), 1);\n\n // If all the elements using the directive are removed, then no point having\n // the component on the page.\n if (tooltipInstances.length === 0) {\n destroyTooltip();\n }\n};\n\n/**\n * This directive allows you to bind a tooltip to an element.\n * Tooltip can be configured to be shown in one of four positions: `top`, `left`, `right` and `bottom`.\n *\n * @example\n * import { BentoTooltipDirective as BentoTooltip, TooltipPosition } from '@adyen/ds-vue2';\n *\n * export default {\n * directives: { BentoTooltip },\n * methods: {\n * contentExpression() {\n * return 'tooltip content';\n * },\n * },\n * template: `<div>\n * <div v-adl-tooltip:left=\"'tooltip content'\"></div>\n * <div v-adl-tooltip:[TooltipPosition.BOTTOM]=\"'bottom tooltip content'\"></div>\n *\n * <!-- If you don't specify the position then by default it's `TooltipPosition.TOP` -->\n * <div v-adl-tooltip=\"'tooltip content'\"></div>\n *\n * <!-- Tooltip content can also be a data property or a method or a computed property as well -->\n * <div v-adl-tooltip=\"contentExpression()\"></div>\n * </div>`,\n * };\n */\nexport const BentoTooltipDirective = {\n // Vue 2 Directive hooks\n bind(el, binding) {\n tooltipBind(el, binding);\n },\n update(el, binding) {\n tooltipUpdate(el, binding);\n },\n unbind(el) {\n tooltipUnbind(el);\n },\n // Vue 3 Directive hooks\n beforeMount(el, binding) {\n tooltipBind(el, binding);\n },\n mounted(el, binding) {\n tooltipUpdate(el, binding);\n },\n updated(el, binding) {\n tooltipUpdate(el, binding);\n },\n unmounted(el) {\n tooltipUnbind(el);\n },\n};\n","import { ObjectDirective } from 'vue';\nimport { listen } from '@/utils/ts/events';\nimport { Binding } from './keyboard-navigation.types';\n\nconst onKeyEvent = (el: Element) => (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Esc':\n case 'Escape':\n el.dispatchEvent(new Event('keydown:escape'));\n break;\n case 'Enter':\n el.dispatchEvent(new Event('keydown:enter'));\n break;\n case 'Tab':\n el.dispatchEvent(new Event('keydown:tab'));\n break;\n // Space\n case ' ':\n el.dispatchEvent(new Event('keydown:space'));\n break;\n case 'Right':\n case 'ArrowRight':\n el.dispatchEvent(new Event('keydown:arrow-right'));\n break;\n case 'Left':\n case 'ArrowLeft':\n el.dispatchEvent(new Event('keydown:arrow-left'));\n break;\n case 'Up':\n case 'ArrowUp':\n el.dispatchEvent(new Event('keydown:arrow-up'));\n break;\n case 'Down':\n case 'ArrowDown':\n el.dispatchEvent(new Event('keydown:arrow-down'));\n break;\n case 'PageUp':\n el.dispatchEvent(new Event('keydown:page-up'));\n break;\n case 'PageDown':\n el.dispatchEvent(new Event('keydown:page-down'));\n break;\n case 'Home':\n el.dispatchEvent(new Event('keydown:home'));\n break;\n case 'End':\n el.dispatchEvent(new Event('keydown:end'));\n break;\n default:\n break;\n }\n};\n\nexport const BentoKeyboardNavigationDirective: ObjectDirective<Element> = {\n bind(el, binding: Binding<undefined>) {\n // Register the listener cleanup function\n // eslint-disable-next-line no-param-reassign, dot-notation\n binding['keyDownListener'] = listen(el, 'keydown', onKeyEvent(el));\n },\n unbind(_, binding: Binding<undefined>) {\n if (binding.keyDownListener) {\n binding.keyDownListener();\n }\n },\n};\n","<template>\n <span\n v-bento-tooltip-directive=\"shouldShowTooltip ? textFromSlot : null\"\n class=\"b-tag\"\n :class=\"tagConditionalClasses\"\n :aria-label=\"computedAriaLabel\"\n role=\"mark\"\n >\n <bento-typography\n class=\"b-tag__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.CAPTION\"\n stronger\n >\n {{ formattedText }}\n </bento-typography>\n </span>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTagVariant } from './tag.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoTooltipDirective } from '@/directives';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n\n export default defineComponent({\n name: 'bento-tag',\n components: { BentoTypography },\n directives: { BentoTooltipDirective },\n inheritAttrs: false,\n props: {\n /**\n * The label text content of the Tag.\n */\n label: { type: String, default: null },\n\n /**\n * The variant variant of tag\n */\n variant: {\n type: String as PropType<BentoTagVariant>,\n default: BentoTagVariant.GREY,\n validator: (value: BentoTagVariant) => Object.values(BentoTagVariant).includes(value),\n },\n\n /**\n * The number of characters to limit the number of displayed characters for the tag text, truncating it with an ellipsis of three dots \"...\".\n */\n truncate: { type: Number, default: null },\n },\n setup(props, { slots }) {\n const computedAriaLabel = useAriaLabel({\n label: props.label || slots.default?.()[0].text.trim(),\n defaultFallback: 'tag',\n });\n\n const tagConditionalClasses = computed(() => ({\n [`b-tag--${props.variant}`]: props.variant,\n }));\n\n const textFromSlot = computed(() => props.label || slots.default?.()[0].text.trim() || 'tag');\n const shouldShowTooltip = computed(() => props.truncate && textFromSlot.value.length > props.truncate);\n\n const formattedText = computed(() => {\n if (!props.truncate) {\n return textFromSlot.value;\n }\n\n return shouldShowTooltip.value\n ? `${textFromSlot.value.slice(0, props.truncate)}...`\n : textFromSlot.value;\n });\n\n return {\n // Values\n computedAriaLabel,\n textFromSlot,\n formattedText,\n tagConditionalClasses,\n shouldShowTooltip,\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./tag.scss\" />\n","<template>\n <span class=\"b-listbox-tag-option\">\n <span aria-hidden=\"true\">\n <bento-tag class=\"b-listbox-tag-option__tag\" :label=\"option.value.toString()\" :variant=\"variant\" />\n </span>\n <bento-typography v-if=\"option.label\" :el=\"BentoTypographyElement.SPAN\" class=\"b-listbox-tag-option__label\">\n {{ option.label }}\n </bento-typography>\n </span>\n</template>\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import type { BentoListboxOptionItem } from '@/types';\n import { BentoTag, BentoTagVariant } from '@/components/tag';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n\n /**\n * A Tag Dropdown option item used in the Dropdown and Filter components.\n */\n export default defineComponent({\n name: 'listbox-tag-option',\n components: {\n BentoTag,\n BentoTypography,\n },\n props: {\n /**\n * The option item that contains all the option item's data.\n * @type {BentoListboxOptionItem}\n */\n option: {\n type: Object as PropType<BentoListboxOptionItem>,\n required: true,\n },\n },\n setup(props) {\n const variant = computed(() => props.option.data as BentoTagVariant);\n\n return {\n // Values\n variant,\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\n<style lang=\"scss\" scoped src=\"./listbox-option-tag.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25V3.5C9.25 3.08579 8.91421 2.75 8.5 2.75H3.5C3.08579 2.75 2.75 3.08579 2.75 3.5V8.5C2.75 8.91421 3.08579 9.25 3.5 9.25H5.25V7.5C5.25 6.25736 6.25736 5.25 7.5 5.25H9.25ZM6.75 12.5C6.75 12.9142 7.08579 13.25 7.5 13.25H12.5C12.9142 13.25 13.25 12.9142 13.25 12.5V7.5C13.25 7.08579 12.9142 6.75 12.5 6.75H7.5C7.08579 6.75 6.75 7.08579 6.75 7.5V12.5Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","export enum CopyTooltipState {\n DEFAULT = 'default',\n COPYING = 'copying',\n ERROR = 'error',\n}\n","<template>\n <div class=\"b-copy\" @mouseleave=\"resetText\" @focusout=\"resetText\">\n <span v-if=\"$slots.default\" v-bento-tooltip-directive:[tooltipPosition]=\"copyText\" @click=\"onClickCopy\">\n <slot />\n </span>\n <bento-button\n v-else\n v-bento-tooltip-directive:[tooltipPosition]=\"copyText\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n @click=\"onClickCopy\"\n >\n <template #iconLeft>\n <copy-icon :svg-title=\"$t('copy')\" />\n </template>\n </bento-button>\n <div v-if=\"showScreenReaderAlert\" role=\"alert\" class=\"b-copy__screen-reader-alert\">{{ $t('copied') }}</div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import { PopperContainerPosition } from '@/components/popper-container';\n import { BentoTooltipDirective } from '@/directives';\n import { useI18n } from '@/utils/ts/i18n';\n import CopyIcon from '@adyen/ui-assets-icons-16/vue/copy';\n import messages from './messages.json';\n import { CopyTooltipState } from './copy.types';\n\n /**\n * An internal button component that copies text to the user's clipboard.\n *\n * @example\n * import { Copy } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { Copy },\n * template: `\n * <copy :text=\"textToCopy\" />\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'copy',\n components: { BentoButton, CopyIcon },\n directives: { BentoTooltipDirective },\n inheritAttrs: false,\n props: {\n /**\n * Defines the string that will get copied to the clipboard\n */\n text: {\n type: String,\n required: true,\n },\n\n /**\n * Position the tooltip should take if space is available. Defaults to 'top'\n */\n tooltipPosition: {\n type: String as PropType<PopperContainerPosition>,\n default: PopperContainerPosition.TOP,\n },\n },\n setup(props) {\n const { t } = useI18n();\n const copyState = ref<CopyTooltipState>(CopyTooltipState.DEFAULT);\n\n const showScreenReaderAlert = ref(false);\n const onClickCopy = async () => {\n try {\n await navigator.clipboard.writeText(props.text);\n copyState.value = CopyTooltipState.COPYING;\n showScreenReaderAlert.value = true;\n } catch (e) {\n copyState.value = CopyTooltipState.ERROR;\n }\n };\n\n const resetText = () => {\n copyState.value = CopyTooltipState.DEFAULT;\n showScreenReaderAlert.value = false;\n };\n\n const copyText = computed(() => {\n switch (copyState.value) {\n case CopyTooltipState.COPYING:\n return t('copied');\n case CopyTooltipState.ERROR:\n return t('copyFailed');\n case CopyTooltipState.DEFAULT:\n default:\n return t('copy');\n }\n });\n\n return {\n BentoButtonVariant,\n copyText,\n onClickCopy,\n resetText,\n showScreenReaderAlert,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./copy.scss\" />\n","export enum GridLayoutContainerType {\n INLINE = 'inline-size',\n SIZE = 'size',\n NORMAL = 'normal',\n}\n\nexport interface GridLayoutColumnWidth {\n small: number | string;\n medium: number | string;\n large: number | string;\n}\n\nexport type GridLayoutColumnWidths = Array<'auto' | GridLayoutColumnWidth>;\n","<template>\n <div class=\"b-grid-layout\" :class=\"computedClasses\" data-testid=\"grid-layout\">\n <div\n v-if=\"hasSlot('col-1')\"\n class=\"b-grid-layout__column\"\n :class=\"computeColumnSize(0)\"\n data-testid=\"grid-layout-col-1\"\n >\n <slot name=\"col-1\"></slot>\n </div>\n <div\n v-if=\"hasSlot('col-2')\"\n class=\"b-grid-layout__column\"\n :class=\"computeColumnSize(1)\"\n data-testid=\"grid-layout-col-2\"\n >\n <slot name=\"col-2\"></slot>\n </div>\n <div\n v-if=\"hasSlot('col-3')\"\n class=\"b-grid-layout__column\"\n :class=\"computeColumnSize(2)\"\n data-testid=\"grid-layout-col-3\"\n >\n <slot name=\"col-3\"></slot>\n </div>\n <div\n v-if=\"hasSlot('col-4')\"\n class=\"b-grid-layout__column\"\n :class=\"computeColumnSize(3)\"\n data-testid=\"grid-layout-col-4\"\n >\n <slot name=\"col-4\"></slot>\n </div>\n <div\n v-if=\"hasSlot('col-5')\"\n class=\"b-grid-layout__column\"\n :class=\"computeColumnSize(4)\"\n data-testid=\"grid-layout-col-5\"\n >\n <slot name=\"col-5\"></slot>\n </div>\n <div\n v-if=\"hasSlot('col-6')\"\n class=\"b-grid-layout__column\"\n :class=\"computeColumnSize(5)\"\n data-testid=\"grid-layout-col-6\"\n >\n <slot name=\"col-6\"></slot>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { GridLayoutColumnWidth, GridLayoutColumnWidths, GridLayoutContainerType } from './grid-layout.types';\n\n /**\n * Component used to render the grid layout in the bento-summary-grid. For internal use only\n */\n export default defineComponent({\n name: 'grid-layout',\n props: {\n /**\n * Sets the responsive columns widths for the grid.\n */\n columnWidth: {\n type: Array as PropType<GridLayoutColumnWidths>,\n default: null,\n validator: (array: GridLayoutColumnWidths) => array && array.length <= 6,\n },\n\n /**\n * Set the type of CSS container the grid layout has\n * @values inline-size, size, normal\n */\n containerType: {\n type: String as PropType<GridLayoutContainerType>,\n default: GridLayoutContainerType.INLINE,\n },\n },\n setup(props, { slots }) {\n // TODO: add a computedItems computed here that only returns the slots that are presents so as to be able to render the divs in the template via a v-for\n const computeColumnSize = index => {\n if (props.columnWidth?.[index] && props.columnWidth?.[index] !== 'auto') {\n const columnWidth = props.columnWidth[index] as GridLayoutColumnWidth;\n return [\n `b-grid-layout__column--${columnWidth.small}`,\n `b-grid-layout-m__column--${columnWidth.medium}`,\n `b-grid-layout-l__column--${columnWidth.large}`,\n ];\n }\n return null;\n };\n\n const computedClasses = computed(() => ({\n 'b-grid-layout--container-type-normal': props.containerType === GridLayoutContainerType.NORMAL,\n 'b-grid-layout--container-type-size': props.containerType === GridLayoutContainerType.SIZE,\n }));\n\n return {\n // Values\n computeColumnSize,\n computedClasses,\n\n // Methods\n hasSlot: hasSlot(slots),\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./grid-layout.scss\" />\n","export enum BentoDropdownSize {\n DEFAULT = 'DropdownInputDefault',\n SMALL = 'DropdownInputSmall',\n}\n","<template>\n <popper-container\n v-show=\"isDropdownOpen\"\n :target-element=\"targetElement\"\n :position=\"PopperContainerPosition.BOTTOM_START\"\n :offset=\"[0, 8]\"\n match-width\n >\n <bento-listbox\n :id=\"id\"\n :aria-label=\"ariaLabel\"\n class=\"b-dropdown-options-container\"\n :class=\"conditionalListboxClasses\"\n :is-option-disabled=\"isOptionDisabled\"\n :items=\"items\"\n :selected-value=\"selectedValue\"\n :multiple=\"multiple\"\n :no-results-message=\"noResultsMessage\"\n :searching=\"searching\"\n @select=\"onOptionSelected\"\n >\n <template v-for=\"(_, slot) of $scopedSlots || $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-listbox>\n </popper-container>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoListbox } from '@/internal';\n import { BentoListboxIsOptionDisabled, BentoListboxOptions, BentoListboxSelectedValue } from '@/types';\n import { PopperContainer, PopperContainerPosition } from '@/components/popper-container';\n import { BentoDropdownSize } from '../../dropdown.types';\n import { useI18n } from '@/utils/ts/i18n';\n\n import messages from './messages.json';\n\n /**\n * Dropdown options container.\n * It lists all the available options.\n *\n * @example\n * <bento-dropdown-options-container\n * v-if=\"inputContainerRef\" <!-- Ref to the input to match the width -->\n * :id=\"dropdownOptionsContainerId\"\n * :target-element=\"inputContainerRef\"\n * :aria-label=\"ariaLabel\"\n * :open=\"isDropdownOpen\"\n * :disabled=\"disabled\"\n * :multiple=\"multiple\"\n * :selected=\"value\"\n * :isOptionDisabled=\"option => option.value === 2\"\n * :items=\"[{\n * { label: 'Option 1', value: 1 },\n * { label: 'Option 2', value: 2 },\n * }]\"\n * @select=\"onOptionSelected\"\n * />\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-dropdown-options-container',\n components: {\n BentoListbox,\n PopperContainer,\n },\n inheritAttrs: false,\n props: {\n /**\n * Defines a string value that labels an interactive element.\n */\n ariaLabel: { type: String, default: null },\n\n /**\n * Disables dropdown functionality\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Identifies the listbox whose contents are controlled by the the combobox on which the aria-controls attribute is set.\n */\n id: { type: String, required: true },\n\n /**\n * Function that allows the options to be disabled\n *\n * @type {BentoDropdownIsOptionDisabled}\n * @param {BentoDropdownOptionItem} option - Dropdown option object\n * @param {string} option.label - Option's label text\n * @param {string|number} option.value - Option's value\n * @param {unknown} option.data - Option's extra data to be passed to the default slot\n */\n isOptionDisabled: {\n type: Function as PropType<BentoListboxIsOptionDisabled>,\n default: undefined,\n },\n\n /**\n * Dropdown input size\n * @see BentoDropdownSize\n */\n inputSize: {\n type: String as PropType<BentoDropdownSize>,\n default: BentoDropdownSize.DEFAULT,\n validator: (value: BentoDropdownSize) => Object.values(BentoDropdownSize).includes(value),\n },\n\n /**\n * The option elements to populate the dropdown with.\n * It must be an array of {@see BentoDropdownOptionItem }\n * * @property {string} value.label - Text to be displayed in the option\n * * @property {string,number} value.value - Value of the option\n */\n items: {\n type: Array as PropType<BentoListboxOptions>,\n required: true,\n },\n\n /**\n * If enabled, the user will be able to select multiple items.\n */\n multiple: { type: Boolean, default: false },\n\n /**\n * Indicates if the dropdown is open so that\n * the container can be displayed.\n */\n open: { type: Boolean, required: true },\n\n /**\n * The `input` value.\n * Providing an empty string or empty array will select no options.\n * Set to an empty string `''` if you don't want any of the available options to be selected for single select\n */\n selectedValue: {\n type: [String, Number, Array] as PropType<BentoListboxSelectedValue>,\n default: null,\n },\n\n /**\n * Flag that indicates that an external search it's being made\n * to filter out the items inside the the multi-select listbox\n *\n * If enabled, hides the \"Select all\" checkbox in \"multiple\" mode.\n */\n searching: BentoListbox.props.searching,\n\n /**\n * Reference to the DOM element or Vue component for positioning\n * the Dropdown container.\n */\n targetElement: { type: PopperContainer.props.targetElement.type, required: true },\n },\n emits: ['select'],\n setup(props, { emit }) {\n const { t } = useI18n({ messages });\n const isDropdownOpen = computed(() => props.open && !props.disabled);\n const onOptionSelected = (selectedValue: BentoListboxSelectedValue) => {\n emit('select', selectedValue);\n };\n const noResultsMessage = computed(() => t('noOptionsMatchThisSearch') as string);\n\n const conditionalListboxClasses = computed(() => ({\n 'b-dropdown-options-container--small': props.inputSize === BentoDropdownSize.SMALL,\n }));\n\n return {\n // Values\n isDropdownOpen,\n conditionalListboxClasses,\n noResultsMessage,\n\n // Enums\n PopperContainerPosition,\n\n // Events\n onOptionSelected,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown-options-container.scss\" />\n","/**\n * The debounce() method is used to create a debounced function which\n * delays the given callback function until after the stated wait time\n * in milliseconds have passed since the last time this debounced function was called.\n *\n * @param {Function} callback - The function to debounce.\n * @param debounceTime - The number of milliseconds to delay.\n * @returns {Function} - Returns the new debounced function.\n */\nexport const debounce = <T extends (...args: any[]) => any>(callback: T, debounceTime = 300) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n\n const callable = (...args: any) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => callback(...args), debounceTime);\n };\n return <T>(<any>callable);\n};\n","import { PropType } from 'vue';\nimport { Booleanish } from '@/types';\n\n// TODO: Change this to script setup + Typescript interface\nexport const DropdownBaseTextboxProps = {\n /**\n * The number of additional items that have been selected in the dropdown.\n */\n additionalItemsSelected: { type: Number, default: 0 },\n\n /**\n * Sets the possibility to type into the textbox\n */\n dynamicFiltering: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the aria-controls attribute on the textbox. This should correspond to the popover's id that the textbox triggers.\n */\n ariaControls: {\n type: String,\n required: true,\n },\n\n /**\n * Indicates whether the content the textbox triggers is visible or not. Needs to be set accordingly when the textbox is used and changed every time the popover is shown/hidden.\n */\n ariaExpanded: {\n type: [String, Boolean] as PropType<Booleanish>,\n required: true,\n },\n\n /**\n * Corresponds to the label's id that labels the textbox element.\n */\n ariaLabelledby: {\n type: String,\n default: null,\n },\n\n /**\n * Disables any textbox functionality\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Marks the textbox as invalid, rendering an error state\n */\n isInvalid: { type: Boolean, default: false },\n\n /**\n * Selected option's label\n */\n displayValue: { type: String, default: null },\n\n /**\n * Indicates if the dropdown is open so that\n * the respective event can be emitted\n */\n open: { type: Boolean, default: false },\n\n /**\n * The input value\n */\n value: { type: String, default: '' },\n\n /**\n * Custom debounce time. Default: 300\n */\n debounceTime: { type: Number, default: 300 },\n};\n\nexport enum DropdownBaseTextboxState {\n DISABLED = 'disabled',\n HAS_ITEMS = 'has-items',\n OPENED = 'opened',\n ERROR = 'error',\n}\n\nexport default DropdownBaseTextboxProps;\n","<template>\n <div\n data-testid=\"textbox-wrapper\"\n @click=\"onToggleDropdown\"\n @keydown.space=\"onSpaceBar\"\n @keydown.esc=\"onCloseDropdown\"\n >\n <bento-typography\n class=\"b-dropdown-base-textbox\"\n :class=\"conditionalClasses\"\n :el=\"BentoTypographyElement.DIV\"\n data-testid=\"base-textbox\"\n >\n <input\n v-if=\"dynamicFiltering\"\n v-bind=\"ariaAttributes\"\n :id=\"textboxId\"\n ref=\"textbox\"\n class=\"b-dropdown-base-textbox__input\"\n role=\"combobox\"\n type=\"text\"\n aria-autocomplete=\"list\"\n :value=\"open ? value : displayValue\"\n :disabled=\"disabled ? true : null\"\n @keydown.enter=\"onToggleDropdown\"\n @input=\"onInputEvent\"\n />\n <div\n v-else\n :id=\"textboxId\"\n v-bind=\"ariaAttributes\"\n ref=\"textbox\"\n class=\"b-dropdown-base-textbox__input\"\n role=\"combobox\"\n :tabindex=\"0\"\n >\n <!-- <span :aria-hidden=\"!displayValue ? true : null\"> -->\n <slot v-if=\"selectedValueItem && !multiple\" v-bind=\"selectedValueItem\">\n {{ displayValue }}\n </slot>\n <template v-else-if=\"selectedValueItem && showSlotContentInMultiple\">\n <div class=\"b-dropdown-base-textbox__input-multiple-selected\">\n <div v-for=\"singleItem of selectedValueItems\" :key=\"singleItem.value\">\n <div class=\"b-dropdown-base-textbox__input-selected-element\">\n <slot v-bind=\"singleItem\">\n {{ displayValue }}\n </slot>\n </div>\n </div>\n </div>\n </template>\n <template v-else>{{ displayValue }}</template>\n <!-- </span> -->\n </div>\n <span v-if=\"additionalItemsSelected\" class=\"b-dropdown-base-textbox__additional-items\">\n {{ additionalItemsSelected }}\n </span>\n <span v-if=\"hasSlot('icon') && !isFiltering\" class=\"b-dropdown-base-textbox__icon\" aria-hidden=\"true\">\n <slot name=\"icon\"></slot>\n </span>\n <span\n v-if=\"isFiltering\"\n class=\"b-dropdown-base-textbox__clear-search\"\n tabindex=\"0\"\n data-testid=\"clear-search-button\"\n @click=\"onClearSearch\"\n @keypress.enter=\"onClearSearch\"\n @keyup.space=\"onClearSearch\"\n >\n <cross-circle-fill-icon :svg-title=\"'clearSearch'\" />\n </span>\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { generateUid } from '@/utils/ts/unique-id';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { debounce } from '@/utils/ts/debounce';\n import { BentoListboxOptionItem, Booleanish } from '@/types';\n import type { HTMLAttributes } from 'vue/types/jsx';\n import CrossCircleFillIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import { DropdownBaseTextboxState } from './dropdown-base-textbox.types';\n\n /**\n * Only for internal use, implements the logic of the textbox element to be implemented in the combobox.\n */\n export default defineComponent({\n name: 'dropdown-base-textbox',\n components: { BentoTypography, CrossCircleFillIcon },\n props: {\n /**\n * The number of additional items that have been selected in the dropdown.\n */\n additionalItemsSelected: { type: Number, default: 0 },\n\n /**\n * Sets the aria-controls attribute on the textbox. This should correspond to the popover's id that the textbox triggers.\n */\n ariaControls: {\n type: String,\n required: true,\n },\n\n /**\n * Indicates whether the content the textbox triggers is visible or not. Needs to be set accordingly when the textbox is used and changed every time the popover is shown/hidden.\n */\n ariaExpanded: {\n type: [String, Boolean] as PropType<Booleanish>,\n required: true,\n },\n\n /**\n * If no label element is used then the aria-label is be set should be set.\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * Corresponds to the label's id that labels the textbox element.\n */\n ariaLabelledby: {\n type: String,\n default: null,\n },\n\n /**\n * Custom debounce time for the user type event.\n */\n debounceTime: { type: Number, default: 300 },\n\n /**\n * Disables any textbox functionality\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Selected option's label\n */\n displayValue: { type: String, default: null },\n\n /**\n * Sets the possibility to type into the textbox.\n */\n dynamicFiltering: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Marks the textbox as invalid, rendering an error state\n */\n isInvalid: { type: Boolean, default: false },\n\n /**\n * Indicates if the dropdown is open so that\n * the respective event can be emitted\n */\n open: { type: Boolean, default: false },\n\n /**\n * The input value\n */\n value: { type: String, default: '' },\n\n /**\n * The selected value's list box item.\n */\n selectedValueItem: {\n type: [Object, Array] as PropType<BentoListboxOptionItem | BentoListboxOptionItem[]>,\n default: undefined,\n },\n\n /**\n * Toggles whether to use the slot content select items shown in the textbox in multiple mode.\n */\n showSlotContentInMultiple: { type: Boolean, default: false },\n\n /*\n * If enabled, the user will be able to select multiple items.\n */\n multiple: { type: Boolean, default: false },\n },\n emits: ['open', 'close', 'input', 'clear'],\n setup(props, { emit, slots }) {\n const textbox = ref(null);\n const textboxId = generateUid('textbox');\n\n const conditionalClasses = computed(() => ({\n [`b-dropdown-base-textbox--${DropdownBaseTextboxState.DISABLED}`]: props.disabled,\n [`b-dropdown-base-textbox--${DropdownBaseTextboxState.HAS_ITEMS}`]: !!props.additionalItemsSelected,\n }));\n\n const isFiltering = computed(() => props.dynamicFiltering && !!props.value);\n\n const ariaAttributes = computed(\n () =>\n ({\n 'aria-haspopup': 'listbox',\n 'aria-controls': props.ariaControls,\n 'aria-expanded': props.ariaExpanded ? 'true' : 'false',\n 'aria-labelledby': props.ariaLabelledby,\n 'aria-label': props.ariaLabelledby ? null : props.ariaLabel,\n 'aria-invalid': props.isInvalid,\n 'aria-disabled': props.disabled ? true : null,\n } as HTMLAttributes)\n );\n\n /**\n * Triggered on click, space and enter user events. It will open the dropdown.\n * @event open\n */\n const onOpenDropdown = () => {\n if (!props.disabled) {\n textbox.value.focus();\n emit('open');\n }\n };\n\n /**\n * Triggered on click, space, enter and esc user events. It will close the dropdown.\n * @event close\n */\n const onCloseDropdown = () => {\n if (props.open) {\n textbox.value.focus();\n emit('close');\n }\n };\n\n const onToggleDropdown = (event: Event) => {\n const isDynamicFilteringInputClickEvent =\n props.open && (event.target as HTMLDivElement).tagName === 'INPUT';\n if (isDynamicFilteringInputClickEvent) {\n /**\n * When there's a click even on the input during filtering\n * and the popover is open, do not toggle the popover.\n * Allow for click events inside the input field\n */\n return null;\n }\n\n return props.open ? onCloseDropdown() : onOpenDropdown();\n };\n\n const onSpaceBar = (event: Event) => {\n if (!props.dynamicFiltering) {\n onToggleDropdown(event);\n }\n };\n\n const onClearSearch = () => {\n emit('clear');\n emit('input', '');\n };\n const onInputEvent = debounce<(event: Event) => void>((event: Event) => {\n emit('input', (event.target as HTMLInputElement).value);\n }, props.debounceTime);\n\n // Cast selectedValueItem if it is an array of selected items\n const selectedValueItems = computed(() =>\n props.multiple ? (props.selectedValueItem as BentoListboxOptionItem[]) : []\n );\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n conditionalClasses,\n textboxId,\n textbox,\n isFiltering,\n ariaAttributes,\n selectedValueItems,\n\n // Events\n onCloseDropdown,\n onToggleDropdown,\n onClearSearch,\n onInputEvent,\n onSpaceBar,\n\n // Methods\n hasSlot: hasSlot(slots),\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown-base-textbox.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M2.46967 4.96967C2.76256 4.67678 3.23744 4.67678 3.53033 4.96967L8 9.43934L12.4697 4.96967C12.7626 4.67678 13.2374 4.67678 13.5303 4.96967C13.8232 5.26257 13.8232 5.73744 13.5303 6.03033L8.53033 11.0303C8.23744 11.3232 7.76256 11.3232 7.46967 11.0303L2.46967 6.03033C2.17678 5.73744 2.17678 5.26256 2.46967 4.96967Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M13.5303 11.0303C13.2374 11.3232 12.7626 11.3232 12.4697 11.0303L8 6.56066L3.53033 11.0303C3.23744 11.3232 2.76256 11.3232 2.46967 11.0303C2.17678 10.7374 2.17678 10.2626 2.46967 9.96967L7.46967 4.96967C7.76256 4.67678 8.23744 4.67678 8.53033 4.96967L13.5303 9.96967C13.8232 10.2626 13.8232 10.7374 13.5303 11.0303Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div class=\"b-dropdown-default-textbox\" :class=\"conditionalClasses\" data-testid=\"default-textbox\">\n <dropdown-base-textbox\n v-bind=\"{ ...$attrs, ...$props }\"\n class=\"b-dropdown-default-textbox__textbox\"\n :value=\"value\"\n @input=\"e => $emit('input', e)\"\n @open=\"$emit('open')\"\n @close=\"$emit('close')\"\n @clear=\"$emit('clear')\"\n >\n <template v-for=\"(_, slot) of $scopedSlots || $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n <template #icon>\n <div class=\"b-dropdown-default-textbox__chevron\">\n <chevron-up-icon v-show=\"isDropdownOpen\" svg-title=\"opened\" />\n <chevron-down-icon v-show=\"!isDropdownOpen\" svg-title=\"closed\" />\n </div>\n </template>\n </dropdown-base-textbox>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import DropdownBaseTextbox from '@/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.vue';\n import type { BentoListboxOptionItem } from '@/types';\n import { Booleanish } from '@/types';\n import { DropdownBaseTextboxState } from '../dropdown-base-textbox/dropdown-base-textbox.types';\n import ChevronDownIcon from '@adyen/ui-assets-icons-16/vue/chevron-down';\n import ChevronUpIcon from '@adyen/ui-assets-icons-16/vue/chevron-up';\n\n /**\n * For internal use only, textbox component used in the dropdown component.\n */\n export default defineComponent({\n name: 'dropdown-default-textbox',\n components: { ChevronDownIcon, ChevronUpIcon, DropdownBaseTextbox },\n emits: ['open', 'close', 'input', 'clear'],\n props: {\n /**\n * The number of additional items that have been selected in the dropdown.\n */\n additionalItemsSelected: { type: Number, default: 0 },\n\n /**\n * Sets the aria-controls attribute on the textbox. This should correspond to the popover's id that the textbox triggers.\n */\n ariaControls: {\n type: String,\n required: true,\n },\n\n /**\n * Indicates whether the content the textbox triggers is visible or not. Needs to be set accordingly when the textbox is used and changed every time the popover is shown/hidden.\n */\n ariaExpanded: {\n type: [String, Boolean] as PropType<Booleanish>,\n required: true,\n },\n\n /**\n * If no label element is used then the aria-label is be set should be set.\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * Corresponds to the label's id that labels the textbox element.\n */\n ariaLabelledby: {\n type: String,\n default: null,\n },\n\n /**\n * Custom debounce time. Default: 300\n */\n debounceTime: { type: Number, default: 300 },\n\n /**\n * Disables any textbox functionality\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Selected option's label\n */\n displayValue: { type: String, default: null },\n\n /**\n * Sets the possibility to type into the textbox\n */\n dynamicFiltering: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Marks the textbox as invalid, rendering an error state\n */\n isInvalid: { type: Boolean, default: false },\n\n /**\n * Indicates if the dropdown is open so that\n * the respective event can be emitted\n */\n open: { type: Boolean, default: false },\n\n /**\n * The selected value's list box item.\n */\n selectedValueItem: {\n type: [Object, Array] as PropType<BentoListboxOptionItem | BentoListboxOptionItem[]>,\n default: undefined,\n },\n\n /**\n * Toggles whether to use the slot content select items shown in the textbox in multiple mode.\n */\n showSlotContentInMultiple: { type: Boolean, default: false },\n\n /**\n * The input value\n */\n value: { type: String, default: '' },\n\n /*\n * If enabled, the user will be able to select multiple items.\n */\n multiple: { type: Boolean, default: false },\n },\n setup(props) {\n const conditionalClasses = computed(() => ({\n [`b-dropdown-default-textbox--${DropdownBaseTextboxState.ERROR}`]: props.isInvalid,\n [`b-dropdown-default-textbox--${DropdownBaseTextboxState.DISABLED}`]: props.disabled,\n [`b-dropdown-default-textbox--${DropdownBaseTextboxState.OPENED}`]: props.open,\n }));\n\n const isDropdownOpen = computed(() => props.open && !props.disabled);\n\n return {\n // Values\n conditionalClasses,\n isDropdownOpen,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown-default-textbox.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M4.4697 5.96967C4.76259 5.67678 5.23747 5.67678 5.53036 5.96967L8.00003 8.43934L10.4697 5.96967C10.7626 5.67678 11.2375 5.67678 11.5304 5.96967C11.8233 6.26256 11.8233 6.73744 11.5304 7.03033L8.53036 10.0303C8.23747 10.3232 7.76259 10.3232 7.4697 10.0303L4.4697 7.03033C4.17681 6.73744 4.17681 6.26256 4.4697 5.96967Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.5303 10.0303C11.2374 10.3232 10.7626 10.3232 10.4697 10.0303L8 7.56066L5.53033 10.0303C5.23744 10.3232 4.76256 10.3232 4.46967 10.0303C4.17678 9.73744 4.17678 9.26256 4.46967 8.96967L7.46967 5.96967C7.61032 5.82902 7.80109 5.75 8 5.75C8.19891 5.75 8.38968 5.82902 8.53033 5.96967L11.5303 8.96967C11.8232 9.26256 11.8232 9.73744 11.5303 10.0303Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div class=\"b-dropdown-small-textbox\" :class=\"conditionalClasses\">\n <dropdown-base-textbox\n v-bind=\"{ ...$attrs, ...$props }\"\n class=\"b-dropdown-small-textbox__textbox\"\n @open=\"$emit('open')\"\n @close=\"$emit('close')\"\n >\n <template #icon>\n <div class=\"b-dropdown-small-textbox__chevron\">\n <chevron-up-small-icon v-show=\"isDropdownOpen\" svg-title=\"opened\" />\n <chevron-down-small-icon v-show=\"!isDropdownOpen\" svg-title=\"closed\" />\n </div>\n </template>\n </dropdown-base-textbox>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { DropdownBaseTextboxState } from '@/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.types';\n import { Booleanish } from '@/types';\n import DropdownBaseTextbox from '@/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.vue';\n import ChevronDownSmallIcon from '@adyen/ui-assets-icons-16/vue/chevron-down-small';\n import ChevronUpSmallIcon from '@adyen/ui-assets-icons-16/vue/chevron-up-small';\n\n /**\n * For internal use only, textbox component in its small variant used in the dropdown component.\n */\n export default defineComponent({\n name: 'dropdown-small-textbox',\n components: { ChevronDownSmallIcon, ChevronUpSmallIcon, DropdownBaseTextbox },\n props: {\n /**\n * The number of additional items that have been selected in the dropdown.\n */\n additionalItemsSelected: { type: Number, default: 0 },\n\n /**\n * Sets the aria-controls attribute on the textbox. This should correspond to the popover's id that the textbox triggers.\n */\n ariaControls: {\n type: String,\n required: true,\n },\n\n /**\n * Indicates whether the content the textbox triggers is visible or not. Needs to be set accordingly when the textbox is used and changed every time the popover is shown/hidden.\n */\n ariaExpanded: {\n type: [String, Boolean] as PropType<Booleanish>,\n required: true,\n },\n\n /**\n * If no label element is used then the aria-label is be set should be set.\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * Corresponds to the label's id that labels the textbox element.\n */\n ariaLabelledby: {\n type: String,\n default: null,\n },\n\n /**\n * Custom debounce time. Default: 300\n */\n debounceTime: { type: Number, default: 300 },\n\n /**\n * Disables any textbox functionality\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Selected option's label\n */\n displayValue: { type: String, default: null },\n\n /**\n * Sets the possibility to type into the textbox\n */\n dynamicFiltering: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Marks the textbox as invalid, rendering an error state\n */\n isInvalid: { type: Boolean, default: false },\n\n /**\n * Indicates if the dropdown is open so that\n * the respective event can be emitted\n */\n open: { type: Boolean, default: false },\n\n /**\n * The input value\n */\n value: { type: String, default: '' },\n },\n setup(props) {\n const conditionalClasses = computed(() => ({\n [`b-dropdown-small-textbox--${DropdownBaseTextboxState.DISABLED}`]: props.disabled,\n [`b-dropdown-small-textbox--${DropdownBaseTextboxState.OPENED}`]: props.open,\n }));\n\n const isDropdownOpen = computed(() => props.open && !props.disabled);\n\n return {\n // Values\n conditionalClasses,\n isDropdownOpen,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown-small-textbox.scss\" />\n","import { computed, ref, Ref } from 'vue';\nimport { BentoSearchBarItem } from './search-bar.types';\n\n/**\n * Filters an array {@see BentoSearchBarData} containing elements of type {@see BentoSearchBarItem}\n * by the {@param searchTerm}.\n *\n * @param {Ref<String>} searchTerm - Text that satisfies the search criteria.\n * @param {Ref<BentoSearchBarData>} data - Array to be filtered by {@param searchTerm}\n * @returns {Ref<BentoSearchBarData>} New instance of the array filtered by the {@param searchTerm} text\n */\nexport function useSearchBarFilter<T extends BentoSearchBarItem>(searchTerm: Ref<string>, data: Ref<T[]>) {\n const searchTermRef = ref(searchTerm);\n const dataRef = ref(data);\n\n const filterInputData = computed(() => {\n const searchTermLowerCased = searchTermRef.value.toLocaleLowerCase();\n return dataRef.value.filter(({ label }) => label.toLowerCase().includes(searchTermLowerCased));\n });\n\n return filterInputData;\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=\"closeOpenedDropdown\" class=\"b-dropdown\">\n <div v-if=\"label\" :id=\"labelId\" class=\"b-dropdown__label\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\" stronger>{{ label }}</bento-typography>\n <bento-typography v-if=\"optional\" class=\"b-dropdown__label-requirement\" :el=\"BentoTypographyElement.SPAN\">\n ({{ $t('optional') }})\n </bento-typography>\n <bento-typography v-if=\"required\" class=\"b-dropdown__label-requirement\" :el=\"BentoTypographyElement.SPAN\">\n ({{ $t('required') }})\n </bento-typography>\n </div>\n <component\n :is=\"size\"\n ref=\"inputContainerRef\"\n v-model=\"searchTerm\"\n :additional-items-selected=\"additionalItemsSelected\"\n :ariaControls=\"dropdownOptionsContainerId\"\n :ariaExpanded=\"isDropdownOpen\"\n :aria-labelledby=\"label ? labelId : null\"\n :aria-label=\"ariaLabel ? ariaLabel : null\"\n :disabled=\"disabled\"\n :display-value=\"displayValue\"\n :dynamic-filtering=\"dynamicFiltering\"\n :is-invalid=\"error\"\n :multiple=\"multiple\"\n :open=\"isDropdownOpen\"\n :selected-value-item=\"size === BentoDropdownSize.DEFAULT ? selectedValueItem : undefined\"\n :show-slot-content-in-multiple=\"showSlotContentInMultiple\"\n @open=\"toggleDropdown\"\n @close=\"toggleDropdown\"\n >\n <template v-for=\"(_, slot) of $scopedSlots || $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </component>\n <bento-dropdown-options-container\n v-if=\"inputContainerRef\"\n :id=\"dropdownOptionsContainerId\"\n :aria-label=\"ariaLabel\"\n :disabled=\"disabled\"\n :input-size=\"size\"\n :is-option-disabled=\"isOptionDisabled\"\n :items=\"filteredItems\"\n :multiple=\"multiple\"\n :open=\"isDropdownOpen\"\n :selected-value=\"value\"\n :searching=\"isSearching\"\n :target-element=\"inputContainerRef\"\n @select=\"onOptionSelected\"\n @close=\"toggleDropdown\"\n >\n <template v-for=\"(_, slot) of $scopedSlots || $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-dropdown-options-container>\n <bento-typography\n v-if=\"description\"\n class=\"b-dropdown__description\"\n :class=\"descriptionConditionalClasses\"\n :el=\"BentoTypographyElement.SPAN\"\n >\n {{ description }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRef } from 'vue';\n import type {\n BentoListboxIsOptionDisabled,\n BentoListboxMultiSelectValue,\n BentoListboxOptions,\n BentoListboxSelectedValue,\n } from '@/types';\n import { BentoDropdownOptionsContainer } from './components/dropdown-options-container';\n import { BentoClickOutsideDirective } from '@/directives/click-outside';\n import { generateUid } from '@/utils/ts/unique-id';\n import { DropdownInputDefault, DropdownInputSmall } from './components';\n import { useSearchBarFilter } from '@/components/search-bar/useSearchBarDataFilter';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { BentoDropdownSize } from './dropdown.types';\n import messages from './messages.json';\n\n /**\n * A Dropdown shows a selected option's.\n * Use a dropdown when you want users to select options\n * from a list of pre-defined options.\n *\n * @example\n * import { BentoDropdown } from '@adyen/bento-vue2';\n * import type { BentoDropdownOptions } from '@adyen/bento-vue2'\n *\n * export default {\n * components: { BentoDropdown },\n * template: `\n * <bento-dropdown\n * v-model=\"selectedValue\"\n * :disabled=\"false\"\n * :multiple=\"true\"\n * :isOptionsDisabled=\"option => option.value === 2\"\n * :items=\"options\"\n * />\n * `,\n * setup() {\n * const selectedValue = ref(2) // Default value\n * const options: BentoDropdownOptions = [\n * { label: 'Option 1', value: 1 },\n * { label: 'Option 2', value: 2 },\n * ];\n * return { options, selectedValue };\n * }\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'b-dropdown',\n components: {\n BentoDropdownOptionsContainer,\n BentoTypography,\n DropdownInputDefault,\n DropdownInputSmall,\n },\n directives: { BentoClickOutsideDirective },\n inheritAttrs: false,\n props: {\n /**\n * Defines a string value that labels an interactive element.\n */\n ariaLabel: { type: String, default: null },\n\n /**\n * Disables dropdown functionality.\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Text that appears in the form control when it has no value set\n */\n placeholder: {\n type: String,\n default: null,\n },\n\n /**\n * Sets the possibility to type into the textbox.\n */\n dynamicFiltering: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Highlights the dropdown in an erroneous state.\n */\n error: { type: Boolean, default: false },\n\n /**\n * Text that is displayed as a label above the element.\n */\n label: { type: String, default: null },\n\n /**\n * Descriptive supporting text visbile underneath the dropdown.\n */\n description: { type: String, default: null },\n\n /**\n * Function that dertermines which options are disabled from interaction.\n *\n * @type {BentoListboxIsOptionDisabled}\n * @param {BentoListboxOptionItem} option - Dropdown option object\n * @param {string} option.label - Option's label text\n * @param {string|number} option.value - Option's value\n * @param {unknown} option.data - Option's extra data to be passed to the default slot\n */\n isOptionDisabled: {\n type: Function as PropType<BentoListboxIsOptionDisabled>,\n default: undefined,\n },\n\n /**\n * The option elements to populate the dropdown with.\n * It must be an array of {@see BentoListboxOptionItem }\n * * @property {string} value.label - Text to be displayed in the option\n * * @property {string,number} value.value - Value of the option\n */\n items: {\n type: Array as PropType<BentoListboxOptions>,\n default: () => [],\n },\n\n /*\n * If enabled, the user will be able to select multiple items.\n */\n multiple: { type: Boolean, default: false },\n\n /**\n * Highlights the dropdown is optional.\n */\n optional: { type: Boolean, default: false },\n\n /**\n * Highlights the dropdown is required.\n */\n required: { type: Boolean, default: false },\n\n /**\n * Toggles whether to use the slot content select items shown in the textbox in multiple mode.\n */\n showSlotContentInMultiple: { type: Boolean, default: false },\n\n /**\n * Dropdown input size\n * @see BentoDropdownSize\n */\n size: {\n type: String as PropType<BentoDropdownSize>,\n default: BentoDropdownSize.DEFAULT,\n validator: (value: BentoDropdownSize) => Object.values(BentoDropdownSize).includes(value),\n },\n\n /**\n * The `input` value.\n * Providing an empty string will select no options.\n * Set to an empty string `''` if you don't want any of the available options to be selected.\n */\n value: {\n type: [String, Number, Array] as PropType<BentoListboxSelectedValue>,\n default: null,\n },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const inputContainerRef = ref(null);\n const isDropdownOpen = ref(false);\n const dropdownOptionsContainerId = generateUid('bento-dropdown-options-container');\n const labelId = generateUid('dropdown-label');\n\n // Description styles\n const descriptionConditionalClasses = computed(() => ({\n 'b-dropdown__description--error': props.error,\n }));\n\n // Filtering\n const searchTerm = ref('');\n const items = toRef(props, 'items');\n const filteredItems = useSearchBarFilter(searchTerm, items);\n const isSearching = computed(() => props.dynamicFiltering && !!searchTerm.value);\n\n const displayValue = computed(() => {\n if (!props.multiple) {\n const selectedItem = props.items.find(({ value }) => value === props?.value);\n return selectedItem?.label || props.placeholder || null;\n }\n\n return props?.value\n ? (props.value as Array<string | number>)\n .map(selectedValue => {\n const { label } = props.items.find(({ value }) => value === selectedValue);\n return label;\n })\n .join(', ')\n : props.placeholder || null;\n });\n\n const selectedValueItem = computed(() =>\n props?.multiple\n ? props.items.filter(\n ({ value }) => props?.value && (props?.value as BentoListboxMultiSelectValue).includes(value)\n )\n : props.items.find(({ value }) => value === props?.value)\n );\n\n const additionalItemsSelected = computed(() => {\n if (props.multiple) {\n return (props?.value as BentoListboxMultiSelectValue)?.length;\n }\n\n return null;\n });\n\n const toggleDropdown = () => {\n isDropdownOpen.value = !isDropdownOpen.value;\n\n // Clear search\n if (isSearching.value) {\n searchTerm.value = '';\n }\n };\n\n const closeOpenedDropdown = () => {\n if (isSearching.value) {\n searchTerm.value = '';\n }\n\n if (isDropdownOpen.value) {\n isDropdownOpen.value = false;\n }\n };\n\n const onOptionSelected = (selectedValue: BentoListboxSelectedValue) => {\n // Clear and close the dropdown on single selection\n if (!props.multiple) {\n searchTerm.value = '';\n isDropdownOpen.value = false;\n }\n\n emit('input', selectedValue);\n };\n\n return {\n // Values\n additionalItemsSelected,\n isDropdownOpen,\n displayValue,\n dropdownOptionsContainerId,\n filteredItems,\n isSearching,\n searchTerm,\n labelId,\n selectedValueItem,\n descriptionConditionalClasses,\n\n // Refs\n inputContainerRef,\n\n // Events\n closeOpenedDropdown,\n toggleDropdown,\n onOptionSelected,\n\n // Enums\n BentoTypographyElement,\n BentoDropdownSize,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown.scss\" />\n","<template>\n <div>\n <bento-dropdown v-slot=\"{ label, data }\" v-bind=\"$props\" :items=\"dropdownItems\" @input=\"onInput\">\n <bento-avatar :username=\"label\" :src=\"data\" />\n </bento-dropdown>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoListboxSelectedValue } from '@/types';\n import { BentoAvatarListboxOptions } from './dropdown-avatar.types';\n import { BentoAvatar } from '@/internal';\n import BentoDropdown from '@/components/dropdown/dropdown.vue';\n\n /**\n * A Avatar Dropdown showing a selectable list of countries.\n *\n * @example\n * import { BentoDropdownAvatar } from '@adyen/bento-vue2';\n * import type { BentoAvatarListboxOptions } from '@adyen/bento-vue2'\n *\n * export default {\n * components: { BentoDropdownAvatar },\n * template: `\n * <bento-dropdown-avatar\n * v-model=\"selectedValue\"\n * :disabled=\"false\"\n * :multiple=\"true\"\n * :isOptionsDisabled=\"option => option.value === 2\"\n * :items=\"options\"\n * />\n * `,\n * setup() {\n * const selectedValue = ref('user-id-1') // Default value\n * const options: BentoAvatarListboxOptions = [\n * { label: 'User 1', value: 'user-id-1' },\n * { label: 'User 2', value: 'user-id-2', src: 'image-source.jpeg' },\n * ];\n * return { options, selectedValue };\n * }\n * }\n */\n export default defineComponent({\n name: 'bento-dropdown-avatar',\n components: {\n BentoDropdown,\n BentoAvatar,\n },\n inheritAttrs: false,\n props: {\n ...BentoDropdown.props,\n /**\n * The option elements to populate the avatar dropdown with.\n * It must be an array of {@see BentoAvatarListboxOptions }\n * * @property {string} value.label - Text to be displayed in the option.\n * * @property {string,number} value.value - Value of the option.\n * * @property {string} value.src - Image source of the avatar image.\n */\n items: {\n type: Array as PropType<BentoAvatarListboxOptions>,\n default: () => [],\n },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const onInput = (selectedValue: BentoListboxSelectedValue) => emit('input', selectedValue);\n\n const dropdownItems = computed(() =>\n props.items.map(({ value, label, src }) => ({ value, label, data: src }))\n );\n\n return {\n // Values\n dropdownItems,\n\n // Methods\n onInput,\n };\n },\n });\n</script>\n","import { MaybeRef } from '@/types';\nimport { computed, ref } from 'vue';\nimport messages from './messages.json';\n\n/**\n * Maps an ISO code to the country's translated capital city.\n *\n * @returns a translated country name\n */\nexport const useCountryCapital = (code: MaybeRef<string>, locale: MaybeRef<string>, useFallback = true) => {\n const countryCode = ref(code);\n const languageLocale = ref(locale);\n return computed(() => {\n const normalizedCode = countryCode?.value?.toUpperCase();\n const translatedCountryName =\n messages[languageLocale.value]?.[normalizedCode] ??\n messages['en-US']?.[normalizedCode] ??\n (useFallback ? normalizedCode : null);\n return translatedCountryName;\n });\n};\n\nexport default useCountryCapital;\n","import { ref, Ref, watch } from 'vue';\n\n/**\n * Dynamically retrieves the country flag SVG from the @adyen/ui-assets-flag-icons package.\n *\n * @param code 2 character code in ISO 3166-1 alpha-2 format\n * @param useFallback if fallback flag should be used in case of error\n * @returns\n */\nexport const useCountryFlag = (code: Ref<string>, useFallback = true) => {\n const countryCode = ref(code);\n const flagSrc = ref<string>();\n\n watch(\n countryCode,\n // eslint-disable-next-line consistent-return\n async newCountryCode => {\n if (newCountryCode == null) {\n return null;\n }\n try {\n // NOTE: must use the '/dist/svg' so the 'vite-plugin-dynamic-import' can understand the path\n const flag = await import(`@adyen/ui-assets-flag-icons/dist/svg/${newCountryCode.toLowerCase()}.svg`);\n flagSrc.value = flag?.default;\n } catch (e) {\n if (useFallback) {\n const unknownFlag = await import('@adyen/ui-assets-flag-icons/svg/zz.svg');\n flagSrc.value = unknownFlag.default;\n } else {\n flagSrc.value = null;\n }\n }\n },\n { immediate: true }\n );\n\n return flagSrc;\n};\n","import { computed, ref } from 'vue';\nimport messages from './messages.json';\nimport { MaybeRef } from '@/types';\n\n/**\n * Maps an ISO code to it's translated country name.\n *\n * @returns a translated country name\n */\nexport const useCountryName = (code: MaybeRef<string>, locale: MaybeRef<string>, useFallback = true) => {\n const countryCode = ref(code);\n const languageLocale = ref(locale);\n\n return computed(() => {\n const normalizedCode = countryCode?.value?.toUpperCase();\n const translatedCountryName =\n messages[languageLocale.value]?.[normalizedCode] ??\n messages['en-US']?.[normalizedCode] ??\n (useFallback ? normalizedCode : null);\n return translatedCountryName;\n });\n};\n","import { MaybeRef } from '@/types';\nimport { computed, ref } from 'vue';\nimport countryISOToPhoneCodes from './country-to-phone-codes.json';\n\n/**\n * Retrieves a country's phone number code.\n *\n * @param countryCode 2 character code in ISO 3166-1 alpha-2 format\n * @returns\n */\nexport const useCountryPhoneCode = (countryCode: MaybeRef<string>) => {\n const code = ref(countryCode);\n\n return computed(() => countryISOToPhoneCodes?.[code.value]?.join('/'));\n};\n\nexport default useCountryPhoneCode;\n","export enum BentoCountryVariant {\n ISO = 'iso',\n NAME = 'name',\n PHONE_CODE = 'phone_code',\n CAPITAL = 'capital',\n CUSTOM = 'custom',\n}\nexport enum BentoCountryCode {\n BD = 'BD',\n BE = 'BE',\n BF = 'BF',\n BG = 'BG',\n BA = 'BA',\n BB = 'BB',\n WF = 'WF',\n BL = 'BL',\n BM = 'BM',\n BN = 'BN',\n BO = 'BO',\n BH = 'BH',\n BI = 'BI',\n BJ = 'BJ',\n BT = 'BT',\n JM = 'JM',\n BV = 'BV',\n BW = 'BW',\n WS = 'WS',\n BQ = 'BQ',\n BR = 'BR',\n BS = 'BS',\n JE = 'JE',\n BY = 'BY',\n BZ = 'BZ',\n RU = 'RU',\n RW = 'RW',\n RS = 'RS',\n TL = 'TL',\n RE = 'RE',\n TM = 'TM',\n TJ = 'TJ',\n RO = 'RO',\n TK = 'TK',\n GW = 'GW',\n GU = 'GU',\n GT = 'GT',\n GS = 'GS',\n GR = 'GR',\n GQ = 'GQ',\n GP = 'GP',\n JP = 'JP',\n GY = 'GY',\n GG = 'GG',\n GF = 'GF',\n GE = 'GE',\n GD = 'GD',\n GB = 'GB',\n GA = 'GA',\n SV = 'SV',\n GN = 'GN',\n GM = 'GM',\n GL = 'GL',\n GI = 'GI',\n GH = 'GH',\n OM = 'OM',\n TN = 'TN',\n JO = 'JO',\n HR = 'HR',\n HT = 'HT',\n HU = 'HU',\n HK = 'HK',\n HN = 'HN',\n HM = 'HM',\n VE = 'VE',\n PR = 'PR',\n PS = 'PS',\n PW = 'PW',\n PT = 'PT',\n SJ = 'SJ',\n PY = 'PY',\n IQ = 'IQ',\n PA = 'PA',\n PF = 'PF',\n PG = 'PG',\n PE = 'PE',\n PK = 'PK',\n PH = 'PH',\n PN = 'PN',\n PL = 'PL',\n PM = 'PM',\n ZM = 'ZM',\n EH = 'EH',\n EE = 'EE',\n EG = 'EG',\n ZA = 'ZA',\n EC = 'EC',\n IT = 'IT',\n VN = 'VN',\n SB = 'SB',\n ET = 'ET',\n SO = 'SO',\n ZW = 'ZW',\n SA = 'SA',\n ES = 'ES',\n ER = 'ER',\n ME = 'ME',\n MD = 'MD',\n MG = 'MG',\n MF = 'MF',\n MA = 'MA',\n MC = 'MC',\n UZ = 'UZ',\n MM = 'MM',\n ML = 'ML',\n MO = 'MO',\n MN = 'MN',\n MH = 'MH',\n MK = 'MK',\n MU = 'MU',\n MT = 'MT',\n MW = 'MW',\n MV = 'MV',\n MQ = 'MQ',\n MP = 'MP',\n MS = 'MS',\n MR = 'MR',\n IM = 'IM',\n UG = 'UG',\n TZ = 'TZ',\n MY = 'MY',\n MX = 'MX',\n IL = 'IL',\n FR = 'FR',\n IO = 'IO',\n SH = 'SH',\n FI = 'FI',\n FJ = 'FJ',\n FK = 'FK',\n FM = 'FM',\n FO = 'FO',\n NI = 'NI',\n NL = 'NL',\n NO = 'NO',\n NA = 'NA',\n VU = 'VU',\n NC = 'NC',\n NE = 'NE',\n NF = 'NF',\n NG = 'NG',\n NZ = 'NZ',\n NP = 'NP',\n NR = 'NR',\n NU = 'NU',\n CK = 'CK',\n XK = 'XK',\n CI = 'CI',\n CH = 'CH',\n CO = 'CO',\n CN = 'CN',\n CM = 'CM',\n CL = 'CL',\n CC = 'CC',\n CA = 'CA',\n CG = 'CG',\n CF = 'CF',\n CD = 'CD',\n CZ = 'CZ',\n CY = 'CY',\n CX = 'CX',\n CR = 'CR',\n CW = 'CW',\n CV = 'CV',\n CU = 'CU',\n SZ = 'SZ',\n SY = 'SY',\n SX = 'SX',\n KG = 'KG',\n KE = 'KE',\n SS = 'SS',\n SR = 'SR',\n KI = 'KI',\n KH = 'KH',\n KN = 'KN',\n KM = 'KM',\n ST = 'ST',\n SK = 'SK',\n KR = 'KR',\n SI = 'SI',\n KP = 'KP',\n KW = 'KW',\n SN = 'SN',\n SM = 'SM',\n SL = 'SL',\n SC = 'SC',\n KZ = 'KZ',\n KY = 'KY',\n SG = 'SG',\n SE = 'SE',\n SD = 'SD',\n DO = 'DO',\n DM = 'DM',\n DJ = 'DJ',\n DK = 'DK',\n VG = 'VG',\n DE = 'DE',\n YE = 'YE',\n DZ = 'DZ',\n US = 'US',\n UY = 'UY',\n YT = 'YT',\n UM = 'UM',\n LB = 'LB',\n LC = 'LC',\n LA = 'LA',\n TV = 'TV',\n TW = 'TW',\n TT = 'TT',\n TR = 'TR',\n LK = 'LK',\n LI = 'LI',\n LV = 'LV',\n TO = 'TO',\n LT = 'LT',\n LU = 'LU',\n LR = 'LR',\n LS = 'LS',\n TH = 'TH',\n TF = 'TF',\n TG = 'TG',\n TD = 'TD',\n TC = 'TC',\n LY = 'LY',\n VA = 'VA',\n VC = 'VC',\n AE = 'AE',\n AD = 'AD',\n AG = 'AG',\n AF = 'AF',\n AI = 'AI',\n VI = 'VI',\n IS = 'IS',\n IR = 'IR',\n AM = 'AM',\n AL = 'AL',\n AO = 'AO',\n AQ = 'AQ',\n AS = 'AS',\n AR = 'AR',\n AU = 'AU',\n AT = 'AT',\n AW = 'AW',\n IN = 'IN',\n AX = 'AX',\n AZ = 'AZ',\n IE = 'IE',\n ID = 'ID',\n UA = 'UA',\n QA = 'QA',\n MZ = 'MZ',\n UNKNOWN = 'ZZ',\n}\n","<template>\n <div class=\"b-country\">\n <div class=\"b-country__flag\">\n <img\n v-if=\"flagIconSrc\"\n :alt=\"$t('countryFlag', { countryName }).toString()\"\n class=\"b-country__flag-icon\"\n :src=\"flagIconSrc\"\n />\n <unknown-flag-icon v-else aria-hidden=\"true\" />\n </div>\n <div class=\"b-country__label\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\">{{ countryLabel }}</bento-typography>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType, ref, toRefs, watch } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { useCountryCapital, useCountryFlag, useCountryName, useCountryPhoneCode } from './composables';\n import { BentoCountryCode, BentoCountryVariant } from './country.types';\n import { useI18n } from '@/utils/ts/i18n';\n import UnknownFlagIcon from '@adyen/ui-assets-flag-icons/vue/zz';\n import messages from './messages.json';\n\n /**\n * A component to display a country's flag and label.\n * The label comes in four variates: iso code, country name, phone number code or capital city.\n *\n * @example\n * import { BentoCountry, BentoCountryCode } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoCountry },\n * template: `\n * <bento-country :code=\"BentoCountryCode.NL\" />\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-country',\n components: { BentoTypography, UnknownFlagIcon },\n inheritAttrs: false,\n props: {\n /**\n * Two character country code ([ISO 3166-1 alpha-2 format](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).\n */\n code: {\n type: String as PropType<BentoCountryCode>,\n default: BentoCountryCode.UNKNOWN,\n },\n\n /**\n * Custom label text for next to the flag.\n */\n label: {\n type: String,\n default: undefined,\n },\n\n /**\n * Which label variant to display.\n * @values iso, name, phone_code, capital\n */\n variant: {\n type: String as PropType<BentoCountryVariant>,\n default: BentoCountryVariant.NAME,\n validator: (value: BentoCountryVariant) => Object.values(BentoCountryVariant).includes(value),\n },\n },\n\n setup(props) {\n const { code, variant, label: customLabel } = toRefs(props);\n const { locale } = useI18n({ messages });\n const flagIconSrc = useCountryFlag(code);\n const countryName = useCountryName(code, locale);\n const countryLabel = ref();\n\n const getLabel = () => {\n switch (variant.value) {\n case BentoCountryVariant.ISO:\n return code;\n case BentoCountryVariant.PHONE_CODE:\n return useCountryPhoneCode(code);\n case BentoCountryVariant.CAPITAL:\n // TODO: do we need an API OR get a longer translations list???\n // Need to be able TRANSLATE as well as map...\n return useCountryCapital(code, locale);\n case BentoCountryVariant.CUSTOM:\n return customLabel;\n case BentoCountryVariant.NAME:\n default:\n return countryName;\n }\n };\n\n // Update label if variant prop changes\n watch(\n [variant, locale, code],\n () => {\n countryLabel.value = getLabel().value;\n },\n { immediate: true }\n );\n\n return {\n // Values\n flagIconSrc,\n countryName,\n countryLabel,\n\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./country.scss\" />\n","import { computed, ComputedRef, Ref } from 'vue';\nimport { BentoCountryVariant, useCountryCapital, useCountryName, useCountryPhoneCode } from '@/components/country';\nimport { BentoCountryListboxOptions } from '../dropdown-country.types';\nimport { useI18n } from '@/utils/ts/i18n';\nimport { BentoListboxOptions } from '@/types';\n\nexport const useCountryItems = (variant: Ref<BentoCountryVariant>, items: Ref<BentoCountryListboxOptions>) => {\n const { locale } = useI18n(undefined, true);\n\n return computed(() => {\n switch (variant.value) {\n case BentoCountryVariant.CUSTOM:\n return items.value;\n case BentoCountryVariant.PHONE_CODE:\n return items.value.map(({ value }) => ({\n value,\n label: useCountryPhoneCode(value).value,\n }));\n case BentoCountryVariant.CAPITAL:\n return items.value.map(({ value }) => ({\n value,\n label: useCountryCapital(value, locale).value,\n }));\n case BentoCountryVariant.NAME:\n default:\n return items.value.map(({ value }) => ({ value, label: useCountryName(value, locale).value }));\n }\n }) as ComputedRef<BentoListboxOptions>;\n};\n","<template>\n <div>\n <bento-dropdown v-slot=\"{ value, label }\" v-bind=\"$props\" :items=\"countryItems\" @input=\"onInput\">\n <bento-country :code=\"value\" :label=\"label\" :variant=\"BentoCountryVariant.CUSTOM\" />\n </bento-dropdown>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType, toRefs } from 'vue';\n import { BentoCountryListboxOptions } from './dropdown-country.types';\n import { BentoListboxSelectedValue } from '@/types';\n import { BentoCountry, BentoCountryVariant } from '@/components/country';\n import { useCountryItems } from './composables/useCountryItems';\n import BentoDropdown from '@/components/dropdown/dropdown.vue';\n\n /**\n * A Country Dropdown showing a selectable list of countries.\n *\n * @example\n * import { BentoDropdownCountry, BentoCountryCode } from '@adyen/bento-vue2';\n * import type { BentoCountryListboxOptions } from '@adyen/bento-vue2'\n *\n * export default {\n * components: { BentoDropdown },\n * template: `\n * <bento-dropdown-country\n * v-model=\"selectedValue\"\n * :disabled=\"false\"\n * :multiple=\"true\"\n * :isOptionsDisabled=\"option => option.value === 2\"\n * :items=\"options\"\n * />\n * `,\n * setup() {\n * const selectedValue = ref(BentoCountryCode.NL) // Default value\n * const options: BentoCountryListboxOptions = [\n * { label: 'Option 1', value: BentoCountryCode.NL },\n * { label: 'Option 2', value: BentoCountryCode.BE },\n * ];\n * return { options, selectedValue };\n * }\n * }\n */\n export default defineComponent({\n name: 'b-dropdown-country',\n components: {\n BentoDropdown,\n BentoCountry,\n },\n inheritAttrs: false,\n props: {\n ...BentoDropdown.props,\n /**\n * The option elements to populate the country dropdown with.\n * It must be an array of {@see BentoCountryListboxOptions }\n * * @property {string} value.label - Text to be displayed in the option\n * * @property {BentoCountryCode} value.value - Country code of the option\n */\n items: {\n type: Array as PropType<BentoCountryListboxOptions>,\n default: () => [],\n },\n\n /**\n * Which label variant to display.\n * @values iso, name, phone_code, capital\n */\n variant: {\n type: String as PropType<BentoCountryVariant>,\n default: BentoCountryVariant.CUSTOM,\n validator: (value: BentoCountryVariant) => Object.values(BentoCountryVariant).includes(value),\n },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const { variant, items } = toRefs(props);\n const onInput = (selectedValue: BentoListboxSelectedValue) => emit('input', selectedValue);\n\n const countryItems = useCountryItems(variant, items);\n\n return {\n // Values\n countryItems,\n\n // Methods\n onInput,\n\n // Enums\n BentoCountryVariant,\n };\n },\n });\n</script>\n","<template>\n <bento-dropdown v-slot=\"slotProps\" v-bind=\"$props\" @input=\"onInput\">\n <listbox-option-tag :option=\"slotProps\" />\n </bento-dropdown>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import type { BentoCurrencyListboxOptions } from './dropdown-currency.types';\n import type { BentoListboxSelectedValue } from '@/types';\n import { ListboxOptionTag } from '@/internal';\n import BentoDropdown from '@/components/dropdown/dropdown.vue';\n\n /**\n * A Currency Dropdown showing a selectable list of currencies.\n *\n * @example\n * import { BentoDropdownCountry, BentoCountryCode } from '@adyen/bento-vue2';\n * import type { BentoCountryListboxOptions } from '@adyen/bento-vue2'\n *\n * export default {\n * components: { BentoDropdown },\n * template: `\n * <bento-dropdown-currency\n * v-model=\"selectedValue\"\n * :disabled=\"false\"\n * :multiple=\"true\"\n * :isOptionsDisabled=\"option => option.value === 2\"\n * :items=\"options\"\n * />\n * `,\n * setup() {\n * const selectedValue = ref(BentoCountryCode.NL) // Default value\n * const options: BentoCountryListboxOptions = [\n * { label: 'Option 1', value: BentoCountryCode.NL },\n * { label: 'Option 2', value: BentoCountryCode.BE },\n * ];\n * return { options, selectedValue };\n * }\n * }\n */\n export default defineComponent({\n name: 'b-dropdown-currency',\n components: {\n BentoDropdown,\n ListboxOptionTag,\n },\n inheritAttrs: false,\n props: {\n ...BentoDropdown.props,\n /**\n * The option elements to populate the country dropdown with.\n * It must be an array of {@see BentoCurrencyListboxOptions }\n * * @property {string} value.label - Text to be displayed in the option\n * * @property {BentoCurrencyISOCode} value.code - Currency ISO code of the option\n */\n items: {\n type: Array as PropType<BentoCurrencyListboxOptions>,\n default: () => [],\n },\n },\n emits: ['input'],\n setup(_props, { emit }) {\n const onInput = (selectedValue: BentoListboxSelectedValue) => emit('input', selectedValue);\n\n return {\n // Methods\n onInput,\n };\n },\n });\n</script>\n","/**\n * A collection of all payment method types.\n * Directly map to payment icon SVG name.\n */\nexport enum BentoPaymentMethodType {\n CTP = 'CTP',\n P24_LOGO = 'P24_logo',\n TOUCH__N_GO = \"Touch 'N Go\",\n ABSA = 'Absa',\n ACB = 'Acb',\n ACCEL = 'Accel',\n ACH = 'Ach',\n ACHCOLOMBIA = 'Achcolombia',\n ADYEN = 'Adyen',\n ADYEN_TEST_VOUCHER = 'Adyen_test_voucher',\n AFFIN = 'Affin',\n AFFIRM = 'Affirm',\n AFTERPAY_B2B = 'Afterpay_b2b',\n AFTERPAY_DEFAULT = 'Afterpay_default',\n AFTERPAY_DIRECTDEBIT = 'Afterpay_directdebit',\n AFTERPAYTOUCH = 'Afterpaytouch',\n AFTERPAYTOUCH_POS = 'Afterpaytouch_pos',\n AGRIBANK = 'Agribank',\n AIRBANK = 'Airbank',\n ALASKA_OPTION = 'Alaska_option',\n ALASKAOPTION = 'Alaskaoption',\n ALBELLIGIFTCARD = 'Albelligiftcard',\n ALELO = 'Alelo',\n ALFA_BANK = 'Alfa_bank',\n ALFABANK = 'Alfabank',\n ALFAMART = 'Alfamart',\n ALIPAY = 'Alipay',\n ALIPAY_CONNECT = 'Alipay_connect',\n ALIPAY_HK = 'Alipay_hk',\n ALIPAY_WAP = 'Alipay_wap',\n ALPHA_BANK = 'Alpha_bank',\n AMAZONPAY = 'Amazonpay',\n AMBANK = 'Ambank',\n AMEX = 'Amex',\n AMEX_AMAZONPAY = 'Amex_amazonpay',\n AMEX_APPLEPAY = 'Amex_applepay',\n AMEX_SAMSUNGPAY = 'Amex_samsungpay',\n ANDROIDPAY = 'Androidpay',\n APPLEPAY = 'Applepay',\n ARGENCARD = 'Argencard',\n ASIAPAY = 'Asiapay',\n ASIAPAY_CIMBCLICK = 'Asiapay_cimbclick',\n ASIAPAY_M2U = 'Asiapay_m2u',\n ASIAPAY_ONEPAY = 'Asiapay_onepay',\n ASIAPAY_UNIONPAY = 'Asiapay_unionpay',\n ATH = 'Ath',\n ATM_BERSAMA = 'Atm_bersama',\n ATOME = 'Atome',\n AURA = 'Aura',\n AUTOPAY = 'Autopay',\n B2S = 'B2s',\n BABYGIFTCARD = 'Babygiftcard',\n BACNET = 'Bacnet',\n BACS = 'Bacs',\n BALANCEPLATFORM = 'Balanceplatform',\n BALOTO = 'Baloto',\n BANAMEX = 'Banamex',\n BANCONACIONAL = 'BancoNacional',\n BANCO_BRADESCO = 'Banco_bradesco',\n BANCODOBRASIL = 'Bancodobrasil',\n BANESE = 'Banese',\n BANESE_CARD_CREDIT = 'Banese_card_credit',\n BANESE_CARD_DEBIT = 'Banese_card_debit',\n BANESE_CARD_PREPAID = 'Banese_card_prepaid',\n BANGKOK_BANK = 'Bangkok_bank',\n BANK = 'Bank',\n BANKTRANSFER = 'BankTransfer',\n BANKTRANSFER_AT = 'BankTransfer_AT',\n BANKTRANSFER_AU = 'BankTransfer_AU',\n BANKTRANSFER_BE = 'BankTransfer_BE',\n BANKTRANSFER_BG = 'BankTransfer_BG',\n BANKTRANSFER_CH = 'BankTransfer_CH',\n BANKTRANSFER_CY = 'BankTransfer_CY',\n BANKTRANSFER_DE = 'BankTransfer_DE',\n BANKTRANSFER_DK = 'BankTransfer_DK',\n BANKTRANSFER_ES = 'BankTransfer_ES',\n BANKTRANSFER_FI = 'BankTransfer_FI',\n BANKTRANSFER_FR = 'BankTransfer_FR',\n BANKTRANSFER_GB = 'BankTransfer_GB',\n BANKTRANSFER_HU = 'BankTransfer_HU',\n BANKTRANSFER_IBAN = 'BankTransfer_IBAN',\n BANKTRANSFER_IE = 'BankTransfer_IE',\n BANKTRANSFER_IT = 'BankTransfer_IT',\n BANKTRANSFER_LU = 'BankTransfer_LU',\n BANKTRANSFER_MT = 'BankTransfer_MT',\n BANKTRANSFER_MX = 'BankTransfer_MX',\n BANKTRANSFER_NL = 'BankTransfer_NL',\n BANKTRANSFER_NO = 'BankTransfer_NO',\n BANKTRANSFER_PL = 'BankTransfer_PL',\n BANKTRANSFER_PT = 'BankTransfer_PT',\n BANKTRANSFER_SE = 'BankTransfer_SE',\n BANKTRANSFER_SK = 'BankTransfer_SK',\n BANK_RU = 'Bank_ru',\n BANKAXEPT = 'Bankaxept',\n BANKISLAM = 'Bankislam',\n BANORTE = 'Banorte',\n BAPRO = 'Bapro',\n BCA = 'Bca',\n BCMC = 'Bcmc',\n BCMC_MOBILE = 'Bcmc_mobile',\n BCMC_MOBILE_QR = 'Bcmc_mobile_QR',\n BCMC_MOBILE_APP = 'Bcmc_mobile_app',\n BCP = 'Bcp',\n BEAUTYCADEAUKAART = 'Beautycadeaukaart',\n BENEFIT = 'Benefit',\n BIDV = 'Bidv',\n BIGC = 'Bigc',\n BIJCADEAUCARD = 'Bijcadeaucard',\n BIJCARD = 'Bijcard',\n BIJENKORF = 'Bijenkorf',\n BIJPOINTS = 'Bijpoints',\n BIJVOUCHER = 'Bijvoucher',\n BILL99 = 'Bill99',\n BILLDESK_BILLDESK_162 = 'Billdesk/billdesk_162',\n BILLDESK_BILLDESK_CUB = 'Billdesk/billdesk_cub',\n BILLDESK_BILLDESK_HDF = 'Billdesk/billdesk_hdf',\n BILLDESK_BILLDESK_ICI = 'Billdesk/billdesk_ici',\n BILLDESK_BILLDESK_ONLINE = 'Billdesk/billdesk_online',\n BILLDESK_BILLDESK_PNB = 'Billdesk/billdesk_pnb',\n BILLDESK_BILLDESK_SBI = 'Billdesk/billdesk_sbi',\n BILLDESK_BILLDESK_UPI = 'Billdesk/billdesk_upi',\n BILLDESK_BILLDESK_UTI = 'Billdesk/billdesk_uti',\n BILLDESK_BILLDESK_WALLET = 'Billdesk/billdesk_wallet',\n BILLDESK_162 = 'Billdesk_162',\n BILLDESK_CUB = 'Billdesk_cub',\n BILLDESK_HDF = 'Billdesk_hdf',\n BILLDESK_ICI = 'Billdesk_ici',\n BILLDESK_ONLINE = 'Billdesk_online',\n BILLDESK_SBI = 'Billdesk_sbi',\n BILLDESK_UPI = 'Billdesk_upi',\n BILLDESK_UTI = 'Billdesk_uti',\n BILLDESK_WALLET = 'Billdesk_wallet',\n BITCOIN = 'Bitcoin',\n BLIK = 'Blik',\n BLOEMENGIFTCARD = 'Bloemengiftcard',\n BNI = 'Bni',\n BOKU = 'Boku',\n BOLETO = 'Boleto',\n BOLETOBANCARIO = 'Boletobancario',\n BOLETOBANCARIO_BANCODOBRASIL = 'Boletobancario_bancodobrasil',\n BOLETOBANCARIO_BRADESCO = 'Boletobancario_bradesco',\n BOLETOBANCARIO_HSBC = 'Boletobancario_hsbc',\n BOLETOBANCARIO_ITAU = 'Boletobancario_itau',\n BOLETOBANCARIO_SANTANDER = 'Boletobancario_santander',\n BR_SCHEMES = 'Br_schemes',\n BRADESCO = 'Bradesco',\n BUALUANGIBANKING = 'Bualuangibanking',\n BUNQ = 'Bunq',\n C_BEDRIJFSFIETSPLAN = 'C_bedrijfsfietsplan',\n C_BYPHONE = 'C_byphone',\n C_CASH = 'C_cash',\n C_FACTUUR = 'C_factuur',\n C_INVOICE = 'C_invoice',\n C_KAUFPERRECHNUNG = 'C_kaufperrechnung',\n C_OPREKENING = 'C_oprekening',\n C_POS = 'C_pos',\n C_VORKASSE = 'C_vorkasse',\n CABAL = 'Cabal',\n CARD = 'Card',\n CARNET = 'Carnet',\n CARTEBANCAIRE = 'Cartebancaire',\n CASHCOM = 'Cashcom',\n CASHCOMGIFTCARD = 'Cashcomgiftcard',\n CASHTICKET = 'Cashticket',\n CASHU = 'Cashu',\n CB = 'Cb',\n CCAVENUE = 'Ccavenue',\n CELLULANT = 'Cellulant',\n CEN_PAY = 'Cen_pay',\n CENCOSUD = 'Cencosud',\n CENTRAL = 'Central',\n CENTRAL_FOOD_HALL = 'Central_food_hall',\n CESKA = 'Ceska',\n CHEQUEDEJENEUR = 'Chequedejeneur',\n CIMB = 'Cimb',\n CLEARPAY = 'Clearpay',\n CLICKANDBUY = 'Clickandbuy',\n COBROEXPRESS = 'Cobroexpress',\n CODENSA = 'Codensa',\n COSTES = 'Costes',\n COSTESGIFTCARD = 'Costesgiftcard',\n CREDIT_UNION = 'Credit_union',\n CREDTODOS = 'Credtodos',\n CSOB = 'Csob',\n CU24 = 'Cu24',\n CUP = 'Cup',\n CUP_AMAZONPAY = 'Cup_amazonpay',\n DANA = 'Dana',\n DANKORT = 'Dankort',\n DANSKEBANK = 'Danskebank',\n DECADEAUKAART = 'Decadeaukaart',\n DIEAERZTEBANK = 'Dieaerztebank',\n DINEROMAIL = 'Dineromail',\n DINERS = 'Diners',\n DINNER = 'Dinner',\n DIRECTEBANKING = 'DirectEbanking',\n DIRECTDEBIT = 'Directdebit',\n DIRECTDEBIT_BR_BANCODOBRASIL = 'Directdebit_BR_bancodobrasil',\n DIRECTDEBIT_BR_ITAU = 'Directdebit_BR_itau',\n DIRECTDEBIT_GB = 'Directdebit_GB',\n DIRECTDEBIT_NL = 'Directdebit_NL',\n DISCOVER = 'Discover',\n DISCOVER_AMAZONPAY = 'Discover_amazonpay',\n DISCOVER_ANDROIDPAY = 'Discover_androidpay',\n DISCOVER_APPLEPAY = 'Discover_applepay',\n DK = 'Dk',\n DOKU = 'Doku',\n DOKU_ALFAMART = 'Doku_alfamart',\n DOKU_BCA_KLIKPAY = 'Doku_bca_klikpay',\n DOKU_BCA_VA = 'Doku_bca_va',\n DOKU_BNI = 'Doku_bni',\n DOKU_BNI_VA = 'Doku_bni_va',\n DOKU_BRI_VA = 'Doku_bri_va',\n DOKU_BRIEPAY = 'Doku_briepay',\n DOKU_CIMB_VA = 'Doku_cimb_va',\n DOKU_DANAMON_VA = 'Doku_danamon_va',\n DOKU_INDOMARET = 'Doku_indomaret',\n DOKU_MANDIRI_CLICKPAY = 'Doku_mandiri_clickpay',\n DOKU_MANDIRI_VA = 'Doku_mandiri_va',\n DOKU_OVO = 'Doku_ovo',\n DOKU_PERMATA_ATM = 'Doku_permata_atm',\n DOKU_PERMATA_LITE_ATM = 'Doku_permata_lite_atm',\n DOKU_SINARMAS_VA = 'Doku_sinarmas_va',\n DOKU_WALLET = 'Doku_wallet',\n DONGABANK = 'Dongabank',\n DOTPAY = 'Dotpay',\n DOTPAY_1 = 'Dotpay/1',\n DOTPAY_10 = 'Dotpay/10',\n DOTPAY_11 = 'Dotpay/11',\n DOTPAY_16 = 'Dotpay/16',\n DOTPAY_2 = 'Dotpay/2',\n DOTPAY_21 = 'Dotpay/21',\n DOTPAY_24 = 'Dotpay/24',\n DOTPAY_31 = 'Dotpay/31',\n DOTPAY_32 = 'Dotpay/32',\n DOTPAY_35 = 'Dotpay/35',\n DOTPAY_36 = 'Dotpay/36',\n DOTPAY_38 = 'Dotpay/38',\n DOTPAY_4 = 'Dotpay/4',\n DOTPAY_44 = 'Dotpay/44',\n DOTPAY_45 = 'Dotpay/45',\n DOTPAY_46 = 'Dotpay/46',\n DOTPAY_48 = 'Dotpay/48',\n DOTPAY_50 = 'Dotpay/50',\n DOTPAY_51 = 'Dotpay/51',\n DOTPAY_52 = 'Dotpay/52',\n DOTPAY_55 = 'Dotpay/55',\n DOTPAY_56 = 'Dotpay/56',\n DOTPAY_58 = 'Dotpay/58',\n DOTPAY_59 = 'Dotpay/59',\n DOTPAY_6 = 'Dotpay/6',\n DOTPAY_60 = 'Dotpay/60',\n DOTPAY_65 = 'Dotpay/65',\n DOTPAY_66 = 'Dotpay/66',\n DOTPAY_68 = 'Dotpay/68',\n DOTPAY_7 = 'Dotpay/7',\n DOTPAY_70 = 'Dotpay/70',\n DOTPAY_72 = 'Dotpay/72',\n DOTPAY_73 = 'Dotpay/73',\n DOTPAY_74 = 'Dotpay/74',\n DOTPAY_75 = 'Dotpay/75',\n DOTPAY_76 = 'Dotpay/76',\n DOTPAY_80 = 'Dotpay/80',\n DOTPAY_81 = 'Dotpay/81',\n DOTPAY_83 = 'Dotpay/83',\n DOTPAY_84 = 'Dotpay/84',\n DOTPAY_87 = 'Dotpay/87',\n DOTPAY_88 = 'Dotpay/88',\n DOTPAY_89 = 'Dotpay/89',\n DOTPAY_90 = 'Dotpay/90',\n DOTPAY_91 = 'Dotpay/91',\n DOTPAY_92 = 'Dotpay/92',\n DOTPAY_93 = 'Dotpay/93',\n DRAGONPAY = 'Dragonpay',\n DRAGONPAY_CREDITS = 'Dragonpay_credits',\n DRAGONPAY_EBANKING = 'Dragonpay_ebanking',\n DRAGONPAY_EBANKING_BDO = 'Dragonpay_ebanking/bdo',\n DRAGONPAY_EBANKING_BOG = 'Dragonpay_ebanking/bog',\n DRAGONPAY_EBANKING_BPI = 'Dragonpay_ebanking/bpi',\n DRAGONPAY_EBANKING_BPIB = 'Dragonpay_ebanking/bpib',\n DRAGONPAY_EBANKING_CBC = 'Dragonpay_ebanking/cbc',\n DRAGONPAY_EBANKING_DPAY = 'Dragonpay_ebanking/dpay',\n DRAGONPAY_EBANKING_LBPA = 'Dragonpay_ebanking/lbpa',\n DRAGONPAY_EBANKING_MBTC = 'Dragonpay_ebanking/mbtc',\n DRAGONPAY_EBANKING_RCBC = 'Dragonpay_ebanking/rcbc',\n DRAGONPAY_EBANKING_UBP = 'Dragonpay_ebanking/ubp',\n DRAGONPAY_EBANKING_UCPB = 'Dragonpay_ebanking/ucpb',\n DRAGONPAY_GCASH = 'Dragonpay_gcash',\n DRAGONPAY_OTC_BANKING = 'Dragonpay_otc_banking',\n DRAGONPAY_OTC_BANKING_BDOA = 'Dragonpay_otc_banking/bdoa',\n DRAGONPAY_OTC_BANKING_BDRX = 'Dragonpay_otc_banking/bdrx',\n DRAGONPAY_OTC_BANKING_BOGX = 'Dragonpay_otc_banking/bogx',\n DRAGONPAY_OTC_BANKING_BPXB = 'Dragonpay_otc_banking/bpxb',\n DRAGONPAY_OTC_BANKING_CBCX = 'Dragonpay_otc_banking/cbcx',\n DRAGONPAY_OTC_BANKING_EWBX = 'Dragonpay_otc_banking/ewbx',\n DRAGONPAY_OTC_BANKING_LBXB = 'Dragonpay_otc_banking/lbxb',\n DRAGONPAY_OTC_BANKING_MBTX = 'Dragonpay_otc_banking/mbtx',\n DRAGONPAY_OTC_BANKING_PNBB = 'Dragonpay_otc_banking/pnbb',\n DRAGONPAY_OTC_BANKING_PNXB = 'Dragonpay_otc_banking/pnxb',\n DRAGONPAY_OTC_BANKING_RCXB = 'Dragonpay_otc_banking/rcxb',\n DRAGONPAY_OTC_BANKING_RSXB = 'Dragonpay_otc_banking/rsxb',\n DRAGONPAY_OTC_BANKING_SBCA = 'Dragonpay_otc_banking/sbca',\n DRAGONPAY_OTC_BANKING_SBCB = 'Dragonpay_otc_banking/sbcb',\n DRAGONPAY_OTC_BANKING_UBXB = 'Dragonpay_otc_banking/ubxb',\n DRAGONPAY_OTC_BANKING_UCXB = 'Dragonpay_otc_banking/ucxb',\n DRAGONPAY_OTC_INTERNATIONAL = 'Dragonpay_otc_international',\n DRAGONPAY_OTC_NON_BANKING = 'Dragonpay_otc_non_banking',\n DRAGONPAY_OTC_NON_BANKING_BAYD = 'Dragonpay_otc_non_banking/bayd',\n DRAGONPAY_OTC_NON_BANKING_CEBL = 'Dragonpay_otc_non_banking/cebl',\n DRAGONPAY_OTC_NON_BANKING_CEBP = 'Dragonpay_otc_non_banking/cebp',\n DRAGONPAY_OTC_NON_BANKING_ECPY = 'Dragonpay_otc_non_banking/ecpy',\n DRAGONPAY_OTC_NON_BANKING_LBC = 'Dragonpay_otc_non_banking/lbc',\n DRAGONPAY_OTC_NON_BANKING_MLH = 'Dragonpay_otc_non_banking/mlh',\n DRAGONPAY_OTC_NON_BANKING_RDS = 'Dragonpay_otc_non_banking/rds',\n DRAGONPAY_OTC_NON_BANKING_RLNT = 'Dragonpay_otc_non_banking/rlnt',\n DRAGONPAY_OTC_NON_BANKING_SMR = 'Dragonpay_otc_non_banking/smr',\n DRAGONPAY_OTC_PHILIPPINES = 'Dragonpay_otc_philippines',\n DRAGONPAY_SEVENELEVEN = 'Dragonpay_seveneleven',\n DUITNOWQR = 'Duitnowqr',\n EAGLEEYE_VOUCHER = 'Eagleeye_voucher',\n EASYBANK = 'Easybank',\n EBANKING_FI = 'Ebanking_FI',\n EBUCKS = 'Ebucks',\n ECONTEXT_ATM = 'Econtext_atm',\n ECONTEXT_ONLINE = 'Econtext_online',\n ECONTEXT_SEVEN_ELEVEN = 'Econtext_seven_eleven',\n ECONTEXT_STORES = 'Econtext_stores',\n EDENRED_MEAL_VOUCHER = 'Edenred_meal_voucher',\n EFECTIVO_BANCOMER = 'Efectivo_bancomer',\n EFECTIVO_IXE = 'Efectivo_ixe',\n EFECTY = 'Efecty',\n EFTPOS = 'Eftpos',\n EFTPOS_AUSTRALIA = 'Eftpos_australia',\n EFTPOS_AUSTRALIA_CHQ = 'Eftpos_australia_chq',\n EFTPOS_AUSTRALIA_SAV = 'Eftpos_australia_sav',\n ELECTRON = 'Electron',\n ELECTRON_AMAZONPAY = 'Electron_amazonpay',\n ELECTRON_APPLEPAY = 'Electron_applepay',\n ELECTRON_SAMSUNGPAY = 'Electron_samsungpay',\n ELEKSNET = 'Eleksnet',\n ELO = 'Elo',\n ELO_AMAZONPAY = 'Elo_amazonpay',\n ELO_APPLEPAY = 'Elo_applepay',\n ELODEBIT_AMAZONPAY = 'Elodebit_amazonpay',\n ELV = 'Elv',\n ENETS = 'Enets',\n ENTERCASH = 'Entercash',\n ENTERCASH_200 = 'Entercash/200',\n ENTERCASH_204 = 'Entercash/204',\n ENTERCASH_205 = 'Entercash/205',\n ENTERCASH_206 = 'Entercash/206',\n ENTERCASH_207 = 'Entercash/207',\n ENTERCASH_208 = 'Entercash/208',\n ENTERCASH_209 = 'Entercash/209',\n ENTERCASH_211 = 'Entercash/211',\n ENTERCASH_213 = 'Entercash/213',\n ENTERCASH_216 = 'Entercash/216',\n ENTERCASH_231 = 'Entercash/231',\n ENTERCASH_232 = 'Entercash/232',\n ENTERCASH_233 = 'Entercash/233',\n ENTERCASH_234 = 'Entercash/234',\n ENTERCASH_235 = 'Entercash/235',\n ENTERCASH_240 = 'Entercash/240',\n ENTERCASH_260 = 'Entercash/260',\n ENTERCASH_265 = 'Entercash/265',\n ENTERCASH_500 = 'Entercash/500',\n ENTERCASH_505 = 'Entercash/505',\n ENTERCASH_550 = 'Entercash/550',\n ENTERCASH_551 = 'Entercash/551',\n ENTERCASH_552 = 'Entercash/552',\n ENTERCASH_553 = 'Entercash/553',\n ENTERCASH_554 = 'Entercash/554',\n ENTERCASH_555 = 'Entercash/555',\n ENTERCASH_556 = 'Entercash/556',\n ENTERCASH_557 = 'Entercash/557',\n ENTERCASH_640 = 'Entercash/640',\n ENTERCASH_720 = 'Entercash/720',\n ENTERCASH_721 = 'Entercash/721',\n ENTERCASH_722 = 'Entercash/722',\n ENTERCASH_723 = 'Entercash/723',\n ENTERCASH_724 = 'Entercash/724',\n ENTERCASH_750 = 'Entercash/750',\n ENTERCASH_751 = 'Entercash/751',\n ENTERCASH_752 = 'Entercash/752',\n ENTERCASH_753 = 'Entercash/753',\n ENTERCASH_940 = 'Entercash/940',\n ENTERCASH_941 = 'Entercash/941',\n ENTERCASH_942 = 'Entercash/942',\n ENTERCASH_943 = 'Entercash/943',\n ENTERTAINMENTCARD = 'Entertainmentcard',\n EPAY = 'Epay',\n EPS = 'Eps',\n EPS_09350598_7BA4_4AFB_B706_843E49A64759 = 'Eps/093505987ba44afbB706843e49a64759',\n EPS_1190C4D1_B37A_487E_9355_E0A067F54A9F = 'Eps/1190c4d1B37a487e9355E0a067f54a9f',\n EPS_1D48E2F7_604C_4D1D_894E_170635D1A645 = 'Eps/1d48e2f7604c4d1d894e170635d1a645',\n EPS_242209E6_A81F_48BC_9041_A31306CB153F = 'Eps/242209e6A81f48bc9041A31306cb153f',\n EPS_25942CC9_617D_42A1_89BA_D1AB5A05770A = 'Eps/25942cc9617d42a189baD1ab5a05770a',\n EPS_31659756_FB43_4094_AFD5_82980FF48750 = 'Eps/31659756Fb434094Afd582980ff48750',\n EPS_33FDC41FC_3D3D_4EE3_A1FE_CD79CFD58EA3 = 'Eps/33fdc41fc3d3d4ee3A1feCd79cfd58ea3',\n EPS_3ED7DA63_0924_424C_A822_2A0DFAAADCE1 = 'Eps/3ed7da630924424cA8222a0dfaaadce1',\n EPS_3FDC41FC_3D3D_4EE3_A1FE_CD79CFD58EA3 = 'Eps/3fdc41fc3d3d4ee3A1feCd79cfd58ea3',\n EPS_43B3AF24_7969_4701_A7CE_1F9FC6EEF834 = 'Eps/43b3af2479694701A7ce1f9fc6eef834',\n EPS_43DCA1AB_4BA3_41AC_B672_5518362CDE54 = 'Eps/43dca1ab4ba341acB6725518362cde54',\n EPS_479FF5D2_6F44_4921_9330_6BF6763806E9 = 'Eps/479ff5d26f44492193306bf6763806e9',\n EPS_4A0A975B_0594_4B40_9068_39F77B3A91F9 = 'Eps/4a0a975b05944b40906839f77b3a91f9',\n EPS_52D9DF19_F5C5_401F_89D9_38A8B36AE721 = 'Eps/52d9df19F5c5401f89d938a8b36ae721',\n EPS_54016D9D_31B0_4DB3_9EAF_CF9FBC58EE81 = 'Eps/54016d9d31b04db39eafCf9fbc58ee81',\n EPS_64669764_E6FC_401C_8F3D_26E9169BA6FF = 'Eps/64669764E6fc401c8f3d26e9169ba6ff',\n EPS_6765E225_A0DC_4481_9666_E26303D4F221 = 'Eps/6765e225A0dc44819666E26303d4f221',\n EPS_68DB503B_EA48_4681_814B_10FC74064F68 = 'Eps/68db503bEa484681814b10fc74064f68',\n EPS_69A67A81_7518_463F_8527_3F1128AF1F93 = 'Eps/69a67a817518463f85273f1128af1f93',\n EPS_7217D822_470C_4768_B346_A440E8CB7096 = 'Eps/7217d822470c4768B346A440e8cb7096',\n EPS_744D26DA_90C9_49EB_9A0B_9A7F1FA3A8D2 = 'Eps/744d26da90c949eb9a0b9a7f1fa3a8d2',\n EPS_84F468DC_37B4_44AA_8301_50A16F746464 = 'Eps/84f468dc37b444aa830150a16f746464',\n EPS_880CC8C4_D723_49AB_8299_DC35EAFC9385 = 'Eps/880cc8c4D72349ab8299Dc35eafc9385',\n EPS_89C79DA1_1B75_41E2_9254_118F36231BBD = 'Eps/89c79da11b7541e29254118f36231bbd',\n EPS_8B0BFEEA_FBB0_4337_B3A1_0E25C0F060FC = 'Eps/8b0bfeeaFbb04337B3a10e25c0f060fc',\n EPS_958D1CF8_0D2D_4B21_B1F2_8383BB9F243F = 'Eps/958d1cf80d2d4b21B1f28383bb9f243f',\n EPS_9C92D29B_A898_488E_836F_E93B911F9A94 = 'Eps/9c92d29bA898488e836fE93b911f9a94',\n EPS_A990A73B_3D6B_4D91_9B8A_856428089B34 = 'Eps/a990a73b3d6b4d919b8a856428089b34',\n EPS_AA1DE16A_223F_494F_90F0_01FCE9C065FB = 'Eps/aa1de16a223f494f90f001fce9c065fb',\n EPS_B3B1554F_C9AE_4396_A62F_BAFFB8A2DE1C = 'Eps/b3b1554fC9ae4396A62fBaffb8a2de1c',\n EPS_B42DD796_8BDA_4893_ACC2_DDFAE9C9CDB7 = 'Eps/b42dd7968bda4893Acc2Ddfae9c9cdb7',\n EPS_BA7199CC_F057_42F2_9856_2378ABF21638 = 'Eps/ba7199ccF05742f298562378abf21638',\n EPS_BB7D223A_17D5_48AF_A6EF_8A2BF5A4E5D9 = 'Eps/bb7d223a17d548afA6ef8a2bf5a4e5d9',\n EPS_BBD44F4D_609B_454E_8D5A_E0D1AC21F15A = 'Eps/bbd44f4d609b454e8d5aE0d1ac21f15a',\n EPS_C522E299_479C_4134_849F_A6EF0399A6E0 = 'Eps/c522e299479c4134849fA6ef0399a6e0',\n EPS_CC4A034E_F8A1_4CE4_A96B_1CD251AF03B5 = 'Eps/cc4a034eF8a14ce4A96b1cd251af03b5',\n EPS_D5639C17_0207_4D49_8708_922181135AD1 = 'Eps/d5639c1702074d498708922181135ad1',\n EPS_D5D5B133_1C0D_4C08_B2BE_3C9B116DC326 = 'Eps/d5d5b1331c0d4c08B2be3c9b116dc326',\n EPS_E15C6132_430F_415C_AC95_C127ECB49D55 = 'Eps/e15c6132430f415cAc95C127ecb49d55',\n EPS_E2E97AAA_DE4C_4E18_9431_D99790773433 = 'Eps/e2e97aaaDe4c4e189431D99790773433',\n EPS_E590EB4F_B805_43F7_86A0_4EA3F560B18F = 'Eps/e590eb4fB80543f786a04ea3f560b18f',\n EPS_E6819E7A_F663_414B_92EC_CF7C82D2F4E5 = 'Eps/e6819e7aF663414b92ecCf7c82d2f4e5',\n EPS_EE9FC487_EBE0_486C_8101_17DCE5141A67 = 'Eps/ee9fc487Ebe0486c810117dce5141a67',\n EPS_EFF103E6_843D_48B7_A6E6_FBD88F511B11 = 'Eps/eff103e6843d48b7A6e6Fbd88f511b11',\n EPS_F848C582_1B94_4E13_B58E_B3A2C68A3FBA = 'Eps/f848c5821b944e13B58eB3a2c68a3fba',\n ESA_PAY = 'Esa_pay',\n EXPERTGIFTCARD = 'Expertgiftcard',\n FACILYPAY = 'Facilypay',\n FACILYPAY_10X = 'Facilypay_10x',\n FACILYPAY_12X = 'Facilypay_12x',\n FACILYPAY_3X = 'Facilypay_3x',\n FACILYPAY_4X = 'Facilypay_4x',\n FACILYPAY_6X = 'Facilypay_6x',\n FAKTURA = 'Faktura',\n FAMILYMART = 'Familymart',\n FASHIONCHEQUE = 'Fashioncheque',\n FAWRY = 'Fawry',\n FIO_BANKA = 'Fio_banka',\n FIS_MAYORSGIFTCARD = 'Fis_mayorsgiftcard',\n FLEUROP = 'Fleurop',\n FLEUROPBLOEMENBON = 'Fleuropbloemenbon',\n FONQ = 'Fonq',\n FONQGIFTCARD = 'Fonqgiftcard',\n FORBRUGSFORENINGEN = 'Forbrugsforeningen',\n FORTIS = 'Fortis',\n FPX = 'Fpx',\n FPX_ABB = 'Fpx_abb',\n FPX_ABMB = 'Fpx_abmb',\n FPX_AMB = 'Fpx_amb',\n FPX_BIMB = 'Fpx_bimb',\n FPX_BKRM = 'Fpx_bkrm',\n FPX_CIMBCLICKS = 'Fpx_cimbclicks',\n FPX_HLB = 'Fpx_hlb',\n FPX_MB2U = 'Fpx_mb2u',\n FPX_OCBC = 'Fpx_ocbc',\n FPX_PBB = 'Fpx_pbb',\n FPX_RHB = 'Fpx_rhb',\n FPX_SCB = 'Fpx_scb',\n FPX_UOB = 'Fpx_uob',\n FRIESLAND_BANK = 'Friesland_bank',\n GALLGALL = 'Gallgall',\n GARTNER = 'Gartner',\n GCASH = 'Gcash',\n GE = 'Ge',\n GENERIC_BANKTRANSFER = 'Generic_banktransfer',\n GENERIC_WALLET = 'Generic_wallet',\n GENERICGIFTCARD = 'Genericgiftcard',\n GIFTCARD = 'Giftcard',\n GIFTFOR2CARD = 'Giftfor2card',\n GIROCARD = 'Girocard',\n GIROPAY = 'Giropay',\n GIVEX = 'Givex',\n GLOBE_GCASH = 'Globe_gcash',\n GLOBEGCASH = 'Globegcash',\n GOLDSMITHSCARD = 'Goldsmithscard',\n GOOGLEPAY = 'Googlepay',\n GOOGLEWALLET = 'Googlewallet',\n GOPAY_WALLET = 'Gopay_wallet',\n GRABPAY = 'Grabpay',\n GRABPAY_MY = 'Grabpay_MY',\n GRABPAY_PH = 'Grabpay_PH',\n GRABPAY_SG = 'Grabpay_SG',\n GRABPAY_TH = 'Grabpay_TH',\n GRABPAY_POS = 'Grabpay_pos',\n GRUPO_MUTUAL = 'Grupo_mutual',\n HALLMARK = 'Hallmark',\n HALLMARKCARD = 'Hallmarkcard',\n HANDELSBAN = 'Handelsban',\n HANDELSBANKEN = 'Handelsbanken',\n HANSABANK = 'Hansabank',\n HDFC = 'Hdfc',\n HELM = 'Helm',\n HIPER = 'Hiper',\n HIPERCARD = 'Hipercard',\n HMLINGERIE = 'Hmlingerie',\n HOMEWORKS = 'Homeworks',\n HONG_LEONG = 'Hong_leong',\n HSBC = 'Hsbc',\n HYPO_ALPE_ADRIA = 'Hypo_alpe_adria',\n HYPO_LANDESBANK_VORARLBERG = 'Hypo_landesbank_vorarlberg',\n HYPO_NOE_GRUPPE = 'Hypo_noe_gruppe',\n HYPO_TIROL_BANK = 'Hypo_tirol_bank',\n HYUNDAI_CARD = 'Hyundai_card',\n IDEAL = 'Ideal',\n IDEAL_0021 = 'Ideal/0021',\n IDEAL_0031 = 'Ideal/0031',\n IDEAL_0161 = 'Ideal/0161',\n IDEAL_0511 = 'Ideal/0511',\n IDEAL_0721 = 'Ideal/0721',\n IDEAL_0751 = 'Ideal/0751',\n IDEAL_0761 = 'Ideal/0761',\n IDEAL_0771 = 'Ideal/0771',\n IDEAL_0801 = 'Ideal/0801',\n IDEAL_0802 = 'Ideal/0802',\n IDEAL_0803 = 'Ideal/0803',\n IDEAL_0804 = 'Ideal/0804',\n IDEAL_0805 = 'Ideal/0805',\n IDEAL_1151 = 'Ideal/1151',\n IGIVE = 'Igive',\n IKANO = 'Ikano',\n IMMO_BANK = 'ImmoBank',\n INICISINIPAY_ACCOUNTTRANSFER = 'InicisIniPay_accounttransfer',\n INICISINIPAY_CREDITCARD = 'InicisIniPay_creditcard',\n INICISMOBILE_ACCOUNTTRANSFER = 'InicisMobile_accounttransfer',\n INICISMOBILE_CREDITCARD = 'InicisMobile_creditcard',\n INICISMOBILE_MOBILEPHONE = 'InicisMobile_mobilephone',\n INICIS_CREDITCARD = 'Inicis_creditcard',\n INTERAC = 'Interac',\n INTERAC_AMAZONPAY = 'Interac_amazonpay',\n INTERAC_APPLEPAY = 'Interac_applepay',\n INTERAC_CARD = 'Interac_card',\n INTERBANK = 'Interbank',\n INTERLINK = 'Interlink',\n IPAY = 'Ipay',\n IPAY88 = 'Ipay88',\n ISRACARD = 'Isracard',\n ITAU = 'Itau',\n IVR = 'Ivr',\n IVRLANDLINE = 'IvrLandline',\n IVRMOBILE = 'IvrMobile',\n IXE = 'Ixe',\n JCB = 'Jcb',\n JCB_APPLEPAY = 'Jcb_applepay',\n JUST_PAY = 'Just_pay',\n KADOWERELD = 'Kadowereld',\n KAKAOPAY = 'Kakaopay',\n KAREN_MILLEN = 'Karen_millen',\n KARENMILLEN = 'Karenmillen',\n KARENMILLENGIFTCARD = 'Karenmillengiftcard',\n KASIKORNBANK = 'Kasikornbank',\n KCP_BANKTRANSFER = 'Kcp_banktransfer',\n KCP_CREDITCARD = 'Kcp_creditcard',\n KCP_PAYCO = 'Kcp_payco',\n KLARNA_PAY_LATER = 'KlarnaPayLater',\n KLARNA_PAY_NOW = 'KlarnaPayNow',\n KLARNA_SLICE = 'KlarnaSlice',\n KLARNA = 'Klarna',\n KLARNA_ACCOUNT = 'Klarna_account',\n KLARNA_B2B = 'Klarna_b2b',\n KLARNA_PAYNOW = 'Klarna_paynow',\n KLARNAPAYMENTS = 'Klarnapayments',\n KLARNAPAYMENTS_ACCOUNT = 'Klarnapayments_account',\n KLARNAPAYMENTS_B2B = 'Klarnapayments_b2b',\n KMART = 'Kmart',\n KNET = 'Knet',\n KONBINI = 'Konbini',\n KOREAN_LOCAL_CARD = 'Korean_local_card',\n KRUNGSRI_ATM = 'Krungsri_atm',\n KRUNGTHAI = 'Krungthai',\n KRUNSGRI = 'Krunsgri',\n LASER = 'Laser',\n LAWESON = 'Laweson',\n LHV = 'Lhv',\n LIANLIANPAY_ABC = 'Lianlianpay_abc',\n LIANLIANPAY_BCM = 'Lianlianpay_bcm',\n LIANLIANPAY_BEA = 'Lianlianpay_bea',\n LIANLIANPAY_BOB = 'Lianlianpay_bob',\n LIANLIANPAY_BOC = 'Lianlianpay_boc',\n LIANLIANPAY_CCIB = 'Lianlianpay_ccib',\n LIANLIANPAY_CCOB = 'Lianlianpay_ccob',\n LIANLIANPAY_CEB = 'Lianlianpay_ceb',\n LIANLIANPAY_CGB = 'Lianlianpay_cgb',\n LIANLIANPAY_CMB = 'Lianlianpay_cmb',\n LIANLIANPAY_CMBC = 'Lianlianpay_cmbc',\n LIANLIANPAY_CREDITCARD = 'Lianlianpay_creditcard',\n LIANLIANPAY_DEBITCARD = 'Lianlianpay_debitcard',\n LIANLIANPAY_EBANKING = 'Lianlianpay_ebanking',\n LIANLIANPAY_EBANKING_CREDIT_01020000 = 'Lianlianpay_ebanking_credit/01020000',\n LIANLIANPAY_EBANKING_CREDIT_01030000 = 'Lianlianpay_ebanking_credit/01030000',\n LIANLIANPAY_EBANKING_CREDIT_01040000 = 'Lianlianpay_ebanking_credit/01040000',\n LIANLIANPAY_EBANKING_CREDIT_01050000 = 'Lianlianpay_ebanking_credit/01050000',\n LIANLIANPAY_EBANKING_CREDIT_03010000 = 'Lianlianpay_ebanking_credit/03010000',\n LIANLIANPAY_EBANKING_CREDIT_03020000 = 'Lianlianpay_ebanking_credit/03020000',\n LIANLIANPAY_EBANKING_CREDIT_03030000 = 'Lianlianpay_ebanking_credit/03030000',\n LIANLIANPAY_EBANKING_CREDIT_03040000 = 'Lianlianpay_ebanking_credit/03040000',\n LIANLIANPAY_EBANKING_CREDIT_03050000 = 'Lianlianpay_ebanking_credit/03050000',\n LIANLIANPAY_EBANKING_CREDIT_03060000 = 'Lianlianpay_ebanking_credit/03060000',\n LIANLIANPAY_EBANKING_CREDIT_03070000 = 'Lianlianpay_ebanking_credit/03070000',\n LIANLIANPAY_EBANKING_CREDIT_03080000 = 'Lianlianpay_ebanking_credit/03080000',\n LIANLIANPAY_EBANKING_CREDIT_03100000 = 'Lianlianpay_ebanking_credit/03100000',\n LIANLIANPAY_EBANKING_CREDIT_03200000 = 'Lianlianpay_ebanking_credit/03200000',\n LIANLIANPAY_EBANKING_CREDIT_1000000 = 'Lianlianpay_ebanking_credit/1000000',\n LIANLIANPAY_EBANKING_CREDIT_4031000 = 'Lianlianpay_ebanking_credit/4031000',\n LIANLIANPAY_EBANKING_DEBIT_01020000 = 'Lianlianpay_ebanking_debit/01020000',\n LIANLIANPAY_EBANKING_DEBIT_01030000 = 'Lianlianpay_ebanking_debit/01030000',\n LIANLIANPAY_EBANKING_DEBIT_01040000 = 'Lianlianpay_ebanking_debit/01040000',\n LIANLIANPAY_EBANKING_DEBIT_01050000 = 'Lianlianpay_ebanking_debit/01050000',\n LIANLIANPAY_EBANKING_DEBIT_03010000 = 'Lianlianpay_ebanking_debit/03010000',\n LIANLIANPAY_EBANKING_DEBIT_03020000 = 'Lianlianpay_ebanking_debit/03020000',\n LIANLIANPAY_EBANKING_DEBIT_03030000 = 'Lianlianpay_ebanking_debit/03030000',\n LIANLIANPAY_EBANKING_DEBIT_03040000 = 'Lianlianpay_ebanking_debit/03040000',\n LIANLIANPAY_EBANKING_DEBIT_03050000 = 'Lianlianpay_ebanking_debit/03050000',\n LIANLIANPAY_EBANKING_DEBIT_03060000 = 'Lianlianpay_ebanking_debit/03060000',\n LIANLIANPAY_EBANKING_DEBIT_03070000 = 'Lianlianpay_ebanking_debit/03070000',\n LIANLIANPAY_EBANKING_DEBIT_03080000 = 'Lianlianpay_ebanking_debit/03080000',\n LIANLIANPAY_EBANKING_DEBIT_03100000 = 'Lianlianpay_ebanking_debit/03100000',\n LIANLIANPAY_EBANKING_DEBIT_03200000 = 'Lianlianpay_ebanking_debit/03200000',\n LIANLIANPAY_EBANKING_DEBIT_1000000 = 'Lianlianpay_ebanking_debit/1000000',\n LIANLIANPAY_EBANKING_DEBIT_4031000 = 'Lianlianpay_ebanking_debit/4031000',\n LIANLIANPAY_EBANKING_ENTERPRISE_01020000 = 'Lianlianpay_ebanking_enterprise/01020000',\n LIANLIANPAY_EBANKING_ENTERPRISE_01030000 = 'Lianlianpay_ebanking_enterprise/01030000',\n LIANLIANPAY_EBANKING_ENTERPRISE_01040000 = 'Lianlianpay_ebanking_enterprise/01040000',\n LIANLIANPAY_EBANKING_ENTERPRISE_01050000 = 'Lianlianpay_ebanking_enterprise/01050000',\n LIANLIANPAY_EBANKING_ENTERPRISE_03010000 = 'Lianlianpay_ebanking_enterprise/03010000',\n LIANLIANPAY_EBANKING_ENTERPRISE_03020000 = 'Lianlianpay_ebanking_enterprise/03020000',\n LIANLIANPAY_EBANKING_ENTERPRISE_03030000 = 'Lianlianpay_ebanking_enterprise/03030000',\n LIANLIANPAY_EBANKING_ENTERPRISE_03040000 = 'Lianlianpay_ebanking_enterprise/03040000',\n LIANLIANPAY_EBANKING_ENTERPRISE_03050000 = 'Lianlianpay_ebanking_enterprise/03050000',\n LIANLIANPAY_EBANKING_ENTERPRISE_03060000 = 'Lianlianpay_ebanking_enterprise/03060000',\n LIANLIANPAY_EBANKING_ENTERPRISE_03070000 = 'Lianlianpay_ebanking_enterprise/03070000',\n LIANLIANPAY_EBANKING_ENTERPRISE_03080000 = 'Lianlianpay_ebanking_enterprise/03080000',\n LIANLIANPAY_EBANKING_ENTERPRISE_03100000 = 'Lianlianpay_ebanking_enterprise/03100000',\n LIANLIANPAY_EBANKING_ENTERPRISE_03200000 = 'Lianlianpay_ebanking_enterprise/03200000',\n LIANLIANPAY_EBANKING_ENTERPRISE_1000000 = 'Lianlianpay_ebanking_enterprise/1000000',\n LIANLIANPAY_EBANKING_ENTERPRISE_4031000 = 'Lianlianpay_ebanking_enterprise/4031000',\n LIANLIANPAY_HXB = 'Lianlianpay_hxb',\n LIANLIANPAY_ICBC = 'Lianlianpay_icbc',\n LIANLIANPAY_PAB = 'Lianlianpay_pab',\n LIANLIANPAY_PSBC = 'Lianlianpay_psbc',\n LIANLIANPAY_SPDB = 'Lianlianpay_spdb',\n LOODS5GIFTCARD = 'Loods5giftcard',\n LOODS5PREPAIDCARD = 'Loods5prepaidcard',\n M_PAY = 'M_pay',\n MADA = 'Mada',\n MADA_CARD = 'Mada_card',\n MAESTRO = 'Maestro',\n MAESTRO_AMAZONPAY = 'Maestro_amazonpay',\n MAESTRO_APPLEPAY = 'Maestro_applepay',\n MAESTRO_SAMSUNGPAY = 'Maestro_samsungpay',\n MAESTROUK = 'Maestrouk',\n MANDIRI = 'Mandiri',\n MAPPINWEBBCARD = 'Mappinwebbcard',\n MARITIME = 'Maritime',\n MASTERPASS = 'Masterpass',\n MAYBANK = 'Maybank',\n MAYORS = 'Mayors',\n MB = 'Mb',\n MBANK = 'Mbank',\n MBWAY = 'Mbway',\n MC = 'Mc',\n MC_AMAZONPAY = 'Mc_amazonpay',\n MC_ANDROIDPAY = 'Mc_androidpay',\n MC_APPLEPAY = 'Mc_applepay',\n MC_SAMSUNGPAY = 'Mc_samsungpay',\n MEALVOUCHER_FR_GROUPEUP = 'MealVoucher_FR_groupeup',\n MEALVOUCHER_FR_NATIXIS = 'MealVoucher_FR_natixis',\n MEALVOUCHER_FR_SODEXO = 'MealVoucher_FR_sodexo',\n MERCADOPAGO = 'Mercadopago',\n MINISTOP = 'Ministop',\n MIR = 'Mir',\n MOBILE_SUICA = 'Mobile_suica',\n MOBILEPAY = 'Mobilepay',\n MOLPAY = 'Molpay',\n MOLPAY_A = 'Molpay_a',\n MOLPAY_ABMB = 'Molpay_abmb',\n MOLPAY_ACB = 'Molpay_acb',\n MOLPAY_AFFIN_EPG = 'Molpay_affin_epg',\n MOLPAY_AGRIBANK = 'Molpay_agribank',\n MOLPAY_ALIPAY = 'Molpay_alipay',\n MOLPAY_AMB = 'Molpay_amb',\n MOLPAY_BANGKOKBANK = 'Molpay_bangkokbank',\n MOLPAY_BANKGKOKBANK = 'Molpay_bankgkokbank',\n MOLPAY_BANKISLAM = 'Molpay_bankislam',\n MOLPAY_BIDV = 'Molpay_bidv',\n MOLPAY_BKRM = 'Molpay_bkrm',\n MOLPAY_BOOST = 'Molpay_boost',\n MOLPAY_CASH = 'Molpay_cash',\n MOLPAY_CIMB = 'Molpay_cimb',\n MOLPAY_CIMB_VA = 'Molpay_cimb_va',\n MOLPAY_DONGABANK = 'Molpay_dongabank',\n MOLPAY_EBANKING_MY = 'Molpay_ebanking_MY',\n MOLPAY_EBANKING_TH = 'Molpay_ebanking_TH',\n MOLPAY_EBANKING_TH_MOLPAY_BANGKOKBANK = 'Molpay_ebanking_TH/molpay_bangkokbank',\n MOLPAY_EBANKING_TH_MOLPAY_KBANK = 'Molpay_ebanking_TH/molpay_kbank',\n MOLPAY_EBANKING_TH_MOLPAY_KRUNGSRIBANK = 'Molpay_ebanking_TH/molpay_krungsribank',\n MOLPAY_EBANKING_TH_MOLPAY_KRUNGTHAIBANK = 'Molpay_ebanking_TH/molpay_krungthaibank',\n MOLPAY_EBANKING_TH_MOLPAY_SIAMCOMMERCIALBANK = 'Molpay_ebanking_TH/molpay_siamcommercialbank',\n MOLPAY_EBANKING_VN = 'Molpay_ebanking_VN',\n MOLPAY_EBANKING_VN_VTCPAY_ACB = 'Molpay_ebanking_VN/vtcpayAcb',\n MOLPAY_EBANKING_VN_VTCPAY_AGRIBANK = 'Molpay_ebanking_VN/vtcpayAgribank',\n MOLPAY_EBANKING_VN_VTCPAY_BIDV = 'Molpay_ebanking_VN/vtcpayBidv',\n MOLPAY_EBANKING_VN_VTCPAY_DONGABANK = 'Molpay_ebanking_VN/vtcpayDongabank',\n MOLPAY_EBANKING_VN_VTCPAY_MARITIMEBANK = 'Molpay_ebanking_VN/vtcpayMaritimebank',\n MOLPAY_EBANKING_VN_VTCPAY_MB = 'Molpay_ebanking_VN/vtcpayMb',\n MOLPAY_EBANKING_VN_VTCPAY_SACOMBANK = 'Molpay_ebanking_VN/vtcpaySacombank',\n MOLPAY_EBANKING_VN_VTCPAY_TECHCOMBANK = 'Molpay_ebanking_VN/vtcpayTechcombank',\n MOLPAY_EBANKING_VN_VTCPAY_VIETCOMBANK = 'Molpay_ebanking_VN/vtcpayVietcombank',\n MOLPAY_EBANKING_VN_VTCPAY_VIETINBANK = 'Molpay_ebanking_VN/vtcpayVietinbank',\n MOLPAY_EBANKING_FPX_MY = 'Molpay_ebanking_fpx_MY',\n MOLPAY_EBANKING_FPX_MY_FPX_ABB = 'Molpay_ebanking_fpx_MY/fpx_abb',\n MOLPAY_EBANKING_FPX_MY_FPX_ABMB = 'Molpay_ebanking_fpx_MY/fpx_abmb',\n MOLPAY_EBANKING_FPX_MY_FPX_AMB = 'Molpay_ebanking_fpx_MY/fpx_amb',\n MOLPAY_EBANKING_FPX_MY_FPX_BIMB = 'Molpay_ebanking_fpx_MY/fpx_bimb',\n MOLPAY_EBANKING_FPX_MY_FPX_BKRM = 'Molpay_ebanking_fpx_MY/fpx_bkrm',\n MOLPAY_EBANKING_FPX_MY_FPX_BMMB = 'Molpay_ebanking_fpx_MY/fpx_bmmb',\n MOLPAY_EBANKING_FPX_MY_FPX_BSN = 'Molpay_ebanking_fpx_MY/fpx_bsn',\n MOLPAY_EBANKING_FPX_MY_FPX_CIMBCLICKS = 'Molpay_ebanking_fpx_MY/fpx_cimbclicks',\n MOLPAY_EBANKING_FPX_MY_FPX_HLB = 'Molpay_ebanking_fpx_MY/fpx_hlb',\n MOLPAY_EBANKING_FPX_MY_FPX_HSBC = 'Molpay_ebanking_fpx_MY/fpx_hsbc',\n MOLPAY_EBANKING_FPX_MY_FPX_KFH = 'Molpay_ebanking_fpx_MY/fpx_kfh',\n MOLPAY_EBANKING_FPX_MY_FPX_MB2U = 'Molpay_ebanking_fpx_MY/fpx_mb2u',\n MOLPAY_EBANKING_FPX_MY_FPX_OCBC = 'Molpay_ebanking_fpx_MY/fpx_ocbc',\n MOLPAY_EBANKING_FPX_MY_FPX_PBB = 'Molpay_ebanking_fpx_MY/fpx_pbb',\n MOLPAY_EBANKING_FPX_MY_FPX_RHB = 'Molpay_ebanking_fpx_MY/fpx_rhb',\n MOLPAY_EBANKING_FPX_MY_FPX_SCB = 'Molpay_ebanking_fpx_MY/fpx_scb',\n MOLPAY_EBANKING_FPX_MY_FPX_UOB = 'Molpay_ebanking_fpx_MY/fpx_uob',\n MOLPAY_ENETSD = 'Molpay_enetsd',\n MOLPAY_EPAY = 'Molpay_epay',\n MOLPAY_ESAPAY = 'Molpay_esapay',\n MOLPAY_FPX = 'Molpay_fpx',\n MOLPAY_HLB = 'Molpay_hlb',\n MOLPAY_KBANK = 'Molpay_kbank',\n MOLPAY_KRUNGSRIBANK = 'Molpay_krungsribank',\n MOLPAY_KRUNGTHAIBANK = 'Molpay_krungthaibank',\n MOLPAY_MARITIMEBANK = 'Molpay_maritimebank',\n MOLPAY_MAYBANK2U = 'Molpay_maybank2u',\n MOLPAY_MB = 'Molpay_mb',\n MOLPAY_NGANLUONG = 'Molpay_nganluong',\n MOLPAY_OCBC = 'Molpay_ocbc',\n MOLPAY_PAYLINK = 'Molpay_paylink',\n MOLPAY_PAYSBUY = 'Molpay_paysbuy',\n MOLPAY_POINTS = 'Molpay_points',\n MOLPAY_PUBLICBANK = 'Molpay_publicbank',\n MOLPAY_RHB = 'Molpay_rhb',\n MOLPAY_SACOMBANK = 'Molpay_sacombank',\n MOLPAY_SCB = 'Molpay_scb',\n MOLPAY_SENHENG = 'Molpay_senheng',\n MOLPAY_SIAMCOMMERCIALBANK = 'Molpay_siamcommercialbank',\n MOLPAY_SINGPOST = 'Molpay_singpost',\n MOLPAY_TECHCOMBANK = 'Molpay_techcombank',\n MOLPAY_UOB = 'Molpay_uob',\n MOLPAY_VIETCOMBANK = 'Molpay_vietcombank',\n MOLPAY_VIETINBANK = 'Molpay_vietinbank',\n MOLPAY_WALLET = 'Molpay_wallet',\n MOMO_ATM = 'Momo_atm',\n MOMO_WALLET = 'Momo_wallet',\n MONETA = 'Moneta',\n MONETA_CZ = 'Moneta_cz',\n MONEYBOOKERS = 'Moneybookers',\n MONEYMAIL = 'Moneymail',\n MONEYOU = 'Moneyou',\n MUCAP = 'Mucap',\n MULA = 'Mula',\n MULTIBANCO = 'Multibanco',\n MULTICAJA = 'Multicaja',\n MUSICALCARD = 'Musicalcard',\n NAPS = 'Naps',\n NARANJA = 'Naranja',\n NATIONALEBIOSCOOPBON = 'Nationalebioscoopbon',\n NATIONALETUINBON = 'Nationaletuinbon',\n NATIONALEVERWENCADEAUBON = 'Nationaleverwencadeaubon',\n NEDBANK = 'Nedbank',\n NETAXEPT_BANKAXESS = 'Netaxept_bankaxess',\n NETELLER = 'Neteller',\n NETPLUS = 'Netplus',\n NETS = 'Nets',\n NETSCARD = 'Netscard',\n NGANLUONG = 'Nganluong',\n NOCARD = 'Nocard',\n NORDEA = 'Nordea',\n NYCE = 'Nyce',\n OASIS = 'Oasis',\n OASISGIFTCARD = 'Oasisgiftcard',\n OBERTHUR = 'Oberthur',\n OFFICE_MATE = 'Office_mate',\n OMANNET = 'Omannet',\n OMASP = 'Omasp',\n ONEBIP = 'Onebip',\n ONETWOTHREE = 'Onetwothree',\n ONEY = 'Oney',\n ONEY_CHIP = 'Oney_chip',\n ONEY_POS = 'Oney_pos',\n ONLINE_RU = 'Online_RU',\n ONLINEBANKING_PL = 'Onlinebanking_PL',\n OPENBANKING = 'Openbanking',\n OPENBANKING_UK = 'Openbanking_UK',\n OPENBANKING_UK_1 = 'Openbanking_UK/1',\n OPENBANKING_UK_10 = 'Openbanking_UK/10',\n OPENBANKING_UK_11 = 'Openbanking_UK/11',\n OPENBANKING_UK_12 = 'Openbanking_UK/12',\n OPENBANKING_UK_13 = 'Openbanking_UK/13',\n OPENBANKING_UK_14 = 'Openbanking_UK/14',\n OPENBANKING_UK_15 = 'Openbanking_UK/15',\n OPENBANKING_UK_16 = 'Openbanking_UK/16',\n OPENBANKING_UK_17 = 'Openbanking_UK/17',\n OPENBANKING_UK_18 = 'Openbanking_UK/18',\n OPENBANKING_UK_19 = 'Openbanking_UK/19',\n OPENBANKING_UK_2 = 'Openbanking_UK/2',\n OPENBANKING_UK_20 = 'Openbanking_UK/20',\n OPENBANKING_UK_3 = 'Openbanking_UK/3',\n OPENBANKING_UK_4 = 'Openbanking_UK/4',\n OPENBANKING_UK_5 = 'Openbanking_UK/5',\n OPENBANKING_UK_6 = 'Openbanking_UK/6',\n OPENBANKING_UK_7 = 'Openbanking_UK/7',\n OPENBANKING_UK_8 = 'Openbanking_UK/8',\n OPENBANKING_UK_9 = 'Openbanking_UK/9',\n OPENINVOICE = 'Openinvoice',\n OXXO = 'Oxxo',\n PAGOEFECTIVO = 'Pagoefectivo',\n PAGOFACIL = 'Pagofacil',\n PATHEGIFTCARD = 'Pathegiftcard',\n PAY_EASY = 'Pay_easy',\n PAY_POST = 'Pay_post',\n PAY_U = 'Pay_u',\n PAYBRIGHT = 'Paybright',\n PAYBYBANK = 'Paybybank',\n PAYBYBANK_UK_FIRSTTRUST = 'Paybybank_uk_Firsttrust',\n PAYBYBANK_UK_AIB = 'Paybybank_uk_aib',\n PAYBYBANK_UK_AMEX = 'Paybybank_uk_amex',\n PAYBYBANK_UK_ARBUTHNOTLATHAM = 'Paybybank_uk_arbuthnotlatham',\n PAYBYBANK_UK_BANKOFIRELAND = 'Paybybank_uk_bankofireland',\n PAYBYBANK_UK_BANKOFSCOTLAND = 'Paybybank_uk_bankofscotland',\n PAYBYBANK_UK_BARCLAYS = 'Paybybank_uk_barclays',\n PAYBYBANK_UK_BBANK = 'Paybybank_uk_bbank',\n PAYBYBANK_UK_C_HOARE_CO = 'Paybybank_uk_cHoareCo',\n PAYBYBANK_UK_CAPITALONE = 'Paybybank_uk_capitalone',\n PAYBYBANK_UK_CASHPLUS = 'Paybybank_uk_cashplus',\n PAYBYBANK_UK_CATERALLEN = 'Paybybank_uk_caterallen',\n PAYBYBANK_UK_CLYDESDALE = 'Paybybank_uk_clydesdale',\n PAYBYBANK_UK_COUTTS = 'Paybybank_uk_coutts',\n PAYBYBANK_UK_CREATION = 'Paybybank_uk_creation',\n PAYBYBANK_UK_CUMBERLAND = 'Paybybank_uk_cumberland',\n PAYBYBANK_UK_DANSKEBANK = 'Paybybank_uk_danskebank',\n PAYBYBANK_UK_FIRSTDIRECT = 'Paybybank_uk_firstdirect',\n PAYBYBANK_UK_HALIFAX = 'Paybybank_uk_halifax',\n PAYBYBANK_UK_HANDELSBANKEN = 'Paybybank_uk_handelsbanken',\n PAYBYBANK_UK_HSBC = 'Paybybank_uk_hsbc',\n PAYBYBANK_UK_LLOYDS = 'Paybybank_uk_lloyds',\n PAYBYBANK_UK_MONZO = 'Paybybank_uk_monzo',\n PAYBYBANK_UK_NATIONWIDE = 'Paybybank_uk_nationwide',\n PAYBYBANK_UK_NATWEST = 'Paybybank_uk_natwest',\n PAYBYBANK_UK_REVOLUT = 'Paybybank_uk_revolut',\n PAYBYBANK_UK_ROYALBANKOFSCOTLAND = 'Paybybank_uk_royalbankofscotland',\n PAYBYBANK_UK_SATANDER = 'Paybybank_uk_satander',\n PAYBYBANK_UK_STARLING = 'Paybybank_uk_starling',\n PAYBYBANK_UK_TSB = 'Paybybank_uk_tsb',\n PAYBYBANK_UK_ULSTERBANK = 'Paybybank_uk_ulsterbank',\n PAYBYBANK_UK_UTESCOBANK = 'Paybybank_uk_utescobank',\n PAYCO = 'Payco',\n PAYEX = 'Payex',\n PAYMAYA_WALLET = 'Paymaya_wallet',\n PAYNOW = 'Paynow',\n PAYPAL = 'Paypal',\n PAYPAL_POS = 'Paypal_pos',\n PAYSAFECARD = 'Paysafecard',\n PAYSBUY = 'Paysbuy',\n PAYSHOP = 'Payshop',\n PAYTHRU = 'Paythru',\n PAYTM = 'Paytm',\n PAYTRAIL = 'Paytrail',\n PAYU_IN = 'Payu_IN',\n PAYU_IN_CASHCARD = 'Payu_IN_cashcard',\n PAYU_IN_NB = 'Payu_IN_nb',\n PAYU_IN_UPI = 'Payu_IN_upi',\n PAYU_ZA_EFTPRO = 'Payu_ZA_eftpro',\n PAYWITHGOOGLE = 'Paywithgoogle',\n PERMATABANK = 'Permatabank',\n PIX = 'Pix',\n PLASTIX = 'Plastix',\n PLATIKA = 'Platika',\n PLUIMEN = 'Pluimen',\n PLUIMGIFTCARD = 'Pluimgiftcard',\n POCZTA_POLSKA = 'Poczta_polska',\n PODIUMCARD = 'Podiumcard',\n POLI = 'Poli',\n POP_PANKKI = 'Pop_pankki',\n POS = 'Pos',\n POST_RUSSIA = 'Post_russia',\n POSTBANK = 'Postbank',\n POWER_BUY = 'Power_buy',\n PPS = 'Pps',\n PRIMEIROPAY_BOLETO = 'Primeiropay_boleto',\n PROMPTPAY_QR = 'Promptpay_QR',\n PROSODIE_ILLICADO = 'Prosodie_illicado',\n PSB = 'Psb',\n PSE = 'Pse',\n PSE_PAYULATAM = 'Pse_payulatam',\n PUBLIC_BANK = 'Public_bank',\n PULSE = 'Pulse',\n PULSE_PAY = 'Pulse_pay',\n QBANK = 'Qbank',\n QIWI = 'Qiwi',\n QIWIWALLET = 'Qiwiwallet',\n RAIFFEISEN = 'Raiffeisen',\n RAKUTEN = 'Rakuten',\n RAKUTEN_EDY = 'Rakuten_edy',\n RAPIPAGO = 'Rapipago',\n RATEPAY = 'Ratepay',\n RATEPAY_DIRECTDEBIT = 'Ratepay_directdebit',\n RAZER = 'Razer',\n REDCOMPRA = 'Redcompra',\n REGIOBANK = 'Regiobank',\n RESTAURATIONHARDWARE_GIFTCART = 'Restaurationhardware_giftcart',\n RESTORATIONHARDWARE = 'Restorationhardware',\n RESURSBANK = 'Resursbank',\n RESURSGIFTCARD = 'Resursgiftcard',\n RHB = 'Rhb',\n RISK = 'Risk',\n RISPA = 'Rispa',\n RITUALS = 'Rituals',\n RIVIERAMAISONGIFTCARD = 'Rivieramaisongiftcard',\n ROBINSON = 'Robinson',\n ROMCARD = 'Romcard',\n ROMCARD_CREDIT = 'Romcard_credit',\n ROMCARD_DEBIT = 'Romcard_debit',\n RSB = 'Rsb',\n RUPAY = 'Rupay',\n S_PANKKI = 'SPankki',\n SACOMBANK = 'Sacombank',\n SAFETYPAY = 'Safetypay',\n SAFETYPAY_CASH = 'Safetypay_cash',\n SAMPO_PANKKI = 'Sampo_pankki',\n SAMSUNGPAY = 'Samsungpay',\n SANTANDER = 'Santander',\n SARAIVA = 'Saraiva',\n SBERBANK = 'Sberbank',\n SCBEASY = 'Scbeasy',\n SCOTIABANK = 'Scotiabank',\n SEBDIRECTPAYMENT = 'Sebdirectpayment',\n SEPA = 'Sepa',\n SEPADIRECTDEBIT = 'Sepadirectdebit',\n SEPADIRECTDEBIT_AMAZONPAY = 'Sepadirectdebit_amazonpay',\n SEVENELEVEN = 'Seveneleven',\n SF_CADEAU = 'Sf_cadeau',\n SHAZAM = 'Shazam',\n SHOPPING = 'Shopping',\n SINARMAS = 'Sinarmas',\n SINGAPORE_POST = 'Singapore_post',\n SKANDIA = 'Skandia',\n SKRILL = 'Skrill',\n SMART = 'Smart',\n SMARTMONEY = 'Smartmoney',\n SMS = 'Sms',\n SNS = 'Sns',\n SODEXO = 'Sodexo',\n SOFORT = 'Sofort',\n SOLO = 'Solo',\n SOROCRED = 'Sorocred',\n SPARBANKEN = 'Sparbanken',\n SPARDA_BANK = 'SpardaBank',\n SPAREBANK = 'Sparebank',\n SPARKASSE = 'Sparkasse',\n SPARNORD = 'Sparnord',\n STANDARD_BANK = 'Standard_bank',\n STAR = 'Star',\n STORE = 'Store',\n SUICA = 'Suica',\n SVS = 'Svs',\n SWEDBANK = 'Swedbank',\n SWISH = 'Swish',\n SWITCHDEVICE = 'Switchdevice',\n SYNCHRONY = 'Synchrony',\n SYNCHRONY_MERCHANT = 'Synchrony/merchant',\n TAP = 'Tap',\n TCSTESTGIFTCARD = 'Tcstestgiftcard',\n TECHOM_BANK = 'Techom_bank',\n TENPAY = 'Tenpay',\n TERMINAL_RU = 'Terminal_RU',\n TESCO = 'Tesco',\n TESCO_LOTUS = 'Tesco_lotus',\n THAI_WATSADU = 'Thai_watsadu',\n THESTINGGIFTCARD = 'Thestinggiftcard',\n TICKET = 'Ticket',\n TMBINTERNETBANKING = 'Tmbinternetbanking',\n TOPS_DAILY = 'Tops_daily',\n TROY = 'Troy',\n TRUSTLY = 'Trustly',\n TRUSTPAY = 'Trustpay',\n TWINT = 'Twint',\n TWINT_POS = 'Twint_pos',\n UBERCREDIT = 'Ubercredit',\n UKASH = 'Ukash',\n UNICREDIT = 'Unicredit',\n UNIONPAY = 'Unionpay',\n UNKNOWNCARD = 'Unknowncard',\n UOB = 'Uob',\n UOBDIRECTDEBIT = 'Uobdirectdebit',\n UPI = 'Upi',\n UPI_COLLECT = 'Upi_collect',\n UPI_QR = 'Upi_qr',\n VALE_REFEICAO = 'Vale_refeicao',\n VALE_REFEICAO_PREPAID = 'Vale_refeicao_prepaid',\n VALUELINK = 'Valuelink',\n VIAS = 'Vias',\n VIETCOMBANK = 'Vietcombank',\n VIETINBANK = 'Vietinbank',\n VIPPS = 'Vipps',\n VIS_MAYORSGIFTCARD = 'Vis_mayorsgiftcard',\n VISA = 'Visa',\n VISA_AMAZONPAY = 'Visa_amazonpay',\n VISA_ANDROIDPAY = 'Visa_androidpay',\n VISA_APPLEPAY = 'Visa_applepay',\n VISA_SAMSUNGPAY = 'Visa_samsungpay',\n VISACHECKOUT = 'Visacheckout',\n VISADANKORT = 'Visadankort',\n VOLKSBANK = 'Volksbank',\n VPAY = 'Vpay',\n VR_BANK = 'Vr_bank',\n VTCPAY_ACB = 'VtcpayAcb',\n VTCPAY_AGRIBANK = 'VtcpayAgribank',\n VTCPAY_BIDV = 'VtcpayBidv',\n VTCPAY_DONGABANK = 'VtcpayDongabank',\n VTCPAY_MARITIMEBANK = 'VtcpayMaritimebank',\n VTCPAY_MB = 'VtcpayMb',\n VTCPAY_SACOMBANK = 'VtcpaySacombank',\n VTCPAY_TECHCOMBANK = 'VtcpayTechcombank',\n VTCPAY_VIETCOMBANK = 'VtcpayVietcombank',\n VTCPAY_VIETINBANK = 'VtcpayVietinbank',\n VVVCADEAUBON = 'Vvvcadeaubon',\n VVVGIFTCARD = 'Vvvgiftcard',\n WALLET = 'Wallet',\n WALLET_RU = 'Wallet_RU',\n WALLET_RU_YANDEXMONEY = 'Wallet_RU/yandexmoney',\n WALLIE = 'Wallie',\n WAREHOUSE = 'Warehouse',\n WAREHOUSEGIFTCARD = 'Warehousegiftcard',\n WEBSHOPGIFTCARD = 'Webshopgiftcard',\n WECHATPAY = 'Wechatpay',\n WECHATPAYMINIPROGRAM = 'WechatpayMiniProgram',\n WECHATPAYQR = 'WechatpayQR',\n WECHATPAYSDK = 'WechatpaySDK',\n WECHATPAYWEB = 'WechatpayWeb',\n WECHATPAY_FULLBRAND = 'Wechatpay_fullbrand',\n WECHATPAY_POS = 'Wechatpay_pos',\n WEFASHIONGIFTCARD = 'Wefashiongiftcard',\n WESTERNUNION = 'Westernunion',\n WIJNCARD = 'Wijncard',\n WINKELCHEQUE = 'Winkelcheque',\n WOSCARD = 'Woscard',\n XPONCARD = 'Xponcard',\n YALO_PREPAID = 'Yalo_prepaid',\n YANDEX = 'Yandex',\n YANDEX_ALFACLICK = 'Yandex_alfaclick',\n YANDEX_BANK_CARD = 'Yandex_bank_card',\n YANDEX_CASH = 'Yandex_cash',\n YANDEX_INSTALLMENTS = 'Yandex_installments',\n YANDEX_PROMSVYAZBANK = 'Yandex_promsvyazbank',\n YANDEX_QIWI = 'Yandex_qiwi',\n YANDEX_SBERBANK = 'Yandex_sberbank',\n YANDEX_WEBMONEY = 'Yandex_webmoney',\n YANDEXMONEY = 'Yandexmoney',\n YOURGIFT = 'Yourgift',\n ZABKA = 'Zabka',\n ZIP = 'Zip',\n ZIP_POS = 'Zip_pos',\n}\n","import { ref, Ref, watch } from 'vue';\nimport { BentoPaymentMethodType } from '../payment-method.types';\n\n/**\n * Dynamically retrieves the payment method icon SVG from the @adyen/ui-assets-payment-method-icons package.\n *\n * @param type the type of payment method, use the BentoPaymentMethodType enum.\n * @param useFallback if fallback icon should be used in case of error\n * @returns\n */\nexport const usePaymentIcon = (type: Ref<BentoPaymentMethodType>, useFallback = true) => {\n const paymentType = ref(type);\n const paymentIconSrc = ref<string>();\n\n watch(\n paymentType,\n async newPaymentType => {\n if (newPaymentType == null) {\n return;\n }\n try {\n // NOTE: must use the '/dist/svg' so the 'vite-plugin-dynamic-import' can understand the path\n const flag = await import(\n `@adyen/ui-assets-payment-method-icons/dist/svg/${newPaymentType.toLowerCase()}.svg`\n );\n paymentIconSrc.value = flag?.default;\n } catch (e) {\n if (useFallback) {\n const unknownPaymentType = await import(\n '@adyen/ui-assets-payment-method-icons/svg/unknowncard.svg'\n );\n paymentIconSrc.value = unknownPaymentType.default;\n } else {\n paymentIconSrc.value = null;\n }\n }\n },\n { immediate: true }\n );\n\n return paymentIconSrc;\n};\n","<template>\n <div class=\"b-payment-method\">\n <div class=\"b-payment-method__icon-container\">\n <img\n v-if=\"paymentMethodIconSrc\"\n aria-hidden=\"true\"\n class=\"b-payment-method__icon\"\n :class=\"conditionalIconClasses\"\n :alt=\"label\"\n :src=\"paymentMethodIconSrc\"\n />\n <unknown-card-icon v-else aria-hidden=\"true\" />\n </div>\n <div class=\"b-payment-method__label\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\">{{ label }}</bento-typography>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, toRef } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { BentoPaymentMethodType } from './payment-method.types';\n import { usePaymentIcon } from './composables';\n import UnknownCardIcon from '@adyen/ui-assets-payment-method-icons/vue/unknowncard';\n\n /**\n * A payment method type component to display the type's icon and label.\n *\n * @example\n * import { BentoPaymentMethod, BentoPaymentMethodType } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoPaymentMethod },\n * template: `\n * <bento-payment-method :type=\"BentoPaymentMethodType.IDEAL\" />\n * `,\n * setup: () => ({ BentoPaymentMethodType })\n * }\n */\n export default defineComponent({\n name: 'bento-payment-method',\n components: { BentoTypography, UnknownCardIcon },\n inheritAttrs: false,\n props: {\n /**\n * The type of payment method to display.\n */\n type: {\n type: String as PropType<BentoPaymentMethodType>,\n default: BentoPaymentMethodType.UNKNOWNCARD,\n },\n\n /**\n * The label describing to the payment method icon.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Render payment method icon in a smaller size\n */\n small: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const type = toRef(props, 'type');\n const paymentMethodIconSrc = usePaymentIcon(type);\n const conditionalIconClasses = computed(() => ({\n 'b-payment-method__icon--small': props.small,\n }));\n\n return {\n // Values\n paymentMethodIconSrc,\n conditionalIconClasses,\n\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./payment-method.scss\" />\n","<template>\n <div>\n <bento-dropdown v-slot=\"{ value, label }\" v-bind=\"$props\" @input=\"onInput\">\n <bento-payment-method :type=\"value\" :label=\"label\" />\n </bento-dropdown>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import { BentoPaymentMethodListboxOptions } from './dropdown-payment-method.types';\n import { BentoListboxSelectedValue } from '@/types';\n import { BentoPaymentMethod } from '@/components/payment-method';\n import BentoDropdown from '@/components/dropdown/dropdown.vue';\n\n /**\n * A Payment method Dropdown showing a selectable list of countries.\n *\n * @example\n * import { BentoDropdownPaymentMethod, BentoPaymentMethodType } from '@adyen/bento-vue2';\n * import type { BentoPaymentMethodListboxOptions } from '@adyen/bento-vue2'\n *\n * export default {\n * components: { BentoDropdownPaymentMethod },\n * template: `\n * <bento-dropdown-payment-method\n * v-model=\"selectedValue\"\n * :disabled=\"false\"\n * :multiple=\"true\"\n * :isOptionsDisabled=\"option => option.value === BentoPaymentMethodType.VISA\"\n * :items=\"options\"\n * />\n * `,\n * setup() {\n * const selectedValue = ref(BentoPaymentMethodType.IDEAL) // Default value\n * const options: BentoPaymentMethodListboxOptions = [\n * { label: 'Option 1', value: BentoPaymentMethodType.IDEAL },\n * { label: 'Option 2', value: BentoPaymentMethodType.VISA },\n * ];\n * return { options, selectedValue };\n * }\n * }\n */\n export default defineComponent({\n name: 'bento-dropdown-payment-method',\n components: {\n BentoDropdown,\n BentoPaymentMethod,\n },\n inheritAttrs: false,\n props: {\n ...BentoDropdown.props,\n /**\n * The option elements to populate the payment method dropdown with.\n * It must be an array of {@see BentoPaymentMethodListboxOptions }\n * * @property {string} value.label - Text to be displayed in the option\n * * @property {BentoPaymentMethodType} value.value - Payment type code that\n */\n items: {\n type: Array as PropType<BentoPaymentMethodListboxOptions>,\n default: () => [],\n },\n },\n emits: ['input'],\n setup(_props, { emit }) {\n const onInput = (selectedValue: BentoListboxSelectedValue) => emit('input', selectedValue);\n\n return {\n // Methods\n onInput,\n };\n },\n });\n</script>\n","<template>\n <bento-dropdown\n v-slot=\"{ label, data }\"\n v-bind=\"$props\"\n class=\"b-dropdown-tag\"\n :items=\"tagItems\"\n show-slot-content-in-multiple\n @input=\"onInput\"\n >\n <listbox-option-tag :option=\"{ value: label, data, label: '' }\" />\n </bento-dropdown>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import type { BentoTagListboxOptions } from './dropdown-tag.types';\n import type { BentoListboxSelectedValue } from '../../../../../types';\n import { ListboxOptionTag } from '../../../../internal';\n import BentoDropdown from '../../../dropdown.vue';\n\n /**\n * A Tag Dropdown showing a selectable list of tags.\n *\n * @example\n * import { BentoDropdownTag, BentoTagVariant } from '@adyen/bento-vue2';\n * import type { BentoTagListboxOptions } from '@adyen/bento-vue2'\n *\n * export default {\n * components: { BentoDropdownTag },\n * template: `\n * <bento-dropdown-tag\n * v-model=\"selectedValue\"\n * :disabled=\"false\"\n * :items=\"options\"\n * />\n * `,\n * setup() {\n * const selectedValue = ref('unique-id-1') // Default value\n * const options: BentoTagListboxOptions = [\n * { label: 'Offline', value: 'unique-id-1', variant: BentoTagVariant.RED },\n * { label: 'Online', value: 'unique-id-2', variant: BentoTagVariant.GREEN },\n * ];\n * return { options, selectedValue };\n * }\n * }\n */\n export default defineComponent({\n name: 'bento-dropdown-tag',\n components: {\n BentoDropdown,\n ListboxOptionTag,\n },\n inheritAttrs: false,\n props: {\n ...BentoDropdown.props,\n /**\n * The option elements to populate the tag dropdown with.\n * It must be an array of {@see BentoTagListboxOptions }\n * * @property {string} value.label - Text to be displayed in the option\n * * @property {string,number} value.value - Value of the option\n * * @property {BentoTagVariant} value.variant - The BentTag variant shown for the option.\n */\n items: {\n type: Array as PropType<BentoTagListboxOptions>,\n default: () => [],\n },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const onInput = (selectedValue: BentoListboxSelectedValue) => emit('input', selectedValue);\n\n const tagItems = computed(() =>\n props.items?.map(({ label, value, variant }) => ({ label, value, data: variant }))\n );\n\n return {\n // Values\n tagItems,\n\n // Methods\n onInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown-tag.scss\" />\n","<template>\n <div class=\"b-pagination-results-per-page\">\n <bento-typography :el=\"BentoTypographyElement.DIV\">\n <i18n :path=\"translationPathKey\" tag=\"div\" :plural=\"totalCount\">\n <template #itemCount>\n <bento-dropdown\n :id=\"dropdownId\"\n :value=\"itemsPerPage\"\n :items=\"dropdownOptions\"\n class=\"b-pagination-results-per-page__dropdown\"\n :aria-label=\"$t(translationPathKey, { itemCount: itemsPerPage, totalCount })\"\n @input=\"onSelectChange\"\n />\n </template>\n <template v-if=\"!!totalCount\" #totalCount>{{ totalCount }}</template>\n </i18n>\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, ref } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { BentoDropdown } from '@/components/dropdown';\n import { generateUid } from '@/utils/ts/unique-id';\n\n import messages from './messages.json';\n\n const DEFAULT_NUMBER_OF_RESULTS = 50;\n const PREDEFINED_RESULTS_PER_PAGE_VALUES = [\n { label: '10', value: 10 },\n { label: '20', value: 20 },\n { label: '50', value: 50 }, // DEFAULT_NUMBER_OF_RESULTS\n { label: '75', value: 75 },\n { label: '100', value: 100 },\n ];\n\n export default defineComponent({\n name: 'bento-pagination-context-results-per-page',\n i18n: { messages },\n components: {\n BentoDropdown,\n BentoTypography,\n },\n props: {\n /**\n * The amount of items the pager is paging through.\n */\n itemsPerPage: {\n type: Number,\n default: DEFAULT_NUMBER_OF_RESULTS,\n validator: (itemsPerPageValue: number) =>\n PREDEFINED_RESULTS_PER_PAGE_VALUES.some(({ value }) => value === itemsPerPageValue),\n },\n /**\n * The total number of items the pager is paging through.\n */\n totalCount: { type: Number, default: null },\n },\n emits: ['select'],\n setup(props, { emit }) {\n const dropdownId = generateUid('b-pagination-context-number-elements');\n const dropdownOptions = ref(PREDEFINED_RESULTS_PER_PAGE_VALUES);\n\n const onSelectChange = (selectedNumberOfResults: number) => {\n emit('select', selectedNumberOfResults);\n };\n\n const translationPathKey = computed(() => (props.totalCount ? 'showingItemsWithTotal' : 'showingItems'));\n\n return {\n // Values\n dropdownId,\n dropdownOptions,\n translationPathKey,\n\n // Enums\n BentoTypographyElement,\n\n // Events\n onSelectChange,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./pagination-results-per-page.scss\" />\n","<template>\n <div class=\"b-pagination-context\">\n <bento-typography v-if=\"totalPages > 1\" :el=\"BentoTypographyElement.DIV\">\n <i18n path=\"pageOfTotalPages\" tag=\"div\">\n <template #page>\n <bento-dropdown\n :id=\"dropdownId\"\n :value=\"page\"\n :items=\"listOfAvailablePages\"\n :aria-label=\"$t('pageOfTotalPages', { page, totalPages })\"\n class=\"b-pagination-context__dropdown\"\n @input=\"onPageSelectChange\"\n />\n </template>\n <template #totalPages>{{ totalPages }}</template>\n </i18n>\n </bento-typography>\n <bento-typography v-else-if=\"totalPages === 1\" :el=\"BentoTypographyElement.SPAN\">\n {{ $t('pageOneOfOne') }}\n </bento-typography>\n <bento-typography v-else :el=\"BentoTypographyElement.SPAN\">\n {{ $t('pageNumber', { page }) }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { BentoDropdown } from '@/components/dropdown';\n import { BentoListboxOptionItem } from '@/types';\n import { generateUid } from '@/utils/ts/unique-id';\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-pagination-context',\n components: {\n BentoDropdown,\n BentoTypography,\n },\n props: {\n /**\n * The current page number of the pager.\n */\n page: {\n type: Number,\n default: 1,\n validator: (value: number) => Number.isFinite(value) && value > 0,\n },\n\n /**\n * The total number of items the pager is paging through.\n */\n totalPages: { type: Number, default: null },\n },\n emits: ['page-selected'],\n setup(props, { emit }) {\n const dropdownId = generateUid('bento-pagination-context-current-page');\n const onPageSelectChange = (selectedPage: string | number) => emit('page-selected', selectedPage);\n\n // Generate a list of pages from 1 to \"totalPages\"\n const transformIntoOption = (value: number): BentoListboxOptionItem => ({\n label: value.toString(),\n value,\n });\n const transformToPageNumber = (_, index) => index + 1;\n const listOfAvailablePages = computed(() =>\n Array.from(new Array(props.totalPages), transformToPageNumber).map(transformIntoOption)\n );\n\n return {\n // Values\n dropdownId,\n listOfAvailablePages,\n\n // Events\n onPageSelectChange,\n\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./pagination-context.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M4.25 11C4.25 11.4142 4.58579 11.75 5 11.75C5.41421 11.75 5.75 11.4142 5.75 11L5.75 4.99999C5.75 4.58577 5.41421 4.24999 5 4.24999C4.58579 4.24999 4.25 4.58577 4.25 4.99998L4.25 11Z\" clip-rule=\"evenodd\"/><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.5303 5.53031C11.8232 5.23742 11.8232 4.76255 11.5303 4.46965C11.2374 4.17676 10.7626 4.17676 10.4697 4.46965L7.46967 7.46965C7.17678 7.76255 7.17678 8.23742 7.46967 8.53031L10.4697 11.5303C10.7626 11.8232 11.2374 11.8232 11.5303 11.5303C11.8232 11.2374 11.8232 10.7625 11.5303 10.4697L9.06066 7.99998L11.5303 5.53031Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M4.46967 10.4697C4.17678 10.7626 4.17678 11.2374 4.46967 11.5303C4.76256 11.8232 5.23744 11.8232 5.53033 11.5303L8.53033 8.53032C8.82322 8.23743 8.82322 7.76256 8.53033 7.46966L5.53033 4.46966C5.23744 4.17677 4.76256 4.17677 4.46967 4.46966C4.17678 4.76256 4.17678 5.23743 4.46967 5.53032L6.93934 7.99999L4.46967 10.4697Z\" clip-rule=\"evenodd\"/><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.75 4.99999C11.75 4.58578 11.4142 4.24999 11 4.24999C10.5858 4.24999 10.25 4.58578 10.25 4.99999V11C10.25 11.4142 10.5858 11.75 11 11.75C11.4142 11.75 11.75 11.4142 11.75 11L11.75 4.99999Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M10.0303 4.46967C10.3232 4.76256 10.3232 5.23744 10.0303 5.53033L7.56066 8L10.0303 10.4697C10.3232 10.7626 10.3232 11.2374 10.0303 11.5303C9.73744 11.8232 9.26256 11.8232 8.96967 11.5303L5.96967 8.53033C5.67678 8.23744 5.67678 7.76256 5.96967 7.46967L8.96967 4.46967C9.26256 4.17678 9.73744 4.17678 10.0303 4.46967Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M5.96967 11.5303C5.67678 11.2374 5.67678 10.7626 5.96967 10.4697L8.43934 8L5.96967 5.53033C5.67678 5.23744 5.67678 4.76256 5.96967 4.46967C6.26256 4.17678 6.73744 4.17678 7.03033 4.46967L10.0303 7.46967C10.171 7.61032 10.25 7.80109 10.25 8C10.25 8.19891 10.171 8.38968 10.0303 8.53033L7.03033 11.5303C6.73744 11.8232 6.26256 11.8232 5.96967 11.5303Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div class=\"b-pagination-controls\">\n <!-- Navigate to the first page -->\n <bento-button\n :disabled=\"isCurrentPageFirst\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n tertiary\n condensed\n @click=\"navigate(1)\"\n >\n <template #iconLeft>\n <skip-left :svg-title=\"$t('navigateToTheFirstPage')\" />\n </template>\n </bento-button>\n\n <!-- Navigate to the previous page -->\n <bento-button\n :disabled=\"isCurrentPageFirst\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n tertiary\n condensed\n @click=\"navigate(page - 1)\"\n >\n <template #iconLeft>\n <chevron-left :svg-title=\"$t('navigateToThePreviousPage')\" />\n </template>\n </bento-button>\n\n <!-- Navigate to the next page -->\n <bento-button\n :disabled=\"isNextButtonDisabled\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n tertiary\n condensed\n @click=\"navigate(page + 1)\"\n >\n <template #iconLeft>\n <chevron-right :svg-title=\"$t('navigateToTheNextPage')\" />\n </template>\n </bento-button>\n\n <!-- Navigate to the last page -->\n <bento-button\n :disabled=\"isLastPageButtonDisabled\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n tertiary\n condensed\n @click=\"navigate(totalPages)\"\n >\n <template #iconLeft>\n <skip-right :svg-title=\"$t('navigateToTheLastPage')\" />\n </template>\n </bento-button>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import SkipLeft from '@adyen/ui-assets-icons-16/vue/skip-left';\n import SkipRight from '@adyen/ui-assets-icons-16/vue/skip-right';\n import ChevronLeft from '@adyen/ui-assets-icons-16/vue/chevron-left-small';\n import ChevronRight from '@adyen/ui-assets-icons-16/vue/chevron-right-small';\n\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'adl-pagination-controls',\n components: {\n BentoButton,\n SkipLeft,\n SkipRight,\n ChevronLeft,\n ChevronRight,\n },\n props: {\n /**\n * Use to determine if the pager has a \"next page\".\n */\n hasNext: { type: Boolean, default: null },\n\n /**\n * The current page number of the pager.\n */\n page: { type: Number, required: true },\n\n /**\n * The current page number of the pager.\n */\n totalPages: { type: Number, default: null },\n },\n emits: ['navigate'],\n setup(props, { emit }) {\n const isCurrentPageFirst = computed(() => props.page === 1);\n const isCurrentPageLast = computed(() => props.page === props.totalPages);\n const isNextButtonDisabled = computed(() => {\n const hasNoNextPage = !props.hasNext;\n return hasNoNextPage || isCurrentPageLast.value;\n });\n const isLastPageButtonDisabled = computed(() => {\n const hasNoNextPage = !props.hasNext;\n const hasNoTotalPagesNumber = !props.totalPages;\n\n return hasNoNextPage || isCurrentPageLast.value || hasNoTotalPagesNumber;\n });\n\n const navigate = (pageArg: number) => {\n emit('navigate', pageArg);\n };\n\n return {\n // Values\n isNextButtonDisabled,\n isCurrentPageFirst,\n isCurrentPageLast,\n isLastPageButtonDisabled,\n\n // Events\n navigate,\n\n // Enums\n BentoButtonVariant,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./pagination-controls.scss\" />\n","<template>\n <div class=\"b-pagination\">\n <nav :aria-label=\"ariaLabel\" class=\"b-pagination__navigation\" :class=\"navigationConditionalClasses\">\n <bento-pagination-results-per-page\n v-if=\"!hidePageSize\"\n class=\"b-pagination__results-per-page\"\n :items-per-page=\"size\"\n :total-count=\"totalCount\"\n @select=\"onItemsPerPageChange\"\n />\n\n <div class=\"b-pagination__page-navigator\">\n <bento-pagination-context\n class=\"b-pagination__context\"\n :total-pages=\"totalPages\"\n :page=\"page\"\n :size=\"size\"\n :total-count=\"totalCount\"\n @page-selected=\"onPageSelected\"\n />\n\n <div class=\"b-pagination__divider\"></div>\n\n <bento-pagination-controls\n class=\"b-pagination__controls\"\n :has-next=\"hasNext\"\n :page=\"page\"\n :total-pages=\"totalPages\"\n @navigate=\"navigate\"\n />\n </div>\n </nav>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import BentoPaginationResultsPerPage from './components/pagination-results-per-page/pagination-results-per-page.vue';\n import BentoPaginationContext from './components/pagination-context/pagination-context.vue';\n import BentoPaginationControls from './components/pagination-controls/pagination-controls.vue';\n import messages from './messages.json';\n\n /**\n * Paginiation component to help users page through data sets.\n *\n * There are two ways of doing navigation in this component:\n * 1. (Basic) You tell the component if there is a next page (hasNext)\n * 2. (Enhanced) You tell the component:\n * - How many total items exist (totalCount)\n * - The max number of items that you show/fetch per page (size)\n * - In this case you should not set the hasNext props\n *\n * If you have the data available and opt to use the Enhanced way you get extra controls:\n * - Page dropdown selector\n * - Last page button\n * - \"Showing 10 of 200 items\" text\n *\n * @usage\n * import { BentoPagination } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoPagination },\n * template: `\n * <bento-pagination :has-next=\"isNextPage\" />\n * `,\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-pagination',\n components: {\n BentoPaginationContext,\n BentoPaginationControls,\n BentoPaginationResultsPerPage,\n },\n inheritAttrs: false,\n props: {\n /**\n * A brief description of the purpose of the navigation (for a11y).\n * Omit the term \"navigation\", as the screen reader will read both the role and the contents of the label.\n */\n ariaLabel: { type: String, default: null },\n\n /**\n * Use to determine if the pager has a \"next page\".\n */\n hasNext: { type: Boolean, default: null },\n\n /**\n * Toggles the visibility of the \"results per page\" part of the pagination component.\n */\n hidePageSize: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The current page number of the pager.\n */\n page: {\n type: Number,\n default: 1,\n validator: (value: number) => Number.isFinite(value) && value > 0,\n },\n\n /**\n * The size of the items the pager is paging through.\n */\n size: {\n type: Number,\n default: 20,\n validator: (itemsPerPageValue: number) => [10, 20, 50, 75, 100].includes(itemsPerPageValue),\n },\n\n /**\n * The total number of items the pager is paging through.\n */\n totalCount: { type: Number, default: null },\n },\n emits: ['navigate', 'items-page', 'update:page', 'update:size'],\n setup(props, { emit }) {\n const totalPages = computed(() =>\n !props.totalCount || !props.size ? null : Math.ceil(props.totalCount / props.size)\n );\n\n const navigate = (pageArg: number) => {\n emit('navigate', pageArg);\n emit('update:page', pageArg);\n };\n\n const onPageSelected = (pageNumber: number) => {\n navigate(pageNumber);\n };\n\n const onItemsPerPageChange = (elements: number) => {\n emit('items-page', elements);\n emit('update:size', elements);\n\n // Always go to first page when the\n // number of items page changes\n navigate(1);\n };\n\n const navigationConditionalClasses = computed(() => ({\n 'b-pagination__navigation--no-results-per-page': props.hidePageSize,\n }));\n\n return {\n // Values\n totalPages,\n navigationConditionalClasses,\n\n // Events\n navigate,\n onItemsPerPageChange,\n onPageSelected,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./pagination.scss\" />\n","import { BentoAvatarListboxOptions } from '@/components/dropdown/components/variants/dropdown-avatar/dropdown-avatar.types';\nimport { BentoListboxIsOptionDisabled, BentoListboxOptions, BentoListboxSelectedValue, OmitStrict } from '@/types';\nimport { BentoCountryListboxOptions } from '@/components/dropdown/components/variants/dropdown-country/dropdown-country.types';\nimport { BentoTagListboxOptions } from '@/components/dropdown/components/variants/dropdown-tag/dropdown-tag.types';\nimport { BentoCountryVariant } from '@/components/country';\nimport { BentoCurrencyListboxOptions } from '@/components/dropdown/components/variants/dropdown-currency/dropdown-currency.types';\nimport { BentoPaymentMethodListboxOptions } from '@/components/dropdown/components/variants/dropdown-payment-method/dropdown-payment-method.types';\nimport {\n BentoDatePickerFirstDayOfWeek,\n BentoDatePickerIsDateDisabled,\n BentoDatePickerRangeDate,\n} from '../date-picker/date-picker.types';\n\nexport interface BentoSelectFilterOptions {\n /**\n * Option items for the list-box\n */\n listboxItems: BentoListboxOptions;\n\n /**\n * Defines if the list-box should be a multi-select filter\n */\n multiple?: boolean;\n\n /**\n * The translation object to handle any custom transations. e.g. perisistent filter labels.\n */\n messages?: {\n [key: string]: {\n persistentButtonLabelPartiallySelected: string;\n persistentButtonLabelAllSelected: string;\n [key: string]: string;\n };\n };\n\n /**\n * A function that defines which option in the list-box is disabled\n */\n isOptionDisabled?: BentoListboxIsOptionDisabled;\n}\nexport type BentoSelectAvatarFilterOptions = OmitStrict<BentoSelectFilterOptions, 'listboxItems'> & {\n listboxItems: BentoAvatarListboxOptions;\n};\nexport type BentoSelectCountryFilterOptions = OmitStrict<BentoSelectFilterOptions, 'listboxItems'> & {\n listboxItems: BentoCountryListboxOptions;\n variant: BentoCountryVariant;\n};\nexport type BentoSelectCurrencyFilterOptions = OmitStrict<BentoSelectFilterOptions, 'listboxItems'> & {\n listboxItems: BentoCurrencyListboxOptions;\n};\nexport type BentoSelectTagFilterOptions = OmitStrict<BentoSelectFilterOptions, 'listboxItems'> & {\n listboxItems: BentoTagListboxOptions;\n};\n\nexport type BentoSelectPaymentMethodFilterOptions = OmitStrict<BentoSelectFilterOptions, 'listboxItems'> & {\n listboxItems: BentoPaymentMethodListboxOptions;\n};\n\n// Date\nexport interface BentoDateFilterOptions {\n firstDayOfWeek?: BentoDatePickerFirstDayOfWeek;\n isDateDisabled?: BentoDatePickerIsDateDisabled;\n}\nexport interface BentoDateRangeFilterOptions {\n numberOfMonths?: number;\n firstDayOfWeek?: BentoDatePickerFirstDayOfWeek;\n isDateDisabled?: BentoDatePickerIsDateDisabled;\n}\n\nexport type BentoInputFilterValue = string | null;\nexport type BentoSelectFilterValue = BentoListboxSelectedValue;\nexport type BentoBooleanFilterValue = string | null;\nexport type BentoDateFilterValue = Date | null;\nexport type BentoDateRangeFilterValue = BentoDatePickerRangeDate | null;\nexport type BentoFilterBarValue =\n | BentoInputFilterValue\n | BentoSelectFilterValue\n | BentoBooleanFilterValue\n | BentoDateFilterValue\n | BentoDateRangeFilterValue;\n\nexport type BentoFilterOptions =\n | BentoSelectFilterOptions\n | BentoSelectAvatarFilterOptions\n | BentoSelectCountryFilterOptions\n | BentoSelectCurrencyFilterOptions\n | BentoSelectPaymentMethodFilterOptions\n | BentoSelectTagFilterOptions\n | BentoDateFilterOptions\n | BentoDateRangeFilterOptions\n | undefined;\n\nexport enum BentoFilterEvent {\n // Fires upon the user interacting with the filter\n INPUT = 'input',\n // Fires on the (new) filter values being applied\n UPDATE = 'update',\n}\n\nexport enum BentoFilterBarEvent {\n INPUT = 'input',\n}\n\nexport enum BentoFilterItemType {\n INPUT = 'BentoInputFilter',\n BOOLEAN = 'BentoBooleanFilter',\n RANGE = 'BentoRangeFilter',\n // Select\n SELECT = 'BentoSelectFilter',\n SELECT_AVATAR = 'BentoSelectAvatarFilter',\n SELECT_COUNTRY = 'BentoSelectCountryFilter',\n SELECT_CURRENCY = 'BentoSelectCurrencyFilter',\n SELECT_PAYMENT_METHOD = 'BentoSelectPaymentMethodFilter',\n SELECT_TAG = 'BentoSelectTagFilter',\n // Date\n DATE = 'BentoDateFilter',\n DATE_RANGE = 'BentoDateRangeFilter',\n}\n\nexport interface BentoFilterModel {\n field: string;\n label: string;\n description?: string;\n type: BentoFilterItemType;\n options?: BentoFilterOptions;\n value?: BentoFilterBarValue;\n defaultValue?: BentoFilterBarValue;\n visible?: boolean;\n}\n\nexport type BentoFilterBarModel = Array<BentoFilterModel>;\n","import { PopperContainerPosition } from '../popper-container';\n\nexport const BentoPopoverPositions = { ...PopperContainerPosition };\nexport type BentoPopoverPositions = PopperContainerPosition;\n","<template>\n <bento-typography :strongest=\"isStrongest\" :variant=\"titleVariant\" :el=\"BentoTypographyElement.SPAN\">\n {{ title }}\n </bento-typography>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n export default defineComponent({\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Indicates if the popover contains an image.\n */\n isImageTitle: { type: Boolean, default: false },\n\n /**\n * Indicates the title you want to give the popover.\n */\n title: { type: String, default: null },\n },\n setup(props) {\n // Use strongest only when it has no image\n const isStrongest = computed(() => !props.isImageTitle);\n\n // If an image is present, change the variant from BODY to SUBTITLE and remove the \"strongest\" property of the title\n const titleVariant = computed(() =>\n props.isImageTitle ? BentoTypographyVariant.SUBTITLE : BentoTypographyVariant.BODY\n );\n\n return {\n // Values\n isStrongest,\n titleVariant,\n\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.4697 12.5303C11.7626 12.8232 12.2374 12.8232 12.5303 12.5303C12.8232 12.2374 12.8232 11.7626 12.5303 11.4697L9.06066 8L12.5303 4.53033C12.8232 4.23744 12.8232 3.76256 12.5303 3.46967C12.2374 3.17678 11.7626 3.17678 11.4697 3.46967L8 6.93934L4.53033 3.46967C4.23744 3.17678 3.76256 3.17678 3.46967 3.46967C3.17678 3.76256 3.17678 4.23744 3.46967 4.53033L6.93934 8L3.46967 11.4697C3.17678 11.7626 3.17678 12.2374 3.46967 12.5303C3.76256 12.8232 4.23744 12.8232 4.53033 12.5303L8 9.06066L11.4697 12.5303Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <bento-button :class=\"conditionalClass\" :variant=\"BentoButtonVariant.TERTIARY\" @click=\"$emit('click')\">\n <template #iconLeft>\n <cross-icon svg-title=\"dismiss\" />\n </template>\n </bento-button>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import CrossIcon from '@adyen/ui-assets-icons-16/vue/cross';\n\n export default defineComponent({\n name: 'bento-popover-dismiss-button',\n components: { BentoButton, CrossIcon },\n props: {\n onImage: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const conditionalClass = computed(() => ({ 'b-popover-dismiss-button--on-image': props.onImage }));\n\n return {\n // Values\n conditionalClass,\n\n // Enums\n BentoButtonVariant,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./popover-dismiss-button.scss\" />\n","<template>\n <Transition name=\"b-appear\">\n <popper-container\n v-if=\"open\"\n class=\"b-popover\"\n :aria-role=\"PopperContainerAriaRole.POPOVER\"\n :aria-label=\"computedAriaLabel\"\n :target-element=\"targetElement\"\n :position=\"position\"\n :offset=\"[0, 2]\"\n :modifiers=\"modifiers\"\n :fixed-positioning=\"fixedPositioning\"\n :disabled-focus-trap=\"disableFocusTrap\"\n :class=\"conditionalClasses\"\n :arrow=\"{ classes: ['b-popover__arrow'] }\"\n >\n <div v-if=\"$slots.image\" class=\"b-popover__image\">\n <div v-if=\"dismissible\" class=\"b-popover__image-dismiss-button\">\n <bento-popover-dismiss-button on-image @click=\"dismissPopover\" />\n </div>\n <slot name=\"image\"></slot>\n </div>\n <div v-if=\"title\" class=\"b-popover__header\">\n <div class=\"b-popover__header-title\">\n <slot v-if=\"$slots.headerIcon\" name=\"headerIcon\"></slot>\n <bento-popover-title :title=\"title\" :is-image-title=\"!!$slots.image\" />\n </div>\n <div v-if=\"dismissible && !$slots.image\">\n <bento-popover-dismiss-button @click=\"dismissPopover\" />\n </div>\n </div>\n\n <div v-if=\"$slots.default\" class=\"b-popover__content\" :class=\"contentConditionalClasses\">\n <slot></slot>\n </div>\n\n <div v-if=\"actions\" class=\"b-popover__footer\">\n <bento-button-actions :actions=\"actions\" :layout=\"actionsLayout\"></bento-button-actions>\n </div>\n </popper-container>\n </Transition>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, toRefs } from 'vue';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { PopperContainer, PopperContainerAriaRole } from '@/components/popper-container';\n import { BentoPopoverPositions } from './popover.types';\n import { BentoButtonActions, BentoButtonActionsLayout, BentoButtonActionsList } from '@/components/button';\n import BentoPopoverTitle from './components/popover-title/popover-title.vue';\n import BentoPopoverDismissButton from './components/popover-dismiss-button/popover-dismiss-button.vue';\n\n /**\n * Example description of the component...\n *\n * @example\n * import { BentoPopover } from '@adyen/adl-vue2';\n *\n * export default {\n * components: { BentoPopover },\n * template: `\n * <bento-popover>\n * ...Example code of the component\n * </bento-popover>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-popover',\n components: {\n BentoButtonActions,\n BentoPopoverDismissButton,\n BentoPopoverTitle,\n PopperContainer,\n },\n inheritAttrs: true, // Have to do this to be able to add class for data picker\n props: {\n /**\n * List of actions that will be used to render the buttons.\n * First element in the list will be rendered as \"primary\".\n * All elements after the first will be rendered as \"secondary\".\n *\n * Each object in the list should have a `title`, an `event` and\n * (optional) a Vue `icon` from the library `@adyen/ui-assets-icons-16`.\n *\n * `title`: Button's text.\n *\n * `event`: Event triggered when clicking the Button.\n *\n * `icon`: Vue Icon from the library `@adyen/ui-assets-icons-16`.\n *\n * ```\n * [{\n * title: 'Primary',\n * event: () => { ... },\n * icon: FourPeopleIcon\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * }]\n * ```\n */\n actions: {\n type: Array as PropType<BentoButtonActionsList>,\n default: null,\n },\n\n /**\n * Defines the layout in which the button actions is presented.\n * It can be one of:\n *\n * @values BUTTONS_END\n * @values FILL_CONTAINER\n * @values SPACE_BETWEEN\n * @values VERTICAL_STACK\n */\n actionsLayout: {\n type: String as PropType<BentoButtonActionsLayout>,\n default: BentoButtonActionsLayout.BUTTONS_END,\n validator: (value: BentoButtonActionsLayout) => Object.values(BentoButtonActionsLayout).includes(value),\n },\n\n /**\n * Defines a string value that provides an accessible name for the popover.\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * Adds a divider line to the actions section, reduces the top/bottom paddings and removes all padding in the \"default\" slot.\n */\n divider: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Supports disabling focus trap functionality to avoid scroll into view behavior when we don't need it.\n * */\n disableFocusTrap: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds a \"dismiss\" icon that triggers the \"dismiss\" event.\n */\n dismissible: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the size of the container to fit its content\n */\n fitContent: { type: Boolean, default: false },\n\n /**\n * Instructs popover to be visible outside of the containing container.\n * Useful when component would be used in limited containers like Modal, Side panel, etc.\n * https://popper.js.org/docs/v2/constructors/#strategy\n */\n fixedPositioning: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Toggles the popover open and closed\n */\n open: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Displays the popover in a large size.\n */\n large: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Custom set of modifiers. Useful for low-level control over Popper behavior in some really complex use cases.\n */\n modifiers: { type: Array, default: null },\n\n /**\n * Popover's position relative to the target element.\n * Possible values are:\n * 'auto', 'auto-start', 'auto-end',\n * 'top', 'top-start', 'top-end'\n * 'right', 'right-start', 'right-end'\n * 'bottom', 'bottom-start', 'bottom-end'\n * 'left', 'left-start', 'left-end'\n */\n position: {\n type: String as PropType<BentoPopoverPositions>,\n default: BentoPopoverPositions.TOP,\n validator: (value: BentoPopoverPositions) => Object.values(BentoPopoverPositions).includes(value),\n },\n\n /**\n * Displays the popover in a small size.\n */\n small: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Indicates the title you want to give the popover.\n */\n title: {\n type: String,\n default: null,\n },\n\n /**\n * Popover's target element.\n * The popover will position itself relatively to target element, in specified position.\n */\n targetElement: {\n type: PopperContainer.props?.targetElement.type,\n required: true,\n },\n /**\n * Displays the popover without padding.\n */\n withoutSpace: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['dismiss'],\n setup(props, { emit }) {\n const { ariaLabel, title } = toRefs(props);\n\n const computedAriaLabel = useAriaLabel({ ariaLabel, label: title });\n\n const conditionalClasses = computed(() => ({\n 'b-popover--small': props.small && !props.large,\n 'b-popover--with-divider': !!props.divider,\n 'b-popover--large': props.large && !props.small,\n 'b-popover--fit-content': props.fitContent,\n 'b-popover--without-space': props.withoutSpace,\n }));\n\n const contentConditionalClasses = computed(() => ({\n 'b-popover__content--with-title': !!props.title,\n }));\n\n const dismissPopover = () => emit('dismiss');\n\n return {\n // Values\n conditionalClasses,\n contentConditionalClasses,\n computedAriaLabel,\n\n // Enums\n PopperContainerAriaRole,\n\n // Events\n dismissPopover,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./popover.scss\" />\n","export enum BentoBaseButtonPropClass {\n DESTRUCTIVE = 'critical',\n ICON_ONLY = 'icon-only',\n}\n\nexport enum BentoBaseButtonEvent {\n BLUR = 'blur',\n CLICK = 'click',\n FOCUS = 'focus',\n KEYDOWN_ESC = 'keydown.esc',\n}\n\nexport enum BaseButtonType {\n BUTTON = 'button',\n RESET = 'reset',\n SUBMIT = 'submit',\n}\n","<template>\n <button\n class=\"b-base-button\"\n :class=\"conditionalClasses\"\n :disabled=\"disabled\"\n :type=\"type\"\n :aria-expanded=\"ariaAttributes['aria-expanded']\"\n @click=\"onClickButton\"\n >\n <span v-if=\"hasSlot('iconLeft')\" class=\"b-base-button__icon-left\" data-testid=\"icon-button-left\">\n <slot name=\"iconLeft\" />\n </span>\n <bento-typography\n v-if=\"hasSlot('default')\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n class=\"b-base-button__label\"\n >\n <slot />\n </bento-typography>\n <span v-if=\"hasSlot('iconRight')\" class=\"b-base-button__icon-right\" data-testid=\"icon-button-right\">\n <slot name=\"iconRight\" />\n </span>\n </button>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoBaseButtonEvent, BentoBaseButtonPropClass } from './base-button.types';\n import type { ButtonHTMLAttributes } from 'vue/types/jsx';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { Booleanish } from '@/types';\n\n /**\n * Base button component to use as a base for all the various types of bento buttons. For internal use only.\n *\n * * @example\n * import { BaseButton, BaseButtonEvent } from '@/components/internal/base-button';\n * import YourImportedIcon from @adyen/ui-assets-icons-16/example-icon';\n *\n * export default {\n * components: { BaseButton, YourImportedIcon },\n * props: {\n * text:\n * },\n * template: `\n * <base-button class=\"your-custom-button-styles\" @click=\"onClick\">\n * <template #iconLeft><your-imported-icon></template>\n * Button text\n * <template #iconRight><your-imported-icon></template>\n * </base-button>\n * `,\n * emits: [BentoButtonEvent.CLICK],\n * setup: (prps, { emit }) => {\n * const onClick = value => emit(BaseButtonEvent.CLICK, value);\n *\n * return {\n * onClick,\n * };\n * }\n * }\n */\n export default defineComponent({\n name: 'base-button',\n components: { BentoTypography },\n props: {\n /**\n * Disables button functionality\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * Displays button as critical\n */\n critical: {\n type: Boolean,\n default: false,\n },\n /**\n * The default behavior of the button.\n * Possible values are: 'button', 'reset', 'submit'\n */\n type: {\n type: String as PropType<ButtonHTMLAttributes['type']>,\n default: 'button',\n },\n },\n emits: [\n BentoBaseButtonEvent.CLICK,\n BentoBaseButtonEvent.FOCUS,\n BentoBaseButtonEvent.BLUR,\n BentoBaseButtonEvent.KEYDOWN_ESC,\n ],\n setup(props, { slots, emit, attrs }) {\n const ariaAttributes = computed(() => ({\n 'aria-expanded': attrs['aria-expanded']?.toString() as Booleanish,\n }));\n\n const conditionalClasses = computed(() => ({\n [`b-base-button--${BentoBaseButtonPropClass.DESTRUCTIVE}`]: props.critical,\n [`b-base-button--${BentoBaseButtonPropClass.ICON_ONLY}`]: !slots.default,\n }));\n\n const onClickButton = (e: MouseEvent) => {\n if (!props.disabled) {\n emit(BentoBaseButtonEvent.CLICK, e);\n }\n };\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n ariaAttributes,\n conditionalClasses,\n\n // Methods\n onClickButton,\n hasSlot: hasSlot(slots),\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./base-button.scss\" />\n","<template>\n <base-button\n class=\"b-base-filter-button\"\n :class=\"conditionalClasses\"\n :disabled=\"disabled\"\n :aria-label=\"computedAriaLabel\"\n type=\"button\"\n @click=\"onClickButton\"\n >\n <div class=\"b-base-filter-button__default-container\">\n <bento-typography\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n :stronger=\"bold\"\n class=\"b-base-filter-button__label\"\n >\n <slot />\n </bento-typography>\n\n <div v-if=\"amountAppliedValues && !hasChevron\" class=\"b-base-filter-button__counter-wrapper\">\n <bento-typography\n class=\"b-base-filter-button__counter\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n >\n {{ amountAppliedValues }}\n </bento-typography>\n </div>\n </div>\n <template v-if=\"hasChevron\" #iconRight>\n <chevron-up-icon v-if=\"isFilterOpen\" aria-hidden=\"true\" />\n <chevron-down-icon v-else aria-hidden=\"true\" />\n </template>\n </base-button>\n</template>\n\n<script lang=\"ts\">\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { computed, defineComponent } from 'vue';\n import { BaseButton, BentoBaseButtonEvent } from '@/components/internal/base-button';\n import ChevronUpIcon from '@adyen/ui-assets-icons-16/vue/chevron-up';\n import ChevronDownIcon from '@adyen/ui-assets-icons-16/vue/chevron-down';\n\n /**\n * A filter button used as a base to extend all sorts of filter buttons.\n * Used in the bento-filter-bar and all-filter-modals components.\n *\n * @usage\n * export default {\n * components: { BaseFilterButton },\n * template: `\n * <base-filter-button disabled>\n * Filter\n * </base-filter-button>\n * `,\n * }\n */\n export default defineComponent({\n name: 'base-filter-button',\n components: { BaseButton, BentoTypography, ChevronUpIcon, ChevronDownIcon },\n props: {\n /**\n * The number of applies values within the filter.\n * e.g. if 2 items in a dropdown filter have been applied, the number 2 will be shown here.\n */\n amountAppliedValues: { type: Number, default: null },\n\n /**\n * Disables button functionality.\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Signifies if the filter is open or closed.\n */\n isFilterOpen: { type: Boolean, default: false },\n\n /**\n * Toggles if a chevron icon should be displayed in the button.\n * The chevron will change depending on the open state of the filter.\n */\n hasChevron: { type: Boolean, default: false },\n\n /**\n * Renders the text in a stronger variant.\n */\n bold: { type: Boolean, default: false },\n },\n emits: [BentoBaseButtonEvent.CLICK],\n setup(props, { slots, emit }) {\n const labelSlot = computed((): string => (slots.default ? slots.default()[0]?.text : null));\n const computedAriaLabel = useAriaLabel({ ariaLabel: labelSlot });\n\n const conditionalClasses = computed(() => ({\n [`b-base-filter-button--with-chevron`]: props.hasChevron,\n [`b-base-filter-button--filter-open`]: props.isFilterOpen,\n }));\n\n const onClickButton = () => {\n if (!props.disabled) {\n emit(BentoBaseButtonEvent.CLICK);\n }\n };\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n computedAriaLabel,\n conditionalClasses,\n\n // Methods\n onClickButton,\n hasSlot: hasSlot(slots),\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./base-filter-button.scss\" />\n","<template>\n <base-filter-button\n class=\"b-filter-bar-filter-button\"\n :class=\"conditionalClasses\"\n :bold=\"true\"\n :amount-applied-values=\"appliedFiltersCount\"\n :has-chevron=\"hasChevron\"\n :is-filter-open=\"isFilterOpen\"\n :disabled=\"disabled\"\n @click=\"onClick\"\n >\n {{ label }}\n </base-filter-button>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import BaseFilterButton from '../../../base-filter-button/base-filter-button.vue';\n\n export default defineComponent({\n name: 'filter-bar-filter-button',\n components: { BaseFilterButton },\n props: {\n /**\n * Button label to be displayed\n */\n label: { type: String, required: true },\n\n /**\n * Total count of applied filters\n */\n appliedFiltersCount: { type: Number, default: null },\n\n /**\n * Indicates whether the button has a chevron\n */\n hasChevron: { type: Boolean, default: false },\n\n /**\n * Indicates whether the filter popover tied to this button is showing\n */\n isFilterOpen: { type: Boolean, default: false },\n\n /**\n * Disables button functionality.\n */\n disabled: { type: Boolean, default: false },\n },\n emits: ['click'],\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n [`b-filter-bar-filter-button--with-counter`]: props.appliedFiltersCount,\n [`b-filter-bar-filter-button--filter-open`]: props.isFilterOpen,\n }));\n\n const onClick = () => {\n emit('click');\n };\n\n return {\n conditionalClasses,\n\n onClick,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./filter-bar-filter-button.scss\"></style>\n","export enum BaseFilterEvent {\n APPLY = 'apply',\n CLEAR = 'clear',\n OPEN = 'open',\n CLOSE = 'close',\n RESET = 'reset',\n}\n","<template>\n <div v-if=\"onlySlot\">\n <slot></slot>\n </div>\n <div v-else v-bento-click-outside-directive=\"onClickOutside\" class=\"b-base-filter\" @keydown.esc=\"closePopover\">\n <filter-bar-filter-button\n ref=\"filterButtonRef\"\n :has-chevron=\"isPersistentFilter\"\n :is-filter-open=\"isFilterOpen\"\n :label=\"buttonLabel || label\"\n :applied-filters-count=\"appliedFiltersCount\"\n @click=\"onClickFilter\"\n />\n\n <bento-popover\n v-if=\"filterButtonRef\"\n class=\"b-base-filter__popover\"\n divider\n :open=\"isFilterOpen\"\n :actions=\"controlled ? null : actions\"\n :actions-layout=\"BentoButtonActionsLayout.SPACE_BETWEEN\"\n :target-element=\"filterButtonRef\"\n :title=\"controlled ? null : label\"\n :fit-content=\"fitContent\"\n :position=\"BentoPopoverPositions.BOTTOM_START\"\n :without-space=\"controlled\"\n >\n <slot></slot>\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { BentoButtonActionsLayout, BentoButtonVariant } from '@/components/button';\n import { BentoPopover, BentoPopoverPositions } from '@/components/popover';\n import { BentoClickOutsideDirective, BentoTooltipPosition } from '@/directives';\n import { FilterBarFilterButton } from './components';\n import { useI18n } from '@/utils/ts/i18n';\n import { BentoFilterBarValue } from '@/components/filter-bar/filter-bar.types';\n import { BaseFilterEvent } from './base-filter.types';\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-base-filter',\n components: {\n FilterBarFilterButton,\n BentoPopover,\n },\n directives: { BentoClickOutsideDirective },\n props: {\n /**\n * Total count of applied filters\n */\n appliedFiltersCount: { type: Number, default: null },\n\n /**\n * Overrides the label of the popover vsibility toggle button text.\n */\n buttonLabel: { type: String, default: undefined },\n\n /**\n * Default value of the filter to reset to.\n */\n defaultValue: {\n type: [Object, Number, Boolean, Array, String] as PropType<BentoFilterBarValue>,\n default: null,\n },\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 * Allows to handle the controls (apply/clear) from outside\n * of the component\n */\n controlled: { type: Boolean, default: false },\n\n /**\n * Disable the \"apply\" button\n */\n disableApplyButton: { type: Boolean, default: false },\n\n /**\n * Disable the secondary button action.\n */\n disableSecondaryButton: { type: Boolean, default: false },\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 * Sets the size of the container to fit its content\n */\n fitContent: BentoPopover.props.fitContent,\n },\n emits: [\n BaseFilterEvent.APPLY,\n BaseFilterEvent.CLEAR,\n BaseFilterEvent.OPEN,\n BaseFilterEvent.CLOSE,\n BaseFilterEvent.RESET,\n ],\n setup(props, { emit }) {\n const { t } = useI18n({ messages });\n const isFilterOpen = ref(false);\n const filterButtonRef = ref(null);\n\n const isPersistentFilter = computed(() => props.defaultValue !== null);\n\n const closePopover = () => {\n isFilterOpen.value = false;\n emit(BaseFilterEvent.CLOSE);\n };\n const onClickSecondaryAction = () => {\n closePopover();\n if (isPersistentFilter.value) {\n emit(BaseFilterEvent.RESET);\n } else {\n emit(BaseFilterEvent.CLEAR);\n }\n };\n const onClickOutside = () => closePopover();\n const onClickFilter = () => {\n if (isFilterOpen.value) {\n closePopover();\n } else {\n isFilterOpen.value = true;\n emit(BaseFilterEvent.OPEN);\n }\n };\n const onClickApply = () => {\n closePopover();\n emit(BaseFilterEvent.APPLY);\n };\n\n const actions = computed(() => [\n {\n title: t('apply') as string,\n event: onClickApply,\n disabled: props.disableApplyButton,\n },\n {\n title: isPersistentFilter.value ? (t('reset') as string) : (t('clear') as string),\n event: onClickSecondaryAction,\n disabled: props.disableSecondaryButton,\n },\n ]);\n\n return {\n // Values\n actions,\n isFilterOpen,\n isPersistentFilter,\n\n // Enums\n BentoPopoverPositions,\n BentoTooltipPosition,\n\n // Events\n onClickFilter,\n onClickApply,\n onClickSecondaryAction,\n onClickOutside,\n closePopover,\n\n // Refs\n filterButtonRef,\n\n // Enums\n BentoButtonVariant,\n BentoButtonActionsLayout,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./base-filter.scss\"></style>\n","import { computed, ref, watch } from 'vue';\nimport type { Ref } from 'vue';\n\nconst isArray = <T>(value: T) => value instanceof Array;\nconst isValueEmpty = <T>(value: T) =>\n isArray(value) ? (value as []).length === 0 || (value as Array<T>).every(el => el === '') : !value;\nconst isEqual = <T>(first: T, second: T) => JSON.stringify(first) === JSON.stringify(second);\n\nexport const useBaseFilter = <T>(appliedFilter: Ref<T>, defaultFilter: Ref<T>) => {\n const internalFilterValue = ref<T>(appliedFilter.value as T);\n\n watch(\n () => appliedFilter.value,\n () => {\n (internalFilterValue as Ref<T>).value = appliedFilter.value as T;\n }\n );\n\n const isFilterInactive = computed(() => isValueEmpty(appliedFilter.value));\n\n const isSecondaryButtonDisabled = computed(() =>\n defaultFilter.value !== null ? isEqual<T>(defaultFilter.value, appliedFilter.value) : isFilterInactive.value\n );\n const isApplyButtonDisabled = computed(() => {\n const isValueUnchanged = internalFilterValue.value === appliedFilter.value;\n return isValueUnchanged || (isValueEmpty(internalFilterValue.value) && isFilterInactive.value);\n });\n\n return {\n internalFilterValue,\n isSecondaryButtonDisabled,\n isApplyButtonDisabled,\n };\n};\n","import { BentoDropdown } from '@/components/dropdown/';\n\nexport enum BentoInputFieldVariant {\n DEFAULT = 'default',\n PAYMENT_METHOD = 'payment-method',\n STATIC_VALUE = 'static-value',\n DROPDOWN = 'dropdown',\n}\n\nexport enum BentoInputFieldElementPosition {\n START = 'start',\n END = 'end',\n}\n\nexport enum BentoInputFieldStateClass {\n DISABLED = 'disabled',\n ERROR = 'error',\n SMALL_PADDING_LEFT = 'small-padding-left',\n SMALL_PADDING_RIGHT = 'small-padding-right',\n}\n\nexport enum BentoInputFieldType {\n SEARCH = 'search',\n TEXT = 'text',\n NUMBER = 'number',\n}\n\ntype DropdownProps = InstanceType<typeof BentoDropdown>['$props'];\nexport type BentoInputDropdownProps = {\n items: DropdownProps['items'];\n value: DropdownProps['value'];\n};\n\nexport enum BentoInputFieldEvent {\n INPUT = 'input',\n ESCAPE_PRESSED = 'escape-pressed',\n UPDATE_DROPDOWN = 'update:dropdown',\n DROPDOWN_INPUT = 'dropdown-input',\n FOCUS = 'focus',\n CHANGE = 'change',\n BLUR = 'blur',\n}\n","<template>\n <bento-typography\n class=\"b-input-field\"\n data-testid=\"input-text-container\"\n :class=\"inputFieldConditionalClasses\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <label\n v-if=\"hasSlot('default')\"\n :for=\"inputFieldId\"\n class=\"b-input-field__label\"\n data-testid=\"input-field-label\"\n @click=\"focusInput\"\n >\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.BODY\" stronger>\n <slot></slot>\n </bento-typography>\n </label>\n\n <div class=\"b-input-field__input-box\" :aria-disabled=\"disabled\">\n <!-- Optional Icon for Default text variant -->\n <span\n v-if=\"variant === BentoInputFieldVariant.DEFAULT && hasSlot('defaultIconBefore')\"\n :aria-hidden=\"ariaHidden ? 'true' : undefined\"\n class=\"b-input-field__default-icon-before\"\n >\n <slot name=\"defaultIconBefore\" />\n </span>\n\n <!-- Mandatory Icon for Payment Method variant -->\n <span\n v-if=\"variant === BentoInputFieldVariant.PAYMENT_METHOD && hasSlot('paymentMethod')\"\n :aria-hidden=\"ariaHidden ? 'true' : undefined\"\n class=\"b-input-field__payment-method\"\n >\n <slot name=\"paymentMethod\" />\n </span>\n\n <!-- Dropdown at start -->\n <div v-if=\"shouldDisplayDropdownAtStart\" class=\"b-input-field__dropdown b-input-field__dropdown--start\">\n <bento-dropdown\n v-if=\"dropdown\"\n v-bind=\"dropdown\"\n :size=\"BentoDropdownSize.SMALL\"\n :disabled=\"disabled\"\n @input=\"onDropdownInput\"\n />\n </div>\n\n <!-- Static Value at start -->\n <bento-typography\n v-if=\"shouldDisplayStaticValueAtStart\"\n class=\"b-input-field__static-value b-input-field__static-value--start\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"staticValue\" />\n </bento-typography>\n\n <input\n :id=\"inputFieldId\"\n ref=\"inputFieldElement\"\n class=\"b-input-field__input\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :type=\"type\"\n :value=\"value\"\n :disabled=\"disabled\"\n @input=\"onInput\"\n @change=\"$emit(BentoInputFieldEvent.CHANGE)\"\n @focus=\"$emit(BentoInputFieldEvent.FOCUS)\"\n @blur=\"$emit(BentoInputFieldEvent.BLUR)\"\n @keydown.esc=\"$emit(BentoInputFieldEvent.ESCAPE_PRESSED)\"\n />\n <span\n v-if=\"hasSlot('iconAfter')\"\n :aria-hidden=\"ariaHidden ? 'true' : undefined\"\n class=\"b-input-field__icon-after\"\n data-testid=\"input-text__icon-after\"\n >\n <slot name=\"iconAfter\" />\n </span>\n\n <!-- Static Value at the end -->\n <bento-typography\n v-if=\"shouldDisplayStaticValueAtEnd\"\n class=\"b-input-field__static-value b-input-field__static-value--end\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"staticValue\" />\n </bento-typography>\n\n <!-- Dropdown at end -->\n <div v-if=\"shouldDisplayDropdownAtEnd\" class=\"b-input-field__dropdown b-input-field__dropdown--end\">\n <bento-dropdown\n v-if=\"dropdown\"\n v-bind=\"dropdown\"\n :size=\"BentoDropdownSize.SMALL\"\n @input=\"onDropdownInput\"\n />\n </div>\n </div>\n\n <span v-if=\"hasSlot('description')\" class=\"b-input-field__description\" @click=\"focusInput\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.BODY\">\n <slot name=\"description\" />\n </bento-typography>\n </span>\n </bento-typography>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import {\n BentoInputDropdownProps,\n BentoInputFieldElementPosition,\n BentoInputFieldEvent,\n BentoInputFieldStateClass,\n BentoInputFieldType,\n BentoInputFieldVariant,\n } from './input-field.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { generateUid } from '@/utils/ts/unique-id';\n import { BentoDropdownSize } from '../dropdown/dropdown.types';\n import { BentoDropdown } from '@/components/dropdown';\n import { BentoListboxSelectedValue } from '../../types';\n\n export default defineComponent({\n name: 'bento-input-field',\n components: { BentoDropdown, BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Indicates whether the element is exposed to an accessibility API.\n */\n ariaHidden: { type: Boolean, default: true },\n\n /**\n * Text that labels an the input element\n */\n ariaLabel: { type: String, default: undefined },\n\n /**\n * Disables the possibility of changing value in the input-field\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Dropdown props for the small selectable dropdown menu.\n * @see BentoDropdown\n */\n dropdown: {\n type: Object as PropType<BentoInputDropdownProps>,\n default: undefined,\n },\n\n /**\n * Position of the dropdown before or after input value\n */\n dropdownPosition: {\n type: String as PropType<BentoInputFieldElementPosition>,\n default: BentoInputFieldElementPosition.START,\n },\n\n /**\n * Adds error validation class for outlining input-field\n */\n error: { type: Boolean, default: false },\n\n /**\n * Text displayed as the placeholder of the input-field\n */\n placeholder: { type: String, default: '' },\n\n /**\n * Static text that displayed before or after input value\n * Applicable to the Static Value variant\n */\n staticValue: { type: String, default: '' },\n\n /**\n * Position of Static Value before or after input value\n */\n staticValuePosition: {\n type: String as PropType<BentoInputFieldElementPosition>,\n default: BentoInputFieldElementPosition.START,\n },\n\n /**\n * A string specifying the type of control to render.\n */\n type: {\n type: String as PropType<BentoInputFieldType>,\n default: BentoInputFieldType.TEXT,\n },\n\n /**\n * Text displayed as the value of the input-field\n */\n value: { type: String, default: '' },\n\n /**\n * Describes the different variants for the input element\n */\n variant: {\n type: String as PropType<BentoInputFieldVariant>,\n default: BentoInputFieldVariant.DEFAULT,\n },\n },\n emits: [\n BentoInputFieldEvent.INPUT,\n BentoInputFieldEvent.ESCAPE_PRESSED,\n BentoInputFieldEvent.DROPDOWN_INPUT,\n BentoInputFieldEvent.UPDATE_DROPDOWN,\n BentoInputFieldEvent.CHANGE,\n BentoInputFieldEvent.FOCUS,\n BentoInputFieldEvent.BLUR,\n ],\n setup(props, { slots, emit }) {\n const inputFieldElement = ref(null);\n const inputFieldId = generateUid('input');\n\n const shouldShowStaticValue = computed(\n () => props.variant === BentoInputFieldVariant.STATIC_VALUE && slots.staticValue\n );\n\n const shouldDisplayStaticValueAtStart = computed(\n () => shouldShowStaticValue.value && props.staticValuePosition === BentoInputFieldElementPosition.START\n );\n const shouldDisplayStaticValueAtEnd = computed(\n () => shouldShowStaticValue.value && props.staticValuePosition === BentoInputFieldElementPosition.END\n );\n\n const shouldShowDropdown = computed(\n () => props.variant === BentoInputFieldVariant.DROPDOWN && props.dropdown\n );\n const shouldDisplayDropdownAtStart = computed(\n () => shouldShowDropdown.value && props.dropdownPosition === BentoInputFieldElementPosition.START\n );\n const shouldDisplayDropdownAtEnd = computed(\n () => shouldShowDropdown.value && props.dropdownPosition === BentoInputFieldElementPosition.END\n );\n\n const inputFieldConditionalClasses = computed(() => ({\n [`b-input-field--${BentoInputFieldStateClass.DISABLED}`]: props.disabled,\n [`b-input-field--${BentoInputFieldStateClass.ERROR}`]: props.error,\n [`b-input-field--${BentoInputFieldStateClass.SMALL_PADDING_LEFT}`]: shouldDisplayDropdownAtStart.value,\n [`b-input-field--${BentoInputFieldStateClass.SMALL_PADDING_RIGHT}`]: shouldDisplayDropdownAtEnd.value,\n }));\n\n const onInput = (event: Event) => {\n if (!props.disabled) {\n /**\n * Triggered when input value is changed\n *\n * @event input\n * @property {String} inputValue - the updated input-field value\n */\n emit(BentoInputFieldEvent.INPUT, (event.target as HTMLInputElement).value);\n }\n };\n\n const onDropdownInput = (selectedValue: BentoListboxSelectedValue) => {\n emit(BentoInputFieldEvent.DROPDOWN_INPUT, selectedValue);\n emit(BentoInputFieldEvent.UPDATE_DROPDOWN, { ...props?.dropdown, value: selectedValue });\n };\n\n const focusInput = () => {\n inputFieldElement.value.focus();\n };\n\n return {\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n BentoInputFieldVariant,\n BentoDropdownSize,\n BentoInputFieldEvent,\n\n // Functions\n onDropdownInput,\n onInput,\n focusInput,\n hasSlot: hasSlot(slots),\n\n // Values\n inputFieldConditionalClasses,\n inputFieldElement,\n inputFieldId,\n shouldDisplayStaticValueAtStart,\n shouldDisplayStaticValueAtEnd,\n shouldShowDropdown,\n shouldDisplayDropdownAtStart,\n shouldDisplayDropdownAtEnd,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./input-field.scss\" />\n","/**\n * Trunctes a string if it goes over a certain character limit.\n * @param aString the string to truncate.\n * @param characterLimit the character limit to start truncating at.\n * @returns a string that is truncated if it's length is over the limit.\n */\nexport const truncate = (aString: string, characterLimit: number) =>\n aString?.length > characterLimit ? `${aString.slice(0, characterLimit)}...` : aString;\n","<template>\n <bento-base-filter\n v-bind=\"$props\"\n :applied-filters-count=\"appliedFiltersCount\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n :disable-secondary-button=\"isSecondaryButtonDisabled\"\n :button-label=\"buttonLabel\"\n :only-slot=\"onlySlot\"\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @open=\"openFilter\"\n @reset=\"resetFilter\"\n >\n <div class=\"b-input-filter\" :class=\"conditionalClasses\" @keydown.enter=\"updateFilter\" @input=\"onInput\">\n <bento-input-field ref=\"inputTextRef\" v-model=\"internalFilterValue\" />\n </div>\n </bento-base-filter>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, nextTick, onBeforeUpdate, ref, toRef } from 'vue';\n import { BentoBaseFilter, useBaseFilter } from '../base-filter';\n import { BentoFilterEvent } from '../../filter-bar.types';\n import { BentoInputField } from '@/components/input-field';\n import { truncate } from '@/utils/ts/truncate';\n\n /**\n *\n */\n export default defineComponent({\n name: 'bento-input-filter',\n components: {\n BentoBaseFilter,\n BentoInputField,\n },\n inheritAttrs: false,\n props: {\n /**\n * Default value of the filter to reset to.\n */\n defaultValue: { type: String, 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 * Current value of the filter\n */\n value: { type: String, default: null },\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 emits: [BentoFilterEvent.INPUT, BentoFilterEvent.UPDATE],\n setup(props, { emit }) {\n const inputTextRef = ref(null);\n const { internalFilterValue, isSecondaryButtonDisabled, isApplyButtonDisabled } = useBaseFilter<string>(\n toRef(props, 'value'),\n toRef(props, 'defaultValue')\n );\n\n const buttonLabel = computed(() => (props.defaultValue === null ? props.label : truncate(props.value, 18)));\n\n // Count is always 1 for the text filter when it's active\n const appliedFiltersCount = computed(() => (props.value != null ? 1 : null));\n\n const conditionalClasses = computed(() => ({\n [`b-input-filter--only-slot`]: props.onlySlot,\n }));\n\n onBeforeUpdate(() => {\n // Set value to null when the string is empty\n if (internalFilterValue.value === '') {\n internalFilterValue.value = null;\n }\n });\n\n const openFilter = () => {\n internalFilterValue.value = props.value;\n\n nextTick(() => inputTextRef.value.focusInput());\n };\n\n const updateFilter = () => {\n emit(BentoFilterEvent.UPDATE, { ...props, value: internalFilterValue.value });\n };\n\n const resetFilter = () => emit(BentoFilterEvent.UPDATE, { ...props, value: props.defaultValue });\n\n const clearFilter = () => {\n internalFilterValue.value = null;\n updateFilter();\n };\n\n const onInput = () => {\n emit(BentoFilterEvent.INPUT, { ...props, value: internalFilterValue.value });\n };\n\n return {\n // Values\n appliedFiltersCount,\n buttonLabel,\n conditionalClasses,\n internalFilterValue,\n isApplyButtonDisabled,\n isSecondaryButtonDisabled,\n\n // Refs\n inputTextRef,\n\n // Events\n updateFilter,\n clearFilter,\n openFilter,\n resetFilter,\n onInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./input-filter.scss\" />\n","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\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 */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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]{@link 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\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, convertable 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 */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\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 wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\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\nvar formatters = {\n // Year\n y: function (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 var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar 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 * | | 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\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\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 var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\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\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\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\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var 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\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\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\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\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\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.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 // 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\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\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\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\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\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\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\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // 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\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\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://git.io/fxCyr\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]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link 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://git.io/fxCyr\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://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var 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 * var 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 * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n * \n * @example\n * // Are 4 September and 4 October in the same day?\n * var result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n * \n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function (value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n\n};\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\n\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\n\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result; // Check for the difference of less than month\n\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign; // Check for cases of one full calendar month\n\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n\n result = sign * (difference - Number(isLastMonthNotFull));\n } // Prevent negative zero\n\n\n return result === 0 ? 0 : result;\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(dirtyObject) {\n return assign({}, dirtyObject);\n}","import compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWords ` to `formatDistance`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWords(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 11, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n *\n * // v2.0.0 onward\n *\n * formatDistance(\n * new Date(1986, 3, 4, 11, 32, 0),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n requiredArgs(2, arguments);\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months; // 0 up to 2 mins\n\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n } // 2 mins up to 0.75 hrs\n\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions); // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions); // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions); // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions); // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n\n months = differenceInMonths(dateRight, dateLeft); // 2 months up to 12 months\n\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions); // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12); // N years up to 1 years 3 months\n\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions); // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions); // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import distanceInWords from \"../formatDistance/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsToNow ` to `formatDistanceToNow`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n * ```\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistanceToNow(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), dirtyOptions);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isWithinRange` to `isWithinInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * isWithinRange(\n * new Date(2014, 0, 3),\n * new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n *\n * // v2.0.0 onward\n *\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * { start: new Date(2014, 0, 1), end: new Date(2014, 0, 7) }\n * )\n * ```\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n return time >= startTime && time <= endTime;\n}","import addDays from \"../addDays/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the new date with the day of the week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * var result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var delta = 7 - weekStartsOn;\n var diff = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;\n return addDays(date, diff);\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n standalone: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n },\n withPreposition: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n }\n },\n xSeconds: {\n standalone: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n },\n withPreposition: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n }\n },\n halfAMinute: {\n standalone: 'halbe Minute',\n withPreposition: 'halben Minute'\n },\n lessThanXMinutes: {\n standalone: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n },\n withPreposition: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n }\n },\n xMinutes: {\n standalone: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n },\n withPreposition: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n }\n },\n aboutXHours: {\n standalone: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n },\n withPreposition: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n }\n },\n xHours: {\n standalone: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n },\n withPreposition: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n }\n },\n xDays: {\n standalone: {\n one: '1 Tag',\n other: '{{count}} Tage'\n },\n withPreposition: {\n one: '1 Tag',\n other: '{{count}} Tagen'\n }\n },\n aboutXWeeks: {\n standalone: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n },\n withPreposition: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n }\n },\n xWeeks: {\n standalone: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n },\n withPreposition: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n }\n },\n aboutXMonths: {\n standalone: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monate'\n },\n withPreposition: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monaten'\n }\n },\n xMonths: {\n standalone: {\n one: '1 Monat',\n other: '{{count}} Monate'\n },\n withPreposition: {\n one: '1 Monat',\n other: '{{count}} Monaten'\n }\n },\n aboutXYears: {\n standalone: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahre'\n },\n withPreposition: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahren'\n }\n },\n xYears: {\n standalone: {\n one: '1 Jahr',\n other: '{{count}} Jahre'\n },\n withPreposition: {\n one: '1 Jahr',\n other: '{{count}} Jahren'\n }\n },\n overXYears: {\n standalone: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahre'\n },\n withPreposition: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahren'\n }\n },\n almostXYears: {\n standalone: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahre'\n },\n withPreposition: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahren'\n }\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = options !== null && options !== void 0 && options.addSuffix ? formatDistanceLocale[token].withPreposition : formatDistanceLocale[token].standalone;\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return 'vor ' + result;\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\n// DIN 5008: https://de.wikipedia.org/wiki/Datumsformat#DIN_5008\nvar dateFormats = {\n full: 'EEEE, do MMMM y',\n // Montag, 7. Januar 2018\n long: 'do MMMM y',\n // 7. Januar 2018\n medium: 'do MMM y',\n // 7. Jan. 2018\n short: 'dd.MM.y' // 07.01.2018\n\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'um' {{time}}\",\n long: \"{{date}} 'um' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'letzten' eeee 'um' p\",\n yesterday: \"'gestern um' p\",\n today: \"'heute um' p\",\n tomorrow: \"'morgen um' p\",\n nextWeek: \"eeee 'um' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['v.Chr.', 'n.Chr.'],\n abbreviated: ['v.Chr.', 'n.Chr.'],\n wide: ['vor Christus', 'nach Christus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. Quartal', '2. Quartal', '3. Quartal', '4. Quartal']\n}; // Note: in German, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n wide: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']\n}; // https://st.unicode.org/cldr-apps/v#/de/Gregorian/\n\nvar formattingMonthValues = {\n narrow: monthValues.narrow,\n abbreviated: ['Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'],\n wide: monthValues.wide\n};\nvar dayValues = {\n narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],\n short: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\n abbreviated: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],\n wide: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']\n}; // https://www.unicode.org/cldr/charts/32/summary/de.html#1881\n\nvar dayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachm.',\n evening: 'Abend',\n night: 'Nacht'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachm.',\n evening: 'abends',\n night: 'nachts'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n formattingValues: formattingMonthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n abbreviated: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n wide: /^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i\n};\nvar parseEraPatterns = {\n any: [/^v/i, /^n/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](\\.)? Quartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\\.?/i,\n wide: /^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^j[aä]/i, /^f/i, /^mär/i, /^ap/i, /^mai/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smdmf]/i,\n short: /^(so|mo|di|mi|do|fr|sa)/i,\n abbreviated: /^(son?|mon?|die?|mit?|don?|fre?|sam?)\\.?/i,\n wide: /^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i\n};\nvar parseDayPatterns = {\n any: [/^so/i, /^mo/i, /^di/i, /^mi/i, /^do/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(vm\\.?|nm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n abbreviated: /^(vorm\\.?|nachm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n wide: /^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^v/i,\n pm: /^n/i,\n midnight: /^Mitte/i,\n noon: /^Mitta/i,\n morning: /morgens/i,\n afternoon: /nachmittags/i,\n // will never be matched. Afternoon is matched by `pm`\n evening: /abends/i,\n night: /nachts/i // will never be matched. Night is matched by `pm`\n\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary German locale.\n * @language German\n * @iso-639-2 deu\n * @author Thomas Eilmsteiner [@DeMuu]{@link https://github.com/DeMuu}\n * @author Asia [@asia-t]{@link https://github.com/asia-t}\n * @author Van Vuong Ngo [@vanvuongngo]{@link https://github.com/vanvuongngo}\n * @author RomanErnst [@pex]{@link https://github.com/pex}\n * @author Philipp Keck [@Philipp91]{@link https://github.com/Philipp91}\n */\nvar locale = {\n code: 'de',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'moins d’une seconde',\n other: 'moins de {{count}} secondes'\n },\n xSeconds: {\n one: '1 seconde',\n other: '{{count}} secondes'\n },\n halfAMinute: '30 secondes',\n lessThanXMinutes: {\n one: 'moins d’une minute',\n other: 'moins de {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'environ 1 heure',\n other: 'environ {{count}} heures'\n },\n xHours: {\n one: '1 heure',\n other: '{{count}} heures'\n },\n xDays: {\n one: '1 jour',\n other: '{{count}} jours'\n },\n aboutXWeeks: {\n one: 'environ 1 semaine',\n other: 'environ {{count}} semaines'\n },\n xWeeks: {\n one: '1 semaine',\n other: '{{count}} semaines'\n },\n aboutXMonths: {\n one: 'environ 1 mois',\n other: 'environ {{count}} mois'\n },\n xMonths: {\n one: '1 mois',\n other: '{{count}} mois'\n },\n aboutXYears: {\n one: 'environ 1 an',\n other: 'environ {{count}} ans'\n },\n xYears: {\n one: '1 an',\n other: '{{count}} ans'\n },\n overXYears: {\n one: 'plus d’un an',\n other: 'plus de {{count}} ans'\n },\n almostXYears: {\n one: 'presqu’un an',\n other: 'presque {{count}} ans'\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var form = formatDistanceLocale[token];\n\n if (typeof form === 'string') {\n result = form;\n } else if (count === 1) {\n result = form.one;\n } else {\n result = form.other.replace('{{count}}', String(count));\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'dans ' + result;\n } else {\n return 'il y a ' + result;\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'à' {{time}}\",\n long: \"{{date}} 'à' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"eeee 'dernier à' p\",\n yesterday: \"'hier à' p\",\n today: \"'aujourd’hui à' p\",\n tomorrow: \"'demain à' p'\",\n nextWeek: \"eeee 'prochain à' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['av. J.-C', 'ap. J.-C'],\n abbreviated: ['av. J.-C', 'ap. J.-C'],\n wide: ['avant Jésus-Christ', 'après Jésus-Christ']\n};\nvar quarterValues = {\n narrow: ['T1', 'T2', 'T3', 'T4'],\n abbreviated: ['1er trim.', '2ème trim.', '3ème trim.', '4ème trim.'],\n wide: ['1er trimestre', '2ème trimestre', '3ème trimestre', '4ème trimestre']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],\n wide: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']\n};\nvar dayValues = {\n narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],\n short: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],\n abbreviated: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],\n wide: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'mat.',\n afternoon: 'ap.m.',\n evening: 'soir',\n night: 'mat.'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'matin',\n afternoon: 'après-midi',\n evening: 'soir',\n night: 'matin'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'du matin',\n afternoon: 'de l’après-midi',\n evening: 'du soir',\n night: 'du matin'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber, options) {\n var number = Number(dirtyNumber);\n var unit = options === null || options === void 0 ? void 0 : options.unit;\n if (number === 0) return '0';\n var feminineUnits = ['year', 'week', 'hour', 'minute', 'second'];\n var suffix;\n\n if (number === 1) {\n suffix = unit && feminineUnits.includes(unit) ? 'ère' : 'er';\n } else {\n suffix = 'ème';\n }\n\n return number + suffix;\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(ième|ère|ème|er|e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(av\\.J\\.C|ap\\.J\\.C|ap\\.J\\.-C)/i,\n abbreviated: /^(av\\.J\\.-C|av\\.J-C|apr\\.J\\.-C|apr\\.J-C|ap\\.J-C)/i,\n wide: /^(avant Jésus-Christ|après Jésus-Christ)/i\n};\nvar parseEraPatterns = {\n any: [/^av/i, /^ap/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^T?[1234]/i,\n abbreviated: /^[1234](er|ème|e)? trim\\.?/i,\n wide: /^[1234](er|ème|e)? trimestre/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\\.?/i,\n wide: /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^av/i, /^ma/i, /^juin/i, /^juil/i, /^ao/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[lmjvsd]/i,\n short: /^(di|lu|ma|me|je|ve|sa)/i,\n abbreviated: /^(dim|lun|mar|mer|jeu|ven|sam)\\.?/i,\n wide: /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n any: [/^di/i, /^lu/i, /^ma/i, /^me/i, /^je/i, /^ve/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|minuit|midi|mat\\.?|ap\\.?m\\.?|soir|nuit)/i,\n any: /^([ap]\\.?\\s?m\\.?|du matin|de l'après[-\\s]midi|du soir|de la nuit)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^min/i,\n noon: /^mid/i,\n morning: /mat/i,\n afternoon: /ap/i,\n evening: /soir/i,\n night: /nuit/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale.\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n */\n\nvar locale = {\n code: 'fr',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","export enum BentoDateFormat {\n // DAY\n DAY_OF_MONTH = 'd', // 1, 2, ..., 31,\n LONG_WEEKDAY = 'EEEE', // Friday\n\n // TIME\n SHORT_TIME_WITH_PERIOD = `h:mm aa`, // 2:44 PM\n SHORT_TIME_WITHOUT_PERIOD = 'H:mm', // 14:45\n EXACT_TIME_WITH_PERIOD = 'h:mm:ss aa', // 2:05:11 PM\n EXACT_TIME_WITHOUT_PERIOD = 'H:mm:ss', // 14:05:11\n\n // DATE\n LONG_DATE = 'LLLL dd, yyyy', // June 30, 2023\n SHORT_DATE = 'LLL dd, yyyy', // Jun 30, 2023\n FULL_DATE_EXACT_TIME_WITH_PERIOD = `${SHORT_DATE}, h:mm:ss aa`, // June 30, 2023, 2:54:10 PM\n FULL_DATE_EXACT_TIME_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm:ss`, // June 30, 2023, 14:54:42\n FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_PERIOD = `${SHORT_DATE}, h:mm:ss aa O`, // June 30, 2023, 2:56:07 PM GMT+2\n FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm:ss O`, // June 30, 2023, 14:56:28 GMT+2\n FULL_DATE_TIME_WITH_PERIOD = `${SHORT_DATE}, h:mm aa`, // Jun 30, 2023, 2:48 PM\n FULL_DATE_TIME_WITH_TIMEZONE_AND_PERIOD = `${SHORT_DATE}, h:mm aa O`, // Jun 30, 2023, 2:44 PM GMT+2\n FULL_DATE_TIME_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm`, // Jun 30, 2023, 14:48\n FULL_DATE_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm O`, // Jun 30, 2023, 14:43 GMT+2\n}\n","<template>\n <div class=\"b-date\">\n <bento-typography\n class=\"b-date__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n strong\n >\n {{ formattedDate }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import format from 'date-fns/format';\n import { de, enUS, fr } from 'date-fns/locale';\n import { BentoDateFormat } from '@/components/date/date.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { useI18n } from '@/utils/ts/i18n';\n\n /**\n * A Date component is used to display a formatted date value.\n *\n * @example\n * import { BentoDate } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDate },\n * template: `\n * <bento-date :date=\"dateObject\" :format=\"BentoDateVariant.LONG_DATE\"/>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-date',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * The date to format. The data can be supplied as:\n * - a Date object.\n * - a number of milliseconds elapsed since the epoch.\n * - a date string e.g. '2023-07-31T10:55:22+02:00'.\n */\n date: {\n type: [Date, Number, String],\n default: null,\n },\n /**\n * The string format of the date to be displayed\n */\n format: {\n type: String as PropType<BentoDateFormat>,\n default: BentoDateFormat.FULL_DATE_EXACT_TIME_WITHOUT_PERIOD,\n },\n },\n setup(props) {\n const { locale } = useI18n(undefined, true);\n // TODO to replace with dynamic import\n const locales = { de, enUS, fr };\n\n const formattedDate = computed(() => {\n const datePropAsDateObject = typeof props.date === 'string' ? new Date(props.date) : props.date;\n\n return format(datePropAsDateObject, props.format, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n });\n\n return {\n // Values\n formattedDate,\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n","export enum DatePickerCalendarDayVariant {\n SINGLE = 'single',\n MIDDLE = 'middle',\n BEGINNING = 'beginning',\n END = 'end',\n}\n\nexport enum DatePickerCalendarDayClass {\n // Variant\n SINGLE = DatePickerCalendarDayVariant.SINGLE,\n MIDDLE = DatePickerCalendarDayVariant.MIDDLE,\n BEGINNING = DatePickerCalendarDayVariant.BEGINNING,\n END = DatePickerCalendarDayVariant.END,\n\n // Selected\n SELECTED = 'selected',\n UNSELECTED = 'unselected',\n\n // Current day\n CURRENT_DAY = 'current-day',\n\n // Disabled\n DISABLED = 'disabled',\n}\n\nexport enum DatePickerCalendarDayEvent {\n CLICK = 'click',\n MOUSE_OVER = 'mouseover',\n}\n","<template>\n <td\n class=\"b-date-picker-calendar-day\"\n :class=\"conditionalClasses\"\n tabindex=\"-1\"\n @click=\"() => onClick(day)\"\n @mouseover=\"$emit(DatePickerCalendarDayEvent.MOUSE_OVER)\"\n >\n <div class=\"b-date-picker-calendar-day__wrapper\">\n <bento-date class=\"b-date-picker-calendar-day__label\" :date=\"day\" :format=\"BentoDateFormat.DAY_OF_MONTH\" />\n </div>\n </td>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoDate, BentoDateFormat } from '@/components/date';\n import {\n DatePickerCalendarDayClass,\n DatePickerCalendarDayEvent,\n DatePickerCalendarDayVariant,\n } from './date-picker-calendar-day.types';\n\n /**\n * Handles the styles and states of the individual dates of the calendar.\n *\n * @example\n * import { DatePickerCalendarDay } from './date-picker-calendar-day';\n *\n * export default {\n * components: { DatePickerCalendarDay },\n * template: `\n * <table>\n * <tbody>\n * <tr>\n * <date-picker-calendar-day\n * :day=\"new Date()\"\n * :disabled=\"true\"\n * :selected=\"true\"\n * :variant=\"DatePickerCalendarDayVariant.MIDDLE\"\n * />\n * </tr>\n * </tbody>\n * </table>\n * `\n * }\n */\n export default defineComponent({\n name: 'date-picker-calendar-day',\n components: { BentoDate },\n inheritAttrs: true,\n props: {\n /**\n * Date to be displayed as the calendar day. From 1st to 31st (or end of the month defined in the date)\n */\n day: { type: Date, required: true },\n\n /**\n * Indicate if a date should be disabled or not\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Changes the state of the calendar day to selected.\n */\n selected: { type: Boolean, default: false },\n\n /**\n * When the day is selected, this indicates if the selection is a single date or part of a range.\n * If it's a range it can be at the beginning, middle or end of the selection.\n */\n variant: {\n type: String as PropType<DatePickerCalendarDayVariant>,\n default: DatePickerCalendarDayVariant.SINGLE,\n validator: (value: DatePickerCalendarDayVariant) =>\n Object.values(DatePickerCalendarDayVariant).includes(value),\n },\n },\n emits: [DatePickerCalendarDayEvent.CLICK, DatePickerCalendarDayEvent.MOUSE_OVER],\n setup(props, { emit }) {\n const isCurrentDay = computed(() => {\n const today = new Date();\n return (\n props.day.getDate() === today.getDate() &&\n props.day.getMonth() === today.getMonth() &&\n props.day.getFullYear() === today.getFullYear()\n );\n });\n\n const conditionalClasses = computed(() => ({\n // Variants\n [`b-date-picker-calendar-day--${DatePickerCalendarDayClass.BEGINNING}`]:\n props.variant === DatePickerCalendarDayVariant.BEGINNING,\n [`b-date-picker-calendar-day--${DatePickerCalendarDayClass.MIDDLE}`]:\n props.variant === DatePickerCalendarDayVariant.MIDDLE,\n [`b-date-picker-calendar-day--${DatePickerCalendarDayClass.END}`]:\n props.variant === DatePickerCalendarDayVariant.END,\n [`b-date-picker-calendar-day--${DatePickerCalendarDayClass.SINGLE}`]:\n props.variant === DatePickerCalendarDayVariant.SINGLE,\n\n // Selected\n [`b-date-picker-calendar-day--${DatePickerCalendarDayClass.UNSELECTED}`]: !props.selected,\n [`b-date-picker-calendar-day--${DatePickerCalendarDayClass.SELECTED}`]: props.selected,\n\n // Current Day\n [`b-date-picker-calendar-day--${DatePickerCalendarDayClass.CURRENT_DAY}`]: isCurrentDay.value,\n\n // Disabled\n [`b-date-picker-calendar-day--${DatePickerCalendarDayClass.DISABLED}`]: props.disabled,\n }));\n\n const onClick = (selectedDay: Date) => {\n if (!props.disabled) {\n emit(DatePickerCalendarDayEvent.CLICK, selectedDay, props.day);\n }\n };\n\n return {\n // Values\n conditionalClasses,\n\n // Enums\n BentoDateFormat,\n DatePickerCalendarDayEvent,\n\n // Events\n onClick,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-picker-calendar-day.scss\" />\n","export enum DatePickerCalendarEvent {\n INPUT = 'input',\n MOUSE_OVER = 'mouseover',\n NEXT_MONTH = 'nextMonth',\n PREVIOUS_MONTH = 'previousMonth',\n}\n\nexport enum DatePickerCalendarPosition {\n FIRST = 'first',\n LAST = 'last',\n MIDDLE = 'middle',\n UNIQUE = 'unique',\n}\n\nexport enum DatePickerCalendarFirstDayOfWeek {\n MONDAY = 1,\n SATURDAY = 6,\n SUNDAY = 0,\n}\n\nexport type DatePickerCalendarIsDateDisabled = (date: Date) => boolean;\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.0303 2.46967C11.3232 2.76256 11.3232 3.23744 11.0303 3.53033L6.56066 8L11.0303 12.4697C11.3232 12.7626 11.3232 13.2374 11.0303 13.5303C10.7374 13.8232 10.2626 13.8232 9.96967 13.5303L4.96967 8.53033C4.67678 8.23744 4.67678 7.76256 4.96967 7.46967L9.96967 2.46967C10.2626 2.17678 10.7374 2.17678 11.0303 2.46967Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M4.96967 13.5303C4.67678 13.2374 4.67678 12.7626 4.96967 12.4697L9.43934 8L4.96967 3.53033C4.67678 3.23744 4.67678 2.76256 4.96967 2.46967C5.26256 2.17678 5.73744 2.17678 6.03033 2.46967L11.0303 7.46967C11.3232 7.76256 11.3232 8.23744 11.0303 8.53033L6.03033 13.5303C5.73744 13.8232 5.26256 13.8232 4.96967 13.5303Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div class=\"b-date-picker-calendar\">\n <div class=\"b-date-picker-calendar__month-selector\">\n <!-- go to previous month -->\n <div class=\"b-date-picker-calendar__previous\">\n <bento-button\n v-if=\"shouldShowPreviousMonthButton\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n @click=\"showPreviousMonth\"\n >\n <template #iconLeft>\n <chevron-left-icon :svg-title=\"$t('previousMonth')\" />\n </template>\n </bento-button>\n </div>\n\n <!-- month's name -->\n <bento-typography\n :el=\"BentoTypographyElement.H2\"\n :variant=\"BentoTypographyVariant.SUBTITLE\"\n aria-live=\"polite\"\n >\n {{ formattedMonthDate }}\n </bento-typography>\n\n <!-- go to next month -->\n <div class=\"b-date-picker-calendar__next\">\n <bento-button\n v-if=\"shouldShowNextMonthButton\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n @click=\"showNextMonth\"\n >\n <template #iconLeft>\n <chevron-right-icon :svg-title=\"$t('nextMonth')\" />\n </template>\n </bento-button>\n </div>\n </div>\n\n <table class=\"b-date-picker-calendar__month-calendar\">\n <thead>\n <tr class=\"b-date-picker-calendar__week-header\">\n <th\n v-for=\"(dayOfWeekFormatted, index) in daysOfWeek\"\n :key=\"index\"\n class=\"b-date-picker-calendar__day-of-week\"\n >\n <bento-typography\n class=\"b-date-picker-calendar__day-of-week-font\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.CAPTION\"\n >\n {{ dayOfWeekFormatted }}\n </bento-typography>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(week, index) in weeksOfMonth\" :key=\"index\">\n <td v-if=\"index === 0 && week.length < 7\" :colspan=\"7 - week.length\"> </td>\n <date-picker-calendar-day\n v-for=\"(day, dayIndex) in week\"\n :key=\"`data-picker-calendar-day-${dayIndex}`\"\n :day=\"day\"\n :disabled=\"isDateDisabled ? isDateDisabled(day) : undefined\"\n :selected=\"isSelectedDate(day)\"\n :variant=\"dayVariant(day)\"\n @click=\"onDayClicked\"\n @mouseover=\"$emit(DatePickerCalendarEvent.MOUSE_OVER, day)\"\n />\n </tr>\n </tbody>\n </table>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import { DatePickerCalendarDay, DatePickerCalendarDayVariant } from './components/date-picker-calendar-day';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { useI18n } from '@/utils/ts/i18n';\n import { de, enUS, fr } from 'date-fns/locale';\n import {\n DatePickerCalendarEvent,\n DatePickerCalendarFirstDayOfWeek,\n DatePickerCalendarIsDateDisabled,\n DatePickerCalendarPosition,\n } from './date-picker-calendar.types';\n import ChevronLeftIcon from '@adyen/ui-assets-icons-16/vue/chevron-left';\n import ChevronRightIcon from '@adyen/ui-assets-icons-16/vue/chevron-right';\n import setDay from 'date-fns/setDay';\n import startOfMonth from 'date-fns/startOfMonth';\n import startOfDay from 'date-fns/startOfDay';\n import format from 'date-fns/format';\n import isSameDay from 'date-fns/isSameDay';\n import isWithinInterval from 'date-fns/isWithinInterval';\n\n import messages from './messages.json';\n\n /**\n * Date picker calendar that displays all the days of a given month\n * and allows to move back and forth the visible month with the Next\n * and Previous buttons\n *\n * @example\n * import { DatePickerCalendar } from './date-picker-calendar.vue';\n *\n * export default {\n * components: { DatePickerCalendar },\n * template: `\n * <date-picker-calendar\n * :first-day-of-week=\"firstDayOfWeek\"\n * :is-date-disabled=\"isDateDisabled\"\n * :month=\"calculateOffsetMonth(index)\"\n * :position=\"calendarPosition(index)\"\n * :is-range=\"isRange\"\n * :start-date=\"value.startDate\"\n * :end-date=\"value.endDate\"\n * @input=\"onDateInput\"\n * @mouseover=\"onMouseOver\"\n * @nextMonth=\"calculateNextMonths\"\n * @previousMonth=\"calculatePreviousMonths\"\n * />\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'date-picker-calendar',\n components: {\n BentoButton,\n BentoTypography,\n DatePickerCalendarDay,\n ChevronLeftIcon,\n ChevronRightIcon,\n },\n inheritAttrs: false,\n props: {\n /**\n * end of the selected range\n */\n endDate: { type: Date, default: null },\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: {\n type: Number as PropType<DatePickerCalendarFirstDayOfWeek>,\n default: DatePickerCalendarFirstDayOfWeek.MONDAY,\n validator: (value: DatePickerCalendarFirstDayOfWeek) =>\n Object.values(DatePickerCalendarFirstDayOfWeek).includes(value),\n },\n\n /**\n * Indicate if a date should be disabled or not\n */\n isDateDisabled: { type: Function as PropType<DatePickerCalendarIsDateDisabled>, default: undefined },\n\n /**\n * Indicates if the calendar is part of a range date picker or a sigle date picker\n */\n isRange: { type: Boolean, default: false },\n\n /**\n * Month of the year to be displayed in the calendar\n */\n month: { type: Date, required: true },\n\n /**\n * When rendering multiple calendars, this property allows to render the\n * Next and Previous calendar buttons to the right, left or not at all\n * depending on the position: Unique (only 1), First, Middle or Last\n */\n position: {\n type: String as PropType<DatePickerCalendarPosition>,\n default: DatePickerCalendarPosition.UNIQUE,\n validator: (value: DatePickerCalendarPosition) =>\n Object.values(DatePickerCalendarPosition).includes(value),\n },\n\n /**\n * start of the selected range\n */\n startDate: { type: Date, default: null }, // can be undefined, eslint complains without default\n },\n emits: [\n DatePickerCalendarEvent.INPUT,\n DatePickerCalendarEvent.NEXT_MONTH,\n DatePickerCalendarEvent.PREVIOUS_MONTH,\n DatePickerCalendarEvent.MOUSE_OVER,\n ],\n setup(props, { emit }) {\n // Date formatter locale options\n const { locale } = useI18n({ messages });\n const locales = { de, enUS, fr };\n\n /**\n * Default to Monday if the value passed in is not part of the defined Enum\n */\n const fallbackFirstDayOfWeek = computed(() =>\n Object.values(DatePickerCalendarFirstDayOfWeek).includes(props.firstDayOfWeek)\n ? props.firstDayOfWeek\n : DatePickerCalendarFirstDayOfWeek.MONDAY\n );\n\n /**\n * Renders the previous month button if it's Unique or First calendar\n */\n const shouldShowPreviousMonthButton = computed(() =>\n [DatePickerCalendarPosition.FIRST, DatePickerCalendarPosition.UNIQUE].includes(props.position)\n );\n\n /**\n * Renders the next month button if it's Unique or Last calendar\n */\n const shouldShowNextMonthButton = computed(() =>\n [DatePickerCalendarPosition.LAST, DatePickerCalendarPosition.UNIQUE].includes(props.position)\n );\n\n /**\n * Formats the month date to the name of the month and the year\n */\n const formattedMonthDate = computed(() =>\n format(props.month, 'MMMM yyyy', {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n })\n );\n\n /**\n * Formats all the days of the week to their day name\n */\n const daysOfWeek = computed(() =>\n new Array(7).fill(new Date()).map((date, index) => {\n const dayOfWeekDate = setDay(date, fallbackFirstDayOfWeek.value + index);\n\n return format(dayOfWeekDate, 'EEE', {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n })\n );\n\n /**\n * Calculates all the weeks of the current \"props.month\"\n * and adds the respective day number to each column and week\n */\n const weeksOfMonth = computed(() => {\n const weeks = [];\n const date = startOfMonth(props.month);\n let week = weeks[weeks.push([]) - 1];\n\n while (date.getMonth() === props.month.getMonth()) {\n if (date.getDay() - fallbackFirstDayOfWeek.value === 0 && week.length > 0) {\n week = weeks[weeks.push([]) - 1];\n }\n\n week.push(startOfDay(date));\n date.setDate(date.getDate() + 1);\n }\n\n return weeks;\n });\n\n const onDayClicked = (selectedDate: Date) => {\n emit(DatePickerCalendarEvent.INPUT, selectedDate);\n };\n\n /**\n * Calculates the variation of the days selected.\n * For single select it's always SINGLE\n * For ranges:\n * - Start & End is the same: SINGLE\n * - Start: BEGINNING\n * - End: END\n * - Within the range: MIDDLE\n * @param {Date} day Current day\n */\n // eslint-disable-next-line consistent-return\n const dayVariant = (day: Date) => {\n if (!props.isRange || isSameDay(props.startDate, props.endDate)) {\n return DatePickerCalendarDayVariant.SINGLE;\n }\n\n if (props.startDate && isSameDay(props.startDate, day)) {\n return DatePickerCalendarDayVariant.BEGINNING;\n }\n if (props.endDate && isSameDay(props.endDate, day)) {\n return DatePickerCalendarDayVariant.END;\n }\n if (\n props.startDate &&\n props.endDate &&\n isWithinInterval(day, { start: props.startDate, end: props.endDate })\n ) {\n return DatePickerCalendarDayVariant.MIDDLE;\n }\n };\n\n /**\n * Checks every date in the calendar to see if it's selected.\n * @param day Current day in the calendar\n */\n const isSelectedDate = (day: Date) => {\n // Single selection\n if (props.startDate && isSameDay(props.startDate, day)) {\n return true;\n }\n\n // Range\n return (\n props.startDate &&\n props.endDate &&\n isWithinInterval(day, { start: props.startDate, end: props.endDate })\n );\n };\n\n const showNextMonth = () => {\n emit(DatePickerCalendarEvent.NEXT_MONTH);\n };\n\n const showPreviousMonth = () => {\n emit(DatePickerCalendarEvent.PREVIOUS_MONTH);\n };\n\n return {\n // Values\n daysOfWeek,\n weeksOfMonth,\n formattedMonthDate,\n shouldShowNextMonthButton,\n shouldShowPreviousMonthButton,\n\n // Enums\n BentoButtonVariant,\n BentoTypographyElement,\n BentoTypographyVariant,\n DatePickerCalendarDayVariant,\n DatePickerCalendarEvent,\n\n // Functions\n isSelectedDate,\n showNextMonth,\n showPreviousMonth,\n dayVariant,\n\n // Events\n onDayClicked,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-picker-calendar.scss\" />\n","import { Ref, UnwrapNestedRefs } from 'vue';\n\nexport interface DatePickerCalendarPaneRangeDate {\n startDate: Date;\n endDate: Date;\n}\n\nexport type DatePickerCalendarPaneValue = Date | DatePickerCalendarPaneRangeDate;\n\ninterface UseCalendarPaneProps {\n selectedDate: Ref<DatePickerCalendarPaneValue>;\n isDateDisabled?: (date: Date) => boolean;\n}\n\nexport type UseCalendarPane = (\n propRefs: UseCalendarPaneProps,\n emit\n) => {\n internalValue: UnwrapNestedRefs<DatePickerCalendarPaneRangeDate>;\n onDateInput: (date: Date) => void;\n onMouseOver: (date: Date) => void;\n};\n\nexport enum DatePickerCalendarPaneEvent {\n INPUT = 'input',\n START_DATE_SELECTED = 'start-date-selected',\n END_DATE_SELECTED = 'end-date-selected',\n}\n","import { reactive, watch } from 'vue';\nimport { DatePickerCalendarPaneEvent, UseCalendarPane } from '../date-picker-calendar-pane.types';\n\nexport const useSinglePane: UseCalendarPane = ({ selectedDate }, emit) => {\n /**\n * Internal date manipulation.\n */\n const internalValue = reactive({\n startDate: null,\n endDate: null,\n });\n\n /**\n * Set \"internalValue\" to the initial date and kept in sync for when\n * the date is changed outside of the component while the component is mounted\n */\n watch(\n () => selectedDate.value,\n () => {\n internalValue.startDate = selectedDate.value;\n internalValue.endDate = undefined;\n },\n { immediate: true }\n );\n\n /**\n * Called when a date is selected.\n *\n * Emits the selected date\n *\n * @param date - Date clicked\n */\n const onDateInput = (date: Date) => {\n emit(DatePickerCalendarPaneEvent.INPUT, date);\n };\n\n return {\n internalValue,\n\n onDateInput,\n // Empty function to prevent the listeners from throwing a warning\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onMouseOver: () => {},\n };\n};\n","import { reactive, ref, watch } from 'vue';\nimport {\n DatePickerCalendarPaneEvent,\n DatePickerCalendarPaneRangeDate,\n UseCalendarPane,\n} from '../date-picker-calendar-pane.types';\nimport isBefore from 'date-fns/isBefore';\nimport startOfDay from 'date-fns/startOfDay';\nimport isAfter from 'date-fns/isAfter';\n\nexport const useRangePane: UseCalendarPane = ({ selectedDate, isDateDisabled }, emit) => {\n /**\n * Internal date manipulation.\n * This allows to change the dates with the form.\n */\n const internalValue = reactive({\n startDate: null,\n endDate: null,\n });\n\n /**\n * First clicked date to calculate the ranges with\n */\n const clickedDate = ref<Date | null>(null);\n\n /**\n * Set \"internalValue\" to the initial date and kept in sync for when\n * the date is changed outside of the component while the component is mounted\n */\n watch(\n () => selectedDate.value,\n () => {\n let { startDate = null, endDate = null } = (selectedDate.value as DatePickerCalendarPaneRangeDate) || {};\n\n if (startDate) startDate = startOfDay(startDate);\n if (endDate) endDate = startOfDay(endDate);\n\n if (\n (startDate && isDateDisabled && isDateDisabled(startDate)) ||\n (endDate && isDateDisabled && isDateDisabled(endDate)) ||\n (startDate && endDate && isAfter(startDate, endDate))\n ) {\n // Disabled dates do nothing\n return;\n }\n\n internalValue.startDate = startDate;\n internalValue.endDate = endDate;\n },\n { immediate: true }\n );\n\n const setDates = (startDate: Date, endDate: Date) => {\n // For manual input to be registered, null values are allowed\n internalValue.startDate = startDate;\n internalValue.endDate = endDate;\n };\n\n /**\n * Called when a date is selected.\n *\n * - Initial click: Sets the selected date\n * - Second click: Selects the date range. Emits the Start date & End date\n *\n * @param date - Date clicked\n */\n const onDateInput = (date: Date) => {\n if (clickedDate.value) {\n // Reset clicked date after second click\n clickedDate.value = null;\n\n // Set the end date in our internal value which will be emitted\n setDates(internalValue.startDate, date);\n // Emit when the second date (endDate) is selected\n emit(DatePickerCalendarPaneEvent.INPUT, internalValue);\n } else {\n clickedDate.value = date;\n setDates(date, date);\n emit(DatePickerCalendarPaneEvent.START_DATE_SELECTED, date);\n emit(DatePickerCalendarPaneEvent.END_DATE_SELECTED, date);\n }\n };\n\n /**\n * When the mouse moves over the days it recalculates the\n * range and moves it to the next range.\n *\n * If it's before the intial date it switches the range (start becomes end and vice versa)\n * If it's after it sets the new end date.\n * @param date - Hovered date\n */\n const onMouseOver = (date: Date) => {\n if (!clickedDate.value || (isDateDisabled && isDateDisabled(date))) {\n return;\n }\n\n if (isBefore(date, clickedDate.value)) {\n setDates(date, clickedDate.value);\n emit(DatePickerCalendarPaneEvent.START_DATE_SELECTED, date);\n emit(DatePickerCalendarPaneEvent.END_DATE_SELECTED, clickedDate.value);\n } else {\n setDates(clickedDate.value, date);\n emit(DatePickerCalendarPaneEvent.START_DATE_SELECTED, clickedDate.value);\n emit(DatePickerCalendarPaneEvent.END_DATE_SELECTED, date);\n }\n };\n\n return {\n internalValue,\n\n onDateInput,\n onMouseOver,\n };\n};\n","<template>\n <div class=\"b-date-picker-calendar-pane\" :class=\"conditionalClasses\">\n <date-picker-calendar\n v-for=\"(_, index) in numberOfMonths\"\n :key=\"`date-picker-calendar-range-${index}`\"\n :first-day-of-week=\"firstDayOfWeek\"\n :is-date-disabled=\"isDateDisabled\"\n :month=\"calculateOffsetMonth(index)\"\n :position=\"calendarPosition(index)\"\n :is-range=\"isRange\"\n :start-date=\"internalValue.startDate\"\n :end-date=\"internalValue.endDate\"\n @input=\"onDateInput\"\n @mouseover=\"onMouseOver\"\n @nextMonth=\"calculateNextMonths\"\n @previousMonth=\"calculatePreviousMonths\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRef, watch } from 'vue';\n import { DatePickerCalendar, DatePickerCalendarPosition } from '../date-picker-calendar';\n import {\n DatePickerCalendarPaneEvent,\n DatePickerCalendarPaneRangeDate,\n DatePickerCalendarPaneValue,\n } from './date-picker-calendar-pane.types';\n import { useSinglePane } from './composables/use-single-pane';\n import { useRangePane } from './composables/use-range-pane';\n import addMonths from 'date-fns/addMonths';\n import subMonths from 'date-fns/subMonths';\n\n /**\n * Handles the calendar logic to change visible months for Single calendar\n * and Range calendar, as well as the selection logic for range.\n * All the processing necessary for the calendar to select dates\n *\n * @example\n * import { BentoDatePickerCalendarPane } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDatePickerCalendarPane },\n * template: `\n * <date-picker-calendar-pane\n * :value=\"value\"\n * :first-day-of-week=\"DatePickerCalendarFirstDayOfWeek.Monday\"\n * :is-date-disabled=\"(day: Date) => boolean\"\n * :number-of-months=\"2\"\n * is-range\n * @input=\"(selectedDate) => void\"\n * @start-date-selected=\"(startDate: Date) => void\"\n * @end-date-selected=\"(endDate: Date) => void\"\n * />\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-date-picker-calendar-pane',\n components: {\n DatePickerCalendar,\n },\n inheritAttrs: false,\n props: {\n /**\n * Allows you to set the first day of the week. 0 is sunday, 1 is monday, 6 is saturday\n */\n firstDayOfWeek: DatePickerCalendar.props.firstDayOfWeek,\n\n /**\n * Indicate if a date should be disabled or not\n */\n isDateDisabled: DatePickerCalendar.props.isDateDisabled,\n\n /**\n * Enables the Date Range calendar\n */\n isRange: DatePickerCalendar.props.isRange,\n\n /**\n * Number of months rendered on pane\n */\n numberOfMonths: {\n type: Number,\n default: 3,\n validator: (n: number) => n >= 1,\n },\n\n /**\n * Selected date. Can be a single Date or a DatePickerCalendarPaneRangeDate\n * instance that contains startDate and endDate attributes.\n */\n value: { type: [Date, Object] as PropType<DatePickerCalendarPaneValue>, default: undefined },\n },\n emit: [\n DatePickerCalendarPaneEvent.INPUT,\n DatePickerCalendarPaneEvent.START_DATE_SELECTED,\n DatePickerCalendarPaneEvent.END_DATE_SELECTED,\n ],\n setup(props, { emit }) {\n // Use a duplicate of \"month\" to move back and\n // forth with the arrows. Maintained in sync with the prop \"value\"\n const baseDate = ref();\n watch(\n () => props.value,\n () => {\n if (props.isRange) {\n baseDate.value = (props.value as DatePickerCalendarPaneRangeDate).startDate || new Date();\n } else {\n baseDate.value = (props.value as Date) || new Date();\n }\n },\n { immediate: true }\n );\n\n const conditionalClasses = computed(() => ({\n 'b-date-picker-calendar-pane__range': props.isRange,\n }));\n\n const {\n internalValue,\n\n onDateInput,\n onMouseOver,\n } = props.isRange\n ? useRangePane(\n {\n selectedDate: toRef(props, 'value'),\n isDateDisabled: props.isDateDisabled as (date: Date) => boolean,\n },\n emit\n )\n : useSinglePane(\n {\n selectedDate: toRef(props, 'value'),\n },\n emit\n );\n\n /**\n * Calculate the current month calendar.\n * This is used to render/hide the Previous & Next buttons on each calendar.\n * @param {number} calendarIndex - Number to offset the calendar position\n */\n const calendarPosition = (calendarIndex: number) => {\n if (props.numberOfMonths === 1) {\n return DatePickerCalendarPosition.UNIQUE;\n }\n\n if (calendarIndex === 0) {\n return DatePickerCalendarPosition.FIRST;\n }\n\n return calendarIndex === props.numberOfMonths - 1\n ? DatePickerCalendarPosition.LAST\n : DatePickerCalendarPosition.MIDDLE;\n };\n\n /**\n * Calculates in relation to the amount of months defined in \"numberOfMonths\"\n * which calendar month should be render starting from the first (leftmost)\n * rendered calendar.\n * @param offsetMonth - Amount of months to add after the first month was rendered\n */\n const calculateOffsetMonth = (offsetMonth: number) => addMonths(baseDate.value, offsetMonth);\n\n /**\n * Shows the folllowing month\n */\n const calculateNextMonths = () => {\n baseDate.value = addMonths(baseDate.value, 1);\n };\n\n /**\n * Shows the previous month\n */\n const calculatePreviousMonths = () => {\n baseDate.value = subMonths(baseDate.value, 1);\n };\n\n return {\n // Values\n baseDate,\n conditionalClasses,\n internalValue,\n\n // Methods\n calculateOffsetMonth,\n calendarPosition,\n\n // Events\n onDateInput,\n onMouseOver,\n calculateNextMonths,\n calculatePreviousMonths,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-picker-calendar-pane.scss\" />\n","<template>\n <hr :aria-label=\"ariaAttributes['aria-label']\" class=\"b-divider\" data-testid=\"divider\" />\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n /**\n * @example\n * import { BentoDivider } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDivider },\n * template: `<bento-divider />`\n * }\n */\n export default defineComponent({\n name: 'bento-divider',\n setup(_, { attrs }) {\n const ariaAttributes = computed(() => ({\n 'aria-label': attrs['aria-label']?.toString() as string,\n }));\n\n return {\n // Values\n ariaAttributes,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./divider.scss\" />\n","import { ComputedRef, Ref } from 'vue';\n\nexport { DatePickerCalendarFirstDayOfWeek as BentoDatePickerFirstDayOfWeek } from './components/date-picker-calendar';\nexport type { DatePickerCalendarIsDateDisabled as BentoDatePickerIsDateDisabled } from './components/date-picker-calendar';\nexport type {\n DatePickerCalendarPaneValue as BentoDatePickerValue,\n DatePickerCalendarPaneRangeDate as BentoDatePickerRangeDate,\n} from './components/date-picker-calendar-pane/date-picker-calendar-pane.types';\n\nexport interface DatePickerCalendarPaneRangeFormData {\n startDate: string;\n endDate: string;\n}\nexport interface UseDateDisplayTextProps<T> {\n datePickerValue: Ref<T>;\n isDateIncorrect: Ref<boolean>;\n}\nexport type UseDateDisplayText<T> = (props: UseDateDisplayTextProps<T>) => {\n // Values\n dateDisplayValue: ComputedRef<string>;\n textInputDisplayValue: Ref<string> | DatePickerCalendarPaneRangeFormData;\n // Methods\n formatTextInputDisplayValue: () => void;\n};\n\nexport enum BentoDatePickerEvent {\n INPUT = 'input',\n}\n\nexport enum BentoDatePickerVariant {\n SINGLE_CALENDAR = 'single-calendar',\n RANGE_CALENDAR = 'range-calendar',\n}\n","export enum DatePickerCalendarRangeEvent {\n INPUT = 'input',\n ERROR = 'error',\n FORM_DATE = 'form-date',\n}\n","export enum AdlLabelPosition {\n BEFORE = 'before',\n AFTER = 'after',\n}\n","export enum DateFormat {\n // DAY\n DAY_OF_MONTH = 'd', // 1, 2, ..., 31,\n NUMERIC_DAY = 'dd', // 01, 02, ..., 31,\n\n // WEEK\n SHORT_WEEKDAY = 'EEE', // Fri\n\n // MONTH\n NUMERIC_MONTH = 'MM', // 06\n SHORT_MONTH = 'MMM', // Jun\n LONG_MONTH = 'MMMM', // June\n LONG_MONTH_YEAR = `${LONG_MONTH} yyyy`, // June 2023\n\n // YEAR\n FULL_YEAR = 'yyyy', // 0001, 2023\n\n // DATE\n FULL_DATE = `${DAY_OF_MONTH} ${SHORT_MONTH}, ${FULL_YEAR}`, // 25 Jun, 2023\n FULL_DATE_MONTH_FIRST = `${SHORT_MONTH} ${NUMERIC_DAY}, ${FULL_YEAR}`, // Jun 25, 2023\n NUMERIC_DATE_YEAR_FIRST = `${FULL_YEAR}-${NUMERIC_MONTH}-${NUMERIC_DAY}`, // 2023-06-25\n NUMERIC_DATE_DAY_FIRST = `${FULL_YEAR}-${NUMERIC_MONTH}-${NUMERIC_DAY}`, // 25-06-2023\n}\n","<template>\n <div class=\"b-date-picker-calendar-range\">\n <!-- Form -->\n <div class=\"b-date-picker-calendar-range__form-container\">\n <div class=\"b-date-picker-calendar-range__form\">\n <template v-if=\"hasSlot('title')\">\n <slot name=\"title\" />\n </template>\n <div>\n <bento-typography\n stronger\n :el=\"BentoTypographyElement.SPAN\"\n class=\"b-date-picker-calendar-range__label\"\n >\n From\n </bento-typography>\n <div>\n <bento-input-field\n :value=\"dateTextInput.startDate\"\n :error=\"startDateError\"\n class=\"b-date-picker-calendar-range__form-input\"\n @input=\"onStartDateInput\"\n >\n <template #description>YYYY-MM-DD</template>\n </bento-input-field>\n </div>\n </div>\n\n <div>\n <bento-typography\n stronger\n :el=\"BentoTypographyElement.SPAN\"\n class=\"b-date-picker-calendar-range__label\"\n >\n To\n </bento-typography>\n <div>\n <bento-input-field\n class=\"b-date-picker-calendar-range__form-input\"\n :value=\"dateTextInput.endDate\"\n :error=\"endDateError\"\n @input=\"onEndDateInput\"\n >\n <template #description>YYYY-MM-DD</template>\n </bento-input-field>\n </div>\n </div>\n </div>\n\n <div v-if=\"hasSlot('actions')\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <!-- Calendar -->\n <div class=\"b-date-picker-calendar-range__calendars-container\">\n <date-picker-calendar-pane\n :value=\"value\"\n :first-day-of-week=\"firstDayOfWeek\"\n :is-date-disabled=\"isDateDisabled\"\n :number-of-months=\"numberOfMonths\"\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 lang=\"ts\">\n import { defineComponent, onMounted, PropType, reactive, ref } from 'vue';\n import { DatePickerCalendarPane } from '../date-picker-calendar-pane';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { BentoInputField } from '@/components/input-field';\n import { de, enUS, fr } from 'date-fns/locale';\n import { useI18n } from '@/utils/ts/i18n';\n import { debounce } from '@/utils/ts/debounce';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import {\n DatePickerCalendarPaneRangeDate,\n DatePickerCalendarPaneValue,\n } from '../date-picker-calendar-pane/date-picker-calendar-pane.types';\n import { DatePickerCalendarRangeEvent } from './date-picker-calendar-range.types';\n import { DateFormat } from '@/types';\n import format from 'date-fns/format';\n\n const FORM_INPUT_DEBOUNCE_TIME = 300;\n\n /**\n * Calendar for range dates. Contains the logic to handle the range forms.\n *\n * @example\n * import DatePickerCalendarRange from './date-picker-calendar-range.vue';\n *\n * export default {\n * components: { DatePickerCalendarRange },\n * template: `\n * <date-picker-calendar-range\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 defineComponent({\n name: 'date-picker-calendar-range',\n components: {\n BentoInputField,\n BentoTypography,\n DatePickerCalendarPane,\n },\n inheritAttrs: false,\n props: {\n /**\n * Allows you to set the first day of the week. 0 is sunday, 1 is monday, 6 is saturday\n */\n firstDayOfWeek: DatePickerCalendarPane.props.firstDayOfWeek,\n\n /**\n * Indicate if a date should be disabled or not\n */\n isDateDisabled: DatePickerCalendarPane.props.isDateDisabled,\n\n /**\n * Number of months rendered on pane\n */\n numberOfMonths: DatePickerCalendarPane.props.numberOfMonths,\n\n /**\n * Ranges form persistance data\n */\n dateFormData: { type: Object, default: () => ({ startDate: undefined, endDate: undefined }) },\n\n /**\n * Selected date\n */\n value: { type: Object as PropType<DatePickerCalendarPaneValue>, default: undefined },\n },\n emits: [\n DatePickerCalendarRangeEvent.INPUT,\n DatePickerCalendarRangeEvent.ERROR,\n DatePickerCalendarRangeEvent.FORM_DATE,\n ],\n setup(props, { emit, slots }) {\n const { locale } = useI18n(undefined, true);\n const locales = { de, enUS, fr };\n const internalRangeDate = reactive({\n startDate: (props.value as DatePickerCalendarPaneRangeDate)?.startDate,\n endDate: (props.value as DatePickerCalendarPaneRangeDate)?.endDate,\n });\n\n /**\n * Format date to a string value in format yyyy-MM-dd\n * @param {Date} dateToFormat Date to be formatted\n */\n const formatDate = (dateToFormat?: Date) => {\n if (!dateToFormat) {\n return '';\n }\n return format(dateToFormat, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n };\n\n // Form error flags\n const startDateError = ref(false);\n const endDateError = ref(false);\n\n // Form input text used in range variant\n const dateTextInput = reactive({\n startDate: props.dateFormData.startDate,\n endDate: props.dateFormData.endDate,\n });\n\n const onDateInput = (selectedDate: Date) => {\n emit(DatePickerCalendarRangeEvent.INPUT, selectedDate);\n };\n\n const isValidDate = (dateText: string) => {\n // Is date selectable\n const isDateEnabled = (date: Date) => {\n // Check if function is set, otherwise all dates are enabled\n if (props.isDateDisabled) {\n return !props.isDateDisabled(date);\n }\n\n return true;\n };\n\n // YYYY-MM-DD regex\n const dateRegex = /^\\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])$/;\n // Date matches text regex\n return dateRegex.test(dateText) && isDateEnabled(new Date(dateText));\n };\n\n /**\n * When mounted, set the input error states to true if the values are not valid\n */\n onMounted(() => {\n if (props.dateFormData.startDate && !isValidDate(props.dateFormData.startDate)) {\n startDateError.value = true;\n }\n\n if (props.dateFormData.endDate && !isValidDate(props.dateFormData.endDate)) {\n endDateError.value = true;\n }\n });\n\n const onStartDateSelected = (newStartDate: Date) => {\n dateTextInput.startDate = formatDate(newStartDate);\n };\n\n const onEndDateSelected = (newEndDate: Date) => {\n dateTextInput.endDate = formatDate(newEndDate);\n };\n\n const getDate = (keyName: keyof DatePickerCalendarPaneRangeDate) => {\n const dateProp = (props.value as DatePickerCalendarPaneRangeDate)[keyName];\n if (dateProp) {\n return dateProp;\n }\n\n if (props.dateFormData[keyName] && isValidDate(props.dateFormData[keyName])) {\n return new Date(props.dateFormData[keyName]);\n }\n\n return undefined;\n };\n\n const onStartDateInput = debounce((startDateText: string) => {\n // Set the date as string when input through the form\n dateTextInput.startDate = startDateText;\n\n // Checks for YYYY-MM-DD format\n if (isValidDate(startDateText)) {\n startDateError.value = false;\n // Format date string to Date object\n internalRangeDate.startDate = new Date(startDateText);\n\n const endDate = getDate('endDate');\n\n emit(DatePickerCalendarRangeEvent.FORM_DATE, {\n startDate: new Date(startDateText),\n endDate,\n });\n\n emit(DatePickerCalendarRangeEvent.INPUT, {\n startDate: new Date(startDateText),\n endDate,\n });\n } else {\n // Indicate form error\n startDateError.value = true;\n // Emit Date picker calendar error\n emit(DatePickerCalendarRangeEvent.ERROR, { ...dateTextInput });\n }\n }, FORM_INPUT_DEBOUNCE_TIME);\n\n const onEndDateInput = debounce((endDateText: string) => {\n // Set the date as string when input through the form\n dateTextInput.endDate = endDateText;\n\n // Checks for YYYY-MM-DD format\n if (isValidDate(endDateText)) {\n endDateError.value = false;\n internalRangeDate.endDate = new Date(endDateText);\n\n const startDate = getDate('startDate');\n\n emit(DatePickerCalendarRangeEvent.FORM_DATE, {\n startDate,\n endDate: new Date(endDateText),\n });\n emit(DatePickerCalendarRangeEvent.INPUT, {\n startDate,\n endDate: new Date(endDateText),\n });\n } else {\n // Indicate form error\n endDateError.value = true;\n // Emit Date picker calendar error\n emit(DatePickerCalendarRangeEvent.ERROR, { ...dateTextInput });\n }\n }, FORM_INPUT_DEBOUNCE_TIME);\n\n return {\n // Values\n dateTextInput,\n endDateError,\n startDateError,\n\n // Enums\n BentoTypographyElement,\n\n // Methods\n hasSlot: hasSlot(slots),\n\n // Events\n onDateInput,\n onStartDateSelected,\n onEndDateSelected,\n onStartDateInput,\n onEndDateInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-picker-calendar-range.scss\" />\n","import { computed, ref } from 'vue';\nimport { de, enUS, fr } from 'date-fns/locale';\nimport { useI18n } from '@/utils/ts/i18n';\nimport { UseDateDisplayText } from '../date-picker.types';\nimport format from 'date-fns/format';\nimport { DateFormat } from '@/types';\n\nexport const useDatePickerSingleCalendarText: UseDateDisplayText<Date> = ({ datePickerValue, isDateIncorrect }) => {\n const { locale, t } = useI18n();\n const locales = { de, enUS, fr };\n\n const textInputDisplayValue = ref(null);\n\n const dateDisplayValue = computed(() => {\n // Display incorrect date when there's an error with the input\n if (isDateIncorrect.value) {\n return textInputDisplayValue.value;\n }\n\n // Display \"Select a date\" when there's no date selected or input\n if (!datePickerValue.value) {\n return t('selectDate') as string;\n }\n\n // Display the date in format \"dd MMM, yyyy (25 Jun, 2023)\" if there's a valid date selected\n return format(datePickerValue.value as Date, DateFormat.FULL_DATE, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n });\n\n const formatTextInputDisplayValue = () => {\n textInputDisplayValue.value = format(datePickerValue.value, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n };\n\n return {\n // Values\n dateDisplayValue,\n textInputDisplayValue,\n\n // Methods\n formatTextInputDisplayValue,\n };\n};\n","import { computed, reactive } from 'vue';\nimport { de, enUS, fr } from 'date-fns/locale';\nimport { useI18n } from '@/utils/ts/i18n';\nimport {\n BentoDatePickerRangeDate,\n DatePickerCalendarPaneRangeFormData,\n UseDateDisplayText,\n} from '../date-picker.types';\nimport { DateFormat } from '@/types';\nimport format from 'date-fns/format';\n\nexport const useDatePickerRangeCalendarText: UseDateDisplayText<BentoDatePickerRangeDate> = ({\n datePickerValue,\n isDateIncorrect,\n}) => {\n const { locale, t } = useI18n();\n const locales = { de, enUS, fr };\n\n const formatDate = (date: Date, dateFormat: DateFormat) =>\n format(date, dateFormat, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n // Handle the form input text\n const textInputDisplayValue = reactive<DatePickerCalendarPaneRangeFormData>({\n startDate: datePickerValue.value.startDate\n ? formatDate(datePickerValue.value.startDate, DateFormat.NUMERIC_DATE_YEAR_FIRST)\n : undefined,\n endDate: datePickerValue.value.endDate\n ? formatDate(datePickerValue.value.endDate, DateFormat.NUMERIC_DATE_YEAR_FIRST)\n : undefined,\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 t('selectDateRange') as string;\n }\n\n const { startDate, endDate } = textInputDisplayValue;\n return `${formatDate(new Date(startDate), DateFormat.FULL_DATE_MONTH_FIRST)} - ${formatDate(\n new Date(endDate),\n DateFormat.FULL_DATE_MONTH_FIRST\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=\"closeDatePicker\" class=\"b-date-picker\">\n <!-- Label -->\n <div v-if=\"label\" :id=\"labelId\" class=\"b-date-picker__label\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\" stronger>{{ label }}</bento-typography>\n <bento-typography\n v-if=\"optional\"\n class=\"b-date-picker__label-requirement\"\n :el=\"BentoTypographyElement.SPAN\"\n >\n ({{ $t('optional') }})\n </bento-typography>\n <bento-typography\n v-if=\"required\"\n class=\"b-date-picker__label-requirement\"\n :el=\"BentoTypographyElement.SPAN\"\n >\n ({{ $t('required') }})\n </bento-typography>\n </div>\n\n <!-- Input -->\n <div @keydown.enter=\"onEnterPressedOverInput\">\n <dropdown-input-default\n ref=\"inputContainerRef\"\n :ariaControls=\"datePickerContainerId\"\n :ariaExpanded=\"isDatePickerOpen\"\n :aria-labelledby=\"label ? labelId : null\"\n :disabled=\"disabled\"\n :dynamic-filtering=\"variant === 'single-calendar'\"\n :is-invalid=\"isDateIncorrect\"\n :open=\"isDatePickerOpen\"\n :value=\"dropdownValue\"\n :display-value=\"dateDisplayValue\"\n @input=\"onDateInputChange\"\n @open=\"openDatePicker\"\n @clear=\"clearDatePickerValue\"\n @close=\"closeDatePicker\"\n />\n </div>\n\n <!-- Description -->\n <bento-typography\n v-if=\"description\"\n class=\"b-date-picker__description\"\n :class=\"descriptionConditionalClasses\"\n :el=\"BentoTypographyElement.SPAN\"\n >\n {{ supportDescriptionText }}\n </bento-typography>\n\n <!-- Calendar container -->\n <bento-popover\n v-if=\"inputContainerRef\"\n class=\"b-date-picker__container\"\n :class=\"popoverConditionalClasses\"\n :open=\"isDatePickerOpen\"\n :target-element=\"inputContainerRef\"\n :disable-focus-trap=\"true\"\n :aria-label=\"popoverAriaLabel\"\n :position=\"BentoPopoverPositions.BOTTOM_START\"\n :without-space=\"variant === BentoDatePickerVariant.RANGE_CALENDAR\"\n fit-content\n >\n <!-- Daily date picker -->\n <date-picker-calendar-pane\n v-if=\"variant === BentoDatePickerVariant.SINGLE_CALENDAR\"\n :first-day-of-week=\"firstDayOfWeek\"\n :is-date-disabled=\"isDateDisabled\"\n :number-of-months=\"1\"\n :value=\"value\"\n @input=\"onDateSelected\"\n />\n\n <!-- Daily Range date picker -->\n <date-picker-calendar-range\n v-if=\"variant === BentoDatePickerVariant.RANGE_CALENDAR\"\n :value=\"value\"\n :first-day-of-week=\"firstDayOfWeek\"\n :is-date-disabled=\"isDateDisabled\"\n :number-of-months=\"numberOfMonths\"\n :date-form-data=\"textInputDisplayValue\"\n @input=\"onDatePickerRangeInput\"\n @error=\"onDatePickerRangeError\"\n @form-date=\"onDatePickerRangeFormDateInputUpdate\"\n />\n\n <!-- Monthly date picker -->\n\n <!-- Monthly Range date picker -->\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, Ref, ref, toRef, watch } from 'vue';\n import { BentoClickOutsideDirective } from '@/directives';\n import {\n BentoDatePickerEvent,\n BentoDatePickerFirstDayOfWeek,\n BentoDatePickerIsDateDisabled,\n BentoDatePickerRangeDate,\n BentoDatePickerValue,\n BentoDatePickerVariant,\n DatePickerCalendarPaneRangeFormData,\n } from './date-picker.types';\n import { DatePickerCalendarPane } from './components/date-picker-calendar-pane';\n import { DatePickerCalendarRange } from './components/date-picker-calendar-range';\n import { DropdownInputDefault } from '@/components/dropdown/components';\n import { BentoPopover, BentoPopoverPositions } from '@/components/popover';\n import { generateUid } from '@/utils/ts/unique-id';\n import { de, enUS, fr } from 'date-fns/locale';\n import { useI18n } from '@/utils/ts/i18n';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '../typography';\n import { useDatePickerSingleCalendarText } from './composables/use-date-picker-single-calendar-text';\n import { useDatePickerRangeCalendarText } from './composables/use-date-picker-range-calendar-text';\n import format from 'date-fns/format';\n\n import messages from './messages.json';\n import { DateFormat } from '@/types';\n\n /**\n * Date picker selector.\n *\n * @example\n * import { BentoDatePicker } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDatePicker },\n * template: `\n * <bento-date-picker\n * label=\"Label\"\n * description=\"Supporting text\"\n * required\n * optional\n * disabled\n * @input=\"onDateChanged\"\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 defineComponent({\n i18n: { messages },\n name: 'bento-date-picker',\n components: {\n BentoTypography,\n BentoPopover,\n DatePickerCalendarPane,\n DatePickerCalendarRange,\n DropdownInputDefault,\n },\n directives: { BentoClickOutsideDirective },\n inheritAttrs: false,\n props: {\n /**\n * Descriptive supporting text visbile underneath the dropdown.\n */\n description: { type: String, default: undefined },\n\n /**\n * Disables dropdown functionality.\n */\n disabled: { type: Boolean, default: false },\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: {\n type: Number as PropType<BentoDatePickerFirstDayOfWeek>,\n default: BentoDatePickerFirstDayOfWeek.MONDAY,\n validator: (value: BentoDatePickerFirstDayOfWeek) =>\n Object.values(BentoDatePickerFirstDayOfWeek).includes(value),\n },\n\n /**\n * Indicate if a date should be disabled or not\n */\n isDateDisabled: { type: Function as PropType<BentoDatePickerIsDateDisabled>, default: undefined },\n\n /**\n * Text that is displayed as a label above the element.\n */\n label: { type: String, default: undefined },\n\n /**\n * Highlights the dropdown is optional.\n */\n optional: { type: Boolean, default: false },\n\n /**\n * Highlights the dropdown is required.\n */\n required: { type: Boolean, default: false },\n\n /**\n * Number of months rendered on pane\n */\n numberOfMonths: DatePickerCalendarPane.props.numberOfMonths,\n\n /**\n * Selected date\n */\n value: { type: [Date, Object] as PropType<BentoDatePickerValue>, default: null },\n\n /**\n * Allows to render a single date calendar or a range calendar\n */\n variant: {\n type: String as PropType<BentoDatePickerVariant>,\n default: BentoDatePickerVariant.SINGLE_CALENDAR,\n validator: (value: BentoDatePickerVariant) => Object.values(BentoDatePickerVariant).includes(value),\n },\n },\n emits: [BentoDatePickerEvent.INPUT],\n setup(props, { emit }) {\n const { locale, t } = useI18n({ messages });\n const locales = { de, enUS, fr };\n const datePickerContainerId = generateUid('bento-date-picker-container');\n const labelId = generateUid('bento-date-picker-label');\n const popoverAriaLabel = computed(() => props.label || t('datePicker', { name: datePickerContainerId }));\n\n const isDateIncorrect = ref(false);\n const inputContainerRef = ref(null);\n const isDatePickerOpen = ref(false);\n\n watch(\n () => props.disabled,\n () => {\n // Close date picker popover if it's opened when it's disabled\n if (props.disabled && isDatePickerOpen.value) {\n isDatePickerOpen.value = false;\n }\n }\n );\n\n const descriptionConditionalClasses = computed(() => ({\n 'b-date-picker__description--error': isDateIncorrect.value,\n }));\n\n const popoverConditionalClasses = computed(() => ({\n 'b-date-picker__container-range': props.variant === BentoDatePickerVariant.RANGE_CALENDAR,\n }));\n\n const { dateDisplayValue, textInputDisplayValue, formatTextInputDisplayValue } =\n props.variant === 'single-calendar'\n ? useDatePickerSingleCalendarText({\n datePickerValue: toRef(props, 'value') as Ref<Date>,\n isDateIncorrect,\n })\n : useDatePickerRangeCalendarText({\n datePickerValue: toRef(props, 'value') as Ref<BentoDatePickerRangeDate>,\n isDateIncorrect,\n });\n\n const dropdownValue = computed(() =>\n props.variant === BentoDatePickerVariant.SINGLE_CALENDAR\n ? (textInputDisplayValue as Ref<string>).value\n : undefined\n );\n\n const supportDescriptionText = computed(() => {\n if (\n props.isDateDisabled &&\n props.isDateDisabled(new Date((textInputDisplayValue as Ref<string>).value))\n ) {\n return t('selectedDateIsNotAvailable');\n }\n\n return isDateIncorrect.value ? t('provideDateInAFormat') : props.description;\n });\n\n const isDateEnabled = (date: Date) => {\n // Check if function is set, otherwise all dates are enabled\n if (props.isDateDisabled) {\n return !props.isDateDisabled(date);\n }\n\n return true;\n };\n\n const closeDatePicker = () => {\n isDatePickerOpen.value = false;\n\n if (!isDateIncorrect.value) {\n // Remove the input field value when the date is incorrect\n (textInputDisplayValue as Ref<string>).value = null;\n }\n };\n\n const openDatePicker = () => {\n isDatePickerOpen.value = true;\n\n formatTextInputDisplayValue();\n };\n\n const onDateSelected = (selectedDate: Date) => {\n // Reset the error state when a valid date is selected\n isDateIncorrect.value = false;\n\n closeDatePicker();\n emit(BentoDatePickerEvent.INPUT, selectedDate);\n };\n\n const onDatePickerRangeInput = (selectedRange: BentoDatePickerRangeDate) => {\n const formatDate = (date: Date) =>\n format(date, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n (textInputDisplayValue as DatePickerCalendarPaneRangeFormData).startDate = formatDate(\n selectedRange.startDate\n );\n (textInputDisplayValue as DatePickerCalendarPaneRangeFormData).endDate = formatDate(\n selectedRange.endDate\n );\n emit(BentoDatePickerEvent.INPUT, selectedRange);\n };\n\n const clearDatePickerValue = async () => {\n if (isDateIncorrect.value) {\n isDateIncorrect.value = false;\n (textInputDisplayValue as Ref<string>).value = null;\n }\n emit(BentoDatePickerEvent.INPUT, null);\n };\n\n const onDateInputChange = stringDate => {\n (textInputDisplayValue as Ref<string>).value = stringDate;\n\n // Checks for YYYY-MM-DD format\n const dateRegex = /^\\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])$/;\n const isValidDate = dateRegex.test(stringDate) && isDateEnabled(new Date(stringDate));\n if (isValidDate) {\n isDateIncorrect.value = false;\n emit(BentoDatePickerEvent.INPUT, new Date(stringDate));\n } else if (stringDate) {\n // Only set to true if the value exists (not null/undefined)\n isDateIncorrect.value = true;\n emit(BentoDatePickerEvent.INPUT, null);\n }\n };\n\n const onEnterPressedOverInput = () => {\n // Close the date picker if the date is correct\n if (!isDateIncorrect.value) {\n isDatePickerOpen.value = false;\n }\n };\n\n const onDatePickerRangeFormDateInputUpdate = () => {\n isDateIncorrect.value = false;\n };\n\n const onDatePickerRangeError = dateTextInput => {\n isDateIncorrect.value = true;\n (textInputDisplayValue as DatePickerCalendarPaneRangeFormData).startDate = dateTextInput.startDate;\n (textInputDisplayValue as DatePickerCalendarPaneRangeFormData).endDate = dateTextInput.endDate;\n\n // Remove current date range selection\n emit(BentoDatePickerEvent.INPUT, { startDate: null, endDate: null });\n };\n\n return {\n // Refs\n inputContainerRef,\n\n // Values,\n dateDisplayValue,\n datePickerContainerId,\n descriptionConditionalClasses,\n dropdownValue,\n isDateIncorrect,\n isDatePickerOpen,\n labelId,\n popoverAriaLabel,\n popoverConditionalClasses,\n supportDescriptionText,\n textInputDisplayValue,\n\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n BentoPopoverPositions,\n BentoDatePickerVariant,\n\n // Events\n closeDatePicker,\n clearDatePickerValue,\n onDateSelected,\n openDatePicker,\n onDateInputChange,\n onEnterPressedOverInput,\n onDatePickerRangeInput,\n onDatePickerRangeError,\n onDatePickerRangeFormDateInputUpdate,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-picker.scss\" />\n","<template>\n <bento-base-filter\n :label=\"label\"\n :field=\"field\"\n :applied-filters-count=\"appliedFiltersCount\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n :disable-secondary-button=\"isSecondaryButtonDisabled\"\n :button-label=\"buttonLabel\"\n :default-value=\"defaultValue\"\n :only-slot=\"onlySlot\"\n fit-content\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @open=\"openFilter\"\n @reset=\"resetFilter\"\n >\n <bento-date-picker\n v-if=\"onlySlot\"\n v-model=\"internalFilterValue\"\n :first-day-of-week=\"options?.firstDayOfWeek\"\n :is-date-disabled=\"options?.isDateDisabled\"\n @input=\"onDateInputSelected\"\n />\n <template v-else>\n <bento-divider class=\"b-date-filter__divider\" />\n\n <div class=\"b-date-filter\">\n <date-picker-calendar-pane\n :first-day-of-week=\"options?.firstDayOfWeek\"\n :is-date-disabled=\"options?.isDateDisabled\"\n :number-of-months=\"1\"\n :value=\"internalFilterValue\"\n @input=\"onDateSelected\"\n />\n </div>\n </template>\n </bento-base-filter>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, toRef } from 'vue';\n import { BentoBaseFilter, useBaseFilter } from '../base-filter';\n import { BentoDateFilterOptions, BentoDateFilterValue, BentoFilterEvent } from '../../filter-bar.types';\n import { DatePickerCalendarPane } from '@/components/date-picker/components/date-picker-calendar-pane';\n import { BentoDivider } from '@/components/divider';\n import { BentoDatePicker } from '@/components/date-picker';\n import format from 'date-fns/format';\n import { useI18n } from '@/utils/ts/i18n';\n import { de, enUS, fr } from 'date-fns/locale';\n\n /**\n * The Date filter displays a calendar that allows\n * to select a single date.\n *\n * @example\n * import { BentoDateFilter } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDateFilter },\n * template: `\n * <bento-date-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 name: 'bento-date-filter',\n components: {\n BentoBaseFilter,\n BentoDatePicker,\n BentoDivider,\n DatePickerCalendarPane,\n },\n inheritAttrs: false,\n props: {\n isDateInput: { type: Boolean, default: true },\n\n /**\n * Default value of the filter to reset to.\n */\n defaultValue: { type: Date as PropType<BentoDateFilterValue>, 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 * - firstDayOfWeek: Allows you 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 */\n options: {\n type: Object as PropType<BentoDateFilterOptions>,\n default: undefined,\n },\n\n /**\n * Current value of the filter\n */\n value: { type: Date as PropType<BentoDateFilterValue>, default: undefined },\n },\n emits: [BentoFilterEvent.INPUT, BentoFilterEvent.UPDATE],\n setup(props, { emit }) {\n const { locale } = useI18n(undefined, true);\n const locales = { de, enUS, fr };\n const { internalFilterValue, isSecondaryButtonDisabled, isApplyButtonDisabled } = useBaseFilter(\n toRef(props, 'value'),\n toRef(props, 'defaultValue')\n );\n\n const buttonLabel = computed(() =>\n props.defaultValue === null\n ? props.label\n : format(props.value, 'dd MMM, yyyy', {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n })\n );\n\n // Count is always 1 for the text filter when it's active\n const appliedFiltersCount = computed(() => (props.value != null ? 1 : null));\n\n const updateFilter = () => {\n emit(BentoFilterEvent.UPDATE, { ...props, value: internalFilterValue.value });\n };\n\n const clearFilter = () => {\n internalFilterValue.value = null;\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 const onDateSelected = (selectedDate: Date) => {\n internalFilterValue.value = selectedDate;\n emit(BentoFilterEvent.INPUT, { ...props, value: internalFilterValue.value });\n };\n\n // Update internal date and emit selected date when using date-picker input\n const onDateInputSelected = (selectedDate: Date) => {\n onDateSelected(selectedDate);\n updateFilter();\n };\n\n return {\n // Values\n appliedFiltersCount,\n internalFilterValue,\n isApplyButtonDisabled,\n isSecondaryButtonDisabled,\n buttonLabel,\n\n // Events\n clearFilter,\n onDateSelected,\n openFilter,\n updateFilter,\n resetFilter,\n onDateInputSelected,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-filter.scss\" />\n","<template>\n <bento-base-filter\n ref=\"baseFilter\"\n :label=\"label\"\n :field=\"field\"\n :applied-filters-count=\"appliedFiltersCount\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n :disable-secondary-button=\"isSecondaryButtonDisabled\"\n :button-label=\"buttonLabel\"\n :default-value=\"defaultValue\"\n :controlled=\"!onlySlot\"\n :only-slot=\"onlySlot\"\n fit-content\n @open=\"openFilter\"\n >\n <bento-date-picker\n v-if=\"onlySlot\"\n :value=\"internalFilterValue\"\n :first-day-of-week=\"options?.firstDayOfWeek\"\n :is-date-disabled=\"options?.isDateDisabled\"\n :number-of-months=\"options?.numberOfMonths\"\n :variant=\"BentoDatePickerVariant.RANGE_CALENDAR\"\n @input=\"onDateInputSelected\"\n />\n\n <template v-else>\n <div class=\"b-date-range-filter\">\n <date-picker-calendar-range\n :first-day-of-week=\"options?.firstDayOfWeek\"\n :is-date-disabled=\"options?.isDateDisabled\"\n :number-of-months=\"options?.numberOfMonths\"\n :value=\"internalFilterValue\"\n :date-form-data=\"formData\"\n @input=\"onDateSelected\"\n @error=\"onDatePickerRangeError\"\n @form-date=\"onDatePickerRangeFormDateInputUpdate\"\n >\n <template #title>\n <bento-typography\n strongest\n :variant=\"BentoTypographyVariant.BODY\"\n :el=\"BentoTypographyElement.SPAN\"\n >\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=\"BentoButtonActionsLayout.SPACE_BETWEEN\"\n />\n </template>\n </date-picker-calendar-range>\n </div>\n </template>\n </bento-base-filter>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, reactive, ref, toRef } from 'vue';\n import { BentoBaseFilter, useBaseFilter } from '../base-filter';\n import { BentoDateRangeFilterOptions, BentoDateRangeFilterValue, BentoFilterEvent } from '../../filter-bar.types';\n import { DatePickerCalendarRange } from '@/components/date-picker/components/date-picker-calendar-range';\n import { BentoDatePicker, BentoDatePickerRangeDate, BentoDatePickerVariant } from '@/components/date-picker';\n import { BentoDivider } from '@/components/divider';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import {\n BentoButtonActions,\n BentoButtonActionsLayout,\n BentoButtonActionsList,\n } from '@/components/button/components/button-actions';\n import { useI18n } from '@/utils/ts/i18n';\n import { de, enUS, fr } from 'date-fns/locale';\n import { DateFormat } from '@/types';\n import format from 'date-fns/format';\n\n import messages from './messages.json';\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 BentoDatePicker,\n BentoTypography,\n BentoDivider,\n DatePickerCalendarRange,\n },\n inheritAttrs: false,\n props: {\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 * - firstDayOfWeek: Allows you 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 */\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();\n const locales = { de, enUS, fr };\n const { internalFilterValue, isSecondaryButtonDisabled, isApplyButtonDisabled } = useBaseFilter(\n toRef(props, 'value'),\n toRef(props, 'defaultValue')\n );\n\n const formatFormDate = (date: Date) =>\n date\n ? format(date, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n })\n : undefined;\n\n const baseFilter = ref(null);\n const isDateIncorrect = ref(false);\n const formData = reactive({\n startDate: formatFormDate(props.value?.startDate),\n endDate: formatFormDate(props.value?.endDate),\n });\n\n // Count is always 1 for the text filter when it's active\n const appliedFiltersCount = computed(() =>\n props.value?.startDate != null && props.value?.endDate != null ? 1 : null\n );\n\n const buttonLabel = computed(() =>\n props.defaultValue === null\n ? props.label\n : `${format(props.value.startDate, 'dd MMM, yyyy', {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n })} - ${format(props.value.endDate, 'dd MMM, yyyy', {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n })}`\n );\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 = { startDate: undefined, endDate: 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 const onDateSelected = (selectedDate: BentoDatePickerRangeDate) => {\n internalFilterValue.value = selectedDate;\n formData.startDate = formatFormDate(selectedDate.startDate);\n formData.endDate = formatFormDate(selectedDate.endDate);\n emit(BentoFilterEvent.INPUT, { ...props, value: internalFilterValue.value });\n };\n\n // Need to update the internal value and emit the date when using the date-picker input\n const onDateInputSelected = (selectedDate: BentoDatePickerRangeDate) => {\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: isDateIncorrect.value || isApplyButtonDisabled.value,\n },\n {\n title: t('clear') as string,\n event: 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 = () => {\n isDateIncorrect.value = false;\n };\n\n return {\n // Refs\n baseFilter,\n\n // Values\n actions,\n appliedFiltersCount,\n formData,\n internalFilterValue,\n isApplyButtonDisabled,\n isSecondaryButtonDisabled,\n buttonLabel,\n\n // Enum\n BentoButtonActionsLayout,\n BentoTypographyElement,\n BentoTypographyVariant,\n BentoDatePickerVariant,\n\n // Events\n clearFilter,\n onDateSelected,\n openFilter,\n updateFilter,\n resetFilter,\n onDatePickerRangeError,\n onDatePickerRangeFormDateInputUpdate,\n onDateInputSelected,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-filter.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><g :clip-path=\"'url(#uia-icons-16-search__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M8.31686 0.379702C7.00749 0.119252 5.65029 0.252925 4.41689 0.763816C3.18349 1.27471 2.12928 2.13987 1.38758 3.2499C0.645881 4.35994 0.25 5.66498 0.25 7C0.25 8.79021 0.961159 10.5071 2.22703 11.773C3.4929 13.0388 5.20979 13.75 7 13.75C8.33502 13.75 9.64007 13.3541 10.7501 12.6124C10.9096 12.5059 11.064 12.3928 11.2131 12.2737L14.4697 15.5303C14.7626 15.8232 15.2374 15.8232 15.5303 15.5303C15.8232 15.2374 15.8232 14.7626 15.5303 14.4697L12.2738 11.2131C12.6674 10.7203 12.9922 10.1721 13.2362 9.58312C13.7471 8.34972 13.8808 6.99252 13.6203 5.68314C13.3598 4.37377 12.717 3.17104 11.773 2.22703C10.829 1.28303 9.62623 0.640153 8.31686 0.379702ZM10.7619 10.6621C11.2239 10.1875 11.5943 9.6272 11.8504 9.00909C12.2477 8.04978 12.3517 6.99418 12.1491 5.97578C11.9465 4.95738 11.4465 4.02192 10.7123 3.28769C9.97808 2.55347 9.04262 2.05345 8.02422 1.85088C7.00582 1.64831 5.95022 1.75228 4.99091 2.14964C4.0316 2.547 3.21166 3.2199 2.63478 4.08326C2.05791 4.94662 1.75 5.96165 1.75 7C1.75 8.39239 2.30312 9.72775 3.28769 10.7123C4.27226 11.6969 5.60761 12.25 7 12.25C8.03835 12.25 9.05339 11.9421 9.91674 11.3652C10.1843 11.1864 10.4336 10.9843 10.6621 10.7619C10.677 10.7439 10.6928 10.7265 10.7097 10.7097C10.7265 10.6928 10.7439 10.677 10.7619 10.6621Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-search__a' + uuid\"><rect width=\"16\" height=\"16\" fill=\"#fff\"/></clipPath></defs></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","export enum BentoSearchBarInternalEvent {\n CLEAR = 'clear',\n ESCAPE = 'escape-pressed',\n INPUT = 'input',\n UPDATE = 'update:search-term',\n}\n\nexport enum BentoSearchBarEvent {\n CLEAR = 'search-clear',\n INPUT = 'search-input',\n UPDATE = 'update:search-term',\n}\n\nexport interface BentoSearchBarItem {\n label: string;\n}\n\nexport type BentoSearchBarData = Array<BentoSearchBarItem>;\n","<template>\n <div class=\"b-search-bar\">\n <bento-input-field\n ref=\"bentoInputField\"\n v-model=\"searchTerm\"\n :type=\"BentoInputFieldType.SEARCH\"\n :aria-label=\"inputFieldAriaLabel\"\n :aria-hidden=\"false\"\n :placeholder=\"placeholder\"\n @input=\"onInputEvent\"\n @escape-pressed=\"$emit(BentoSearchBarInternalEvent.ESCAPE)\"\n >\n <template #defaultIconBefore>\n <search-icon :svg-title=\"$t('search')\" />\n </template>\n\n <template v-if=\"searchTerm\" #iconAfter>\n <div\n class=\"b-search-bar__clear-search\"\n tabindex=\"0\"\n data-testid=\"b-search-bar-clear-search-button\"\n @click=\"onClearSearch\"\n @keypress.enter=\"onClearSearch\"\n @keyup.space=\"onClearSearch\"\n >\n <cross-circle-fill-icon :svg-title=\"$t('clearSearch')\" />\n </div>\n </template>\n </bento-input-field>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, ref , watch } from 'vue';\n import { BentoInputFieldType } from '@/components/input-field/input-field.types';\n import { debounce } from '@/utils/ts/debounce';\n import BentoInputField from '@/components/input-field/input-field.vue';\n import SearchIcon from '@adyen/ui-assets-icons-16/vue/search';\n import CrossCircleFillIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import { BentoSearchBarInternalEvent } from './search-bar.types';\n import messages from './messages.json';\n \n /**\n * Search functionality to help users find the desired data quicker.\n * When a user starts typing, the data is dynamically filtered to\n * only show the relevant results.\n *\n * Clearing the search field displays the entire list again.\n *\n * @example\n * import {\n * BentoSearchBar,\n * BentoSearchBarData,\n * useSearchBarFilter\n * } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoSearchBar },\n * template: `\n * <bento-search-bar\n * input-field-aria-label=\"Search bar\"\n * v-modal=\"searchTerm\"\n * @input=\"onInput\"\n * @clear-search=\"onClearSearch\"\n * />\n * // Render the filtered data\n * {{ filteredData }}\n * `,\n * setup() {\n * const searchTerm = ref('');\n * const data = ref<BentoSearchBarData>([]);\n * const filteredData = useSearchBarFilter(searchTerm, data);\n *\n * consdt onInput = () => {}\n * consdt onClearSearch = () => {}\n *\n * return {\n * searchTerm,\n * filteredData,\n * onInput,\n * onClearSearch,\n * };\n * }\n * }\n */\n export default defineComponent({\n name: 'bento-search-bar',\n i18n: { messages },\n components: {\n CrossCircleFillIcon,\n BentoInputField,\n SearchIcon,\n },\n inheritAttrs: false,\n props: {\n /**\n * Text that labels an the search bar input element\n */\n inputFieldAriaLabel: { type: String, required: true },\n\n /**\n * Custom debounce time. Default: 300\n */\n debounceTime: { type: Number, default: 300 },\n\n /**\n * Text displayed as the placeholder of the input-field\n */\n placeholder: { type: String, default: '' },\n\n /**\n * Text displayed as the value being searched\n */\n value: { type: String, default: undefined },\n },\n emits: [\n BentoSearchBarInternalEvent.INPUT,\n BentoSearchBarInternalEvent.CLEAR,\n BentoSearchBarInternalEvent.ESCAPE,\n ],\n setup(props, { emit }) {\n const searchTerm = ref(props.value);\n const bentoInputField = ref<InstanceType<typeof BentoInputField> | null>();\n\n watch(\n () => props.value,\n () => {\n searchTerm.value = props.value;\n },\n { immediate: true }\n );\n\n const onClearSearch = () => {\n searchTerm.value = '';\n emit(BentoSearchBarInternalEvent.CLEAR);\n emit(BentoSearchBarInternalEvent.INPUT, '');\n };\n\n const onInputEvent = debounce(() => {\n emit(BentoSearchBarInternalEvent.INPUT, searchTerm.value);\n }, props.debounceTime);\n\n return {\n // Values\n searchTerm,\n bentoInputField,\n\n // Emits\n onClearSearch,\n onInputEvent,\n\n // Enums\n BentoInputFieldType,\n BentoSearchBarInternalEvent,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./search-bar.scss\" />\n","<template>\n <bento-base-filter\n :label=\"label\"\n :field=\"field\"\n :applied-filters-count=\"appliedFiltersCount\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n :disable-secondary-button=\"isSecondaryButtonDisabled\"\n :button-label=\"buttonLabel\"\n :default-value=\"defaultValue\"\n :only-slot=\"onlySlot\"\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @reset=\"resetFilter\"\n @open=\"openFilter\"\n @close=\"closeFilter\"\n >\n <bento-dropdown\n v-if=\"onlySlot\"\n v-model=\"internalFilterValue\"\n class=\"b-select-filter__dropdown-variant\"\n :items=\"options.listboxItems\"\n :multiple=\"options?.multiple\"\n :no-results-message=\"noResultsMessage\"\n :searching=\"!!searchTerm\"\n :is-option-disabled=\"options.isOptionDisabled\"\n :dynamic-filtering=\"true\"\n @input=\"onOptionSelected\"\n >\n <template v-for=\"(_, slot) of $scopedSlots || $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-dropdown>\n <template v-else>\n <div class=\"b-select-filter__search-bar\">\n <bento-search-bar\n v-model=\"searchTerm\"\n :input-field-aria-label=\"$t('searchFilter', { filter: label.toLocaleLowerCase() }).toString()\"\n />\n </div>\n\n <hr class=\"b-select-filter__divider\" />\n\n <bento-listbox\n :id=\"listboxFilterId\"\n :aria-label=\"label\"\n class=\"b-select-filter__wrapper\"\n :items=\"filteredItems\"\n :is-option-disabled=\"options?.isOptionDisabled\"\n :multiple=\"options?.multiple\"\n :no-results-message=\"noResultsMessage\"\n :searching=\"!!searchTerm\"\n :selected-value=\"internalFilterValue\"\n @select=\"onOptionSelected\"\n >\n <template v-for=\"(_, slot) of $scopedSlots || $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-listbox>\n </template>\n </bento-base-filter>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRef } from 'vue';\n import { BentoBaseFilter, useBaseFilter } from '../base-filter';\n import { BentoListbox } from '@/internal';\n import { BentoListboxOptionItem, BentoListboxSelectedValue } from '@/types';\n import { generateUid } from '@/utils/ts/unique-id';\n import { BentoFilterEvent, BentoSelectFilterOptions } from '../../filter-bar.types';\n import { BentoSearchBar, useSearchBarFilter } from '@/components/search-bar';\n import { truncate } from '@/utils/ts/truncate';\n import { useI18n } from '../../../../utils/ts/i18n';\n import { BentoDropdown } from '@/components/dropdown';\n\n import messages from './messages.json';\n\n /**\n * The Listbox filter displays a listbox of items\n * passed in the \"options.listboxItems\" property.\n *\n * @example\n * import { BentoSelectFilter } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoSelectFilter },\n * template: `\n * <bento-select-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-select-filter',\n components: {\n BentoBaseFilter,\n BentoDropdown,\n BentoListbox,\n BentoSearchBar,\n },\n inheritAttrs: false,\n props: {\n /**\n * Default value of the filter to reset to.\n */\n defaultValue: { type: [String, Number, Array] as PropType<BentoListboxSelectedValue>, 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 * - multiple: If \"true\", the user will be able to select multiple items.\n * - listboxItems: The option elements to populate the filter with.\n */\n options: {\n type: Object as PropType<BentoSelectFilterOptions>,\n default: undefined,\n },\n\n /**\n * Current value of the filter\n */\n value: {\n type: [String, Number, Array] as PropType<BentoListboxSelectedValue>,\n default: undefined,\n },\n },\n emits: [BentoFilterEvent.INPUT, BentoFilterEvent.UPDATE],\n setup(props, { emit }) {\n const { internalFilterValue, isSecondaryButtonDisabled, isApplyButtonDisabled } = useBaseFilter(\n toRef(props, 'value'),\n toRef(props, 'defaultValue')\n );\n\n const { t, locale } = useI18n();\n\n const searchTerm = ref('');\n const itemsRef = toRef(props.options, 'listboxItems');\n const filteredItems = useSearchBarFilter<BentoListboxOptionItem>(searchTerm, itemsRef);\n const noResultsMessage = computed(() => t('noFiltersMatchThisSearch') as string);\n\n const buttonLabel = computed(() => {\n if (props.defaultValue === null) {\n return props.label;\n }\n if (props.options.multiple) {\n const itemsSelected = (props.value as unknown[]).length;\n if (itemsSelected === props.options.listboxItems.length) {\n return props?.options?.messages[locale.value].persistentButtonLabelAllSelected;\n }\n\n const messageTranslation = props?.options?.messages[\n locale.value\n ].persistentButtonLabelPartiallySelected\n .split('|')\n .map(message => message.trim());\n if (itemsSelected === 1) {\n return messageTranslation[0].replace('{count}', itemsSelected as unknown as string);\n }\n return messageTranslation[1].replace('{count}', itemsSelected as unknown as string);\n }\n return truncate(props.options.listboxItems.find(({ value }) => value === props.value)?.label, 18);\n });\n\n const listboxFilterId = computed(() => generateUid(`filter-listbox-${props.field}`));\n\n const onOptionSelected = (selectedValue: BentoListboxSelectedValue) => {\n internalFilterValue.value = selectedValue;\n const { onlySlot, ...cleanedProps } = props;\n emit(BentoFilterEvent.INPUT, { ...cleanedProps, value: internalFilterValue.value });\n };\n\n const updateFilter = () => {\n // If persistent multi select filter, and all items unchecked, reset back to default value\n if (\n props.defaultValue !== null &&\n props.options.multiple &&\n (internalFilterValue.value as unknown[]).length === 0\n ) {\n internalFilterValue.value = props.defaultValue;\n }\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 openFilter = () => {\n internalFilterValue.value = props.value;\n };\n\n const closeFilter = () => {\n // If the search term is set, reset it to \"empty\"\n if (searchTerm.value) {\n searchTerm.value = '';\n }\n };\n\n const resetFilter = () => {\n internalFilterValue.value = props.defaultValue;\n updateFilter();\n };\n\n const clearFilter = () => {\n internalFilterValue.value = null;\n updateFilter();\n };\n\n const appliedFiltersCount = computed(() => {\n // No filter applied\n if (props.value == null) {\n return null;\n }\n\n /**\n * Count is\n * single: always 1\n * multi: amount of items selceted (props.value)\n */\n const singleSelectAmount = 1;\n return props.options.multiple ? (props.value as Array<string | number>).length : singleSelectAmount;\n });\n\n return {\n // Values\n appliedFiltersCount,\n filteredItems,\n internalFilterValue,\n isApplyButtonDisabled,\n isSecondaryButtonDisabled,\n listboxFilterId,\n noResultsMessage,\n buttonLabel,\n\n // Search\n searchTerm,\n\n // Events\n clearFilter,\n closeFilter,\n onOptionSelected,\n openFilter,\n updateFilter,\n resetFilter,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./select-filter.scss\" />\n","<template>\n <bento-select-filter\n v-slot=\"{ label, data }\"\n v-bind=\"$props\"\n @update=\"onUpdate\"\n @input=\"e => $emit(BentoFilterEvent.INPUT, e)\"\n >\n <bento-avatar :username=\"label\" :src=\"data\" />\n </bento-select-filter>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import { BentoListboxSelectedValue } from '@/types';\n import { BentoSelectFilter } from '../../index';\n import { BentoFilterEvent, BentoSelectAvatarFilterOptions } from '@/components/filter-bar';\n import { BentoAvatar } from '@/internal';\n\n /**\n * The Select Avatar filter displays a listbox of avatar items\n * passed in the \"options.listboxItems\" property.\n *\n * @example\n * import { BentoSelectAvatarFilter } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoSelectAvatarFilter },\n * template: `\n * <bento-select-avatar-filter\n * :field=\"avatar\"\n * :label=\"Avatar\"\n * :options=\"{\n * listboxItems: [{\n * label: 'Avatar 1',\n * value: 'avatar-2'\n * }, {\n * label: 'Avatar 2',\n * value: 'avatar-2'\n * }],\n * :multiple=\"false\"\n * }\"\n * value=\"avatar-2\"\n * @update=\"updateFilterHandler\"\n * >\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-select-avatar-filter',\n components: {\n BentoSelectFilter,\n BentoAvatar,\n },\n inheritAttrs: false,\n props: {\n ...BentoSelectFilter.props,\n\n /**\n * List of options that are needed to setup the country filter\n * Available options:\n * - multiple: If \"true\", the user will be able to select multiple items.\n * - listboxItems: The option elements to populate the filter with {@see BentoSelectCountryFilterOptions}\n */\n options: {\n type: Object as PropType<BentoSelectAvatarFilterOptions>,\n default: undefined,\n },\n },\n emits: [BentoFilterEvent.INPUT, BentoFilterEvent.UPDATE],\n setup(_, { emit }) {\n const onUpdate = (selectedValue: BentoListboxSelectedValue) => emit(BentoFilterEvent.UPDATE, selectedValue);\n\n return {\n // Enums\n BentoFilterEvent,\n\n // Methods\n onUpdate,\n };\n },\n });\n</script>\n","<template>\n <bento-select-filter\n v-slot=\"slotProps\"\n v-bind=\"$props\"\n @update=\"onUpdate\"\n @input=\"e => $emit(BentoFilterEvent.INPUT, e)\"\n >\n <listbox-option-tag :option=\"slotProps\" />\n </bento-select-filter>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import { BentoListboxSelectedValue } from '@/types';\n import { BentoSelectFilter } from '../../index';\n import { ListboxOptionTag } from '@/internal';\n import { BentoFilterEvent, BentoSelectCurrencyFilterOptions } from '@/components/filter-bar';\n\n /**\n * The Select Country filter displays a listbox of country items\n * passed in the \"options.listboxItems\" property.\n *\n * @example\n * import { BentoCurrencyISOCode, BentoSelectCurrencyFilter } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoSelectCurrencyFilter },\n * template: `\n * <bento-select-currency-filter\n * :field=\"currency\"\n * :label=\"Currency\"\n * :options=\"{\n * listboxItems: [{\n * label: 'Euro',\n * value: BentoCurrencyISOCode.EUR,\n * }, {\n * label: 'US Dollars',\n * value: BentoCurrencyISOCode.USD,\n * }],\n * multiple=\"false\",\n * isOptionsDisabled=\"option => option.value === BentoCurrencyISOCode.USD\"\n * }\"\n * :value=\"BentoCountryVariant.EUR\"\n * @update=\"updateFilterHandler\"\n * >\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-select-country-filter',\n components: {\n BentoSelectFilter,\n ListboxOptionTag,\n },\n inheritAttrs: false,\n props: {\n ...BentoSelectFilter.props,\n\n /**\n * List of options that are needed to setup the country filter\n * Available options:\n * - multiple: If \"true\", the user will be able to select multiple items.\n * - listboxItems: The option elements to populate the filter with {@see BentoSelectCurrencyFilterOptions}\n */\n options: {\n type: Object as PropType<BentoSelectCurrencyFilterOptions>,\n default: undefined,\n },\n },\n emits: [BentoFilterEvent.INPUT, BentoFilterEvent.UPDATE],\n setup(_, { emit }) {\n const onUpdate = (selectedValue: BentoListboxSelectedValue) => {\n emit(BentoFilterEvent.UPDATE, selectedValue);\n };\n\n return {\n // Enums\n BentoFilterEvent,\n\n // Methods\n onUpdate,\n };\n },\n });\n</script>\n","<template>\n <bento-select-filter\n v-slot=\"{ value, label }\"\n v-bind=\"$props\"\n :options=\"countryOptions\"\n @update=\"onUpdate\"\n @input=\"e => $emit(BentoFilterEvent.INPUT, e)\"\n >\n <bento-country :code=\"value\" :label=\"label\" :variant=\"BentoCountryVariant.CUSTOM\" />\n </bento-select-filter>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, toRef, toRefs } from 'vue';\n import { BentoCountry, BentoCountryVariant } from '@/components/country';\n import { useCountryItems } from '@/components/dropdown/components/variants/dropdown-country/composables/useCountryItems';\n import { BentoListboxSelectedValue } from '@/types';\n import { BentoSelectFilter } from '../../index';\n import { BentoFilterEvent, BentoSelectCountryFilterOptions } from '@/components/filter-bar';\n\n /**\n * The Select Country filter displays a listbox of country items\n * passed in the \"options.listboxItems\" property.\n *\n * @example\n * import { BentoSelectCountryFilter } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoSelectCountryFilter },\n * template: `\n * <bento-select-country-filter\n * :field=\"country\"\n * :label=\"Country\"\n * :options=\"{\n * listboxItems: [{\n * label: 'Netherlands',\n * value: BentoCountryCode.NL,\n * }, {\n * label: 'Belgium',\n * value: BentoCountryCode.BE,\n * }],\n * variant: BentoCountryVariant.CAPITAL\n * }\"\n * :value=\"BentoCountryCode.BE\"\n * @update=\"updateFilterHandler\"\n * >\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-select-country-filter',\n components: {\n BentoSelectFilter,\n BentoCountry,\n },\n inheritAttrs: false,\n props: {\n ...BentoSelectFilter.props,\n\n /**\n * List of options that are needed to setup the country filter\n * Available options:\n * - multiple: If \"true\", the user will be able to select multiple items.\n * - listboxItems: The option elements to populate the filter with {@see BentoSelectCountryFilterOptions}\n * - variant: Which label variant to display for the option item {@see BentoCountryVariant}.\n */\n options: {\n type: Object as PropType<BentoSelectCountryFilterOptions>,\n default: undefined,\n },\n },\n emits: [BentoFilterEvent.INPUT, BentoFilterEvent.UPDATE],\n setup(props, { emit }) {\n const options = toRef(props, 'options');\n const { listboxItems, variant } = toRefs(options.value);\n\n const onUpdate = (selectedValue: BentoListboxSelectedValue) => emit(BentoFilterEvent.UPDATE, selectedValue);\n\n const countryItems = useCountryItems(variant, listboxItems);\n const countryOptions = computed(() => ({\n ...props.options,\n listboxItems: countryItems.value,\n }));\n\n return {\n // Values\n countryOptions,\n\n // Methods\n onUpdate,\n\n // Enums\n BentoCountryVariant,\n BentoFilterEvent,\n };\n },\n });\n</script>\n","<template>\n <bento-select-filter\n v-slot=\"{ value, label }\"\n v-bind=\"$props\"\n @update=\"onUpdate\"\n @input=\"e => $emit(BentoFilterEvent.INPUT, e)\"\n >\n <bento-payment-method :type=\"value\" :label=\"label\" />\n </bento-select-filter>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import { BentoListboxSelectedValue } from '@/types';\n import { BentoSelectFilter } from '../../index';\n import { BentoFilterEvent, BentoSelectPaymentMethodFilterOptions } from '@/components/filter-bar';\n import { BentoPaymentMethod } from '@/components/payment-method';\n\n /**\n * The Select Payment Method filter displays a listbox of country items\n * passed in the \"options.listboxItems\" property to be used in the FilterBar component.\n *\n * @example\n * import { BentoSelectPaymentMethodFilter, BentoPaymentMethodType } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoSelectPaymentMethodFilter },\n * template: `\n * <bento-select-paymnent-method-filter\n * :field=\"paymentMethod\"\n * :label=\"Payment method\"\n * :options=\"{\n * listboxItems: [\n * { label: 'Option 1', value: BentoPaymentMethodType.IDEAL },\n * { label: 'Option 2', value: BentoPaymentMethodType.VISA },\n * ],\n * }\"\n * :value=\"BentoPaymentMethodType.IDEAL\"\n * @update=\"updateFilterHandler\"\n * >\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-select-payment-method-filter',\n components: {\n BentoSelectFilter,\n BentoPaymentMethod,\n },\n inheritAttrs: false,\n props: {\n ...BentoSelectFilter.props,\n\n /**\n * List of options that are needed to setup the payment method filter\n * Available options:\n * - multiple: If \"true\", the user will be able to select multiple items.\n * - listboxItems: The option elements to populate the filter with {@see BentoSelectPaymentMethodFilterOptions}\n */\n options: {\n type: Object as PropType<BentoSelectPaymentMethodFilterOptions>,\n default: undefined,\n },\n },\n emits: [BentoFilterEvent.INPUT, BentoFilterEvent.UPDATE],\n setup(_props, { emit }) {\n const onUpdate = (selectedValue: BentoListboxSelectedValue) => emit(BentoFilterEvent.UPDATE, selectedValue);\n\n return {\n // Enums\n BentoFilterEvent,\n\n // Methods\n onUpdate,\n };\n },\n });\n</script>\n","<template>\n <bento-select-filter\n v-slot=\"{ label, data }\"\n v-bind=\"$props\"\n :options=\"countryOptions\"\n @update=\"onUpdate\"\n @input=\"e => $emit(BentoFilterEvent.INPUT, e)\"\n >\n <listbox-option-tag :option=\"{ value: label, data, label: '' }\" />\n </bento-select-filter>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoCountryVariant } from '@/components/country';\n import { BentoListboxSelectedValue } from '@/types';\n import { BentoSelectFilter } from '../../index';\n import { BentoFilterEvent, BentoSelectTagFilterOptions } from '@/components/filter-bar';\n import { ListboxOptionTag } from '@/internal';\n\n /**\n * The Select Tag filter displays a listbox of tag items\n * passed in the \"options.listboxItems\" property.\n *\n * @example\n * import { BentoSelectTagFilter, BentoTagVariant } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoSelectTagFilter },\n * template: `\n * <bento-select-tag-filter\n * :field=\"tag\"\n * :label=\"Tag\"\n * :options=\"{\n * listboxItems: [\n * { label: 'Offline', value: 'unique-id-1', variant: BentoTagVariant.RED },\n * { label: 'Online', value: 'unique-id-2', variant: BentoTagVariant.GREEN },\n * { label: 'Standby', value: 'unique-id-3', variant: BentoTagVariant.ORANGE },\n * { label: 'Busy with things', value: 'unique-id-4', variant: BentoTagVariant.BLUE },\n * ]\n * }\"\n * :value=\"'unique-id-4'\"\n * @update=\"updateFilterHandler\"\n * >\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-select-country-filter',\n components: {\n BentoSelectFilter,\n ListboxOptionTag,\n },\n inheritAttrs: false,\n props: {\n ...BentoSelectFilter.props,\n\n /**\n * List of options that are needed to setup the tag filter\n * Available options:\n * - multiple: If \"true\", the user will be able to select multiple items.\n * - listboxItems: The option elements to populate the filter with {@see BentoSelectTagFilterOptions}\n */\n options: {\n type: Object as PropType<BentoSelectTagFilterOptions>,\n default: undefined,\n },\n },\n emits: [BentoFilterEvent.INPUT, BentoFilterEvent.UPDATE],\n setup(props, { emit }) {\n const onUpdate = (selectedValue: BentoListboxSelectedValue) => emit(BentoFilterEvent.UPDATE, selectedValue);\n\n const tagItems = computed(() =>\n props?.options?.listboxItems?.map(({ label, value, variant }) => ({ label, value, data: variant }))\n );\n const countryOptions = computed(() => ({\n ...props.options,\n listboxItems: tagItems.value,\n }));\n\n return {\n // Values\n countryOptions,\n\n // Methods\n onUpdate,\n\n // Enums\n BentoCountryVariant,\n BentoFilterEvent,\n };\n },\n });\n</script>\n","export enum BentoRadioGroupVariant {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport interface BentoRadioGroupItem {\n value: string | number;\n label: string;\n description?: string;\n disabled?: boolean;\n hasError?: boolean;\n}\n\nexport type BentoRadioGroupItems = Array<BentoRadioGroupItem>;\n","export enum BentoRadioButtonStateClass {\n DISABLED = 'disabled',\n ERROR = 'error',\n}\n","<template>\n <div class=\"b-radio-button\" data-testid=\"radio-button-container\" :class=\"conditionalClassContainer\">\n <input\n :id=\"radioButtonId\"\n :aria-checked=\"isChecked\"\n :aria-label=\"ariaLabel\"\n :aria-invalid=\"ariaInvalid\"\n :checked=\"isChecked\"\n :disabled=\"disabled\"\n :value=\"value\"\n type=\"radio\"\n class=\"b-radio-button__input\"\n :class=\"conditionalClassInput\"\n role=\"radio\"\n @change=\"onClick\"\n />\n <label v-if=\"defaultSlotValue\" :for=\"radioButtonId\" class=\"b-radio-button__label-container\">\n <bento-typography\n v-if=\"defaultSlotValue\"\n class=\"b-radio-button__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot></slot>\n </bento-typography>\n <bento-typography\n v-if=\"defaultSlotValue && descriptionSlotValue\"\n class=\"b-radio-button__description\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"subLabel\"></slot>\n <slot name=\"description\"></slot>\n </bento-typography>\n </label>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import type { HTMLAttributes } from 'vue/types/jsx';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { generateUid } from '@/utils/ts/unique-id';\n import { computed, ComputedRef, defineComponent, toRefs } from 'vue';\n import { useDefaultSlotValidator } from '@/composables';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { BentoRadioButtonStateClass } from './radio-button.types';\n\n /**\n * Radio buttons are used when two or more options are mutually exclusive,\n * the user can only select a single option from a list of pre-defined options.\n * The label tag area is also clickable.\n * Only to be used internally.\n *\n * @usage\n * import { RadioButton } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { RadioButton },\n * template: `\n * <radio-button\n * disabled\n * value=\"inputRadio\"\n * >\n * Label text\n * <template #description>Description text below label</template>\n * </radio-button>\n * `,\n * }\n */\n export default defineComponent({\n name: 'radio-button',\n components: { BentoTypography },\n inheritAttrs: false,\n model: { prop: 'modelValue' },\n props: {\n /**\n * Disable the radio button (optional)\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * Shows radio-button in error state (optional)\n */\n hasError: {\n type: Boolean,\n default: false,\n },\n /**\n * Indicates the value of the input that will be returned when it's checked\n */\n value: {\n type: [String, Number],\n required: true,\n },\n /**\n * This property should not be used directly.\n * It will be used by v-model directive on radio component.\n */\n modelValue: {\n type: [String, Number],\n default: null,\n },\n },\n emits: ['input'],\n setup(props, { slots, emit }) {\n const { value } = toRefs(props);\n const radioButtonId = generateUid('radio-button');\n\n const defaultSlotValue = hasSlot(slots)('default');\n const descriptionSlotValue = hasSlot(slots)('description');\n\n useDefaultSlotValidator('radio-button', defaultSlotValue, descriptionSlotValue);\n\n const conditionalClassContainer = computed(() => ({\n [`b-radio-button--${BentoRadioButtonStateClass.DISABLED}`]: props.disabled,\n }));\n const conditionalClassInput = computed(() => ({\n [`b-radio-button__input--${BentoRadioButtonStateClass.ERROR}`]: props.hasError,\n }));\n\n const ariaLabel = useAriaLabel({\n ariaLabel: slots.default?.()?.[0]?.text ?? slots.default?.()?.[0]?.children?.toString(),\n label: value.value as string,\n });\n const ariaInvalid = computed<HTMLAttributes['aria-invalid']>(() => props.hasError);\n\n const isChecked: ComputedRef<boolean> = computed(() => props.value === props.modelValue);\n\n const onClick = () => {\n if (!props.disabled) {\n emit('input', props.value);\n }\n };\n\n return {\n // Values\n ariaLabel,\n ariaInvalid,\n isChecked,\n defaultSlotValue,\n descriptionSlotValue,\n conditionalClassContainer,\n conditionalClassInput,\n radioButtonId,\n\n // Events\n onClick,\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./radio-button.scss\" />\n","<template>\n <controls-group\n class=\"b-radio-group\"\n :class=\"conditionalClasses\"\n :form=\"formId\"\n :disabled=\"disabled\"\n :label=\"label\"\n >\n <radio-button\n v-for=\"item in items\"\n :key=\"item.value\"\n v-model=\"inputValue\"\n :value=\"item.value\"\n :disabled=\"disabled || item.disabled\"\n :has-error=\"hasError || item.hasError\"\n @input=\"onInput\"\n >\n {{ item.label }}\n <template v-if=\"item.description\" #description>{{ item.description }}</template>\n </radio-button>\n </controls-group>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, watch } from 'vue';\n import { ControlsGroup } from '@/components/controls-group';\n import { BentoRadioGroupItems, BentoRadioGroupVariant } from './radio-group.types';\n import RadioButton from './components/radio-button/radio-button.vue';\n\n /**\n * A radio group component should be used whenever it is necessary to use a set of radio buttons\n * This component conforms to the official WAI-ARIA guidelines for grouping controls: https://www.w3.org/WAI/tutorials/forms/grouping/\n *\n * import { BentoRadioGroup, BentoRadioGroupVariant } from '@adyen/bento-vue2/';\n *\n * export default {\n * components: { BentoRadioGroup },\n * template: `\n * <bento-radio-group\n * label=\"Your group label\"\n * :items=\"[\n * { value: 1, label: 'Your label' },\n * { value: 2, label: 'Another label', description: 'Your descriptive sub label' },\n * ]\"\n * :variant=\"BentoRadioGroupVariant.HORIZONTAL\"\n * />\n * `\n * };\n */\n export default defineComponent({\n name: 'bento-radio-group',\n components: { ControlsGroup, RadioButton },\n inheritAttrs: false,\n props: {\n /**\n * The checkbox group's items.\n */\n items: {\n type: Array as PropType<BentoRadioGroupItems>,\n required: true,\n },\n /**\n * The checkbox group's layout. It can be vertical or horizontal. Defaults to vertical.\n */\n variant: {\n type: String as PropType<BentoRadioGroupVariant>,\n default: BentoRadioGroupVariant.VERTICAL,\n validator: (value: BentoRadioGroupVariant) => Object.values(BentoRadioGroupVariant).includes(value),\n },\n /**\n * The form id the checkbox group is associated with. Defaults to null, as a checkbox group can also be used standalone.\n */\n formId: {\n type: String,\n default: null,\n },\n /**\n * If set to true, renders all radio-buttons in the group in a disabled state.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * If set to true, renders all radio-buttons in the group in an error state.\n */\n hasError: {\n type: Boolean,\n default: false,\n },\n /**\n * The name associated with the group. Required for accessibility purposes.\n */\n label: { type: String, required: true },\n /**\n * Determines the initially selected value of the group. Corresponds to the BentoRadioButtonItem's value.\n * Defaults to no value selected.\n */\n selectedValue: {\n type: [Number, String, null],\n default: null,\n },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const inputValue = ref(props.selectedValue);\n\n watch(\n () => props.selectedValue,\n () => {\n inputValue.value = props.selectedValue;\n }\n );\n\n const conditionalClasses = computed(() => ({\n 'b-radio-group--horizontal': props.variant === BentoRadioGroupVariant.HORIZONTAL,\n }));\n\n const onInput = value => {\n emit('input', value);\n };\n\n return {\n // Values\n conditionalClasses,\n inputValue,\n\n // Methods\n onInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./radio-group.scss\" />\n","<template>\n <bento-base-filter\n v-bind=\"$props\"\n :applied-filters-count=\"appliedFiltersCount\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n :disable-secondary-button=\"isSecondaryButtonDisabled\"\n :button-label=\"buttonLabel\"\n :only-slot=\"onlySlot\"\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @open=\"openFilter\"\n @reset=\"resetFilter\"\n >\n <div class=\"b-boolean-filter\" :class=\"conditionalClasses\" @keydown.enter=\"updateFilter\">\n <bento-radio-group\n :items=\"items\"\n :label=\"label\"\n :selected-value=\"internalFilterValue\"\n @input=\"onInput\"\n ></bento-radio-group>\n </div>\n </bento-base-filter>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onBeforeUpdate, toRef } from 'vue';\n import { BentoBaseFilter, useBaseFilter } from '@/components/filter-bar/components/base-filter';\n import { BentoRadioGroup } from '@/components/radio-group';\n import { useI18n } from '@/utils/ts/i18n';\n import { truncate } from '@/utils/ts/truncate';\n import { BentoFilterEvent } from '../../filter-bar.types';\n import messages from './messages.json';\n\n /**\n * Example description of the component...\n *\n * @example\n * import { BentoBooleanFilter } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoBooleanFilter },\n * template: `\n * <bento-boolean-filter>\n * ...Example code of the component\n * </bento-boolean-filter>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-boolean-filter',\n i18n: { messages },\n components: { BentoBaseFilter, BentoRadioGroup },\n inheritAttrs: false,\n props: {\n /**\n * Default value of the filter to reset to.\n */\n defaultValue: { type: String, 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 * Current value of the filter\n */\n value: { type: String, default: null },\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 emits: [BentoFilterEvent.INPUT, BentoFilterEvent.UPDATE],\n setup(props, { emit }) {\n const { t } = useI18n({ messages });\n const items = computed(() => [\n { value: 'yes', label: t('yes') as string },\n { value: 'no', label: t('no') as string },\n ]);\n\n const { internalFilterValue, isSecondaryButtonDisabled, isApplyButtonDisabled } = useBaseFilter(\n toRef(props, 'value'),\n toRef(props, 'defaultValue')\n );\n\n const buttonLabel = computed(() =>\n props.defaultValue === null\n ? props.label\n : truncate(items.value.find(({ value }) => value === props.value).label, 18)\n );\n\n // Count is always 1 for the boolean filter when it's active\n const appliedFiltersCount = computed(() => (props.value != null ? 1 : null));\n\n const conditionalClasses = computed(() => ({\n [`b-boolean-filter--only-slot`]: props.onlySlot,\n }));\n\n onBeforeUpdate(() => {\n // Set value to null when the value is unset\n if (!internalFilterValue.value) {\n internalFilterValue.value = null;\n }\n });\n\n const onInput = event => {\n internalFilterValue.value = event;\n emit(BentoFilterEvent.INPUT, { ...props, value: internalFilterValue.value });\n };\n\n const openFilter = () => {\n internalFilterValue.value = props.value;\n };\n\n const updateFilter = () => {\n emit(BentoFilterEvent.UPDATE, { ...props, value: internalFilterValue.value });\n };\n\n const resetFilter = () => emit(BentoFilterEvent.UPDATE, { ...props, value: props.defaultValue });\n\n const clearFilter = () => {\n internalFilterValue.value = null;\n updateFilter();\n };\n\n return {\n // Values\n items,\n appliedFiltersCount,\n conditionalClasses,\n buttonLabel,\n internalFilterValue,\n isApplyButtonDisabled,\n isSecondaryButtonDisabled,\n\n // Events\n onInput,\n updateFilter,\n clearFilter,\n openFilter,\n resetFilter,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./boolean-filter.scss\" />\n","<template>\n <bento-base-filter\n v-bind=\"$props\"\n :applied-filters-count=\"appliedFiltersCount\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n :disable-secondary-button=\"isSecondaryButtonDisabled\"\n :button-label=\"buttonLabel\"\n :only-slot=\"onlySlot\"\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @open=\"openFilter\"\n @reset=\"resetFilter\"\n >\n <div class=\"b-range-filter\" :class=\"conditionalClasses\" @keydown.enter=\"updateFilter\">\n <bento-input-field\n ref=\"inputTextRef\"\n :value=\"internalFilterValue[0]\"\n :type=\"BentoInputFieldType.NUMBER\"\n :aria-label=\"$t('from').toString()\"\n @input=\"updateFrom\"\n >\n {{ $t('from') }}\n </bento-input-field>\n <bento-input-field\n class=\"b-range-filter__input-field\"\n :value=\"internalFilterValue[1]\"\n :type=\"BentoInputFieldType.NUMBER\"\n :aria-label=\"$t('to').toString()\"\n @input=\"updateTo\"\n >\n {{ $t('to') }}\n </bento-input-field>\n </div>\n </bento-base-filter>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, nextTick, PropType, ref, toRef } from 'vue';\n import { BentoFilterEvent } from '../../filter-bar.types';\n import messages from './messages.json';\n import { BentoBaseFilter, useBaseFilter } from '@/components/filter-bar/components/base-filter';\n import { BentoInputField, BentoInputFieldType } from '@/components/input-field';\n import { truncate } from '@/utils/ts/truncate';\n\n /**\n * Range filter used in the filter-bar component.\n *\n * @example\n * import { BentoRangeFilter } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoRangeFilter },\n * template: `\n * <bento-range-filter field=\"filter-field\" label=\"Filter label\" value=\"['0', '1']\"/>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-range-filter',\n i18n: { messages },\n components: { BentoBaseFilter, BentoInputField },\n inheritAttrs: false,\n props: {\n /**\n * Default value of the filter to reset to.\n */\n defaultValue: { type: Array as PropType<string[]>, 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 * Current value of the filter\n */\n value: { type: Array as PropType<string[]>, default: () => ['', ''] },\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 emits: [BentoFilterEvent.INPUT, BentoFilterEvent.UPDATE],\n setup(props, { emit }) {\n const inputTextRef = ref(null);\n\n const { internalFilterValue, isSecondaryButtonDisabled, isApplyButtonDisabled } = useBaseFilter(\n toRef(props, 'value'),\n toRef(props, 'defaultValue')\n );\n\n const buttonLabel = computed(() =>\n props.defaultValue === null\n ? props.label\n : `${truncate(props.value[0], 5)}-${truncate(props.value[1], 5)}`\n );\n\n // Count is always 1 for the range filter when there's at least one input applied\n const appliedFiltersCount = computed(() => (props.value.find(el => el !== '') ? 1 : null));\n\n const conditionalClasses = computed(() => ({\n [`b-range-filter--only-slot`]: props.onlySlot,\n }));\n\n const openFilter = () => {\n internalFilterValue.value = props.value;\n\n nextTick(() => inputTextRef.value.focusInput());\n };\n\n const onInput = () => {\n emit(BentoFilterEvent.INPUT, { ...props, value: internalFilterValue.value });\n };\n\n const updateFrom = newValue => {\n internalFilterValue.value = [newValue, internalFilterValue.value[1]];\n onInput();\n };\n\n const updateTo = newValue => {\n internalFilterValue.value = [internalFilterValue.value[0], newValue];\n onInput();\n };\n\n const updateFilter = () => {\n emit(BentoFilterEvent.UPDATE, {\n ...props,\n value: internalFilterValue.value,\n });\n };\n\n const resetFilter = () => emit(BentoFilterEvent.UPDATE, { ...props, value: props.defaultValue });\n\n const clearFilter = () => {\n internalFilterValue.value = ['', ''];\n updateFilter();\n };\n\n return {\n // Enums\n BentoInputFieldType,\n\n // Values\n inputTextRef,\n appliedFiltersCount,\n conditionalClasses,\n internalFilterValue,\n isApplyButtonDisabled,\n isSecondaryButtonDisabled,\n buttonLabel,\n\n // Events\n updateFrom,\n updateTo,\n updateFilter,\n clearFilter,\n openFilter,\n resetFilter,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./range-filter.scss\" />\n","import { getCurrentInstance } from 'vue';\nimport { isVue2 } from 'vue-demi';\nimport BentoToastController from '../../plugins/toastController';\n\nlet bentoToastController: BentoToastController = null;\n\nexport function useBentoToastController(): BentoToastController {\n const instance = getCurrentInstance() as { proxy: any & { $bentoToastController } } | null;\n if (isVue2) {\n const vm = instance.proxy;\n\n if (vm?.$bentoToastController) {\n bentoToastController = vm.$bentoToastController;\n }\n } else {\n bentoToastController = (instance as any).appContext.config.globalProperties.$bentoToastController;\n }\n\n return bentoToastController;\n}\n","export enum BentoModalVariant {\n DEFAULT = 'BentoModalDefault',\n DIALOG = 'BentoModalDialog',\n}\n\nexport enum BentoModalSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large',\n}\n\nexport enum BentoModalColumnLayoutVariant {\n SMALLER = 'smaller',\n EQUAL = 'equal',\n BIGGER = 'bigger',\n}\n\nexport enum BentoModalRole {\n DIALOG = 'dialog',\n ALERT_DIALOG = 'alertdialog',\n}\n\nexport enum BentoModalDialogType {\n CONFIRMATION = 'confirmation',\n DESTRUCTIVE = 'destructive',\n INFO = 'info',\n ACKNOWLEDGEMENT = 'acknowledgement',\n}\n\nexport enum BentoModalEvent {\n CLOSE_MODAL = 'close-modal',\n}\n","<template>\n <div class=\"b-modal-base\">\n <dialog\n ref=\"modal\"\n :role=\"modalRole\"\n :aria-label=\"computedAriaLabel\"\n class=\"b-modal-base__container\"\n :class=\"modalConditionalClasses\"\n :open=\"initiallyOpen\"\n @click=\"isDismissible && closeModalOnClickOutside($event)\"\n @keydown.esc=\"emitCloseEvent\"\n >\n <bento-focus-trap>\n <div class=\"b-modal-base__wrapper\" :style=\"wrapperStyles\">\n <div v-if=\"hasSlot('default') || !hideCloseButton\" class=\"b-modal-base__header\">\n <bento-typography\n class=\"b-modal-base__title\"\n aria-label=\"base modal title\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.TITLE\"\n stronger\n >\n <slot v-if=\"hasSlot('default')\" />\n </bento-typography>\n <bento-button\n v-if=\"!hideCloseButton\"\n class=\"b-modal-base__close-button\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n type=\"button\"\n @click=\"onCloseButtonClick\"\n >\n <cross-icon svg-title=\"close\" />\n </bento-button>\n </div>\n <bento-divider\n v-if=\"hasColumnLayout && hasSlot('default')\"\n class=\"b-modal-base__divider\"\n :style=\"dividerStyles\"\n />\n\n <div class=\"b-modal-base__content\" :class=\"modalContentConditionalClasses\">\n <bento-typography\n v-if=\"hasSlot('content')\"\n aria-label=\"base modal content\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n >\n <grid-layout\n v-if=\"hasColumnLayout\"\n :column-width=\"computedColumnWidth\"\n :container-type=\"GridLayoutContainerType.NORMAL\"\n class=\"b-modal-base__grid\"\n >\n <template #col-1><slot name=\"content-col-1\"></slot></template>\n <template #col-2><slot name=\"content-col-2\"></slot></template>\n </grid-layout>\n <slot v-else name=\"content\" />\n </bento-typography>\n </div>\n <div v-if=\"hasSlot('actions')\" class=\"b-modal-base__actions-container\">\n <bento-divider v-if=\"hasColumnLayout\" class=\"b-modal-base__divider\" :style=\"dividerStyles\" />\n <div\n aria-label=\"modal actions\"\n class=\"b-modal-base__actions\"\n :class=\"modalActionsConditionalClasses\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n </bento-focus-trap>\n </dialog>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, PropType, ref, toRefs, watch } from 'vue';\n import {\n BentoModalColumnLayoutVariant,\n BentoModalEvent,\n BentoModalRole,\n BentoModalSize,\n } from '@/components/modal/modal.types';\n\n import { BentoButtonVariant } from '@/components/button/button.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoButton } from '@/components/button';\n import { BentoDivider } from '@/components/divider';\n import { BentoFocusTrap } from '@/components/focus-trap';\n import { GridLayout, GridLayoutContainerType } from '@/internal';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { useI18n } from '@/utils/ts/i18n';\n import CrossIcon from '@adyen/ui-assets-icons-16/vue/cross';\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'base-modal',\n components: { CrossIcon, BentoTypography, BentoButton, BentoDivider, BentoFocusTrap, GridLayout },\n props: {\n /**\n * Defines whether the modal will be an alert modal\n */\n modalRole: {\n type: String,\n default: BentoModalRole.DIALOG,\n },\n /**\n * If set to true, it allows the modal to be closed by clicking outside of it\n */\n isDismissible: {\n type: Boolean,\n required: true,\n },\n /**\n * Hides a cross icon on the right side of the title\n */\n hideCloseButton: {\n type: Boolean,\n required: true,\n },\n /**\n * If provided, manages the padding of the whole modal container\n */\n customPadding: {\n type: String,\n default: null,\n },\n /**\n * If provided, renders the modal's content in a two-column layout an wth dividers separating its content\n */\n withColumnLayout: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If a column layout is provided, it renders the respective left column width variant. This can be smaller than the second column, the same size as the second column or bigger than the second column.\n */\n columnsSize: {\n type: String as PropType<BentoModalColumnLayoutVariant>,\n default: BentoModalColumnLayoutVariant.SMALLER,\n },\n\n /**\n * Controls the modal's state from the outside. Set it to true to open the modal\n */\n isOpen: {\n type: Boolean,\n required: true,\n },\n\n /**\n * Sets the width of the modal\n */\n size: {\n type: String as PropType<BentoModalSize>,\n default: BentoModalSize.SMALL,\n },\n\n /**\n * Sets the open attribute on the dialog element, use isOpen instead to toggle modal visbility.\n */\n initiallyOpen: {\n type: Boolean,\n default: false,\n },\n },\n emits: [BentoModalEvent.CLOSE_MODAL],\n setup(props, { slots, emit }) {\n const { t } = useI18n();\n const modal = ref(null);\n\n const { isOpen, customPadding } = toRefs(props);\n\n const labelSlot = computed((): string =>\n hasSlot(slots)('default') && slots.default() ? slots.default()[0]?.text : null\n );\n const wrapperStyles = computed(() => (customPadding.value ? { padding: customPadding.value } : {}));\n const dividerStyles = computed(() =>\n customPadding.value\n ? { marginLeft: `-${customPadding.value}`, width: `calc(100% + calc(${customPadding.value} * 2))` }\n : {}\n );\n\n const computedAriaLabel = useAriaLabel({\n label: labelSlot,\n defaultFallback: t('ariaLabelFallback') as string,\n });\n\n const hasColumnLayout = computed(() => props.withColumnLayout && props.size === BentoModalSize.LARGE);\n\n const openModal = (): void => {\n modal.value.showModal();\n };\n\n const emitCloseEvent = (): void => {\n emit(BentoModalEvent.CLOSE_MODAL);\n };\n\n const closeModal = (): void => {\n modal.value.close();\n emitCloseEvent();\n };\n\n const onCloseButtonClick = () => {\n closeModal();\n };\n\n /**\n * Since the dialog HTML element doesn't automatically close when clicking outside, a check on when the user is clicking is needed.\n * If the click doesn't happen in the dialog box itself, the modal closes\n */\n const closeModalOnClickOutside = ({ target }: Event): void => {\n if (target && (target as HTMLElement).tagName === BentoModalRole.DIALOG.toUpperCase()) {\n closeModal();\n }\n };\n\n const modalConditionalClasses = computed(() => ({\n [`b-modal-base__container--${props.size}`]: props.size,\n [`b-modal-base__container--visible`]: isOpen.value,\n }));\n\n const modalContentConditionalClasses = computed(() => ({\n 'b-modal-base__content--column-layout': hasColumnLayout.value,\n }));\n\n const modalActionsConditionalClasses = computed(() => ({\n 'b-modal-base__actions--column-layout': hasColumnLayout.value,\n }));\n\n const computedColumnWidth = computed(() => {\n if (props.columnsSize === BentoModalColumnLayoutVariant.SMALLER) {\n return [{ small: 4, medium: 4, large: 4 }];\n }\n if (props.columnsSize === BentoModalColumnLayoutVariant.BIGGER) {\n return [{ small: 8, medium: 8, large: 8 }];\n }\n return [{ small: 6, medium: 6, large: 6 }];\n });\n\n watch(\n () => [isOpen.value, modal.value],\n (): void => {\n if (isOpen.value && modal.value) {\n openModal();\n } else if (modal.value) {\n closeModal();\n }\n },\n { immediate: true }\n );\n\n onMounted(() => {\n if (isOpen.value && modal.value) {\n openModal();\n }\n });\n\n return {\n // Refs\n modal,\n computedAriaLabel,\n\n // Handling the state\n openModal,\n closeModalOnClickOutside,\n\n // Methods\n onCloseButtonClick,\n hasSlot: hasSlot(slots),\n emitCloseEvent,\n\n // Styles\n modalActionsConditionalClasses,\n modalConditionalClasses,\n modalContentConditionalClasses,\n wrapperStyles,\n dividerStyles,\n hasColumnLayout,\n computedColumnWidth,\n\n // Enums\n BentoButtonVariant,\n BentoTypographyElement,\n BentoTypographyVariant,\n GridLayoutContainerType,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./base-modal.scss\" />\n","<template>\n <base-modal\n class=\"b-modal-default\"\n :size=\"size\"\n :hide-close-button=\"hideCloseButton\"\n :custom-padding=\"customPadding\"\n :is-dismissible=\"isDismissible\"\n :is-open=\"isOpen\"\n :with-column-layout=\"withColumnLayout\"\n :initially-open=\"initiallyOpen\"\n @close-modal=\"onCloseModal\"\n >\n <template v-if=\"hasSlot('default')\" #default>\n <slot></slot>\n </template>\n <template #content-col-1><slot name=\"content-col-1\"></slot></template>\n <template #content-col-2><slot name=\"content-col-2\"></slot></template>\n <template #content><slot name=\"content\"></slot></template>\n\n <template v-if=\"actions\" #actions>\n <slot name=\"actions\">\n <bento-typography\n v-if=\"actionsLabel\"\n class=\"b-modal-base__title\"\n aria-label=\"base modal title\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n >\n {{ actionsLabel }}\n </bento-typography>\n\n <bento-button-actions\n v-if=\"alignedActions.leftAligned\"\n :actions=\"alignedActions.leftAligned\"\n :layout=\"BentoButtonActionsLayout.BUTTONS_START\"\n ></bento-button-actions>\n\n <bento-button-actions\n :actions=\"alignedActions.rightAligned\"\n :layout=\"BentoButtonActionsLayout.BUTTONS_END\"\n ></bento-button-actions>\n </slot>\n </template>\n </base-modal>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, PropType, toRefs } from 'vue';\n import { BentoModalColumnLayoutVariant, BentoModalEvent, BentoModalSize } from '@/components/modal/modal.types';\n import { BaseModal } from '@/components/modal/components/base-modal';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import {\n BentoButtonActions,\n BentoButtonActionsLayout,\n BentoButtonActionsList,\n BentoButtonVariant,\n } from '@/components/button';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n export default defineComponent({\n name: 'bento-modal-default',\n components: { BaseModal, BentoButtonActions, BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Adds a cross icon on the right side of the alert\n */\n /**\n * Controls the modal's state from the outside. Set it to true to open the modal\n */\n isOpen: {\n type: Boolean,\n required: true,\n },\n /**\n * If set to true, it allows the modal to be closed by clicking outside of it\n */\n isDismissible: {\n type: Boolean,\n required: true,\n },\n /**\n * Hides a cross icon on the right side of the title\n */\n hideCloseButton: {\n type: Boolean,\n default: false,\n },\n /**\n * Sets the width of the modal\n */\n size: {\n type: String as PropType<BentoModalSize>,\n required: true,\n },\n /**\n * If provided, manages the padding of the whole modal container\n */\n customPadding: {\n type: String,\n default: null,\n },\n\n /**\n * If provided, renders the modal's content in a two-column layout an wth dividers separating its content\n */\n withColumnLayout: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If a column layout is provided, it renders the respective left column width variant. This can be smaller than the second column, the same size as the second column or bigger than the second column.\n */\n columnsSize: {\n type: String as PropType<BentoModalColumnLayoutVariant>,\n default: BentoModalColumnLayoutVariant.SMALLER,\n },\n\n /**\n * List of actions that will be used to render the buttons.\n * First element in the list will be rendered as \"primary\".\n * All elements after the first will be rendered as \"secondary\".\n * But you may change the color of 1-st action to red with 'critial' key\n * Not more than 3 action buttons can be provided\n * Or 2 action buttons and 1 Label for them\n *\n * Each object in the list should have a `title`, an `event` and\n * (optional) a Vue `icon` from the library `@adyen/ui-assets-icons-16`.\n *\n * `title`: Button's text.\n *\n * `event`: Event triggered when clicking the Button.\n *\n * `icon`: Vue Icon from the library `@adyen/ui-assets-icons-16`.\n *\n * ```\n * [{\n * title: 'Primary',2\n * event: () => { ... },\n * icon: FourPeopleIcon\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * }]\n * ```\n */\n actions: {\n type: Array as PropType<BentoButtonActionsList>,\n default: null,\n },\n /**\n * Text label that is displayed left to the action buttons\n */\n actionsLabel: {\n type: String,\n default: null,\n },\n /**\n * If passed - sets first button color to red\n */\n destructiveActions: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the open attribute on the dialog element, use isOpen instead to toggle modal visbility.\n */\n initiallyOpen: {\n type: Boolean,\n default: false,\n },\n },\n emits: [BentoModalEvent.CLOSE_MODAL],\n setup(props, { slots, emit }) {\n const { actions, destructiveActions } = toRefs(props);\n\n const alignedActions = computed(() => {\n const rightAlignedButtons =\n actions.value.length < 3 ? actions.value : actions.value.slice(0, actions.value.length - 1);\n\n if (destructiveActions.value) {\n // Add red color to the 1-st Action button\n rightAlignedButtons[0].critical = true;\n }\n\n return {\n leftAligned:\n actions.value.length === 3\n ? [\n {\n ...actions.value[actions.value.length - 1],\n variant: BentoButtonVariant.SECONDARY,\n },\n ]\n : null,\n rightAligned: rightAlignedButtons,\n };\n });\n\n const onCloseModal = () => {\n emit(BentoModalEvent.CLOSE_MODAL);\n };\n\n onMounted(() => {\n if (\n !(hasSlot(slots)('content') || (hasSlot(slots)('content-col-1') && hasSlot(slots)('content-col-2')))\n ) {\n throw new Error('Bento Modal default variant requires content slot or column slots');\n }\n\n if (props.actions && props.actions.length > 3) {\n throw new Error('Not more than 3 action buttons may be provided to Bento Modal default variant');\n }\n\n if (props.actionsLabel && props.actions && props.actions.length > 2) {\n throw new Error(\n 'Not more than 2 action buttons may be provided with actions label to Bento Modal default variant'\n );\n }\n });\n\n return {\n // Values\n alignedActions,\n\n // Methods\n onCloseModal,\n hasSlot: hasSlot(slots),\n\n // Enums\n BentoButtonActionsLayout,\n BentoTypographyElement,\n BentoTypographyVariant,\n };\n },\n });\n</script>\n","<template>\n <base-modal\n class=\"b-modal-dialog\"\n :class=\"modalDialogConditionalClasses\"\n :hide-close-button=\"true\"\n :size=\"BentoModalSize.SMALL\"\n :is-dismissible=\"isDismissible\"\n :is-open=\"isOpen\"\n :modal-role=\"BentoModalRole.ALERT_DIALOG\"\n :initially-open=\"initiallyOpen\"\n @close-modal=\"onCloseModal\"\n >\n <template #default>\n <slot></slot>\n </template>\n <template #content>\n {{ content }}\n </template>\n\n <template #actions>\n <bento-button-actions\n v-if=\"dialogType === BentoModalDialogType.ACKNOWLEDGEMENT\"\n :actions=\"acknowledgementDialogActions\"\n :layout=\"BentoButtonActionsLayout.BUTTONS_END\"\n ></bento-button-actions>\n\n <bento-button-actions\n v-else\n :actions=\"dialogActions\"\n :layout=\"BentoButtonActionsLayout.BUTTONS_END\"\n ></bento-button-actions>\n </template>\n </base-modal>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, PropType, toRefs } from 'vue';\n import {\n BentoModalDialogType,\n BentoModalEvent,\n BentoModalRole,\n BentoModalSize,\n } from '@/components/modal/modal.types';\n import { BaseModal } from '@/components/modal/components/base-modal';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import {\n BentoButtonActionObject,\n BentoButtonActions,\n BentoButtonActionsLayout,\n BentoButtonActionsList,\n BentoButtonVariant,\n } from '@/components/button';\n import { useI18n } from '@/utils/ts/i18n';\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-modal-dialog',\n components: { BaseModal, BentoButtonActions },\n inheritAttrs: false,\n props: {\n /**\n * Controls the modal's state from the outside. Set it to true to open the modal\n */\n isOpen: {\n type: Boolean,\n required: true,\n },\n /**\n * If set to true, it allows the modal to be closed by clicking outside of it\n */\n isDismissible: {\n type: Boolean,\n required: true,\n },\n /**\n * Sets different action buttons styling and appearance\n */\n dialogType: {\n type: String as PropType<BentoModalDialogType>,\n required: true,\n },\n /**\n * Text that is displayed in the content section of modal\n */\n content: {\n type: String,\n required: true,\n },\n /**\n * List of actions that will be used to render the buttons.\n * Only 1 action button is allowed for Modal Dialog\n *\n * Each object in the list should have a `title`, an `event` and\n * (optional) a Vue `icon` from the library `@adyen/ui-assets-icons-16`.\n *\n * `title`: Button's text.\n *\n * `event`: Event triggered when clicking the Button.\n *\n * `icon`: Vue Icon from the library `@adyen/ui-assets-icons-16`.\n *\n * ```\n * [{\n * title: 'Primary',2\n * event: () => { ... },\n * icon: FourPeopleIcon\n * }]\n * ```\n */\n actions: {\n type: Array as PropType<BentoButtonActionsList>,\n default: null,\n },\n\n /**\n * Sets the open attribute on the dialog element, use isOpen instead to toggle modal visbility.\n */\n initiallyOpen: {\n type: Boolean,\n default: false,\n },\n },\n emits: [BentoModalEvent.CLOSE_MODAL],\n setup(props, { slots, emit }) {\n const { t } = useI18n();\n const { actions, dialogType } = toRefs(props);\n\n const onCloseModal = () => {\n emit(BentoModalEvent.CLOSE_MODAL);\n };\n\n const onCloseActionButton = () => {\n onCloseModal();\n };\n\n const acknowledgementDialogActions = computed(() => [\n {\n title: t('okButtonText') as string,\n event: onCloseActionButton,\n variant: BentoButtonVariant.SECONDARY,\n },\n ]);\n\n const dialogActions = computed(() => {\n const mandatoryCancelActionButton: BentoButtonActionObject = {\n title: 'Cancel',\n event: onCloseActionButton,\n };\n const updatedPassedActionsObject: BentoButtonActionObject = actions?.value?.[0];\n\n if (dialogType.value === BentoModalDialogType.DESTRUCTIVE) {\n updatedPassedActionsObject.critical = true;\n } else if (dialogType.value === BentoModalDialogType.INFO) {\n updatedPassedActionsObject.variant = BentoButtonVariant.SECONDARY;\n }\n\n return [updatedPassedActionsObject, mandatoryCancelActionButton];\n });\n\n const modalDialogConditionalClasses = computed(() => ({\n [`b-modal-dialog--${dialogType.value}`]: dialogType.value,\n }));\n\n onMounted(() => {\n if (!hasSlot(slots)('default') || !props.content) {\n throw new Error('Bento Modal Dialog requires header title and content');\n }\n\n if (actions?.value?.length > 1) {\n throw new Error('Not more than 1 action button may be provided to Modal Dialog');\n }\n\n if (dialogType.value !== BentoModalDialogType.ACKNOWLEDGEMENT && !actions?.value) {\n throw new Error(\n 'Modal Dialog, except ACKNOWLEDGEMENT type, always has to contain one action button'\n );\n }\n\n if (dialogType.value === BentoModalDialogType.ACKNOWLEDGEMENT && actions?.value?.length) {\n throw new Error('Acknowledgement Modal Dialog does not accept action buttons');\n }\n });\n\n return {\n // Values\n dialogActions,\n acknowledgementDialogActions,\n\n // Methods\n onCloseModal,\n onCloseActionButton,\n\n // Styles\n modalDialogConditionalClasses,\n\n // Enums\n BentoModalRole,\n BentoModalSize,\n BentoButtonVariant,\n BentoModalDialogType,\n BentoButtonActionsLayout,\n };\n },\n });\n</script>\n","<template>\n <component\n :is=\"variant\"\n class=\"b-modal\"\n :is-open=\"isOpen\"\n :actions=\"actions\"\n v-bind=\"customProps\"\n @close-modal=\"onCloseModal\"\n >\n <template v-if=\"hasSlot('default')\" #default>\n <slot></slot>\n </template>\n <template v-if=\"hasSlot('content-col-1')\" #content-col-1><slot name=\"content-col-1\"></slot></template>\n <template v-if=\"hasSlot('content-col-2')\" #content-col-2><slot name=\"content-col-2\"></slot></template>\n <template v-if=\"hasSlot('content')\" #content><slot name=\"content\"></slot></template>\n </component>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, toRefs } from 'vue';\n import {\n BentoModalColumnLayoutVariant,\n BentoModalDialogType,\n BentoModalEvent,\n BentoModalSize,\n BentoModalVariant,\n } from '@/components/modal/modal.types';\n import { BentoModalDefault, BentoModalDialog } from '@/components/modal/components';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { BentoButtonActionsList } from '@/components/button';\n\n /**\n * Modal is a window that appear over any other page content and focus user attention exclusively on one task or piece of information at the moment.\n *\n * @example\n * import { BentoModal } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoModal },\n * template: `\n * <bento-modal :isOpen=\"true\">\n * Title of the Modal\n * <template #content>\n * Mandatory content slot\n * </template>\n * </bento-modal>\n * `\n * };\n */\n export default defineComponent({\n name: 'bento-modal',\n components: { BentoModalDefault, BentoModalDialog },\n inheritAttrs: false,\n props: {\n /**\n * Choose between default or dialog versions of modal\n */\n variant: {\n type: String as PropType<BentoModalVariant>,\n default: BentoModalVariant.DEFAULT,\n },\n\n // Shared Modal Default and Modal Default props\n /**\n * If set to true, it allows the modal to be closed by clicking outside of it\n */\n isDismissible: {\n type: Boolean,\n default: null,\n },\n /**\n * Controls the modal's state from the outside. Set it to true to open the modal\n */\n isOpen: {\n type: Boolean,\n default: false,\n },\n /**\n * List of actions that will be used to render the buttons.\n * First element in the list will be rendered as \"primary\".\n * All elements after the first will be rendered as \"secondary\".\n *\n * Each object in the list should have a `title`, an `event` and\n * (optional) a Vue `icon` from the library `@adyen/ui-assets-icons-16`.\n *\n * `title`: Button's text.\n *\n * `event`: Event triggered when clicking the Button.\n *\n * `icon`: Vue Icon from the library `@adyen/ui-assets-icons-16`.\n *\n * ```\n * [{\n * title: 'Primary',2\n * event: () => { ... },\n * icon: FourPeopleIcon\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * }]\n * ```\n */\n actions: {\n type: Array as PropType<BentoButtonActionsList>,\n default: null,\n },\n\n // Specific to Modal Default props\n /**\n * Hides a cross icon on the right side of the title\n */\n hideCloseButton: {\n type: Boolean,\n default: false,\n },\n /**\n * Sets the width of the modal\n */\n size: {\n type: String as PropType<BentoModalSize>,\n default: BentoModalSize.SMALL,\n },\n /**\n * If provided, manages the padding of the whole modal container\n */\n customPadding: {\n type: String,\n default: null,\n },\n /**\n * If provided, renders the modal's content in a two-column layout an wth dividers separating its content\n */\n withColumnLayout: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If a column layout is provided, it renders the respective left column width variant. This can be smaller than the second column, the same size as the second column or bigger than the second column.\n */\n columnsSize: {\n type: String as PropType<BentoModalColumnLayoutVariant>,\n default: BentoModalColumnLayoutVariant.SMALLER,\n },\n\n /**\n * Text label that is displayed left to the action buttons\n */\n actionsLabel: {\n type: String,\n default: null,\n },\n /**\n * If passed - sets first button color to red\n */\n destructiveActions: {\n type: Boolean,\n default: false,\n },\n\n // Specific to Modal dialog props\n /**\n * Changes the visual styling of action buttons\n */\n dialogType: {\n type: String as PropType<BentoModalDialogType>,\n default: BentoModalDialogType.CONFIRMATION,\n },\n /**\n * Text that will be displayed in the content section of Modal\n */\n content: {\n type: String,\n default: null,\n },\n },\n emits: [BentoModalEvent.CLOSE_MODAL],\n setup(props, { slots, emit }) {\n const {\n variant,\n hideCloseButton,\n size,\n isDismissible,\n dialogType,\n content,\n customPadding,\n actionsLabel,\n destructiveActions,\n withColumnLayout,\n } = toRefs(props);\n\n const customProps = computed(() =>\n variant.value === BentoModalVariant.DEFAULT\n ? {\n hideCloseButton: hideCloseButton.value,\n size: size.value,\n customPadding: customPadding.value,\n actionsLabel: actionsLabel.value,\n destructiveActions: destructiveActions.value,\n isDismissible: isDismissible.value ?? true,\n withColumnLayout: withColumnLayout.value,\n }\n : {\n dialogType: dialogType.value,\n content: content.value,\n isDismissible: isDismissible.value ?? false,\n }\n );\n\n const onCloseModal = () => {\n emit(BentoModalEvent.CLOSE_MODAL);\n };\n\n return {\n onCloseModal,\n customProps,\n hasSlot: hasSlot(slots),\n };\n },\n });\n</script>\n","export enum AllFiltersModalEvent {\n INPUT = 'input',\n}\n","<template>\n <base-filter-button\n class=\"b-all-filters-modal-button\"\n :class=\"conditionalClasses\"\n :amount-applied-values=\"appliedFiltersCount\"\n :is-filter-open=\"isFilterOpen\"\n :disabled=\"disabled\"\n @click=\"onClick\"\n >\n {{ label }}\n </base-filter-button>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import BaseFilterButton from '../../../base-filter-button/base-filter-button.vue';\n\n export default defineComponent({\n name: 'all-filters-modal-button',\n components: { BaseFilterButton },\n inheritAttrs: false,\n props: {\n /**\n * Button label to be displayed\n */\n label: { type: String, required: true },\n\n /**\n * Total count of applied filters\n */\n appliedFiltersCount: { type: Number, default: null },\n\n /**\n * Indicates whether the filter popover tied to this button is showing\n */\n isFilterOpen: { type: Boolean, default: false },\n\n /**\n * Disables button functionality.\n */\n disabled: { type: Boolean, default: false },\n },\n emits: ['click'],\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n [`b-all-filters-modal-button--with-counter`]: props.appliedFiltersCount,\n [`b-all-filters-modal-button--filter-open`]: props.isFilterOpen,\n }));\n\n const onClick = () => {\n emit('click');\n };\n\n return {\n conditionalClasses,\n\n onClick,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./all-filters-modal-button.scss\" />\n","<template>\n <div class=\"b-all-filters-modal\">\n <filter-bar-filter-button\n :label=\"$t('allFilters').toString()\"\n :is-filter-open=\"isModalOpen\"\n :applied-filters-count=\"numberOfActiveFilters\"\n @click=\"onClickAllFiltersModal\"\n />\n <bento-modal\n class=\"'b-all-filters-modal__modal'\"\n :is-open=\"isModalOpen\"\n :with-column-layout=\"true\"\n :size=\"BentoModalSize.LARGE\"\n :actions=\"modalActions\"\n :is-dismissible=\"false\"\n hide-close-button\n @close-modal=\"cancel\"\n >\n <template #default>\n {{ $t('allFilters') }}\n </template>\n <template #content-col-1>\n <div\n ref=\"allFiltersModalFiltersSection\"\n class=\"b-all-filters-modal__filters\"\n @keydown.right=\"onKeydownRight\"\n >\n <bento-search-bar\n v-model=\"searchTerm\"\n class=\"b-all-filters-modal__search-bar\"\n :input-field-aria-label=\"$t('searchBar').toString()\"\n @clear=\"onSearchbarClear\"\n />\n <div v-if=\"isEmptyResultForSearchFilter\" class=\"b-all-filters-modal__empty-search-message\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\">\n {{ $t('noFiltersMatchThisSearch') }}</bento-typography\n >\n </div>\n <div v-if=\"activeFilters.length\" class=\"b-all-filters-modal__filters-section\">\n <bento-typography\n :id=\"`active-filters-${allFiltersModalUniqueId}`\"\n class=\"b-all-filters-modal__filters-section-title\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.CAPTION\"\n >\n {{ $t('activeFilters') }}</bento-typography\n >\n <ul\n class=\"b-all-filters-modal__filters-list\"\n :aria-labelledby=\"`active-filters-${allFiltersModalUniqueId}`\"\n >\n <li v-for=\"item in activeFilters\" :key=\"`${item.label}-${item.field}`\">\n <all-filters-modal-button\n :ref=\"el => (allFiltersModalFilterButtons[el?.label] = el)\"\n :label=\"item.label\"\n :applied-filters-count=\"getFilterCount(item.label)\"\n :is-filter-open=\"selectedFilter.label === item.label\"\n @click=\"selectFilter(item.label, item.field)\"\n />\n </li>\n </ul>\n </div>\n <div v-if=\"otherFilters.length\" class=\"b-all-filters-modal__filters-section\">\n <bento-typography\n v-if=\"activeFilters.length\"\n :id=\"`other-filters-${allFiltersModalUniqueId}`\"\n class=\"b-all-filters-modal__filters-section-title\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.CAPTION\"\n >\n {{ $t('otherFilters') }}</bento-typography\n >\n <ul\n class=\"b-all-filters-modal__filters-list\"\n :aria-labelledby=\"`other-filters-${allFiltersModalUniqueId}`\"\n >\n <li v-for=\"item in otherFilters\" :key=\"`${item.label}-${item.field}`\">\n <all-filters-modal-button\n :ref=\"el => (allFiltersModalFilterButtons[el?.label] = el)\"\n :label=\"item.label\"\n :applied-filters-count=\"getFilterCount(item.label)\"\n :is-filter-open=\"selectedFilter.label === item.label\"\n @click=\"selectFilter(item.label, item.field)\"\n />\n </li>\n </ul>\n </div>\n </div>\n </template>\n <template #content-col-2>\n <div class=\"b-all-filters-modal__selected-filter-content\" @keydown.left=\"onKeydownLeft\">\n <div class=\"b-all-filters-modal__selected-filter-text\">\n <bento-typography\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.TITLE\"\n medium\n >{{ selectedFilter.label }}</bento-typography\n >\n <bento-typography\n v-if=\"selectedFilter.description\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n wide\n >\n {{ selectedFilter.description }}\n </bento-typography>\n </div>\n <div class=\"b-all-filters-modal__selected-filter-component\">\n <component\n :is=\"selectedFilter.type\"\n ref=\"selectedFilterRef\"\n :key=\"selectedFilter.field\"\n :field=\"selectedFilter.field\"\n :label=\"selectedFilter.label\"\n :options=\"selectedFilter.options\"\n :value=\"selectedFilter.value\"\n :default-value=\"selectedFilter.defaultValue\"\n :only-slot=\"true\"\n @input=\"updateFilter\"\n />\n </div>\n <div class=\"b-all-filters-modal__clear-button\">\n <bento-button\n :variant=\"BentoButtonVariant.SECONDARY\"\n :disabled=\"!isClearButtonEnabled\"\n @click=\"clearFilter\"\n >{{ $t('clear') }}</bento-button\n >\n </div>\n </div>\n </template>\n </bento-modal>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onBeforeUpdate, onMounted, PropType, reactive, ref, toRef, watch } from 'vue';\n import { BentoModal, BentoModalEvent, BentoModalSize } from '@/components/modal';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import {\n BentoFilterBarModel,\n BentoFilterItemType,\n BentoFilterModel,\n BentoSelectFilterOptions,\n } from '@/components/filter-bar';\n import {\n BentoBooleanFilter,\n BentoDateFilter,\n BentoDateRangeFilter,\n BentoInputFilter,\n BentoRangeFilter,\n BentoSelectAvatarFilter,\n BentoSelectCountryFilter,\n BentoSelectCurrencyFilter,\n BentoSelectFilter,\n BentoSelectPaymentMethodFilter,\n BentoSelectTagFilter,\n } from '../index';\n import { DatePickerCalendarPaneRangeDate } from '@/components/date-picker/components/date-picker-calendar-pane/date-picker-calendar-pane.types';\n import { BentoSearchBar, useSearchBarFilter } from '@/components/search-bar';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { generateUid } from '@/utils/ts/unique-id';\n import { getNextFocusableElement } from '@/utils/ts/focus-trap.utils';\n import { FilterBarFilterButton } from '../base-filter/components';\n import { AllFiltersModalEvent } from './all-filters-modal.types';\n import { useI18n } from '@/utils/ts/i18n';\n import AllFiltersModalButton from './components/all-filters-modal-button/all-filters-modal-button.vue';\n import messages from './messages.json';\n\n /**\n * A modal that acts as sort of filter manager for the BentoFilterBar.\n *\n * @example\n * import { BentoAllFiltersModal } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoAllFiltersModal },\n * template: `\n * <bento-all-filters-modal>\n * ...Example code of the component\n * </bento-all-filters-modal>\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'all-filters-modal',\n components: {\n AllFiltersModalButton,\n BentoBooleanFilter,\n BentoButton,\n BentoDateFilter,\n BentoDateRangeFilter,\n BentoInputFilter,\n BentoModal,\n BentoRangeFilter,\n BentoSearchBar,\n BentoSelectAvatarFilter,\n BentoSelectCurrencyFilter,\n BentoSelectCountryFilter,\n BentoSelectFilter,\n BentoSelectPaymentMethodFilter,\n BentoSelectTagFilter,\n BentoTypography,\n FilterBarFilterButton,\n },\n inheritAttrs: false,\n props: {\n /**\n * Array of filters based on {@see FilterBarModel}.\n * Each one of the elements in the array correspond to a filter that will\n * be created and rendered in the AllFiltersModal.\n *\n * Can be used with v-model or independently with the @input event.\n *\n * @example\n * [{\n * field: 'company',\n * label: 'Company',\n * value: '200',\n * type: FilterType.TEXT,\n * }, {\n * field: 'name',\n * label: 'Name',\n * value: null,\n * type: FilterType.TEXT,\n * }]\n */\n value: {\n type: Array as PropType<BentoFilterBarModel>,\n default: () => [],\n },\n },\n emits: [AllFiltersModalEvent.INPUT],\n setup(props, { emit }) {\n const filters = reactive({ value: props.value });\n const allFiltersModalUniqueId = generateUid('all-filters-modal');\n const allFiltersModalFiltersSection = ref([]);\n const isModalOpen = ref(false);\n const selectedFilterIndex = ref(0);\n const selectedFilterRef = ref(null);\n const searchTerm = ref<string>('');\n\n const { t } = useI18n({ messages });\n const filteredItems = useSearchBarFilter<BentoFilterModel>(searchTerm, toRef(filters, 'value'));\n\n const allFiltersModalFilterButtons = ref({});\n onBeforeUpdate(() => {\n allFiltersModalFilterButtons.value = [];\n });\n\n watch(\n () => props.value,\n () => {\n filters.value = props.value;\n }\n );\n\n const sortAlphabetically = (array: BentoFilterBarModel) =>\n /* eslint-disable-next-line no-nested-ternary */\n array.sort((a, b) => (a.label > b.label ? 1 : b.label > a.label ? -1 : 0));\n\n const activeFilters = computed(() =>\n sortAlphabetically(\n filteredItems.value.filter(el =>\n Array.isArray(el.value) ? el.value?.length && el.value?.find(item => item !== '') : el.value\n )\n )\n );\n\n const otherFilters = computed(() =>\n sortAlphabetically(\n filteredItems.value.filter(el =>\n Array.isArray(el.value)\n ? el.value?.length === 0 || el.value?.every(item => item === '')\n : !el.value\n )\n )\n );\n\n const isEmptyResultForSearchFilter = computed(() => searchTerm.value && filteredItems.value?.length === 0);\n\n const selectedFilter = computed(() => filters.value[selectedFilterIndex.value]);\n\n const selectOpenedFilter = () => {\n const openedFilter = activeFilters.value.length ? activeFilters.value[0] : otherFilters.value[0];\n const openedFilterIndex = filters.value.findIndex(\n el => el.label === openedFilter.label && el.field === openedFilter.field\n );\n selectedFilterIndex.value = openedFilterIndex;\n };\n\n onMounted(() => {\n selectOpenedFilter();\n });\n\n const computedCounts = computed(() =>\n filters.value.map(filter => {\n switch (filter.type) {\n case BentoFilterItemType.SELECT:\n case BentoFilterItemType.SELECT_AVATAR:\n case BentoFilterItemType.SELECT_COUNTRY:\n case BentoFilterItemType.SELECT_CURRENCY:\n case BentoFilterItemType.SELECT_PAYMENT_METHOD:\n case BentoFilterItemType.SELECT_TAG:\n switch ((filter.options as BentoSelectFilterOptions)?.multiple) {\n case true:\n return {\n label: filter.label,\n field: filter.field,\n count: (filter.value as Array<string | number>)?.length\n ? (filter.value as Array<string | number>)?.length\n : null,\n };\n default:\n return {\n label: filter.label,\n field: filter.field,\n count: filter.value == null ? null : 1,\n };\n }\n case BentoFilterItemType.DATE_RANGE:\n return {\n label: filter.label,\n field: filter.field,\n count:\n (filter.value as DatePickerCalendarPaneRangeDate)?.startDate != null &&\n (filter.value as DatePickerCalendarPaneRangeDate)?.endDate != null\n ? 1\n : null,\n };\n case BentoFilterItemType.RANGE:\n return {\n label: filter.label,\n field: filter.field,\n count: (filter.value as Array<string>)?.find(el => el !== '') ? 1 : null,\n };\n case BentoFilterItemType.INPUT:\n case BentoFilterItemType.BOOLEAN:\n case BentoFilterItemType.DATE:\n default:\n return {\n label: filter.label,\n field: filter.field,\n count: filter.value != null ? 1 : null,\n };\n }\n })\n );\n\n const isClearButtonEnabled = computed(() =>\n Array.isArray(selectedFilter.value.value)\n ? selectedFilter.value?.value.length && selectedFilter.value.value.find(item => item !== '')\n : !!filters.value[selectedFilterIndex.value].value\n );\n\n const numberOfActiveFilters = computed(() =>\n // eslint-disable-next-line no-return-assign, no-param-reassign\n computedCounts.value?.reduce((partialSum, computedCount) => (partialSum += computedCount.count), 0)\n );\n\n const onClickAllFiltersModal = () => {\n if (!isModalOpen.value) {\n isModalOpen.value = true;\n } else {\n isModalOpen.value = false;\n }\n };\n\n const getFilterCount = (label: string) => computedCounts.value.find(el => el.label === label).count;\n\n const selectFilter = (filterLabel: string, filterField: string) => {\n selectedFilterIndex.value = filters.value.findIndex(\n el => el.label === filterLabel && el.field === filterField\n );\n };\n\n const onSearchbarClear = () => {\n searchTerm.value = '';\n };\n\n const cancel = () => {\n isModalOpen.value = false;\n filters.value = props.value;\n onSearchbarClear();\n selectOpenedFilter();\n // TODO: scrol filters section to top\n };\n\n const updateFilter = (updatedFilter: BentoFilterModel) => {\n const updatedFilters = filters.value.map(({ value, ...otherFields }, index) => {\n if (index === selectedFilterIndex.value) {\n return { value: updatedFilter.value, ...otherFields };\n }\n return { value, ...otherFields };\n });\n\n filters.value = updatedFilters;\n };\n\n const clearFilter = () => {\n updateFilter({\n field: selectedFilter.value.field,\n label: selectedFilter.value.label,\n type: selectedFilter.value.type,\n value: undefined,\n });\n };\n\n const clearAll = () => {\n filters.value = filters.value.map(({ value, ...otherFields }) => ({\n ...otherFields,\n value: undefined,\n }));\n };\n\n const applyAll = () => {\n emit(AllFiltersModalEvent.INPUT, filters.value);\n isModalOpen.value = false;\n };\n\n const isApplyAllButtonDisabled = computed(\n () => JSON.stringify(filters.value) === JSON.stringify(props.value)\n );\n\n const modalActions = computed(() => [\n {\n title: t('applyAll'),\n disabled: isApplyAllButtonDisabled.value,\n event: applyAll,\n },\n\n {\n title: t('cancel'),\n event: cancel,\n },\n {\n title: t('clearAll'),\n disabled: !numberOfActiveFilters.value,\n event: clearAll,\n },\n ]);\n\n const onKeydownRight = () => {\n const focusableEl = getNextFocusableElement(1, selectedFilterRef.value.$el);\n focusableEl.focus();\n };\n\n const onKeydownLeft = () => {\n allFiltersModalFilterButtons.value[selectedFilter.value.label].$el.focus();\n };\n\n return {\n // Enums\n BentoModalEvent,\n BentoModalSize,\n BentoButtonVariant,\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n allFiltersModalUniqueId,\n allFiltersModalFiltersSection,\n allFiltersModalFilterButtons,\n numberOfActiveFilters,\n isEmptyResultForSearchFilter,\n isModalOpen,\n isClearButtonEnabled,\n activeFilters,\n otherFilters,\n modalActions,\n selectedFilter,\n selectedFilterRef,\n filters,\n computedCounts,\n searchTerm,\n\n // Methods\n onClickAllFiltersModal,\n getFilterCount,\n cancel,\n selectFilter,\n clearFilter,\n updateFilter,\n onSearchbarClear,\n onKeydownRight,\n onKeydownLeft,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./all-filters-modal.scss\" />\n","<template>\n <div class=\"b-filter-bar\">\n <div class=\"b-filter-bar__filters-wrapper\">\n <div v-if=\"persistentFilters.length\" class=\"b-filter-bar__persistent-filters\">\n <component\n :is=\"filter.type\"\n v-for=\"filter in persistentFilters\"\n :key=\"filter.field\"\n :field=\"filter.field\"\n :label=\"filter.label\"\n :options=\"filter.options\"\n :value=\"filter.value\"\n :default-value=\"filter.defaultValue\"\n @update=\"updateFilterHandler\"\n />\n </div>\n <div class=\"b-filter-bar__regular-filters\">\n <component\n :is=\"filter.type\"\n v-for=\"filter in regularFilters\"\n :key=\"filter.field\"\n :field=\"filter.field\"\n :label=\"filter.label\"\n :options=\"filter.options\"\n :value=\"filter.value\"\n @update=\"updateFilterHandler\"\n />\n\n <!-- All filters button -->\n <all-filters-modal v-if=\"hasHiddenFilters\" :value=\"value\" @input=\"updateAllFilters\" />\n </div>\n\n <bento-button\n v-show=\"isClearAllVisible\"\n class=\"b-filter-bar__clear-all\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n @click=\"clearAllFilters\"\n >{{ $t('clearAll') }}</bento-button\n >\n\n <bento-button\n v-show=\"isResetAllVisible\"\n class=\"b-filter-bar__reset-all\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n @click=\"resetAllFilters\"\n >\n {{ $t('resetAll') }}\n </bento-button>\n </div>\n <bento-search-bar\n v-if=\"isSearchBarEnabled\"\n class=\"b-filter-bar__search-bar\"\n :input-field-aria-label=\"searchBarAriaLabel\"\n :value=\"searchTerm\"\n @input=\"onSearchbarInput\"\n @clear=\"onSearchbarClear\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoFilterBarEvent, BentoFilterBarModel, BentoFilterModel } from './filter-bar.types';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import {\n BentoBooleanFilter,\n BentoDateFilter,\n BentoDateRangeFilter,\n BentoInputFilter,\n BentoRangeFilter,\n BentoSelectAvatarFilter,\n BentoSelectCountryFilter,\n BentoSelectCurrencyFilter,\n BentoSelectFilter,\n BentoSelectPaymentMethodFilter,\n BentoSelectTagFilter,\n } from './components';\n import { BentoSearchBar, BentoSearchBarEvent } from '@/components/search-bar';\n import { useI18n } from '@/utils/ts/i18n';\n import { useBentoToastController } from '../../utils/ts/toastController';\n import AllFiltersModal from './components/all-filters-modal/all-filters-modal.vue';\n\n import messages from './messages.json';\n\n /**\n * The filter bar filters item lists and tables according to various filter criteria.\n *\n * @example\n * import { BentoFilterBar } from '@adyen/bento-vue2'\n *\n * export default {\n * components: { BentoFilterBar },\n * data: () => ({\n * filters: [{\n * field: 'name',\n * label: 'Name',\n * value: null,\n * options: { ... },\n * type: FilterType.TEXT,\n * }]\n * }),\n * template: `\n * <bento-filter-bar\n * v-model=\"filter\"\n * />\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-filter-bar',\n components: {\n AllFiltersModal,\n BentoButton,\n BentoBooleanFilter,\n BentoDateFilter,\n BentoDateRangeFilter,\n BentoRangeFilter,\n BentoInputFilter,\n BentoSelectFilter,\n BentoSelectAvatarFilter,\n BentoSelectCountryFilter,\n BentoSelectCurrencyFilter,\n BentoSelectPaymentMethodFilter,\n BentoSelectTagFilter,\n BentoSearchBar,\n },\n inheritAttrs: false,\n props: {\n /**\n * Search term useful to filter all the data by text.\n * If the value is non-existant (null or undefined) the search bar won't be enabled.\n */\n searchTerm: {\n type: BentoSearchBar.props.value.type,\n default: undefined,\n },\n\n /**\n * Array of filters based on {@see FilterBarModel}.\n * Each one of the elements in the array correspond to a filter that will\n * be created and rendered in the FilterBar.\n *\n * Can be used with v-model or independently with the @input event.\n *\n * @example\n * [{\n * field: 'company',\n * label: 'Company',\n * value: '200',\n * type: FilterType.TEXT,\n * }, {\n * field: 'name',\n * label: 'Name',\n * value: null,\n * type: FilterType.TEXT,\n * }]\n */\n value: {\n type: Array as PropType<BentoFilterBarModel>,\n default: () => [],\n },\n },\n emits: [\n BentoFilterBarEvent.INPUT,\n BentoSearchBarEvent.CLEAR,\n BentoSearchBarEvent.INPUT,\n BentoSearchBarEvent.UPDATE,\n ],\n setup(props, { emit }) {\n const { t } = useI18n({ messages });\n const toastController = useBentoToastController();\n const searchBarAriaLabel = computed(() => t('searchBar') as string);\n\n const hasHiddenFilters = computed(() => {\n // Has props with visible set\n const hasVisibleSet = props.value.some(({ visible }) => visible !== undefined && visible !== null);\n return hasVisibleSet ? props.value.some(({ visible }) => !visible) : false;\n });\n\n // Persistent filters i.e. filters with default value\n const persistentFilters = computed(() =>\n props.value.filter(({ defaultValue }) => defaultValue !== undefined)\n );\n // Show non-persistent & visible filters\n const regularFilters = computed(() => {\n const hasVisibleSet = props.value.some(({ visible }) => visible !== undefined && visible !== null);\n // If no filter has the `visible` prop set then all are visible, otherwise search for the \"visible: true\" elements\n return hasVisibleSet\n ? props.value.filter(({ defaultValue, visible }) => defaultValue === undefined && visible)\n : props.value.filter(({ defaultValue }) => defaultValue === undefined);\n });\n\n // Enable search bar.\n // Soft equality to check for \"null\" and \"undefined\"\n // eslint-disable-next-line eqeqeq\n const isSearchBarEnabled = computed(() => props.searchTerm != undefined);\n\n // Show the \"Clear all\" button (true) if at least one filter is active (contains a value)\n // and there are not persistent filters present.\n const isClearAllVisible = computed(() => {\n // Disabling strict equality to check for both undefined and null\n // eslint-disable-next-line eqeqeq\n const hasActiveFilters = props.value.some(({ value }) => value != undefined);\n\n return hasActiveFilters && persistentFilters.value.length === 0;\n });\n\n const isResetAllVisible = computed(() => {\n if (persistentFilters.value.length === 0) {\n return false;\n }\n const areAllValuesEqualToDefaults = props.value.every(({ value, defaultValue }) =>\n defaultValue === undefined || defaultValue === null\n ? true\n : JSON.stringify(value) === JSON.stringify(defaultValue)\n );\n\n return !areAllValuesEqualToDefaults;\n });\n\n const updateAllFilters = (newFilters: BentoFilterBarModel) => {\n emit(BentoFilterBarEvent.INPUT, newFilters);\n };\n\n const updateFilterHandler = (updatedFilter: BentoFilterModel) => {\n const filterIndex = props.value.findIndex(filter => filter.field === updatedFilter.field);\n const newFilters = props.value.slice();\n newFilters[filterIndex].value = updatedFilter.value;\n\n emit(BentoFilterBarEvent.INPUT, newFilters);\n };\n\n const clearAllFilters = () => {\n const previousFilters = props.value.slice();\n const clearedFilters = props.value.map(({ value, ...otherFields }) => ({\n ...otherFields,\n value: undefined,\n }));\n\n toastController.addToast({\n text: t('filtersHaveBeenCleared') as string,\n action: {\n handler: () => emit(BentoFilterBarEvent.INPUT, previousFilters),\n text: t('undo') as string,\n },\n });\n emit(BentoFilterBarEvent.INPUT, clearedFilters);\n };\n\n const resetAllFilters = () => {\n const previousFilters = props.value.slice();\n const resetFilters = props.value.map(({ defaultValue, ...otherFields }) => ({\n ...otherFields,\n defaultValue,\n value: defaultValue,\n }));\n\n toastController.addToast({\n text: t('filtersHaveBeenReset') as string,\n action: {\n handler: () => emit(BentoFilterBarEvent.INPUT, previousFilters),\n text: t('undo') as string,\n },\n });\n emit(BentoFilterBarEvent.INPUT, resetFilters);\n };\n\n const onSearchbarInput = (newSearchTerm: string) => {\n emit(BentoSearchBarEvent.INPUT, newSearchTerm);\n emit(BentoSearchBarEvent.UPDATE, newSearchTerm);\n };\n const onSearchbarClear = () => {\n emit(BentoSearchBarEvent.CLEAR);\n };\n\n return {\n // Values\n hasHiddenFilters,\n isClearAllVisible,\n isSearchBarEnabled,\n searchBarAriaLabel,\n persistentFilters,\n regularFilters,\n isResetAllVisible,\n\n // Enums\n BentoButtonVariant,\n\n // Events\n updateAllFilters,\n updateFilterHandler,\n clearAllFilters,\n onSearchbarClear,\n onSearchbarInput,\n resetAllFilters,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./filter-bar.scss\" />\n","import { BentoPagination } from '@/components/pagination';\n\nexport enum BentoColumnOverflow {\n WRAP = 'wrap',\n ELLIPSIS = 'ellipsis',\n}\n\nexport interface BentoColumn {\n field: string;\n label: string;\n width?: number;\n minWidth?: number;\n flex?: number;\n sortable?: boolean;\n numeric?: boolean;\n infoIconTooltip?: string;\n padding?: {\n left?: boolean;\n right?: boolean;\n };\n overflow?: BentoColumnOverflow;\n visible?: boolean;\n mandatory?: boolean;\n frozen?: boolean;\n}\n\nexport enum BentoDatagridStyleState {\n OUTLINE = 'outline',\n}\n\nexport enum BentoDatagridSortDirection {\n ASCENDING = 'asc',\n DESCENDING = 'desc',\n}\n\nexport interface BentoDatagridSortByColumn {\n field: BentoColumn['field'];\n direction: BentoDatagridSortDirection;\n}\n\nexport interface BentoDatagridDataItem {\n id?: string;\n [fieldName: string]: unknown;\n}\n\nexport type BentoDatagridData = BentoDatagridDataItem[];\n\nexport type BentoDatagridDataItemId = string | number;\n\nexport type BentoDatagridGetDataItemIdFn = (item: BentoDatagridDataItem) => BentoDatagridDataItemId;\n\nexport type BentoDatagridIsDataItemDisabledFn = (item: BentoDatagridDataItem) => boolean;\n\nexport type BentoDatagridPaginationProps = InstanceType<typeof BentoPagination>['$props'];\n\nexport interface BentoColumnWidthOverridesLookup {\n [field: string]: {\n width: BentoColumn['width'];\n minWidth: BentoColumn['minWidth'];\n };\n}\n\nexport interface BentoDatagridAllItemsSelectedState {\n allItemsSelected: boolean;\n isIndeterminate: boolean;\n}\n\nexport enum BentoDatagridEvent {\n COLUMN_RESIZE = 'column-resize',\n SORT = 'sort',\n SELECT = 'select',\n NAVIGATE = 'navigate',\n UPDATE_FILERS = 'update:filters',\n ITEMS_PAGE = 'items-page',\n UPDATE_FILTER_SEARCH_TERM = 'update:filter-search-term',\n FILTER_SEARCH_INPUT = 'filter-search-input',\n FILTER_SEARCH_CLEAR = 'filter-search-clear',\n COLUMNS = 'columns',\n UPDATE_COLUMNS = 'update:columns',\n ROW_CLICK = 'row-click',\n UPDATE_CONDENSED = 'update:condensed',\n}\n","import { BentoColumn } from '../../data-grid.types';\n\n/**\n * All the emit events provided by the DatagridColumns component\n */\nexport enum DatagridColumnsEvent {\n COLUMN_RESIZE = 'column-resize',\n COLUMN_RESIZING = 'column-resizing',\n SORT = 'sort',\n SELECT_ALL_ROWS = 'select-all-rows',\n COLUMN_MOVE = 'column-move',\n COLUMN_UPDATE = 'column-update',\n\n // Dragging events\n COLUMN_DRAG_START = 'column-dragstart',\n COLUMN_DRAG_ENTER = 'column-dragenter',\n COLUMN_DRAG_END = 'column-dragend',\n COLUMN_DROP = 'column-drop',\n}\n\n/**\n * The Datagrid column dragging state.\n * @interface BentoDatagridDraggingColumnState\n * @field dragging - The column currently being dragged.\n * @field target - The column being dragged over during dragging another column.\n */\nexport interface BentoDatagridDraggingColumnState {\n dragging?: BentoColumn;\n target?: BentoColumn;\n}\n","/* eslint-disable no-param-reassign */\nimport { computed, reactive, ref, Ref, toRefs, watchEffect } from 'vue';\nimport { listen } from '@/utils/ts/events';\nimport { BentoColumn, BentoColumnWidthOverridesLookup } from '../data-grid.types';\nimport { DatagridColumnsEvent } from '../components/data-grid-columns/data-grid-columns-types';\n\n/**\n * Contains all the resize methods and logic to allow users to resize column widths.\n * We listen for 3 main events:\n * - startResize: when the user clicks on a column divider.\n * - onResize: the tracking of the user dragging the columns divider left or right.\n * - stopResize: when the user fires the mouseup event and the column needs to be resized.\n *\n * With these 3 events we can track and store users manually changing column width.\n *\n * @param columns an array of columns definitions\n * @returns all resize refs, variables and methods\n */\nexport const useResizer = (\n columns: Ref<BentoColumn[]>,\n emit: (event: DatagridColumnsEvent, ...args: unknown[]) => void\n) => {\n const isResizing = ref(false);\n const columnWidthOverridesLookup = ref<BentoColumnWidthOverridesLookup>(undefined);\n // Initalise resize refs, reactive obects and computed variables\n // Set up column refs for each column header identified by the key\n const colKeyLookup = columns.value.reduce((acc, col) => {\n acc[col.field] = null;\n return acc;\n }, {});\n const columnsRefs = reactive(colKeyLookup);\n const allColumnRefs = toRefs(columnsRefs);\n\n let stepPositionX = 0;\n let resizingColumnField = '';\n\n // Setup the reactive resize data object to be used in all the event methods\n const defaultResizedColumnWidths = computed(() =>\n Object.fromEntries(columns.value.map(({ field, width, minWidth }) => [field, { width, minWidth }]))\n );\n\n // eslint-disable-next-line no-return-assign\n watchEffect(() => (columnWidthOverridesLookup.value = defaultResizedColumnWidths.value));\n\n // Intialise resize methods\n let removeMouseMoveResizeListener: () => void = null;\n let removeMouseUpResizeListener: () => void = null;\n\n // When the user is resizing the column keep track of mouse position and update column width\n const onResizeColumn = (event: MouseEvent) => {\n const sizeChange = event.clientX - stepPositionX;\n const currResizingColumnField = resizingColumnField;\n\n const resizedColumnWidth = columnWidthOverridesLookup.value[currResizingColumnField].width + sizeChange;\n // If the column width is more than the minWidth set the new resized width or else use the minWidth\n columnWidthOverridesLookup.value[currResizingColumnField].width =\n resizedColumnWidth > columnWidthOverridesLookup.value[currResizingColumnField].minWidth\n ? resizedColumnWidth\n : columnWidthOverridesLookup.value[currResizingColumnField].minWidth;\n /**\n * Triggered when a column is resized\n *\n * @event column-resizing\n * @property BentoColumnWidthOverridesLookup columnWidthOverridesLookup - the column width overrides.\n */\n emit(DatagridColumnsEvent.COLUMN_RESIZING, columnWidthOverridesLookup.value);\n\n stepPositionX = event.clientX;\n };\n\n // When the user fires the mouse up event, set the resizing column width\n const stopResize = () => {\n isResizing.value = false;\n removeMouseMoveResizeListener?.();\n removeMouseUpResizeListener?.();\n\n if (resizingColumnField) {\n /**\n * Triggered when a column is resized\n *\n * @event column-resize\n * @property {field: string; width: number;} resizedColumn - the resized columns field name and new width.\n */\n emit(DatagridColumnsEvent.COLUMN_RESIZE, {\n field: resizingColumnField,\n width: columnWidthOverridesLookup.value[resizingColumnField].width,\n });\n }\n\n // Reset all resize vars back to defaults\n removeMouseMoveResizeListener = null;\n removeMouseUpResizeListener = null;\n resizingColumnField = '';\n stepPositionX = null;\n };\n\n // When the user interacts with the column resizer, set it's start position and the column we are interacting with\n const startResize = (hasResizableColumns: boolean, field: BentoColumn['field'], event: MouseEvent) => {\n event.preventDefault();\n if (hasResizableColumns) {\n isResizing.value = true;\n if (event.buttons !== 1) {\n stopResize();\n return;\n }\n\n resizingColumnField = field;\n stepPositionX = event.clientX;\n\n removeMouseMoveResizeListener = listen(window, 'mousemove', onResizeColumn);\n removeMouseUpResizeListener = listen(window, 'mouseup', stopResize);\n }\n };\n\n return { resizeData: columnWidthOverridesLookup, allColumnRefs, startResize, isResizing };\n};\n\nexport default useResizer;\n","const callbackMap = new WeakMap();\nconst observerMap = new WeakMap();\n\nexport const observeSizeOfElement = (element, callback) => {\n if (!window.ResizeObserver) {\n return;\n }\n\n const elementToObserve = element.$el ?? element;\n\n const observer = new ResizeObserver(([entry]) => {\n requestAnimationFrame(() => {\n const callbackToInvoke = callbackMap.get(entry.target);\n if (callbackToInvoke) {\n callbackToInvoke(entry.target.getBoundingClientRect());\n }\n });\n });\n\n callbackMap.set(elementToObserve, callback);\n observerMap.set(elementToObserve, observer);\n observer.observe(elementToObserve);\n};\n","import { computed, nextTick, onMounted, ref, watch } from 'vue';\nimport { BentoColumn, BentoColumnWidthOverridesLookup } from '../../data-grid.types';\nimport { CalculateColumnWidthOptions, FlexColumnLookup } from './useCalculateColumnWidth.types';\nimport { MaybeRef } from '@/types';\nimport { observeSizeOfElement } from '@/utils/ts/resize';\n\n// Default constants\nexport const DEFAULT_COLUMN_WIDTH = 100;\nexport const DEFAULT_COLUMN_MIN_WIDTH = 50;\nexport const DATAGRID_SELECT_FIELD_NAME = 'b-select';\n\n/**\n * For fluid width caclulations we adhere to the caclulations done for the CSS flexbox:\n * https://drafts.csswg.org/css-flexbox-1/#resolve-flexible-lengths\n *\n * @param initialFreeSpace the amount of freespace to allow flex columns within\n * @param totalFlexUnits the total amount of flex units to allocate\n * @param flexCols an array of columns with a flex unit assigned to them\n * @returns a keyed object of columns and their computed widths\n */\nconst computeFlexColumnsWidth = (initialFreeSpace: number, totalFlexUnits: number, flexCols: BentoColumn[]) => {\n const flexColumnsLookup: FlexColumnLookup = {};\n const frozenColumnKeys: BentoColumn['field'][] = [];\n\n const freezeColumn = (field: BentoColumn['field']) => {\n const value = flexColumnsLookup[field];\n if (value && value.frozen !== true) {\n flexColumnsLookup[field].frozen = true;\n frozenColumnKeys.push(field);\n }\n };\n\n // Step 5 of https://drafts.csswg.org/css-flexbox-1/#resolve-flexible-lengths\n function processFlexItems() {\n // 5a: If all the flex items on the line are frozen, free space has been distributed.\n if (frozenColumnKeys.length === flexCols.length) {\n return;\n }\n\n const violationsLookup: {\n min: Record<BentoColumn['field'], boolean>;\n max: Record<BentoColumn['field'], boolean>;\n } = { min: {}, max: {} };\n\n let remainingFreeSpace = initialFreeSpace;\n let flexUnits = totalFlexUnits;\n let totalViolation = 0;\n\n // 5b: Calculate the remaining free space\n frozenColumnKeys.forEach(field => {\n remainingFreeSpace -= flexColumnsLookup[field].computedWidth;\n flexUnits -= flexColumnsLookup[field].flex;\n });\n\n for (let i = 0, flexColsLength = flexCols.length; i < flexColsLength; i += 1) {\n const column = flexCols[i];\n\n // If this column is frozen no need to re-recalculate it's width\n if (flexColumnsLookup[column.field] && flexColumnsLookup[column.field].frozen === true) {\n // NOTE: the following eslint rule was disabled because we check each column's frozen status\n // and if one exists we need to keep recursively caclulating the flex column widths.\n // eslint-disable-next-line no-continue\n continue;\n }\n\n // 5c: Distribute remaining free space proportional to the flex factors\n const widthPerFlexUnit = remainingFreeSpace / flexUnits;\n let computedWidth = widthPerFlexUnit * column.flex;\n\n // 5d: Fix minWidth violations\n if (computedWidth < column.minWidth) {\n totalViolation += column.minWidth - computedWidth;\n computedWidth = column.minWidth;\n violationsLookup.min[column.field] = true;\n }\n\n flexColumnsLookup[column.field] = {\n frozen: false,\n computedWidth,\n flex: column.flex,\n };\n }\n\n // 5e: Freeze over-flexed items\n if (totalViolation > 0) {\n // Freeze all the items with minWidth violations\n Object.keys(violationsLookup.min).forEach(field => {\n freezeColumn(field);\n });\n } else {\n // Freeze all items\n flexCols.forEach(({ field: key }) => {\n freezeColumn(key);\n });\n }\n\n // 5f: Return to the start of this loop\n processFlexItems();\n }\n\n processFlexItems();\n\n return flexColumnsLookup;\n};\n\n/**\n * Calculates the width of the columns using width, minWidth and/or a fluid number.\n *\n * @param columns an array of column definitions\n * @param gridWidth the width of the data grid\n * @param options optional options for the calculator to be aware of.\n */\nexport const useCalculateColumnWidth = (\n newColumns: MaybeRef<BentoColumn[]>,\n bodyRef: MaybeRef<HTMLDivElement | undefined>,\n options?: CalculateColumnWidthOptions\n) => {\n const columns = ref(newColumns);\n const body = ref(bodyRef);\n\n // Observe the size of the table body and store the width for column and CSS width calculations\n const gridWidth = ref<number>();\n onMounted(() => {\n nextTick(() => {\n if (body.value) {\n gridWidth.value = body.value.getBoundingClientRect().width;\n }\n // Keep watching element till it's defined, when it is observe element's width\n const stop = watch(\n body,\n () => {\n if (body.value) {\n nextTick(() => stop());\n observeSizeOfElement(body.value, ({ width }) => {\n gridWidth.value = width;\n });\n }\n },\n { immediate: true }\n );\n });\n });\n\n const caclulatedWidths = computed(() => {\n // Setup vars\n const flexCols = [];\n let totalFlexUnits = 0;\n let widthAllocatedBeforeFlex = 0;\n // reduce columns into keyed object\n const columnsLookup: {\n [columnKey: string]: BentoColumn;\n } = {};\n let columnDefs: BentoColumn[] = columns.value.filter(col => col.visible !== false);\n // Prepend a column if needs selecting functionality\n if (options?.hasSelectableColumn.value) {\n columnDefs = [{ field: DATAGRID_SELECT_FIELD_NAME, label: '', width: 40 }, ...columnDefs];\n }\n\n // For the non-flex columns, compute their width\n // For the flex columns, compute there minimum width and how much width must be allocated during the flex allocation\n columnDefs.forEach(col => {\n const fluidCol: BentoColumn = { ...col };\n let width: number;\n if (fluidCol.flex && fluidCol.flex > 0) {\n // If a fluid column, add flex units to total and prepare them for calculation\n totalFlexUnits += fluidCol.flex;\n width = 0;\n flexCols.push(fluidCol);\n } else {\n // If not a fluid column use the width (or minWidth if this is a larger value)\n width = Math.max(\n fluidCol?.width ?? DEFAULT_COLUMN_WIDTH,\n fluidCol?.minWidth ?? DEFAULT_COLUMN_MIN_WIDTH\n );\n }\n\n widthAllocatedBeforeFlex += width;\n fluidCol.width = width;\n fluidCol.minWidth = fluidCol?.minWidth ?? DEFAULT_COLUMN_MIN_WIDTH;\n\n columnsLookup[fluidCol.field] = fluidCol;\n });\n\n // Calculate how much space we have available for fluids widths by subtracting the non-fluid column widths\n const initialFreeSpace = Math.max(gridWidth.value - widthAllocatedBeforeFlex, 0);\n\n // Allocate the remaining space to the flex columns\n if (totalFlexUnits > 0 && gridWidth.value > 0) {\n const computedColumnWidths = computeFlexColumnsWidth(initialFreeSpace, totalFlexUnits, flexCols);\n\n Object.keys(computedColumnWidths).forEach(field => {\n columnsLookup[field].width = computedColumnWidths[field].computedWidth;\n });\n }\n\n return Object.values(columnsLookup);\n });\n\n // RESIZE OBJECT\n const columnWidthOverridesLookup = ref<BentoColumnWidthOverridesLookup>(undefined);\n\n const onColumnWidthOverride = (newColumnWidthOverridesLookup: BentoColumnWidthOverridesLookup) => {\n columnWidthOverridesLookup.value = { ...columnWidthOverridesLookup.value, ...newColumnWidthOverridesLookup };\n };\n\n const processedColumns = computed(() =>\n caclulatedWidths.value.map(col => ({\n ...col,\n // Override column width with resized ones\n width: columnWidthOverridesLookup.value?.[col.field]?.width ?? col.width,\n }))\n );\n\n // Generate grid width styles\n const totalWidthOfAllColumns = computed(() => processedColumns.value.reduce((acc, val) => val.width + acc, 0));\n\n const gridColumnWidthStyle = computed(() => ({\n width: gridWidth.value > totalWidthOfAllColumns.value ? '100%' : 'fit-content',\n }));\n\n return { columnDefs: processedColumns, gridColumnWidthStyle, onColumnWidthOverride };\n};\n\nexport default useCalculateColumnWidth;\n","import { Ref } from 'vue';\nimport { BentoColumn, BentoDatagridSortByColumn, BentoDatagridSortDirection } from '../data-grid.types';\nimport { DatagridColumnsEvent } from '../components/data-grid-columns/data-grid-columns-types';\n\nexport const useSorter = (\n sortBy: Ref<BentoDatagridSortByColumn[]>,\n columns: Ref<BentoColumn[]>,\n emit: (event: DatagridColumnsEvent, updatedSortBy: BentoDatagridSortByColumn[]) => void\n) => {\n // Get column sort direction if it has been sorted\n const conditionalSortDirectionClasses = (field: string, direction: BentoDatagridSortDirection) => ({\n 'b-data-grid-columns__column-sort-icon--sorted': sortBy.value.some(\n sortedCol => sortedCol.field === field && sortedCol.direction === direction\n ),\n });\n\n // The column head click event to sort data by certain field and direction\n const sortByColumnField = (field: string) => {\n // First check if column is sortable\n if (!columns.value.some(col => col.field === field && col.sortable)) {\n return;\n }\n\n // Return the updated sortBy array of sorted columns\n const newColumnSort: BentoDatagridSortByColumn = {\n field,\n direction:\n sortBy.value.find(sortedCol => sortedCol.field === field)?.direction ===\n BentoDatagridSortDirection.ASCENDING\n ? BentoDatagridSortDirection.DESCENDING\n : BentoDatagridSortDirection.ASCENDING,\n };\n\n const updatedSortBy = [newColumnSort];\n\n emit(DatagridColumnsEvent.SORT, updatedSortBy);\n };\n\n return { conditionalSortDirectionClasses, sortByColumnField };\n};\n","import { nextTick, reactive, ref, Ref } from 'vue';\nimport {\n BentoDatagridAllItemsSelectedState,\n BentoDatagridData,\n BentoDatagridDataItemId,\n BentoDatagridEvent,\n BentoDatagridGetDataItemIdFn,\n BentoDatagridIsDataItemDisabledFn,\n} from '../data-grid.types';\n\n/**\n * Exposed selection variables and methods for a data component to use and react to.\n * @param selection a list of unique IDs\n * @param emit the emit function to fire upon selection\n * @param data the list of data items\n * @param getDataItemId the method to retrieve the unique ID of a data item\n * @param isDataItemDisabled the method to determine if the data item is disabled for selection\n */\nexport const useSelector = (\n selection: Ref<BentoDatagridDataItemId[]>,\n emit: (event: string, emitedSelectedItems: BentoDatagridDataItemId[]) => void,\n data: Ref<BentoDatagridData>,\n getDataItemId: BentoDatagridGetDataItemIdFn,\n isDataItemDisabled: BentoDatagridIsDataItemDisabledFn\n) => {\n const selectedItems = ref<BentoDatagridDataItemId[]>(selection.value);\n const allItemsSelectedState = reactive<BentoDatagridAllItemsSelectedState>({\n allItemsSelected: false,\n isIndeterminate: false,\n });\n\n const emitSelect = () => {\n emit(BentoDatagridEvent.SELECT, selectedItems.value);\n };\n\n const onAllRowSelect = (allItemsSelected: boolean) => {\n nextTick(() => {\n if (allItemsSelected) {\n // eslint-disable-next-line no-param-reassign\n selectedItems.value = data.value\n ?.filter(dataItem => !isDataItemDisabled(dataItem))\n ?.map(dataItem => getDataItemId(dataItem));\n } else {\n // eslint-disable-next-line no-param-reassign\n selectedItems.value = [];\n }\n allItemsSelectedState.allItemsSelected = allItemsSelected;\n allItemsSelectedState.isIndeterminate = false;\n emitSelect();\n });\n };\n\n const onRowSelect = () => {\n nextTick(() => {\n const isEveryItemSelected = data.value\n ?.filter(dataItem => !isDataItemDisabled(dataItem))\n .every(item => selectedItems.value.includes(getDataItemId(item)));\n\n allItemsSelectedState.isIndeterminate = selectedItems.value.length > 0 && !isEveryItemSelected;\n\n if (isEveryItemSelected) {\n allItemsSelectedState.allItemsSelected = true;\n } else if (allItemsSelectedState.isIndeterminate || !isEveryItemSelected) {\n allItemsSelectedState.allItemsSelected = false;\n }\n\n emitSelect();\n });\n };\n\n onRowSelect();\n\n return { onAllRowSelect, onRowSelect, allItemsSelectedState, selectedItems };\n};\n","import { computed, reactive, ref } from 'vue';\nimport { MaybeRef } from '@/types';\nimport { BentoColumn, BentoDatagridEvent } from '../../data-grid.types';\nimport type { EmitFn } from 'vue/types/v3-setup-context';\nimport {\n BentoDatagridDraggingColumnState,\n DatagridColumnsEvent,\n} from '@/components/data-grid/components/data-grid-columns/data-grid-columns-types';\n\n/**\n * A composable that handles all the column dragging logic.\n * This allows users to re-arrange the column order.\n * @param columnsRef - the reference to the array of columns.\n * @param hasDraggableColumnsRef - the reference to the hasDraggableColumns prop.\n * @param emit - the Datagrid emit function.\n */\nexport const useColumnReorderer = (\n columnsRef: MaybeRef<BentoColumn[]>,\n hasDraggableColumnsRef: MaybeRef<boolean>,\n emit: EmitFn\n) => {\n const columns = ref(columnsRef);\n const hasDraggableColumns = ref(hasDraggableColumnsRef);\n\n const draggingColumns = reactive<BentoDatagridDraggingColumnState>({\n dragging: null,\n target: null,\n });\n\n const onMoveColumnByOffset = (movingColumn: BentoColumn, offset = 0) => {\n const fromIndex = columns.value.findIndex(c => c.field === movingColumn.field);\n const toIndex = fromIndex + offset;\n if (toIndex < 0 || toIndex > columns.value.length - 1) return;\n\n // If the move is inside the bounds of the columns array, we can move\n // const toColumn = columns.value[toIndex];\n const reorderedColumns = [...columns.value];\n reorderedColumns.splice(toIndex, 0, reorderedColumns.splice(fromIndex, 1)[0]);\n\n emit(BentoDatagridEvent.COLUMNS, reorderedColumns);\n emit(BentoDatagridEvent.UPDATE_COLUMNS, reorderedColumns);\n };\n\n const onDragStart = (column: BentoColumn, e: DragEvent & Event) => {\n draggingColumns.dragging = column;\n e.dataTransfer.setData('text', ''); // dataTransfer needed for firefox\n e.dataTransfer.dropEffect = 'move';\n };\n\n const onDragEnter = (column: BentoColumn) => {\n draggingColumns.target = column;\n };\n\n const onDrop = (column: BentoColumn) => {\n if (draggingColumns.dragging?.field !== column.field) {\n // Re-order columns\n const fromIndex = columns.value.findIndex(c => c.field === draggingColumns.dragging?.field);\n const toIndex = columns.value.findIndex(c => c.field === column.field);\n const toLeftOfToIndex = toIndex > fromIndex ? toIndex - 1 : toIndex;\n let reorderedColumns = [...columns.value];\n\n reorderedColumns.splice(\n toLeftOfToIndex === -1 ? 0 : toLeftOfToIndex,\n 0,\n reorderedColumns.splice(fromIndex, 1)[0]\n );\n\n const firstUnfrozenColumn = columns.value.findIndex(c => !c?.frozen);\n // Make sure to to change the frozen state of the dragged column to the column the user is dropping on\n // However don't change the state if we are dragging over the first un-frozen column\n if (draggingColumns.dragging?.frozen !== column.frozen && toIndex !== firstUnfrozenColumn) {\n reorderedColumns = reorderedColumns.map(col =>\n draggingColumns.dragging?.field === col.field ? { ...col, frozen: !!column?.frozen } : col\n );\n }\n\n emit(BentoDatagridEvent.COLUMNS, reorderedColumns);\n emit(BentoDatagridEvent.UPDATE_COLUMNS, reorderedColumns);\n }\n\n draggingColumns.dragging = null;\n draggingColumns.target = null;\n };\n\n const onDragEnd = () => {\n draggingColumns.dragging = null;\n draggingColumns.target = null;\n };\n\n // Drag events for the `data-grid-columns`\n const draggingEventsForColumns = computed(() => {\n if (!hasDraggableColumns.value) return {};\n return {\n [DatagridColumnsEvent.COLUMN_DRAG_START]: (column: BentoColumn, e: DragEvent & Event) =>\n onDragStart(column, e),\n [DatagridColumnsEvent.COLUMN_DRAG_ENTER]: (column: BentoColumn) => onDragEnter(column),\n [DatagridColumnsEvent.COLUMN_DROP]: (column: BentoColumn) => onDrop(column),\n [DatagridColumnsEvent.COLUMN_DRAG_END]: () => onDragEnd(),\n };\n });\n\n // Drag events for row cell\n const draggingEventsForRowCell = computed(() => (column: BentoColumn) => {\n if (!hasDraggableColumns.value) return {};\n return {\n dragenter: (e: DragEvent) => {\n e.preventDefault();\n onDragEnter(column);\n },\n drop: () => {\n onDrop(column);\n },\n dragover: (e: DragEvent) => {\n e.preventDefault();\n },\n };\n });\n\n return {\n // Values\n draggingColumns,\n\n // Methods\n draggingEventsForColumns,\n draggingEventsForRowCell,\n onMoveColumnByOffset,\n };\n};\n","import { MaybeRef } from '@/types';\nimport { BentoColumn, BentoDatagridEvent } from '../../data-grid.types';\nimport type { EmitFn } from 'vue/types/v3-setup-context';\nimport { computed, ref } from 'vue';\n\n/**\n * All Datagrid configuration settings logic:\n * - Compact view toggle\n * - Frozen / unfrozen columns sorting and column sets\n * - Emitting a new array of colums with a new updated column\n * - Emitting new updated array of columns\n *\n * @param condensed - initial state of compact view toggle\n * @returns compact view data & event handler\n */\nexport const useConfigSettings = (columnsRef: MaybeRef<BentoColumn[]>, emit: EmitFn) => {\n const columns = ref(columnsRef);\n\n // Frozen and unfrozen columns\n const sortedColumnsByFreezeState = computed(() =>\n [...columns.value].sort((a, b) => {\n if (a.frozen === b.frozen) {\n return 0;\n }\n return a.frozen ? -1 : 1;\n })\n );\n const frozenColumns = computed(() => sortedColumnsByFreezeState.value.filter(col => col.frozen));\n const unfrozenColumns = computed(() => sortedColumnsByFreezeState.value.filter(col => !col.frozen));\n const columnSets = computed(() => [\n { columnSet: frozenColumns.value, id: 'frozen', isFrozenColumns: true },\n { columnSet: unfrozenColumns.value, id: 'unfrozen' },\n ]);\n\n const onConfigSettingsUpdate = (isCompactView: boolean) => emit(BentoDatagridEvent.UPDATE_CONDENSED, isCompactView);\n\n // Emits an updated array of columns\n const onConfigSettingsColumnsUpdate = (newColumns: BentoColumn[]) => {\n emit(BentoDatagridEvent.COLUMNS, newColumns);\n emit(BentoDatagridEvent.UPDATE_COLUMNS, newColumns);\n };\n\n // Updates and then emits an updated array of columns\n const onConfigSettingsColumnUpdate = (updatedColumn: BentoColumn) => {\n const updatedColumns = sortedColumnsByFreezeState.value.map(col =>\n col?.field === updatedColumn.field ? updatedColumn : col\n );\n onConfigSettingsColumnsUpdate(updatedColumns);\n };\n\n return {\n // Values\n columnSets,\n sortedColumns: sortedColumnsByFreezeState,\n\n // Methods\n onConfigSettingsUpdate,\n onConfigSettingsColumnsUpdate,\n onConfigSettingsColumnUpdate,\n };\n};\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><g fill=\"#00112C\" fill-rule=\"evenodd\" :clip-path=\"'url(#uia-icons-16-info__a' + uuid + ')'\" clip-rule=\"evenodd\"><path d=\"M8.58147 5.05557C8.47159 5.22002 8.31541 5.34819 8.13268 5.42388C7.94996 5.49957 7.74889 5.51937 7.55491 5.48079C7.36093 5.4422 7.18275 5.34696 7.04289 5.20711C6.90304 5.06725 6.8078 4.88907 6.76922 4.69509C6.73063 4.50111 6.75043 4.30004 6.82612 4.11732C6.90181 3.93459 7.02998 3.77841 7.19443 3.66853C7.35888 3.55865 7.55222 3.5 7.75 3.5C8.01522 3.5 8.26957 3.60536 8.45711 3.79289C8.64464 3.98043 8.75 4.23478 8.75 4.5C8.75 4.69778 8.69135 4.89112 8.58147 5.05557Z\"/><path d=\"M6.25 7C6.25 6.58579 6.58579 6.25 7 6.25H8C8.41421 6.25 8.75 6.58579 8.75 7V10.25H9C9.41421 10.25 9.75 10.5858 9.75 11C9.75 11.4142 9.41421 11.75 9 11.75H7C6.58579 11.75 6.25 11.4142 6.25 11C6.25 10.5858 6.58579 10.25 7 10.25H7.25V7.75H7C6.58579 7.75 6.25 7.41421 6.25 7Z\"/><path d=\"M9.51195 0.398918C8.0086 0.0998821 6.45033 0.253358 5.0342 0.839937C3.61808 1.42652 2.40769 2.41985 1.55611 3.69433C0.70453 4.96881 0.25 6.4672 0.25 8C0.25 10.0554 1.06652 12.0267 2.51992 13.4801C3.97333 14.9335 5.94457 15.75 8 15.75C9.53281 15.75 11.0312 15.2955 12.3057 14.4439C13.5801 13.5923 14.5735 12.3819 15.1601 10.9658C15.7466 9.54967 15.9001 7.99141 15.6011 6.48805C15.3021 4.9847 14.5639 3.60378 13.4801 2.51993C12.3962 1.43607 11.0153 0.697953 9.51195 0.398918ZM5.60823 2.22576C6.75027 1.75271 8.00693 1.62894 9.21931 1.8701C10.4317 2.11125 11.5453 2.70651 12.4194 3.58059C13.2935 4.45466 13.8888 5.56831 14.1299 6.78069C14.3711 7.99307 14.2473 9.24974 13.7742 10.3918C13.3012 11.5338 12.5001 12.5099 11.4723 13.1967C10.4445 13.8834 9.23613 14.25 8 14.25C6.3424 14.25 4.75268 13.5915 3.58058 12.4194C2.40848 11.2473 1.75 9.65761 1.75 8C1.75 6.76387 2.11656 5.5555 2.80331 4.52769C3.49007 3.49988 4.46619 2.6988 5.60823 2.22576Z\"/></g><defs><clipPath :id=\"'uia-icons-16-info__a' + uuid\"><rect width=\"16\" height=\"16\" fill=\"#fff\"/></clipPath></defs></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <span\n v-bento-tooltip-directive:[tooltipPosition]=\"tooltipText\"\n class=\"b-info-icon\"\n :aria-label=\"tooltipText\"\n tabindex=\"0\"\n >\n <info-icon :svg-title=\"tooltipText\" class=\"b-info-icon__svg\" />\n </span>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import { PopperContainerPosition } from '@/components/popper-container';\n import { BentoTooltipDirective } from '@/directives';\n import InfoIcon from '@adyen/ui-assets-icons-16/vue/info';\n\n /**\n * @example\n * import { BentoInfoIcon } from '@adyen/adl-vue-components';\n *\n * export default {\n * components: { BentoInfoIcon },\n * template: `\n * <bento-info-icon tooltip-text=\"Text on hover\" />\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-info-icon',\n components: { InfoIcon },\n directives: { BentoTooltipDirective },\n inheritAttrs: false,\n props: {\n /**\n * Text showed in the info-icon tooltip on hover\n */\n tooltipText: { type: String, required: true },\n\n /**\n * Position the tooltip should take if space is available. Defaults to 'auto'\n */\n tooltipPosition: {\n type: String as PropType<PopperContainerPosition>,\n default: PopperContainerPosition.AUTO,\n },\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./info-icon.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M8 4C8.29667 4 8.58668 3.91203 8.83335 3.74721C9.08003 3.58238 9.27229 3.34811 9.38582 3.07403C9.49935 2.79994 9.52906 2.49834 9.47118 2.20737C9.4133 1.91639 9.27044 1.64912 9.06066 1.43934C8.85088 1.22956 8.58361 1.0867 8.29264 1.02882C8.00166 0.970945 7.70006 1.00065 7.42597 1.11418C7.15189 1.22771 6.91762 1.41997 6.7528 1.66665C6.58797 1.91332 6.5 2.20333 6.5 2.5C6.5 2.89783 6.65804 3.27936 6.93934 3.56066C7.22064 3.84197 7.60218 4 8 4Z\" clip-rule=\"evenodd\"/><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M8 15C8.29667 15 8.58668 14.912 8.83335 14.7472C9.08003 14.5824 9.27229 14.3481 9.38582 14.074C9.49935 13.7999 9.52906 13.4983 9.47118 13.2074C9.4133 12.9164 9.27044 12.6491 9.06066 12.4393C8.85088 12.2296 8.58361 12.0867 8.29264 12.0288C8.00166 11.9709 7.70006 12.0007 7.42597 12.1142C7.15189 12.2277 6.91762 12.42 6.7528 12.6666C6.58797 12.9133 6.5 13.2033 6.5 13.5C6.5 13.8978 6.65804 14.2794 6.93934 14.5607C7.22064 14.842 7.60218 15 8 15Z\" clip-rule=\"evenodd\"/><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M8.83335 9.24721C8.58668 9.41203 8.29667 9.5 8 9.5C7.60218 9.5 7.22064 9.34197 6.93934 9.06066C6.65804 8.77936 6.5 8.39783 6.5 8C6.5 7.70333 6.58797 7.41332 6.7528 7.16665C6.91762 6.91997 7.15189 6.72771 7.42597 6.61418C7.70006 6.50065 8.00166 6.47094 8.29264 6.52882C8.58361 6.5867 8.85088 6.72956 9.06066 6.93934C9.27044 7.14912 9.4133 7.41639 9.47118 7.70737C9.52906 7.99834 9.49935 8.29994 9.38582 8.57403C9.27229 8.84811 9.08003 9.08238 8.83335 9.24721Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <base-button\n class=\"b-menu-item\"\n role=\"menuitem\"\n :class=\"conditionalClasses\"\n :disabled=\"disabled\"\n tabindex=\"-1\"\n @click=\"onClick\"\n >\n <template v-if=\"icon\" #iconLeft>\n <component :is=\"icon\" class=\"b-menu-item__icon-left\" aria-hidden=\"true\" />\n </template>\n <template #default>\n <bento-typography\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n :stronger=\"isTitle\"\n class=\"b-menu-item__primary-text\"\n >\n {{ text }}\n </bento-typography>\n <bento-typography\n v-if=\"secondaryText\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n class=\"b-menu-item__secondary-text\"\n >\n {{ secondaryText }}\n </bento-typography>\n </template>\n <template v-if=\"chevron\" #iconRight><chevron-right-icon aria-hidden=\"true\" /></template>\n </base-button>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import type { VueNodeElement } from '@/types';\n import ChevronRightIcon from '@adyen/ui-assets-icons-16/vue/chevron-right';\n import { BaseButton, BentoBaseButtonEvent } from '@/components/internal/base-button';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoMenuItem } from './menu-item.types';\n\n /**\n * Menu item component to render items in a menu. For internal use only.\n */\n export default defineComponent({\n name: 'menu-item',\n components: { BaseButton, BentoTypography, ChevronRightIcon },\n props: {\n /**\n * menu-item text that gets displayed as the main label\n */\n text: {\n type: String,\n required: true,\n },\n /**\n * menu-item action that gets executed when the MeniItem is clicked\n */\n handler: {\n type: Function as PropType<BentoMenuItem['handler']>,\n required: true,\n },\n /**\n * menu-item text that gets displayed as the secondary label\n */\n secondaryText: {\n type: String,\n default: null,\n },\n /**\n * Optional chevron icon displayed to the right of the menu-item\n */\n chevron: {\n type: Boolean,\n default: false,\n },\n /**\n * Optional icon displayed to the left of the menu-item\n */\n icon: {\n type: Object as PropType<VueNodeElement>,\n default: null,\n },\n /**\n * Disables menu-item button functionality\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * Displays an indent variant od the menu-item\n */\n indent: {\n type: Boolean,\n default: false,\n },\n /**\n * Displays menu-item button as critical\n */\n critical: {\n type: Boolean,\n default: false,\n },\n /**\n * Renders the text in a bold variant\n */\n isTitle: {\n type: Boolean,\n default: false,\n },\n },\n emits: [BentoBaseButtonEvent.CLICK],\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n 'b-menu-item--critical': props.critical,\n 'b-menu-item--indent': props.indent,\n }));\n\n const onClick = () => {\n props.handler();\n emit(BentoBaseButtonEvent.CLICK);\n };\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n conditionalClasses,\n\n // Methods\n onClick,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./menu-item.scss\" />\n","import { BentoButton } from '../button';\n\nexport enum BentoMenuEvent {\n CLOSE = 'close',\n BACK = 'back',\n}\n\ntype ButtonProps = InstanceType<typeof BentoButton>['$props'];\n\nexport type BentoMenuButtonProps = {\n variant?: ButtonProps['variant'];\n condensed?: ButtonProps['condensed'];\n disabled?: ButtonProps['disabled'];\n};\n","<template>\n <div class=\"b-menu-list-container\"><slot></slot></div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent } from 'vue';\n\n /**\n * Menu list container component to set the correct styling in a menu list. For internal use only.\n */\n export default defineComponent({\n name: 'bento-menu-list-container',\n inheritAttrs: false,\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./menu-list-container.scss\" />\n","<template>\n <transition name=\"b-sub-menu-item-list__transition\" appear>\n <menu-list-container class=\"b-sub-menu-item-list\">\n <ul\n ref=\"subMenuItemListRefLocal\"\n role=\"menu\"\n class=\"b-sub-menu-item-list__list\"\n @keydown.down.stop=\"focusNext\"\n @keydown.up.stop=\"focusPrevious\"\n @keydown.esc.stop=\"onBackButton\"\n >\n <li\n v-for=\"(item, index) in computedItems\"\n :key=\"`sub-menu-item-list-item-${index}`\"\n :class=\"[\n { 'b-sub-menu-item-list__back-button': index === 0 },\n { 'b-sub-menu-item-list__first-item': index == 1 },\n ]\"\n role=\"none\"\n >\n <menu-item\n :text=\"item.text\"\n :handler=\"item.handler\"\n :secondary-text=\"item.secondaryText\"\n :icon=\"item.icon\"\n :is-title=\"item.isTitle\"\n :disabled=\"item.disabled\"\n :critical=\"item.critical\"\n :indent=\"item.indent\"\n :tabindex=\"index === subMenuFocusedIndex ? '0' : '-1'\"\n @click=\"item.clickHandler\"\n />\n </li>\n </ul>\n </menu-list-container>\n </transition>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, PropType, ref } from 'vue';\n import ChevronLeftIcon from '@adyen/ui-assets-icons-16/vue/chevron-left';\n import { BentoMenuItem, MenuItem } from '../menu-item';\n import { BentoMenuEvent } from '../../menu.types';\n import messages from '../../messages.json';\n import MenuListContainer from '../menu-list-container/menu-list-container.vue';\n\n /**\n * SubMenuItemList component to render a submenu with the sliding transition. For internal use only.\n */\n export default defineComponent({\n i18n: { messages },\n name: 'sub-menu-item-list',\n components: { MenuItem, MenuListContainer },\n props: {\n items: {\n type: Array as PropType<BentoMenuItem[]>,\n required: true,\n },\n title: {\n type: String,\n required: true,\n },\n },\n emits: [BentoMenuEvent.CLOSE, BentoMenuEvent.BACK],\n setup(props, { emit }) {\n const subMenuItemListRefLocal = ref(null);\n const subMenuFocusedIndex = ref(0);\n const numberOfItems = ref(props.items.length);\n\n const closeMenu = () => emit(BentoMenuEvent.CLOSE);\n\n const onBackButton = () => emit(BentoMenuEvent.BACK);\n\n const computedItems = computed(() => {\n const items = props.items?.map(el => ({\n ...el,\n indent: !el.icon,\n isTitle: false,\n clickHandler: closeMenu,\n }));\n return [\n {\n text: props.title,\n secondaryText: null,\n critical: false,\n icon: ChevronLeftIcon,\n isTitle: true,\n disabled: false,\n indent: false,\n handler: onBackButton,\n clickHandler: onBackButton,\n },\n ...items,\n ];\n });\n\n const focusItem = async () => {\n subMenuItemListRefLocal.value?.children?.[subMenuFocusedIndex.value]?.children?.[0]?.focus();\n };\n\n onMounted(async () => {\n // Using setTimeout otherwise the sliding animation doesn't work anymore. The timeout imer is the same as the transition time (0.15s)\n setTimeout(() => focusItem(), 150);\n });\n\n const focusPrevious = () => {\n if (subMenuFocusedIndex.value > 0) {\n subMenuFocusedIndex.value -= 1;\n if (computedItems.value[subMenuFocusedIndex.value].disabled) {\n focusPrevious();\n }\n } else {\n subMenuFocusedIndex.value = numberOfItems.value;\n }\n focusItem();\n };\n\n const focusNext = () => {\n if (subMenuFocusedIndex.value < numberOfItems.value) {\n subMenuFocusedIndex.value += 1;\n if (computedItems.value[subMenuFocusedIndex.value].disabled) {\n focusNext();\n }\n } else {\n subMenuFocusedIndex.value = 0;\n }\n focusItem();\n };\n\n return {\n // Enums\n BentoMenuEvent,\n\n // Values\n subMenuItemListRefLocal,\n subMenuFocusedIndex,\n ChevronLeftIcon,\n computedItems,\n\n // Methods\n closeMenu,\n onBackButton,\n focusPrevious,\n focusNext,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./sub-menu-item-list.scss\" />\n","<template>\n <menu-list-container ref=\"menuItemListWrapperRef\" :style=\"{ height: computedHeight }\">\n <ul\n :id=\"id\"\n ref=\"menuItemListRef\"\n class=\"b-menu-item-list\"\n role=\"menu\"\n @keydown.down=\"focusNext\"\n @keydown.up=\"focusPrevious\"\n @keydown.esc=\"closeMenu\"\n @keydown.tab=\"closeMenu\"\n >\n <li\n v-for=\"(item, index) in computedData\"\n :key=\"`menu-item-${index}`\"\n class=\"b-menu-item-list__item\"\n role=\"none\"\n @keydown.right=\"focusRight(item, index)\"\n @keydown.left=\"focusLeft()\"\n >\n <menu-item\n :text=\"item.text\"\n :handler=\"!item.items?.length ? item.handler : () => null\"\n :secondary-text=\"item.secondaryText\"\n :icon=\"item.icon\"\n :chevron=\"!!item.items?.length\"\n :disabled=\"item.disabled\"\n :critical=\"item.critical\"\n :indent=\"item.indent\"\n :tabindex=\"index === subMenuFocusedIndex ? '0' : '-1'\"\n :aria-haspopup=\"!!item.items?.length\"\n :aria-expanded=\"showSubMenu && visibleSubMenuIndex === index\"\n @click=\"toggleMenu(item, index)\"\n />\n <sub-menu-item-list\n v-if=\"item.items?.length && showSubMenu && visibleSubMenuIndex === index\"\n ref=\"subMenuItemListRef\"\n :items=\"item.items\"\n :title=\"item.text\"\n @back=\"onBackButton\"\n @close=\"closeMenu\"\n />\n </li>\n </ul>\n </menu-list-container>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { BentoMenuItem, MenuItem } from '../menu-item';\n import { BentoMenuEvent } from '../../menu.types';\n import MenuListContainer from '../menu-list-container/menu-list-container.vue';\n import SubMenuItemList from '../sub-menu-item-list/sub-menu-item-list.vue';\n\n /**\n * MenuItem list to be used in the Menu component. For internal use only.\n */\n export default defineComponent({\n name: 'menu-item-list',\n components: { MenuItem, MenuListContainer, SubMenuItemList },\n inheritAttrs: false,\n props: {\n /**\n * The data to be displayed in the list\n */\n data: {\n type: Array as PropType<BentoMenuItem[]>,\n required: true,\n },\n /**\n * Displays the menu-items of the list in the indent variant. Only applies to elements that don't have an icon to their left.\n */\n indentItems: {\n type: Boolean,\n default: false,\n },\n /**\n * The id of the list. Required for accessibility reasons.\n */\n id: {\n type: String,\n required: true,\n },\n /**\n * If set to true, focuses the last item on the list instead of the first. Used for accessibility purposes when the menu is opened with the 'up' arrow key.\n */\n focusLastElement: {\n type: Boolean,\n default: false,\n },\n },\n emits: [BentoMenuEvent.CLOSE],\n setup(props, { emit }) {\n const menuItemListRef = ref(null);\n const menuItemListWrapperRef = ref(null);\n const subMenuItemListRef = ref(null);\n const showSubMenu = ref(false);\n const visibleSubMenuIndex = ref(null);\n const focusedIndex = ref(props.focusLastElement ? props.data.length - 1 : 0);\n const subMenuFocusedIndex = ref(0);\n const numberOfItems = ref(props.data.length - 1);\n const hasMenuItemsWithIcon = computed(() => props.data.some(el => el.icon));\n\n const computedData = computed(() => {\n if (props.indentItems || hasMenuItemsWithIcon.value) {\n return props.data.map(el => {\n let indent = false;\n if (!el.icon) {\n indent = true;\n }\n return {\n ...el,\n // eslint-disable-next-line no-param-reassign\n indent,\n };\n });\n }\n return props.data;\n });\n\n const focusItem = () => menuItemListRef.value?.children[focusedIndex.value]?.children[0]?.focus();\n\n const closeMenu = () => emit(BentoMenuEvent.CLOSE);\n\n const toggleMenu = async (item: BentoMenuItem, index: number) => {\n if (item.items) {\n visibleSubMenuIndex.value = index;\n showSubMenu.value = true;\n } else {\n visibleSubMenuIndex.value = index;\n showSubMenu.value = false;\n closeMenu();\n }\n };\n\n const focusPrevious = () => {\n if (focusedIndex.value > 0) {\n focusedIndex.value -= 1;\n if (computedData.value[focusedIndex.value].disabled) {\n focusPrevious();\n }\n } else {\n focusedIndex.value = numberOfItems.value;\n }\n focusItem();\n };\n\n const focusNext = () => {\n if (focusedIndex.value < numberOfItems.value) {\n focusedIndex.value += 1;\n if (computedData.value[focusedIndex.value].disabled) {\n focusNext();\n }\n } else {\n focusedIndex.value = 0;\n }\n focusItem();\n };\n\n const focusRight = (item, index) => {\n if (item?.items?.length) {\n visibleSubMenuIndex.value = index;\n showSubMenu.value = true;\n }\n };\n\n const focusLeft = () => {\n if (visibleSubMenuIndex.value && showSubMenu.value) {\n visibleSubMenuIndex.value = null;\n showSubMenu.value = false;\n }\n };\n\n const onBackButton = () => {\n showSubMenu.value = false;\n visibleSubMenuIndex.value = null;\n // Focus the right element\n focusItem();\n };\n\n const menuHeight = computed(() => menuItemListWrapperRef?.value?.$el.offsetHeight);\n\n const subMenuHeight = computed(() => subMenuItemListRef?.value?.[0]?.$el?.offsetHeight);\n\n const computedHeight = computed(() => {\n if (showSubMenu.value) {\n return `${subMenuHeight.value}px`;\n }\n return `${menuHeight.value}px`;\n });\n\n return {\n // Values\n menuItemListRef,\n menuItemListWrapperRef,\n subMenuItemListRef,\n\n computedData,\n computedHeight,\n\n focusedIndex,\n subMenuFocusedIndex,\n\n showSubMenu,\n visibleSubMenuIndex,\n\n // Methods\n toggleMenu,\n closeMenu,\n focusPrevious,\n focusNext,\n focusRight,\n focusLeft,\n onBackButton,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./menu-item-list.scss\" />\n","<template>\n <div\n v-bento-click-outside-directive=\"closeMenu\"\n class=\"b-menu\"\n @keydown.down=\"onKeyDown\"\n @keydown.up=\"onKeyUp\"\n @keydown.esc=\"closeMenu\"\n >\n <bento-button\n ref=\"menuButtonRef\"\n aria-haspopup=\"true\"\n v-bind=\"button\"\n :aria-expanded=\"showMenu\"\n :aria-controls=\"menuId\"\n @click=\"toggleShowMenu\"\n >\n <template #iconLeft>\n <slot>\n <options-vertical-icon :title=\"$t('menuButton')\" />\n </slot>\n </template>\n </bento-button>\n <bento-popover\n v-if=\"menuButtonRef\"\n :open=\"showMenu\"\n class=\"b-menu__popover\"\n :style=\"computedMenuWidth\"\n :target-element=\"menuButtonRef\"\n :position=\"menuPosition\"\n :fixed-positioning=\"menuFixedPositioning\"\n without-space\n >\n <menu-item-list :id=\"menuId\" :data=\"data\" :focus-last-element=\"isLastElementFocused\" @close=\"closeMenu\" />\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import OptionsVerticalIcon from '@adyen/ui-assets-icons-16/vue/options-vertical';\n import { generateUid } from '@/utils/ts/unique-id';\n import { BentoClickOutsideDirective } from '@/directives';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import { BentoPopover, BentoPopoverPositions } from '@/components/popover';\n import { BentoMenuItem, MenuItemList } from './components';\n import { BentoMenuButtonProps } from './menu.types';\n import messages from './messages.json';\n\n /**\n * Menu component to render a series of buttons. Csan render nested submenus.\n *\n * @example\n * import { BentoMenu } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoMenu },\n * template: `\n * <bento-menu\n * :data=[\n * { text: 'Menu item text', handler: () => { some code here } },\n * { text: 'Another menu item text', handler: () => { some other code here }, critical: true }\n * ]\n * />\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-menu',\n components: { BentoButton, BentoPopover, MenuItemList, OptionsVerticalIcon },\n directives: { BentoClickOutsideDirective },\n inheritAttrs: false,\n props: {\n /**\n * The data to be displayed in the list\n */\n data: {\n type: Array as PropType<BentoMenuItem[]>,\n required: true,\n },\n\n /**\n * The position of where the menu should open.\n * @see BentoPopoverPositions\n */\n menuPosition: {\n type: String as PropType<BentoPopoverPositions>,\n default: BentoPopoverPositions.BOTTOM_START,\n validator: (value: BentoPopoverPositions) => Object.values(BentoPopoverPositions).includes(value),\n },\n\n /**\n * Instructs the menu popover to be visible outside of the containing container.\n * https://popper.js.org/docs/v2/constructors/#strategy\n */\n menuFixedPositioning: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets a custom width for the menu popover.\n */\n menuWidth: {\n type: Number,\n default: null,\n },\n /**\n * Object containing props to change the menu button appearance. Accepts the same props present in BentoButton.\n */\n button: {\n type: Object as PropType<BentoMenuButtonProps>,\n default: () => ({\n variant: BentoButtonVariant.SECONDARY,\n }),\n },\n },\n setup(props) {\n const menuButtonRef = ref(null);\n const showMenu = ref(false);\n const isLastElementFocused = ref(false);\n const menuId = generateUid('menu');\n\n const computedMenuWidth = computed(() => (props.menuWidth ? { width: `${props.menuWidth}px` } : null));\n\n const openMenu = () => {\n showMenu.value = true;\n };\n\n const closeMenu = () => {\n if (showMenu.value) {\n showMenu.value = false;\n menuButtonRef.value.$el.focus();\n }\n };\n\n const toggleShowMenu = (e: MouseEvent) => {\n e.stopPropagation();\n if (!showMenu.value) {\n openMenu();\n } else {\n closeMenu();\n }\n };\n\n const onKeyDown = () => {\n isLastElementFocused.value = false;\n openMenu();\n };\n\n const onKeyUp = () => {\n isLastElementFocused.value = true;\n openMenu();\n };\n\n return {\n // Enums\n BentoButtonVariant,\n BentoPopoverPositions,\n\n // Values\n menuButtonRef,\n menuId,\n showMenu,\n computedMenuWidth,\n isLastElementFocused,\n\n // Methods\n onKeyDown,\n onKeyUp,\n closeMenu,\n toggleShowMenu,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./menu.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11 10.75C11.2841 10.75 11.5438 10.5895 11.6708 10.3354C11.7979 10.0813 11.7705 9.77726 11.6 9.55L8.6 5.55C8.45836 5.36115 8.23607 5.25 8.00001 5.25C7.76394 5.25 7.54165 5.36115 7.40001 5.55L4.4 9.55C4.22956 9.77726 4.20214 10.0813 4.32918 10.3354C4.45623 10.5895 4.71593 10.75 5 10.75L11 10.75Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M5 5.25C4.71593 5.25 4.45623 5.4105 4.32918 5.66459C4.20214 5.91868 4.22956 6.22274 4.4 6.45L7.4 10.45C7.54165 10.6389 7.76394 10.75 8 10.75C8.23607 10.75 8.45836 10.6389 8.6 10.45L11.6 6.45C11.7705 6.22274 11.7979 5.91868 11.6708 5.66459C11.5438 5.4105 11.2841 5.25 11 5.25H5Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M6.46998 2.45129L1.46998 7.45129C1.39987 7.52054 1.3443 7.60309 1.30652 7.6941C1.26874 7.78511 1.24952 7.88275 1.24998 7.98129C1.24529 8.03118 1.24529 8.0814 1.24998 8.13129C1.24544 8.17117 1.24544 8.21142 1.24998 8.25129C1.28579 8.35526 1.34778 8.44825 1.42998 8.52129L6.42998 13.5213C6.57187 13.6672 6.7659 13.7507 6.96938 13.7535C7.17285 13.7563 7.36911 13.6782 7.51498 13.5363C7.66085 13.3944 7.74438 13.2004 7.74719 12.9969C7.75001 12.7934 7.67187 12.5972 7.52998 12.4513L3.80998 8.73129H14C14.1989 8.73129 14.3897 8.65228 14.5303 8.51162C14.671 8.37097 14.75 8.18021 14.75 7.98129C14.75 7.78238 14.671 7.59162 14.5303 7.45096C14.3897 7.31031 14.1989 7.23129 14 7.23129L3.80998 7.23129L7.52998 3.51129C7.66246 3.36912 7.73459 3.18107 7.73116 2.98677C7.72773 2.79247 7.64902 2.60709 7.51161 2.46967C7.37419 2.33226 7.18881 2.25355 6.99451 2.25012C6.8002 2.24669 6.61216 2.31881 6.46998 2.45129Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M9.53 13.55L14.53 8.55C14.6 8.48 14.66 8.4 14.69 8.31C14.72 8.22 14.75 8.12 14.75 8.02C14.75 8.02 14.75 7.92 14.75 7.87C14.75 7.83 14.75 7.79 14.75 7.75C14.71 7.65 14.65 7.55 14.57 7.48L9.57 2.48C9.43 2.34 9.23 2.25 9.03 2.25C8.83 2.25 8.63 2.33 8.48 2.47C8.33 2.61 8.25 2.81 8.25 3.01C8.25 3.21 8.33 3.41 8.47 3.56L12.19 7.28H2C1.8 7.28 1.61 7.36 1.47 7.5C1.33 7.64 1.25 7.83 1.25 8.03C1.25 8.23 1.33 8.42 1.47 8.56C1.61 8.7 1.8 8.78 2 8.78H12.19L8.47 12.5C8.34 12.64 8.27 12.83 8.27 13.02C8.27 13.21 8.35 13.4 8.49 13.54C8.63 13.68 8.81 13.76 9.01 13.76C9.2 13.76 9.39 13.69 9.53 13.56V13.55Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M7.03033 0.96967C6.73744 0.676777 6.26256 0.676777 5.96967 0.96967C5.67678 1.26256 5.67678 1.73744 5.96967 2.03033L7.25 3.31066V5.06654L5.83093 5.88398L4.3138 5.00601L3.8442 3.25567C3.73686 2.8556 3.32553 2.6183 2.92547 2.72563C2.5254 2.83297 2.2881 3.2443 2.39543 3.64436L2.75109 4.96998L1.42547 5.32563C1.0254 5.43297 0.788098 5.8443 0.895433 6.24436C1.00277 6.64443 1.4141 6.88173 1.81416 6.7744L3.56372 6.305L5.08008 7.18253V8.81748L3.56369 9.69502L1.81416 9.22563C1.4141 9.1183 1.00277 9.3556 0.895433 9.75567C0.788098 10.1557 1.0254 10.5671 1.42547 10.6744L2.75109 11.0301L2.39543 12.3557C2.2881 12.7557 2.5254 13.1671 2.92547 13.2744C3.32553 13.3817 3.73686 13.1444 3.8442 12.7444L4.31381 10.994L5.83093 10.116L7.25 10.9335V12.6893L5.96967 13.9697C5.67678 14.2626 5.67678 14.7374 5.96967 15.0303C6.26256 15.3232 6.73744 15.3232 7.03033 15.0303L8 14.0607L8.96967 15.0303C9.26256 15.3232 9.73744 15.3232 10.0303 15.0303C10.3232 14.7374 10.3232 14.2626 10.0303 13.9697L8.75 12.6893V10.9336L10.1692 10.116L11.6857 10.9936L12.1554 12.7444C12.2627 13.1444 12.6741 13.3817 13.0741 13.2744C13.4742 13.1671 13.7115 12.7557 13.6042 12.3557L13.4374 11.7342C13.4337 11.7143 13.4292 11.6943 13.4238 11.6745L13.2497 11.0297L14.5741 10.6744C14.9742 10.5671 15.2115 10.1557 15.1042 9.75567C14.9968 9.3556 14.5855 9.1183 14.1854 9.22563L13.564 9.39237C13.5441 9.39606 13.5241 9.40058 13.5042 9.40595L12.4356 9.69456L10.9201 8.81752V7.18249L12.4363 6.30504L14.1857 6.7744C14.5858 6.88173 14.9971 6.64443 15.1045 6.24436C15.2118 5.8443 14.9745 5.43297 14.5744 5.32563L13.2488 4.96998L13.6045 3.64436C13.7118 3.2443 13.4745 2.83297 13.0744 2.72563C12.6744 2.6183 12.263 2.8556 12.1557 3.25567L11.6861 5.00615L10.1692 5.88396L8.75 5.06645V3.31066L10.0303 2.03033C10.3232 1.73744 10.3232 1.26256 10.0303 0.96967C9.73744 0.676777 9.26256 0.676777 8.96967 0.96967L8 1.93934L7.03033 0.96967ZM6.58008 8.81649V7.18351L8.00008 6.36553L9.42008 7.18351V8.81649L8.00008 9.63447L6.58008 8.81649Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M1.85822 8.00063C2.23115 8.61494 2.6599 9.19394 3.1392 9.73021C3.41522 10.0391 3.38862 10.5132 3.07978 10.7892C2.77094 11.0652 2.29681 11.0386 2.02078 10.7298C1.37391 10.006 0.808653 9.21323 0.335231 8.36577C0.209001 8.13981 0.2082 7.86474 0.333112 7.63805C0.481818 7.36817 1.22715 6.04687 2.49452 4.78481C3.75589 3.52873 5.61815 2.25 7.98999 2.25H7.99122C8.59964 2.251 9.20512 2.33426 9.79122 2.4975C10.1903 2.60864 10.4236 3.02221 10.3125 3.42123C10.2014 3.82026 9.78778 4.05364 9.38876 3.9425C8.9331 3.81559 8.46237 3.75083 7.98937 3.75C6.18148 3.75022 4.67897 4.7264 3.55296 5.84769C2.73159 6.66562 2.15512 7.51757 1.85822 8.00063Z\" clip-rule=\"evenodd\"/><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M12.9002 5.21082C13.209 4.9348 13.6832 4.9614 13.9592 5.27024C14.6061 5.99402 15.1713 6.7868 15.6448 7.63425C15.771 7.86021 15.7718 8.13529 15.6469 8.36198C15.4982 8.63186 14.7528 9.95316 13.4855 11.2152C12.2241 12.4713 10.3618 13.75 7.98999 13.75L7.98876 13.75C7.38034 13.749 6.77486 13.6658 6.18876 13.5025C5.78973 13.3914 5.55635 12.9778 5.66749 12.5788C5.77863 12.1798 6.1922 11.9464 6.59123 12.0575C7.0469 12.1844 7.51763 12.2492 7.99064 12.25C9.79852 12.2498 11.301 11.2736 12.427 10.1523C13.2484 9.3344 13.8249 8.48246 14.1218 7.99939C13.7488 7.38508 13.3201 6.80609 12.8408 6.26982C12.5648 5.96097 12.5914 5.48685 12.9002 5.21082Z\" clip-rule=\"evenodd\"/><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M13.5203 3.53033C13.8132 3.23744 13.8132 2.76256 13.5203 2.46967C13.2274 2.17678 12.7526 2.17678 12.4597 2.46967L2.45966 12.4697C2.16677 12.7626 2.16677 13.2374 2.45966 13.5303C2.75255 13.8232 3.22743 13.8232 3.52032 13.5303L13.5203 3.53033Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M5.2525 8C5.2525 6.48 6.4825 5.25 8.0025 5.25C9.5225 5.25 10.7525 6.48 10.7525 8C10.7525 9.52 9.5225 10.75 8.0025 10.75C6.4825 10.75 5.2525 9.52 5.2525 8ZM6.7525 8C6.7525 8.69 7.3125 9.25 8.0025 9.25C8.6925 9.25 9.2525 8.69 9.2525 8C9.2525 7.31 8.6925 6.75 8.0025 6.75C7.3125 6.75 6.7525 7.31 6.7525 8Z\" clip-rule=\"evenodd\"/><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M8.0025 2.25C12.8125 2.25 15.5625 7.43 15.6725 7.65C15.7825 7.87 15.7825 8.12 15.6725 8.34C15.6711 8.34265 15.6692 8.34603 15.667 8.35011C15.4859 8.6842 12.7446 13.74 8.0025 13.74C3.2025 13.74 0.4425 8.56 0.3325 8.34C0.2225 8.13 0.2225 7.87 0.3325 7.65C0.334097 7.64707 0.336157 7.64327 0.33868 7.63861C0.525781 7.29307 3.2565 2.25 8.0025 2.25ZM1.8725 8C2.5325 9.07 4.7525 12.25 8.0025 12.25C11.2425 12.25 13.4725 9.07 14.1325 8C13.4725 6.93 11.2425 3.75 8.0025 3.75C4.7625 3.75 2.5325 6.93 1.8725 8Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div class=\"b-data-grid-columns\" :class=\"conditionalColumnsClasses\" data-testid=\"data-grid-columns\">\n <div\n v-for=\"(column, index) in columns\"\n :key=\"column.field\"\n :ref=\"column.field\"\n :aria-colindex=\"index + 1\"\n :aria-label=\"column.label\"\n :class=\"conditionalColumnClasses(column)\"\n :data-testid=\"`${column.field}-column-header`\"\n :draggable=\"hasDraggableColumns && !isResizing\"\n class=\"b-data-grid-columns__column\"\n role=\"columnheader\"\n :style=\"{ width: `${column.width}px` }\"\n v-on=\"draggingEventsForColumn(column)\"\n @click=\"sortByColumnField(column.field)\"\n >\n <template v-if=\"column.field !== DATAGRID_SELECT_FIELD_NAME\">\n <bento-typography :el=\"BentoTypographyElement.DIV\" strongest class=\"b-data-grid-columns__column-header\">\n <slot :column=\"column\" :name=\"`head-${column.field}`\">\n <span>{{ column.label }}</span>\n <bento-info-icon v-if=\"column.infoIconTooltip\" :tooltip-text=\"column.infoIconTooltip\" />\n </slot>\n </bento-typography>\n <div v-if=\"column.sortable || hasColumnPanel\" class=\"b-data-grid-columns__column-actions\">\n <div v-if=\"column.sortable\" class=\"b-data-grid-columns__column-sort\">\n <triangle-up\n class=\"b-data-grid-columns__column-sort-icon\"\n :class=\"conditionalSortDirectionClasses(column.field, BentoDatagridSortDirection.ASCENDING)\"\n :svg-title=\"`${column.field} sort ascending`\"\n :data-testid=\"`${column.field}-sort-icon-asc`\"\n />\n <triangle-down\n class=\"b-data-grid-columns__column-sort-icon\"\n :class=\"\n conditionalSortDirectionClasses(column.field, BentoDatagridSortDirection.DESCENDING)\n \"\n :svg-title=\"`${column.field}sort descending`\"\n :data-testid=\"`${column.field}-sort-icon-desc`\"\n />\n </div>\n <bento-menu\n v-if=\"hasColumnPanel\"\n class=\"b-data-grid-columns__menu\"\n :data=\"contextualMenuData(column)\"\n :menu-position=\"\n hasFirstColumnPanelRightAligned && index === 0\n ? BentoPopoverPositions.BOTTOM_START\n : BentoPopoverPositions.BOTTOM_END\n \"\n :menu-fixed-positioning=\"true\"\n :button=\"{ variant: BentoButtonVariant.TERTIARY }\"\n />\n </div>\n <div\n :data-testid=\"`data-grid-column-${column.field}`\"\n class=\"b-data-grid-columns__column-separator-container\"\n :class=\"conditionalColumnSeparatorClasses\"\n role=\"presentation\"\n @mousedown=\"startResize(hasResizableColumns, column.field, $event)\"\n @click.stop\n >\n <div\n v-if=\"!isFrozenColumns || (isFrozenColumns && index !== columns.length - 1)\"\n class=\"b-data-grid-columns__column-separator\"\n ></div>\n </div>\n </template>\n <template v-else>\n <bento-checkbox\n v-model=\"allItemsSelectedCheckboxState.allItemsSelected\"\n data-testid=\"checkbox-select-all\"\n :indeterminate=\"allItemsSelectedCheckboxState.isIndeterminate\"\n value=\"data-grid-select-all\"\n @input=\"onAllRowSelect\"\n />\n </template>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRefs } from 'vue';\n import { BentoCheckbox } from '@/components/checkbox';\n import {\n BentoColumn,\n BentoDatagridAllItemsSelectedState,\n BentoDatagridSortByColumn,\n BentoDatagridSortDirection,\n } from '../../data-grid.types';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { DATAGRID_SELECT_FIELD_NAME, useResizer, useSorter } from '../../composables';\n import { BentoInfoIcon } from '@/components/info-icon';\n import { BentoDatagridDraggingColumnState, DatagridColumnsEvent } from './data-grid-columns-types';\n import { BentoMenu } from '@/components/menu';\n import { useI18n } from '@/utils/ts/i18n';\n import type { BentoMenuItem } from '@/components/menu/components';\n import { BentoPopoverPositions } from '@/components/popover';\n import { BentoButtonVariant } from '@/components/button';\n import TriangleUp from '@adyen/ui-assets-icons-16/vue/triangle-up';\n import TriangleDown from '@adyen/ui-assets-icons-16/vue/triangle-down';\n import ArrowLeftIcon from '@adyen/ui-assets-icons-16/vue/arrow-left';\n import ArrowRightIcon from '@adyen/ui-assets-icons-16/vue/arrow-right';\n import FreezeIcon from '@adyen/ui-assets-icons-16/vue/freeze';\n import HideIcon from '@adyen/ui-assets-icons-16/vue/hide';\n import ShowIcon from '@adyen/ui-assets-icons-16/vue/show';\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'data-grid-columns',\n components: {\n BentoCheckbox,\n BentoInfoIcon,\n BentoTypography,\n BentoMenu,\n TriangleUp,\n TriangleDown,\n },\n inheritAttrs: false,\n props: {\n /**\n * Column definitions using 'key' to relate to data object.\n */\n columns: {\n type: Array as PropType<BentoColumn[]>,\n required: true,\n },\n\n /**\n * Columns being dragged, contains dragging column and a target column\n */\n draggingColumns: {\n type: Object as PropType<BentoDatagridDraggingColumnState>,\n default: undefined,\n },\n\n /**\n * Toggle the columns draggable events.\n */\n hasDraggableColumns: {\n type: Boolean,\n default: true,\n },\n\n /**\n * If resize is enabled\n */\n hasResizableColumns: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Signifies if the column panel is enabled.\n */\n hasColumnPanel: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If set to true, aligns the first column panel to the right of its button.\n */\n hasFirstColumnPanelRightAligned: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If these columns are frozen (pinned) columns\n */\n isFrozenColumns: {\n type: Boolean,\n default: false,\n },\n /**\n * The column all items selected state\n */\n allItemsSelectedState: {\n type: Object as PropType<BentoDatagridAllItemsSelectedState>,\n default: undefined,\n },\n\n /**\n * Sortby handles proper rendering of sort icon in header. Sorting currently is only supported server side.\n * It does make sure the currently sorted column has a more visible sort icon, and the sort icon points in the right direction.\n */\n sortBy: {\n type: Array as PropType<BentoDatagridSortByColumn[]>, // NOTE: is an array to allow multi-sorting in the future\n default: () => [],\n },\n },\n emits: [\n DatagridColumnsEvent.COLUMN_RESIZE,\n DatagridColumnsEvent.SORT,\n DatagridColumnsEvent.SELECT_ALL_ROWS,\n DatagridColumnsEvent.COLUMN_DRAG_START,\n DatagridColumnsEvent.COLUMN_DRAG_ENTER,\n DatagridColumnsEvent.COLUMN_DROP,\n DatagridColumnsEvent.COLUMN_DRAG_END,\n DatagridColumnsEvent.COLUMN_MOVE,\n DatagridColumnsEvent.COLUMN_UPDATE,\n ],\n setup(props, { emit }) {\n const { t } = useI18n({ messages });\n const { columns, sortBy } = toRefs(props);\n\n // Selecting\n const allItemsSelectedCheckboxState = ref(props.allItemsSelectedState);\n const onAllRowSelect = (areAllItemsSelected: boolean) =>\n emit(DatagridColumnsEvent.SELECT_ALL_ROWS, areAllItemsSelected);\n // Resizing\n const { startResize, isResizing } = useResizer(columns, emit);\n\n // Sorting\n const { conditionalSortDirectionClasses, sortByColumnField } = useSorter(sortBy, columns, emit);\n\n // Dragging emit events\n const draggingEventsForColumn = computed(() => (column: BentoColumn) => {\n if (!props.hasDraggableColumns) return {};\n return {\n dragstart: (e: DragEvent & Event) => {\n emit(DatagridColumnsEvent.COLUMN_DRAG_START, column, e);\n },\n dragover: (e: DragEvent) => e.preventDefault(),\n dragenter: (e: DragEvent) => {\n e.preventDefault();\n emit(DatagridColumnsEvent.COLUMN_DRAG_ENTER, column);\n },\n drop: () => {\n emit(DatagridColumnsEvent.COLUMN_DROP, column);\n },\n dragend: () => {\n emit(DatagridColumnsEvent.COLUMN_DRAG_END);\n },\n };\n });\n\n // Contextual menu (moving, visiblity and freezing)\n const contextualMenuData = computed<(col: BentoColumn) => BentoMenuItem[]>(() => (column: BentoColumn) => [\n {\n text: t('moveColumnLeft') as string,\n handler: () => emit(DatagridColumnsEvent.COLUMN_MOVE, column, -1),\n icon: ArrowLeftIcon,\n disabled: props.columns[0].field === column.field,\n },\n {\n text: t('moveColumnRight') as string,\n handler: () => emit(DatagridColumnsEvent.COLUMN_MOVE, column, 1),\n icon: ArrowRightIcon,\n disabled: props.columns[props.columns.length - 1].field === column.field,\n },\n {\n text: (column?.frozen ? t('unfreezeColumn') : t('freezeColumn')) as string,\n handler: () => emit(DatagridColumnsEvent.COLUMN_UPDATE, { ...column, frozen: !column?.frozen }),\n icon: FreezeIcon,\n },\n {\n text: (column?.visible !== false ? t('hideColumn') : t('showColumn')) as string,\n handler: () =>\n emit(DatagridColumnsEvent.COLUMN_UPDATE, { ...column, visible: !(column?.visible !== false) }),\n icon: column?.visible !== false ? HideIcon : ShowIcon,\n disabled: column?.mandatory,\n },\n ]);\n\n // Conditional column styles\n // Conditional styles\n const conditionalColumnsClasses = computed(() =>\n columns.value[0]?.frozen\n ? { 'b-data-grid-columns--frozen': true }\n : {\n 'b-data-grid-columns--unfrozen': true,\n 'b-data-grid-columns--config-settings-margin': props.hasColumnPanel,\n }\n );\n\n const conditionalColumnClasses = (column: BentoColumn) => ({\n 'b-data-grid-columns__column--sortable': column.sortable,\n 'b-data-grid-columns__column--padding-left-unset': column?.padding?.left === false,\n 'b-data-grid-columns__column--padding-right-unset': column?.padding?.right === false,\n 'b-data-grid-columns__column--numeric': column?.numeric,\n 'b-data-grid-columns__column--frozen': column?.frozen,\n 'b-data-grid-columns__column--is-re-ordering': column?.field === props.draggingColumns?.dragging?.field,\n 'b-data-grid-columns__column--is-re-ordering-target':\n column?.field === props.draggingColumns?.target?.field,\n });\n\n const conditionalColumnSeparatorClasses = computed(() => ({\n 'b-data-grid-columns__column-separator-container--is-resizeable': props.hasResizableColumns,\n }));\n\n return {\n // Values\n DATAGRID_SELECT_FIELD_NAME,\n\n // Styles and classes\n conditionalColumnClasses,\n conditionalColumnSeparatorClasses,\n conditionalColumnsClasses,\n\n // Selecting\n allItemsSelectedCheckboxState,\n onAllRowSelect,\n\n // Sorting\n conditionalSortDirectionClasses,\n sortByColumnField,\n\n // Resizing\n startResize,\n isResizing,\n\n // Dragging\n draggingEventsForColumn,\n\n // Contextual menu\n contextualMenuData,\n\n // Enums\n BentoButtonVariant,\n BentoDatagridSortDirection,\n BentoTypographyElement,\n BentoPopoverPositions,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped>\n @import 'data-grid-columns';\n</style>\n","export enum BentoTogglePropClass {\n LABEL_FIRST = 'label-first',\n}\n","<template>\n <label class=\"b-toggle\" :class=\"conditionalClasses\" data-testid=\"label\">\n <input\n ref=\"toggleInput\"\n :checked=\"value\"\n :value=\"value\"\n :aria-label=\"computedAriaLabel\"\n :aria-describedby=\"computedDescription\"\n :disabled=\"disabled\"\n role=\"switch\"\n class=\"b-toggle__input\"\n type=\"checkbox\"\n @change=\"$event => onChange($event)\"\n />\n <span class=\"b-toggle__track\" aria-hidden=\"true\">\n <span class=\"b-toggle__handle\"></span>\n <checkmark-small\n v-if=\"disabled && isChecked()\"\n class=\"b-toggle__icon-disabled b-toggle__icon-disabled--toggled\"\n />\n <cross-small\n v-if=\"disabled && !isChecked()\"\n class=\"b-toggle__icon-disabled b-toggle__icon-disabled--not-toggled\"\n />\n </span>\n <span v-if=\"defaultSlotValue\" class=\"b-toggle__label-container\">\n <bento-typography\n v-if=\"defaultSlotValue\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n data-testid=\"inner-label\"\n >\n <slot></slot>\n </bento-typography>\n <bento-typography\n v-if=\"defaultSlotValue && descriptionSlotValue\"\n :id=\"descriptionId\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n class=\"b-toggle__description\"\n >\n <slot name=\"subLabel\" />\n <slot name=\"description\" />\n </bento-typography>\n </span>\n </label>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRefs } from 'vue';\n import CrossSmall from '@adyen/ui-assets-icons-16/vue/cross-small';\n import CheckmarkSmall from '@adyen/ui-assets-icons-16/vue/checkmark-small';\n import { BentoTogglePropClass } from './toggle.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { AdlLabelPosition } from '@/types';\n import { generateUid } from '@/utils/ts/unique-id';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { useDefaultSlotValidator } from '@/composables';\n import { hasSlot } from '@/utils/ts/hasSlot';\n\n /**\n * A wrapper around the bento toggle, providing checkbox functionality with a knob-like toggle\n *\n * @usage\n * import { BentoToggle, BentoLabelPosition } from '@adyen/adl-vue2';\n *\n * export default {\n * components: { BentoToggle },\n * template: `\n * <bento-toggle\n * :value=\"toggleValue\"`\n * label-position=\"LabelPosition.BEFORE\"\n * @input=\"optionalHandler($event)\"\n * >\n * Label Text\n * </bento-toggle>\n * `,\n * }\n */\n export default defineComponent({\n name: 'bento-toggle',\n components: { BentoTypography, CrossSmall, CheckmarkSmall },\n inheritAttrs: false,\n props: {\n /**\n * Disable the toggle (optional)\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * Position of the label relative to the toggle (optional)\n * @values before, after\n */\n labelPosition: {\n type: String as PropType<AdlLabelPosition>,\n default: AdlLabelPosition.BEFORE,\n validator: (value: AdlLabelPosition) => Object.values(AdlLabelPosition).includes(value),\n },\n /**\n * Indicates if the switch is \"on\" or \"off\"\n */\n value: {\n type: Boolean,\n default: false,\n },\n /**\n * Accessible name for the toggle. It is strongly recommended to pass such value when the toggle is used without a label\n */\n ariaLabel: {\n type: String,\n default: undefined,\n },\n },\n emits: ['input'],\n setup(props, { slots, emit }) {\n const { ariaLabel } = toRefs(props);\n\n const toggleInput = ref();\n const descriptionId: string = generateUid('toggle-description');\n\n const defaultSlotValue = hasSlot(slots)('default');\n const descriptionSlotValue = hasSlot(slots)('description');\n\n useDefaultSlotValidator('bento-toggle', defaultSlotValue, descriptionSlotValue);\n\n const labelSlot = computed((): string => (slots.default ? slots.default()[0]?.text : null));\n\n const computedAriaLabel = useAriaLabel({\n ariaLabel,\n label: labelSlot,\n defaultFallback: 'toggle',\n });\n\n const computedDescription = computed((): string | null => descriptionId ?? null);\n\n const conditionalClasses = computed((): { [key: string]: boolean } => ({\n [`b-toggle--${BentoTogglePropClass.LABEL_FIRST}`]: props.labelPosition === AdlLabelPosition.BEFORE,\n 'b-toggle--disabled': props.disabled,\n }));\n\n const isChecked = (): boolean => toggleInput?.value?.checked;\n\n const onChange = (event: Event) => {\n emit('input', (event.target as HTMLInputElement).checked);\n };\n\n return {\n // Refs\n toggleInput,\n\n // Types\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n computedAriaLabel,\n computedDescription,\n defaultSlotValue,\n descriptionSlotValue,\n conditionalClasses,\n descriptionId,\n\n // Methods\n isChecked,\n\n // Events\n onChange,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./toggle.scss\" />\n","/**\n * All the emit events provided by the DatagridConfigSettings component\n */\nexport enum DatagridConfigSettingsEvent {\n CONFIG_SETTINGS = 'config-settings',\n UPDATE_COLUMNS = 'update:columns',\n}\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><g :clip-path=\"'url(#uia-icons-16-settings__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M8.75 1C8.75 0.585786 8.41421 0.25 8 0.25C7.58579 0.25 7.25 0.585786 7.25 1V1.2979C6.57635 1.37321 5.91783 1.54959 5.29672 1.82106L5.15026 1.56623C4.94387 1.2071 4.48542 1.08329 4.12629 1.28969C3.76716 1.49608 3.64335 1.95453 3.84974 2.31366L3.99751 2.57078C3.45281 2.97189 2.97145 3.45265 2.56967 3.99684L2.31372 3.84974C1.95459 3.64335 1.49614 3.76716 1.28975 4.12629C1.08335 4.48542 1.20717 4.94387 1.56629 5.15026L1.81832 5.29511C1.54577 5.91658 1.36849 6.57567 1.29247 7.25H1C0.585786 7.25 0.25 7.58579 0.25 8C0.25 8.41421 0.585786 8.75 1 8.75H1.29249C1.36851 9.42433 1.54581 10.0834 1.81837 10.7049L1.56629 10.8497C1.20717 11.0561 1.08335 11.5146 1.28975 11.8737C1.49614 12.2328 1.95459 12.3567 2.31372 12.1503L2.56974 12.0031C2.97151 12.5473 3.45284 13.028 3.99752 13.4291L3.84974 13.6862C3.64335 14.0454 3.76716 14.5038 4.12629 14.7102C4.48542 14.9166 4.94387 14.7928 5.15027 14.4337L5.29669 14.1789C5.91781 14.4504 6.57634 14.6267 7.25 14.7021V15C7.25 15.4142 7.58579 15.75 8 15.75C8.41421 15.75 8.75 15.4142 8.75 15V14.7021C9.42366 14.6267 10.0822 14.4504 10.7033 14.1789L10.8497 14.4337C11.0561 14.7928 11.5146 14.9166 11.8737 14.7102C12.2328 14.5038 12.3567 14.0454 12.1503 13.6862L12.0025 13.4291C12.5472 13.028 13.0285 12.5473 13.4303 12.0031L13.6863 12.1503C14.0454 12.3567 14.5039 12.2328 14.7103 11.8737C14.9167 11.5146 14.7928 11.0561 14.4337 10.8497L14.1817 10.7049C14.4542 10.0834 14.6315 9.42433 14.7075 8.75H15C15.4142 8.75 15.75 8.41421 15.75 8C15.75 7.58579 15.4142 7.25 15 7.25H14.7075C14.6315 6.57567 14.4542 5.91659 14.1817 5.29512L14.4337 5.15027C14.7928 4.94387 14.9167 4.48542 14.7103 4.12629C14.5039 3.76716 14.0454 3.64335 13.6863 3.84974L13.4303 3.99685C13.0285 3.45266 12.5472 2.9719 12.0025 2.57079L12.1503 2.31366C12.3567 1.95453 12.2328 1.49608 11.8737 1.28969C11.5146 1.08329 11.0561 1.2071 10.8497 1.56623L10.7033 1.82106C10.0822 1.54959 9.42365 1.37321 8.75 1.2979V1ZM3.46027 10.6263C3.46894 10.6414 3.47703 10.6567 3.48455 10.6721C3.81553 11.2301 4.24603 11.7202 4.75273 12.119L6.02977 9.90977C5.87643 9.75181 5.74113 9.57619 5.62698 9.38602L5.62041 9.37508C5.5299 9.2183 5.45553 9.0535 5.39784 8.88345C5.36087 8.77446 5.33077 8.66327 5.30773 8.55053C5.27085 8.37007 5.25205 8.18563 5.25205 7.99994C5.25205 7.51721 5.37912 7.04299 5.62048 6.62494L5.62686 6.61388C5.74103 6.4237 5.87643 6.24812 6.02979 6.09014L4.75273 3.88083C4.24621 4.27955 3.81584 4.76943 3.4849 5.32721C3.47729 5.34287 3.46908 5.35839 3.46027 5.37372C3.45059 5.39055 3.44036 5.40687 3.42962 5.42266C2.98528 6.20874 2.75106 7.09641 2.75 7.99994C2.75106 8.90376 2.98543 9.79172 3.43005 10.578C3.44064 10.5936 3.45072 10.6097 3.46027 10.6263ZM9.22412 7.75044C9.24103 7.83222 9.24976 7.9158 9.25 7.99998C9.24939 8.21721 9.19217 8.4305 9.08403 8.61885C8.96887 8.80892 8.80952 8.96837 8.61952 9.08363C8.43083 9.1913 8.21731 9.24795 8 9.24795C7.78331 9.24795 7.57039 9.19162 7.3821 9.08455C7.19161 8.96935 7.03182 8.80977 6.91637 8.61945C6.876 8.5487 6.84279 8.47445 6.81706 8.39782C6.80127 8.35077 6.78829 8.30283 6.77819 8.25425C6.76089 8.17096 6.75208 8.08579 6.75208 8.00002C6.75208 7.78271 6.80873 7.56919 6.91639 7.38051C7.03152 7.19073 7.19073 7.03152 7.38051 6.91639C7.56919 6.80873 7.78271 6.75208 8.00002 6.75208C8.21734 6.75208 8.43085 6.80873 8.61954 6.91639C8.80954 7.03165 8.96889 7.1911 9.08405 7.38117C9.12468 7.45192 9.15811 7.52619 9.18406 7.60287C9.20042 7.6512 9.21379 7.70048 9.22412 7.75044ZM10.6447 7.24995H13.1953C13.102 6.60939 12.8908 5.98951 12.5703 5.4225C12.5596 5.40676 12.5494 5.39049 12.5397 5.37372C12.531 5.35844 12.5228 5.34299 12.5152 5.32739C12.0559 4.55324 11.4051 3.90987 10.625 3.45947C9.8269 2.99869 8.92157 2.7561 8 2.7561C7.33041 2.7561 6.66938 2.88417 6.05183 3.13095L7.32631 5.3358C7.54562 5.28038 7.77186 5.252 8 5.252C8.48273 5.252 8.95695 5.37907 9.375 5.62043L9.38606 5.62681C9.79104 5.86991 10.1299 6.20898 10.373 6.61395L10.3788 6.62358C10.4505 6.74721 10.5122 6.87582 10.5635 7.00811C10.5944 7.08748 10.6214 7.16818 10.6447 7.24995ZM6.05183 12.869L7.3263 10.6642C7.54562 10.7196 7.77187 10.748 8.00002 10.748C8.48275 10.748 8.95697 10.6209 9.37502 10.3795L9.38602 10.3731C9.791 10.13 10.13 9.791 10.3731 9.38602L10.3788 9.37636C10.4935 9.17854 10.5826 8.96807 10.6448 8.75H13.1953C13.102 9.3907 12.8907 10.0107 12.5701 10.5778C12.5594 10.5935 12.5493 10.6096 12.5397 10.6263C12.531 10.6415 12.5229 10.6568 12.5154 10.6723C12.0574 11.4444 11.4089 12.0864 10.6317 12.5366L10.6263 12.5397L10.6183 12.5443C9.82186 13.0026 8.919 13.2438 8 13.2438C7.33041 13.2438 6.66938 13.1158 6.05183 12.869Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-settings__a' + uuid\"><rect width=\"16\" height=\"16\" fill=\"#fff\"/></clipPath></defs></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div class=\"b-data-grid-config-settings-column-row\" @mouseover=\"showFreezeIcon\" @mouseleave=\"hideFreezeIcon\">\n <bento-toggle\n :aria-label=\"$t('toggleColumnVisibility', { label: column.label })\"\n :disabled=\"isColumnVisibilityToggleDisabled\"\n :label-position=\"AdlLabelPosition.AFTER\"\n :value=\"isColumnVisible\"\n @input=\"toggleColumnVisibility\"\n >\n {{ column.label }}\n </bento-toggle>\n <bento-freeze-icon\n v-show=\"isColumnFrozen || isFreezeIconOptionShown\"\n :aria-label=\"$t('toggleColumnFreeze', { label: column.label })\"\n class=\"b-data-grid-config-settings-column-row__freeze-icon\"\n :class=\"freezeIconConditionalClasses\"\n @click.native=\"toggleColumnFreeze\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoToggle } from '@/components/toggle';\n import { AdlLabelPosition } from '@/types';\n import { BentoColumn } from '@/components/data-grid';\n import BentoFreezeIcon from '@adyen/ui-assets-icons-16/vue/freeze';\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-data-grid',\n components: {\n BentoFreezeIcon,\n BentoToggle,\n },\n inheritAttrs: false,\n props: {\n /**\n * Is column visibitlity toggle disabled\n */\n isColumnVisibilityToggleDisabled: {\n type: Boolean,\n required: true,\n },\n /**\n * Column definition\n */\n column: {\n type: Object as PropType<BentoColumn>,\n required: true,\n },\n },\n emits: ['visible-column', 'updated-column'],\n setup(props, { emit }) {\n const isFreezeIconOptionShown = ref(false);\n const isColumnFrozen = computed(() => props.column?.frozen);\n const isColumnVisible = computed(() => props.column?.visible !== false);\n\n const toggleColumnVisibility = () => {\n emit('visible-column', { ...props.column, visible: !isColumnVisible.value });\n };\n\n const toggleColumnFreeze = () => {\n emit('updated-column', { ...props.column, frozen: !isColumnFrozen.value });\n };\n\n const showFreezeIcon = () => {\n if (!isColumnFrozen.value) {\n isFreezeIconOptionShown.value = true;\n }\n };\n\n const hideFreezeIcon = () => {\n if (!isColumnFrozen.value) {\n isFreezeIconOptionShown.value = false;\n }\n };\n\n const freezeIconConditionalClasses = computed(() => ({\n [`b-data-grid-config-settings-column-row__freeze-icon--frozen`]: isColumnFrozen.value,\n }));\n\n return {\n // Values\n isFreezeIconOptionShown,\n isColumnFrozen,\n freezeIconConditionalClasses,\n isColumnVisible,\n\n // Methods\n toggleColumnVisibility,\n showFreezeIcon,\n hideFreezeIcon,\n toggleColumnFreeze,\n\n // Enum\n AdlLabelPosition,\n BentoTypographyElement,\n BentoTypographyVariant,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./data-grid-config-settings-column-row.scss\" />\n","<!-- TODO: Remove aria props from search-bar as these name clashes with JSX type /vue/types/jsx.d.ts -->\n<!-- eslint-disable vue/attribute-hyphenation -->\n<template>\n <div v-bento-click-outside-directive=\"onClickOutside\" class=\"b-data-grid-config-settings\">\n <div class=\"b-data-grid-config-settings__button-and-seperator\">\n <div class=\"b-data-grid-config-settings__column-separator\"></div>\n <div class=\"b-data-grid-config-settings__button-container\">\n <bento-button\n ref=\"configSettingsButtonRef\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n @click=\"setConfigSettingsPanelVisibility(!isConfigSettingsPanelOpen)\"\n >\n <template #iconLeft>\n <bento-settings-icon :svg-title=\"$t('toggleConfigSettingsPanelVisibility')\" />\n </template>\n </bento-button>\n </div>\n </div>\n <bento-popover\n v-if=\"configSettingsButtonRef\"\n :open=\"isConfigSettingsPanelOpen\"\n class=\"b-data-grid-config-settings__panel\"\n :aria-label=\"$t('configSettingsPanel')\"\n :target-element=\"configSettingsButtonRef\"\n :position=\"BentoPopoverPositions.BOTTOM\"\n >\n <div class=\"b-data-grid-config-settings__panel-header\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\" strongest>\n {{ $t('viewSettings') }}\n </bento-typography>\n <bento-button :variant=\"BentoButtonVariant.TERTIARY\" @click=\"setConfigSettingsPanelVisibility(false)\">\n <template #iconLeft>\n <bento-cross-icon :svg-title=\"$t('closeConfigSettingsPanel')\" />\n </template>\n </bento-button>\n </div>\n <div class=\"b-data-grid-config-settings__compact-view-settings\">\n <bento-typography\n class=\"b-data-grid-config-settings__compact-view-title\"\n :el=\"BentoTypographyElement.SPAN\"\n stronger\n >\n {{ $t('density') }}\n </bento-typography>\n <bento-toggle\n :label-position=\"AdlLabelPosition.AFTER\"\n :aria-label=\"$t('compactViewToggle')\"\n :value=\"condensed\"\n @input=\"emitCondensedToggle\"\n >\n {{ $t('compactView') }}\n </bento-toggle>\n </div>\n <div class=\"b-data-grid-config-settings__column-visibility-settings\">\n <div class=\"b-data-grid-config-settings__column-visibility-header\">\n <bento-typography\n class=\"b-data-grid-config-settings__column-visibility-title\"\n :el=\"BentoTypographyElement.SPAN\"\n stronger\n >\n {{ $t('columns') }}\n </bento-typography>\n <bento-button\n v-if=\"!isColumnVisibilityFilterShown\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n @click=\"toggleColumnFilter\"\n >\n <template #iconLeft>\n <bento-search-icon />\n </template>\n {{ $t('search') }}\n </bento-button>\n <bento-button v-else :variant=\"BentoButtonVariant.TERTIARY\" @click=\"toggleColumnFilter\">\n <template #iconLeft>\n <bento-cross-icon />\n </template>\n {{ $t('closeSearch') }}\n </bento-button>\n </div>\n <div v-if=\"isColumnVisibilityFilterShown\" class=\"b-data-grid-config-settings__column-visibility-search\">\n <bento-search-bar\n ref=\"searchBarRef\"\n v-model=\"searchTerm\"\n :input-field-aria-label=\"$t('columnVisibilitySearchFilter').toString()\"\n @clear=\"clearAction\"\n @escape-pressed=\"toggleColumnFilter()\"\n />\n </div>\n <div v-else class=\"b-data-grid-config-settings__column-visibility-show-all\">\n <bento-toggle\n :label-position=\"AdlLabelPosition.AFTER\"\n :value=\"allColumnsVisbilityToggleState\"\n @input=\"toggleAllColumnVisibility\"\n >\n {{ $t('showAllColumns', { numberOfColumns: columns.length }) }}\n </bento-toggle>\n </div>\n <div class=\"b-data-grid-config-settings__column-visibility-toggles\">\n <div v-for=\"column of filteredColumnVisibilityColumns\" :key=\"column.field\">\n <bento-data-grid-config-settings-config-row\n :column=\"column\"\n :is-column-visibility-toggle-disabled=\"isColumnVisibilityToggleDisabled(column)\"\n @visible-column=\"emitVisibleColumns\"\n @updated-column=\"emitFrozenColumns\"\n />\n </div>\n <bento-typography\n v-if=\"filteredColumnVisibilityColumns.length === 0\"\n :el=\"BentoTypographyElement.SPAN\"\n class=\"b-data-grid-config-settings__column-visibility-empty-search-message\"\n >\n {{ $t('noColumnsFound') }}\n </bento-typography>\n </div>\n </div>\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, nextTick, PropType, ref, toRef } from 'vue';\n import { BentoPopover, BentoPopoverPositions } from '@/components/popover';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoToggle } from '@/components/toggle';\n import { AdlLabelPosition } from '@/types';\n import { BentoColumn } from '../../data-grid.types';\n import { BentoSearchBar, useSearchBarFilter } from '@/components/search-bar';\n import { BentoClickOutsideDirective } from '@/directives';\n import { DatagridConfigSettingsEvent } from './data-grid-config-settings.types';\n import BentoSettingsIcon from '@adyen/ui-assets-icons-16/vue/settings';\n import BentoCrossIcon from '@adyen/ui-assets-icons-16/vue/cross';\n import BentoSearchIcon from '@adyen/ui-assets-icons-16/vue/search';\n import BentoDataGridConfigSettingsConfigRow from './components/data-grid-config-settings-column-row/data-grid-config-settings-column-row.vue';\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-data-grid',\n components: {\n BentoCrossIcon,\n BentoPopover,\n BentoSettingsIcon,\n BentoButton,\n BentoDataGridConfigSettingsConfigRow,\n BentoSearchBar,\n BentoSearchIcon,\n BentoToggle,\n BentoTypography,\n },\n directives: { BentoClickOutsideDirective },\n props: {\n /**\n * Column definitions\n */\n columns: {\n type: Array as PropType<BentoColumn[]>,\n required: true,\n },\n\n /**\n * Sets the row cells to the condensed padding state.\n */\n condensed: {\n type: Boolean,\n default: false,\n },\n },\n emits: [DatagridConfigSettingsEvent.CONFIG_SETTINGS, DatagridConfigSettingsEvent.UPDATE_COLUMNS],\n setup(props, { emit }) {\n const configSettingsButtonRef = ref(null);\n const searchBarRef = ref(null);\n const isConfigSettingsPanelOpen = ref<boolean>(false);\n const allColumnsVisbilityToggleState = ref<boolean>(true);\n const searchTerm = ref<string>('');\n const columnsRef = toRef(props, 'columns');\n const isColumnVisibilityFilterShown = ref<boolean>(false);\n\n // Column Visibility Filtering\n const filteredColumnVisibilityColumns = useSearchBarFilter<BentoColumn>(searchTerm, columnsRef);\n const clearAction = () => {\n searchTerm.value = '';\n };\n const areAllNonMandatoryColumnsHidden = computed(\n () => !props.columns.some(col => col.visible === false && !col.mandatory)\n );\n const toggleColumnFilter = () => {\n clearAction();\n isColumnVisibilityFilterShown.value = !isColumnVisibilityFilterShown.value;\n if (isColumnVisibilityFilterShown.value) {\n nextTick(() => searchBarRef.value.bentoInputField.focusInput());\n }\n allColumnsVisbilityToggleState.value = areAllNonMandatoryColumnsHidden.value;\n };\n\n // Column visibility\n const visibleColumns = computed(() => props.columns.filter(col => col?.visible !== false));\n const isColumnVisibilityToggleDisabled = (column: BentoColumn) =>\n column.mandatory || (visibleColumns.value.length === 1 && column.visible);\n\n const emitVisibleColumns = (updatedColumn: BentoColumn) => {\n const updatedColumns = props.columns.map(col => ({\n ...col,\n visible: updatedColumn.field === col.field ? updatedColumn.visible : col.visible,\n }));\n\n emit(DatagridConfigSettingsEvent.UPDATE_COLUMNS, updatedColumns);\n };\n\n const toggleAllColumnVisibility = (toggleState: boolean) => {\n if (toggleState) {\n // Show all columns\n emit(\n DatagridConfigSettingsEvent.UPDATE_COLUMNS,\n props.columns.map(col => ({ ...col, visible: true }))\n );\n } else {\n // Hide all columns except for mandatory columns\n emit(\n DatagridConfigSettingsEvent.UPDATE_COLUMNS,\n props.columns.map(col => ({ ...col, visible: col?.mandatory === true }))\n );\n }\n };\n\n // Column freeze\n // TODO to convert this function to 'emitUpdatedColumns', that will emit both: visible and frozen columns\n const emitFrozenColumns = (updatedColumn: BentoColumn) => {\n const updatedColumns = props.columns.map(col => ({\n ...col,\n frozen: updatedColumn.field === col.field ? !!updatedColumn?.frozen : !!col?.frozen,\n }));\n\n emit(DatagridConfigSettingsEvent.UPDATE_COLUMNS, updatedColumns);\n };\n\n // Panel visibility\n const setConfigSettingsPanelVisibility = (isVisible: boolean) => {\n isConfigSettingsPanelOpen.value = isVisible;\n allColumnsVisbilityToggleState.value = areAllNonMandatoryColumnsHidden.value;\n };\n const onClickOutside = () => setConfigSettingsPanelVisibility(false);\n // Condensed view\n const emitCondensedToggle = (isCompactView: boolean) =>\n emit(DatagridConfigSettingsEvent.CONFIG_SETTINGS, isCompactView);\n\n return {\n // Values\n configSettingsButtonRef,\n isConfigSettingsPanelOpen,\n allColumnsVisbilityToggleState,\n filteredColumnVisibilityColumns,\n searchTerm,\n isColumnVisibilityFilterShown,\n searchBarRef,\n\n // Methods\n setConfigSettingsPanelVisibility,\n emitCondensedToggle,\n toggleAllColumnVisibility,\n clearAction,\n toggleColumnFilter,\n emitVisibleColumns,\n emitFrozenColumns,\n onClickOutside,\n isColumnVisibilityToggleDisabled,\n\n // Enum\n AdlLabelPosition,\n BentoTypographyElement,\n BentoTypographyVariant,\n BentoButtonVariant,\n BentoPopoverPositions,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./data-grid-config-settings.scss\" />\n","<template>\n <div\n class=\"b-data-grid\"\n role=\"grid\"\n tabindex=\"0\"\n :class=\"conditionalGridClasses\"\n :aria-rowcount=\"data.length\"\n :aria-colcount=\"columns.length\"\n :aria-label=\"ariaGridHeaderText\"\n >\n <div v-if=\"filters\" class=\"b-data-grid__filters\">\n <bento-filter-bar\n v-if=\"filters\"\n :value=\"filters\"\n :search-term=\"filterSearchTerm\"\n @search-input=\"onSearchTermInput\"\n @search-clear=\"onSearchTermCleared\"\n @input=\"filters => $emit(BentoDatagridEvent.UPDATE_FILERS, filters)\"\n />\n </div>\n <div v-if=\"$slots.header\" class=\"b-data-grid__header\">\n <slot name=\"header\"></slot>\n </div>\n <div ref=\"body\" class=\"b-data-grid__body\" tabindex=\"0\" :aria-busy=\"loading\" aria-live=\"polite\">\n <bento-data-grid-config-settings\n v-if=\"columnPanel\"\n class=\"b-data-grid__config-settings\"\n :style=\"configSettingsButtonStyle\"\n :columns=\"columns\"\n :condensed=\"condensed\"\n @config-settings=\"onConfigSettingsUpdate\"\n @update:columns=\"onConfigSettingsColumnsUpdate\"\n />\n <div ref=\"columnsRef\" role=\"rowgroup\" class=\"b-data-grid__columns-row\">\n <div :style=\"gridColumnWidthStyle\" class=\"b-data-grid__columns\" role=\"row\">\n <template v-for=\"({ columnSet, id, isFrozenColumns }, index) of columnSets\">\n <data-grid-columns\n v-if=\"columnSet?.length\"\n :key=\"`data-grid-columns-${id}`\"\n :columns=\"columnSet\"\n :has-resizable-columns=\"hasResizableColumns\"\n :sort-by=\"sortBy\"\n :all-items-selected-state=\"allItemsSelectedState\"\n :is-frozen-columns=\"isFrozenColumns\"\n :dragging-columns=\"draggingColumns\"\n :has-column-panel=\"columnPanel\"\n :has-first-column-panel-right-aligned=\"index === computedColumnPanelAlignment\"\n v-on=\"draggingEventsForColumns\"\n @column-move=\"onMoveColumnByOffset\"\n @column-update=\"onConfigSettingsColumnUpdate\"\n @column-resize=\"onColumnResized\"\n @column-resizing=\"onColumnWidthOverride\"\n @select-all-rows=\"onAllRowSelect\"\n @sort=\"onSort\"\n >\n <template v-for=\"(_, slot) of $scopedSlots || $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </data-grid-columns>\n </template>\n </div>\n </div>\n <div v-if=\"loading\" class=\"b-data-grid__loading\">\n <bento-loading-indicator class=\"b-data-grid__loading-indicator\" large />\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.CAPTION\">{{\n $t('gettingYourData')\n }}</bento-typography>\n </div>\n <div v-else class=\"b-data-grid__rows\" role=\"rowgroup\">\n <div\n v-for=\"(rowData, index) in data\"\n :key=\"index\"\n :style=\"gridColumnWidthStyle\"\n class=\"b-data-grid__row\"\n :class=\"conditionalRowClasses(rowData)\"\n role=\"row\"\n :aria-rowindex=\"index + 1\"\n @click=\"onRowClick(rowData, $event)\"\n >\n <template v-for=\"{ columnSet, id, isFrozenColumns } of columnSets\">\n <div\n v-if=\"columnSet?.length\"\n :key=\"`data-grid-rows-${id}`\"\n :class=\"conditionalRowSetClasses(isFrozenColumns)\"\n :data-testid=\"`data-grid-${id}-rows`\"\n >\n <div\n v-for=\"column in columnSet\"\n :key=\"`cell-${column.field}`\"\n :data-testid=\"`cell-${column.field}`\"\n class=\"b-data-grid__cell\"\n :class=\"conditionalRowCellClasses(column)\"\n role=\"gridcell\"\n :style=\"{ width: `${column.width}px` }\"\n v-on=\"draggingEventsForRowCell(column)\"\n >\n <template v-if=\"column.field !== DATAGRID_SELECT_FIELD_NAME\">\n <bento-typography :el=\"BentoTypographyElement.DIV\">\n <slot :item=\"rowData\" :name=\"`item-${column.field}`\">\n <span :title=\"conditionalTitleAttribute(column, rowData[column.field])\">{{\n getRowData(rowData[column.field])\n }}</span>\n </slot>\n </bento-typography>\n </template>\n <template v-else>\n <bento-checkbox\n v-model=\"selectedItems\"\n :disabled=\"isDataItemDisabled(rowData)\"\n :value=\"getDataItemId(rowData)\"\n @input=\"onRowSelect\"\n />\n </template>\n </div>\n </div>\n </template>\n </div>\n </div>\n </div>\n <div\n v-if=\"pagination\"\n data-testid=\"pagination-container\"\n class=\"b-data-grid__pagination\"\n :class=\"conditionalPaginationClasses\"\n >\n <bento-pagination\n v-bind=\"pagination\"\n :aria-label=\"`${ariaGridHeaderText} navigation`\"\n @navigate=\"onPaginationNavigate\"\n @items-page=\"onItemsPerPageChange\"\n />\n </div>\n <div v-if=\"$slots.footer\" class=\"b-data-grid__footer\"><slot name=\"footer\"></slot></div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRefs } from 'vue';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { BentoCheckbox } from '@/components/checkbox';\n import { BentoPagination } from '@/components/pagination';\n import { BentoFilterBar } from '@/components/filter-bar';\n import { BentoLoadingIndicator } from '@/components/loading-indicator';\n import {\n BentoColumn,\n BentoColumnOverflow,\n BentoDatagridData,\n BentoDatagridDataItem,\n BentoDatagridDataItemId,\n BentoDatagridEvent,\n BentoDatagridGetDataItemIdFn,\n BentoDatagridIsDataItemDisabledFn,\n BentoDatagridPaginationProps,\n BentoDatagridSortByColumn,\n BentoDatagridSortDirection,\n BentoDatagridStyleState,\n } from './data-grid.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoDataGridConfigSettings, DataGridColumns } from './components';\n import messages from './messages.json';\n import {\n DATAGRID_SELECT_FIELD_NAME,\n useCalculateColumnWidth,\n useColumnReorderer,\n useConfigSettings,\n useSelector,\n } from './composables';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-data-grid',\n components: {\n BentoCheckbox,\n DataGridColumns,\n BentoDataGridConfigSettings,\n BentoLoadingIndicator,\n BentoPagination,\n BentoFilterBar,\n BentoTypography,\n },\n inheritAttrs: false,\n props: {\n /**\n * When true, will emit a 'rowClick' event when a row is clicked. Will add cursor: pointer to rows.\n */\n allowRowClicks: { type: Boolean, default: false },\n\n /**\n * When true, column headers will become draggable, allowing users to rearrange columns.\n */\n allowColumnDragAndDrop: { type: Boolean, default: true },\n\n /**\n * Sets the row cells to the condensed padding state.\n */\n condensed: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Column definitions using 'key' to relate to data object.\n */\n columns: {\n type: Array as PropType<BentoColumn[]>,\n required: true,\n },\n\n /**\n * Enables / hides the view settings panel and the column contextual menu functionality.\n */\n columnPanel: { type: Boolean, default: false },\n\n /**\n * An array of data objects to display.\n */\n data: {\n type: Array as PropType<BentoDatagridData>,\n required: true,\n },\n\n /**\n * filter-bar value (i.e. filters) that will be passed down to inner filter-bar component\n */\n filters: {\n type: BentoFilterBar.props.value.type,\n default: undefined,\n },\n\n /**\n * Filter bar search term useful to filter all the data by text\n */\n filterSearchTerm: {\n type: BentoFilterBar.props.searchTerm.type,\n default: undefined,\n },\n\n /**\n * A customisable method to retrieve a unique identifier for a data item in the array of data supplied.\n * This is used selecting and performance reasons and must exist in each data item.\n */\n getDataItemId: {\n type: Function as PropType<BentoDatagridGetDataItemIdFn>,\n default: (item: BentoDatagridDataItem) => item.id,\n },\n\n /**\n * If resize is enabled\n */\n hasResizableColumns: {\n type: Boolean,\n default: true,\n },\n\n /**\n * A customisable method to determine if a row is not selectable.\n * The default is that every row is selectable.\n */\n isDataItemDisabled: {\n type: Function as PropType<BentoDatagridIsDataItemDisabledFn>,\n default: () => false,\n },\n\n /**\n * If the loading indicator should be shown.\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Enables / Disables the table's surrounding border.\n */\n outline: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Pagination props that will be passed down to inner pagination component\n */\n pagination: {\n type: Object as PropType<BentoDatagridPaginationProps>,\n default: undefined,\n },\n\n /**\n * Make pagination stick to the bottom of the page when the data-grid is bigger than the screen.\n * Because styles have to be applied to pagination container element, this has to be a data-grid prop (rather than a pagination prop).\n */\n stickyPagination: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Enables / Disables rows to be selected via a checkbox. On select the \"select\" event will be emitted.\n */\n selectable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Selected items\n */\n selection: {\n type: Array as PropType<BentoDatagridDataItemId[]>,\n default: () => [],\n },\n\n /**\n * Sortby handles proper rendering of sort icon in header. Sorting currently is only supported server side.\n * It does make sure the currently sorted column has a more visible sort icon, and the sort icon points in the right direction.\n */\n sortBy: {\n type: Array as PropType<BentoDatagridSortByColumn[]>, // NOTE: is an array to allow multi-sorting in the future\n default: () => [],\n },\n },\n emits: [\n BentoDatagridEvent.COLUMN_RESIZE,\n BentoDatagridEvent.SORT,\n BentoDatagridEvent.SELECT,\n BentoDatagridEvent.NAVIGATE,\n BentoDatagridEvent.UPDATE_FILERS,\n BentoDatagridEvent.ITEMS_PAGE,\n BentoDatagridEvent.UPDATE_FILTER_SEARCH_TERM,\n BentoDatagridEvent.FILTER_SEARCH_INPUT,\n BentoDatagridEvent.FILTER_SEARCH_CLEAR,\n BentoDatagridEvent.COLUMNS,\n BentoDatagridEvent.UPDATE_COLUMNS,\n BentoDatagridEvent.ROW_CLICK,\n ],\n setup(props, { emit, slots }) {\n /* == Variables and references == */\n // Create refs for elements\n const body = ref<HTMLDivElement>(null);\n const columnsRef = ref<HTMLDivElement>();\n const { columns, selectable, data, selection, allowColumnDragAndDrop } = toRefs(props);\n\n /* == Composable logic == */\n // Column width calculation\n const { columnDefs, onColumnWidthOverride, gridColumnWidthStyle } = useCalculateColumnWidth(columns, body, {\n hasSelectableColumn: selectable,\n });\n\n // Config Settings (condensed, visbility and freezing settings)\n const {\n sortedColumns,\n columnSets,\n onConfigSettingsUpdate,\n onConfigSettingsColumnsUpdate,\n onConfigSettingsColumnUpdate,\n } = useConfigSettings(columnDefs, emit);\n\n // Re-ordering column (dragging)\n const { draggingColumns, draggingEventsForColumns, draggingEventsForRowCell, onMoveColumnByOffset } =\n useColumnReorderer(sortedColumns, allowColumnDragAndDrop, emit);\n\n // Selecting\n const { onAllRowSelect, onRowSelect, selectedItems, allItemsSelectedState } = useSelector(\n selection,\n emit,\n data,\n props.getDataItemId,\n props.isDataItemDisabled\n );\n\n /* == Styles == */\n // Conditional grid classes\n const conditionalGridClasses = computed(() => ({\n [`b-data-grid--${BentoDatagridStyleState.OUTLINE}`]: props.outline,\n }));\n\n const computedColumnPanelAlignment = computed(() => columnSets.value.findIndex(el => el.columnSet.length));\n\n // Conditional row classes\n const conditionalRowClasses = (row: BentoDatagridDataItem) => ({\n 'b-data-grid__row--disabled': props.isDataItemDisabled(row),\n 'b-data-grid__row--row-clicks-enabled': props.allowRowClicks,\n 'b-data-grid__cell--is-re-ordering': draggingColumns.target?.field !== undefined,\n });\n const conditionalRowSetClasses = (isFrozenRowSet: boolean) => ({\n 'b-data-grid__row-cell-set--frozen': isFrozenRowSet,\n 'b-data-grid__row-cell-set--unfrozen': !isFrozenRowSet,\n 'b-data-grid__row-cell-set--config-settings-margin': !isFrozenRowSet && props.columnPanel,\n });\n const conditionalRowCellClasses = (column: BentoColumn) => ({\n 'b-data-grid__cell--padding-left-unset': column?.padding?.left === false,\n 'b-data-grid__cell--padding-right-unset': column?.padding?.right === false,\n 'b-data-grid__cell--numeric': column?.numeric,\n 'b-data-grid__cell--condensed': props.condensed,\n 'b-data-grid__cell--frozen': column?.frozen,\n [`b-data-grid__cell--overflow-${BentoColumnOverflow.ELLIPSIS}`]:\n column?.overflow === BentoColumnOverflow.ELLIPSIS,\n 'b-data-grid__cell--is-column-re-ordering': draggingColumns.dragging?.field === column.field,\n 'b-data-grid__cell--is-column-re-order-target': draggingColumns.target?.field === column.field,\n });\n\n const conditionalTitleAttribute = (column: BentoColumn, content: unknown) =>\n column?.overflow === BentoColumnOverflow.ELLIPSIS ? `${content}` : undefined;\n\n const getRowData = (rowData: unknown) => rowData ?? '-';\n\n // Conditional pagination classes\n const conditionalPaginationClasses = computed(() => ({\n 'b-data-grid__pagination--padding-left-unset': props.columns?.[0]?.padding?.left === false,\n 'b-data-grid__pagination--padding-right-unset':\n props.columns?.[props.columns.length - 1]?.padding?.right === false,\n 'b-data-grid__pagination--sticky': !!props.stickyPagination,\n }));\n\n // Get the columns header height and use for the height of the config settings button overlay\n const configSettingsButtonStyle = computed(() => ({\n height: `${columnsRef.value?.clientHeight}px`,\n }));\n\n // TODO: Fix the issue where users provide components into the slot\n // a11y grid header label text\n const ariaGridHeaderText = useAriaLabel({\n label: slots?.header ? slots?.header()[0].text?.trim() : null,\n defaultFallback: 'data grid',\n });\n\n /* == Emits == */\n // Resizing\n const onColumnResized = (resizeEvent: { field: string; width: number }) =>\n emit(BentoDatagridEvent.COLUMN_RESIZE, resizeEvent);\n // Sorting\n const onSort = (updatedSortBy: BentoDatagridSortByColumn[]) => emit(BentoDatagridEvent.SORT, updatedSortBy);\n // Pagination\n const onPaginationNavigate = (page: number) => emit(BentoDatagridEvent.NAVIGATE, page);\n const onItemsPerPageChange = (itemsPerPage: number) => emit(BentoDatagridEvent.ITEMS_PAGE, itemsPerPage);\n // Filter bar\n const onSearchTermCleared = () => {\n emit(BentoDatagridEvent.FILTER_SEARCH_CLEAR);\n };\n const onSearchTermInput = newSearchTerm => {\n emit(BentoDatagridEvent.UPDATE_FILTER_SEARCH_TERM, newSearchTerm);\n emit(BentoDatagridEvent.FILTER_SEARCH_INPUT, newSearchTerm);\n };\n // Row selecting\n const onRowClick = (row: BentoDatagridDataItem, event: MouseEvent) => {\n if (props.allowRowClicks) {\n emit(BentoDatagridEvent.ROW_CLICK, row, event);\n }\n };\n\n return {\n // Refs\n body,\n columnDefs,\n columnSets,\n\n // Labels and text\n ariaGridHeaderText,\n conditionalTitleAttribute,\n getRowData,\n\n // Styles and classes\n gridColumnWidthStyle,\n conditionalGridClasses,\n conditionalRowClasses,\n conditionalRowSetClasses,\n conditionalRowCellClasses,\n conditionalPaginationClasses,\n\n // Resizing\n onColumnWidthOverride,\n onColumnResized,\n\n // Sorting\n onSort,\n\n // Select\n allItemsSelectedState,\n selectedItems,\n onAllRowSelect,\n onRowSelect,\n DATAGRID_SELECT_FIELD_NAME,\n onRowClick,\n\n // Config settings (and column updating)\n onConfigSettingsUpdate,\n onConfigSettingsColumnsUpdate,\n onConfigSettingsColumnUpdate,\n columnsRef,\n configSettingsButtonStyle,\n\n // Enums\n BentoDatagridSortDirection,\n BentoTypographyElement,\n BentoTypographyVariant,\n BentoDatagridEvent,\n\n // Pagination props and events\n onPaginationNavigate,\n onItemsPerPageChange,\n\n // Filterbar events\n onSearchTermCleared,\n onSearchTermInput,\n\n // Re-ordering columns\n onMoveColumnByOffset,\n draggingColumns,\n draggingEventsForColumns,\n draggingEventsForRowCell,\n\n // Leftmost column panel alignment\n computedColumnPanelAlignment,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped>\n @import 'data-grid';\n</style>\n","export enum BentoCardBackground {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n}\n\nexport enum BentoCardTitleSize {\n DEFAULT = 'default',\n SMALL = 'small',\n}\n","<template>\n <div class=\"b-card\" :class=\"cardConditionalClasses\" data-testid=\"card\" @click=\"onClick\">\n <div\n v-if=\"showHeader\"\n class=\"b-card__header\"\n :class=\"cardHeaderConditionalClasses\"\n :tabindex=\"tabIndex\"\n :aria-controls=\"expandable ? cardId : null\"\n :aria-expanded=\"expandable ? `${showContent}` : null\"\n @click=\"toggleExpansion\"\n @keypress.enter=\"toggleExpansion\"\n @keypress.space=\"toggleExpansion\"\n >\n <span v-if=\"expandable\" aria-hidden=\"true\" class=\"adl-accordion-item__caret\">\n <chevron-up-icon v-if=\"showContent\" svg-title=\"show accordion item\" />\n <chevron-down-icon v-else svg-title=\"hide accordion item\" />\n </span>\n <div class=\"b-card__title-wrapper\">\n <bento-typography\n v-if=\"hasSlot('default')\"\n class=\"b-card__title\"\n aria-label=\"card title\"\n v-bind=\"typography\"\n >\n <slot />\n </bento-typography>\n\n <bento-typography\n v-if=\"hasSlot('description')\"\n class=\"b-card__description\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"description\" />\n </bento-typography>\n </div>\n </div>\n\n <div\n v-if=\"showCardBody\"\n :id=\"expandable ? cardId : null\"\n class=\"b-card__body\"\n :class=\"cardBodyConditionalClasses\"\n >\n <div\n v-if=\"hasSlot('content')\"\n class=\"b-card__content\"\n :class=\"cardContentConditionalClasses\"\n aria-label=\"card content\"\n >\n <slot name=\"content\" />\n </div>\n\n <div\n v-if=\"actions\"\n class=\"b-card__actions\"\n :class=\"cardActionsConditionalClasses\"\n aria-label=\"card actions\"\n >\n <bento-button-actions :actions=\"actions\" :layout=\"actionsLayout\"></bento-button-actions>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoButtonActions, BentoButtonActionsLayout, BentoButtonActionsList } from '@/components/button';\n import { BentoCardBackground, BentoCardTitleSize } from '@/components/card/card.types';\n import ChevronDownIcon from '@adyen/ui-assets-icons-16/vue/chevron-down';\n import ChevronUpIcon from '@adyen/ui-assets-icons-16/vue/chevron-up';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { generateUid } from '@/utils/ts/unique-id';\n\n /**\n * A card is a flexible and composable container.\n * Use cards to represent a single object or to visually group certain content, like legal information within company settings.\n *\n * @example\n * import { BentoCard } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoCard },\n * template: `\n * <bento-card>\n * Title of the Card\n * </bento-card>\n * `\n * };\n */\n export default defineComponent({\n name: 'bento-card',\n components: { ChevronUpIcon, ChevronDownIcon, BentoTypography, BentoButtonActions },\n inheritAttrs: false,\n props: {\n /**\n * Defines the color of card background\n */\n background: {\n type: String as PropType<BentoCardBackground>,\n default: BentoCardBackground.PRIMARY,\n },\n /**\n * Defines the title size of the card header\n */\n titleSize: {\n type: String as PropType<BentoCardTitleSize>,\n default: BentoCardTitleSize.DEFAULT,\n },\n /**\n * The whole content of the card will be expandable in accordion manner\n */\n expandable: {\n type: Boolean,\n default: false,\n },\n /**\n * Initially sets the expandable card in a closed state\n */\n closed: {\n type: Boolean,\n default: false,\n },\n /**\n * Disables the expandable card\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * List of actions that will be used to render the buttons.\n * First element in the list will be rendered as \"primary\".\n * All elements after the first will be rendered as \"secondary\".\n *\n * Each object in the list should have a `title`, an `event` and\n * (optional) a Vue `icon` from the library `@adyen/ui-assets-icons-16`.\n *\n * `title`: Button's text.\n *\n * `event`: Event triggered when clicking the Button.\n *\n * `icon`: Vue Icon from the library `@adyen/ui-assets-icons-16`.\n *\n * ```\n * [{\n * title: 'Primary',\n * event: () => { ... },\n * icon: FourPeopleIcon\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * }]\n * ```\n */\n actions: {\n type: Array as PropType<BentoButtonActionsList>,\n default: null,\n },\n /**\n * Defines the layout in which the button actions is presented.\n * It can be one of:\n *\n * @values BUTTONS_START\n * @values BUTTONS_END\n * @values FILL_CONTAINER\n * @values SPACE_BETWEEN\n * @values VERTICAL_STACK\n */\n actionsLayout: {\n type: String as PropType<BentoButtonActionsLayout>,\n default: BentoButtonActionsLayout.BUTTONS_END,\n validator: (value: BentoButtonActionsLayout) => Object.values(BentoButtonActionsLayout).includes(value),\n },\n },\n emits: ['click', 'expanded'],\n setup(props, { emit, slots }) {\n const cardId = generateUid('card');\n const showContent = ref(!props.closed);\n const showHeader = computed(() => hasSlot(slots)('default') || hasSlot(slots)('description'));\n const showCardBody = computed(\n () =>\n (hasSlot(slots)('content') || props.actions?.length) &&\n (!props.expandable || (props.expandable && showContent.value))\n );\n const tabIndex = computed(() => (props.expandable && !props.disabled ? 0 : -1));\n\n const cardConditionalClasses = computed(() => ({\n [`b-card--${props.background}`]: props.background,\n 'b-card--expandable': props.expandable,\n 'b-card--disabled': props.expandable && props.disabled,\n }));\n\n const cardHeaderConditionalClasses = computed(() => ({\n 'b-card__header--expandable': props.expandable,\n 'b-card__header--without-body': !props.expandable && !showCardBody.value,\n }));\n\n const cardBodyConditionalClasses = computed(() => ({\n 'b-card__body--expandable': props.expandable && hasSlot(slots)('content'),\n 'b-card__body--without-header': !props.expandable && !showHeader.value,\n }));\n\n const cardContentConditionalClasses = computed(() => ({\n 'b-card__content--without-header': !props.expandable && !showHeader.value,\n 'b-card__content--expandable': props.expandable,\n }));\n\n const cardActionsConditionalClasses = computed(() => {\n const isNotExpandableWithoutContent = !props.expandable && props.actions && !hasSlot(slots)('content');\n\n return {\n 'b-card__actions--without-content': isNotExpandableWithoutContent,\n 'b-card__actions--without-content-and-with-header':\n isNotExpandableWithoutContent && showHeader.value,\n };\n });\n\n const typography = computed(() => ({\n el: BentoTypographyElement.DIV,\n variant:\n props.titleSize === BentoCardTitleSize.DEFAULT\n ? BentoTypographyVariant.SUBTITLE\n : BentoTypographyVariant.BODY,\n stronger: props.titleSize === BentoCardTitleSize.DEFAULT,\n strongest: props.titleSize === BentoCardTitleSize.SMALL,\n wide: props.titleSize === BentoCardTitleSize.SMALL,\n }));\n\n const toggleExpansion = () => {\n if (!props.disabled) {\n showContent.value = !showContent.value;\n emit('expanded', showContent.value);\n }\n };\n\n const onClick = () => {\n if (!props.disabled) {\n emit('click');\n }\n };\n\n return {\n // Values\n cardId,\n cardConditionalClasses,\n cardBodyConditionalClasses,\n cardHeaderConditionalClasses,\n cardContentConditionalClasses,\n cardActionsConditionalClasses,\n showCardBody,\n showContent,\n tabIndex,\n showHeader,\n typography,\n\n // Methods\n onClick,\n toggleExpansion,\n hasSlot: hasSlot(slots),\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./card.scss\" />\n","import { defineComponent, h, ref } from 'vue';\nimport { onClickOutside } from '@/directives/click-outside/on-click-outside';\n\nexport const BentoClickOutside = /* #__PURE__ */ defineComponent({\n name: 'bento-click-outside',\n props: {\n /**\n * Sets the HTML DOM element.\n */\n el: { type: String, default: 'div' },\n },\n emits: ['handler'],\n setup(props, { emit, slots }) {\n const target = ref(null);\n\n onClickOutside(target, event => emit('handler', event));\n\n return () => h(props.el, { ref: target }, slots.default?.());\n },\n});\n","/**\n * Contains mapping configuration between currency code and exponent for amount in the corresponding currency.\n * Since the majority of the currencies have an exponent equal to 2, they are not listed here.\n * https://docs.adyen.com/development-resources/currency-codes\n * @type {Array}\n * @internal\n */\nexport const currencyExponentMap = [\n {\n exponent: 0,\n currencies: [\n 'CVE',\n 'DJF',\n 'GNF',\n 'IDR',\n 'JPY',\n 'KMF',\n 'KRW',\n 'PYG',\n 'RWF',\n 'UGX',\n 'VND',\n 'VUV',\n 'XAF',\n 'XOF',\n 'XPF',\n ],\n },\n {\n exponent: 1,\n currencies: ['MRO'],\n },\n {\n exponent: 3,\n currencies: ['BHD', 'IQD', 'JOD', 'KWD', 'LYD', 'OMR', 'TND'],\n },\n];\n","import { CurrencyAmount, CurrencyOptions, NumberFormatOptionsResult } from './currency.types';\nimport { currencyExponentMap } from './countries-list';\n\n/**\n * Returns exponent for specified currency code.\n */\nexport const getExponent = (currencyCode: string): number =>\n currencyExponentMap.find(obj => obj.currencies.includes(currencyCode))?.exponent ?? 2;\n\n/**\n * Converts passed amount from regular to minor units, based on currency exponent\n */\nexport const getMinorUnitsAmount = (amount: CurrencyAmount): number => {\n const exponent = getExponent(amount.currency);\n const value = Number(amount.value);\n\n return Math.round(value * 10 ** exponent);\n};\n\n/**\n * Returns normalized amount value from minor units as decimal point number (when exponent is more than zero).\n */\nexport const getNormalizedAmount = (amount: CurrencyAmount, exponent: number) =>\n // Amount is in minor units and have to be converted to number with fraction digits\n // return (amount.value * 100) / 10 ** exp;\n amount.value / 10 ** exponent;\n\n/**\n * /**\n * Prepares amount to be rendered by Intl.NumberFormat function.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat\n *\n * It enables language-sensitive number formatting.\n * Adds currency symbol and ISO code based on provided options\n * The result of execution - is a configuration object that is used in 'getLocalizedCurrencyValue' function\n *\n * @param amount - the value and currency to format.\n * @param options - the formatting options that are passed to the Intl.NumberFormat function.\n * @param majorUnits - if set to true, then currency major units will be used instead of minor ones\n */\nexport function getNumberFormatOptions(\n amount: CurrencyAmount,\n options: CurrencyOptions = {},\n majorUnits = false\n): NumberFormatOptionsResult {\n // Exponent is based on currency, if not specified explicitly.\n const exp = options?.exponent ?? getExponent(amount.currency);\n // Minor Units have to be retrieved from component passed amount\n const minorAmount = majorUnits ? getMinorUnitsAmount(amount) : amount.value;\n const amountInMinorUnits: CurrencyAmount = { ...amount, value: minorAmount };\n // Amount is in minor units and have to be converted to number with fraction digits\n const value = getNormalizedAmount(amountInMinorUnits, exp);\n // This is the requirement for currency component - to remove currency symbol for negative values\n const style = value < 0 ? 'decimal' : options?.style || 'currency';\n // If optionalFractions is true, numbers will not contain fraction digits when they are zero (e.g. 100.00 will be 100)\n const minimumFractionDigits = options?.optionalFractions ? 0 : exp;\n // If highPrecision is true, numbers can contain 10 fraction digits (highest precision in Adyen is about 5)\n const maximumFractionDigits = options?.highPrecision ? 10 : exp;\n\n return {\n value,\n format: {\n style,\n currency: amount.currency,\n currencyDisplay: 'symbol',\n minimumFractionDigits,\n maximumFractionDigits,\n },\n };\n}\n\n/**\n * Get a formatted and localised currency string given an amount and currency type.\n *\n * @param amountValue - the amount of the currency.\n * @param currency - the ISO 4217 currency code.\n * @param majorUnits - if set to true, then currency major units will be used instead of minor ones\n */\nexport const getLocalizedCurrencyValue = (amountValue: string, currency: string, majorUnits?: boolean): string => {\n const amount: CurrencyAmount = { value: parseFloat(amountValue), currency };\n const numberFormatOptions = getNumberFormatOptions(amount, { style: 'decimal' }, majorUnits);\n // TODO replace hardcoded locale with dynamic one, when i18n strategy is defined\n const formatter = new Intl.NumberFormat('en-US', numberFormatOptions.format);\n\n return formatter.format(numberFormatOptions.value);\n};\n","export enum BentoCurrencyISOCode {\n AFA = 'AFA',\n ALL = 'ALL',\n DZD = 'DZD',\n AOA = 'AOA',\n ARS = 'ARS',\n AMD = 'AMD',\n AWG = 'AWG',\n AUD = 'AUD',\n AZN = 'AZN',\n BSD = 'BSD',\n BHD = 'BHD',\n BDT = 'BDT',\n BBD = 'BBD',\n BYR = 'BYR',\n BEF = 'BEF',\n BZD = 'BZD',\n BMD = 'BMD',\n BTN = 'BTN',\n BTC = 'BTC',\n BOB = 'BOB',\n BAM = 'BAM',\n BWP = 'BWP',\n BRL = 'BRL',\n GBP = 'GBP',\n BND = 'BND',\n BGN = 'BGN',\n BIF = 'BIF',\n KHR = 'KHR',\n CAD = 'CAD',\n CVE = 'CVE',\n KYD = 'KYD',\n XOF = 'XOF',\n XAF = 'XAF',\n XPF = 'XPF',\n CLP = 'CLP',\n CLF = 'CLF',\n CNY = 'CNY',\n COP = 'COP',\n KMF = 'KMF',\n CDF = 'CDF',\n CRC = 'CRC',\n HRK = 'HRK',\n CUC = 'CUC',\n CZK = 'CZK',\n DKK = 'DKK',\n DJF = 'DJF',\n DOP = 'DOP',\n XCD = 'XCD',\n EGP = 'EGP',\n ERN = 'ERN',\n EEK = 'EEK',\n ETB = 'ETB',\n EUR = 'EUR',\n FKP = 'FKP',\n FJD = 'FJD',\n GMD = 'GMD',\n GEL = 'GEL',\n DEM = 'DEM',\n GHS = 'GHS',\n GIP = 'GIP',\n GRD = 'GRD',\n GTQ = 'GTQ',\n GNF = 'GNF',\n GYD = 'GYD',\n HTG = 'HTG',\n HNL = 'HNL',\n HKD = 'HKD',\n HUF = 'HUF',\n ISK = 'ISK',\n INR = 'INR',\n IDR = 'IDR',\n IRR = 'IRR',\n IQD = 'IQD',\n ILS = 'ILS',\n ITL = 'ITL',\n JMD = 'JMD',\n JPY = 'JPY',\n JOD = 'JOD',\n KZT = 'KZT',\n KES = 'KES',\n KWD = 'KWD',\n KGS = 'KGS',\n LAK = 'LAK',\n LVL = 'LVL',\n LBP = 'LBP',\n LSL = 'LSL',\n LRD = 'LRD',\n LYD = 'LYD',\n LTC = 'LTC',\n LTL = 'LTL',\n MOP = 'MOP',\n MKD = 'MKD',\n MGA = 'MGA',\n MWK = 'MWK',\n MYR = 'MYR',\n MVR = 'MVR',\n MRO = 'MRO',\n MUR = 'MUR',\n MXN = 'MXN',\n MDL = 'MDL',\n MNT = 'MNT',\n MAD = 'MAD',\n MZM = 'MZM',\n MMK = 'MMK',\n NAD = 'NAD',\n NPR = 'NPR',\n ANG = 'ANG',\n TWD = 'TWD',\n NZD = 'NZD',\n NIO = 'NIO',\n NGN = 'NGN',\n KPW = 'KPW',\n NOK = 'NOK',\n OMR = 'OMR',\n PKR = 'PKR',\n PAB = 'PAB',\n PGK = 'PGK',\n PYG = 'PYG',\n PEN = 'PEN',\n PHP = 'PHP',\n PLN = 'PLN',\n QAR = 'QAR',\n RON = 'RON',\n RUB = 'RUB',\n RWF = 'RWF',\n SVC = 'SVC',\n WST = 'WST',\n STD = 'STD',\n SAR = 'SAR',\n RSD = 'RSD',\n SCR = 'SCR',\n SLL = 'SLL',\n SGD = 'SGD',\n SKK = 'SKK',\n SBD = 'SBD',\n SOS = 'SOS',\n ZAR = 'ZAR',\n KRW = 'KRW',\n SSP = 'SSP',\n XDR = 'XDR',\n LKR = 'LKR',\n SHP = 'SHP',\n SDG = 'SDG',\n SRD = 'SRD',\n SZL = 'SZL',\n SEK = 'SEK',\n CHF = 'CHF',\n SYP = 'SYP',\n TJS = 'TJS',\n TZS = 'TZS',\n THB = 'THB',\n TOP = 'TOP',\n TTD = 'TTD',\n TND = 'TND',\n TRY = 'TRY',\n TMT = 'TMT',\n UGX = 'UGX',\n UAH = 'UAH',\n AED = 'AED',\n UYU = 'UYU',\n USD = 'USD',\n UZS = 'UZS',\n VUV = 'VUV',\n VEF = 'VEF',\n VND = 'VND',\n YER = 'YER',\n ZMK = 'ZMK',\n ZWL = 'ZWL',\n}\n","<template>\n <div class=\"b-currency\">\n <bento-typography\n class=\"b-currency__amount\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n strong\n >\n {{ formattedCurrency }} {{ currency }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { getLocalizedCurrencyValue } from '@/utils/ts/currency/currency';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoCurrencyISOCode } from '@/components/currency/currency.types';\n\n /**\n * A Currency component is used to display a formatted currency value.\n *\n * @example\n * import { BentoCurrency } from '@adyen/adl-vue-components';\n * import { BentoCurrency, BentoCurrencyCode } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoCurrency },\n * template: `\n * <bento-currency :currency=\"CurrencyCode.USD\">\n * 76.33\n * </bento-currency>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-currency',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n currency: {\n type: String as PropType<BentoCurrencyISOCode>,\n default: BentoCurrencyISOCode.EUR,\n validator: (value: BentoCurrencyISOCode) => Object.values(BentoCurrencyISOCode).includes(value),\n },\n /**\n * Accepts currency value in major units instead of minor ones\n */\n majorUnits: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const formattedCurrency = computed((): string => {\n const value = slots.default\n ? slots.default()[0]?.text || slots.default()[0]?.children?.toString()\n : null;\n return getLocalizedCurrencyValue(value, props.currency, props.majorUnits);\n });\n\n return {\n // Values\n formattedCurrency,\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n","export enum BentoLinkVariant {\n DEFAULT = 'default',\n QUIET = 'quiet',\n}\n","<template>\n <a\n v-if=\"external\"\n class=\"b-link\"\n :class=\"conditionalClasses\"\n :href=\"linkProps.to.toString()\"\n :title=\"linkProps.title\"\n target=\"_blank\"\n @click=\"onClick\"\n >\n <slot />\n </a>\n <router-link v-else v-bind=\"linkProps\" class=\"b-link\" :class=\"conditionalClasses\" custom @click.native=\"onClick\">\n <slot />\n </router-link>\n</template>\n\n<script lang=\"ts\">\n import { RouterLink } from 'vue-router';\n import { computed, useAttrs } from 'vue';\n import { BentoLinkVariant } from './link.types';\n import type { RouterLinkProps, RouterLinkSlotArgument } from 'vue-router/types/router';\n import type { AnchorHTMLAttributes } from 'vue/types/jsx';\n\n /**\n * Extends the `router-link` from the `vue-router` NPM package.\n *\n * @example\n * import { BentoLink, BentoTypography } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoLink, BentoTypography },\n * template: `\n * <bento-typography>\n * <bento-link to=\"/\">\n * link\n * </bento-link>\n * </bento-typography>\n * `\n * }\n */\n export default {\n name: 'bento-link',\n inheritAttrs: false,\n };\n</script>\n\n<script setup lang=\"ts\">\n // TODO: replace all this code when migrated to Vue 3 is complete as this is the only\n // current way to extend the `router-link` component in Vue 2 and Vue Router 3\n export interface Props extends RouterLinkProps, AnchorHTMLAttributes {\n // eslint-disable-next-line vue/require-default-prop\n args?: { props: RouterLinkProps };\n /**\n * Set the rendered link to a regular external anchor link.\n */\n external?: boolean;\n\n /**\n * Link variant type affecting visual style.\n * @values default, quiet\n */\n variant?: BentoLinkVariant;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const props = withDefaults(defineProps<Props>(), {\n variant: BentoLinkVariant.DEFAULT,\n });\n\n const conditionalClasses = computed(() => ({\n [`b-link--${BentoLinkVariant.QUIET}`]: props.variant === BentoLinkVariant.QUIET,\n }));\n\n // TODO: replace this when Vue allows users to extend props properly, read above for more info\n const attributes = useAttrs() as unknown;\n const linkProps = attributes as Props;\n\n const emit = defineEmits<{\n (e: 'click', clickEvent: MouseEvent): void;\n }>();\n\n const onClick = (e: MouseEvent, navigateCallback?: RouterLinkSlotArgument['navigate']) => {\n emit('click', e);\n if (navigateCallback) {\n navigateCallback();\n }\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./link.scss\" />\n","export enum BentoHeaderVariant {\n PAGE = 'page',\n COMPONENT = 'component',\n}\n","<template>\n <div class=\"b-header\">\n <div class=\"b-header__wrapper\">\n <div class=\"b-header__title\">\n <div>\n <bento-typography v-bind=\"typography\" class=\"b-header__text\">{{ title }}</bento-typography>\n <bento-info-icon\n v-if=\"infoIconTooltipText\"\n :tooltip-text=\"infoIconTooltipText\"\n class=\"b-header__tooltip\"\n />\n </div>\n <bento-typography\n v-if=\"lastUpdated\"\n class=\"b-header__timestamp\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.CAPTION\"\n >\n {{ timestamp }}\n </bento-typography>\n </div>\n <bento-button-actions v-if=\"actions\" :actions=\"actions\" class=\"b-header__actions\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoButtonActions, BentoButtonActionsList } from '@/components/button';\n import { BentoInfoIcon } from '@/components/info-icon';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { BentoHeaderVariant } from './header.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { useI18n } from '@/utils/ts/i18n';\n import { de, enUS, fr } from 'date-fns/locale';\n import formatDistanceToNow from 'date-fns/formatDistanceToNow';\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-header',\n components: {\n BentoTypography,\n BentoButtonActions,\n BentoInfoIcon,\n },\n inheritAttrs: false,\n props: {\n /**\n * Variant represents type of Header\n * @values page, component\n */\n variant: {\n type: String as PropType<BentoHeaderVariant>,\n default: BentoHeaderVariant.PAGE,\n validator: (value: BentoHeaderVariant) => Object.values(BentoHeaderVariant).includes(value),\n },\n /**\n * Text used as a title\n */\n title: { type: String, required: true },\n /**\n * Text showed in the info-icon tooltip on hover\n */\n infoIconTooltipText: { type: String, default: null },\n /**\n * Array of BentoButtonActionsList to show to the right of the title\n */\n actions: {\n type: Array as PropType<BentoButtonActionsList>,\n default: null,\n },\n /**\n * JavaScript \"Date\" object for when the content was last updated\n */\n lastUpdated: { type: [Date, Number], default: null },\n },\n setup(props, { slots }) {\n const { t, locale } = useI18n({ messages });\n // TODO to replace with dynamic import\n const locales = { de, enUS, fr };\n\n const typography = computed(() => ({\n el: props.variant === BentoHeaderVariant.PAGE ? BentoTypographyElement.H1 : BentoTypographyElement.H2,\n variant: BentoTypographyVariant.TITLE,\n medium: props.variant === BentoHeaderVariant.COMPONENT,\n large: props.variant === BentoHeaderVariant.PAGE,\n }));\n\n const timestamp = computed(() =>\n props.lastUpdated\n ? t('lastUpdated', {\n date: formatDistanceToNow(props.lastUpdated, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n }),\n })\n : null\n );\n return {\n hasSlot: hasSlot(slots),\n timestamp,\n typography,\n BentoTypographyElement,\n BentoTypographyVariant,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./header.scss\" />\n","export enum BentoStatusVariant {\n BLUE = 'blue',\n GREEN = 'green',\n GREY = 'grey',\n ORANGE = 'orange',\n RED = 'red',\n YELLOW = 'yellow',\n}\n","<template>\n <div class=\"b-status\" role=\"status\">\n <span class=\"b-status__indicator\" :class=\"conditionalClass\" role=\"presentation\"></span>\n <bento-typography\n class=\"b-status__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot></slot>\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoStatusVariant } from './status.types';\n\n /**\n * A Status component is used to indicate a\n * passage of time or a particular step of a process.\n *\n * @example\n * import { BentoStatus, BentoStatusVariant } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoStatus },\n * template: `\n * <bento-status :variant=\"BentoStatusVariant.RED\">\n * 1 week ago\n * </bento-status>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-status',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n variant: {\n type: String as PropType<BentoStatusVariant>,\n required: true,\n validator: (type: BentoStatusVariant) => Object.values(BentoStatusVariant).includes(type),\n },\n },\n setup(props) {\n const conditionalClass = computed(() => ({\n [`b-status__indicator--${props.variant}`]: true,\n }));\n\n return {\n // Values\n conditionalClass,\n\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./status.scss\" />\n","export const TABS_REGISTER_TAB_INJECTION_KEY = Symbol('tabs registerTab injection key');\nexport const TABS_ACTIVE_TAB_ID_KEY = Symbol('tabs active tab ID key');\n","<template>\n <div v-show=\"activeTabId === id\" :id=\"`${id}-tabpanel`\" role=\"tabpanel\" :aria-labelledby=\"id\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, inject } from 'vue';\n import { TABS_ACTIVE_TAB_ID_KEY, TABS_REGISTER_TAB_INJECTION_KEY } from '../tabs.keys';\n import { RegisterBentoTab } from '../tabs.types';\n\n export default defineComponent({\n props: {\n /**\n * Title of the tab\n */\n title: {\n type: String,\n required: true,\n },\n /**\n * Determines whether the tab is disabled\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const registerTab: RegisterBentoTab = inject(TABS_REGISTER_TAB_INJECTION_KEY);\n const activeTabId = inject(TABS_ACTIVE_TAB_ID_KEY);\n const id = registerTab(props);\n\n return { activeTabId, id };\n },\n });\n</script>\n","import { BentoTab } from './components/tab.types';\n\nexport const getPreviousTabIndex = (activeTabIndex: number, tabsValue: BentoTab[]) => {\n const newActiveTabIndex = activeTabIndex === 0 ? tabsValue.length - 1 : activeTabIndex - 1;\n if (tabsValue[newActiveTabIndex].disabled) {\n return getPreviousTabIndex(newActiveTabIndex, tabsValue);\n }\n return newActiveTabIndex;\n};\n\nexport const getNextTabIndex = (activeTabIndex: number, tabsValue: BentoTab[]) => {\n const newActiveTabIndex = activeTabIndex === tabsValue.length - 1 ? 0 : activeTabIndex + 1;\n if (tabsValue[newActiveTabIndex].disabled) {\n return getNextTabIndex(newActiveTabIndex, tabsValue);\n }\n return newActiveTabIndex;\n};\n","<template>\n <div class=\"b-tabs\">\n <div ref=\"tablist\" class=\"b-tabs__tab-list\" role=\"tablist\" @keydown=\"onKeydownTabsNavigation\">\n <button\n v-for=\"{ disabled, id, title } in tabs\"\n :id=\"id\"\n :key=\"id\"\n class=\"b-tabs__tab\"\n :class=\"{\n 'b-tabs__tab--active': activeTabId === id,\n 'b-tabs__tab--disabled': disabled,\n }\"\n role=\"tab\"\n type=\"button\"\n :aria-controls=\"`${id}-tabpanel`\"\n :aria-selected=\"activeTabId === id ? 'true' : 'false'\"\n :tabindex=\"activeTabId === id && !disabled ? null : -1\"\n :disabled=\"disabled\"\n @click=\"activeTabId = id\"\n @keydown.enter.space=\"activeTabId = id\"\n >\n <bento-typography\n class=\"b-tabs__tab-title\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n >\n {{ title }}\n </bento-typography>\n <span v-show=\"!disabled\" class=\"b-tabs__tab-underline\"></span>\n </button>\n </div>\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, onMounted, provide, ref } from 'vue';\n\n // components\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n // utils\n import { generateUid } from '@/utils/ts/unique-id';\n import { getNextTabIndex, getPreviousTabIndex } from './tabs.utils';\n\n // types\n import { BentoTab } from './components/tab.types';\n import { RegisterBentoTab } from './tabs.types';\n\n // keys\n import { TABS_ACTIVE_TAB_ID_KEY, TABS_REGISTER_TAB_INJECTION_KEY } from './tabs.keys';\n\n /**\n * Tabs are used to navigate between different, but related content views within a page.\n * This component conforms to the official WAI-ARIA guidelines for tabs: https://www.w3.org/WAI/ARIA/apg/patterns/tabs/\n *\n * @example\n * import { BentoTabs, BentoTab } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoTabs, BentoTab },\n * template: `\n * <bento-tabs v-bind=\"$props\">\n * <bento-tab title=\"Maria Ahlefeldt\">\n * (16 January 1755 - 20 December 1810) was a Danish, (originally German), composer. She is known as the first female composer in Denmark.\n * </bento-tab>\n * <bento-tab title=\"Carl Andersen\">\n * (29 April 1847 - 7 May 1909) was a Danish flutist, conductor and composer born in Copenhagen, son of the flutist Christian Joachim Andersen.\n * </bento-tab>\n * <bento-tab title=\"Karl Truffel\">\n * (1 March 1981 - 7 November 1992) was a Danish dog and commander born in Berlin, son of the machinist Tom Jahoor Truffel.\n * </bento-tab>\n * <bento-tab title=\"Maria Ahlefeldt\" :disabled=\"true\">\n * (16 January 1755 - 20 December 1810) was a Danish, (originally German), composer. She is known as the first female composer in Denmark.\n * </bento-tab>\n * </bento-tabs>\n * `\n * };\n */\n\n // component\n export default defineComponent({\n components: {\n BentoTypography,\n },\n setup() {\n const tabs = ref<BentoTab[]>([]);\n const tablist = ref(null);\n const activeTabId = ref('');\n\n provide(TABS_ACTIVE_TAB_ID_KEY, activeTabId);\n\n // register tab\n const registerTab: RegisterBentoTab = ({ title, disabled }) => {\n const id = generateUid('b-tab');\n\n // add tab to tabs\n tabs.value.push({ disabled, id, title });\n\n // return values to the Tab component\n return id;\n };\n\n // provide activeTab and registerTab to tab items\n provide(TABS_REGISTER_TAB_INJECTION_KEY, registerTab);\n\n // keyboard navigation\n const onKeydownTabsNavigation = (e: KeyboardEvent) => {\n if (e.code === 'ArrowLeft' || e.code === 'ArrowRight') {\n // find tab that is focussed\n const activeTab = tabs.value.find(tab => document.activeElement.id === tab.id);\n let activeTabIndex = tabs.value.indexOf(activeTab);\n\n // conditionally increase or decrease the\n if (e.code === 'ArrowLeft') {\n activeTabIndex = getPreviousTabIndex(activeTabIndex, tabs.value);\n } else if (e.code === 'ArrowRight') {\n activeTabIndex = getNextTabIndex(activeTabIndex, tabs.value);\n }\n\n // focus new active tab\n tablist.value.children[activeTabIndex].focus();\n }\n };\n\n // set first (enabled) tab to active\n onMounted(() => {\n const firstEnabledTab = tabs.value.find(tab => !tab.disabled);\n\n if (firstEnabledTab) {\n activeTabId.value = firstEnabledTab.id;\n }\n });\n\n return {\n BentoTypographyElement,\n BentoTypographyVariant,\n tabs,\n tablist,\n activeTabId,\n onKeydownTabsNavigation,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./tabs.scss\" />\n","<template>\n <div class=\"b-toast-item\" data-testid=\"toast-item\">\n <div class=\"b-toast-item__container\">\n <info-icon\n class=\"b-toast-item__left-icon b-toast-item__info-icon\"\n name=\"info\"\n aria-hidden=\"true\"\n ></info-icon>\n <output role=\"status\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.BODY\" strongest>\n {{ text }}\n </bento-typography>\n </output>\n </div>\n <div class=\"b-toast-item__container\">\n <bento-button\n v-if=\"action\"\n class=\"b-toast-item__right-icon\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n @click=\"onActionClicked\"\n >\n {{ action.text }}\n </bento-button>\n <bento-button\n class=\"b-toast-item__right-icon\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n @click=\"dismissButtonClicked\"\n >\n <template #iconLeft>\n <cross-icon :svg-title=\"$t('dismiss')\" />\n </template>\n </bento-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import InfoIcon from '@adyen/ui-assets-icons-16/vue/info-filled';\n import CrossIcon from '@adyen/ui-assets-icons-16/vue/cross-small';\n import messages from './messages.json';\n import { BentoToastItemAction } from './toast-item.types';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { hasSlot } from '@/utils/ts/hasSlot';\n\n /**\n * @example\n * Toast item component, for internal use only.\n *\n * import { BentoToastItem } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoToastItem },\n * template: `\n * <bento-toast-item>\n * This is a toast message\n * <template #primaryAction>Button text</template>\n * </bento-toast-item>\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'toast-item',\n components: { BentoButton, BentoTypography, CrossIcon, InfoIcon },\n inheritAttrs: false,\n props: {\n text: {\n type: String,\n required: true,\n },\n action: {\n type: Object as PropType<BentoToastItemAction>,\n default: null,\n },\n },\n emits: ['click', 'dismiss'],\n setup(props, { slots, emit }) {\n const dismissButtonClicked = () => emit('dismiss');\n const onActionClicked = () => {\n props.action.handler();\n emit('dismiss');\n };\n\n return {\n // Enums\n BentoButtonVariant,\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Methods\n dismissButtonClicked,\n hasSlot: hasSlot(slots),\n onActionClicked,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./toast-item.scss\" />\n","<template>\n <div v-if=\"toastsToShow.length\" class=\"b-toast\" :style=\"computedHeight\">\n <transition-group\n name=\"b-toast\"\n tag=\"ul\"\n class=\"b-toast__container\"\n aria-live=\"polite\"\n move-class=\"b-toast__container--move\"\n enter-active-class=\"b-toast__container--enter-active\"\n leave-active-class=\"b-toast__container--leave-active\"\n enter-from-class=\"b-toast__container--enter-from\"\n leave-to-class=\"b-toast__container--leave-to\"\n >\n <li\n v-for=\"(item, index) in toastsToShow\"\n :key=\"index\"\n class=\"b-toast__item\"\n :style=\"computedPositioning[index]\"\n :inert=\"index !== toastsToShow.length - 1\"\n >\n <toast-item\n :ref=\"index === toastsToShow.length - 1 ? 'toast' : null\"\n :class=\"index !== toastsToShow.length - 1 ? 'b-toast--light-background' : null\"\n :text=\"item.text\"\n :action=\"item.action\"\n @dismiss=\"item.dismiss()\"\n />\n </li>\n </transition-group>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, ref, watch } from 'vue';\n import { ToastItem } from './components/toast-item';\n import { useBentoToastController } from '@/utils/ts/toastController';\n\n const DURATION = 5000;\n\n /**\n * @example\n * import { BentoToast, useBentoToastController } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoToast },\n * template: `\n * // in your project root\n * <bento-toast />\n * setup() {\n * bentoToastController = useBentoToastController();\n * onTrigger = () => {\n * bentoToastController.addToast({ text: 'Your toast text', action: { text: 'Button text', handler: () => { your code here } });\n * }\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-toast',\n components: { ToastItem },\n inheritAttrs: false,\n setup() {\n const { state } = useBentoToastController();\n const dismissTimer = ref(null);\n const toast = ref(null);\n const toastsToShow = computed(() => state.queue.slice(-3));\n\n const cancelDismissTimer = () => {\n clearTimeout(dismissTimer.value);\n };\n\n const startTimer = toastToDismiss => {\n dismissTimer.value = setTimeout(() => {\n cancelDismissTimer();\n toastToDismiss.dismiss();\n }, DURATION);\n };\n\n const startDismissTimer = () => {\n cancelDismissTimer();\n\n const toastToDismiss = toastsToShow.value.slice(-1)[0];\n if (toastToDismiss) {\n startTimer(toastToDismiss);\n }\n };\n\n onMounted(() => {\n startDismissTimer();\n });\n\n watch(\n () => toastsToShow.value,\n () => {\n if (toastsToShow.value.length) {\n cancelDismissTimer();\n startDismissTimer();\n }\n }\n );\n\n const computedPositioning = computed(() =>\n toastsToShow.value.map((el, index) => {\n const diff = 10;\n const width = 100;\n const min = 10;\n const numberOfElements = toastsToShow.value.length - 1;\n return {\n top: `${diff * index}px`,\n width: `${width - min * (numberOfElements - index)}%`,\n };\n })\n );\n\n const computedHeight = computed(() => {\n // Get shown toast element height (last in the queue)\n const visibleToastHeight = toast.value?.offsetWidth;\n // Get number of elements excluding the toast currently displayed\n const numberOfElements = toastsToShow.value.length - 1;\n // Set height = number of stacked elements\n const stackedToastHeight = 10;\n // Set a stack height only if there's elements present\n const stackHeight = numberOfElements ? stackedToastHeight * numberOfElements : 0;\n // Set bottom to be padding + height of the visible toast :)\n return {\n bottom: `${visibleToastHeight}px`,\n height: `${stackHeight}px`,\n };\n });\n\n return {\n // Values,\n computedPositioning,\n computedHeight,\n toastsToShow,\n toast,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./toast.scss\" />\n"],"names":["injectCSS","cssStyles","cssCode","elementStyle","e","getRandomValues","rnds8","rng","byteToHex","i","unsafeStringify","arr","offset","randomUUID","native","v4","options","buf","rnds","generateUid","value","ToastController","__publicField","reactive","toast","params","id","setDefaultTheme","install","Vue","bentoLegacyCssVars","bentoCssVars","BentoVue","BentoAlertSeverityOption","BentoButtonVariant","BentoButtonPropClass","BentoTypographyVariant","BentoTypographyModifier","BentoTypographyElement","_sfc_main$1Z","defineComponent","props","computed","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","hasSlot","slots","name","_sfc_main$1Y","BentoTypography","emit","attrs","ariaAttributes","_a","_b","variantClass","conditionalClasses","_hoisted_2","_hoisted_3","_resolveComponent","_createElementBlock","args","_createCommentVNode","_component_bento_typography","_hoisted_1","BentoButtonActionsLayoutBasic","BentoButtonActionsLayoutExtended","BentoButtonActionsLayout","_sfc_main$1W","BentoButton","layout","reversedActionsList","generateButtonVariantByIndex","actionIndex","lastActionIndex","_createElementVNode","_Fragment","_renderList","button","index","_component_bento_button","_withCtx","BentoLoadingButtonState","BentoLoadingIndicatorEvent","_sfc_main$1V","onMounted","onUnmounted","uuid","_sfc_main","_hoisted_6","_mergeProps","_sfc_main$1S","Cross","Checkmark","BentoLoadingIndicator","isInverseLoadingIndicator","_createSlots","_component_cross","_component_checkmark","_component_bento_loading_indicator","_sfc_main$1O","CrossSmall","Warning","CrossCircle","CheckedCircle","Info","alertConditionalClasses","computedRole","onCloseButtonClick","_hoisted_4","_component_checked_circle","_component_info","_component_warning","_component_cross_circle","useAriaLabel","ariaLabel","label","defaultFallback","computedAriaLabel","ref","computedLabel","computedDefaultFallback","BentoCheckboxState","useInitials","username","computedUsername","useDefaultSlotValidator","componentName","hasDefaultSlot","hasOptionalSlots","useCheckboxSelectAll","selectedItemsList","items","selectAll","unselectAll","isAllSelected","isIndeterminate","selectedValue","_sfc_main$1L","CheckmarkSmallIcon","MinusSmallIcon","disabled","indeterminate","modelValue","toRefs","defaultSlotValue","descriptionSlotValue","isCheckboxGroup","isChecked","item","ariaChecked","_c","_g","_f","_e","_d","ariaInvalid","conditionalClass","conditionalClassOutline","event","newValue","newCheckedList","_component_checkmark_small_icon","_component_minus_small_icon","_sfc_main$1K","legendConditionalClasses","BentoCheckboxGroupVariant","_sfc_main$1J","BentoCheckbox","ControlsGroup","_component_controls_group","_component_bento_checkbox","BentoAvatarImageVariant","BentoAvatarImageColor","_sfc_main$1I","initials","_createVNode","_sfc_main$1H","AvatarImage","charCode","avatarColor","rangeStep","_component_avatar_image","_sfc_main$1G","_sfc_main$1E","BentoListboxOption","CheckmarkIcon","onOptionSelected","ariaDisabled","ariaSelected","tabIndex","_component_bento_listbox_option","$event","_renderSlot","_normalizeProps","_guardReactiveProps","_withDirectives","_component_checkmark_icon","inBrowser","mark","measure","perf","tag","startTag","endTag","RE_ARGS","format","message","isObject","match","identifier","hasSymbol","makeSymbol","generateFormatCacheKey","locale","key","source","friendlyJSONstringify","json","isNumber","val","isDate","toTypeString","isRegExp","isEmptyObject","isPlainObject","warn","msg","err","assign","_globalThis","getGlobalThis","escapeHtml","rawText","hasOwnProperty","hasOwn","obj","isArray","isFunction","isString","isBoolean","objectToString","toDisplayString","RANGE","generateCodeFrame","start","end","lines","count","res","j","line","lineLength","pad","length","createEmitter","events","handler","handlers","payload","CompileErrorCodes","errorMessages","createCompileError","code","loc","domain","messages","error","defaultOnError","createPosition","column","createLocation","CHAR_SP","CHAR_CR","CHAR_LF","CHAR_LS","CHAR_PS","createScanner","str","_buf","_index","_line","_column","_peekOffset","isCRLF","isLF","isPS","isLS","isLineEnd","peekOffset","charAt","currentChar","currentPeek","next","peek","reset","resetPeek","skipToPeek","target","EOF","LITERAL_DELIMITER","ERROR_DOMAIN$1","createTokenizer","location","_scnr","currentOffset","currentPosition","_initLoc","_initOffset","_context","context","onError","emitError","pos","ctx","getToken","type","token","getEndToken","eat","scnr","ch","peekSpaces","skipSpaces","isIdentifierStart","cc","isNumberStart","isNamedIdentifierStart","currentType","ret","isListIdentifierStart","isLiteralStart","isLinkedDotStart","isLinkedModifierStart","isLinkedDelimiterStart","isLinkedReferStart","fn","isPluralStart","detectModuloStart","spaces","isTextStart","hasSpace","prev","detectModulo","takeChar","takeIdentifierChar","takeDigit","takeHexDigit","getDigits","num","readModulo","readText","readNamedIdentifier","readListIdentifier","readLiteral","literal","x","readEscapeSequence","current","readUnicodeEscapeSequence","unicode","digits","sequence","readInvalidIdentifier","identifiers","closure","readLinkedModifier","readLinkedRefer","detect","readPlural","plural","readTokenInPlaceholder","readTokenInLinked","validNamedIdentifier","validListIdentifier","validLiteral","readToken","isModulo","nextToken","startLoc","endLoc","ERROR_DOMAIN","KNOWN_ESCAPES","fromEscapeSequence","codePoint4","codePoint6","codePoint","createParser","tokenzer","startNode","node","endNode","parseText","tokenizer","parseList","parseNamed","parseLiteral","parseLinkedModifier","getTokenCaption","parseLinkedKey","parseLinked","linkedNode","parsed","nextContext","emptyLinkedKeyNode","parseMessage","startOffset","endOffset","parsePlural","msgNode","hasEmptyMessage","parseResource","parse","createTransformer","ast","traverseNodes","nodes","transformer","traverseNode","transform","createCodeGenerator","sourceMap","filename","breakLineCode","_needIndent","push","_newline","n","withBreakLine","_breakLineCode","indent","withNewLine","level","deindent","newline","generateLinkedNode","generator","helper","generateNode","generateMessageNode","needIndent","generatePluralNode","generateResource","generate","mode","helpers","s","map","baseCompile","assignedOptions","IntlifyDevToolsHooks","pathStateMachine","literalValueRE","isLiteral","exp","stripQuotes","b","getPathCharType","formatSubPath","path","trimmed","keys","subPathDepth","c","newChar","transition","action","typeMap","actions","maybeUnescapeQuote","nextChar","cache","resolveWithKeyValue","resolveValue","hit","len","last","DEFAULT_MODIFIER","DEFAULT_MESSAGE","DEFAULT_MESSAGE_DATA_TYPE","DEFAULT_NORMALIZE","values","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","getPluralIndex","normalizeNamed","pluralIndex","createMessageContext","pluralRule","orgPluralRule","_list","list","_named","named","_modifier","normalize","interpolate","arg1","arg2","modifier","devtools","setDevToolsHook","hook","initI18nDevTools","i18n","version","meta","translateDevTools","createDevToolsHook","payloads","CoreWarnCodes","warnMessages","getWarnMessage","fallbackWithSimple","fallback","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","chain","block","appendBlockToChain","defaults","blocks","follow","appendLocaleToChain","tokens","appendItemToChain","VERSION","NOT_REOSLVED","MISSING_RESOLVE_VALUE","capitalize","getDefaultLinkedModifiers","_compiler","registerMessageCompiler","compiler","_resolver","registerMessageResolver","resolver","_fallbacker","registerLocaleFallbacker","fallbacker","_additionalMeta","setAdditionalMeta","getAdditionalMeta","_fallbackContext","setFallbackContext","getFallbackContext","_cid","createCoreContext","fallbackLocale","datetimeFormats","numberFormats","modifiers","pluralRules","missing","missingWarn","fallbackWarn","fallbackFormat","unresolving","postTranslation","processor","warnHtmlMessage","escapeParameter","messageCompiler","messageResolver","localeFallbacker","fallbackContext","onWarn","internalOptions","__datetimeFormatters","__numberFormatters","__meta","isTranslateFallbackWarn","isTranslateMissingWarn","handleMissing","emitter","updateFallbackLocale","RE_HTML_TAG","WARN_MESSAGE","checkHtmlMessage","defaultOnCacheKey","compileCache","compileToFunction","cached","occurred","inc","CoreErrorCodes","createCoreError","NOOP_MESSAGE_FUNCTION","isMessageFunction","translate","parseTranslateArgs","resolvedMessage","defaultMsgOrKey","enableDefaultMsg","escapeParams","formatScope","targetLocale","resolveMessageFormat","cacheBaseKey","errorDetector","compileMessageFormat","ctxOptions","getMessageContextOptions","msgContext","messaged","evaluateMessage","locales","from","to","missingRet","getCompileOptions","msgCtx","arg3","codeFrame","intlDefined","Availabilities","datetime","overrides","parseDateTimeArgs","part","datetimeFormat","formatter","DATETIME_FORMAT_OPTIONS_KEYS","arg4","matches","dateTime","clearDateTimeFormat","number","parseNumberArgs","numberFormat","NUMBER_FORMAT_OPTIONS_KEYS","clearNumberFormat","initFeatureFlags","needWarn","code$1","inc$1","I18nWarnCodes","I18nErrorCodes","createI18nError","TransrateVNodeSymbol","DatetimePartsSymbol","NumberPartsSymbol","EnableEmitter","DisableEmitter","SetPluralRulesSymbol","InejctWithOption","handleFlatJson","subKeys","lastIndex","currentObj","getLocaleMessages","__i18n","flatJson","custom","resource","deepCopy","isNotObjectOrIsArray","src","des","getComponentOptions","instance","adjustI18nResources","global","componentOptions","createTextNode","createVNode","Text","DEVTOOLS_META","composerID","defineCoreMissingHandler","getCurrentInstance","getMetaInfo","createComposer","VueI18nLegacy","__root","_isGlobal","_inheritLocale","_locale","_fallbackLocale","_messages","_datetimeFormats","_numberFormats","_missingWarn","_fallbackWarn","_fallbackRoot","_fallbackFormat","_missing","_runtimeMissing","_postTranslation","_warnHtmlMessage","_escapeParameter","_modifiers","_pluralRules","trackReactivityValues","getPostTranslationHandler","setPostTranslationHandler","getMissingHandler","setMissingHandler","isResolvedTranslateMessage","arg","wrapWithDeps","argumentParser","warnType","fallbackSuccess","fallbackFail","successCondition","t","root","rt","d","transrateVNode","numberParts","datetimeParts","setPluralRules","rules","te","getLocaleMessage","resolveMessages","targetLocaleMessages","messageValue","tm","setLocaleMessage","mergeLocaleMessage","getDateTimeFormat","setDateTimeFormat","mergeDateTimeFormat","getNumberFormat","setNumberFormat","mergeNumberFormat","watch","composer","baseFormatProps","getInterpolateArg","slot","getFragmentableTag","Fragment","isVNode","renderFormatter","slotKeys","partFormatter","prop","parts","children","assignedAttrs","h","addTimelineEvent","I18nInjectionKey","useI18n","getI18nInstance","getGlobalComposer","scope","getScope","useI18nForLegacy","getComposer","i18nInternal","composerOptions","setupLifeCycle","inject","useComponent","vueI18n","_composer","isLocale","shallowRef","warpWithDeps","wrapper","sync","onBeforeMount","onlyLocale","currentInstance","vue3InjectionI18nKey","v","coolLocale","useI18nBridge","vue3I18nInstance","vue3GlobalI18nComposer","vm","_sfc_main$1D","_props","option","_sfc_main$1C","BentoListboxMultiSelectOptions","optionStates","isDisabled","isPreSelected","enabledItems","visibleSelectedList","selectAllCheckboxText","total","amountSelectedValues","filterOutDisabledAndNotPreselectedOptions","addOrRemoveList","findEnabledUnselectedItems","unselectedItemsList","toggleSelectAll","toggleCheckboxSelection","exists","selectedOptions","isAnOptionSelected","isAllItemsIncludingDisabled","_component_bento_listbox_multi_select_options","_","_sfc_main$1B","BentoListboxSingleSelectOption","BentoListboxMultiSelect","_component_bento_listbox_single_select_option","_component_bento_listbox_multi_select","BentoTagVariant","isClient","defaultWindow","isIOS","resolveUnref","r","unref","unrefElement","elRef","plain","noop","useEventListener","listeners","cleanups","cleanup","register","el","listener","registerOptions","stopWatch","stopWatchOptions","_iOSWorkaround","onClickOutside","window","ignore","capture","detectIframe","shouldListen","shouldIgnore","BentoClickOutsideDirective","targetElement","binding","FOCUS_GROUP","FOCUS_DISABLED","FOCUS_ALLOW","FOCUS_AUTO","FOCUS_NO_AUTOFOCUS","toArray","a","asArray","isElementHidden","computedStyle","getParentNode","isTopNode","isVisibleUncached","checkParent","isVisibleCached","visibilityCache","result","isAutoFocusAllowedUncached","isAutoFocusAllowed","isAutoFocusAllowedCached","getDataset","isHTMLButtonElement","isHTMLInputElement","isRadioElement","notHiddenInput","attribute","isGuard","isNotAGuard","isDefined","tabSort","tabDiff","indexDiff","orderByTabIndex","filterNegative","keepGuards","data","tabbables","queryTabbables","queryGuardTabbables","getFocusablesWithShadowDom","parent","withGuards","acc","child","getFocusables","parents","getParentAutofocusables","parentFocus","filterFocusable","filterAutoFocusable","getTabbableNodes","topNodes","getAllTabbableNodes","parentAutofocusables","topNode","contains","element","filterNested","contained","l","position","getTopParent","getAllAffectedNodes","currentNode","group","getNestedShadowActiveElement","shadowRoot","getActiveElement","focusInFrame","frame","focusInsideIframe","focusInside","activeElement","focusIsHidden","findSelectedRadio","correctNode","correctNodes","resultSet","pickFirstFocus","pickFocusable","NEW_FOCUS","newFocus","innerNodes","outerNodes","lastNode","cnt","firstFocus","lastFocus","isOnGuard","activeIndex","lastNodeInside","firstNodeIndex","lastNodeIndex","correctedNodes","correctedIndex","correctedIndexDiff","returnFirstNode","returnLastNode","getParents","getCommonParent","nodeA","nodeB","parentsA","parentsB","currentParent","getTopCommonParent","baseActiveElement","leftEntry","rightEntries","activeElements","leftEntries","topCommon","entry","subEntry","common","allParentAutofocusables","entries","findAutoFocused","autoFocusables","reorderNodes","srcNodes","dstNodes","remap","entity","getFocusMerge","commonParent","anyFocusable","innerElements","orderedInnerElements","newId","autoFocusable","getFocusabledIn","getFocusableIn","focusOn","focusOptions","guardCount","lockDisabled","setFocus","focusable","BentoFocusTrapArrowNavigationDirection","BentoFocusTrapVerticalNavigationEvent","BentoFocusTrapHorizontalNavigationEvent","deferAction","callback","getNodeIndex","getNextFocusableElement","factor","currentFocusedEl","focusableElements","nextIndex","getArrowType","arrowOrder","eventKey","SCROLL_INTO_VIEW_OPTIONS","_sfc_main$1A","moveFocusInside","currentTag","isArrowNext","isArrowPrev","focusableEl","focusOnDestroyEl","_toHandlers","PopperContainerPositionBasic","PopperContainerPositionExtended","PopperContainerAriaRole","PopperContainerPosition","getArrowModifier","arrow","arrowProps","getOffsetModifier","getFlipModifier","fallbackPosition","arrowDataHideAttributeModifier","state","sameWidthModifier","_sfc_main$1z","BentoFocusTrap","currentModifiers","strategy","popperElement","createPopper","_component_bento_focus_trap","BentoTooltipPosition","BentoTooltipState","optionsSupport","support","listen","cleanupBatch","eventType","eventOptions","useNativeOnce","eventListener","KeyCode","Tooltip","PopperContainer","_sfc_main$1y","_component_popper_container","tooltipInstances","ariaDescribedByAttr","tooltipId","tooltipVNode","tooltip","open","tooltipProps","createTooltip","createApp","destroyTooltip","getTooltipPosition","getTooltipInstanceForTarget","showTooltip","tooltipInstance","nextTick","hideTooltip","tooltipBind","show","hide","evt","tooltipUpdate","tooltipUnbind","removeListener","BentoTooltipDirective","onKeyEvent","BentoKeyboardNavigationDirective","_sfc_main$1x","tagConditionalClasses","textFromSlot","shouldShowTooltip","formattedText","_resolveDirective","_sfc_main$1w","BentoTag","_component_bento_tag","CopyTooltipState","CopyIcon","copyState","showScreenReaderAlert","onClickCopy","resetText","copyText","GridLayoutContainerType","_sfc_main$1u","array","computeColumnSize","columnWidth","computedClasses","BentoDropdownSize","_sfc_main$1t","BentoListbox","isDropdownOpen","noResultsMessage","conditionalListboxClasses","_component_bento_listbox","debounce","debounceTime","timeoutId","DropdownBaseTextboxState","_sfc_main$1s","CrossCircleFillIcon","textbox","textboxId","isFiltering","onOpenDropdown","onCloseDropdown","onToggleDropdown","onSpaceBar","onClearSearch","onInputEvent","selectedValueItems","_hoisted_5","_withKeys","_createTextVNode","_toDisplayString","singleItem","_sfc_main$1p","ChevronDownIcon","ChevronUpIcon","DropdownBaseTextbox","_component_dropdown_base_textbox","_component_chevron_up_icon","_sfc_main$1m","ChevronDownSmallIcon","ChevronUpSmallIcon","_component_chevron_up_small_icon","useSearchBarFilter","searchTerm","searchTermRef","dataRef","searchTermLowerCased","_sfc_main$1l","BentoDropdownOptionsContainer","DropdownInputDefault","DropdownInputSmall","inputContainerRef","dropdownOptionsContainerId","labelId","descriptionConditionalClasses","toRef","filteredItems","isSearching","displayValue","selectedItem","selectedValueItem","_component_bento_dropdown_options_container","_sfc_main$1k","BentoDropdown","BentoAvatar","onInput","_component_bento_dropdown","_component_bento_avatar","useCountryCapital","useFallback","countryCode","languageLocale","normalizedCode","useCountryFlag","flagSrc","newCountryCode","flag","unknownFlag","useCountryName","useCountryPhoneCode","countryISOToPhoneCodes","BentoCountryVariant","BentoCountryCode","_sfc_main$1j","UnknownFlagIcon","variant","customLabel","flagIconSrc","countryName","countryLabel","getLabel","_component_unknown_flag_icon","useCountryItems","_sfc_main$1i","BentoCountry","_component_bento_country","_sfc_main$1h","ListboxOptionTag","slotProps","BentoPaymentMethodType","usePaymentIcon","paymentType","paymentIconSrc","newPaymentType","unknownPaymentType","_sfc_main$1g","UnknownCardIcon","paymentMethodIconSrc","conditionalIconClasses","_component_unknown_card_icon","_sfc_main$1f","BentoPaymentMethod","_component_bento_payment_method","_sfc_main$1e","_component_listbox_option_tag","DEFAULT_NUMBER_OF_RESULTS","PREDEFINED_RESULTS_PER_PAGE_VALUES","_sfc_main$1d","itemsPerPageValue","dropdownId","dropdownOptions","onSelectChange","selectedNumberOfResults","translationPathKey","_component_i18n","_sfc_main$1c","onPageSelectChange","selectedPage","transformIntoOption","transformToPageNumber","listOfAvailablePages","_sfc_main$17","SkipLeft","SkipRight","ChevronLeft","ChevronRight","isCurrentPageFirst","isCurrentPageLast","isNextButtonDisabled","isLastPageButtonDisabled","hasNoNextPage","hasNoTotalPagesNumber","pageArg","_component_skip_left","_component_chevron_left","_component_chevron_right","_component_skip_right","_sfc_main$16","BentoPaginationContext","BentoPaginationControls","BentoPaginationResultsPerPage","totalPages","navigate","onPageSelected","pageNumber","onItemsPerPageChange","elements","navigationConditionalClasses","_component_bento_pagination_controls","_component_bento_pagination_results_per_page","_component_bento_pagination_context","BentoFilterEvent","BentoFilterBarEvent","BentoFilterItemType","BentoPopoverPositions","_sfc_main$15","isStrongest","titleVariant","_sfc_main$13","CrossIcon","_sfc_main$12","BentoButtonActions","BentoPopoverDismissButton","BentoPopoverTitle","title","contentConditionalClasses","_Transition","_component_bento_popover_dismiss_button","_component_bento_popover_title","_component_bento_button_actions","BentoBaseButtonPropClass","BentoBaseButtonEvent","_sfc_main$11","_sfc_main$10","BaseButton","labelSlot","_component_base_button","_component_chevron_down_icon","_sfc_main$$","BaseFilterButton","_component_base_filter_button","BaseFilterEvent","_sfc_main$_","FilterBarFilterButton","BentoPopover","isFilterOpen","filterButtonRef","isPersistentFilter","closePopover","onClickSecondaryAction","onClickFilter","onClickApply","_directive_bento_click_outside_directive","_component_filter_bar_filter_button","_component_bento_popover","isValueEmpty","isEqual","first","second","useBaseFilter","appliedFilter","defaultFilter","internalFilterValue","isFilterInactive","isSecondaryButtonDisabled","isApplyButtonDisabled","BentoInputFieldVariant","BentoInputFieldElementPosition","BentoInputFieldStateClass","BentoInputFieldType","BentoInputFieldEvent","_sfc_main$Z","inputFieldElement","inputFieldId","shouldShowStaticValue","shouldDisplayStaticValueAtStart","shouldDisplayStaticValueAtEnd","shouldShowDropdown","shouldDisplayDropdownAtStart","shouldDisplayDropdownAtEnd","inputFieldConditionalClasses","_hoisted_8","_hoisted_7","truncate","aString","characterLimit","_sfc_main$Y","BentoBaseFilter","BentoInputField","inputTextRef","buttonLabel","appliedFiltersCount","onBeforeUpdate","openFilter","updateFilter","_component_bento_base_filter","_component_bento_input_field","requiredArgs","required","toDate","argument","argStr","isValid","dirtyDate","date","formatDistanceLocale","formatDistance","tokenValue","formatDistance$6","buildFormatLongFn","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatLong$5","formatRelativeLocale","formatRelative","_date","_baseDate","_options","formatRelative$5","buildLocalizeFn","dirtyIndex","dirtyOptions","valuesArray","defaultWidth","_defaultWidth","_width","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","rem100","localize","quarter","localize$5","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","rest","object","predicate","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match$5","enUS","toInteger","addMilliseconds","dirtyAmount","timestamp","amount","subMilliseconds","MILLISECONDS_IN_DAY","getUTCDayOfYear","startOfYearTimestamp","difference","startOfUTCISOWeek","weekStartsOn","day","diff","getUTCISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","addLeadingZeros","targetLength","sign","output","formatters","signedYear","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","formatters$3","dayPeriodEnum","era","lightFormatters","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","dirtyDelimiter","absOffset","minutes","delimiter","formatters$1","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","longFormatters$1","getTimezoneOffsetInMilliseconds","utcDate","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","input","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","defaultLocale","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","addDays","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","startOfDay","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","differenceInCalendarMonths","yearDiff","monthDiff","differenceInMilliseconds","roundingMap","defaultRoundingMethod","getRoundingMethod","method","endOfDay","endOfMonth","isLastDayOfMonth","differenceInMonths","isLastMonthNotFull","differenceInSeconds","startOfMonth","dirtyObject","property","cloneObject","MINUTES_IN_DAY","MINUTES_IN_ALMOST_TWO_DAYS","MINUTES_IN_MONTH","MINUTES_IN_TWO_MONTHS","dirtyBaseDate","comparison","localizeOptions","seconds","offsetInSeconds","months","days","nearestMonth","monthsSinceStartOfYear","years","formatDistanceToNow","distanceInWords","subMonths","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isWithinInterval","interval","time","startTime","endTime","setDay","dirtyDay","currentDay","remainder","dayIndex","delta","formatDistance$3","formatLong$3","formatRelative$3","formattingMonthValues","localize$3","match$3","de","form","formatDistance$1","formatLong$1","formatRelative$1","unit","feminineUnits","suffix","localize$1","match$1","fr","BentoDateFormat","_sfc_main$X","datePropAsDateObject","DatePickerCalendarDayVariant","DatePickerCalendarDayClass","DatePickerCalendarDayEvent","_sfc_main$W","BentoDate","isCurrentDay","today","selectedDay","_component_bento_date","DatePickerCalendarEvent","DatePickerCalendarPosition","DatePickerCalendarFirstDayOfWeek","_sfc_main$T","DatePickerCalendarDay","ChevronLeftIcon","ChevronRightIcon","fallbackFirstDayOfWeek","shouldShowPreviousMonthButton","shouldShowNextMonthButton","formattedMonthDate","daysOfWeek","dayOfWeekDate","weeksOfMonth","weeks","selectedDate","_component_date_picker_calendar_day","_component_chevron_left_icon","_component_chevron_right_icon","dayOfWeekFormatted","DatePickerCalendarPaneEvent","useSinglePane","internalValue","useRangePane","isDateDisabled","clickedDate","startDate","endDate","setDates","_sfc_main$S","DatePickerCalendar","baseDate","onDateInput","onMouseOver","offsetMonth","calendarIndex","_component_date_picker_calendar","_sfc_main$R","BentoDatePickerEvent","BentoDatePickerVariant","DatePickerCalendarRangeEvent","AdlLabelPosition","DateFormat","FORM_INPUT_DEBOUNCE_TIME","_sfc_main$Q","DatePickerCalendarPane","internalRangeDate","formatDate","dateToFormat","startDateError","endDateError","dateTextInput","isValidDate","dateText","isDateEnabled","onStartDateSelected","newStartDate","onEndDateSelected","newEndDate","getDate","keyName","dateProp","onStartDateInput","startDateText","onEndDateInput","endDateText","_component_date_picker_calendar_pane","useDatePickerSingleCalendarText","datePickerValue","isDateIncorrect","textInputDisplayValue","useDatePickerRangeCalendarText","dateFormat","_sfc_main$P","DatePickerCalendarRange","BentoDatePickerFirstDayOfWeek","datePickerContainerId","popoverAriaLabel","isDatePickerOpen","popoverConditionalClasses","dateDisplayValue","formatTextInputDisplayValue","dropdownValue","supportDescriptionText","closeDatePicker","stringDate","selectedRange","_component_dropdown_input_default","_component_date_picker_calendar_range","_sfc_main$O","BentoDatePicker","BentoDivider","clearFilter","resetFilter","onDateSelected","_component_bento_date_picker","_component_bento_divider","_sfc_main$N","formatFormDate","baseFilter","formData","onlySlot","cleanedProps","onDateInputSelected","BentoSearchBarInternalEvent","BentoSearchBarEvent","_sfc_main$L","SearchIcon","bentoInputField","_component_search_icon","_sfc_main$K","BentoSearchBar","itemsRef","itemsSelected","messageTranslation","listboxFilterId","closeFilter","singleSelectAmount","_withScopeId","_pushScopeId","_popScopeId","_component_bento_search_bar","_sfc_main$J","BentoSelectFilter","_component_bento_select_filter","_sfc_main$I","_sfc_main$H","listboxItems","onUpdate","countryItems","_sfc_main$G","_sfc_main$F","tagItems","BentoRadioGroupVariant","BentoRadioButtonStateClass","_sfc_main$E","radioButtonId","conditionalClassContainer","conditionalClassInput","_sfc_main$D","RadioButton","inputValue","_component_radio_button","_sfc_main$C","BentoRadioGroup","_component_bento_radio_group","_sfc_main$B","updateFrom","updateTo","bentoToastController","useBentoToastController","BentoModalVariant","BentoModalSize","BentoModalColumnLayoutVariant","BentoModalRole","BentoModalDialogType","BentoModalEvent","_sfc_main$A","GridLayout","modal","isOpen","customPadding","wrapperStyles","dividerStyles","hasColumnLayout","openModal","emitCloseEvent","closeModal","closeModalOnClickOutside","modalConditionalClasses","modalContentConditionalClasses","modalActionsConditionalClasses","computedColumnWidth","_normalizeStyle","_component_grid_layout","_sfc_main$z","BaseModal","destructiveActions","alignedActions","rightAlignedButtons","onCloseModal","_component_base_modal","_sfc_main$y","dialogType","onCloseActionButton","acknowledgementDialogActions","dialogActions","mandatoryCancelActionButton","updatedPassedActionsObject","modalDialogConditionalClasses","_sfc_main$x","BentoModalDefault","BentoModalDialog","hideCloseButton","size","isDismissible","content","actionsLabel","withColumnLayout","customProps","AllFiltersModalEvent","_sfc_main$w","_sfc_main$v","AllFiltersModalButton","BentoBooleanFilter","BentoDateFilter","BentoDateRangeFilter","BentoInputFilter","BentoModal","BentoRangeFilter","BentoSelectAvatarFilter","BentoSelectCurrencyFilter","BentoSelectCountryFilter","BentoSelectPaymentMethodFilter","BentoSelectTagFilter","filters","allFiltersModalUniqueId","allFiltersModalFiltersSection","isModalOpen","selectedFilterIndex","selectedFilterRef","allFiltersModalFilterButtons","sortAlphabetically","activeFilters","otherFilters","isEmptyResultForSearchFilter","selectedFilter","selectOpenedFilter","openedFilter","openedFilterIndex","computedCounts","filter","isClearButtonEnabled","numberOfActiveFilters","partialSum","computedCount","onClickAllFiltersModal","getFilterCount","selectFilter","filterLabel","filterField","onSearchbarClear","cancel","updatedFilter","updatedFilters","otherFields","clearAll","applyAll","isApplyAllButtonDisabled","modalActions","_component_bento_modal","_component_all_filters_modal_button","_hoisted_9","_sfc_main$u","AllFiltersModal","toastController","searchBarAriaLabel","hasHiddenFilters","visible","persistentFilters","defaultValue","regularFilters","isSearchBarEnabled","isClearAllVisible","isResetAllVisible","newFilters","filterIndex","previousFilters","clearedFilters","newSearchTerm","resetFilters","_component_all_filters_modal","BentoColumnOverflow","BentoDatagridStyleState","BentoDatagridSortDirection","BentoDatagridEvent","DatagridColumnsEvent","useResizer","columns","isResizing","columnWidthOverridesLookup","colKeyLookup","col","columnsRefs","allColumnRefs","stepPositionX","resizingColumnField","defaultResizedColumnWidths","field","minWidth","watchEffect","removeMouseMoveResizeListener","removeMouseUpResizeListener","onResizeColumn","sizeChange","currResizingColumnField","resizedColumnWidth","stopResize","hasResizableColumns","callbackMap","observerMap","observeSizeOfElement","elementToObserve","observer","callbackToInvoke","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MIN_WIDTH","DATAGRID_SELECT_FIELD_NAME","computeFlexColumnsWidth","initialFreeSpace","totalFlexUnits","flexCols","flexColumnsLookup","frozenColumnKeys","freezeColumn","processFlexItems","violationsLookup","remainingFreeSpace","flexUnits","totalViolation","flexColsLength","computedWidth","useCalculateColumnWidth","newColumns","bodyRef","body","gridWidth","stop","caclulatedWidths","widthAllocatedBeforeFlex","columnsLookup","columnDefs","fluidCol","computedColumnWidths","onColumnWidthOverride","newColumnWidthOverridesLookup","processedColumns","totalWidthOfAllColumns","gridColumnWidthStyle","useSorter","sortBy","direction","sortedCol","updatedSortBy","useSelector","selection","getDataItemId","isDataItemDisabled","selectedItems","allItemsSelectedState","emitSelect","onAllRowSelect","allItemsSelected","dataItem","onRowSelect","isEveryItemSelected","useColumnReorderer","columnsRef","hasDraggableColumnsRef","hasDraggableColumns","draggingColumns","onMoveColumnByOffset","movingColumn","fromIndex","toIndex","reorderedColumns","onDragStart","onDragEnter","onDrop","toLeftOfToIndex","firstUnfrozenColumn","onDragEnd","draggingEventsForColumns","draggingEventsForRowCell","useConfigSettings","sortedColumnsByFreezeState","frozenColumns","unfrozenColumns","columnSets","onConfigSettingsUpdate","isCompactView","onConfigSettingsColumnsUpdate","updatedColumn","updatedColumns","_sfc_main$s","InfoIcon","_component_info_icon","_sfc_main$q","BentoMenuEvent","_sfc_main$p","_sfc_main$o","MenuItem","MenuListContainer","subMenuItemListRefLocal","subMenuFocusedIndex","numberOfItems","closeMenu","onBackButton","computedItems","focusItem","focusPrevious","focusNext","_component_menu_list_container","_withModifiers","_component_menu_item","_sfc_main$n","SubMenuItemList","menuItemListRef","menuItemListWrapperRef","subMenuItemListRef","showSubMenu","visibleSubMenuIndex","focusedIndex","hasMenuItemsWithIcon","computedData","toggleMenu","focusRight","focusLeft","menuHeight","subMenuHeight","computedHeight","_component_sub_menu_item_list","_sfc_main$m","MenuItemList","OptionsVerticalIcon","menuButtonRef","showMenu","isLastElementFocused","menuId","computedMenuWidth","openMenu","_component_options_vertical_icon","_component_menu_item_list","_sfc_main$e","BentoInfoIcon","BentoMenu","TriangleUp","TriangleDown","allItemsSelectedCheckboxState","areAllItemsSelected","startResize","conditionalSortDirectionClasses","sortByColumnField","draggingEventsForColumn","contextualMenuData","ArrowLeftIcon","ArrowRightIcon","FreezeIcon","HideIcon","ShowIcon","conditionalColumnsClasses","conditionalColumnClasses","conditionalColumnSeparatorClasses","_component_bento_info_icon","_component_triangle_up","_component_triangle_down","_component_bento_menu","BentoTogglePropClass","_sfc_main$d","CheckmarkSmall","toggleInput","descriptionId","computedDescription","_component_checkmark_small","_component_cross_small","DatagridConfigSettingsEvent","_sfc_main$b","BentoFreezeIcon","BentoToggle","isFreezeIconOptionShown","isColumnFrozen","isColumnVisible","toggleColumnVisibility","toggleColumnFreeze","showFreezeIcon","hideFreezeIcon","freezeIconConditionalClasses","_component_bento_toggle","_component_bento_freeze_icon","_sfc_main$a","BentoCrossIcon","BentoSettingsIcon","BentoDataGridConfigSettingsConfigRow","BentoSearchIcon","configSettingsButtonRef","searchBarRef","isConfigSettingsPanelOpen","allColumnsVisbilityToggleState","isColumnVisibilityFilterShown","filteredColumnVisibilityColumns","clearAction","areAllNonMandatoryColumnsHidden","toggleColumnFilter","visibleColumns","isColumnVisibilityToggleDisabled","emitVisibleColumns","toggleAllColumnVisibility","toggleState","emitFrozenColumns","setConfigSettingsPanelVisibility","isVisible","_hoisted_10","_component_bento_settings_icon","_component_bento_cross_icon","_component_bento_search_icon","_hoisted_11","_component_bento_data_grid_config_settings_config_row","_sfc_main$9","DataGridColumns","BentoDataGridConfigSettings","BentoPagination","BentoFilterBar","selectable","allowColumnDragAndDrop","sortedColumns","onConfigSettingsColumnUpdate","conditionalGridClasses","computedColumnPanelAlignment","conditionalRowClasses","row","conditionalRowSetClasses","isFrozenRowSet","conditionalRowCellClasses","conditionalTitleAttribute","getRowData","rowData","conditionalPaginationClasses","configSettingsButtonStyle","ariaGridHeaderText","resizeEvent","page","itemsPerPage","_hoisted_12","_component_bento_filter_bar","_component_bento_data_grid_config_settings","columnSet","isFrozenColumns","_component_data_grid_columns","_component_bento_pagination","BentoCardBackground","BentoCardTitleSize","_sfc_main$8","cardId","showContent","showHeader","showCardBody","cardConditionalClasses","cardHeaderConditionalClasses","cardBodyConditionalClasses","cardContentConditionalClasses","cardActionsConditionalClasses","isNotExpandableWithoutContent","typography","BentoClickOutside","currencyExponentMap","getExponent","currencyCode","getMinorUnitsAmount","exponent","getNormalizedAmount","getNumberFormatOptions","majorUnits","minorAmount","amountInMinorUnits","style","minimumFractionDigits","maximumFractionDigits","getLocalizedCurrencyValue","amountValue","currency","numberFormatOptions","BentoCurrencyISOCode","_sfc_main$7","BentoLinkVariant","__default__","linkProps","useAttrs","onClick","navigateCallback","BentoHeaderVariant","_sfc_main$5","BentoStatusVariant","_sfc_main$4","TABS_REGISTER_TAB_INJECTION_KEY","TABS_ACTIVE_TAB_ID_KEY","_sfc_main$3","registerTab","activeTabId","getPreviousTabIndex","activeTabIndex","tabsValue","newActiveTabIndex","getNextTabIndex","_sfc_main$2","tabs","tablist","provide","onKeydownTabsNavigation","activeTab","tab","firstEnabledTab","_sfc_main$1","dismissButtonClicked","onActionClicked","_component_cross_icon","DURATION","ToastItem","dismissTimer","toastsToShow","cancelDismissTimer","startTimer","toastToDismiss","startDismissTimer","computedPositioning","numberOfElements","visibleToastHeight","stackHeight","_TransitionGroup","_component_toast_item"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA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,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA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","x_google_ignoreList":[1,2,3,4,20,21,23,24,25,29,30,42,44,45,46,47,48,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,90,100,101,103,104,125,126,127,128,134,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,221,222,239,273,275,282,283,284,285,286,287,288,293]}
|