@adyen/bento-vue2 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@types/components/button/button.vue.d.ts +4 -1
- package/dist/@types/components/data-grid/data-grid.types.d.ts +14 -0
- package/dist/@types/components/data-grid/data-grid.vue.d.ts +14 -2
- package/dist/@types/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.types.d.ts +4 -0
- package/dist/@types/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.vue.d.ts +15 -5
- package/dist/@types/components/dropdown/components/dropdown-default-textbox/dropdown-default-textbox.vue.d.ts +12 -3
- package/dist/@types/components/dropdown/components/variants/dropdown-avatar/dropdown-avatar.vue.d.ts +9 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-country/dropdown-country.vue.d.ts +9 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-currency/dropdown-currency.vue.d.ts +9 -0
- package/dist/@types/components/dropdown/components/variants/dropdown-payment-method/dropdown-payment-method.vue.d.ts +9 -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 +123 -0
- package/dist/@types/components/dropdown/dropdown.vue.d.ts +12 -3
- package/dist/@types/components/filter-bar/components/base-filter/base-filter.vue.d.ts +33 -7
- package/dist/@types/components/filter-bar/components/boolean-filter/boolean-filter.vue.d.ts +43 -0
- package/dist/@types/components/filter-bar/components/boolean-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/range-filter/range-filter.vue.d.ts +42 -0
- package/dist/@types/components/filter-bar/components/select-filter/index.d.ts +1 -0
- package/dist/@types/components/filter-bar/components/{listbox-filter/listbox-filter.vue.d.ts → select-filter/select-filter.vue.d.ts} +9 -7
- package/dist/@types/components/filter-bar/filter-bar.types.d.ts +8 -5
- package/dist/@types/components/input-field/input-field.types.d.ts +2 -1
- package/dist/@types/components/input-field/input-field.vue.d.ts +1 -0
- package/dist/@types/components/internal/listbox/components/listbox-multi-select/listbox-multi-select.vue.d.ts +9 -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-currency/listbox-option-currency.vue.d.ts → listbox-option-tag/listbox-option-tag.vue.d.ts} +2 -0
- package/dist/@types/components/internal/listbox/index.d.ts +1 -1
- package/dist/@types/components/internal/listbox/listbox.vue.d.ts +9 -0
- package/dist/@types/components/radio-group/radio-group.vue.d.ts +9 -0
- package/dist/@types/components/search-bar/search-bar.vue.d.ts +1 -0
- package/dist/@types/components/tabs/components/tab.types.d.ts +5 -0
- package/dist/@types/components/tabs/components/tab.vue.d.ts +3 -37
- package/dist/@types/components/tabs/index.d.ts +2 -3
- package/dist/@types/components/tabs/tabs.keys.d.ts +2 -1
- package/dist/@types/components/tabs/tabs.types.d.ts +4 -9
- package/dist/@types/components/tabs/tabs.utils.d.ts +3 -0
- package/dist/@types/components/tabs/tabs.vue.d.ts +13 -16
- package/dist/@types/components/toast/components/toast-item/toast-item.vue.d.ts +1 -0
- package/dist/@types/components/toast/index.d.ts +1 -1
- package/dist/@types/components.d.ts +2 -0
- package/dist/@types/index.d.ts +1 -0
- package/dist/index.js +3382 -3028
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/@types/components/filter-bar/components/listbox-filter/index.d.ts +0 -1
- package/dist/@types/components/internal/listbox/components/listbox-option-currency/index.d.ts +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../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","../src/utils/ts/unique-id.ts","../src/plugins/toastController.ts","../src/install.ts","../src/components/alert/alert.types.ts","../src/components/button/button.types.ts","../src/components/typography/typography.types.ts","../src/components/typography/typography.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/cross-circle-fill.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark-circle-fill.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/info-filled.vue","../src/utils/ts/aria-label.ts","../src/utils/ts/hasSlot.ts","../src/components/button/button.vue","../src/components/alert/alert.vue","../src/components/avatar-image/avatar-image.types.ts","../src/composables/initials.ts","../src/composables/use-default-slot-validator.ts","../src/composables/use-checkbox-select-all/use-checkbox-select-all.ts","../src/components/avatar-image/avatar-image.vue","../src/components/avatar/avatar.vue","../src/components/button/components/button-actions/button-actions.types.ts","../src/components/button/components/button-actions/button-actions.vue","../src/components/button/components/loading-button/loading-button.types.ts","../src/components/loading-indicator/loading-indicator.types.ts","../src/components/loading-indicator/loading-indicator.vue","../src/components/button/components/loading-button/loading-button.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark-small.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/minus-small.vue","../src/utils/ts/use-slot-text.ts","../src/components/checkbox/checkbox.vue","../src/components/controls-group/controls-group.vue","../src/components/checkbox/components/checkbox-group/checkbox-group.types.ts","../src/components/checkbox/components/checkbox-group/checkbox-group.vue","../src/components/internal/listbox/components/listbox-option/listbox-option.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark.vue","../src/components/internal/listbox/components/listbox-single-select-option/listbox-single-select-option.vue","../src/utils/ts/i18n.ts","../src/components/internal/listbox/components/listbox-multi-select/listbox-multi-select.vue","../src/components/internal/listbox/listbox.vue","../src/components/tag/tag.types.ts","../src/directives/click-outside/utils.ts","../src/directives/click-outside/useEventListener/index.ts","../src/directives/click-outside/on-click-outside.ts","../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","../src/components/focus-trap/focus-trap.types.ts","../src/components/focus-trap/focus-trap.utils.ts","../src/components/focus-trap/focus-trap.vue","../src/components/popper-container/popper-container.types.ts","../src/components/popper-container/popper-container.utils.ts","../src/components/popper-container/popper-container.vue","../src/directives/tooltip/tooltip.types.ts","../src/utils/ts/events.ts","../src/types/utils-events.ts","../src/components/tooltip/tooltip.vue","../src/directives/tooltip/tooltip.ts","../src/components/tag/tag.vue","../src/components/internal/listbox/components/listbox-option-currency/listbox-option-currency.vue","../src/components/dropdown/components/dropdown-options-container/dropdown-options-container.vue","../src/utils/ts/debounce/debounce.ts","../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","../src/components/dropdown/components/dropdown-default-textbox/dropdown-default-textbox.vue","../src/components/input-field/input-field.types.ts","../src/components/input-field/input-field.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/search.vue","../src/components/search-bar/search-bar.vue","../src/components/search-bar/useSearchBarDataFilter.ts","../src/components/dropdown/dropdown.vue","../src/components/dropdown/components/variants/dropdown-avatar/dropdown-avatar.vue","../src/components/country/composables/useCountryCapital/useCountryCapital.ts","../src/components/country/composables/useCountryFlag.ts","../src/components/country/composables/useCountryName/useCountryName.ts","../src/components/country/composables/useCountryPhoneCode/useCountryPhoneCode.ts","../src/components/country/country.types.ts","../src/components/country/country.vue","../src/components/dropdown/components/variants/dropdown-country/composables/useCountryItems.ts","../src/components/dropdown/components/variants/dropdown-country/dropdown-country.vue","../src/components/dropdown/components/variants/dropdown-currency/dropdown-currency.vue","../src/components/payment-method/payment-method.types.ts","../src/components/payment-method/composables/usePaymentIcon.ts","../src/components/payment-method/payment-method.vue","../src/components/dropdown/components/variants/dropdown-payment-method/dropdown-payment-method.vue","../src/components/pagination/components/pagination-results-per-page/pagination-results-per-page.vue","../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","../src/components/pagination/components/pagination-controls/pagination-controls.vue","../src/components/pagination/pagination.vue","../src/components/filter-bar/filter-bar.types.ts","../src/components/popover/popover.types.ts","../src/components/popover/components/popover-title/popover-title.vue","../src/components/popover/components/popover-dismiss-button/popover-dismiss-button.vue","../src/components/popover/popover.vue","../src/components/filter-bar/components/base-filter/components/filter-button/filter-button.vue","../src/components/filter-bar/components/base-filter/base-filter.vue","../src/components/filter-bar/components/base-filter/composables/use-base-filter.ts","../src/components/filter-bar/components/listbox-filter/listbox-filter.vue","../src/components/filter-bar/components/text-filter/text-filter.vue","../src/components/filter-bar/filter-bar.vue","../src/components/data-grid/data-grid.types.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-up.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-down.vue","../src/components/data-grid/composables/useResizer.ts","../src/utils/ts/resize.ts","../src/components/data-grid/composables/useCalculateColumnWidth/useCalculateColumnWidth.ts","../src/components/data-grid/composables/useSorter.ts","../src/components/data-grid/composables/useSelector.ts","../src/components/data-grid/composables/useConfigSettings.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/info.vue","../src/components/info-icon/info-icon.vue","../src/components/data-grid/components/data-grid-columns/data-grid-columns.vue","../src/components/toggle/toggle.types.ts","../src/types/label-position.ts","../src/components/toggle/toggle.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/settings.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross.vue","../src/components/data-grid/components/data-grid-config-settings/data-grid-config-settings.vue","../src/components/data-grid/data-grid.vue","../src/components/card/card.types.ts","../src/components/card/card.vue","../src/components/click-outside/click-outside.ts","../src/utils/ts/currency/countries-list.ts","../src/utils/ts/currency/currency.ts","../src/components/currency/currency.types.ts","../src/components/currency/currency.vue","../../../node_modules/date-fns/esm/_lib/toInteger/index.js","../../../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../../node_modules/date-fns/esm/toDate/index.js","../../../node_modules/date-fns/esm/addMilliseconds/index.js","../../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../../../node_modules/date-fns/esm/isDate/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/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/protectedTokens/index.js","../../../node_modules/date-fns/esm/format/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","../src/components/date/date.types.ts","../src/components/date/date.vue","../src/components/link/link.types.ts","../src/components/link/link.vue","../src/components/radio-group/radio-group.types.ts","../src/components/radio-group/components/radio-button/radio-button.vue","../src/components/radio-group/radio-group.vue","../src/components/status/status.types.ts","../src/components/status/status.vue","../src/components/toast/components/toast-item/toast-item.vue","../src/utils/ts/toastController.ts","../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 _Vue from 'vue';\nimport adlCssVars from '@adyen/bento-design-tokens/dist/css/adl/variables.css';\nimport adlLegacyCssVars from '@adyen/bento-design-tokens/dist/css/adl/variables-legacy.css';\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> = (\n Vue: typeof _Vue,\n options: { theme: BentoTheme; withToast: boolean }\n) => {\n if (options?.theme === BentoTheme.LEGACY) {\n setDefaultTheme();\n injectCSS(adlLegacyCssVars);\n injectCSS(bentoLegacyCssVars);\n } else {\n injectCSS(adlCssVars);\n injectCSS(bentoCssVars);\n }\n if (options?.withToast) {\n // Adds a new property to the Vue instance\n // eslint-disable-next-line no-param-reassign\n Vue.prototype.$bentoToastController = new ToastController();\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","\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-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","\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","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","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-label=\"ariaLabel\"\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 { useAriaLabel } from '@/utils/ts/aria-label';\n import { hasSlot } from '@/utils/ts/hasSlot';\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 }) {\n const labelSlot = computed((): string => (slots.default ? slots.default()[0]?.text : null));\n\n const ariaLabel = useAriaLabel({ ariaLabel: labelSlot });\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 ariaLabel,\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-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\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 import BentoButton from '../button/button.vue';\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","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","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 defaultSlotValue: string,\n ...optionalSlotsValue: string[]\n) => {\n onMounted(() => {\n if (!optionalSlotsValue[0]) {\n return;\n }\n\n optionalSlotsValue.forEach(optionalSlotValue => {\n if (!defaultSlotValue && optionalSlotValue) {\n throw new Error(\n `${componentName}: descriptive subLabel slots should only be provided together with #default slot`\n );\n }\n });\n });\n};\n","import { computed } from 'vue';\nimport type { ComputedRef, Ref } from 'vue';\nimport type { Fn } from '../../types';\nimport { BentoListboxMultiSelectValue, 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 {Ref<BentoListboxMultiSelectValue>} selectedItemsList - Reference to the list of selected items\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: Ref<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 <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","import type { VueNodeElement } from '../../../../types';\n\nexport interface BentoButtonActionObject {\n title: string;\n event: (event: Event) => void;\n icon?: VueNodeElement;\n disabled?: 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 <template v-for=\"(button, index) in reversedActionsList\">\n <bento-button\n :key=\"index\"\n :disabled=\"button.disabled\"\n :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 </template>\n </div>\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 { 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 * ```\n * [{\n * title: 'Primary',\n * event: () => { ... },\n * icon: FourPeopleIcon\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * disabled: 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","<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 { BentoButton, BentoButtonVariant } from '@/components/button';\n import { BentoLoadingButtonState } from './loading-button.types';\n import { BentoLoadingIndicator } from '@/components/loading-indicator';\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.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 type { Slot } from 'vue/types/v3-setup-context';\n\nexport const useSlotText = (slot: Slot): string => (slot ? slot?.()?.[0].text.trim() : null);\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 :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 stronger\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 { 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 { useSlotText } from '@/utils/ts/use-slot-text';\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 * 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 = useSlotText(slots.default);\n const descriptionSlotValue = useSlotText(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,\n defaultFallback: 'checkbox',\n });\n\n const conditionalClass = computed(() => ({ 'b-checkbox--disabled': disabled.value }));\n const conditionalClassOutline = computed(() => ({\n 'b-checkbox__outline--unchecked': !isChecked.value && !isIndeterminate.value,\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 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}\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 v-model=\"modelValue\"\n :value=\"item.value\"\n :disabled=\"disabled || item.disabled\"\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 { BentoCheckbox } from '@/components/checkbox';\n import { ControlsGroup } from '@/components/controls-group';\n import { BentoCheckboxGroupItems, BentoCheckboxGroupVariant } from './checkbox-group.types';\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 * 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 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","<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>\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","import Vue, { computed, getCurrentInstance } from 'vue';\nimport type { WritableComputedRef } from 'vue';\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\nexport function useI18n(): Composer {\n const instance = getCurrentInstance() as { proxy: Vue & { _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 const locale = computed({\n get() {\n return i18n.locale;\n },\n set(v: string) {\n i18n.locale = v;\n },\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 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(!isAllSelected)\"\n />\n <bento-typography :el=\"BentoTypographyElement.SPAN\">\n {{ selectAllCheckboxText }}\n </bento-typography>\n </bento-listbox-option>\n\n <hr class=\"b-listbox-multi-select__divider\" />\n\n <bento-listbox-option\n v-for=\"option in items\"\n :key=\"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<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } 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\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 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 * 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();\n const selectedItemsList = ref((props.selectedValues || []) as BentoListboxMultiSelectValue);\n\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\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 selectAllCheckboxText = computed(() => {\n const total = enabledItems.value.length;\n const amountSelectedValues = selectedItemsList.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 selectedItemsList.value = props.items\n .filter(filterOutDisabledAndNotPreselectedOptions)\n .map(({ value }) => value);\n emit('select', selectedItemsList.value);\n };\n\n const unselectAll = () => {\n const findDisabledPreselectedFields = option => {\n const { isDisabled, isPreSelected } = optionStates(option);\n return isDisabled && isPreSelected;\n };\n selectedItemsList.value = props.items.filter(findDisabledPreselectedFields).map(({ value }) => value);\n emit('select', selectedItemsList.value);\n };\n\n const { isAllSelected, isIndeterminate, toggleSelectAll } = useCheckboxSelectAll(\n selectedItemsList,\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 return {\n // Values\n isAllSelected,\n isIndeterminate,\n selectedItemsList,\n selectAllCheckboxText,\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 <!-- Multi select -->\n <template v-if=\"multiple\">\n <bento-listbox-multi-select\n :items=\"items\"\n :selected-values=\"selectedValue\"\n :is-option-disabled=\"isOptionDisabled\"\n @select=\"onOptionSelected\"\n >\n <template v-for=\"(_, slot) of $scopedSlots\" #[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\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-listbox-single-select-option>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { 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\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 },\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 * 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 * 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(_, { emit }) {\n const onOptionSelected = (selectedValue: BentoListboxSelectedValue) => {\n emit('select', selectedValue);\n };\n\n return { onOptionSelected };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./listbox.scss\" />\n","export enum BentoTagVariant {\n DEFAULT = 'default',\n BLUE = 'blue',\n GREEN = 'green',\n ORANGE = 'orange',\n RED = 'red',\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 './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 } : null\"\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 { deferAction, getArrowType, getNextFocusableElement, SCROLL_INTO_VIEW_OPTIONS } from './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 beforeDestroy() {\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 Vue, { 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 inheritAttrs: false,\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 beforeDestroy() {\n this.destroyPopper();\n },\n methods: {\n initPopper() {\n const popperElement =\n this.targetElement instanceof Vue\n ? (this.targetElement as Vue).$el\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 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 Vue from 'vue';\nimport { 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 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 :fallback-position=\"PopperContainerPositionExtended.AUTO\"\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 >\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\n /**\n * Tooltip container, to be used internally to render the tooltip container where the text is shown.\n */\n export default defineComponent({\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: PopperContainer.props?.targetElement.type, 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 class Tooltip {}\n</script>\n\n<style lang=\"scss\" scoped src=\"./tooltip.scss\" />\n","import Vue, { DirectiveOptions } from 'vue';\nimport { listen } from '../../utils/ts/events';\nimport { generateUid } from '../../utils/ts/unique-id';\nimport { KeyCode } from '../../types/utils-events';\nimport Tooltip from '../../components/tooltip/tooltip.vue';\nimport { BentoTooltipPosition, TooltipInstance } from './tooltip.types';\nimport type { DirectiveBinding } from 'vue/types/options';\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 TooltipComponent = Vue.extend(Tooltip);\nconst tooltipInstances: Array<TooltipInstance> = [];\nconst ariaDescribedByAttr = 'aria-describedby';\nconst tooltipId = generateUid('tooltip');\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\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 tooltip = new TooltipComponent({ propsData: { targetElement: el, content: '', id: tooltipId } }).$mount();\n // Tooltip is not mounted to any element, so it have to be manually appended to the DOM\n document.body.appendChild(tooltip.$el);\n};\n\n/**\n * Removes Tooltip component instance from the DOM and destroys it.\n * @internal\n */\nconst destroyTooltip = () => {\n document.body.removeChild(tooltip.$el);\n tooltip.$destroy();\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 tooltip.content = tooltipInstance.content;\n tooltip.position = tooltipInstance.position;\n\n // Do calculations on a next tick, otherwise tooltip position calculations will be wrong\n Vue.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};\n\n/**\n * On mouse leave event hides the tooltip.\n * @internal\n */\nconst hideTooltip = () => {\n open = false;\n tooltip.isShown = false;\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: DirectiveOptions = {\n bind(el, binding) {\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 update(el, binding) {\n const tooltipInstance = getTooltipInstanceForTarget(el);\n\n // Update tooltip content value if it is changed\n if (tooltipInstance.content !== binding.value) {\n tooltipInstance.content = binding.value;\n\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\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 unbind(el) {\n const context = getTooltipInstanceForTarget(el);\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","<template>\n <div\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 </div>\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.DEFAULT,\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-currency-option\">\n <span aria-hidden=\"true\">\n <bento-tag class=\"b-listbox-currency-option__tag\" :label=\"option.value.toString()\" />\n </span>\n <bento-typography :el=\"BentoTypographyElement.SPAN\" class=\"b-listbox-currency-option__label\">\n {{ option.label }}\n </bento-typography>\n </span>\n</template>\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import type { BentoListboxOptionItem } from '@/types';\n import { BentoTag } from '../../../../tag';\n import { BentoTypography, BentoTypographyElement } from '../../../../typography';\n\n /**\n * A Currency Dropdown option item used in the Dropdown and Filter components.\n */\n export default defineComponent({\n name: 'listbox-currency-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: () => ({ BentoTypographyElement }),\n });\n</script>\n<style lang=\"scss\" scoped src=\"./listbox-option-currency.scss\" />\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 role=\"listbox\"\n >\n <bento-listbox\n :id=\"id\"\n :aria-label=\"ariaLabel\"\n class=\"b-dropdown-options-container\"\n :is-option-disabled=\"isOptionDisabled\"\n :items=\"items\"\n :selected-value=\"selectedValue\"\n :multiple=\"multiple\"\n @select=\"onOptionSelected\"\n >\n <template v-for=\"(_, slot) of $scopedSlots\" #[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\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 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 * 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 * 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 isDropdownOpen = computed(() => props.open && !props.disabled);\n const onOptionSelected = (selectedValue: BentoListboxSelectedValue) => {\n emit('select', selectedValue);\n };\n\n return {\n // Values\n isDropdownOpen,\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","<template>\n <div\n data-testid=\"textbox-wrapper\"\n @click=\"onToggleDropdown\"\n @keydown.enter=\"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 @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>{{ 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\" 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\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: { type: Object as PropType<BentoListboxOptionItem>, default: undefined },\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--disabled': props.disabled,\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 = () => (props.open ? onCloseDropdown() : onOpenDropdown());\n const onSpaceBar = () => {\n if (!props.dynamicFiltering) {\n onToggleDropdown();\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 return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n conditionalClasses,\n textboxId,\n textbox,\n isFiltering,\n ariaAttributes,\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\">\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\" #[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 ChevronDownIcon from '@adyen/ui-assets-icons-16/vue/chevron-down';\n import ChevronUpIcon from '@adyen/ui-assets-icons-16/vue/chevron-up';\n import type { BentoListboxOptionItem } from '@/types';\n import { Booleanish } from '../../../../types';\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: { type: Object as PropType<BentoListboxOptionItem>, default: undefined },\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--error': props.isInvalid,\n 'b-dropdown-default-textbox--disabled': props.disabled,\n 'b-dropdown-default-textbox--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","export enum BentoInputFieldVariant {\n DEFAULT = 'default',\n PAYMENT_METHOD = 'payment-method',\n STATIC_VALUE = 'static-value',\n}\n\nexport enum BentoInputFieldStaticValuePosition {\n START = 'start',\n END = 'end',\n}\n\nexport enum BentoInputFieldStateClass {\n DISABLED = 'disabled',\n ERROR = 'error',\n}\n\nexport enum BentoInputFieldType {\n SEARCH = 'search',\n TEXT = 'text',\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 v-if=\"$slots.default\" class=\"b-input-field__label\" data-testid=\"input-field-label\" @click=\"focusInput\">\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 && $slots.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 && $slots.paymentMethod\"\n :aria-hidden=\"ariaHidden ? 'true' : undefined\"\n class=\"b-input-field__payment-method\"\n >\n <slot name=\"paymentMethod\" />\n </span>\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 ref=\"inputFieldElement\"\n class=\"b-input-field__input\"\n :aria-label=\"ariaLabel\"\n :type=\"type\"\n :value=\"value\"\n :disabled=\"disabled\"\n @input=\"onInput\"\n @keydown.esc=\"$emit('escape-pressed')\"\n />\n <span\n v-if=\"$slots.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 </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 BentoInputFieldStateClass,\n BentoInputFieldStaticValuePosition,\n BentoInputFieldType,\n BentoInputFieldVariant,\n } from '@/components/input-field/input-field.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { hasSlot } from '@/utils/ts/hasSlot';\n\n export default defineComponent({\n name: 'bento-input-field',\n components: { 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 * Adds error validation class for outlining input-field\n */\n error: { type: Boolean, default: false },\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<BentoInputFieldStaticValuePosition>,\n default: BentoInputFieldStaticValuePosition.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: ['input', 'escape-pressed'],\n setup(props, { slots, emit }) {\n const inputFieldElement = ref(null);\n\n const shouldShowStaticValue = computed(\n () => props.variant === BentoInputFieldVariant.STATIC_VALUE && slots.staticValue\n );\n\n const shouldDisplayStaticValueAtStart = computed(\n () =>\n shouldShowStaticValue.value &&\n props.staticValuePosition === BentoInputFieldStaticValuePosition.START\n );\n const shouldDisplayStaticValueAtEnd = computed(\n () =>\n shouldShowStaticValue.value && props.staticValuePosition === BentoInputFieldStaticValuePosition.END\n );\n\n const inputFieldConditionalClasses = computed(() => ({\n [`b-input-field--${BentoInputFieldStateClass.DISABLED}`]: props.disabled,\n [`b-input-field--${BentoInputFieldStateClass.ERROR}`]: props.error,\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('input', (event.target as HTMLInputElement).value);\n }\n };\n\n const focusInput = () => {\n inputFieldElement.value.focus();\n };\n\n return {\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n BentoInputFieldVariant,\n\n // Functions\n onInput,\n focusInput,\n hasSlot: hasSlot(slots),\n\n // Values\n inputFieldConditionalClasses,\n inputFieldElement,\n shouldDisplayStaticValueAtStart,\n shouldDisplayStaticValueAtEnd,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./input-field.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","<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 @input=\"onInputEvent\"\n @escape-pressed=\"$emit('escape-pressed')\"\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 } from 'vue';\n import { BentoInputField, BentoInputFieldType } from '@/components/input-field';\n import { debounce } from '@/utils/ts/debounce';\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\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 value being searched\n */\n value: { type: String, default: undefined },\n },\n emits: ['input', 'clear', 'escape-pressed'],\n setup(props, { emit }) {\n const searchTerm = ref(props.value);\n const bentoInputField = ref<InstanceType<typeof BentoInputField> | null>();\n\n const onClearSearch = () => {\n searchTerm.value = '';\n emit('clear');\n emit('input', '');\n };\n\n const onInputEvent = debounce(() => {\n emit('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 };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./search-bar.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 <dropdown-input-default\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 :open=\"isDropdownOpen\"\n :disabled=\"disabled\"\n :display-value=\"displayValue\"\n :dynamic-filtering=\"dynamicFiltering\"\n :is-invalid=\"false\"\n :selected-value-item=\"selectedValueItem\"\n @open=\"toggleDropdown\"\n @close=\"toggleDropdown\"\n >\n <template v-for=\"(_, slot) of $scopedSlots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </dropdown-input-default>\n <bento-dropdown-options-container\n v-if=\"inputContainerRef\"\n :id=\"dropdownOptionsContainerId\"\n :aria-label=\"ariaLabel\"\n :open=\"isDropdownOpen\"\n :disabled=\"disabled\"\n :selected-value=\"value\"\n :multiple=\"multiple\"\n :is-option-disabled=\"isOptionDisabled\"\n :items=\"filteredItems\"\n :target-element=\"inputContainerRef\"\n @select=\"onOptionSelected\"\n @close=\"toggleDropdown\"\n >\n <template v-for=\"(_, slot) of $scopedSlots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-dropdown-options-container>\n <bento-typography v-if=\"description\" class=\"b-dropdown__description\" :el=\"BentoTypographyElement.SPAN\">\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 BentoListboxOptionItem,\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 } from './components';\n import { useSearchBarFilter } from '../search-bar';\n import { BentoTypography, BentoTypographyElement } from '../typography';\n\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 },\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 * Sets the possibility to type into the textbox.\n */\n dynamicFiltering: {\n type: Boolean,\n default: false,\n },\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 * 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 // Filtering\n const searchTerm = ref('');\n const items = toRef(props, 'items');\n const filteredItems = useSearchBarFilter<BentoListboxOptionItem>(searchTerm, items);\n\n const displayValue = computed(() => {\n if (!props.multiple) {\n const selectedItem = props.items.find(({ value }) => value === props?.value);\n return selectedItem?.label || 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 : null;\n });\n\n const selectedValueItem = computed(() => props.items.find(({ value }) => value === props?.value));\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\n const closeOpenedDropdown = () => {\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 searchTerm,\n labelId,\n selectedValueItem,\n\n // Refs\n inputContainerRef,\n\n // Events\n closeOpenedDropdown,\n toggleDropdown,\n onOptionSelected,\n\n // Enums\n BentoTypographyElement,\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 BentoDropdown from '../../../dropdown.vue';\n import { BentoAvatarListboxOptions } from './dropdown-avatar.types';\n import { BentoAvatar } from '../../../../avatar';\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 VueI18n from 'vue-i18n';\nimport messages from './messages.json';\n\n/**\n * The local VueI18n object where the country name translations reside.\n */\nlet i18n: VueI18n;\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 if (!i18n) {\n i18n = new VueI18n({ messages });\n }\n\n return computed(() => {\n const normalizedCode = countryCode?.value?.toUpperCase();\n if (!i18n.te(normalizedCode, languageLocale.value)) {\n return useFallback ? countryCode.value : null;\n }\n return i18n.t(normalizedCode, { locale: languageLocale.value });\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 // Dynamically resolve flags icons URLs\n // Using import() here would make it asyncronous, requiring an update\n // right after the first render.\n // The only way to do it dynamically and syncronous is using require().\n // NOTE: This won't work for Vite because vite handles dynamic imports differently\n // This however works:\n // const flagCool = await import(\n // `../../../../../../node_modules/@adyen/ui-assets-flag-icons/svg/${newCountryCode.toLowerCase()}.svg`\n // );\n // See: https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars\n\n const flag = await import(`@adyen/ui-assets-flag-icons/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 VueI18n from 'vue-i18n';\nimport messages from './messages.json';\nimport { MaybeRef } from '../../../../types';\n\n/**\n * The local VueI18n object where the country name translations reside.\n */\nlet i18n: VueI18n;\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 if (!i18n) {\n i18n = new VueI18n({ messages });\n }\n\n return computed(() => {\n const normalizedCode = countryCode?.value?.toUpperCase();\n if (!i18n.te(normalizedCode, languageLocale.value)) {\n return useFallback ? countryCode.value : null;\n }\n return i18n.t(normalizedCode, languageLocale.value) as string;\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 '../typography';\n import { useCountryCapital, useCountryFlag, useCountryName, useCountryPhoneCode } from './composables';\n import { BentoCountryCode, BentoCountryVariant } from './country.types';\n import UnknownFlagIcon from '@adyen/ui-assets-flag-icons/vue/zz';\n import { useI18n } from '../../utils/ts/i18n';\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();\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 '../../../../../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();\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 from '../../../../country/country.vue';\n import { BentoCountryVariant } from '../../../../country';\n import BentoDropdown from '../../../dropdown.vue';\n import { useCountryItems } from './composables/useCountryItems';\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-currency :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 { ListboxOptionCurrency } from '../../../../internal';\n import BentoDropdown from '../../../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 ListboxOptionCurrency,\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 // Dynamically resolve flags icons URLs\n // Using import() here would make it asyncronous, requiring an update\n // right after the first render.\n // The only way to do it dynamically and syncronous is using require().\n // NOTE: This won't work for Vite because vite handles dynamic imports differently\n // This however works:\n // const flagCool = await import(\n // `../../../../../../node_modules/@adyen/ui-assets-payment-method-icons/dist/svg/${newCountryCode.toLowerCase()}.svg`\n // );\n // See: https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars\n\n const flag = await import(\n `@adyen/ui-assets-payment-method-icons/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 data-testid=\"payment-icon\"\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 { defineComponent, PropType, toRef } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '../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 setup(props) {\n const type = toRef(props, 'type');\n const paymentMethodIconSrc = usePaymentIcon(type);\n\n return {\n // Values\n paymentMethodIconSrc,\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 '../../../../payment-method';\n import BentoDropdown from '../../../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 <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 inheritAttrs: false,\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 inheritAttrs: false,\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 inheritAttrs: false,\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 { BentoListboxIsOptionDisabled, BentoListboxOptions, BentoListboxSelectedValue } from '../../types';\n\nexport interface BentoListboxFilterOptions {\n listboxItems: BentoListboxOptions;\n multiple?: boolean;\n isOptionDisabled?: BentoListboxIsOptionDisabled;\n}\n\nexport type BentoTextFilterValue = string | null;\nexport type BentoListboxFilterValue = BentoListboxSelectedValue;\nexport type BentoFilterBarValue = BentoTextFilterValue | BentoListboxFilterValue;\n\nexport type BentoFilterOptions = BentoListboxFilterOptions | undefined;\n\nexport enum BentoFilterItemType {\n TEXT = 'BentoTextFilter',\n LISTBOX = 'BentoListboxFilter',\n}\n\nexport interface BentoFilterModel {\n field: string;\n label: string;\n type: BentoFilterItemType;\n options?: BentoFilterOptions;\n value?: BentoFilterBarValue;\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","<template>\n <bento-button :class=\"conditionalClass\" :variant=\"BentoButtonVariant.TERTIARY\" @click=\"$emit('click')\">\n <template #iconLeft>\n <cross-circle-fill-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 CrossCircleFillIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n\n export default defineComponent({\n name: 'bento-popover-dismiss-button',\n components: { BentoButton, CrossCircleFillIcon },\n inheritAttrs: false,\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 <popper-container\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</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: 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`: 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 * 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 * 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 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 }));\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","<template>\n <button\n class=\"b-filter-button\"\n :class=\"conditionalClasses\"\n :disabled=\"disabled\"\n :aria-label=\"computedAriaLabel\"\n type=\"button\"\n @click=\"onClickButton\"\n >\n <bento-typography\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n class=\"b-filter-button__label\"\n >\n <slot />\n </bento-typography>\n\n <div v-if=\"amountAppliedValues\" class=\"b-filter-button__counter-wrapper\">\n <bento-typography\n class=\"b-filter-button__counter\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n >\n {{ amountAppliedValues }}\n </bento-typography>\n </div>\n </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 { computed, defineComponent } from 'vue';\n\n /**\n * A filter button used to open a popover where a filter can be applied.\n * Used in the bento-filter-bar component.\n *\n * @usage\n * export default {\n * components: { BentoFilterButton },\n * template: `\n * <bento-filter-button disabled>\n * Filter\n * </bento-filter-button>\n * `,\n * }\n */\n export default defineComponent({\n name: 'bento-filter-button',\n components: { BentoTypography },\n inheritAttrs: false,\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 emits: ['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-filter-button--with-counter`]: props.amountAppliedValues,\n }));\n\n const onClickButton = () => {\n if (!props.disabled) {\n emit('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 };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./filter-button.scss\" />\n","<template>\n <div v-bento-click-outside-directive=\"onClickOutside\" class=\"b-base-filter\" @keydown.esc=\"closePopover\">\n <bento-filter-button ref=\"filterButtonRef\" :amount-applied-values=\"appliedFiltersCount\" @click=\"onClickFilter\">\n {{ label }}\n </bento-filter-button>\n\n <bento-popover\n v-if=\"isFilterOpen && filterButtonRef\"\n divider\n :actions=\"actions\"\n :actions-layout=\"BentoButtonActionsLayout.SPACE_BETWEEN\"\n :target-element=\"filterButtonRef\"\n :title=\"label\"\n :position=\"BentoPopoverPositions.BOTTOM_START\"\n >\n <slot></slot>\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, 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 { BentoFilterButton } from './components';\n import { useI18n } from '@/utils/ts/i18n';\n\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-base-filter',\n components: {\n BentoFilterButton,\n BentoPopover,\n },\n directives: { BentoClickOutsideDirective },\n inheritAttrs: false,\n props: {\n /**\n * Total count of applied filters\n */\n appliedFiltersCount: { type: Number, default: null },\n\n /**\n * Disable the \"apply\" button\n */\n disableApplyButton: { type: Boolean, deafault: false },\n\n /**\n * Disable the \"clear\" button\n */\n disableClearButton: { type: Boolean, deafault: 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 * Current value of the filter\n */\n value: { type: String, default: null },\n },\n emits: ['apply', 'clear', 'open', 'close'],\n setup(props, { emit }) {\n const { t } = useI18n();\n const isFilterOpen = ref(false);\n const filterButtonRef = ref(null);\n\n const closePopover = () => {\n isFilterOpen.value = false;\n emit('close');\n };\n const onClickClear = () => {\n closePopover();\n emit('clear');\n };\n const onClickOutside = () => closePopover();\n const onClickFilter = () => {\n if (isFilterOpen.value) {\n closePopover();\n } else {\n isFilterOpen.value = true;\n emit('open');\n }\n };\n const onClickApply = () => {\n closePopover();\n emit('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: t('clear') as string,\n event: onClickClear,\n disabled: props.disableClearButton,\n },\n ]);\n\n return {\n // Values\n actions,\n isFilterOpen,\n\n // Enums\n BentoPopoverPositions,\n BentoTooltipPosition,\n\n // Events\n onClickFilter,\n onClickApply,\n onClickClear,\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 } from 'vue';\nimport type { Ref } from 'vue';\n\nconst isArray = <T>(value: T) => value instanceof Array;\nconst isValueEmpty = <T>(value: T) => (isArray(value) ? (value as []).length === 0 : !value);\n\nexport const useBaseFilter = <T>(appliedFilter: Ref<T>) => {\n const internalFilterValue = ref<T>(appliedFilter.value as T);\n\n const isFilterInactive = computed(() => isValueEmpty(appliedFilter.value));\n\n const isClearButtonDisabled = computed(() => isFilterInactive.value);\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 isClearButtonDisabled,\n isApplyButtonDisabled,\n };\n};\n","<template>\n <bento-base-filter\n :label=\"label\"\n :field=\"field\"\n :applied-filters-count=\"appliedFiltersCount\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n :disable-clear-button=\"isClearButtonDisabled\"\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @open=\"openFilter\"\n >\n <bento-listbox\n :id=\"listboxFilterId\"\n :aria-label=\"label\"\n class=\"b-listbox-filter__wrapper\"\n :items=\"filteredItems\"\n :is-option-disabled=\"options.isOptionDisabled\"\n :multiple=\"options.multiple\"\n :selected-value=\"internalFilterValue\"\n @select=\"onOptionSelected\"\n >\n <template v-for=\"(_, slot) of $scopedSlots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-listbox>\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 { BentoListbox } from '@/internal';\n import { BentoListboxSelectedValue } from '@/types';\n import { generateUid } from '@/utils/ts/unique-id';\n import { BentoListboxFilterOptions } from '../../filter-bar.types';\n\n /**\n * The Listbox filter displays a listbox of items\n * passed in the \"options.listboxItems\" property.\n *\n * @example\n * import { BentoListboxFilter } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoListboxFilter },\n * template: `\n * <bento-listbox-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-listbox-filter',\n components: {\n BentoBaseFilter,\n BentoListbox,\n },\n inheritAttrs: false,\n props: {\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 * 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<BentoListboxFilterOptions>,\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: null,\n },\n },\n\n setup(props, { emit }) {\n const { internalFilterValue, isClearButtonDisabled, isApplyButtonDisabled } = useBaseFilter(\n toRef(props, 'value')\n );\n\n const listboxFilterId = computed(() => generateUid(`filter-listbox-${props.field}`));\n const filteredItems = computed(() => props.options.listboxItems);\n const onOptionSelected = (selectedValue: BentoListboxSelectedValue) => {\n internalFilterValue.value = selectedValue;\n };\n\n const updateFilter = () => {\n emit('update', { ...props, value: internalFilterValue.value });\n };\n\n const clearFilter = () => {\n internalFilterValue.value = null;\n updateFilter();\n };\n\n const openFilter = () => {\n internalFilterValue.value = props.value;\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 isClearButtonDisabled,\n listboxFilterId,\n\n // Events\n clearFilter,\n onOptionSelected,\n openFilter,\n updateFilter,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./listbox-filter.scss\" />\n","<template>\n <bento-base-filter\n v-bind=\"$props\"\n :applied-filters-count=\"appliedFiltersCount\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n :disable-clear-button=\"isClearButtonDisabled\"\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @open=\"openFilter\"\n >\n <div class=\"b-text-filter\" @keydown.enter=\"updateFilter\">\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 { BentoInputField } from '@/components/input-field';\n\n export default defineComponent({\n name: 'bento-text-filter',\n components: {\n BentoBaseFilter,\n BentoInputField,\n },\n inheritAttrs: false,\n props: {\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 emits: ['update'],\n setup(props, { emit }) {\n const inputTextRef = ref(null);\n const { internalFilterValue, isClearButtonDisabled, isApplyButtonDisabled } = useBaseFilter<string>(\n toRef(props, 'value')\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 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('update', { ...props, value: internalFilterValue.value });\n };\n\n const clearFilter = () => {\n internalFilterValue.value = null;\n updateFilter();\n };\n\n return {\n // Values\n appliedFiltersCount,\n internalFilterValue,\n isApplyButtonDisabled,\n isClearButtonDisabled,\n\n // Refs\n inputTextRef,\n\n // Events\n updateFilter,\n clearFilter,\n openFilter,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./text-filter.scss\" />\n","<template>\n <div class=\"b-filter-bar\">\n <div class=\"b-filter-bar__filters-wrapper\">\n <component\n :is=\"filter.type\"\n v-for=\"filter in value\"\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 <bento-button\n v-show=\"isClearAllVisible\"\n class=\"b-filter-bar__clear-all\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n @click=\"clearAllFilters\"\n >\n {{ $t('clearAll') }}\n </bento-button>\n </div>\n <bento-search-bar\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 { BentoFilterBarModel, BentoFilterModel } from './filter-bar.types';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import { BentoListboxFilter } from './components/listbox-filter';\n import { BentoSearchBar } from '@/components/search-bar';\n import BentoTextFilter from './components/text-filter/text-filter.vue';\n\n import messages from './messages.json';\n import { useI18n } from '@/utils/ts/i18n';\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 BentoButton,\n BentoListboxFilter,\n BentoTextFilter,\n BentoSearchBar,\n },\n inheritAttrs: false,\n props: {\n /**\n * Search term useful to filter all the data by text\n */\n searchTerm: {\n type: BentoSearchBar.props.value.type,\n default: '',\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: ['input', 'search-clear', 'search-input', 'update:search-term'],\n setup(props, { emit }) {\n const { t } = useI18n();\n const searchBarAriaLabel = t('searchBar') as string;\n\n // Show the \"Clear all\" button (true) if at least one filter is active (contains a value)\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;\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('input', newFilters);\n };\n\n const clearAllFilters = () => {\n const clearedFilters = props.value.map(({ value, ...otherFields }) => ({\n ...otherFields,\n value: undefined,\n }));\n\n emit('input', clearedFilters);\n };\n\n const onSearchbarInput = (newSearchTerm: string) => {\n emit('search-input', newSearchTerm);\n emit('update:search-term', newSearchTerm);\n };\n const onSearchbarClear = () => {\n emit('search-clear');\n };\n\n return {\n // Values\n isClearAllVisible,\n searchBarAriaLabel,\n\n // Enums\n BentoButtonVariant,\n\n // Events\n updateFilterHandler,\n clearAllFilters,\n onSearchbarClear,\n onSearchbarInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./filter-bar.scss\" />\n","import { BentoPagination } from '../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}\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","\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","/* 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';\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 = (columns: Ref<BentoColumn[]>, emit: (event: string, ...args: unknown[]) => void) => {\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('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 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('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 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 };\n};\n\nexport default useResizer;\n","import Vue from 'vue';\n\nconst 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 instanceof Vue ? 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 } 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 observeSizeOfElement(body.value, ({ width }) => {\n gridWidth.value = width;\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 = 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(() => {\n const totalWidthOfAllCalculatedWidths = processedColumns.value.reduce((acc, val) => val.width + acc, 0);\n return gridWidth.value > totalWidthOfAllCalculatedWidths ? gridWidth.value : totalWidthOfAllCalculatedWidths;\n });\n\n const gridColumnWidthStyle = computed(() => ({\n gridTemplateColumns: processedColumns.value.map(({ width }) => `${width}px`).join(' '),\n gridColumnEnd: processedColumns.value.length + 1,\n width: `${totalWidthOfAllColumns.value}px`,\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';\n\nexport const useSorter = (\n sortBy: Ref<BentoDatagridSortByColumn[]>,\n columns: Ref<BentoColumn[]>,\n emit: (event: string, 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('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 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('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 { ref } from 'vue';\nimport { MaybeRef } from '../../../types';\nimport { BentoColumn } from '../data-grid.types';\n\n/**\n * All Datagrid configuration settings logic:\n * - Compact view toggle\n *\n * @param condensed - initial state of compact view toggle\n * @returns compact view data & event handler\n */\nexport const useConfigSettings = (\n condensed: MaybeRef<boolean>,\n columnsRef: MaybeRef<BentoColumn[]>,\n emit: (event: string, columns: BentoColumn[]) => void\n) => {\n const compactView = ref(condensed);\n const columns = ref(columnsRef);\n\n // eslint-disable-next-line no-return-assign\n const onConfigSettingsUpdate = (isCompactView: boolean) => (compactView.value = isCompactView);\n\n const onColumnVisibiltyChange = (columnIndexes: string[]) => {\n const newVisilityColumns = columns.value.map(col => ({ ...col, visible: columnIndexes.includes(col.field) }));\n emit('columns', newVisilityColumns);\n emit('update:columns', newVisilityColumns);\n };\n\n return { compactView, onConfigSettingsUpdate, onColumnVisibiltyChange };\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 v-bento-tooltip-directive=\"tooltipText\" class=\"b-info-icon\" :aria-label=\"tooltipText\" tabindex=\"0\">\n <info-icon svg-title=\"Additional info icon\" />\n </span>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent } from 'vue';\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</script>\n\n<style lang=\"scss\" scoped src=\"./info-icon.scss\" />\n","<template>\n <div :style=\"gridColumnWidthStyle\" class=\"b-data-grid-columns\" role=\"row\">\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 class=\"b-data-grid-columns__column\"\n role=\"columnheader\"\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\" 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=\"conditionalSortDirectionClasses(column.field, BentoDatagridSortDirection.DESCENDING)\"\n :svg-title=\"`${column.field}sort descending`\"\n :data-testid=\"`${column.field}-sort-icon-desc`\"\n />\n </div>\n <div\n v-if=\"index !== columns.length - 1\"\n :data-testid=\"`data-grid-column-${column.field}`\"\n :class=\"conditionalColumnSeperatorClasses\"\n class=\"b-data-grid-columns__column-seperator-container\"\n role=\"presentation\"\n @mousedown=\"startResize(hasResizableColumns, column.field, $event)\"\n @click.stop\n >\n <div class=\"b-data-grid-columns__column-seperator\"></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 TriangleUp from '@adyen/ui-assets-icons-16/vue/triangle-up';\n import TriangleDown from '@adyen/ui-assets-icons-16/vue/triangle-down';\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\n export default defineComponent({\n name: 'bento-data-grid',\n components: {\n BentoCheckbox,\n BentoInfoIcon,\n BentoTypography,\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 * If resize is enabled\n */\n hasResizableColumns: {\n type: Boolean,\n default: true,\n },\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 /**\n */\n gridColumnWidthStyle: {\n type: Object,\n required: true,\n },\n },\n emits: ['column-resize', 'sort', 'select-all-rows'],\n setup(props, { emit }) {\n const { columns, sortBy } = toRefs(props);\n\n // Selecting\n const allItemsSelectedCheckboxState = ref(props.allItemsSelectedState);\n const onAllRowSelect = (areAllItemsSelected: boolean) => emit('select-all-rows', areAllItemsSelected);\n // Resizing\n const { allColumnRefs, startResize } = useResizer(columns, emit);\n\n // Sorting\n const { conditionalSortDirectionClasses, sortByColumnField } = useSorter(sortBy, columns, emit);\n\n // Conditional column styles\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 });\n\n const conditionalColumnSeperatorClasses = computed(() => ({\n 'b-data-grid-columns__column-seperator-container--is-resizeable': props.hasResizableColumns,\n }));\n\n return {\n // Refs\n ...allColumnRefs,\n\n // Values\n DATAGRID_SELECT_FIELD_NAME,\n\n // Styles and classes\n conditionalColumnClasses,\n conditionalColumnSeperatorClasses,\n\n // Selecting\n allItemsSelectedCheckboxState,\n onAllRowSelect,\n\n // Sorting\n conditionalSortDirectionClasses,\n sortByColumnField,\n\n // Resizing\n startResize,\n\n // ENums\n BentoDatagridSortDirection,\n BentoTypographyElement,\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","export enum AdlLabelPosition {\n BEFORE = 'before',\n AFTER = 'after',\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__description\">\n <bento-typography\n v-if=\"defaultSlotValue\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n data-testid=\"inner-label\"\n >\n <slot></slot>\n </bento-typography>\n <bento-typography\n v-if=\"defaultSlotValue && subLabelSlotValue\"\n :id=\"descriptionId\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n class=\"b-toggle__sub-label\"\n >\n <slot name=\"subLabel\"></slot>\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 { useSlotText } from '@/utils/ts/use-slot-text';\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 = useSlotText(slots.default);\n const subLabelSlotValue = useSlotText(slots.subLabel);\n\n useDefaultSlotValidator('bento-toggle', defaultSlotValue, subLabelSlotValue);\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 subLabelSlotValue,\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<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","\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","<!-- 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 class=\"b-data-grid-config-settings\">\n <bento-button\n ref=\"configSettingsButtonRef\"\n :variant=\"BentoButtonVariant.SECONDARY\"\n @click=\"toggleConfigSettingsPanelVisibility\"\n >\n <template #iconLeft>\n <bento-settings-icon :svg-title=\"$t('toggleConfigSettingsPanelVisibility')\" />\n </template>\n </bento-button>\n <bento-popover\n v-if=\"isConfigSettingsPanelOpen && configSettingsButtonRef\"\n class=\"b-data-grid-config-settings__panel\"\n :aria-label=\"$t('configSettingsPanel')\"\n :target-element=\"configSettingsButtonRef\"\n :position=\"BentoPopoverPositions.BOTTOM_END\"\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=\"toggleConfigSettingsPanelVisibility\">\n <template #iconLeft>\n <bento-cross-circle-fill-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 <template v-for=\"column of filteredColumnVisibilityColumns\">\n <bento-toggle\n :key=\"column.field\"\n :aria-label=\"$t('toggleColumnVisibility', { label: column.label })\"\n :disabled=\"isColumnVisibilityToggleDisabled(column.field, column.mandatory)\"\n :label-position=\"AdlLabelPosition.AFTER\"\n :value=\"isColumnVisible(column.field)\"\n @input=\"toggleColumnVisiblity(column.field)\"\n >\n {{ column.label }}\n </bento-toggle>\n </template>\n <bento-typography\n v-if=\"filteredColumnVisibilityColumns.length === 0\"\n :el=\"BentoTypographyElement.SPAN\"\n class=\"b-data-grid-config-settings__column-visibility-no-columns-found\"\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, unref } from 'vue';\n import { BentoPopover, BentoPopoverPositions } from '../../../popover';\n import { BentoButton, BentoButtonVariant } from '../../../button';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '../../../typography';\n import { BentoToggle } from '../../../toggle';\n import messages from './messages.json';\n import { AdlLabelPosition } from '../../../../types';\n import { BentoColumn } from '../../data-grid.types';\n import { BentoSearchBar, useSearchBarFilter } from '../../../search-bar';\n import BentoSettingsIcon from '@adyen/ui-assets-icons-16/vue/settings';\n import BentoCrossCircleFillIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import BentoCrossIcon from '@adyen/ui-assets-icons-16/vue/cross';\n import BentoSearchIcon from '@adyen/ui-assets-icons-16/vue/search';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-data-grid',\n components: {\n BentoCrossIcon,\n BentoCrossCircleFillIcon,\n BentoPopover,\n BentoSettingsIcon,\n BentoButton,\n BentoSearchBar,\n BentoSearchIcon,\n BentoToggle,\n BentoTypography,\n },\n inheritAttrs: false,\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: ['config-settings', 'visible-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 columnVisilibity = computed(() =>\n props.columns.filter(col => col?.visible !== false).map(col => col.field)\n );\n\n const isColumnVisible = (fieldName: string) => columnVisilibity.value.includes(fieldName);\n\n const isColumnVisibilityToggleDisabled = (fieldName: string, isMandatory: boolean) =>\n isMandatory || (columnVisilibity.value.length === 1 && isColumnVisible(fieldName));\n\n const toggleConfigSettingsPanelVisibility = () => {\n isConfigSettingsPanelOpen.value = !isConfigSettingsPanelOpen.value;\n allColumnsVisbilityToggleState.value = areAllNonMandatoryColumnsHidden.value;\n };\n\n const toggleColumnVisiblity = (fieldName: string) => {\n const visibleColumns = unref(columnVisilibity.value);\n const index = visibleColumns.indexOf(fieldName);\n if (index === -1) {\n visibleColumns.push(fieldName);\n } else {\n visibleColumns.splice(index, 1);\n }\n emit('visible-columns', visibleColumns);\n };\n\n const toggleAllColumnVisibility = (toggleState: boolean) => {\n if (toggleState) {\n // Show all columns\n emit(\n 'visible-columns',\n props.columns.map(col => col.field)\n );\n } else {\n // Hide all columns except for mandatory columns\n emit(\n 'visible-columns',\n props.columns.filter(col => col.mandatory).map(col => col.field)\n );\n }\n };\n\n // Condensed view\n const emitCondensedToggle = (isCompactView: boolean) => emit('config-settings', isCompactView);\n\n return {\n // Values\n configSettingsButtonRef,\n isConfigSettingsPanelOpen,\n isColumnVisibilityToggleDisabled,\n allColumnsVisbilityToggleState,\n filteredColumnVisibilityColumns,\n searchTerm,\n isColumnVisibilityFilterShown,\n searchBarRef,\n\n // Methods\n toggleConfigSettingsPanelVisibility,\n emitCondensedToggle,\n isColumnVisible,\n toggleColumnVisiblity,\n toggleAllColumnVisibility,\n clearAction,\n toggleColumnFilter,\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 class=\"b-data-grid__filters-and-col-settings\">\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('update:filters', filters)\"\n />\n <bento-data-grid-config-settings\n v-if=\"columnPanel\"\n :columns=\"columns\"\n :condensed=\"compactView\"\n @config-settings=\"onConfigSettingsUpdate\"\n @visible-columns=\"onColumnVisibiltyChange\"\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 <div role=\"rowgroup\">\n <bento-data-grid-columns\n :columns=\"columnDefs\"\n :has-resizable-columns=\"hasResizableColumns\"\n :grid-column-width-style=\"gridColumnWidthStyle\"\n :sort-by=\"sortBy\"\n :all-items-selected-state=\"allItemsSelectedState\"\n @column-resize=\"onColumnResized\"\n @column-resizing=\"onColumnWidthOverride\"\n @sort=\"onSort\"\n @select-all-rows=\"onAllRowSelect\"\n >\n <template v-for=\"(_, slot) of $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-data-grid-columns>\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 >\n <div\n v-for=\"column in columnDefs\"\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 >\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 </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 '../checkbox';\n import { BentoPagination } from '../pagination';\n import { BentoFilterBar } from '../filter-bar';\n import { BentoLoadingIndicator } from '../loading-indicator';\n import {\n BentoColumn,\n BentoColumnOverflow,\n BentoDatagridData,\n BentoDatagridDataItem,\n BentoDatagridDataItemId,\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 { BentoDataGridColumns, BentoDataGridConfigSettings } from './components';\n import messages from './messages.json';\n import { DATAGRID_SELECT_FIELD_NAME, useCalculateColumnWidth, useConfigSettings, useSelector } from './composables';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-data-grid',\n components: {\n BentoCheckbox,\n BentoDataGridColumns,\n BentoDataGridConfigSettings,\n BentoLoadingIndicator,\n BentoPagination,\n BentoFilterBar,\n BentoTypography,\n },\n inheritAttrs: false,\n props: {\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 column settings panel.\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 'column-resize',\n 'sort',\n 'select',\n 'navigate',\n 'update:filters',\n 'items-page',\n 'update:filter-search-term',\n 'filter-search-input',\n 'filter-search-clear',\n ],\n setup(props, { emit, slots }) {\n /* == Variables and references == */\n // Create refs for elements\n const body = ref<HTMLDivElement>(null);\n const { columns, selectable, data, selection, condensed } = toRefs(props);\n /* == Composable logic == */\n // Column width calculation\n const { columnDefs, onColumnWidthOverride, gridColumnWidthStyle } = useCalculateColumnWidth(columns, body, {\n hasSelectableColumn: selectable,\n });\n // Config Settings\n const { compactView, onConfigSettingsUpdate, onColumnVisibiltyChange } = useConfigSettings(\n condensed,\n columns,\n emit\n );\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 // Conditional row classes\n const conditionalRowClasses = (row: BentoDatagridDataItem) => ({\n 'b-data-grid__row--disabled': props.isDataItemDisabled(row),\n });\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': compactView.value,\n [`b-data-grid__cell--overflow-${BentoColumnOverflow.ELLIPSIS}`]:\n column?.overflow === BentoColumnOverflow.ELLIPSIS,\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 // 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('column-resize', resizeEvent);\n // Sorting\n const onSort = (updatedSortBy: BentoDatagridSortByColumn[]) => emit('sort', updatedSortBy);\n // Pagination\n const onPaginationNavigate = (page: number) => emit('navigate', page);\n const onItemsPerPageChange = (itemsPerPage: number) => emit('items-page', itemsPerPage);\n // Filter bar\n const onSearchTermCleared = () => {\n emit('filter-search-clear');\n };\n const onSearchTermInput = newSearchTerm => {\n emit('update:filter-search-term', newSearchTerm);\n emit('filter-search-input', newSearchTerm);\n };\n\n return {\n // Refs\n body,\n columnDefs,\n\n // Labels and text\n ariaGridHeaderText,\n conditionalTitleAttribute,\n getRowData,\n\n // Styles and classes\n gridColumnWidthStyle,\n conditionalGridClasses,\n conditionalRowClasses,\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\n // Config settings\n compactView,\n onConfigSettingsUpdate,\n onColumnVisibiltyChange,\n\n // Enums\n BentoDatagridSortDirection,\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Pagination props and events\n onPaginationNavigate,\n onItemsPerPageChange,\n\n // Filterbar events\n onSearchTermCleared,\n onSearchTermInput,\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","<template>\n <div class=\"b-card\" :class=\"cardConditionalClasses\" data-testid=\"card\" @click=\"onClick\">\n <div\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 :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.SUBTITLE\"\n stronger\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 v-if=\"hasSlot('content')\" class=\"b-card__content\" aria-label=\"card content\">\n <slot name=\"content\" />\n </div>\n\n <div v-if=\"actions\" class=\"b-card__actions\" aria-label=\"card actions\">\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 } 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 * The whole content of the card will be expandable in accordion manner\n */\n expandable: {\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(true);\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--with-body': !props.expandable && hasSlot(slots)('content'),\n }));\n\n const cardBodyConditionalClasses = computed(() => ({\n 'b-card__body--expandable': props.expandable && hasSlot(slots)('content'),\n }));\n\n const showCardBody = computed(\n () =>\n (hasSlot(slots)('content') || props.actions?.length) &&\n (!props.expandable || (props.expandable && showContent.value))\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 showCardBody,\n showContent,\n tabIndex,\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 */\nexport function getNumberFormatOptions(\n amount: CurrencyAmount,\n options: CurrencyOptions = {}\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 = getMinorUnitsAmount(amount);\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 isShort - if set to true, removes currency symbol before the number value.\n */\nexport const getLocalizedCurrencyValue = (amountValue: string, currency: string, isShort?: boolean): string => {\n const amount: CurrencyAmount = { value: parseFloat(amountValue), currency };\n const formatOptions = isShort ? { style: 'decimal' } : null;\n\n const numberFormatOptions = getNumberFormatOptions(amount, formatOptions);\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 * Removes currency symbol before the number value\n */\n shorthand: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const formattedCurrency = computed((): string => {\n const value = slots.default ? slots.default()[0]?.text : null;\n return getLocalizedCurrencyValue(value, props.currency, props.shorthand);\n });\n\n return {\n // Values\n formattedCurrency,\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n","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}","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 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 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}","/**\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}","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 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;","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;","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}","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 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-currency__amount\"\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';\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 * JavaScript \"Date\" object\n */\n date: {\n type: Date,\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();\n // TODO to replace with dynamic import\n const locales = { de, enUS, fr };\n\n const formattedDate = computed(() =>\n format(props.date, props.format, { locale: locales[locale.value.substring(0, 2)] || enUS })\n );\n\n return {\n // Values\n formattedDate,\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 target=\"_blank\"\n :title=\"linkProps.title\"\n >\n <slot />\n </a>\n <router-link\n v-else\n v-slot=\"slotProps\"\n class=\"b-link\"\n :class=\"conditionalClasses\"\n v-bind=\"linkProps\"\n :to=\"linkProps.to\"\n custom\n >\n <a\n v-bind=\"$attrs\"\n :href=\"slotProps.href\"\n :class=\"slotProps.isActive ? linkProps.activeClass : ''\"\n @click=\"slotProps.navigate\"\n >\n <slot v-bind=\"slotProps\" />\n </a>\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 } 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</script>\n\n<style lang=\"scss\" scoped src=\"./link.scss\" />\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}\n\nexport type BentoRadioGroupItems = Array<BentoRadioGroupItem>;\n","<template>\n <div class=\"b-radio-button\" data-testid=\"radio-button-container\" :class=\"conditionalClass\">\n <input\n :id=\"radioButtonId\"\n :aria-checked=\"isChecked\"\n :aria-label=\"ariaLabel\"\n :checked=\"isChecked\"\n :disabled=\"disabled\"\n :value=\"value\"\n type=\"radio\"\n class=\"b-radio-button__input\"\n role=\"radio\"\n @change=\"onClick\"\n />\n <label v-if=\"defaultSlotValue\" :for=\"radioButtonId\" class=\"b-radio-button__description\">\n <bento-typography\n v-if=\"defaultSlotValue\"\n class=\"b-radio-button__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n >\n <slot></slot>\n </bento-typography>\n <bento-typography\n v-if=\"defaultSlotValue && subLabelSlotValue\"\n class=\"b-radio-button__sub-label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"subLabel\"></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 { 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 { useSlotText } from '@/utils/ts/use-slot-text';\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 #subLabel>Sub label text</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 /**\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 = useSlotText(slots.default);\n const subLabelSlotValue = useSlotText(slots.subLabel);\n\n useDefaultSlotValidator('radio-button', defaultSlotValue, subLabelSlotValue);\n\n const conditionalClass = computed(() => ({ 'b-radio-button--disabled': props.disabled }));\n\n const ariaLabel = useAriaLabel({\n ariaLabel: slots.default?.()[0].text.trim(),\n label: value.value as string,\n });\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 isChecked,\n defaultSlotValue,\n subLabelSlotValue,\n conditionalClass,\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 @input=\"onInput\"\n >\n {{ item.label }}\n <template v-if=\"item.description\" #subLabel>{{ item.description }}</template>\n </radio-button>\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 { 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 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 checkboxes in the group in a disabled state.\n */\n disabled: {\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-radio-group--horizontal': props.variant === BentoRadioGroupVariant.HORIZONTAL,\n }));\n const inputValue = ref(props.items[0].value);\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","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 :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.BODY\">\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","<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=\"() => action.handler()\"\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\n return {\n // Enums\n BentoButtonVariant,\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Methods\n dismissButtonClicked,\n hasSlot: hasSlot(slots),\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./toast-item.scss\" />\n","import Vue, { getCurrentInstance } from 'vue';\nimport BentoToastController from '../../plugins/toastController';\n\nlet bentoToastController: BentoToastController = null;\n\nexport function useBentoToastController(): BentoToastController {\n const instance = getCurrentInstance() as { proxy: Vue & { $bentoToastController } } | null;\n const vm = instance.proxy;\n\n if (vm?.$bentoToastController) {\n bentoToastController = vm.$bentoToastController;\n }\n\n return bentoToastController;\n}\n\nexport function installToastControllerPlugin() {\n Vue.use(app => {\n // Adds a new property to the Vue instance\n // eslint-disable-next-line no-param-reassign\n app.prototype.$bentoToastController = new BentoToastController();\n });\n}\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","BentoTheme","setDefaultTheme","install","Vue","adlLegacyCssVars","bentoLegacyCssVars","adlCssVars","bentoCssVars","BentoVue","BentoAlertSeverityOption","BentoButtonVariant","BentoButtonPropClass","BentoTypographyVariant","BentoTypographyModifier","BentoTypographyElement","_sfc_main$1e","defineComponent","props","computed","uuid","_sfc_main","useAriaLabel","ariaLabel","label","defaultFallback","computedAriaLabel","ref","computedLabel","computedDefaultFallback","hasSlot","slots","name","_sfc_main$18","BentoTypography","emit","labelSlot","_a","variantClass","conditionalClasses","_sfc_main$17","CrossSmall","BentoButton","Warning","CrossCircle","CheckedCircle","Info","alertConditionalClasses","computedRole","onCloseButtonClick","onMounted","BentoAvatarImageVariant","BentoAvatarImageColor","useInitials","username","computedUsername","useDefaultSlotValidator","componentName","defaultSlotValue","optionalSlotsValue","optionalSlotValue","useCheckboxSelectAll","selectedItemsList","items","selectAll","unselectAll","isAllSelected","isIndeterminate","selectedValue","_sfc_main$16","toRefs","initials","_sfc_main$15","AvatarImage","charCode","avatarColor","rangeStep","BentoButtonActionsLayoutBasic","BentoButtonActionsLayoutExtended","BentoButtonActionsLayout","_sfc_main$13","layout","reversedActionsList","generateButtonVariantByIndex","actionIndex","lastActionIndex","BentoLoadingButtonState","BentoLoadingIndicatorEvent","_sfc_main$12","onUnmounted","_sfc_main$11","Cross","Checkmark","BentoLoadingIndicator","isInverseLoadingIndicator","useSlotText","slot","_sfc_main$_","CheckmarkSmallIcon","MinusSmallIcon","disabled","indeterminate","modelValue","descriptionSlotValue","isCheckboxGroup","isChecked","item","ariaChecked","_b","conditionalClass","conditionalClassOutline","event","newValue","newCheckedList","index","_sfc_main$Z","legendConditionalClasses","BentoCheckboxGroupVariant","_sfc_main$Y","BentoCheckbox","ControlsGroup","_sfc_main$X","_sfc_main$V","BentoListboxOption","CheckmarkIcon","onOptionSelected","ariaDisabled","ariaSelected","tabIndex","i18n","useI18n","vm","getCurrentInstance","v","_sfc_main$U","messages","t","optionStates","option","isDisabled","isPreSelected","enabledItems","selectAllCheckboxText","total","amountSelectedValues","filterOutDisabledAndNotPreselectedOptions","findDisabledPreselectedFields","toggleSelectAll","exists","_sfc_main$T","BentoListboxSingleSelectOption","BentoListboxMultiSelect","_","BentoTagVariant","isClient","defaultWindow","isIOS","resolveUnref","r","unref","unrefElement","elRef","plain","noop","isString","val","useEventListener","args","target","events","listeners","cleanups","cleanup","fn","register","el","listener","registerOptions","stopWatch","watch","stopWatchOptions","_iOSWorkaround","onClickOutside","handler","window","ignore","capture","detectIframe","shouldListen","shouldIgnore","BentoClickOutsideDirective","targetElement","binding","FOCUS_GROUP","FOCUS_DISABLED","FOCUS_ALLOW","FOCUS_AUTO","FOCUS_NO_AUTOFOCUS","toArray","ret","asArray","isElementHidden","node","computedStyle","getParentNode","isTopNode","isVisibleUncached","checkParent","isVisibleCached","visibilityCache","cached","result","isAutoFocusAllowedUncached","isAutoFocusAllowed","isAutoFocusAllowedCached","cache","getDataset","isHTMLButtonElement","isHTMLInputElement","isRadioElement","notHiddenInput","attribute","isGuard","isNotAGuard","isDefined","x","tabSort","b","tabDiff","indexDiff","orderByTabIndex","nodes","filterNegative","keepGuards","data","tabbables","queryTabbables","queryGuardTabbables","getFocusablesWithShadowDom","parent","withGuards","acc","child","getFocusables","parents","getParentAutofocusables","parentFocus","filterFocusable","filterAutoFocusable","getTabbableNodes","topNodes","getAllTabbableNodes","parentAutofocusables","topNode","contains","scope","element","filterNested","contained","l","j","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","lastIndex","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$S","moveFocusInside","currentTag","isArrowNext","isArrowPrev","focusableEl","focusOnDestroyEl","PopperContainerPositionBasic","PopperContainerPositionExtended","PopperContainerAriaRole","PopperContainerPosition","getArrowModifier","arrow","arrowProps","getOffsetModifier","getFlipModifier","fallbackPosition","arrowDataHideAttributeModifier","state","sameWidthModifier","_sfc_main$R","BentoFocusTrap","currentModifiers","strategy","popperElement","createPopper","BentoTooltipPosition","BentoTooltipState","optionsSupport","support","listen","type","cleanupBatch","eventType","eventOptions","useNativeOnce","eventListener","KeyCode","_sfc_main$Q","PopperContainer","TooltipComponent","Tooltip","tooltipInstances","ariaDescribedByAttr","tooltipId","tooltip","open","createTooltip","destroyTooltip","getTooltipPosition","getTooltipInstanceForTarget","ctx","showTooltip","tooltipInstance","hideTooltip","BentoTooltipDirective","show","hide","evt","context","removeListener","_sfc_main$P","tagConditionalClasses","textFromSlot","shouldShowTooltip","formattedText","_sfc_main$O","BentoTag","_sfc_main$N","BentoListbox","debounce","debounceTime","timeoutId","_sfc_main$M","CrossCircleFillIcon","textbox","textboxId","isFiltering","ariaAttributes","onOpenDropdown","onCloseDropdown","onToggleDropdown","onSpaceBar","onClearSearch","onInputEvent","_sfc_main$J","ChevronDownIcon","ChevronUpIcon","DropdownBaseTextbox","isDropdownOpen","BentoInputFieldVariant","BentoInputFieldStaticValuePosition","BentoInputFieldStateClass","BentoInputFieldType","_sfc_main$I","inputFieldElement","shouldShowStaticValue","shouldDisplayStaticValueAtStart","shouldDisplayStaticValueAtEnd","inputFieldConditionalClasses","_sfc_main$G","BentoInputField","SearchIcon","searchTerm","bentoInputField","useSearchBarFilter","searchTermRef","dataRef","searchTermLowerCased","_sfc_main$F","BentoDropdownOptionsContainer","DropdownInputDefault","inputContainerRef","dropdownOptionsContainerId","labelId","toRef","filteredItems","displayValue","selectedItem","selectedValueItem","_sfc_main$E","BentoDropdown","BentoAvatar","onInput","src","useCountryCapital","code","locale","useFallback","countryCode","languageLocale","VueI18n","normalizedCode","useCountryFlag","flagSrc","newCountryCode","flag","unknownFlag","useCountryName","useCountryPhoneCode","countryISOToPhoneCodes","BentoCountryVariant","BentoCountryCode","_sfc_main$D","UnknownFlagIcon","variant","customLabel","flagIconSrc","countryName","countryLabel","getLabel","useCountryItems","_sfc_main$C","BentoCountry","_sfc_main$B","ListboxOptionCurrency","_props","BentoPaymentMethodType","usePaymentIcon","paymentType","paymentIconSrc","newPaymentType","unknownPaymentType","_sfc_main$A","UnknownCardIcon","_sfc_main$z","BentoPaymentMethod","DEFAULT_NUMBER_OF_RESULTS","PREDEFINED_RESULTS_PER_PAGE_VALUES","_sfc_main$y","itemsPerPageValue","dropdownId","dropdownOptions","onSelectChange","selectedNumberOfResults","translationPathKey","_sfc_main$x","onPageSelectChange","selectedPage","transformIntoOption","transformToPageNumber","listOfAvailablePages","_sfc_main$s","SkipLeft","SkipRight","ChevronLeft","ChevronRight","isCurrentPageFirst","isCurrentPageLast","isNextButtonDisabled","isLastPageButtonDisabled","hasNoNextPage","hasNoTotalPagesNumber","pageArg","_sfc_main$r","BentoPaginationContext","BentoPaginationControls","BentoPaginationResultsPerPage","totalPages","navigate","onPageSelected","pageNumber","onItemsPerPageChange","elements","navigationConditionalClasses","BentoFilterItemType","BentoPopoverPositions","_sfc_main$q","isStrongest","titleVariant","_sfc_main$p","_sfc_main$o","BentoButtonActions","BentoPopoverDismissButton","BentoPopoverTitle","title","contentConditionalClasses","_sfc_main$n","_sfc_main$m","BentoFilterButton","BentoPopover","isFilterOpen","filterButtonRef","closePopover","onClickClear","onClickFilter","onClickApply","isArray","isValueEmpty","useBaseFilter","appliedFilter","internalFilterValue","isFilterInactive","isClearButtonDisabled","isApplyButtonDisabled","_sfc_main$l","BentoBaseFilter","listboxFilterId","updateFilter","clearFilter","openFilter","singleSelectAmount","_sfc_main$k","inputTextRef","appliedFiltersCount","onBeforeUpdate","nextTick","_sfc_main$j","BentoListboxFilter","BentoTextFilter","BentoSearchBar","searchBarAriaLabel","updatedFilter","filterIndex","filter","newFilters","clearedFilters","otherFields","newSearchTerm","BentoColumnOverflow","BentoDatagridStyleState","BentoDatagridSortDirection","useResizer","columns","columnWidthOverridesLookup","colKeyLookup","col","columnsRefs","allColumnRefs","stepPositionX","resizingColumnField","defaultResizedColumnWidths","field","width","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","column","computedWidth","key","useCalculateColumnWidth","newColumns","bodyRef","body","gridWidth","caclulatedWidths","widthAllocatedBeforeFlex","columnsLookup","columnDefs","fluidCol","computedColumnWidths","onColumnWidthOverride","newColumnWidthOverridesLookup","processedColumns","totalWidthOfAllColumns","totalWidthOfAllCalculatedWidths","gridColumnWidthStyle","useSorter","sortBy","direction","sortedCol","updatedSortBy","useSelector","selection","getDataItemId","isDataItemDisabled","selectedItems","allItemsSelectedState","emitSelect","onAllRowSelect","allItemsSelected","dataItem","onRowSelect","isEveryItemSelected","useConfigSettings","condensed","columnsRef","compactView","isCompactView","columnIndexes","newVisilityColumns","_sfc_main$f","InfoIcon","_sfc_main$e","BentoInfoIcon","TriangleUp","TriangleDown","allItemsSelectedCheckboxState","areAllItemsSelected","startResize","conditionalSortDirectionClasses","sortByColumnField","conditionalColumnClasses","conditionalColumnSeperatorClasses","BentoTogglePropClass","AdlLabelPosition","_sfc_main$d","CheckmarkSmall","toggleInput","descriptionId","subLabelSlotValue","computedDescription","_sfc_main$a","BentoCrossIcon","BentoCrossCircleFillIcon","BentoSettingsIcon","BentoSearchIcon","BentoToggle","configSettingsButtonRef","searchBarRef","isConfigSettingsPanelOpen","allColumnsVisbilityToggleState","isColumnVisibilityFilterShown","filteredColumnVisibilityColumns","clearAction","areAllNonMandatoryColumnsHidden","toggleColumnFilter","columnVisilibity","isColumnVisible","fieldName","isMandatory","visibleColumns","toggleState","_sfc_main$9","BentoDataGridColumns","BentoDataGridConfigSettings","BentoPagination","BentoFilterBar","selectable","onConfigSettingsUpdate","onColumnVisibiltyChange","conditionalGridClasses","conditionalRowClasses","row","conditionalRowCellClasses","conditionalTitleAttribute","content","getRowData","rowData","conditionalPaginationClasses","_c","_f","_e","_d","ariaGridHeaderText","resizeEvent","page","itemsPerPage","BentoCardBackground","_sfc_main$8","cardId","showContent","cardConditionalClasses","cardHeaderConditionalClasses","cardBodyConditionalClasses","showCardBody","BentoClickOutside","h","currencyExponentMap","getExponent","currencyCode","obj","getMinorUnitsAmount","amount","exponent","getNormalizedAmount","getNumberFormatOptions","exp","minorAmount","amountInMinorUnits","style","minimumFractionDigits","maximumFractionDigits","getLocalizedCurrencyValue","amountValue","currency","isShort","numberFormatOptions","BentoCurrencyISOCode","_sfc_main$7","toInteger","dirtyNumber","number","requiredArgs","required","toDate","argument","argStr","addMilliseconds","dirtyDate","dirtyAmount","timestamp","getTimezoneOffsetInMilliseconds","date","utcDate","isDate","isValid","formatDistanceLocale","formatDistance","token","count","tokenValue","formatDistance$5","buildFormatLongFn","format","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","rem100","localize","quarter","localize$5","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","match$5","enUS","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","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","input","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","defaultLocale","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","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$6","locales","BentoLinkVariant","__default__","attributes","useAttrs","BentoRadioGroupVariant","_sfc_main$4","radioButtonId","_sfc_main$3","RadioButton","inputValue","BentoStatusVariant","_sfc_main$2","_sfc_main$1","CrossIcon","bentoToastController","useBentoToastController","DURATION","ToastItem","dismissTimer","toastsToShow","cancelDismissTimer","startTimer","toastToDismiss","startDismissTimer","computedPositioning","numberOfElements","computedHeight","visibleToastHeight","stackHeight"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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AAK,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,K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M,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,EAAA,MAA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","x_google_ignoreList":[1,2,3,4,12,13,14,15,16,33,34,41,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,85,86,90,110,111,112,113,128,129,136,142,143,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]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../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","../src/utils/ts/unique-id.ts","../src/plugins/toastController.ts","../src/install.ts","../src/components/alert/alert.types.ts","../src/components/button/button.types.ts","../src/components/typography/typography.types.ts","../src/components/typography/typography.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/cross-circle-fill.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark-circle-fill.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/info-filled.vue","../src/utils/ts/hasSlot.ts","../src/components/button/button.vue","../src/components/alert/alert.vue","../src/components/avatar-image/avatar-image.types.ts","../src/composables/initials.ts","../src/composables/use-default-slot-validator.ts","../src/composables/use-checkbox-select-all/use-checkbox-select-all.ts","../src/components/avatar-image/avatar-image.vue","../src/components/avatar/avatar.vue","../src/components/button/components/button-actions/button-actions.types.ts","../src/components/button/components/button-actions/button-actions.vue","../src/components/button/components/loading-button/loading-button.types.ts","../src/components/loading-indicator/loading-indicator.types.ts","../src/components/loading-indicator/loading-indicator.vue","../src/components/button/components/loading-button/loading-button.vue","../src/utils/ts/aria-label.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","../src/utils/ts/use-slot-text.ts","../src/components/checkbox/checkbox.vue","../src/components/controls-group/controls-group.vue","../src/components/checkbox/components/checkbox-group/checkbox-group.types.ts","../src/components/checkbox/components/checkbox-group/checkbox-group.vue","../src/components/internal/listbox/components/listbox-option/listbox-option.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark.vue","../src/components/internal/listbox/components/listbox-single-select-option/listbox-single-select-option.vue","../src/utils/ts/i18n.ts","../src/components/internal/listbox/components/listbox-multi-select/listbox-multi-select.vue","../src/components/internal/listbox/listbox.vue","../src/components/tag/tag.types.ts","../src/directives/click-outside/utils.ts","../src/directives/click-outside/useEventListener/index.ts","../src/directives/click-outside/on-click-outside.ts","../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","../src/components/focus-trap/focus-trap.types.ts","../src/components/focus-trap/focus-trap.utils.ts","../src/components/focus-trap/focus-trap.vue","../src/components/popper-container/popper-container.types.ts","../src/components/popper-container/popper-container.utils.ts","../src/components/popper-container/popper-container.vue","../src/directives/tooltip/tooltip.types.ts","../src/utils/ts/events.ts","../src/types/utils-events.ts","../src/components/tooltip/tooltip.vue","../src/directives/tooltip/tooltip.ts","../src/components/tag/tag.vue","../src/components/internal/listbox/components/listbox-option-tag/listbox-option-tag.vue","../src/components/dropdown/components/dropdown-options-container/dropdown-options-container.vue","../src/utils/ts/debounce/debounce.ts","../src/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.types.ts","../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","../src/components/dropdown/components/dropdown-default-textbox/dropdown-default-textbox.vue","../src/components/input-field/input-field.types.ts","../src/components/input-field/input-field.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/search.vue","../src/components/search-bar/search-bar.vue","../src/components/search-bar/useSearchBarDataFilter.ts","../src/components/dropdown/dropdown.vue","../src/components/dropdown/components/variants/dropdown-avatar/dropdown-avatar.vue","../src/components/country/composables/useCountryCapital/useCountryCapital.ts","../src/components/country/composables/useCountryFlag.ts","../src/components/country/composables/useCountryName/useCountryName.ts","../src/components/country/composables/useCountryPhoneCode/useCountryPhoneCode.ts","../src/components/country/country.types.ts","../src/components/country/country.vue","../src/components/dropdown/components/variants/dropdown-country/composables/useCountryItems.ts","../src/components/dropdown/components/variants/dropdown-country/dropdown-country.vue","../src/components/dropdown/components/variants/dropdown-currency/dropdown-currency.vue","../src/components/payment-method/payment-method.types.ts","../src/components/payment-method/composables/usePaymentIcon.ts","../src/components/payment-method/payment-method.vue","../src/components/dropdown/components/variants/dropdown-payment-method/dropdown-payment-method.vue","../src/components/pagination/components/pagination-results-per-page/pagination-results-per-page.vue","../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","../src/components/pagination/components/pagination-controls/pagination-controls.vue","../src/components/pagination/pagination.vue","../src/components/filter-bar/filter-bar.types.ts","../src/components/popover/popover.types.ts","../src/components/popover/components/popover-title/popover-title.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross.vue","../src/components/popover/components/popover-dismiss-button/popover-dismiss-button.vue","../src/components/popover/popover.vue","../src/components/filter-bar/components/base-filter/components/filter-button/filter-button.vue","../src/components/filter-bar/components/base-filter/base-filter.vue","../src/components/filter-bar/components/base-filter/composables/use-base-filter.ts","../src/components/filter-bar/components/select-filter/select-filter.vue","../src/utils/ts/toastController.ts","../src/components/filter-bar/components/text-filter/text-filter.vue","../src/components/radio-group/radio-group.types.ts","../src/components/radio-group/components/radio-button/radio-button.vue","../src/components/radio-group/radio-group.vue","../src/components/filter-bar/components/boolean-filter/boolean-filter.vue","../src/components/filter-bar/components/range-filter/range-filter.vue","../src/components/filter-bar/filter-bar.vue","../src/components/data-grid/data-grid.types.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-up.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-down.vue","../src/components/data-grid/composables/useResizer.ts","../src/utils/ts/resize.ts","../src/components/data-grid/composables/useCalculateColumnWidth/useCalculateColumnWidth.ts","../src/components/data-grid/composables/useSorter.ts","../src/components/data-grid/composables/useSelector.ts","../src/components/data-grid/composables/useConfigSettings.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/info.vue","../src/components/info-icon/info-icon.vue","../src/components/data-grid/components/data-grid-columns/data-grid-columns.vue","../src/components/toggle/toggle.types.ts","../src/types/label-position.ts","../src/components/toggle/toggle.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/settings.vue","../src/components/data-grid/components/data-grid-config-settings/data-grid-config-settings.vue","../src/components/data-grid/data-grid.vue","../src/components/card/card.types.ts","../src/components/card/card.vue","../src/components/click-outside/click-outside.ts","../src/utils/ts/currency/countries-list.ts","../src/utils/ts/currency/currency.ts","../src/components/currency/currency.types.ts","../src/components/currency/currency.vue","../../../node_modules/date-fns/esm/_lib/toInteger/index.js","../../../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../../node_modules/date-fns/esm/toDate/index.js","../../../node_modules/date-fns/esm/addMilliseconds/index.js","../../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../../../node_modules/date-fns/esm/isDate/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/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/protectedTokens/index.js","../../../node_modules/date-fns/esm/format/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","../src/components/date/date.types.ts","../src/components/date/date.vue","../src/components/link/link.types.ts","../src/components/link/link.vue","../src/components/status/status.types.ts","../src/components/status/status.vue","../src/components/tabs/tabs.keys.ts","../src/components/tabs/components/tab.vue","../src/components/tabs/tabs.utils.ts","../src/components/tabs/tabs.vue","../src/components/toast/components/toast-item/toast-item.vue","../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 _Vue from 'vue';\nimport adlCssVars from '@adyen/bento-design-tokens/dist/css/adl/variables.css';\nimport adlLegacyCssVars from '@adyen/bento-design-tokens/dist/css/adl/variables-legacy.css';\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> = (\n Vue: typeof _Vue,\n options: { theme: BentoTheme; withToast: boolean }\n) => {\n if (options?.theme === BentoTheme.LEGACY) {\n setDefaultTheme();\n injectCSS(adlLegacyCssVars);\n injectCSS(bentoLegacyCssVars);\n } else {\n injectCSS(adlCssVars);\n injectCSS(bentoCssVars);\n }\n if (options?.withToast) {\n // Adds a new property to the Vue instance\n // eslint-disable-next-line no-param-reassign\n Vue.prototype.$bentoToastController = new ToastController();\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","\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-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","\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","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-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-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-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\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 import BentoButton from '../button/button.vue';\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","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","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 defaultSlotValue: string,\n ...optionalSlotsValue: string[]\n) => {\n onMounted(() => {\n if (!optionalSlotsValue[0]) {\n return;\n }\n\n optionalSlotsValue.forEach(optionalSlotValue => {\n if (!defaultSlotValue && optionalSlotValue) {\n throw new Error(\n `${componentName}: descriptive subLabel slots should only be provided together with #default slot`\n );\n }\n });\n });\n};\n","import { computed } from 'vue';\nimport type { ComputedRef, Ref } from 'vue';\nimport type { Fn } from '../../types';\nimport { BentoListboxMultiSelectValue, 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 {Ref<BentoListboxMultiSelectValue>} selectedItemsList - Reference to the list of selected items\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: Ref<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 <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","import type { VueNodeElement } from '../../../../types';\n\nexport interface BentoButtonActionObject {\n title: string;\n event: (event: Event) => void;\n icon?: VueNodeElement;\n disabled?: 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 <template v-for=\"(button, index) in reversedActionsList\">\n <bento-button\n :key=\"index\"\n :disabled=\"button.disabled\"\n :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 </template>\n </div>\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 { 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 * ```\n * [{\n * title: 'Primary',\n * event: () => { ... },\n * icon: FourPeopleIcon\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * disabled: 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","<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 { BentoButton, BentoButtonVariant } from '@/components/button';\n import { BentoLoadingButtonState } from './loading-button.types';\n import { BentoLoadingIndicator } from '@/components/loading-indicator';\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","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","\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 type { Slot } from 'vue/types/v3-setup-context';\n\nexport const useSlotText = (slot: Slot): string => (slot ? slot?.()?.[0].text.trim() : null);\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 :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 stronger\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 { 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 { useSlotText } from '@/utils/ts/use-slot-text';\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 * 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 = useSlotText(slots.default);\n const descriptionSlotValue = useSlotText(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,\n defaultFallback: 'checkbox',\n });\n\n const conditionalClass = computed(() => ({ 'b-checkbox--disabled': disabled.value }));\n const conditionalClassOutline = computed(() => ({\n 'b-checkbox__outline--unchecked': !isChecked.value && !isIndeterminate.value,\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 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}\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 v-model=\"modelValue\"\n :value=\"item.value\"\n :disabled=\"disabled || item.disabled\"\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 { BentoCheckbox } from '@/components/checkbox';\n import { ControlsGroup } from '@/components/controls-group';\n import { BentoCheckboxGroupItems, BentoCheckboxGroupVariant } from './checkbox-group.types';\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 * 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 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","<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","import Vue, { computed, getCurrentInstance } from 'vue';\nimport type { WritableComputedRef } from 'vue';\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\nexport function useI18n(): Composer {\n const instance = getCurrentInstance() as { proxy: Vue & { _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 const locale = computed({\n get() {\n return i18n.locale;\n },\n set(v: string) {\n i18n.locale = v;\n },\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 class=\"b-listbox-multi-select\">\n <bento-listbox-option v-show=\"!searching\" class=\"b-listbox-multi-select__option\">\n <bento-checkbox\n :aria-label=\"selectAllCheckboxText\"\n :model-value=\"isAllSelected\"\n :indeterminate=\"isIndeterminate\"\n @input=\"toggleSelectAll(!isAllSelected)\"\n />\n <bento-typography :el=\"BentoTypographyElement.SPAN\">\n {{ selectAllCheckboxText }}\n </bento-typography>\n </bento-listbox-option>\n\n <hr v-show=\"!searching\" class=\"b-listbox-multi-select__divider\" />\n\n <bento-listbox-option\n v-for=\"option in items\"\n :key=\"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<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } 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\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 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();\n const selectedItemsList = ref((props.selectedValues || []) as BentoListboxMultiSelectValue);\n\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\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 selectAllCheckboxText = computed(() => {\n const total = enabledItems.value.length;\n const amountSelectedValues = selectedItemsList.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 selectedItemsList.value = props.items\n .filter(filterOutDisabledAndNotPreselectedOptions)\n .map(({ value }) => value);\n emit('select', selectedItemsList.value);\n };\n\n const unselectAll = () => {\n const findDisabledPreselectedFields = option => {\n const { isDisabled, isPreSelected } = optionStates(option);\n return isDisabled && isPreSelected;\n };\n selectedItemsList.value = props.items.filter(findDisabledPreselectedFields).map(({ value }) => value);\n emit('select', selectedItemsList.value);\n };\n\n const { isAllSelected, isIndeterminate, toggleSelectAll } = useCheckboxSelectAll(\n selectedItemsList,\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 return {\n // Values\n isAllSelected,\n isIndeterminate,\n selectedItemsList,\n selectAllCheckboxText,\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 <!-- 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\" #[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\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-listbox-single-select-option>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { 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\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 },\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 * 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 * 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(_, { emit }) {\n const onOptionSelected = (selectedValue: BentoListboxSelectedValue) => {\n emit('select', selectedValue);\n };\n\n return { onOptionSelected };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./listbox.scss\" />\n","export enum BentoTagVariant {\n DEFAULT = 'default',\n BLUE = 'blue',\n GREEN = 'green',\n ORANGE = 'orange',\n RED = 'red',\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 './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 } : null\"\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 { deferAction, getArrowType, getNextFocusableElement, SCROLL_INTO_VIEW_OPTIONS } from './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 beforeDestroy() {\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 Vue, { 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 inheritAttrs: false,\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 beforeDestroy() {\n this.destroyPopper();\n },\n methods: {\n initPopper() {\n const popperElement =\n this.targetElement instanceof Vue\n ? (this.targetElement as Vue).$el\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 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 Vue from 'vue';\nimport { 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 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 :fallback-position=\"PopperContainerPositionExtended.AUTO\"\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 >\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\n /**\n * Tooltip container, to be used internally to render the tooltip container where the text is shown.\n */\n export default defineComponent({\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: PopperContainer.props?.targetElement.type, 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 class Tooltip {}\n</script>\n\n<style lang=\"scss\" scoped src=\"./tooltip.scss\" />\n","import Vue, { DirectiveOptions } from 'vue';\nimport { listen } from '../../utils/ts/events';\nimport { generateUid } from '../../utils/ts/unique-id';\nimport { KeyCode } from '../../types/utils-events';\nimport Tooltip from '../../components/tooltip/tooltip.vue';\nimport { BentoTooltipPosition, TooltipInstance } from './tooltip.types';\nimport type { DirectiveBinding } from 'vue/types/options';\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 TooltipComponent = Vue.extend(Tooltip);\nconst tooltipInstances: Array<TooltipInstance> = [];\nconst ariaDescribedByAttr = 'aria-describedby';\nconst tooltipId = generateUid('tooltip');\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\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 tooltip = new TooltipComponent({ propsData: { targetElement: el, content: '', id: tooltipId } }).$mount();\n // Tooltip is not mounted to any element, so it have to be manually appended to the DOM\n document.body.appendChild(tooltip.$el);\n};\n\n/**\n * Removes Tooltip component instance from the DOM and destroys it.\n * @internal\n */\nconst destroyTooltip = () => {\n document.body.removeChild(tooltip.$el);\n tooltip.$destroy();\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 tooltip.content = tooltipInstance.content;\n tooltip.position = tooltipInstance.position;\n\n // Do calculations on a next tick, otherwise tooltip position calculations will be wrong\n Vue.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};\n\n/**\n * On mouse leave event hides the tooltip.\n * @internal\n */\nconst hideTooltip = () => {\n open = false;\n tooltip.isShown = false;\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: DirectiveOptions = {\n bind(el, binding) {\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 update(el, binding) {\n const tooltipInstance = getTooltipInstanceForTarget(el);\n\n // Update tooltip content value if it is changed\n if (tooltipInstance.content !== binding.value) {\n tooltipInstance.content = binding.value;\n\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\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 unbind(el) {\n const context = getTooltipInstanceForTarget(el);\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","<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.DEFAULT,\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 '../../../../tag';\n import { BentoTypography, BentoTypographyElement } from '../../../../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","<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 role=\"listbox\"\n >\n <bento-listbox\n :id=\"id\"\n :aria-label=\"ariaLabel\"\n class=\"b-dropdown-options-container\"\n :is-option-disabled=\"isOptionDisabled\"\n :items=\"items\"\n :selected-value=\"selectedValue\"\n :multiple=\"multiple\"\n @select=\"onOptionSelected\"\n >\n <template v-for=\"(_, slot) of $scopedSlots\" #[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\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 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 * 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 * 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 isDropdownOpen = computed(() => props.open && !props.disabled);\n const onOptionSelected = (selectedValue: BentoListboxSelectedValue) => {\n emit('select', selectedValue);\n };\n\n return {\n // Values\n isDropdownOpen,\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}\n\nexport default DropdownBaseTextboxProps;\n","<template>\n <div\n data-testid=\"textbox-wrapper\"\n @click=\"onToggleDropdown\"\n @keydown.enter=\"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 @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 <template v-for=\"singleItem of selectedValueItems\">\n <div :key=\"singleItem.value\" class=\"b-dropdown-base-textbox__input-selected-element\">\n <slot v-bind=\"singleItem\">\n {{ displayValue }}\n </slot>\n </div>\n </template>\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 = () => (props.open ? onCloseDropdown() : onOpenDropdown());\n const onSpaceBar = () => {\n if (!props.dynamicFiltering) {\n onToggleDropdown();\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\">\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\" #[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 ChevronDownIcon from '@adyen/ui-assets-icons-16/vue/chevron-down';\n import ChevronUpIcon from '@adyen/ui-assets-icons-16/vue/chevron-up';\n import type { BentoListboxOptionItem } from '@/types';\n import { Booleanish } from '../../../../types';\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--error': props.isInvalid,\n 'b-dropdown-default-textbox--disabled': props.disabled,\n 'b-dropdown-default-textbox--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","export enum BentoInputFieldVariant {\n DEFAULT = 'default',\n PAYMENT_METHOD = 'payment-method',\n STATIC_VALUE = 'static-value',\n}\n\nexport enum BentoInputFieldStaticValuePosition {\n START = 'start',\n END = 'end',\n}\n\nexport enum BentoInputFieldStateClass {\n DISABLED = 'disabled',\n ERROR = 'error',\n}\n\nexport enum BentoInputFieldType {\n SEARCH = 'search',\n TEXT = 'text',\n NUMBER = 'number',\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 v-if=\"$slots.default\" :for=\"inputFieldId\" class=\"b-input-field__label\" data-testid=\"input-field-label\" @click=\"focusInput\">\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 && $slots.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 && $slots.paymentMethod\"\n :aria-hidden=\"ariaHidden ? 'true' : undefined\"\n class=\"b-input-field__payment-method\"\n >\n <slot name=\"paymentMethod\" />\n </span>\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 :type=\"type\"\n :value=\"value\"\n :disabled=\"disabled\"\n @input=\"onInput\"\n @keydown.esc=\"$emit('escape-pressed')\"\n />\n <span\n v-if=\"$slots.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 </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 BentoInputFieldStateClass,\n BentoInputFieldStaticValuePosition,\n BentoInputFieldType,\n BentoInputFieldVariant,\n } from '@/components/input-field/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\n export default defineComponent({\n name: 'bento-input-field',\n components: { 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 * Adds error validation class for outlining input-field\n */\n error: { type: Boolean, default: false },\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<BentoInputFieldStaticValuePosition>,\n default: BentoInputFieldStaticValuePosition.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: ['input', 'escape-pressed'],\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 () =>\n shouldShowStaticValue.value &&\n props.staticValuePosition === BentoInputFieldStaticValuePosition.START\n );\n const shouldDisplayStaticValueAtEnd = computed(\n () =>\n shouldShowStaticValue.value && props.staticValuePosition === BentoInputFieldStaticValuePosition.END\n );\n\n const inputFieldConditionalClasses = computed(() => ({\n [`b-input-field--${BentoInputFieldStateClass.DISABLED}`]: props.disabled,\n [`b-input-field--${BentoInputFieldStateClass.ERROR}`]: props.error,\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('input', (event.target as HTMLInputElement).value);\n }\n };\n\n const focusInput = () => {\n inputFieldElement.value.focus();\n };\n\n return {\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n BentoInputFieldVariant,\n\n // Functions\n onInput,\n focusInput,\n hasSlot: hasSlot(slots),\n\n // Values\n inputFieldConditionalClasses,\n inputFieldElement,\n inputFieldId,\n shouldDisplayStaticValueAtStart,\n shouldDisplayStaticValueAtEnd,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./input-field.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","<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 @input=\"onInputEvent\"\n @escape-pressed=\"$emit('escape-pressed')\"\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 } from 'vue';\n import { BentoInputField, BentoInputFieldType } from '@/components/input-field';\n import { debounce } from '@/utils/ts/debounce';\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\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 value being searched\n */\n value: { type: String, default: undefined },\n },\n emits: ['input', 'clear', 'escape-pressed'],\n setup(props, { emit }) {\n const searchTerm = ref(props.value);\n const bentoInputField = ref<InstanceType<typeof BentoInputField> | null>();\n\n const onClearSearch = () => {\n searchTerm.value = '';\n emit('clear');\n emit('input', '');\n };\n\n const onInputEvent = debounce(() => {\n emit('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 };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./search-bar.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 <dropdown-input-default\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=\"false\"\n :multiple=\"multiple\"\n :open=\"isDropdownOpen\"\n :selected-value-item=\"selectedValueItem\"\n :show-slot-content-in-multiple=\"showSlotContentInMultiple\"\n @open=\"toggleDropdown\"\n @close=\"toggleDropdown\"\n >\n <template v-for=\"(_, slot) of $scopedSlots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </dropdown-input-default>\n <bento-dropdown-options-container\n v-if=\"inputContainerRef\"\n :id=\"dropdownOptionsContainerId\"\n :aria-label=\"ariaLabel\"\n :open=\"isDropdownOpen\"\n :disabled=\"disabled\"\n :selected-value=\"value\"\n :multiple=\"multiple\"\n :is-option-disabled=\"isOptionDisabled\"\n :items=\"filteredItems\"\n :target-element=\"inputContainerRef\"\n @select=\"onOptionSelected\"\n @close=\"toggleDropdown\"\n >\n <template v-for=\"(_, slot) of $scopedSlots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-dropdown-options-container>\n <bento-typography v-if=\"description\" class=\"b-dropdown__description\" :el=\"BentoTypographyElement.SPAN\">\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 } from './components';\n import { useSearchBarFilter } from '../search-bar';\n import { BentoTypography, BentoTypographyElement } from '../typography';\n\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 },\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 * Sets the possibility to type into the textbox.\n */\n dynamicFiltering: {\n type: Boolean,\n default: false,\n },\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 * 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 // Filtering\n const searchTerm = ref('');\n const items = toRef(props, 'items');\n const filteredItems = useSearchBarFilter(searchTerm, items);\n\n const displayValue = computed(() => {\n if (!props.multiple) {\n const selectedItem = props.items.find(({ value }) => value === props?.value);\n return selectedItem?.label || 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 : null;\n });\n\n const selectedValueItem = computed(() =>\n props?.multiple\n ? props.items.filter(({ value }) => (props?.value as BentoListboxMultiSelectValue).includes(value))\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\n const closeOpenedDropdown = () => {\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 searchTerm,\n labelId,\n selectedValueItem,\n\n // Refs\n inputContainerRef,\n\n // Events\n closeOpenedDropdown,\n toggleDropdown,\n onOptionSelected,\n\n // Enums\n BentoTypographyElement,\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 BentoDropdown from '../../../dropdown.vue';\n import { BentoAvatarListboxOptions } from './dropdown-avatar.types';\n import { BentoAvatar } from '../../../../avatar';\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 VueI18n from 'vue-i18n';\nimport messages from './messages.json';\n\n/**\n * The local VueI18n object where the country name translations reside.\n */\nlet i18n: VueI18n;\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 if (!i18n) {\n i18n = new VueI18n({ messages });\n }\n\n return computed(() => {\n const normalizedCode = countryCode?.value?.toUpperCase();\n if (!i18n.te(normalizedCode, languageLocale.value)) {\n return useFallback ? countryCode.value : null;\n }\n return i18n.t(normalizedCode, { locale: languageLocale.value });\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 // Dynamically resolve flags icons URLs\n // Using import() here would make it asyncronous, requiring an update\n // right after the first render.\n // The only way to do it dynamically and syncronous is using require().\n // NOTE: This won't work for Vite because vite handles dynamic imports differently\n // This however works:\n // const flagCool = await import(\n // `../../../../../../node_modules/@adyen/ui-assets-flag-icons/svg/${newCountryCode.toLowerCase()}.svg`\n // );\n // See: https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars\n\n const flag = await import(`@adyen/ui-assets-flag-icons/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 VueI18n from 'vue-i18n';\nimport messages from './messages.json';\nimport { MaybeRef } from '../../../../types';\n\n/**\n * The local VueI18n object where the country name translations reside.\n */\nlet i18n: VueI18n;\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 if (!i18n) {\n i18n = new VueI18n({ messages });\n }\n\n return computed(() => {\n const normalizedCode = countryCode?.value?.toUpperCase();\n if (!i18n.te(normalizedCode, languageLocale.value)) {\n return useFallback ? countryCode.value : null;\n }\n return i18n.t(normalizedCode, languageLocale.value) as string;\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 '../typography';\n import { useCountryCapital, useCountryFlag, useCountryName, useCountryPhoneCode } from './composables';\n import { BentoCountryCode, BentoCountryVariant } from './country.types';\n import UnknownFlagIcon from '@adyen/ui-assets-flag-icons/vue/zz';\n import { useI18n } from '../../utils/ts/i18n';\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();\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 '../../../../../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();\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 from '../../../../country/country.vue';\n import { BentoCountryVariant } from '../../../../country';\n import BentoDropdown from '../../../dropdown.vue';\n import { useCountryItems } from './composables/useCountryItems';\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 '../../../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 // Dynamically resolve flags icons URLs\n // Using import() here would make it asyncronous, requiring an update\n // right after the first render.\n // The only way to do it dynamically and syncronous is using require().\n // NOTE: This won't work for Vite because vite handles dynamic imports differently\n // This however works:\n // const flagCool = await import(\n // `../../../../../../node_modules/@adyen/ui-assets-payment-method-icons/dist/svg/${newCountryCode.toLowerCase()}.svg`\n // );\n // See: https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars\n\n const flag = await import(\n `@adyen/ui-assets-payment-method-icons/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 data-testid=\"payment-icon\"\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 { defineComponent, PropType, toRef } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '../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 setup(props) {\n const type = toRef(props, 'type');\n const paymentMethodIconSrc = usePaymentIcon(type);\n\n return {\n // Values\n paymentMethodIconSrc,\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 '../../../../payment-method';\n import BentoDropdown from '../../../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 <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 inheritAttrs: false,\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 inheritAttrs: false,\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 inheritAttrs: false,\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 { BentoListboxIsOptionDisabled, BentoListboxOptions, BentoListboxSelectedValue } from '../../types';\n\nexport interface BentoSelectFilterOptions {\n listboxItems: BentoListboxOptions;\n multiple?: boolean;\n isOptionDisabled?: BentoListboxIsOptionDisabled;\n}\n\nexport type BentoTextFilterValue = string | null;\nexport type BentoSelectFilterValue = BentoListboxSelectedValue;\nexport type BentoBooleanFilterValue = string | null;\nexport type BentoFilterBarValue = BentoTextFilterValue | BentoSelectFilterValue | BentoBooleanFilterValue;\n\nexport type BentoFilterOptions = BentoSelectFilterOptions | undefined;\n\nexport enum BentoFilterItemType {\n TEXT = 'BentoTextFilter',\n SELECT = 'BentoSelectFilter',\n BOOLEAN = 'BentoBooleanFilter',\n RANGE = 'BentoRangeFilter',\n}\n\nexport interface BentoFilterModel {\n field: string;\n label: string;\n type: BentoFilterItemType;\n options?: BentoFilterOptions;\n value?: BentoFilterBarValue;\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 inheritAttrs: false,\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 <popper-container\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</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: 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`: 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 * 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 * 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 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 }));\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","<template>\n <button\n class=\"b-filter-button\"\n :class=\"conditionalClasses\"\n :disabled=\"disabled\"\n :aria-label=\"computedAriaLabel\"\n type=\"button\"\n @click=\"onClickButton\"\n >\n <bento-typography\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n class=\"b-filter-button__label\"\n >\n <slot />\n </bento-typography>\n\n <div v-if=\"amountAppliedValues\" class=\"b-filter-button__counter-wrapper\">\n <bento-typography\n class=\"b-filter-button__counter\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n >\n {{ amountAppliedValues }}\n </bento-typography>\n </div>\n </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 { computed, defineComponent } from 'vue';\n\n /**\n * A filter button used to open a popover where a filter can be applied.\n * Used in the bento-filter-bar component.\n *\n * @usage\n * export default {\n * components: { BentoFilterButton },\n * template: `\n * <bento-filter-button disabled>\n * Filter\n * </bento-filter-button>\n * `,\n * }\n */\n export default defineComponent({\n name: 'bento-filter-button',\n components: { BentoTypography },\n inheritAttrs: false,\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 emits: ['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-filter-button--with-counter`]: props.amountAppliedValues,\n }));\n\n const onClickButton = () => {\n if (!props.disabled) {\n emit('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 };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./filter-button.scss\" />\n","<template>\n <div v-bento-click-outside-directive=\"onClickOutside\" class=\"b-base-filter\" @keydown.esc=\"closePopover\">\n <bento-filter-button ref=\"filterButtonRef\" :amount-applied-values=\"appliedFiltersCount\" @click=\"onClickFilter\">\n {{ label }}\n </bento-filter-button>\n\n <bento-popover\n v-if=\"isFilterOpen && filterButtonRef\"\n divider\n :actions=\"actions\"\n :actions-layout=\"BentoButtonActionsLayout.SPACE_BETWEEN\"\n :target-element=\"filterButtonRef\"\n :title=\"label\"\n :position=\"BentoPopoverPositions.BOTTOM_START\"\n >\n <slot></slot>\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, 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 { BentoFilterButton } from './components';\n import { useI18n } from '@/utils/ts/i18n';\n\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-base-filter',\n components: {\n BentoFilterButton,\n BentoPopover,\n },\n directives: { BentoClickOutsideDirective },\n inheritAttrs: false,\n props: {\n /**\n * Total count of applied filters\n */\n appliedFiltersCount: { type: Number, default: null },\n\n /**\n * Disable the \"apply\" button\n */\n disableApplyButton: { type: Boolean, default: false },\n\n /**\n * Disable the \"clear\" button\n */\n disableClearButton: { 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 * Current value of the filter\n */\n value: { type: [String, Array<string>], default: null },\n },\n emits: ['apply', 'clear', 'open', 'close'],\n setup(props, { emit }) {\n const { t } = useI18n();\n const isFilterOpen = ref(false);\n const filterButtonRef = ref(null);\n\n const closePopover = () => {\n isFilterOpen.value = false;\n emit('close');\n };\n const onClickClear = () => {\n closePopover();\n emit('clear');\n };\n const onClickOutside = () => closePopover();\n const onClickFilter = () => {\n if (isFilterOpen.value) {\n closePopover();\n } else {\n isFilterOpen.value = true;\n emit('open');\n }\n };\n const onClickApply = () => {\n closePopover();\n emit('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: t('clear') as string,\n event: onClickClear,\n disabled: props.disableClearButton,\n },\n ]);\n\n return {\n // Values\n actions,\n isFilterOpen,\n\n // Enums\n BentoPopoverPositions,\n BentoTooltipPosition,\n\n // Events\n onClickFilter,\n onClickApply,\n onClickClear,\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 } 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;\n\nexport const useBaseFilter = <T>(appliedFilter: Ref<T>) => {\n const internalFilterValue = ref<T>(appliedFilter.value as T);\n\n const isFilterInactive = computed(() => isValueEmpty(appliedFilter.value));\n\n const isClearButtonDisabled = computed(() => isFilterInactive.value);\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 isClearButtonDisabled,\n isApplyButtonDisabled,\n };\n};\n","<template>\n <bento-base-filter\n :label=\"label\"\n :field=\"field\"\n :applied-filters-count=\"appliedFiltersCount\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n :disable-clear-button=\"isClearButtonDisabled\"\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @open=\"openFilter\"\n @close=\"closeFilter\"\n >\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 :searching=\"!!searchTerm\"\n :selected-value=\"internalFilterValue\"\n @select=\"onOptionSelected\"\n >\n <template v-for=\"(_, slot) of $scopedSlots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-listbox>\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 { BentoSelectFilterOptions } from '../../filter-bar.types';\n import { BentoSearchBar, useSearchBarFilter } from '@/components/search-bar';\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 BentoListbox,\n BentoSearchBar,\n },\n inheritAttrs: false,\n props: {\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 * 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: null,\n },\n },\n emits: ['update'],\n setup(props, { emit }) {\n const { internalFilterValue, isClearButtonDisabled, isApplyButtonDisabled } = useBaseFilter(\n toRef(props, 'value')\n );\n\n const searchTerm = ref('');\n const itemsRef = toRef(props.options, 'listboxItems');\n const filteredItems = useSearchBarFilter<BentoListboxOptionItem>(searchTerm, itemsRef);\n\n const listboxFilterId = computed(() => generateUid(`filter-listbox-${props.field}`));\n\n const onOptionSelected = (selectedValue: BentoListboxSelectedValue) => {\n internalFilterValue.value = selectedValue;\n };\n\n const updateFilter = () => {\n emit('update', { ...props, value: internalFilterValue.value });\n };\n\n const clearFilter = () => {\n internalFilterValue.value = null;\n updateFilter();\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 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 isClearButtonDisabled,\n listboxFilterId,\n\n // Search\n searchTerm,\n\n // Events\n clearFilter,\n closeFilter,\n onOptionSelected,\n openFilter,\n updateFilter,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./select-filter.scss\" />\n","import Vue, { getCurrentInstance } from 'vue';\nimport BentoToastController from '../../plugins/toastController';\n\nlet bentoToastController: BentoToastController = null;\n\nexport function useBentoToastController(): BentoToastController {\n const instance = getCurrentInstance() as { proxy: Vue & { $bentoToastController } } | null;\n const vm = instance.proxy;\n\n if (vm?.$bentoToastController) {\n bentoToastController = vm.$bentoToastController;\n }\n\n return bentoToastController;\n}\n\nexport function installToastControllerPlugin() {\n Vue.use(app => {\n // Adds a new property to the Vue instance\n // eslint-disable-next-line no-param-reassign\n app.prototype.$bentoToastController = new BentoToastController();\n });\n}\n","<template>\n <bento-base-filter\n v-bind=\"$props\"\n :applied-filters-count=\"appliedFiltersCount\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n :disable-clear-button=\"isClearButtonDisabled\"\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @open=\"openFilter\"\n >\n <div class=\"b-text-filter\" @keydown.enter=\"updateFilter\">\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 { BentoInputField } from '@/components/input-field';\n\n export default defineComponent({\n name: 'bento-text-filter',\n components: {\n BentoBaseFilter,\n BentoInputField,\n },\n inheritAttrs: false,\n props: {\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 emits: ['update'],\n setup(props, { emit }) {\n const inputTextRef = ref(null);\n const { internalFilterValue, isClearButtonDisabled, isApplyButtonDisabled } = useBaseFilter<string>(\n toRef(props, 'value')\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 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('update', { ...props, value: internalFilterValue.value });\n };\n\n const clearFilter = () => {\n internalFilterValue.value = null;\n updateFilter();\n };\n\n return {\n // Values\n appliedFiltersCount,\n internalFilterValue,\n isApplyButtonDisabled,\n isClearButtonDisabled,\n\n // Refs\n inputTextRef,\n\n // Events\n updateFilter,\n clearFilter,\n openFilter,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./text-filter.scss\" />\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}\n\nexport type BentoRadioGroupItems = Array<BentoRadioGroupItem>;\n","<template>\n <div class=\"b-radio-button\" data-testid=\"radio-button-container\" :class=\"conditionalClass\">\n <input\n :id=\"radioButtonId\"\n :aria-checked=\"isChecked\"\n :aria-label=\"ariaLabel\"\n :checked=\"isChecked\"\n :disabled=\"disabled\"\n :value=\"value\"\n type=\"radio\"\n class=\"b-radio-button__input\"\n role=\"radio\"\n @change=\"onClick\"\n />\n <label v-if=\"defaultSlotValue\" :for=\"radioButtonId\" class=\"b-radio-button__description\">\n <bento-typography\n v-if=\"defaultSlotValue\"\n class=\"b-radio-button__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n >\n <slot></slot>\n </bento-typography>\n <bento-typography\n v-if=\"defaultSlotValue && subLabelSlotValue\"\n class=\"b-radio-button__sub-label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"subLabel\"></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 { 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 { useSlotText } from '@/utils/ts/use-slot-text';\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 #subLabel>Sub label text</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 /**\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 = useSlotText(slots.default);\n const subLabelSlotValue = useSlotText(slots.subLabel);\n\n useDefaultSlotValidator('radio-button', defaultSlotValue, subLabelSlotValue);\n\n const conditionalClass = computed(() => ({ 'b-radio-button--disabled': props.disabled }));\n\n const ariaLabel = useAriaLabel({\n ariaLabel: slots.default?.()[0].text.trim(),\n label: value.value as string,\n });\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 isChecked,\n defaultSlotValue,\n subLabelSlotValue,\n conditionalClass,\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 @input=\"onInput\"\n >\n {{ item.label }}\n <template v-if=\"item.description\" #subLabel>{{ item.description }}</template>\n </radio-button>\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 { 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 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 checkboxes in the group in a disabled state.\n */\n disabled: {\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],\n default: null,\n },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const inputValue = ref(props.selectedValue);\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-clear-button=\"isClearButtonDisabled\"\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @open=\"openFilter\"\n >\n <div class=\"b-boolean-filter\" @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, ref, 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 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 * 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 emits: ['update'],\n setup(props, { emit }) {\n const { t } = useI18n();\n const items = ref([\n { value: 'yes', label: t('yes') as string },\n { value: 'no', label: t('no') as string },\n ]);\n\n const { internalFilterValue, isClearButtonDisabled, isApplyButtonDisabled } = useBaseFilter(\n toRef(props, 'value')\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 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 };\n\n const openFilter = () => {\n internalFilterValue.value = props.value;\n };\n\n const updateFilter = () => {\n emit('update', { ...props, value: internalFilterValue.value });\n };\n\n const clearFilter = () => {\n internalFilterValue.value = null;\n updateFilter();\n };\n\n return {\n // Values\n items,\n appliedFiltersCount,\n internalFilterValue,\n isApplyButtonDisabled,\n isClearButtonDisabled,\n\n // Events\n onInput,\n updateFilter,\n clearFilter,\n openFilter,\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-clear-button=\"isClearButtonDisabled\"\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @open=\"openFilter\"\n >\n <div class=\"b-range-filter\" @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 messages from './messages.json';\n import { BentoBaseFilter, useBaseFilter } from '@/components/filter-bar/components/base-filter';\n import { BentoInputField, BentoInputFieldType } from '@/components/input-field';\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 * 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[]>, required: true },\n },\n emits: ['update'],\n setup(props, { emit }) {\n const inputTextRef = ref(null);\n\n const { internalFilterValue, isClearButtonDisabled, isApplyButtonDisabled } = useBaseFilter(\n toRef(props, 'value')\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 openFilter = () => {\n internalFilterValue.value = props.value;\n\n nextTick(() => inputTextRef.value.focusInput());\n };\n\n const updateFrom = newValue => {\n internalFilterValue.value = [newValue, internalFilterValue.value[1]];\n };\n\n const updateTo = newValue => {\n internalFilterValue.value = [internalFilterValue.value[0], newValue];\n };\n\n const updateFilter = () => {\n emit('update', {\n ...props,\n value: internalFilterValue.value,\n });\n };\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 internalFilterValue,\n isApplyButtonDisabled,\n isClearButtonDisabled,\n\n // Events\n updateFrom,\n updateTo,\n updateFilter,\n clearFilter,\n openFilter,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./range-filter.scss\" />\n","<template>\n <div class=\"b-filter-bar\">\n <div class=\"b-filter-bar__filters-wrapper\">\n <component\n :is=\"filter.type\"\n v-for=\"filter in value\"\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 <bento-button\n v-show=\"isClearAllVisible\"\n class=\"b-filter-bar__clear-all\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n @click=\"clearAllFilters\"\n >\n {{ $t('clearAll') }}\n </bento-button>\n </div>\n <bento-search-bar\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 { BentoFilterBarModel, BentoFilterModel } from './filter-bar.types';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import { BentoSelectFilter } from './components/select-filter';\n import { BentoSearchBar } from '@/components/search-bar';\n import { useI18n } from '@/utils/ts/i18n';\n import { useBentoToastController } from '../../utils/ts/toastController';\n import BentoTextFilter from './components/text-filter/text-filter.vue';\n import BentoBooleanFilter from './components/boolean-filter/boolean-filter.vue';\n import BentoRangeFilter from './components/range-filter/range-filter.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 BentoButton,\n BentoBooleanFilter,\n BentoRangeFilter,\n BentoTextFilter,\n BentoSelectFilter,\n BentoSearchBar,\n },\n inheritAttrs: false,\n props: {\n /**\n * Search term useful to filter all the data by text\n */\n searchTerm: {\n type: BentoSearchBar.props.value.type,\n default: '',\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: ['input', 'search-clear', 'search-input', 'update:search-term'],\n setup(props, { emit }) {\n const { t } = useI18n();\n const toastController = useBentoToastController();\n const searchBarAriaLabel = t('searchBar') as string;\n\n // Show the \"Clear all\" button (true) if at least one filter is active (contains a value)\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;\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('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('input', previousFilters),\n text: t('undo') as string,\n },\n });\n emit('input', clearedFilters);\n };\n\n const onSearchbarInput = (newSearchTerm: string) => {\n emit('search-input', newSearchTerm);\n emit('update:search-term', newSearchTerm);\n };\n const onSearchbarClear = () => {\n emit('search-clear');\n };\n\n return {\n // Values\n isClearAllVisible,\n searchBarAriaLabel,\n\n // Enums\n BentoButtonVariant,\n\n // Events\n updateFilterHandler,\n clearAllFilters,\n onSearchbarClear,\n onSearchbarInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./filter-bar.scss\" />\n","import { BentoPagination } from '../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}\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}\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","/* eslint-disable no-param-reassign */\nimport { computed, reactive, ref, Ref, toRefs, watchEffect } from 'vue';\nimport { listen } from '../../../utils/ts/events';\nimport { BentoColumn, BentoColumnWidthOverridesLookup, BentoDatagridEvent } from '../data-grid.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 = (columns: Ref<BentoColumn[]>, emit: (event: string, ...args: unknown[]) => void) => {\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('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 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(BentoDatagridEvent.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 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 };\n};\n\nexport default useResizer;\n","import Vue from 'vue';\n\nconst 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 instanceof Vue ? 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 } 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 observeSizeOfElement(body.value, ({ width }) => {\n gridWidth.value = width;\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 = 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(() => {\n const totalWidthOfAllCalculatedWidths = processedColumns.value.reduce((acc, val) => val.width + acc, 0);\n return gridWidth.value > totalWidthOfAllCalculatedWidths ? gridWidth.value : totalWidthOfAllCalculatedWidths;\n });\n\n const gridColumnWidthStyle = computed(() => ({\n gridTemplateColumns: processedColumns.value.map(({ width }) => `${width}px`).join(' '),\n gridColumnEnd: processedColumns.value.length + 1,\n width: `${totalWidthOfAllColumns.value}px`,\n }));\n\n return { columnDefs: processedColumns, gridColumnWidthStyle, onColumnWidthOverride };\n};\n\nexport default useCalculateColumnWidth;\n","import { Ref } from 'vue';\nimport {\n BentoColumn,\n BentoDatagridEvent,\n BentoDatagridSortByColumn,\n BentoDatagridSortDirection,\n} from '../data-grid.types';\n\nexport const useSorter = (\n sortBy: Ref<BentoDatagridSortByColumn[]>,\n columns: Ref<BentoColumn[]>,\n emit: (event: string, 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(BentoDatagridEvent.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 { ref } from 'vue';\nimport { MaybeRef } from '../../../types';\nimport { BentoColumn, BentoDatagridEvent } from '../data-grid.types';\n\n/**\n * All Datagrid configuration settings logic:\n * - Compact view toggle\n *\n * @param condensed - initial state of compact view toggle\n * @returns compact view data & event handler\n */\nexport const useConfigSettings = (\n condensed: MaybeRef<boolean>,\n columnsRef: MaybeRef<BentoColumn[]>,\n emit: (event: string, columns: BentoColumn[]) => void\n) => {\n const compactView = ref(condensed);\n const columns = ref(columnsRef);\n\n // eslint-disable-next-line no-return-assign\n const onConfigSettingsUpdate = (isCompactView: boolean) => (compactView.value = isCompactView);\n\n const onColumnVisibiltyChange = (columnIndexes: string[]) => {\n const newVisibilityColumns = columns.value.map(col => ({ ...col, visible: columnIndexes.includes(col.field) }));\n emit(BentoDatagridEvent.COLUMNS, newVisibilityColumns);\n emit(BentoDatagridEvent.UPDATE_COLUMNS, newVisibilityColumns);\n };\n\n return { compactView, onConfigSettingsUpdate, onColumnVisibiltyChange };\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 v-bento-tooltip-directive=\"tooltipText\" class=\"b-info-icon\" :aria-label=\"tooltipText\" tabindex=\"0\">\n <info-icon svg-title=\"Additional info icon\" />\n </span>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent } from 'vue';\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</script>\n\n<style lang=\"scss\" scoped src=\"./info-icon.scss\" />\n","<template>\n <div :style=\"gridColumnWidthStyle\" class=\"b-data-grid-columns\" role=\"row\">\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 class=\"b-data-grid-columns__column\"\n role=\"columnheader\"\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\" 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=\"conditionalSortDirectionClasses(column.field, BentoDatagridSortDirection.DESCENDING)\"\n :svg-title=\"`${column.field}sort descending`\"\n :data-testid=\"`${column.field}-sort-icon-desc`\"\n />\n </div>\n <div\n v-if=\"index !== columns.length - 1\"\n :data-testid=\"`data-grid-column-${column.field}`\"\n :class=\"conditionalColumnSeperatorClasses\"\n class=\"b-data-grid-columns__column-seperator-container\"\n role=\"presentation\"\n @mousedown=\"startResize(hasResizableColumns, column.field, $event)\"\n @click.stop\n >\n <div class=\"b-data-grid-columns__column-seperator\"></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 TriangleUp from '@adyen/ui-assets-icons-16/vue/triangle-up';\n import TriangleDown from '@adyen/ui-assets-icons-16/vue/triangle-down';\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\n export default defineComponent({\n name: 'bento-data-grid',\n components: {\n BentoCheckbox,\n BentoInfoIcon,\n BentoTypography,\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 * If resize is enabled\n */\n hasResizableColumns: {\n type: Boolean,\n default: true,\n },\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 /**\n */\n gridColumnWidthStyle: {\n type: Object,\n required: true,\n },\n },\n emits: ['column-resize', 'sort', 'select-all-rows'],\n setup(props, { emit }) {\n const { columns, sortBy } = toRefs(props);\n\n // Selecting\n const allItemsSelectedCheckboxState = ref(props.allItemsSelectedState);\n const onAllRowSelect = (areAllItemsSelected: boolean) => emit('select-all-rows', areAllItemsSelected);\n // Resizing\n const { allColumnRefs, startResize } = useResizer(columns, emit);\n\n // Sorting\n const { conditionalSortDirectionClasses, sortByColumnField } = useSorter(sortBy, columns, emit);\n\n // Conditional column styles\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 });\n\n const conditionalColumnSeperatorClasses = computed(() => ({\n 'b-data-grid-columns__column-seperator-container--is-resizeable': props.hasResizableColumns,\n }));\n\n return {\n // Refs\n ...allColumnRefs,\n\n // Values\n DATAGRID_SELECT_FIELD_NAME,\n\n // Styles and classes\n conditionalColumnClasses,\n conditionalColumnSeperatorClasses,\n\n // Selecting\n allItemsSelectedCheckboxState,\n onAllRowSelect,\n\n // Sorting\n conditionalSortDirectionClasses,\n sortByColumnField,\n\n // Resizing\n startResize,\n\n // ENums\n BentoDatagridSortDirection,\n BentoTypographyElement,\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","export enum AdlLabelPosition {\n BEFORE = 'before',\n AFTER = 'after',\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__description\">\n <bento-typography\n v-if=\"defaultSlotValue\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n data-testid=\"inner-label\"\n >\n <slot></slot>\n </bento-typography>\n <bento-typography\n v-if=\"defaultSlotValue && subLabelSlotValue\"\n :id=\"descriptionId\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n class=\"b-toggle__sub-label\"\n >\n <slot name=\"subLabel\"></slot>\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 { useSlotText } from '@/utils/ts/use-slot-text';\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 = useSlotText(slots.default);\n const subLabelSlotValue = useSlotText(slots.subLabel);\n\n useDefaultSlotValidator('bento-toggle', defaultSlotValue, subLabelSlotValue);\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 subLabelSlotValue,\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<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","<!-- 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 class=\"b-data-grid-config-settings\">\n <bento-button\n ref=\"configSettingsButtonRef\"\n :variant=\"BentoButtonVariant.SECONDARY\"\n @click=\"toggleConfigSettingsPanelVisibility\"\n >\n <template #iconLeft>\n <bento-settings-icon :svg-title=\"$t('toggleConfigSettingsPanelVisibility')\" />\n </template>\n </bento-button>\n <bento-popover\n v-if=\"isConfigSettingsPanelOpen && configSettingsButtonRef\"\n class=\"b-data-grid-config-settings__panel\"\n :aria-label=\"$t('configSettingsPanel')\"\n :target-element=\"configSettingsButtonRef\"\n :position=\"BentoPopoverPositions.BOTTOM_END\"\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=\"toggleConfigSettingsPanelVisibility\">\n <template #iconLeft>\n <bento-cross-circle-fill-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 <template v-for=\"column of filteredColumnVisibilityColumns\">\n <bento-toggle\n :key=\"column.field\"\n :aria-label=\"$t('toggleColumnVisibility', { label: column.label })\"\n :disabled=\"isColumnVisibilityToggleDisabled(column.field, column.mandatory)\"\n :label-position=\"AdlLabelPosition.AFTER\"\n :value=\"isColumnVisible(column.field)\"\n @input=\"toggleColumnVisiblity(column.field)\"\n >\n {{ column.label }}\n </bento-toggle>\n </template>\n <bento-typography\n v-if=\"filteredColumnVisibilityColumns.length === 0\"\n :el=\"BentoTypographyElement.SPAN\"\n class=\"b-data-grid-config-settings__column-visibility-no-columns-found\"\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, unref } from 'vue';\n import { BentoPopover, BentoPopoverPositions } from '../../../popover';\n import { BentoButton, BentoButtonVariant } from '../../../button';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '../../../typography';\n import { BentoToggle } from '../../../toggle';\n import messages from './messages.json';\n import { AdlLabelPosition } from '../../../../types';\n import { BentoColumn } from '../../data-grid.types';\n import { BentoSearchBar, useSearchBarFilter } from '../../../search-bar';\n import BentoSettingsIcon from '@adyen/ui-assets-icons-16/vue/settings';\n import BentoCrossCircleFillIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import BentoCrossIcon from '@adyen/ui-assets-icons-16/vue/cross';\n import BentoSearchIcon from '@adyen/ui-assets-icons-16/vue/search';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-data-grid',\n components: {\n BentoCrossIcon,\n BentoCrossCircleFillIcon,\n BentoPopover,\n BentoSettingsIcon,\n BentoButton,\n BentoSearchBar,\n BentoSearchIcon,\n BentoToggle,\n BentoTypography,\n },\n inheritAttrs: false,\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: ['config-settings', 'visible-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 columnVisilibity = computed(() =>\n props.columns.filter(col => col?.visible !== false).map(col => col.field)\n );\n\n const isColumnVisible = (fieldName: string) => columnVisilibity.value.includes(fieldName);\n\n const isColumnVisibilityToggleDisabled = (fieldName: string, isMandatory: boolean) =>\n isMandatory || (columnVisilibity.value.length === 1 && isColumnVisible(fieldName));\n\n const toggleConfigSettingsPanelVisibility = () => {\n isConfigSettingsPanelOpen.value = !isConfigSettingsPanelOpen.value;\n allColumnsVisbilityToggleState.value = areAllNonMandatoryColumnsHidden.value;\n };\n\n const toggleColumnVisiblity = (fieldName: string) => {\n const visibleColumns = unref(columnVisilibity.value);\n const index = visibleColumns.indexOf(fieldName);\n if (index === -1) {\n visibleColumns.push(fieldName);\n } else {\n visibleColumns.splice(index, 1);\n }\n emit('visible-columns', visibleColumns);\n };\n\n const toggleAllColumnVisibility = (toggleState: boolean) => {\n if (toggleState) {\n // Show all columns\n emit(\n 'visible-columns',\n props.columns.map(col => col.field)\n );\n } else {\n // Hide all columns except for mandatory columns\n emit(\n 'visible-columns',\n props.columns.filter(col => col.mandatory).map(col => col.field)\n );\n }\n };\n\n // Condensed view\n const emitCondensedToggle = (isCompactView: boolean) => emit('config-settings', isCompactView);\n\n return {\n // Values\n configSettingsButtonRef,\n isConfigSettingsPanelOpen,\n isColumnVisibilityToggleDisabled,\n allColumnsVisbilityToggleState,\n filteredColumnVisibilityColumns,\n searchTerm,\n isColumnVisibilityFilterShown,\n searchBarRef,\n\n // Methods\n toggleConfigSettingsPanelVisibility,\n emitCondensedToggle,\n isColumnVisible,\n toggleColumnVisiblity,\n toggleAllColumnVisibility,\n clearAction,\n toggleColumnFilter,\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 || columnPanel\" class=\"b-data-grid__filters-and-col-settings\">\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 <bento-data-grid-config-settings\n v-if=\"columnPanel\"\n :columns=\"columns\"\n :condensed=\"compactView\"\n @config-settings=\"onConfigSettingsUpdate\"\n @visible-columns=\"onColumnVisibiltyChange\"\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 <div role=\"rowgroup\">\n <bento-data-grid-columns\n :columns=\"columnDefs\"\n :has-resizable-columns=\"hasResizableColumns\"\n :grid-column-width-style=\"gridColumnWidthStyle\"\n :sort-by=\"sortBy\"\n :all-items-selected-state=\"allItemsSelectedState\"\n @column-resize=\"onColumnResized\"\n @column-resizing=\"onColumnWidthOverride\"\n @sort=\"onSort\"\n @select-all-rows=\"onAllRowSelect\"\n >\n <template v-for=\"(_, slot) of $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-data-grid-columns>\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 <div\n v-for=\"column in columnDefs\"\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 >\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 </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 '../checkbox';\n import { BentoPagination } from '../pagination';\n import { BentoFilterBar } from '../filter-bar';\n import { BentoLoadingIndicator } from '../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 { BentoDataGridColumns, BentoDataGridConfigSettings } from './components';\n import messages from './messages.json';\n import { DATAGRID_SELECT_FIELD_NAME, useCalculateColumnWidth, useConfigSettings, useSelector } from './composables';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-data-grid',\n components: {\n BentoCheckbox,\n BentoDataGridColumns,\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 * 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 column settings panel.\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 { columns, selectable, data, selection, condensed } = toRefs(props);\n /* == Composable logic == */\n // Column width calculation\n const { columnDefs, onColumnWidthOverride, gridColumnWidthStyle } = useCalculateColumnWidth(columns, body, {\n hasSelectableColumn: selectable,\n });\n // Config Settings\n const { compactView, onConfigSettingsUpdate, onColumnVisibiltyChange } = useConfigSettings(\n condensed,\n columns,\n emit\n );\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 // 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 });\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': compactView.value,\n [`b-data-grid__cell--overflow-${BentoColumnOverflow.ELLIPSIS}`]:\n column?.overflow === BentoColumnOverflow.ELLIPSIS,\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 // 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\n // Labels and text\n ariaGridHeaderText,\n conditionalTitleAttribute,\n getRowData,\n\n // Styles and classes\n gridColumnWidthStyle,\n conditionalGridClasses,\n conditionalRowClasses,\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\n compactView,\n onConfigSettingsUpdate,\n onColumnVisibiltyChange,\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 },\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","<template>\n <div class=\"b-card\" :class=\"cardConditionalClasses\" data-testid=\"card\" @click=\"onClick\">\n <div\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 :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.SUBTITLE\"\n stronger\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 v-if=\"hasSlot('content')\" class=\"b-card__content\" aria-label=\"card content\">\n <slot name=\"content\" />\n </div>\n\n <div v-if=\"actions\" class=\"b-card__actions\" aria-label=\"card actions\">\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 } 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 * The whole content of the card will be expandable in accordion manner\n */\n expandable: {\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(true);\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--with-body': !props.expandable && hasSlot(slots)('content'),\n }));\n\n const cardBodyConditionalClasses = computed(() => ({\n 'b-card__body--expandable': props.expandable && hasSlot(slots)('content'),\n }));\n\n const showCardBody = computed(\n () =>\n (hasSlot(slots)('content') || props.actions?.length) &&\n (!props.expandable || (props.expandable && showContent.value))\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 showCardBody,\n showContent,\n tabIndex,\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 */\nexport function getNumberFormatOptions(\n amount: CurrencyAmount,\n options: CurrencyOptions = {}\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 = getMinorUnitsAmount(amount);\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 isShort - if set to true, removes currency symbol before the number value.\n */\nexport const getLocalizedCurrencyValue = (amountValue: string, currency: string, isShort?: boolean): string => {\n const amount: CurrencyAmount = { value: parseFloat(amountValue), currency };\n const formatOptions = isShort ? { style: 'decimal' } : null;\n\n const numberFormatOptions = getNumberFormatOptions(amount, formatOptions);\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 * Removes currency symbol before the number value\n */\n shorthand: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const formattedCurrency = computed((): string => {\n const value = slots.default ? slots.default()[0]?.text : null;\n return getLocalizedCurrencyValue(value, props.currency, props.shorthand);\n });\n\n return {\n // Values\n formattedCurrency,\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n","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}","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 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 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}","/**\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}","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 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;","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;","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}","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 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-currency__amount\"\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';\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 * JavaScript \"Date\" object\n */\n date: {\n type: Date,\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();\n // TODO to replace with dynamic import\n const locales = { de, enUS, fr };\n\n const formattedDate = computed(() =>\n format(props.date, props.format, { locale: locales[locale.value.substring(0, 2)] || enUS })\n );\n\n return {\n // Values\n formattedDate,\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 target=\"_blank\"\n :title=\"linkProps.title\"\n >\n <slot />\n </a>\n <router-link\n v-else\n v-slot=\"slotProps\"\n class=\"b-link\"\n :class=\"conditionalClasses\"\n v-bind=\"linkProps\"\n :to=\"linkProps.to\"\n custom\n >\n <a\n v-bind=\"$attrs\"\n :href=\"slotProps.href\"\n :class=\"slotProps.isActive ? linkProps.activeClass : ''\"\n @click=\"slotProps.navigate\"\n >\n <slot v-bind=\"slotProps\" />\n </a>\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 } 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</script>\n\n<style lang=\"scss\" scoped src=\"./link.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 :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.BODY\">\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","BentoTheme","setDefaultTheme","install","Vue","adlLegacyCssVars","bentoLegacyCssVars","adlCssVars","bentoCssVars","BentoVue","BentoAlertSeverityOption","BentoButtonVariant","BentoButtonPropClass","BentoTypographyVariant","BentoTypographyModifier","BentoTypographyElement","_sfc_main$1i","defineComponent","props","computed","uuid","_sfc_main","hasSlot","slots","name","_sfc_main$1c","BentoTypography","emit","attrs","ariaAttributes","_a","variantClass","conditionalClasses","_sfc_main$1b","CrossSmall","BentoButton","Warning","CrossCircle","CheckedCircle","Info","alertConditionalClasses","computedRole","onCloseButtonClick","onMounted","BentoAvatarImageVariant","BentoAvatarImageColor","useInitials","username","computedUsername","ref","useDefaultSlotValidator","componentName","defaultSlotValue","optionalSlotsValue","optionalSlotValue","useCheckboxSelectAll","selectedItemsList","items","selectAll","unselectAll","isAllSelected","isIndeterminate","selectedValue","_sfc_main$1a","toRefs","initials","_sfc_main$19","AvatarImage","computedAriaLabel","charCode","avatarColor","rangeStep","BentoButtonActionsLayoutBasic","BentoButtonActionsLayoutExtended","BentoButtonActionsLayout","_sfc_main$17","layout","reversedActionsList","generateButtonVariantByIndex","actionIndex","lastActionIndex","BentoLoadingButtonState","BentoLoadingIndicatorEvent","_sfc_main$16","onUnmounted","_sfc_main$15","Cross","Checkmark","BentoLoadingIndicator","isInverseLoadingIndicator","useAriaLabel","ariaLabel","label","defaultFallback","computedLabel","computedDefaultFallback","useSlotText","slot","_sfc_main$12","CheckmarkSmallIcon","MinusSmallIcon","disabled","indeterminate","modelValue","descriptionSlotValue","isCheckboxGroup","isChecked","item","ariaChecked","_b","conditionalClass","conditionalClassOutline","event","newValue","newCheckedList","index","_sfc_main$11","legendConditionalClasses","BentoCheckboxGroupVariant","_sfc_main$10","BentoCheckbox","ControlsGroup","_sfc_main$$","_sfc_main$Z","BentoListboxOption","CheckmarkIcon","onOptionSelected","ariaDisabled","ariaSelected","tabIndex","i18n","useI18n","vm","getCurrentInstance","v","_sfc_main$Y","messages","t","optionStates","option","isDisabled","isPreSelected","enabledItems","selectAllCheckboxText","total","amountSelectedValues","filterOutDisabledAndNotPreselectedOptions","findDisabledPreselectedFields","toggleSelectAll","exists","_sfc_main$X","BentoListboxSingleSelectOption","BentoListboxMultiSelect","_","BentoTagVariant","isClient","defaultWindow","isIOS","resolveUnref","r","unref","unrefElement","elRef","plain","noop","isString","val","useEventListener","args","target","events","listeners","cleanups","cleanup","fn","register","el","listener","registerOptions","stopWatch","watch","stopWatchOptions","_iOSWorkaround","onClickOutside","handler","window","ignore","capture","detectIframe","shouldListen","shouldIgnore","BentoClickOutsideDirective","targetElement","binding","FOCUS_GROUP","FOCUS_DISABLED","FOCUS_ALLOW","FOCUS_AUTO","FOCUS_NO_AUTOFOCUS","toArray","ret","asArray","isElementHidden","node","computedStyle","getParentNode","isTopNode","isVisibleUncached","checkParent","isVisibleCached","visibilityCache","cached","result","isAutoFocusAllowedUncached","isAutoFocusAllowed","isAutoFocusAllowedCached","cache","getDataset","isHTMLButtonElement","isHTMLInputElement","isRadioElement","notHiddenInput","attribute","isGuard","isNotAGuard","isDefined","x","tabSort","b","tabDiff","indexDiff","orderByTabIndex","nodes","filterNegative","keepGuards","data","tabbables","queryTabbables","queryGuardTabbables","getFocusablesWithShadowDom","parent","withGuards","acc","child","getFocusables","parents","getParentAutofocusables","parentFocus","filterFocusable","filterAutoFocusable","getTabbableNodes","topNodes","getAllTabbableNodes","parentAutofocusables","topNode","contains","scope","element","filterNested","contained","l","j","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","lastIndex","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$W","moveFocusInside","currentTag","isArrowNext","isArrowPrev","focusableEl","focusOnDestroyEl","PopperContainerPositionBasic","PopperContainerPositionExtended","PopperContainerAriaRole","PopperContainerPosition","getArrowModifier","arrow","arrowProps","getOffsetModifier","getFlipModifier","fallbackPosition","arrowDataHideAttributeModifier","state","sameWidthModifier","_sfc_main$V","BentoFocusTrap","currentModifiers","strategy","popperElement","createPopper","BentoTooltipPosition","BentoTooltipState","optionsSupport","support","listen","type","cleanupBatch","eventType","eventOptions","useNativeOnce","eventListener","KeyCode","_sfc_main$U","PopperContainer","TooltipComponent","Tooltip","tooltipInstances","ariaDescribedByAttr","tooltipId","tooltip","open","createTooltip","destroyTooltip","getTooltipPosition","getTooltipInstanceForTarget","ctx","showTooltip","tooltipInstance","hideTooltip","BentoTooltipDirective","show","hide","evt","context","removeListener","_sfc_main$T","tagConditionalClasses","textFromSlot","shouldShowTooltip","formattedText","_sfc_main$S","BentoTag","_sfc_main$R","BentoListbox","debounce","debounceTime","timeoutId","DropdownBaseTextboxState","_sfc_main$Q","CrossCircleFillIcon","textbox","textboxId","isFiltering","onOpenDropdown","onCloseDropdown","onToggleDropdown","onSpaceBar","onClearSearch","onInputEvent","selectedValueItems","_sfc_main$N","ChevronDownIcon","ChevronUpIcon","DropdownBaseTextbox","isDropdownOpen","BentoInputFieldVariant","BentoInputFieldStaticValuePosition","BentoInputFieldStateClass","BentoInputFieldType","_sfc_main$M","inputFieldElement","inputFieldId","shouldShowStaticValue","shouldDisplayStaticValueAtStart","shouldDisplayStaticValueAtEnd","inputFieldConditionalClasses","_sfc_main$K","BentoInputField","SearchIcon","searchTerm","bentoInputField","useSearchBarFilter","searchTermRef","dataRef","searchTermLowerCased","_sfc_main$J","BentoDropdownOptionsContainer","DropdownInputDefault","inputContainerRef","dropdownOptionsContainerId","labelId","toRef","filteredItems","displayValue","selectedItem","selectedValueItem","_sfc_main$I","BentoDropdown","BentoAvatar","onInput","src","useCountryCapital","code","locale","useFallback","countryCode","languageLocale","VueI18n","normalizedCode","useCountryFlag","flagSrc","newCountryCode","flag","unknownFlag","useCountryName","useCountryPhoneCode","countryISOToPhoneCodes","BentoCountryVariant","BentoCountryCode","_sfc_main$H","UnknownFlagIcon","variant","customLabel","flagIconSrc","countryName","countryLabel","getLabel","useCountryItems","_sfc_main$G","BentoCountry","_sfc_main$F","ListboxOptionTag","_props","BentoPaymentMethodType","usePaymentIcon","paymentType","paymentIconSrc","newPaymentType","unknownPaymentType","_sfc_main$E","UnknownCardIcon","_sfc_main$D","BentoPaymentMethod","DEFAULT_NUMBER_OF_RESULTS","PREDEFINED_RESULTS_PER_PAGE_VALUES","_sfc_main$C","itemsPerPageValue","dropdownId","dropdownOptions","onSelectChange","selectedNumberOfResults","translationPathKey","_sfc_main$B","onPageSelectChange","selectedPage","transformIntoOption","transformToPageNumber","listOfAvailablePages","_sfc_main$w","SkipLeft","SkipRight","ChevronLeft","ChevronRight","isCurrentPageFirst","isCurrentPageLast","isNextButtonDisabled","isLastPageButtonDisabled","hasNoNextPage","hasNoTotalPagesNumber","pageArg","_sfc_main$v","BentoPaginationContext","BentoPaginationControls","BentoPaginationResultsPerPage","totalPages","navigate","onPageSelected","pageNumber","onItemsPerPageChange","elements","navigationConditionalClasses","BentoFilterItemType","BentoPopoverPositions","_sfc_main$u","isStrongest","titleVariant","_sfc_main$s","CrossIcon","_sfc_main$r","BentoButtonActions","BentoPopoverDismissButton","BentoPopoverTitle","title","contentConditionalClasses","_sfc_main$q","labelSlot","_sfc_main$p","BentoFilterButton","BentoPopover","isFilterOpen","filterButtonRef","closePopover","onClickClear","onClickFilter","onClickApply","isArray","isValueEmpty","useBaseFilter","appliedFilter","internalFilterValue","isFilterInactive","isClearButtonDisabled","isApplyButtonDisabled","_sfc_main$o","BentoBaseFilter","BentoSearchBar","itemsRef","listboxFilterId","updateFilter","clearFilter","openFilter","closeFilter","singleSelectAmount","bentoToastController","useBentoToastController","_sfc_main$n","inputTextRef","appliedFiltersCount","onBeforeUpdate","nextTick","BentoRadioGroupVariant","_sfc_main$m","radioButtonId","subLabelSlotValue","_sfc_main$l","RadioButton","inputValue","_sfc_main$k","BentoRadioGroup","_sfc_main$j","updateFrom","updateTo","_sfc_main$i","BentoBooleanFilter","BentoRangeFilter","BentoTextFilter","BentoSelectFilter","toastController","searchBarAriaLabel","updatedFilter","filterIndex","filter","newFilters","previousFilters","clearedFilters","otherFields","newSearchTerm","BentoColumnOverflow","BentoDatagridStyleState","BentoDatagridSortDirection","BentoDatagridEvent","useResizer","columns","columnWidthOverridesLookup","colKeyLookup","col","columnsRefs","allColumnRefs","stepPositionX","resizingColumnField","defaultResizedColumnWidths","field","width","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","column","computedWidth","key","useCalculateColumnWidth","newColumns","bodyRef","body","gridWidth","caclulatedWidths","widthAllocatedBeforeFlex","columnsLookup","columnDefs","fluidCol","computedColumnWidths","onColumnWidthOverride","newColumnWidthOverridesLookup","processedColumns","totalWidthOfAllColumns","totalWidthOfAllCalculatedWidths","gridColumnWidthStyle","useSorter","sortBy","direction","sortedCol","updatedSortBy","useSelector","selection","getDataItemId","isDataItemDisabled","selectedItems","allItemsSelectedState","emitSelect","onAllRowSelect","allItemsSelected","dataItem","onRowSelect","isEveryItemSelected","useConfigSettings","condensed","columnsRef","compactView","isCompactView","columnIndexes","newVisibilityColumns","_sfc_main$e","InfoIcon","_sfc_main$d","BentoInfoIcon","TriangleUp","TriangleDown","allItemsSelectedCheckboxState","areAllItemsSelected","startResize","conditionalSortDirectionClasses","sortByColumnField","conditionalColumnClasses","conditionalColumnSeperatorClasses","BentoTogglePropClass","AdlLabelPosition","_sfc_main$c","CheckmarkSmall","toggleInput","descriptionId","computedDescription","_sfc_main$a","BentoCrossIcon","BentoCrossCircleFillIcon","BentoSettingsIcon","BentoSearchIcon","BentoToggle","configSettingsButtonRef","searchBarRef","isConfigSettingsPanelOpen","allColumnsVisbilityToggleState","isColumnVisibilityFilterShown","filteredColumnVisibilityColumns","clearAction","areAllNonMandatoryColumnsHidden","toggleColumnFilter","columnVisilibity","isColumnVisible","fieldName","isMandatory","visibleColumns","toggleState","_sfc_main$9","BentoDataGridColumns","BentoDataGridConfigSettings","BentoPagination","BentoFilterBar","selectable","onConfigSettingsUpdate","onColumnVisibiltyChange","conditionalGridClasses","conditionalRowClasses","row","conditionalRowCellClasses","conditionalTitleAttribute","content","getRowData","rowData","conditionalPaginationClasses","_c","_f","_e","_d","ariaGridHeaderText","resizeEvent","page","itemsPerPage","BentoCardBackground","_sfc_main$8","cardId","showContent","cardConditionalClasses","cardHeaderConditionalClasses","cardBodyConditionalClasses","showCardBody","BentoClickOutside","h","currencyExponentMap","getExponent","currencyCode","obj","getMinorUnitsAmount","amount","exponent","getNormalizedAmount","getNumberFormatOptions","exp","minorAmount","amountInMinorUnits","style","minimumFractionDigits","maximumFractionDigits","getLocalizedCurrencyValue","amountValue","currency","isShort","numberFormatOptions","BentoCurrencyISOCode","_sfc_main$7","toInteger","dirtyNumber","number","requiredArgs","required","toDate","argument","argStr","addMilliseconds","dirtyDate","dirtyAmount","timestamp","getTimezoneOffsetInMilliseconds","date","utcDate","isDate","isValid","formatDistanceLocale","formatDistance","token","count","tokenValue","formatDistance$5","buildFormatLongFn","format","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","rem100","localize","quarter","localize$5","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","match$5","enUS","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","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","input","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","defaultLocale","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","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$6","locales","BentoLinkVariant","__default__","attributes","useAttrs","BentoStatusVariant","_sfc_main$4","TABS_REGISTER_TAB_INJECTION_KEY","TABS_ACTIVE_TAB_ID_KEY","_sfc_main$3","registerTab","inject","activeTabId","getPreviousTabIndex","activeTabIndex","tabsValue","newActiveTabIndex","getNextTabIndex","_sfc_main$2","tabs","tablist","provide","onKeydownTabsNavigation","activeTab","tab","firstEnabledTab","_sfc_main$1","dismissButtonClicked","onActionClicked","DURATION","ToastItem","dismissTimer","toastsToShow","cancelDismissTimer","startTimer","toastToDismiss","startDismissTimer","computedPositioning","numberOfElements","computedHeight","visibleToastHeight","stackHeight"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvCA,IAAI3W;AAOG,MAAM+W,KAAiB,CAACZ,GAAwBC,GAA0BC,IAAc,OAAS;AAC9F,QAAAC,IAAcvb,EAAIob,CAAI,GACtBI,IAAiBxb,EAAIqb,CAAM;AACjC,SAAKpW,OACDA,KAAO,IAAIwW,GAAQ,EAAElW,UAAAA,GAAU,CAAA,IAG5BrH,EAAS,MAAM;;AACZ,UAAAwd,KAAiB7c,IAAA0c,KAAA,gBAAAA,EAAa,UAAb,gBAAA1c,EAAoB;AAC3C,WAAKoG,GAAK,GAAGyW,GAAgBF,EAAe,KAAK,IAG1CvW,GAAK,EAAEyW,GAAgBF,EAAe,KAAK,IAFvCF,IAAcC,EAAY,QAAQ;AAAA,EAEK,CACrD;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GCnBaU,KAAsB,CAACV,MAAkC;AAC5D,QAAAH,IAAOpb,EAAIub,CAAW;AAErB,SAAArd,EAAS,MAAM;;AAAA,YAAAW,IAAAqd,MAAA,gBAAAA,GAAyBd,EAAK,WAA9B,gBAAAvc,EAAsC,KAAK;AAAA,GAAI;AACzE;ACdY,IAAAsd,sBAAAA,OACRA,EAAA,MAAM,OACNA,EAAA,OAAO,QACPA,EAAA,aAAa,cACbA,EAAA,UAAU,WACVA,EAAA,SAAS,UALDA,IAAAA,KAAA,CAAA,CAAA,GAOAC,uBAAAA,OACRA,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,MAC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M,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,OAxKEA,IAAAA,MAAA,CAAA,CAAA;ACmCZ,MAAAC,KAAA5yB,EAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA,EAAA,iBAAAS,EAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAA;AAAA,IACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAAkyB,GAAA;AAAA,MACA,WAAA,CAAAl0B,MAAA,OAAA,OAAAk0B,EAAA,EAAA,SAAAl0B,CAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,MAAAwB,GAAA,EAAA,OAAAK,KAAA;AAMA,WAAA;AAAA;AAAA,MAEA,mBAPAJ,EAAA,MAAA;;AACA,cAAAzB,IAAA6B,EAAA,WAAAO,IAAAP,EAAA,UAAA,CAAA,MAAA,gBAAAO,EAAA,OAAA;AACA,eAAAyxB,GAAA7zB,GAAAwB,EAAA,UAAAA,EAAA,SAAA;AAAA,MAAA,CACA;AAAA;AAAA,MAOA,wBAAAL;AAAA,MACA,wBAAAE;AAAA,IAAA;AAAA,EAEA;AACA,CAAA;;;;;;;;;;;;;;;ACpEe,SAAS+yB,EAAUC,GAAa;AAC7C,MAAIA,MAAgB,QAAQA,MAAgB,MAAQA,MAAgB;AAClE,WAAO;AAGT,MAAIC,IAAS,OAAOD,CAAW;AAE/B,SAAI,MAAMC,CAAM,IACPA,IAGFA,IAAS,IAAI,KAAK,KAAKA,CAAM,IAAI,KAAK,MAAMA,CAAM;AAC3D;ACZe,SAASC,EAAaC,GAAU1pB,GAAM;AACnD,MAAIA,EAAK,SAAS0pB;AAChB,UAAM,IAAI,UAAUA,IAAW,eAAeA,IAAW,IAAI,MAAM,MAAM,yBAAyB1pB,EAAK,SAAS,UAAU;AAE9H;AC4Be,SAAS2pB,EAAOC,GAAU;AACvC,EAAAH,EAAa,GAAG,SAAS;AACzB,MAAII,IAAS,OAAO,UAAU,SAAS,KAAKD,CAAQ;AAEpD,SAAIA,aAAoB,QAAQ,OAAOA,KAAa,YAAYC,MAAW,kBAElE,IAAI,KAAKD,EAAS,QAAS,CAAA,IACzB,OAAOA,KAAa,YAAYC,MAAW,oBAC7C,IAAI,KAAKD,CAAQ,MAEnB,OAAOA,KAAa,YAAYC,MAAW,sBAAsB,OAAO,UAAY,QAEvF,QAAQ,KAAK,kJAAkJ,GAE/J,QAAQ,KAAK,IAAI,MAAO,EAAC,KAAK,IAGzB,oBAAI,KAAK,GAAG;AAEvB;ACzBe,SAASC,GAAgBC,GAAWC,GAAa;AAC9D,EAAAP,EAAa,GAAG,SAAS;AACzB,MAAIQ,IAAYN,EAAOI,CAAS,EAAE,QAAO,GACrC1B,IAASiB,EAAUU,CAAW;AAClC,SAAO,IAAI,KAAKC,IAAY5B,CAAM;AACpC;ACpBe,SAAS6B,GAAgCC,GAAM;AAC5D,MAAIC,IAAU,IAAI,KAAK,KAAK,IAAID,EAAK,eAAeA,EAAK,SAAQ,GAAIA,EAAK,WAAWA,EAAK,SAAQ,GAAIA,EAAK,WAAY,GAAEA,EAAK,cAAcA,EAAK,gBAAe,CAAE,CAAC;AACnK,SAAAC,EAAQ,eAAeD,EAAK,YAAa,CAAA,GAClCA,EAAK,QAAO,IAAKC,EAAQ,QAAO;AACzC;ACuBe,SAASC,GAAOn1B,GAAO;AACpC,SAAAu0B,EAAa,GAAG,SAAS,GAClBv0B,aAAiB,QAAQ,OAAOA,KAAU,YAAY,OAAO,UAAU,SAAS,KAAKA,CAAK,MAAM;AACzG;ACoBe,SAASo1B,GAAQP,GAAW;AAGzC,MAFAN,EAAa,GAAG,SAAS,GAErB,CAACY,GAAON,CAAS,KAAK,OAAOA,KAAc;AAC7C,WAAO;AAGT,MAAII,IAAOR,EAAOI,CAAS;AAC3B,SAAO,CAAC,MAAM,OAAOI,CAAI,CAAC;AAC5B;ACtEA,IAAII,KAAuB;AAAA,EACzB,kBAAkB;AAAA,IAChB,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,UAAU;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,EACb,kBAAkB;AAAA,IAChB,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,UAAU;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,OAAO;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,cAAc;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,SAAS;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,YAAY;AAAA,IACV,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,cAAc;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AACH,GAEIC,KAAiB,SAAUC,GAAOC,GAAO51B,GAAS;AACpD,MAAI8N,GACA+nB,IAAaJ,GAAqBE,CAAK;AAU3C,SARI,OAAOE,KAAe,WACxB/nB,IAAS+nB,IACAD,MAAU,IACnB9nB,IAAS+nB,EAAW,MAEpB/nB,IAAS+nB,EAAW,MAAM,QAAQ,aAAaD,EAAM,SAAQ,CAAE,GAG7D51B,KAAY,QAA8BA,EAAQ,YAChDA,EAAQ,cAAcA,EAAQ,aAAa,IACtC,QAAQ8N,IAERA,IAAS,SAIbA;AACT;AAEA,MAAAgoB,KAAeJ;ACvFA,SAASK,EAAkB7qB,GAAM;AAC9C,SAAO,WAAY;AACjB,QAAIlL,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAE9EypB,IAAQzpB,EAAQ,QAAQ,OAAOA,EAAQ,KAAK,IAAIkL,EAAK,cACrD8qB,IAAS9qB,EAAK,QAAQue,CAAK,KAAKve,EAAK,QAAQA,EAAK,YAAY;AAClE,WAAO8qB;AAAA,EACX;AACA;ACPA,IAAIC,KAAc;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT,GACIC,KAAc;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT,GACIC,KAAkB;AAAA,EACpB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT,GACIC,KAAa;AAAA,EACf,MAAML,EAAkB;AAAA,IACtB,SAASE;AAAAA,IACT,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,MAAMF,EAAkB;AAAA,IACtB,SAASG;AAAAA,IACT,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,UAAUH,EAAkB;AAAA,IAC1B,SAASI;AAAAA,IACT,cAAc;AAAA,EAClB,CAAG;AACH;AACA,MAAAE,KAAeD;ACjCf,IAAIE,KAAuB;AAAA,EACzB,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AACT,GAEIC,KAAiB,SAAUZ,GAAOa,GAAOC,GAAWC,GAAU;AAChE,SAAOJ,GAAqBX,CAAK;AACnC;AAEA,MAAAgB,KAAeJ;ACbA,SAASK,EAAgB1rB,GAAM;AAC5C,SAAO,SAAU2rB,GAAYC,GAAc;AACzC,QAAI92B,IAAU82B,KAAgB,IAC1Bpc,IAAU1a,EAAQ,UAAU,OAAOA,EAAQ,OAAO,IAAI,cACtD+2B;AAEJ,QAAIrc,MAAY,gBAAgBxP,EAAK,kBAAkB;AACrD,UAAI8rB,IAAe9rB,EAAK,0BAA0BA,EAAK,cACnDue,IAAQzpB,EAAQ,QAAQ,OAAOA,EAAQ,KAAK,IAAIg3B;AACpD,MAAAD,IAAc7rB,EAAK,iBAAiBue,CAAK,KAAKve,EAAK,iBAAiB8rB,CAAY;AAAA,WAC3E;AACL,UAAIC,IAAgB/rB,EAAK,cAErBgsB,IAASl3B,EAAQ,QAAQ,OAAOA,EAAQ,KAAK,IAAIkL,EAAK;AAE1D,MAAA6rB,IAAc7rB,EAAK,OAAOgsB,CAAM,KAAKhsB,EAAK,OAAO+rB,CAAa;AAAA;AAGhE,QAAIpvB,IAAQqD,EAAK,mBAAmBA,EAAK,iBAAiB2rB,CAAU,IAAIA;AAExE,WAAOE,EAAYlvB,CAAK;AAAA,EAC5B;AACA;ACrBA,IAAIsvB,KAAY;AAAA,EACd,QAAQ,CAAC,KAAK,GAAG;AAAA,EACjB,aAAa,CAAC,MAAM,IAAI;AAAA,EACxB,MAAM,CAAC,iBAAiB,aAAa;AACvC,GACIC,KAAgB;AAAA,EAClB,QAAQ,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,EAC3B,aAAa,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,EACpC,MAAM,CAAC,eAAe,eAAe,eAAe,aAAa;AACnE,GAKIC,KAAc;AAAA,EAChB,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACnE,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAChG,MAAM,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAU;AACjI,GACIC,KAAY;AAAA,EACd,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EAC1C,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,EAChD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC7D,MAAM,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AACrF,GACIC,KAAkB;AAAA,EACpB,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AACH,GACIC,KAA4B;AAAA,EAC9B,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AACH,GAEIC,KAAgB,SAAUhD,GAAaiC,GAAU;AACnD,MAAIhC,IAAS,OAAOD,CAAW,GAO3BiD,IAAShD,IAAS;AAEtB,MAAIgD,IAAS,MAAMA,IAAS;AAC1B,YAAQA,IAAS,IAAE;AAAA,MACjB,KAAK;AACH,eAAOhD,IAAS;AAAA,MAElB,KAAK;AACH,eAAOA,IAAS;AAAA,MAElB,KAAK;AACH,eAAOA,IAAS;AAAA,IACnB;AAGH,SAAOA,IAAS;AAClB,GAEIiD,KAAW;AAAA,EACb,eAAeF;AAAAA,EACf,KAAKb,EAAgB;AAAA,IACnB,QAAQO;AAAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,SAASP,EAAgB;AAAA,IACvB,QAAQQ;AAAAA,IACR,cAAc;AAAA,IACd,kBAAkB,SAAUQ,GAAS;AACnC,aAAOA,IAAU;AAAA,IAClB;AAAA,EACL,CAAG;AAAA,EACD,OAAOhB,EAAgB;AAAA,IACrB,QAAQS;AAAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,KAAKT,EAAgB;AAAA,IACnB,QAAQU;AAAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,WAAWV,EAAgB;AAAA,IACzB,QAAQW;AAAAA,IACR,cAAc;AAAA,IACd,kBAAkBC;AAAAA,IAClB,wBAAwB;AAAA,EAC5B,CAAG;AACH;AACA,MAAAK,KAAeF;ACjJA,SAASG,EAAa5sB,GAAM;AACzC,SAAO,SAAU6sB,GAAQ;AACvB,QAAI/3B,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9EypB,IAAQzpB,EAAQ,OAChBg4B,IAAevO,KAASve,EAAK,cAAcue,CAAK,KAAKve,EAAK,cAAcA,EAAK,iBAAiB,GAC9F+sB,IAAcF,EAAO,MAAMC,CAAY;AAE3C,QAAI,CAACC;AACH,aAAO;AAGT,QAAIC,IAAgBD,EAAY,CAAC,GAC7BE,IAAgB1O,KAASve,EAAK,cAAcue,CAAK,KAAKve,EAAK,cAAcA,EAAK,iBAAiB,GAC/F0gB,IAAM,MAAM,QAAQuM,CAAa,IAAIC,GAAUD,GAAe,SAAUE,GAAS;AACnF,aAAOA,EAAQ,KAAKH,CAAa;AAAA,IAClC,CAAA,IAAII,GAAQH,GAAe,SAAUE,GAAS;AAC7C,aAAOA,EAAQ,KAAKH,CAAa;AAAA,IACvC,CAAK,GACG93B;AACJ,IAAAA,IAAQ8K,EAAK,gBAAgBA,EAAK,cAAc0gB,CAAG,IAAIA,GACvDxrB,IAAQJ,EAAQ,gBAAgBA,EAAQ,cAAcI,CAAK,IAAIA;AAC/D,QAAIm4B,IAAOR,EAAO,MAAMG,EAAc,MAAM;AAC5C,WAAO;AAAA,MACL,OAAO93B;AAAA,MACP,MAAMm4B;AAAA,IACZ;AAAA,EACA;AACA;AAEA,SAASD,GAAQE,GAAQC,GAAW;AAClC,WAAS7M,KAAO4M;AACd,QAAIA,EAAO,eAAe5M,CAAG,KAAK6M,EAAUD,EAAO5M,CAAG,CAAC;AACrD,aAAOA;AAKb;AAEA,SAASwM,GAAUM,GAAOD,GAAW;AACnC,WAAS7M,IAAM,GAAGA,IAAM8M,EAAM,QAAQ9M;AACpC,QAAI6M,EAAUC,EAAM9M,CAAG,CAAC;AACtB,aAAOA;AAKb;AC/Ce,SAAS+M,GAAoBztB,GAAM;AAChD,SAAO,SAAU6sB,GAAQ;AACvB,QAAI/3B,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9Ei4B,IAAcF,EAAO,MAAM7sB,EAAK,YAAY;AAChD,QAAI,CAAC+sB;AAAa,aAAO;AACzB,QAAIC,IAAgBD,EAAY,CAAC,GAC7BW,IAAcb,EAAO,MAAM7sB,EAAK,YAAY;AAChD,QAAI,CAAC0tB;AAAa,aAAO;AACzB,QAAIx4B,IAAQ8K,EAAK,gBAAgBA,EAAK,cAAc0tB,EAAY,CAAC,CAAC,IAAIA,EAAY,CAAC;AACnF,IAAAx4B,IAAQJ,EAAQ,gBAAgBA,EAAQ,cAAcI,CAAK,IAAIA;AAC/D,QAAIm4B,IAAOR,EAAO,MAAMG,EAAc,MAAM;AAC5C,WAAO;AAAA,MACL,OAAO93B;AAAA,MACP,MAAMm4B;AAAA,IACZ;AAAA,EACA;AACA;ACdA,IAAIM,KAA4B,yBAC5BC,KAA4B,QAC5BC,KAAmB;AAAA,EACrB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAmB;AAAA,EACrB,KAAK,CAAC,OAAO,SAAS;AACxB,GACIC,KAAuB;AAAA,EACzB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAuB;AAAA,EACzB,KAAK,CAAC,MAAM,MAAM,MAAM,IAAI;AAC9B,GACIC,KAAqB;AAAA,EACvB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAqB;AAAA,EACvB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC3F,KAAK,CAAC,QAAQ,OAAO,SAAS,QAAQ,SAAS,SAAS,SAAS,QAAQ,OAAO,OAAO,OAAO,KAAK;AACrG,GACIC,KAAmB;AAAA,EACrB,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAmB;AAAA,EACrB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EACxD,KAAK,CAAC,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,MAAM;AAC3D,GACIC,KAAyB;AAAA,EAC3B,QAAQ;AAAA,EACR,KAAK;AACP,GACIC,KAAyB;AAAA,EAC3B,KAAK;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AACH,GACIC,KAAQ;AAAA,EACV,eAAed,GAAoB;AAAA,IACjC,cAAcE;AAAAA,IACd,cAAcC;AAAAA,IACd,eAAe,SAAU14B,GAAO;AAC9B,aAAO,SAASA,GAAO,EAAE;AAAA,IAC1B;AAAA,EACL,CAAG;AAAA,EACD,KAAK03B,EAAa;AAAA,IAChB,eAAeiB;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,SAASlB,EAAa;AAAA,IACpB,eAAemB;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAe,SAAUrxB,GAAO;AAC9B,aAAOA,IAAQ;AAAA,IAChB;AAAA,EACL,CAAG;AAAA,EACD,OAAOiwB,EAAa;AAAA,IAClB,eAAeqB;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,KAAKtB,EAAa;AAAA,IAChB,eAAeuB;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,WAAWxB,EAAa;AAAA,IACtB,eAAeyB;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AACH;AACA,MAAAE,KAAeD;AClFf,IAAIza,KAAS;AAAA,EACX,MAAM;AAAA,EACN,gBAAgB0W;AAAAA,EAChB,YAAYU;AAAAA,EACZ,gBAAgBG;AAAAA,EAChB,UAAUoB;AAAAA,EACV,OAAO8B;AAAAA,EACP,SAAS;AAAA,IACP,cAAc;AAAA,IAGd,uBAAuB;AAAA,EACxB;AACH;AACA,MAAAE,KAAe3a;ACHA,SAAS4a,GAAgB3E,GAAWC,GAAa;AAC9D,EAAAP,EAAa,GAAG,SAAS;AACzB,MAAIpB,IAASiB,EAAUU,CAAW;AAClC,SAAOF,GAAgBC,GAAW,CAAC1B,CAAM;AAC3C;AC5BA,IAAIsG,KAAsB;AAGX,SAASC,GAAgB7E,GAAW;AACjD,EAAAN,EAAa,GAAG,SAAS;AACzB,MAAIU,IAAOR,EAAOI,CAAS,GACvBE,IAAYE,EAAK;AACrB,EAAAA,EAAK,YAAY,GAAG,CAAC,GACrBA,EAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,MAAI0E,IAAuB1E,EAAK,WAC5B2E,IAAa7E,IAAY4E;AAC7B,SAAO,KAAK,MAAMC,IAAaH,EAAmB,IAAI;AACxD;ACVe,SAASI,GAAkBhF,GAAW;AACnD,EAAAN,EAAa,GAAG,SAAS;AACzB,MAAIuF,IAAe,GACf7E,IAAOR,EAAOI,CAAS,GACvBkF,IAAM9E,EAAK,aACX+E,KAAQD,IAAMD,IAAe,IAAI,KAAKC,IAAMD;AAChD,SAAA7E,EAAK,WAAWA,EAAK,WAAY,IAAG+E,CAAI,GACxC/E,EAAK,YAAY,GAAG,GAAG,GAAG,CAAC,GACpBA;AACT;ACRe,SAASgF,GAAkBpF,GAAW;AACnD,EAAAN,EAAa,GAAG,SAAS;AACzB,MAAIU,IAAOR,EAAOI,CAAS,GACvBqF,IAAOjF,EAAK,kBACZkF,IAA4B,oBAAI,KAAK,CAAC;AAC1C,EAAAA,EAA0B,eAAeD,IAAO,GAAG,GAAG,CAAC,GACvDC,EAA0B,YAAY,GAAG,GAAG,GAAG,CAAC;AAChD,MAAIC,IAAkBP,GAAkBM,CAAyB,GAC7DE,IAA4B,oBAAI,KAAK,CAAC;AAC1C,EAAAA,EAA0B,eAAeH,GAAM,GAAG,CAAC,GACnDG,EAA0B,YAAY,GAAG,GAAG,GAAG,CAAC;AAChD,MAAIC,IAAkBT,GAAkBQ,CAAyB;AAEjE,SAAIpF,EAAK,QAAO,KAAMmF,EAAgB,QAAO,IACpCF,IAAO,IACLjF,EAAK,QAAS,KAAIqF,EAAgB,QAAO,IAC3CJ,IAEAA,IAAO;AAElB;ACpBe,SAASK,GAAsB1F,GAAW;AACvD,EAAAN,EAAa,GAAG,SAAS;AACzB,MAAI2F,IAAOD,GAAkBpF,CAAS,GAClC2F,IAAkB,oBAAI,KAAK,CAAC;AAChC,EAAAA,EAAgB,eAAeN,GAAM,GAAG,CAAC,GACzCM,EAAgB,YAAY,GAAG,GAAG,GAAG,CAAC;AACtC,MAAIvF,IAAO4E,GAAkBW,CAAe;AAC5C,SAAOvF;AACT;ACTA,IAAIwF,KAAuB;AAGZ,SAASC,GAAc7F,GAAW;AAC/C,EAAAN,EAAa,GAAG,SAAS;AACzB,MAAIU,IAAOR,EAAOI,CAAS,GACvBmF,IAAOH,GAAkB5E,CAAI,EAAE,QAAS,IAAGsF,GAAsBtF,CAAI,EAAE;AAI3E,SAAO,KAAK,MAAM+E,IAAOS,EAAoB,IAAI;AACnD;ACVe,SAASE,GAAe9F,GAAW6B,GAAc;AAC9D,EAAAnC,EAAa,GAAG,SAAS;AACzB,MAAI30B,IAAU82B,KAAgB,IAC1B9X,IAAShf,EAAQ,QACjBg7B,IAAqBhc,KAAUA,EAAO,WAAWA,EAAO,QAAQ,cAChEic,IAAsBD,KAAsB,OAAO,IAAIxG,EAAUwG,CAAkB,GACnFd,IAAel6B,EAAQ,gBAAgB,OAAOi7B,IAAsBzG,EAAUx0B,EAAQ,YAAY;AAEtG,MAAI,EAAEk6B,KAAgB,KAAKA,KAAgB;AACzC,UAAM,IAAI,WAAW,kDAAkD;AAGzE,MAAI7E,IAAOR,EAAOI,CAAS,GACvBkF,IAAM9E,EAAK,aACX+E,KAAQD,IAAMD,IAAe,IAAI,KAAKC,IAAMD;AAChD,SAAA7E,EAAK,WAAWA,EAAK,WAAY,IAAG+E,CAAI,GACxC/E,EAAK,YAAY,GAAG,GAAG,GAAG,CAAC,GACpBA;AACT;ACjBe,SAAS6F,GAAejG,GAAW6B,GAAc;AAC9D,EAAAnC,EAAa,GAAG,SAAS;AACzB,MAAIU,IAAOR,EAAOI,CAAS,GACvBqF,IAAOjF,EAAK,kBACZr1B,IAAU82B,KAAgB,IAC1B9X,IAAShf,EAAQ,QACjBm7B,IAA8Bnc,KAAUA,EAAO,WAAWA,EAAO,QAAQ,uBACzEoc,IAA+BD,KAA+B,OAAO,IAAI3G,EAAU2G,CAA2B,GAC9GE,IAAwBr7B,EAAQ,yBAAyB,OAAOo7B,IAA+B5G,EAAUx0B,EAAQ,qBAAqB;AAE1I,MAAI,EAAEq7B,KAAyB,KAAKA,KAAyB;AAC3D,UAAM,IAAI,WAAW,2DAA2D;AAGlF,MAAIC,IAAsB,oBAAI,KAAK,CAAC;AACpC,EAAAA,EAAoB,eAAehB,IAAO,GAAG,GAAGe,CAAqB,GACrEC,EAAoB,YAAY,GAAG,GAAG,GAAG,CAAC;AAC1C,MAAId,IAAkBO,GAAeO,GAAqBxE,CAAY,GAClEyE,IAAsB,oBAAI,KAAK,CAAC;AACpC,EAAAA,EAAoB,eAAejB,GAAM,GAAGe,CAAqB,GACjEE,EAAoB,YAAY,GAAG,GAAG,GAAG,CAAC;AAC1C,MAAIb,IAAkBK,GAAeQ,GAAqBzE,CAAY;AAEtE,SAAIzB,EAAK,QAAO,KAAMmF,EAAgB,QAAO,IACpCF,IAAO,IACLjF,EAAK,QAAS,KAAIqF,EAAgB,QAAO,IAC3CJ,IAEAA,IAAO;AAElB;AC9Be,SAASkB,GAAmBvG,GAAW6B,GAAc;AAClE,EAAAnC,EAAa,GAAG,SAAS;AACzB,MAAI30B,IAAU82B,KAAgB,IAC1B9X,IAAShf,EAAQ,QACjBm7B,IAA8Bnc,KAAUA,EAAO,WAAWA,EAAO,QAAQ,uBACzEoc,IAA+BD,KAA+B,OAAO,IAAI3G,EAAU2G,CAA2B,GAC9GE,IAAwBr7B,EAAQ,yBAAyB,OAAOo7B,IAA+B5G,EAAUx0B,EAAQ,qBAAqB,GACtIs6B,IAAOY,GAAejG,GAAW6B,CAAY,GAC7C2E,IAAY,oBAAI,KAAK,CAAC;AAC1B,EAAAA,EAAU,eAAenB,GAAM,GAAGe,CAAqB,GACvDI,EAAU,YAAY,GAAG,GAAG,GAAG,CAAC;AAChC,MAAIpG,IAAO0F,GAAeU,GAAW3E,CAAY;AACjD,SAAOzB;AACT;ACfA,IAAIwF,KAAuB;AAGZ,SAASa,GAAWzG,GAAWj1B,GAAS;AACrD,EAAA20B,EAAa,GAAG,SAAS;AACzB,MAAIU,IAAOR,EAAOI,CAAS,GACvBmF,IAAOW,GAAe1F,GAAMr1B,CAAO,EAAE,YAAYw7B,GAAmBnG,GAAMr1B,CAAO,EAAE,QAAO;AAI9F,SAAO,KAAK,MAAMo6B,IAAOS,EAAoB,IAAI;AACnD;ACfe,SAASc,EAAgBjH,GAAQkH,GAAc;AAI5D,WAHIC,IAAOnH,IAAS,IAAI,MAAM,IAC1BoH,IAAS,KAAK,IAAIpH,CAAM,EAAE,SAAQ,GAE/BoH,EAAO,SAASF;AACrB,IAAAE,IAAS,MAAMA;AAGjB,SAAOD,IAAOC;AAChB;ACKA,IAAIC,KAAa;AAAA;AAAA,EAEf,GAAG,SAAU1G,GAAMM,GAAO;AASxB,QAAIqG,IAAa3G,EAAK,kBAElBiF,IAAO0B,IAAa,IAAIA,IAAa,IAAIA;AAC7C,WAAOL,EAAgBhG,MAAU,OAAO2E,IAAO,MAAMA,GAAM3E,EAAM,MAAM;AAAA,EACxE;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAO;AACxB,QAAIsG,IAAQ5G,EAAK;AACjB,WAAOM,MAAU,MAAM,OAAOsG,IAAQ,CAAC,IAAIN,EAAgBM,IAAQ,GAAG,CAAC;AAAA,EACxE;AAAA;AAAA,EAED,GAAG,SAAU5G,GAAMM,GAAO;AACxB,WAAOgG,EAAgBtG,EAAK,WAAY,GAAEM,EAAM,MAAM;AAAA,EACvD;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAO;AACxB,QAAIuG,IAAqB7G,EAAK,YAAW,IAAK,MAAM,IAAI,OAAO;AAE/D,YAAQM,GAAK;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AACH,eAAOuG,EAAmB;MAE5B,KAAK;AACH,eAAOA;AAAA,MAET,KAAK;AACH,eAAOA,EAAmB,CAAC;AAAA,MAE7B,KAAK;AAAA,MACL;AACE,eAAOA,MAAuB,OAAO,SAAS;AAAA,IACjD;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAU7G,GAAMM,GAAO;AACxB,WAAOgG,EAAgBtG,EAAK,YAAa,IAAG,MAAM,IAAIM,EAAM,MAAM;AAAA,EACnE;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAO;AACxB,WAAOgG,EAAgBtG,EAAK,YAAa,GAAEM,EAAM,MAAM;AAAA,EACxD;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAO;AACxB,WAAOgG,EAAgBtG,EAAK,cAAe,GAAEM,EAAM,MAAM;AAAA,EAC1D;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAO;AACxB,WAAOgG,EAAgBtG,EAAK,cAAe,GAAEM,EAAM,MAAM;AAAA,EAC1D;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAO;AACxB,QAAIwG,IAAiBxG,EAAM,QACvByG,IAAe/G,EAAK,sBACpBgH,IAAoB,KAAK,MAAMD,IAAe,KAAK,IAAI,IAAID,IAAiB,CAAC,CAAC;AAClF,WAAOR,EAAgBU,GAAmB1G,EAAM,MAAM;AAAA,EACvD;AACH;AACA,MAAA2G,IAAeP;AC5Ef,IAAIQ,KAAgB;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,OAAO;AACT,GA+CIR,KAAa;AAAA;AAAA,EAEf,GAAG,SAAU1G,GAAMM,GAAOgC,GAAU;AAClC,QAAI6E,IAAMnH,EAAK,eAAgB,IAAG,IAAI,IAAI;AAE1C,YAAQM,GAAK;AAAA,MAEX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOgC,EAAS,IAAI6E,GAAK;AAAA,UACvB,OAAO;AAAA,QACjB,CAAS;AAAA,MAGH,KAAK;AACH,eAAO7E,EAAS,IAAI6E,GAAK;AAAA,UACvB,OAAO;AAAA,QACjB,CAAS;AAAA,MAGH,KAAK;AAAA,MACL;AACE,eAAO7E,EAAS,IAAI6E,GAAK;AAAA,UACvB,OAAO;AAAA,QACjB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAUnH,GAAMM,GAAOgC,GAAU;AAElC,QAAIhC,MAAU,MAAM;AAClB,UAAIqG,IAAa3G,EAAK,kBAElBiF,IAAO0B,IAAa,IAAIA,IAAa,IAAIA;AAC7C,aAAOrE,EAAS,cAAc2C,GAAM;AAAA,QAClC,MAAM;AAAA,MACd,CAAO;AAAA;AAGH,WAAOmC,EAAgB,EAAEpH,GAAMM,CAAK;AAAA,EACrC;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAOgC,GAAU33B,GAAS;AAC3C,QAAI08B,IAAiBxB,GAAe7F,GAAMr1B,CAAO,GAE7C28B,IAAWD,IAAiB,IAAIA,IAAiB,IAAIA;AAEzD,QAAI/G,MAAU,MAAM;AAClB,UAAIiH,IAAeD,IAAW;AAC9B,aAAOhB,EAAgBiB,GAAc,CAAC;AAAA;AAIxC,WAAIjH,MAAU,OACLgC,EAAS,cAAcgF,GAAU;AAAA,MACtC,MAAM;AAAA,IACd,CAAO,IAIIhB,EAAgBgB,GAAUhH,EAAM,MAAM;AAAA,EAC9C;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAO;AACxB,QAAIkH,IAAcxC,GAAkBhF,CAAI;AAExC,WAAOsG,EAAgBkB,GAAalH,EAAM,MAAM;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUD,GAAG,SAAUN,GAAMM,GAAO;AACxB,QAAI2E,IAAOjF,EAAK;AAChB,WAAOsG,EAAgBrB,GAAM3E,EAAM,MAAM;AAAA,EAC1C;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAOgC,GAAU;AAClC,QAAIC,IAAU,KAAK,MAAMvC,EAAK,YAAa,IAAG,KAAK,CAAC;AAEpD,YAAQM,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAOiC,CAAO;AAAA,MAGvB,KAAK;AACH,eAAO+D,EAAgB/D,GAAS,CAAC;AAAA,MAGnC,KAAK;AACH,eAAOD,EAAS,cAAcC,GAAS;AAAA,UACrC,MAAM;AAAA,QAChB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AAAA,MACL;AACE,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAUvC,GAAMM,GAAOgC,GAAU;AAClC,QAAIC,IAAU,KAAK,MAAMvC,EAAK,YAAa,IAAG,KAAK,CAAC;AAEpD,YAAQM,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAOiC,CAAO;AAAA,MAGvB,KAAK;AACH,eAAO+D,EAAgB/D,GAAS,CAAC;AAAA,MAGnC,KAAK;AACH,eAAOD,EAAS,cAAcC,GAAS;AAAA,UACrC,MAAM;AAAA,QAChB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AAAA,MACL;AACE,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAUvC,GAAMM,GAAOgC,GAAU;AAClC,QAAIsE,IAAQ5G,EAAK;AAEjB,YAAQM,GAAK;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AACH,eAAO8G,EAAgB,EAAEpH,GAAMM,CAAK;AAAA,MAGtC,KAAK;AACH,eAAOgC,EAAS,cAAcsE,IAAQ,GAAG;AAAA,UACvC,MAAM;AAAA,QAChB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtE,EAAS,MAAMsE,GAAO;AAAA,UAC3B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtE,EAAS,MAAMsE,GAAO;AAAA,UAC3B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AAAA,MACL;AACE,eAAOtE,EAAS,MAAMsE,GAAO;AAAA,UAC3B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAU5G,GAAMM,GAAOgC,GAAU;AAClC,QAAIsE,IAAQ5G,EAAK;AAEjB,YAAQM,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAOsG,IAAQ,CAAC;AAAA,MAGzB,KAAK;AACH,eAAON,EAAgBM,IAAQ,GAAG,CAAC;AAAA,MAGrC,KAAK;AACH,eAAOtE,EAAS,cAAcsE,IAAQ,GAAG;AAAA,UACvC,MAAM;AAAA,QAChB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtE,EAAS,MAAMsE,GAAO;AAAA,UAC3B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtE,EAAS,MAAMsE,GAAO;AAAA,UAC3B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AAAA,MACL;AACE,eAAOtE,EAAS,MAAMsE,GAAO;AAAA,UAC3B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAU5G,GAAMM,GAAOgC,GAAU33B,GAAS;AAC3C,QAAI88B,IAAOpB,GAAWrG,GAAMr1B,CAAO;AAEnC,WAAI21B,MAAU,OACLgC,EAAS,cAAcmF,GAAM;AAAA,MAClC,MAAM;AAAA,IACd,CAAO,IAGInB,EAAgBmB,GAAMnH,EAAM,MAAM;AAAA,EAC1C;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAOgC,GAAU;AAClC,QAAIoF,IAAUjC,GAAczF,CAAI;AAEhC,WAAIM,MAAU,OACLgC,EAAS,cAAcoF,GAAS;AAAA,MACrC,MAAM;AAAA,IACd,CAAO,IAGIpB,EAAgBoB,GAASpH,EAAM,MAAM;AAAA,EAC7C;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAOgC,GAAU;AAClC,WAAIhC,MAAU,OACLgC,EAAS,cAActC,EAAK,WAAU,GAAI;AAAA,MAC/C,MAAM;AAAA,IACd,CAAO,IAGIoH,EAAgB,EAAEpH,GAAMM,CAAK;AAAA,EACrC;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAOgC,GAAU;AAClC,QAAIqF,IAAYlD,GAAgBzE,CAAI;AAEpC,WAAIM,MAAU,OACLgC,EAAS,cAAcqF,GAAW;AAAA,MACvC,MAAM;AAAA,IACd,CAAO,IAGIrB,EAAgBqB,GAAWrH,EAAM,MAAM;AAAA,EAC/C;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAOgC,GAAU;AAClC,QAAIsF,IAAY5H,EAAK;AAErB,YAAQM,GAAK;AAAA,MAEX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOgC,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AAAA,MACL;AACE,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAU5H,GAAMM,GAAOgC,GAAU33B,GAAS;AAC3C,QAAIi9B,IAAY5H,EAAK,aACjB6H,KAAkBD,IAAYj9B,EAAQ,eAAe,KAAK,KAAK;AAEnE,YAAQ21B,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAOuH,CAAc;AAAA,MAG9B,KAAK;AACH,eAAOvB,EAAgBuB,GAAgB,CAAC;AAAA,MAG1C,KAAK;AACH,eAAOvF,EAAS,cAAcuF,GAAgB;AAAA,UAC5C,MAAM;AAAA,QAChB,CAAS;AAAA,MAEH,KAAK;AACH,eAAOvF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AAAA,MACL;AACE,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAU5H,GAAMM,GAAOgC,GAAU33B,GAAS;AAC3C,QAAIi9B,IAAY5H,EAAK,aACjB6H,KAAkBD,IAAYj9B,EAAQ,eAAe,KAAK,KAAK;AAEnE,YAAQ21B,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAOuH,CAAc;AAAA,MAG9B,KAAK;AACH,eAAOvB,EAAgBuB,GAAgBvH,EAAM,MAAM;AAAA,MAGrD,KAAK;AACH,eAAOgC,EAAS,cAAcuF,GAAgB;AAAA,UAC5C,MAAM;AAAA,QAChB,CAAS;AAAA,MAEH,KAAK;AACH,eAAOvF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AAAA,MACL;AACE,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAU5H,GAAMM,GAAOgC,GAAU;AAClC,QAAIsF,IAAY5H,EAAK,aACjB8H,IAAeF,MAAc,IAAI,IAAIA;AAEzC,YAAQtH,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAOwH,CAAY;AAAA,MAG5B,KAAK;AACH,eAAOxB,EAAgBwB,GAAcxH,EAAM,MAAM;AAAA,MAGnD,KAAK;AACH,eAAOgC,EAAS,cAAcwF,GAAc;AAAA,UAC1C,MAAM;AAAA,QAChB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOxF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AACH,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAGH,KAAK;AAAA,MACL;AACE,eAAOtF,EAAS,IAAIsF,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAU5H,GAAMM,GAAOgC,GAAU;AAClC,QAAIyF,IAAQ/H,EAAK,eACb6G,IAAqBkB,IAAQ,MAAM,IAAI,OAAO;AAElD,YAAQzH,GAAK;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AACH,eAAOgC,EAAS,UAAUuE,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAOvE,EAAS,UAAUuE,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS,EAAE,YAAW;AAAA,MAEhB,KAAK;AACH,eAAOvE,EAAS,UAAUuE,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AAAA,MACL;AACE,eAAOvE,EAAS,UAAUuE,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAU7G,GAAMM,GAAOgC,GAAU;AAClC,QAAIyF,IAAQ/H,EAAK,eACb6G;AAUJ,YARIkB,MAAU,KACZlB,IAAqBK,GAAc,OAC1Ba,MAAU,IACnBlB,IAAqBK,GAAc,WAEnCL,IAAqBkB,IAAQ,MAAM,IAAI,OAAO,MAGxCzH,GAAK;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AACH,eAAOgC,EAAS,UAAUuE,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAOvE,EAAS,UAAUuE,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS,EAAE,YAAW;AAAA,MAEhB,KAAK;AACH,eAAOvE,EAAS,UAAUuE,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AAAA,MACL;AACE,eAAOvE,EAAS,UAAUuE,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAU7G,GAAMM,GAAOgC,GAAU;AAClC,QAAIyF,IAAQ/H,EAAK,eACb6G;AAYJ,YAVIkB,KAAS,KACXlB,IAAqBK,GAAc,UAC1Ba,KAAS,KAClBlB,IAAqBK,GAAc,YAC1Ba,KAAS,IAClBlB,IAAqBK,GAAc,UAEnCL,IAAqBK,GAAc,OAG7B5G,GAAK;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOgC,EAAS,UAAUuE,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAOvE,EAAS,UAAUuE,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AAAA,MACL;AACE,eAAOvE,EAAS,UAAUuE,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAU7G,GAAMM,GAAOgC,GAAU;AAClC,QAAIhC,MAAU,MAAM;AAClB,UAAIyH,IAAQ/H,EAAK,YAAW,IAAK;AACjC,aAAI+H,MAAU,MAAGA,IAAQ,KAClBzF,EAAS,cAAcyF,GAAO;AAAA,QACnC,MAAM;AAAA,MACd,CAAO;AAAA;AAGH,WAAOX,EAAgB,EAAEpH,GAAMM,CAAK;AAAA,EACrC;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAOgC,GAAU;AAClC,WAAIhC,MAAU,OACLgC,EAAS,cAActC,EAAK,YAAW,GAAI;AAAA,MAChD,MAAM;AAAA,IACd,CAAO,IAGIoH,EAAgB,EAAEpH,GAAMM,CAAK;AAAA,EACrC;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAOgC,GAAU;AAClC,QAAIyF,IAAQ/H,EAAK,YAAW,IAAK;AAEjC,WAAIM,MAAU,OACLgC,EAAS,cAAcyF,GAAO;AAAA,MACnC,MAAM;AAAA,IACd,CAAO,IAGIzB,EAAgByB,GAAOzH,EAAM,MAAM;AAAA,EAC3C;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAOgC,GAAU;AAClC,QAAIyF,IAAQ/H,EAAK;AAGjB,WAFI+H,MAAU,MAAGA,IAAQ,KAErBzH,MAAU,OACLgC,EAAS,cAAcyF,GAAO;AAAA,MACnC,MAAM;AAAA,IACd,CAAO,IAGIzB,EAAgByB,GAAOzH,EAAM,MAAM;AAAA,EAC3C;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAOgC,GAAU;AAClC,WAAIhC,MAAU,OACLgC,EAAS,cAActC,EAAK,cAAa,GAAI;AAAA,MAClD,MAAM;AAAA,IACd,CAAO,IAGIoH,EAAgB,EAAEpH,GAAMM,CAAK;AAAA,EACrC;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAOgC,GAAU;AAClC,WAAIhC,MAAU,OACLgC,EAAS,cAActC,EAAK,cAAa,GAAI;AAAA,MAClD,MAAM;AAAA,IACd,CAAO,IAGIoH,EAAgB,EAAEpH,GAAMM,CAAK;AAAA,EACrC;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAO;AACxB,WAAO8G,EAAgB,EAAEpH,GAAMM,CAAK;AAAA,EACrC;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAO0H,GAAWr9B,GAAS;AAC5C,QAAIs9B,IAAet9B,EAAQ,iBAAiBq1B,GACxCkI,IAAiBD,EAAa;AAElC,QAAIC,MAAmB;AACrB,aAAO;AAGT,YAAQ5H,GAAK;AAAA,MAEX,KAAK;AACH,eAAO6H,GAAkCD,CAAc;AAAA,MAKzD,KAAK;AAAA,MACL,KAAK;AAEH,eAAOE,GAAeF,CAAc;AAAA,MAKtC,KAAK;AAAA,MACL,KAAK;AAAA,MAEL;AACE,eAAOE,GAAeF,GAAgB,GAAG;AAAA,IAC5C;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAUlI,GAAMM,GAAO0H,GAAWr9B,GAAS;AAC5C,QAAIs9B,IAAet9B,EAAQ,iBAAiBq1B,GACxCkI,IAAiBD,EAAa;AAElC,YAAQ3H,GAAK;AAAA,MAEX,KAAK;AACH,eAAO6H,GAAkCD,CAAc;AAAA,MAKzD,KAAK;AAAA,MACL,KAAK;AAEH,eAAOE,GAAeF,CAAc;AAAA,MAKtC,KAAK;AAAA,MACL,KAAK;AAAA,MAEL;AACE,eAAOE,GAAeF,GAAgB,GAAG;AAAA,IAC5C;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAUlI,GAAMM,GAAO0H,GAAWr9B,GAAS;AAC5C,QAAIs9B,IAAet9B,EAAQ,iBAAiBq1B,GACxCkI,IAAiBD,EAAa;AAElC,YAAQ3H,GAAK;AAAA,MAEX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO,QAAQ+H,GAAoBH,GAAgB,GAAG;AAAA,MAGxD,KAAK;AAAA,MACL;AACE,eAAO,QAAQE,GAAeF,GAAgB,GAAG;AAAA,IACpD;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAUlI,GAAMM,GAAO0H,GAAWr9B,GAAS;AAC5C,QAAIs9B,IAAet9B,EAAQ,iBAAiBq1B,GACxCkI,IAAiBD,EAAa;AAElC,YAAQ3H,GAAK;AAAA,MAEX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO,QAAQ+H,GAAoBH,GAAgB,GAAG;AAAA,MAGxD,KAAK;AAAA,MACL;AACE,eAAO,QAAQE,GAAeF,GAAgB,GAAG;AAAA,IACpD;AAAA,EACF;AAAA;AAAA,EAED,GAAG,SAAUlI,GAAMM,GAAO0H,GAAWr9B,GAAS;AAC5C,QAAIs9B,IAAet9B,EAAQ,iBAAiBq1B,GACxCF,IAAY,KAAK,MAAMmI,EAAa,QAAO,IAAK,GAAI;AACxD,WAAO3B,EAAgBxG,GAAWQ,EAAM,MAAM;AAAA,EAC/C;AAAA;AAAA,EAED,GAAG,SAAUN,GAAMM,GAAO0H,GAAWr9B,GAAS;AAC5C,QAAIs9B,IAAet9B,EAAQ,iBAAiBq1B,GACxCF,IAAYmI,EAAa;AAC7B,WAAO3B,EAAgBxG,GAAWQ,EAAM,MAAM;AAAA,EAC/C;AACH;AAEA,SAAS+H,GAAoB99B,GAAQ+9B,GAAgB;AACnD,MAAI9B,IAAOj8B,IAAS,IAAI,MAAM,KAC1Bg+B,IAAY,KAAK,IAAIh+B,CAAM,GAC3Bw9B,IAAQ,KAAK,MAAMQ,IAAY,EAAE,GACjCC,IAAUD,IAAY;AAE1B,MAAIC,MAAY;AACd,WAAOhC,IAAO,OAAOuB,CAAK;AAG5B,MAAIU,IAAYH,KAAkB;AAClC,SAAO9B,IAAO,OAAOuB,CAAK,IAAIU,IAAYnC,EAAgBkC,GAAS,CAAC;AACtE;AAEA,SAASL,GAAkC59B,GAAQ+9B,GAAgB;AACjE,MAAI/9B,IAAS,OAAO,GAAG;AACrB,QAAIi8B,IAAOj8B,IAAS,IAAI,MAAM;AAC9B,WAAOi8B,IAAOF,EAAgB,KAAK,IAAI/7B,CAAM,IAAI,IAAI,CAAC;AAAA;AAGxD,SAAO69B,GAAe79B,GAAQ+9B,CAAc;AAC9C;AAEA,SAASF,GAAe79B,GAAQ+9B,GAAgB;AAC9C,MAAIG,IAAYH,KAAkB,IAC9B9B,IAAOj8B,IAAS,IAAI,MAAM,KAC1Bg+B,IAAY,KAAK,IAAIh+B,CAAM,GAC3Bw9B,IAAQzB,EAAgB,KAAK,MAAMiC,IAAY,EAAE,GAAG,CAAC,GACrDC,IAAUlC,EAAgBiC,IAAY,IAAI,CAAC;AAC/C,SAAO/B,IAAOuB,IAAQU,IAAYD;AACpC;AAEA,MAAAE,KAAehC;ACj2Bf,SAASiC,GAAkB3F,GAASjC,GAAY;AAC9C,UAAQiC,GAAO;AAAA,IACb,KAAK;AACH,aAAOjC,EAAW,KAAK;AAAA,QACrB,OAAO;AAAA,MACf,CAAO;AAAA,IAEH,KAAK;AACH,aAAOA,EAAW,KAAK;AAAA,QACrB,OAAO;AAAA,MACf,CAAO;AAAA,IAEH,KAAK;AACH,aAAOA,EAAW,KAAK;AAAA,QACrB,OAAO;AAAA,MACf,CAAO;AAAA,IAEH,KAAK;AAAA,IACL;AACE,aAAOA,EAAW,KAAK;AAAA,QACrB,OAAO;AAAA,MACf,CAAO;AAAA,EACJ;AACH;AAEA,SAAS6H,GAAkB5F,GAASjC,GAAY;AAC9C,UAAQiC,GAAO;AAAA,IACb,KAAK;AACH,aAAOjC,EAAW,KAAK;AAAA,QACrB,OAAO;AAAA,MACf,CAAO;AAAA,IAEH,KAAK;AACH,aAAOA,EAAW,KAAK;AAAA,QACrB,OAAO;AAAA,MACf,CAAO;AAAA,IAEH,KAAK;AACH,aAAOA,EAAW,KAAK;AAAA,QACrB,OAAO;AAAA,MACf,CAAO;AAAA,IAEH,KAAK;AAAA,IACL;AACE,aAAOA,EAAW,KAAK;AAAA,QACrB,OAAO;AAAA,MACf,CAAO;AAAA,EACJ;AACH;AAEA,SAAS8H,GAAsB7F,GAASjC,GAAY;AAClD,MAAI6B,IAAcI,EAAQ,MAAM,WAAW,KAAK,CAAA,GAC5C8F,IAAclG,EAAY,CAAC,GAC3BmG,IAAcnG,EAAY,CAAC;AAE/B,MAAI,CAACmG;AACH,WAAOJ,GAAkB3F,GAASjC,CAAU;AAG9C,MAAIiI;AAEJ,UAAQF,GAAW;AAAA,IACjB,KAAK;AACH,MAAAE,IAAiBjI,EAAW,SAAS;AAAA,QACnC,OAAO;AAAA,MACf,CAAO;AACD;AAAA,IAEF,KAAK;AACH,MAAAiI,IAAiBjI,EAAW,SAAS;AAAA,QACnC,OAAO;AAAA,MACf,CAAO;AACD;AAAA,IAEF,KAAK;AACH,MAAAiI,IAAiBjI,EAAW,SAAS;AAAA,QACnC,OAAO;AAAA,MACf,CAAO;AACD;AAAA,IAEF,KAAK;AAAA,IACL;AACE,MAAAiI,IAAiBjI,EAAW,SAAS;AAAA,QACnC,OAAO;AAAA,MACf,CAAO;AACD;AAAA,EACH;AAED,SAAOiI,EAAe,QAAQ,YAAYL,GAAkBG,GAAa/H,CAAU,CAAC,EAAE,QAAQ,YAAY6H,GAAkBG,GAAahI,CAAU,CAAC;AACtJ;AAEA,IAAIkI,KAAiB;AAAA,EACnB,GAAGL;AAAA,EACH,GAAGC;AACL;AACA,MAAAK,KAAeD;AC/Ff,IAAIE,KAA2B,CAAC,KAAK,IAAI,GACrCC,KAA0B,CAAC,MAAM,MAAM;AACpC,SAASC,GAA0B/I,GAAO;AAC/C,SAAO6I,GAAyB,QAAQ7I,CAAK,MAAM;AACrD;AACO,SAASgJ,GAAyBhJ,GAAO;AAC9C,SAAO8I,GAAwB,QAAQ9I,CAAK,MAAM;AACpD;AACO,SAASiJ,GAAoBjJ,GAAOK,GAAQ6I,GAAO;AACxD,MAAIlJ,MAAU;AACZ,UAAM,IAAI,WAAW,qCAAqC,OAAOK,GAAQ,wCAAwC,EAAE,OAAO6I,GAAO,8BAA8B,CAAC;AAC3J,MAAIlJ,MAAU;AACnB,UAAM,IAAI,WAAW,iCAAiC,OAAOK,GAAQ,wCAAwC,EAAE,OAAO6I,GAAO,8BAA8B,CAAC;AACvJ,MAAIlJ,MAAU;AACnB,UAAM,IAAI,WAAW,+BAA+B,OAAOK,GAAQ,oDAAoD,EAAE,OAAO6I,GAAO,8BAA8B,CAAC;AACjK,MAAIlJ,MAAU;AACnB,UAAM,IAAI,WAAW,iCAAiC,OAAOK,GAAQ,oDAAoD,EAAE,OAAO6I,GAAO,8BAA8B,CAAC;AAE5K;ACGA,IAAIC,KAAyB,yDAGzBC,KAA6B,qCAC7BC,KAAsB,gBACtBC,KAAoB,OACpBC,KAAgC;AAyTrB,SAASlJ,GAAOf,GAAWkK,GAAgBrI,GAAc;AACtE,EAAAnC,EAAa,GAAG,SAAS;AACzB,MAAIyK,IAAY,OAAOD,CAAc,GACjCn/B,IAAU82B,KAAgB,IAC1B9X,IAAShf,EAAQ,UAAUq/B,IAC3BlE,IAA8Bnc,EAAO,WAAWA,EAAO,QAAQ,uBAC/Doc,IAA+BD,KAA+B,OAAO,IAAI3G,EAAU2G,CAA2B,GAC9GE,IAAwBr7B,EAAQ,yBAAyB,OAAOo7B,IAA+B5G,EAAUx0B,EAAQ,qBAAqB;AAE1I,MAAI,EAAEq7B,KAAyB,KAAKA,KAAyB;AAC3D,UAAM,IAAI,WAAW,2DAA2D;AAGlF,MAAIL,IAAqBhc,EAAO,WAAWA,EAAO,QAAQ,cACtDic,IAAsBD,KAAsB,OAAO,IAAIxG,EAAUwG,CAAkB,GACnFd,IAAel6B,EAAQ,gBAAgB,OAAOi7B,IAAsBzG,EAAUx0B,EAAQ,YAAY;AAEtG,MAAI,EAAEk6B,KAAgB,KAAKA,KAAgB;AACzC,UAAM,IAAI,WAAW,kDAAkD;AAGzE,MAAI,CAAClb,EAAO;AACV,UAAM,IAAI,WAAW,uCAAuC;AAG9D,MAAI,CAACA,EAAO;AACV,UAAM,IAAI,WAAW,yCAAyC;AAGhE,MAAIse,IAAezI,EAAOI,CAAS;AAEnC,MAAI,CAACO,GAAQ8H,CAAY;AACvB,UAAM,IAAI,WAAW,oBAAoB;AAM3C,MAAIC,IAAiBnI,GAAgCkI,CAAY,GAC7DhI,IAAUsE,GAAgB0D,GAAcC,CAAc,GACtD+B,IAAmB;AAAA,IACrB,uBAAuBjE;AAAA,IACvB,cAAcnB;AAAA,IACd,QAAQlb;AAAA,IACR,eAAese;AAAA,EACnB,GACMxvB,IAASsxB,EAAU,MAAML,EAA0B,EAAE,IAAI,SAAUQ,GAAW;AAChF,QAAIC,IAAiBD,EAAU,CAAC;AAEhC,QAAIC,MAAmB,OAAOA,MAAmB,KAAK;AACpD,UAAIC,IAAgBnB,GAAekB,CAAc;AACjD,aAAOC,EAAcF,GAAWvgB,EAAO,YAAYsgB,CAAgB;AAAA;AAGrE,WAAOC;AAAA,EACX,CAAG,EAAE,KAAK,EAAE,EAAE,MAAMT,EAAsB,EAAE,IAAI,SAAUS,GAAW;AAEjE,QAAIA,MAAc;AAChB,aAAO;AAGT,QAAIC,IAAiBD,EAAU,CAAC;AAEhC,QAAIC,MAAmB;AACrB,aAAOE,GAAmBH,CAAS;AAGrC,QAAII,IAAY5D,GAAWyD,CAAc;AAEzC,QAAIG;AACF,aAAI,CAAC3/B,EAAQ,+BAA+B2+B,GAAyBY,CAAS,KAC5EX,GAAoBW,GAAWJ,GAAgBlK,CAAS,GAGtD,CAACj1B,EAAQ,gCAAgC0+B,GAA0Ba,CAAS,KAC9EX,GAAoBW,GAAWJ,GAAgBlK,CAAS,GAGnD0K,EAAUrK,GAASiK,GAAWvgB,EAAO,UAAUsgB,CAAgB;AAGxE,QAAIE,EAAe,MAAMN,EAA6B;AACpD,YAAM,IAAI,WAAW,mEAAmEM,IAAiB,GAAG;AAG9G,WAAOD;AAAA,EACX,CAAG,EAAE,KAAK,EAAE;AACV,SAAOzxB;AACT;AAEA,SAAS4xB,GAAmBb,GAAO;AACjC,SAAOA,EAAM,MAAMG,EAAmB,EAAE,CAAC,EAAE,QAAQC,IAAmB,GAAG;AAC3E;AChbA,IAAIxJ,KAAuB;AAAA,EACzB,kBAAkB;AAAA,IAChB,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,UAAU;AAAA,IACR,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,aAAa;AAAA,IACX,YAAY;AAAA,IACZ,iBAAiB;AAAA,EAClB;AAAA,EACD,kBAAkB;AAAA,IAChB,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,UAAU;AAAA,IACR,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,aAAa;AAAA,IACX,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,QAAQ;AAAA,IACN,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,OAAO;AAAA,IACL,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,aAAa;AAAA,IACX,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,QAAQ;AAAA,IACN,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,cAAc;AAAA,IACZ,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,SAAS;AAAA,IACP,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,aAAa;AAAA,IACX,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,QAAQ;AAAA,IACN,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,YAAY;AAAA,IACV,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,cAAc;AAAA,IACZ,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACD,iBAAiB;AAAA,MACf,KAAK;AAAA,MACL,OAAO;AAAA,IACR;AAAA,EACF;AACH,GAEIC,KAAiB,SAAUC,GAAOC,GAAO51B,GAAS;AACpD,MAAI8N,GACA+nB,IAAa71B,KAAY,QAA8BA,EAAQ,YAAYy1B,GAAqBE,CAAK,EAAE,kBAAkBF,GAAqBE,CAAK,EAAE;AAUzJ,SARI,OAAOE,KAAe,WACxB/nB,IAAS+nB,IACAD,MAAU,IACnB9nB,IAAS+nB,EAAW,MAEpB/nB,IAAS+nB,EAAW,MAAM,QAAQ,aAAa,OAAOD,CAAK,CAAC,GAG1D51B,KAAY,QAA8BA,EAAQ,YAChDA,EAAQ,cAAcA,EAAQ,aAAa,IACtC,QAAQ8N,IAER,SAASA,IAIbA;AACT;AAEA,MAAA8xB,KAAelK;AClLf,IAAIO,KAAc;AAAA,EAChB,MAAM;AAAA;AAAA,EAEN,MAAM;AAAA;AAAA,EAEN,QAAQ;AAAA;AAAA,EAER,OAAO;AAAA;AAET,GACIC,KAAc;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT,GACIC,KAAkB;AAAA,EACpB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT,GACIC,KAAa;AAAA,EACf,MAAML,EAAkB;AAAA,IACtB,SAASE;AAAAA,IACT,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,MAAMF,EAAkB;AAAA,IACtB,SAASG;AAAAA,IACT,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,UAAUH,EAAkB;AAAA,IAC1B,SAASI;AAAAA,IACT,cAAc;AAAA,EAClB,CAAG;AACH;AACA,MAAA0J,KAAezJ;ACtCf,IAAIE,KAAuB;AAAA,EACzB,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AACT,GAEIC,KAAiB,SAAUZ,GAAOa,GAAOC,GAAWC,GAAU;AAChE,SAAOJ,GAAqBX,CAAK;AACnC;AAEA,MAAAmK,KAAevJ;ACZf,IAAIY,KAAY;AAAA,EACd,QAAQ,CAAC,UAAU,QAAQ;AAAA,EAC3B,aAAa,CAAC,UAAU,QAAQ;AAAA,EAChC,MAAM,CAAC,gBAAgB,eAAe;AACxC,GACIC,KAAgB;AAAA,EAClB,QAAQ,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,EAC3B,aAAa,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,EACpC,MAAM,CAAC,cAAc,cAAc,cAAc,YAAY;AAC/D,GAKIC,KAAc;AAAA,EAChB,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACnE,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAChG,MAAM,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAU;AAC9H,GAEI0I,KAAwB;AAAA,EAC1B,QAAQ1I,GAAY;AAAA,EACpB,aAAa,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM;AAAA,EAC3G,MAAMA,GAAY;AACpB,GACIC,KAAY;AAAA,EACd,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EAC1C,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,EAChD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC7D,MAAM,CAAC,WAAW,UAAU,YAAY,YAAY,cAAc,WAAW,SAAS;AACxF,GAEIC,KAAkB;AAAA,EACpB,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AACH,GACIC,KAA4B;AAAA,EAC9B,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AACH,GAEIC,KAAgB,SAAUhD,GAAa;AACzC,MAAIC,IAAS,OAAOD,CAAW;AAC/B,SAAOC,IAAS;AAClB,GAEIiD,KAAW;AAAA,EACb,eAAeF;AAAAA,EACf,KAAKb,EAAgB;AAAA,IACnB,QAAQO;AAAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,SAASP,EAAgB;AAAA,IACvB,QAAQQ;AAAAA,IACR,cAAc;AAAA,IACd,kBAAkB,SAAUQ,GAAS;AACnC,aAAOA,IAAU;AAAA,IAClB;AAAA,EACL,CAAG;AAAA,EACD,OAAOhB,EAAgB;AAAA,IACrB,QAAQS;AAAAA,IACR,kBAAkB0I;AAAA,IAClB,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,KAAKnJ,EAAgB;AAAA,IACnB,QAAQU;AAAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,WAAWV,EAAgB;AAAA,IACzB,QAAQW;AAAAA,IACR,cAAc;AAAA,IACd,kBAAkBC;AAAA,IAClB,wBAAwB;AAAA,EAC5B,CAAG;AACH;AACA,MAAAwI,KAAerI;AClIf,IAAIkB,KAA4B,gBAC5BC,KAA4B,QAC5BC,KAAmB;AAAA,EACrB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAmB;AAAA,EACrB,KAAK,CAAC,OAAO,KAAK;AACpB,GACIC,KAAuB;AAAA,EACzB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAuB;AAAA,EACzB,KAAK,CAAC,MAAM,MAAM,MAAM,IAAI;AAC9B,GACIC,KAAqB;AAAA,EACvB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAqB;AAAA,EACvB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC3F,KAAK,CAAC,WAAW,OAAO,SAAS,QAAQ,SAAS,SAAS,SAAS,QAAQ,OAAO,OAAO,OAAO,KAAK;AACxG,GACIC,KAAmB;AAAA,EACrB,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAmB;AAAA,EACrB,KAAK,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,MAAM;AAC7D,GACIC,KAAyB;AAAA,EAC3B,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAyB;AAAA,EAC3B,KAAK;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA;AAAA,IAEX,SAAS;AAAA,IACT,OAAO;AAAA;AAAA,EAER;AACH,GACIC,KAAQ;AAAA,EACV,eAAed,GAAoB;AAAA,IACjC,cAAcE;AAAAA,IACd,cAAcC;AAAAA,IACd,eAAe,SAAU14B,GAAO;AAC9B,aAAO,SAASA,CAAK;AAAA,IACtB;AAAA,EACL,CAAG;AAAA,EACD,KAAK03B,EAAa;AAAA,IAChB,eAAeiB;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,SAASlB,EAAa;AAAA,IACpB,eAAemB;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAe,SAAUrxB,GAAO;AAC9B,aAAOA,IAAQ;AAAA,IAChB;AAAA,EACL,CAAG;AAAA,EACD,OAAOiwB,EAAa;AAAA,IAClB,eAAeqB;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,KAAKtB,EAAa;AAAA,IAChB,eAAeuB;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,WAAWxB,EAAa;AAAA,IACtB,eAAeyB;AAAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AACH;AACA,MAAAyG,KAAexG;ACjFf,IAAIza,KAAS;AAAA,EACX,MAAM;AAAA,EACN,gBAAgB0W;AAAAA,EAChB,YAAYU;AAAAA,EACZ,gBAAgBG;AAAAA,EAChB,UAAUoB;AAAAA,EACV,OAAO8B;AAAAA,EACP,SAAS;AAAA,IACP,cAAc;AAAA,IAGd,uBAAuB;AAAA,EACxB;AACH;AACA,MAAAyG,KAAelhB;AChCf,IAAIyW,KAAuB;AAAA,EACzB,kBAAkB;AAAA,IAChB,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,UAAU;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,EACb,kBAAkB;AAAA,IAChB,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,UAAU;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,OAAO;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,cAAc;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,SAAS;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,YAAY;AAAA,IACV,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EACD,cAAc;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AACH,GAEIC,KAAiB,SAAUC,GAAOC,GAAO51B,GAAS;AACpD,MAAI8N,GACAqyB,IAAO1K,GAAqBE,CAAK;AAUrC,SARI,OAAOwK,KAAS,WAClBryB,IAASqyB,IACAvK,MAAU,IACnB9nB,IAASqyB,EAAK,MAEdryB,IAASqyB,EAAK,MAAM,QAAQ,aAAa,OAAOvK,CAAK,CAAC,GAGpD51B,KAAY,QAA8BA,EAAQ,YAChDA,EAAQ,cAAcA,EAAQ,aAAa,IACtC,UAAU8N,IAEV,YAAYA,IAIhBA;AACT;AAEA,MAAAsyB,KAAe1K;ACtFf,IAAIO,KAAc;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT,GACIC,KAAc;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT,GACIC,KAAkB;AAAA,EACpB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT,GACIC,KAAa;AAAA,EACf,MAAML,EAAkB;AAAA,IACtB,SAASE;AAAA,IACT,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,MAAMF,EAAkB;AAAA,IACtB,SAASG;AAAA,IACT,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,UAAUH,EAAkB;AAAA,IAC1B,SAASI;AAAA,IACT,cAAc;AAAA,EAClB,CAAG;AACH;AACA,MAAAkK,KAAejK;ACjCf,IAAIE,KAAuB;AAAA,EACzB,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AACT,GAEIC,KAAiB,SAAUZ,GAAOa,GAAOC,GAAWC,GAAU;AAChE,SAAOJ,GAAqBX,CAAK;AACnC;AAEA,MAAA2K,KAAe/J;ACZf,IAAIY,KAAY;AAAA,EACd,QAAQ,CAAC,YAAY,UAAU;AAAA,EAC/B,aAAa,CAAC,YAAY,UAAU;AAAA,EACpC,MAAM,CAAC,sBAAsB,oBAAoB;AACnD,GACIC,KAAgB;AAAA,EAClB,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,EAC/B,aAAa,CAAC,aAAa,cAAc,cAAc,YAAY;AAAA,EACnE,MAAM,CAAC,iBAAiB,kBAAkB,kBAAkB,gBAAgB;AAC9E,GACIC,KAAc;AAAA,EAChB,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACnE,aAAa,CAAC,SAAS,SAAS,QAAQ,QAAQ,OAAO,QAAQ,SAAS,QAAQ,SAAS,QAAQ,QAAQ,MAAM;AAAA,EAC/G,MAAM,CAAC,WAAW,WAAW,QAAQ,SAAS,OAAO,QAAQ,WAAW,QAAQ,aAAa,WAAW,YAAY,UAAU;AAChI,GACIC,KAAY;AAAA,EACd,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EAC1C,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,EAChD,aAAa,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM;AAAA,EACpE,MAAM,CAAC,YAAY,SAAS,SAAS,YAAY,SAAS,YAAY,QAAQ;AAChF,GACIC,KAAkB;AAAA,EACpB,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AACH,GAEIE,KAAgB,SAAUhD,GAAaz0B,GAAS;AAClD,MAAI00B,IAAS,OAAOD,CAAW,GAC3B8L,IAAOvgC,KAAY,OAA6B,SAASA,EAAQ;AACrE,MAAI00B,MAAW;AAAG,WAAO;AACzB,MAAI8L,IAAgB,CAAC,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,GAC3DC;AAEJ,SAAI/L,MAAW,IACb+L,IAASF,KAAQC,EAAc,SAASD,CAAI,IAAI,QAAQ,OAExDE,IAAS,OAGJ/L,IAAS+L;AAClB,GAEI9I,KAAW;AAAA,EACb,eAAeF;AAAA,EACf,KAAKb,EAAgB;AAAA,IACnB,QAAQO;AAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,SAASP,EAAgB;AAAA,IACvB,QAAQQ;AAAA,IACR,cAAc;AAAA,IACd,kBAAkB,SAAUQ,GAAS;AACnC,aAAOA,IAAU;AAAA,IAClB;AAAA,EACL,CAAG;AAAA,EACD,OAAOhB,EAAgB;AAAA,IACrB,QAAQS;AAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,KAAKT,EAAgB;AAAA,IACnB,QAAQU;AAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,WAAWV,EAAgB;AAAA,IACzB,QAAQW;AAAA,IACR,cAAc;AAAA,EAClB,CAAG;AACH;AACA,MAAAmJ,KAAe/I;AC/Ff,IAAIkB,KAA4B,+BAC5BC,KAA4B,QAC5BC,KAAmB;AAAA,EACrB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAmB;AAAA,EACrB,KAAK,CAAC,QAAQ,MAAM;AACtB,GACIC,KAAuB;AAAA,EACzB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAuB;AAAA,EACzB,KAAK,CAAC,MAAM,MAAM,MAAM,IAAI;AAC9B,GACIC,KAAqB;AAAA,EACvB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAqB;AAAA,EACvB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC3F,KAAK,CAAC,QAAQ,OAAO,SAAS,QAAQ,QAAQ,UAAU,UAAU,QAAQ,OAAO,OAAO,OAAO,KAAK;AACtG,GACIC,KAAmB;AAAA,EACrB,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AAAA,EACb,MAAM;AACR,GACIC,KAAmB;AAAA,EACrB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EACxD,KAAK,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM;AAC9D,GACIC,KAAyB;AAAA,EAC3B,QAAQ;AAAA,EACR,KAAK;AACP,GACIC,KAAyB;AAAA,EAC3B,KAAK;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AACH,GACIC,KAAQ;AAAA,EACV,eAAed,GAAoB;AAAA,IACjC,cAAcE;AAAA,IACd,cAAcC;AAAA,IACd,eAAe,SAAU14B,GAAO;AAC9B,aAAO,SAASA,CAAK;AAAA,IACtB;AAAA,EACL,CAAG;AAAA,EACD,KAAK03B,EAAa;AAAA,IAChB,eAAeiB;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,SAASlB,EAAa;AAAA,IACpB,eAAemB;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAe,SAAUrxB,GAAO;AAC9B,aAAOA,IAAQ;AAAA,IAChB;AAAA,EACL,CAAG;AAAA,EACD,OAAOiwB,EAAa;AAAA,IAClB,eAAeqB;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,KAAKtB,EAAa;AAAA,IAChB,eAAeuB;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,WAAWxB,EAAa;AAAA,IACtB,eAAeyB;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AACH;AACA,MAAAmH,KAAelH;AClFf,IAAIza,KAAS;AAAA,EACX,MAAM;AAAA,EACN,gBAAgB0W;AAAAA,EAChB,YAAYU;AAAAA,EACZ,gBAAgBG;AAAAA,EAChB,UAAUoB;AAAAA,EACV,OAAO8B;AAAAA,EACP,SAAS;AAAA,IACP,cAAc;AAAA,IAGd,uBAAuB;AAAA,EACxB;AACH;AACA,MAAAmH,KAAe5hB;AC7BH,IAAA6hB,uBAAAA,OAERA,EAAA,eAAe,QAGfA,EAAA,yBAAyB,WACzBA,EAAA,4BAA4B,QAC5BA,EAAA,yBAAyB,cACzBA,EAAA,4BAA4B,WAG5BA,EAAA,YAAY,iBACZA,EAAA,aAAa,gBACbA,EAAA,mCAAmC,4BACnCA,EAAA,sCAAsC,yBACtCA,EAAA,gDAAgD,8BAChDA,EAAA,wDAAwD,2BACxDA,EAAA,6BAA6B,yBAC7BA,EAAA,0CAA0C,2BAC1CA,EAAA,gCAAgC,sBAChCA,EAAA,kDAAkD,wBApB1CA,IAAAA,MAAA,CAAA,CAAA;ACkCZ,MAAAC,KAAAn/B,EAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA,EAAA,iBAAAS,EAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAAy+B,GAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,MAAAj/B,GAAA;AACA,UAAA,EAAA,QAAAod,MAAAnW,MAEAk4B,IAAA,EAAA,IAAAb,IAAA,MAAAvG,IAAA,IAAAiH,GAAA;AAMA,WAAA;AAAA;AAAA,MAEA,eANA/+B;AAAA,QAAA,MACAm0B,GAAAp0B,EAAA,MAAAA,EAAA,QAAA,EAAA,QAAAm/B,EAAA/hB,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAA2a,IAAA;AAAA,MAAA;AAAA;AAAA,MAQA,wBAAAp4B;AAAA,MACA,wBAAAE;AAAA,IAAA;AAAA,EAEA;AACA,CAAA;;;;;;;;;;;;;;;ACxEY,IAAAu/B,uBAAAA,OACRA,EAAA,UAAU,WACVA,EAAA,QAAQ,SAFAA,IAAAA,MAAA,CAAA,CAAA;ACuDR,MAAAC,KAAe;AAAA,EACX,MAAM;AAAA,EACN,cAAc;AAClB;;;;;;;;iBA0BMv+B,IAAqBb,EAAS,OAAO;AAAA,MACvC,CAAC,WAAWm/B,GAAiB,OAAO,GAAGp/B,EAAM,YAAYo/B,GAAiB;AAAA,IAC5E,EAAA,GAGIE,IAAaC;mFACDD;;;;;;;;;;;;;;;;;;;AC1FV,IAAAE,uBAAAA,OACRA,EAAA,OAAO,QACPA,EAAA,QAAQ,SACRA,EAAA,OAAO,QACPA,EAAA,SAAS,UACTA,EAAA,MAAM,OACNA,EAAA,SAAS,UANDA,IAAAA,MAAA,CAAA,CAAA;AC8BZ,MAAAC,KAAA1/B,EAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA,EAAA,iBAAAS,EAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAA;AAAA,IACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA,CAAA0W,MAAA,OAAA,OAAAsoB,EAAA,EAAA,SAAAtoB,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,MAAAlX,GAAA;AAKA,WAAA;AAAA;AAAA,MAEA,kBANAC,EAAA,OAAA;AAAA,QACA,CAAA,wBAAAD,EAAA,SAAA,GAAA;AAAA,MACA,EAAA;AAAA;AAAA,MAOA,wBAAAH;AAAA,MACA,wBAAAF;AAAA,IAAA;AAAA,EAEA;AACA,CAAA;;;;;;;;;;;;;;uBCvDa+/B,KAAkC,OAAO,gCAAgC,GACzEC,KAAyB,OAAO,wBAAwB,GCUrEC,KAAA7/B,EAAA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,MAAAC,GAAA;AACA,UAAA6/B,IAAAC,GAAAJ,EAAA,GACAK,IAAAD,GAAAH,EAAA,GACA7gC,IAAA+gC,EAAA7/B,CAAA;AAEA,WAAA,EAAA,aAAA+/B,GAAA,IAAAjhC;EACA;AACA,CAAA;;;;;;;;;;;;;;uBCjCakhC,KAAsB,CAACC,GAAwBC,MAA0B;AAClF,QAAMC,IAAoBF,MAAmB,IAAIC,EAAU,SAAS,IAAID,IAAiB;AACrF,SAAAC,EAAUC,CAAiB,EAAE,WACtBH,GAAoBG,GAAmBD,CAAS,IAEpDC;AACX,GAEaC,KAAkB,CAACH,GAAwBC,MAA0B;AAC9E,QAAMC,IAAoBF,MAAmBC,EAAU,SAAS,IAAI,IAAID,IAAiB;AACrF,SAAAC,EAAUC,CAAiB,EAAE,WACtBC,GAAgBD,GAAmBD,CAAS,IAEhDC;AACX,GCkEAE,KAAAtgC,EAAA;AAAA,EACA,YAAA;AAAA,IACA,iBAAAS;AAAA,EACA;AAAA,EACA,QAAA;AACA,UAAA8/B,IAAAv+B,EAAA,CAAA,CAAA,GACAw+B,IAAAx+B,EAAA,IAAA,GACAg+B,IAAAh+B,EAAA,EAAA;AAEA,IAAAy+B,GAAAb,IAAAI,CAAA,GAcAS,GAAAd,IAXA,CAAA,EAAA,OAAA7c,GAAA,UAAA1d,QAAA;AACA,YAAArG,IAAAP,EAAA,OAAA;AAGA,aAAA+hC,EAAA,MAAA,KAAA,EAAA,UAAAn7B,GAAA,IAAArG,GAAA,OAAA+jB,GAAA,GAGA/jB;AAAA,IAAA,CAIA;AAGA,UAAA2hC,IAAA,CAAAjjC,MAAA;AACA,UAAAA,EAAA,SAAA,eAAAA,EAAA,SAAA,cAAA;AAEA,cAAAkjC,IAAAJ,EAAA,MAAA,KAAA,OAAA,SAAA,cAAA,OAAAK,EAAA,EAAA;AACA,YAAAV,IAAAK,EAAA,MAAA,QAAAI,CAAA;AAGA,QAAAljC,EAAA,SAAA,cACAyiC,IAAAD,GAAAC,GAAAK,EAAA,KAAA,IACA9iC,EAAA,SAAA,iBACAyiC,IAAAG,GAAAH,GAAAK,EAAA,KAAA,IAIAC,EAAA,MAAA,SAAAN,CAAA,EAAA,MAAA;AAAA;AAAA,IACA;AAIA,WAAAx+B,GAAA,MAAA;AACA,YAAAm/B,IAAAN,EAAA,MAAA,KAAA,CAAAK,MAAA,CAAAA,EAAA,QAAA;AAEA,MAAAC,MACAb,EAAA,QAAAa,EAAA;AAAA,IACA,CACA,GAEA;AAAA,MACA,wBAAA/gC;AAAA,MACA,wBAAAF;AAAA,MACA,MAAA2gC;AAAA,MACA,SAAAC;AAAA,MACA,aAAAR;AAAA,MACA,yBAAAU;AAAA,IAAA;AAAA,EAEA;AACA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GClFAI,KAAA9gC,EAAA;AAAA,EACA,MAAA,EAAA,UAAAuH,GAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA,EAAA,aAAArG,GAAA,iBAAAT,GAAA,WAAAgiB,IAAAmK,UAAAA,GAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA,CAAA,SAAA,SAAA;AAAA,EACA,MAAA3sB,GAAA,EAAA,OAAAK,GAAA,MAAAI,KAAA;AACA,UAAAqgC,IAAA,MAAArgC,EAAA,SAAA,GACAsgC,IAAA,MAAA;AACA,MAAA/gC,EAAA,OAAA,WACAS,EAAA,SAAA;AAAA,IAAA;AAGA,WAAA;AAAA;AAAA,MAEA,oBAAAhB;AAAA,MACA,wBAAAI;AAAA,MACA,wBAAAF;AAAA;AAAA,MAGA,sBAAAmhC;AAAA,MACA,SAAA1gC,GAAAC,CAAA;AAAA,MACA,iBAAA0gC;AAAA,IAAA;AAAA,EAEA;AACA,CAAA;;;;;;;;;;;;;;;;uBC5DAC,KAAA,KAmBA7gC,KAAAJ,EAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA,EAAA,WAAAkhC,GAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AACA,UAAA,EAAA,OAAA5qB,MAAAwO,MACAqc,IAAAn/B,EAAA,IAAA,GACAnD,IAAAmD,EAAA,IAAA,GACAo/B,IAAAlhC,EAAA,MAAAoW,EAAA,MAAA,MAAA,EAAA,CAAA,GAEA+qB,IAAA,MAAA;AACA,mBAAAF,EAAA,KAAA;AAAA,IAAA,GAGAG,IAAA,CAAAC,MAAA;AACA,MAAAJ,EAAA,QAAA,WAAA,MAAA;AACA,QAAAE,KACAE,EAAA,QAAA;AAAA,SACAN,EAAA;AAAA,IAAA,GAGAO,IAAA,MAAA;AACA,MAAAH;AAEA,YAAAE,IAAAH,EAAA,MAAA,MAAA,EAAA,EAAA,CAAA;AACA,MAAAG,KACAD,EAAAC,CAAA;AAAA,IACA;AAGA,IAAA7/B,GAAA,MAAA;AACA,MAAA8/B;IAAA,CACA,GAEAr3B;AAAA,MACA,MAAAi3B,EAAA;AAAA,MACA,MAAA;AACA,QAAAA,EAAA,MAAA,WACAC,KACAG;MAEA;AAAA,IAAA;AAGA,UAAAC,IAAAvhC;AAAA,MAAA,MACAkhC,EAAA,MAAA,IAAA,CAAAr3B,GAAA7D,MAAA;AAIA,cAAAw7B,IAAAN,EAAA,MAAA,SAAA;AACA,eAAA;AAAA,UACA,KAAA,GAAA,KAAAl7B;AAAA,UACA,OAAA,GAAA,MAAA,MAAAw7B,IAAAx7B;AAAA,QAAA;AAAA,MACA,CACA;AAAA,IAAA,GAGAy7B,IAAAzhC,EAAA,MAAA;;AAEA,YAAA0hC,KAAA/gC,IAAAhC,EAAA,UAAA,gBAAAgC,EAAA,aAEA6gC,IAAAN,EAAA,MAAA,SAAA,GAIAS,IAAAH,IAFA,KAEAA,IAAA;AAEA,aAAA;AAAA,QACA,QAAA,GAAAE;AAAA,QACA,QAAA,GAAAC;AAAA,MAAA;AAAA,IACA,CACA;AAEA,WAAA;AAAA;AAAA,MAEA,qBAAAJ;AAAA,MACA,gBAAAE;AAAA,MACA,cAAAP;AAAA,MACA,OAAAviC;AAAA,IAAA;AAAA,EAEA;AACA,CAAA;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[1,2,3,4,12,13,14,15,16,33,34,41,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,86,87,91,111,112,113,114,120,136,137,144,150,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]}
|