{"version":3,"file":"index-CpBGZ2AH.cjs","sources":["../src/core/utils.ts","../src/utils/common.ts","../src/utils/value/is.ts","../src/utils/value/number.ts","../src/utils/abort/constants.ts","../src/utils/value/bool.ts","../src/utils/struct/property.ts","../src/utils/value/compare.ts","../src/utils/abort/internals.ts","../src/utils/abort/main.ts","../src/utils/value/constants.ts","../src/utils/async/constants.ts","../src/utils/async/main.ts","../src/utils/collection/main.ts","../src/utils/datetime/main.ts","../src/utils/random/uniqueId.ts","../src/utils/random/uuid.ts","../src/utils/struct/main.ts","../src/utils/value/string.ts","../src/core/ConfigContext/session/constants.ts","../src/core/Errors/AdyenPlatformExperienceError.ts","../src/core/Http/utils.ts","../src/primitives/async/abortable/main.ts","../src/primitives/async/deferred/main.ts","../src/primitives/async/promisor/main.ts","../src/core/ConfigContext/session/SetupContext.ts","../src/primitives/context/session/constants.ts","../src/primitives/context/session/internal/constants.ts","../src/primitives/context/session/internal/autofresher.ts","../src/primitives/time/interval/constants.ts","../src/primitives/time/interval/main.ts","../src/primitives/reactive/watchlist/helpers.ts","../src/primitives/reactive/watchlist/constants.ts","../src/primitives/reactive/watchlist/main.ts","../src/primitives/time/clock/main.ts","../src/primitives/reactive/eventEmitter/main.ts","../src/primitives/context/session/internal/deadline.ts","../src/primitives/context/session/internal/refresher.ts","../src/primitives/context/session/SessionContext.ts","../src/core/Http/constants.ts","../src/core/Http/http.ts","../src/core/ConfigContext/session/AuthSessionSpecification.ts","../src/primitives/auxiliary/errorContainer/main.ts","../src/core/ConfigContext/session/AuthSession.ts","../src/translations/index.ts","../src/core/Localization/constants/localization.ts","../src/core/Localization/constants/currency-codes.ts","../src/core/Localization/constants/currency-decimals.ts","../src/core/Localization/amount/amount-util.ts","../src/core/Localization/datetime/restamper/constants.ts","../src/core/Localization/datetime/restamper/utils.ts","../src/core/Localization/datetime/restamper/restamper.ts","../src/core/Localization/utils.ts","../src/core/Localization/localization-utils.ts","../src/core/Localization/Localization.ts","../src/core/core.ts","../node_modules/preact/dist/preact.module.js","../node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../node_modules/preact/hooks/dist/hooks.module.js","../src/components/internal/Typography/constants.ts","../src/components/internal/Typography/types.ts","../node_modules/preact/compat/dist/compat.module.js","../src/components/internal/Typography/Typography.tsx","../src/core/Context/CoreContext.ts","../src/core/Context/useCoreContext.ts","../src/images/no-results.svg","../src/utils/preact/fixedForwardRef.ts","../src/utils/preact/memoComparator/main.ts","../src/utils/preact/className.ts","../src/utils/preact/props.ts","../src/components/internal/Button/constants.ts","../src/components/internal/Spinner/Spinner.tsx","../src/components/internal/Button/hooks/useButton.tsx","../src/components/internal/Button/types.ts","../src/components/internal/Button/Button.tsx","../src/components/internal/ErrorMessageDisplay/ErrorMessageDisplay.tsx","../src/core/ConfigContext/session/utils/sessionAwareComponentAvailability/helpers/componentAvailabilityRegistry.ts","../src/core/ConfigContext/session/utils/sessionReady.ts","../src/core/ConfigContext/session/utils/sessionAwareComponentAvailability/sessionAwareComponentAvailability.ts","../src/core/ConfigContext/session/utils/sessionAwareComponentAvailability/helpers/componentAvailabilityErrors.ts","../src/core/ConfigContext/context.tsx","../src/hooks/useBooleanState.ts","../src/core/Context/CoreProvider.tsx","../src/components/external/BaseElement.ts","../src/components/external/UIElement/UIElement.tsx","../src/hooks/useFetch.ts","../src/components/internal/SVGIcons/ChevronDown.tsx","../src/components/internal/SVGIcons/ChevronUp.tsx","../src/components/internal/Accordion/constants.ts","../src/components/internal/Accordion/Accordion.tsx","../src/components/internal/Card/constants.ts","../src/components/internal/Card/Card.tsx","../src/constants/dateFormats.ts","../src/constants/index.ts","../src/components/internal/StructuredList/constants.ts","../src/components/internal/StructuredList/useStructuredListItem.ts","../src/components/internal/StructuredList/StructuredList.tsx","../src/components/internal/DataOverviewDetails/constants.ts","../src/components/internal/DataOverviewDetails/DataOverviewDetailsSkeleton.tsx","../src/hooks/useTimezoneAwareDateFormatting.ts","../src/components/external/PayoutDetails/components/constants.ts","../src/components/internal/Tag/types.ts","../src/components/internal/Tag/Tag.tsx","../src/components/internal/Icon/Icon.tsx","../src/components/internal/Link/Link.tsx","../src/components/internal/DataGrid/components/Icon.tsx","../src/components/internal/DataGrid/hooks/useDataGridContext.ts","../src/components/internal/DataGrid/DataGridCell.tsx","../src/components/internal/DataGrid/components/TableCells.tsx","../src/components/internal/Button/ButtonActions/types.ts","../src/components/internal/Button/ButtonActions/ButtonActions.tsx","../src/components/external/PayoutDetails/components/PayoutData.tsx","../src/components/internal/Alert/types.ts","../src/components/internal/Alert/AlertIcon.tsx","../src/components/internal/Alert/Alert.tsx","../src/components/external/TransactionDetails/context/types.ts","../src/components/external/TransactionDetails/context/details/context.tsx","../src/components/external/TransactionDetails/context/constants.ts","../src/components/external/TransactionDetails/context/refund/hooks/useRefundAction.tsx","../src/components/external/TransactionDetails/context/refund/hooks/useRefundContextActions.ts","../src/components/external/TransactionDetails/context/refund/hooks/useRefundContextAmount.ts","../src/components/external/TransactionDetails/context/refund/helpers.ts","../src/components/external/TransactionDetails/context/refund/hooks/useRefundContextLineItems.ts","../src/components/external/TransactionDetails/context/refund/hooks/useRefundContextReason.ts","../src/hooks/useMutation/useMutation.ts","../src/components/external/TransactionDetails/context/refund/context.tsx","../src/components/external/TransactionDetails/hooks/useTransaction/transactionNavigator/createDuplexTransactionNavigator.ts","../src/components/external/TransactionDetails/hooks/useTransaction/useTransaction.ts","../src/components/external/TransactionDetails/hooks/useTransactionRefundMetadata/helpers.ts","../src/components/external/TransactionDetails/hooks/useTransactionRefundMetadata/useTransactionRefundMetadata.ts","../src/components/internal/Popover/constants.ts","../src/components/internal/Popover/PopoverDismissButton/PopoverDismissButton.tsx","../src/components/internal/Popover/PopoverTitle/PopoverTitle.tsx","../src/components/internal/Popover/types.ts","../src/components/types.ts","../src/components/internal/Popover/utils/popoverUtil.ts","../src/primitives/reactive/reflex/constants.ts","../src/primitives/reactive/reflex/errors.ts","../src/primitives/reactive/reflex/helpers.ts","../src/primitives/reactive/reflex/register.ts","../src/primitives/reactive/reflex/main.ts","../src/hooks/useReflex.ts","../src/hooks/element/useClickOutside.ts","../src/primitives/dom/tabbableRoot/tabbable.ts","../src/hooks/element/useFocusTrap.ts","../src/components/internal/Popover/utils/utils.ts","../src/hooks/element/usePopoverPositioner.ts","../src/hooks/element/useUniqueIdentifier.ts","../src/components/internal/Popover/Popover.tsx","../src/components/internal/Tooltip/useTooltipListeners.ts","../src/components/internal/Tooltip/Tooltip.tsx","../src/components/external/TransactionsOverview/components/Category/Category.tsx","../src/components/utils/getCommonErrorCode.ts","../src/components/internal/CopyText/CopyText.tsx","../src/components/utils/getErrorMessage.tsx","../src/components/internal/DataOverviewError/DataOverviewError.tsx","../src/components/internal/DataGrid/components/TableBody.tsx","../src/components/internal/DataGrid/hooks/useInteractiveDataGrid.ts","../src/components/internal/DataGrid/components/InteractiveBody.tsx","../src/components/internal/DataGrid/components/SkeletonBody.tsx","../src/images/no-data-female.svg","../src/components/internal/DataGrid/utils/DataGridProvider.tsx","../src/components/internal/DataGrid/components/TableHeaderCell.tsx","../src/components/internal/DataGrid/DataGrid.tsx","../src/core/Errors/constants.ts","../src/hooks/useCommitAction/types.ts","../src/hooks/useCommitAction/useCommitAction.ts","../src/components/internal/Img/Img.tsx","../src/components/internal/FormFields/Select/constants.ts","../src/components/internal/FormFields/Select/components/SelectButton.tsx","../src/hooks/useContainerQuery.ts","../src/hooks/useResponsiveContainer.ts","../src/components/internal/SVGIcons/CheckedBox.tsx","../src/components/internal/SVGIcons/UncheckedBox.tsx","../src/components/internal/SVGIcons/Checkmark.tsx","../src/components/internal/FormFields/Select/components/SelectListItem.tsx","../src/components/internal/FormFields/Select/components/SelectList.tsx","../src/components/internal/FormFields/Select/hooks/useSelect.ts","../src/components/internal/FormFields/Select/Select.tsx","../src/components/internal/SVGIcons/ChevronLeft.tsx","../src/components/internal/SVGIcons/ChevronRight.tsx","../src/components/internal/Pagination/Pagination.tsx","../src/components/external/TransactionsOverview/components/TransactionsTable/constants.ts","../src/hooks/useImageUrl.ts","../src/components/internal/Image/Image.tsx","../src/components/external/TransactionsOverview/components/utils.ts","../src/components/external/TransactionsOverview/components/TransactionsTable/PaymentMethodCell.tsx","../src/components/utils/getLabel.ts","../src/hooks/useTableColumns.ts","../src/components/external/TransactionsOverview/components/TransactionsTable/TransactionsTable.tsx","../src/components/external/TransactionDetails/components/constants.ts","../src/components/external/TransactionDetails/components/details/TransactionDataProperties.tsx","../src/components/external/TransactionDetails/components/details/TransactionDetailsDataContainer.tsx","../src/components/external/TransactionDetails/components/utils.ts","../src/components/external/TransactionDetails/components/details/TransactionStatusBox.tsx","../src/components/internal/SVGIcons/CloseCircle.tsx","../src/components/internal/FormFields/InputBase.tsx","../src/components/external/TransactionDetails/components/refund/TransactionRefundAmount.tsx","../src/components/external/TransactionDetails/components/refund/TransactionRefundNotice.tsx","../src/components/external/TransactionDetails/components/refund/TransactionRefundReason.tsx","../src/components/external/TransactionDetails/components/TransactionData/TransactionDataContent.tsx","../src/components/external/TransactionDetails/components/TransactionData/TransactionData.tsx","../src/hooks/useBalanceAccounts.ts","../src/components/internal/Modal/Modal.tsx","../src/components/internal/DataOverviewDetails/useDataOverviewDetailsTitle.ts","../src/components/external/PayoutsOverview/components/PayoutsTable/constants.ts","../src/components/external/PayoutsOverview/components/PayoutsTable/PayoutsTable.tsx","../src/components/internal/DataOverviewDetails/DataOverviewDetails.tsx","../src/components/external/PayoutDetails/PayoutDetails.tsx","../src/components/internal/DataOverviewContainer/constants.ts","../src/components/internal/DataOverviewContainer/DataOverviewContainer.tsx","../src/components/external/PayoutsOverview/components/PayoutsOverview/constants.ts","../src/components/internal/FilterBar/FilterBar.tsx","../src/components/internal/FormFields/Select/BalanceAccountSelector/BalanceAccountSelector.tsx","../src/components/internal/Pagination/constants.ts","../src/components/internal/Pagination/utils.ts","../src/components/internal/Pagination/hooks/usePageLimit.ts","../src/hooks/useMounted.ts","../src/components/internal/Pagination/hooks/usePagination.ts","../src/components/internal/Pagination/hooks/useCursorPagination.ts","../src/components/internal/Pagination/hooks/useOffsetPagination.ts","../src/hooks/useReactiveState/useReactiveState.ts","../src/components/internal/Pagination/hooks/usePaginatedRecordsFilters.ts","../src/components/internal/Pagination/types.ts","../src/components/internal/Pagination/hooks/usePaginatedRecords.ts","../src/components/internal/Pagination/hooks/useCursorPaginatedRecords.ts","../src/hooks/useBalanceAccountSelection.ts","../src/components/internal/Calendar/hooks/useTimezone.ts","../src/components/internal/Calendar/calendar/timerange/utils.ts","../src/components/internal/Calendar/calendar/timerange/factory.ts","../src/components/internal/Calendar/calendar/utils.ts","../src/components/internal/Calendar/calendar/timerange/presets/shared/offsetWeek.ts","../src/components/internal/Calendar/calendar/timerange/presets/shared/offsetMonth.ts","../src/components/internal/Calendar/calendar/timerange/presets/lastMonth.ts","../src/components/internal/Calendar/calendar/timerange/presets/lastNDays.ts","../src/components/internal/Calendar/calendar/timerange/presets/lastWeek.ts","../src/components/internal/Calendar/calendar/timerange/presets/thisMonth.ts","../src/components/internal/Calendar/calendar/timerange/presets/thisWeek.ts","../src/components/internal/Calendar/calendar/timerange/presets/yearToDate.ts","../src/components/internal/DatePicker/components/TimeRangeSelector/useTimeRangeSelection.ts","../src/components/internal/DatePicker/components/TimeRangeSelector/TimeRangeSelector.tsx","../src/components/internal/Calendar/components/CalendarGrid/utils.ts","../src/components/internal/Calendar/types.ts","../src/components/internal/Calendar/components/CalendarGrid/CalendarGridDate.tsx","../src/components/internal/Calendar/components/CalendarGrid/CalendarGridDayOfWeek.tsx","../src/components/internal/Calendar/components/CalendarGrid/CalendarGrid.tsx","../src/components/internal/Calendar/calendar/constants.ts","../src/components/internal/Calendar/calendar/timeframe/common/utils.ts","../src/components/internal/Calendar/calendar/timeslice/TimeSlice.ts","../src/components/internal/Calendar/calendar/timeslice/index.ts","../src/components/internal/Calendar/calendar/types.ts","../src/components/internal/Calendar/calendar/timeframe/common/flags.ts","../src/primitives/auxiliary/indexed/helpers.ts","../src/primitives/auxiliary/indexed/main.ts","../src/primitives/time/today/main.ts","../src/components/internal/Calendar/calendar/timeframe/frames/TimeFrame.ts","../src/components/internal/Calendar/calendar/timeframe/frames/MonthFrame.ts","../src/primitives/reactive/effectStack/main.ts","../src/components/internal/Calendar/calendar/facade/Calendar.ts","../src/components/internal/Calendar/calendar/facade/index.ts","../src/components/internal/Calendar/components/CalendarControls/CalendarControls.tsx","../src/hooks/element/useFocusCursor.ts","../src/components/internal/Calendar/hooks/useCalendar.ts","../src/components/internal/Calendar/Calendar.tsx","../src/hooks/element/useDetachedRender.ts","../src/components/internal/Calendar/hooks/useCalendarControlsRendering.tsx","../src/components/internal/DatePicker/DatePicker.tsx","../src/components/internal/FilterBar/components/FilterButton/FilterButton.tsx","../src/components/internal/FormFields/InputText.tsx","../src/components/internal/FilterBar/filters/BaseFilter/BaseFilter.tsx","../src/components/internal/FilterBar/filters/DateFilter/types.ts","../src/components/internal/FilterBar/filters/DateFilter/DateFilterCore.tsx","../src/components/internal/FilterBar/filters/DateFilter/DateFilter.tsx","../src/hooks/useModalDetails/types.ts","../src/hooks/useModalDetails/useModalDetails.ts","../src/components/external/TransactionsOverview/components/MultiSelectionFilter/MultiSelectionFilter.tsx","../src/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/utils.ts","../src/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/useMultiSelectionFilter.ts","../src/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/constants.ts","../src/hooks/useDefaultOverviewFilterParams.ts","../src/components/internal/DataOverviewDisplay/DataOverviewHeader/DataOverviewHeader.tsx","../src/components/internal/Modal/ModalContent/ModalContent.tsx","../src/components/internal/DataOverviewDisplay/DataDetailsModal.tsx","../src/hooks/useCustomColumnsData.ts","../src/components/utils/customData/hasCustomField.ts","../src/components/utils/customData/mergeRecords.ts","../src/components/external/PayoutsOverview/components/PayoutsOverview/PayoutsOverview.tsx","../src/components/external/PayoutsOverview/components/PayoutsOverviewContainer/constants.ts","../src/components/external/PayoutsOverview/components/PayoutsOverviewContainer/PayoutsOverviewContainer.tsx","../src/components/external/PayoutsOverview/PayoutsOverviewElement.tsx","../src/components/external/TransactionDetails/TransactionDetails.tsx","../src/components/internal/Divider/constants.ts","../src/components/internal/Divider/Divider.tsx","../src/components/internal/Header/Header.tsx","../src/components/external/TransactionsOverview/components/TransactionTotals/constants.ts","../src/components/internal/BaseButton/constants.ts","../src/components/internal/BaseButton/BaseButton.tsx","../src/components/internal/ExpandableCard/constants.ts","../src/components/internal/ExpandableCard/ExpandableCard.tsx","../src/components/external/TransactionsOverview/components/AmountSkeleton/constants.ts","../src/components/external/TransactionsOverview/components/AmountSkeleton/AmountSkeleton.tsx","../src/components/external/TransactionsOverview/components/SummaryItem/constants.ts","../src/components/external/TransactionsOverview/components/SummaryItem/SummaryItemLabel.tsx","../src/components/external/TransactionsOverview/components/SummaryItem/SummaryItem.tsx","../src/components/external/TransactionsOverview/components/TransactionTotalItem/TransactionTotalItem.tsx","../src/components/internal/BaseList/constants.ts","../src/components/internal/BaseList/BaseList.tsx","../src/components/external/TransactionsOverview/hooks/useMaxWidths.ts","../src/components/external/TransactionsOverview/components/TransactionTotals/TotalsCard.tsx","../src/components/external/TransactionsOverview/components/TransactionTotals/TransactionTotals.tsx","../src/components/external/TransactionsOverview/components/Balances/constants.ts","../src/components/external/TransactionsOverview/components/BalanceItem/BalanceItem.tsx","../src/components/external/TransactionsOverview/components/Balances/Balances.tsx","../src/components/external/TransactionsOverview/hooks/useTransactionsOverviewMultiSelectionFilters.ts","../src/components/internal/FilterBar/filters/AmountFilter/constants.ts","../src/components/internal/FilterBar/filters/AmountFilter/RangeSelection.tsx","../src/components/internal/FilterBar/filters/AmountFilter/AmountFilter.tsx","../src/components/external/TransactionsOverview/components/TransactionsOverview/constants.ts","../src/components/external/TransactionsOverview/components/TransactionsOverview/TransactionsOverview.tsx","../src/components/external/TransactionsOverview/components/TransactionsOverviewContainer/constants.ts","../src/components/external/TransactionsOverview/components/TransactionsOverviewContainer/TransactionsOverviewContainer.tsx","../src/components/external/TransactionsOverview/TransactionsOverviewElement.tsx","../src/components/internal/CapitalHeader/constants.ts","../src/components/internal/CapitalHeader/helpers.ts","../src/components/utils/capital/getCapitalErrorMessage.tsx","../src/components/external/CapitalOffer/components/utils/CapitalErrorMessageDisplay.tsx","../src/components/external/CapitalOffer/components/CapitalOffer/constants.ts","../src/components/internal/CapitalHeader/CapitalHeader.tsx","../src/components/internal/InfoBox/InfoBox.tsx","../src/components/external/CapitalOffer/components/utils/utils.ts","../src/components/internal/Slider/calculateProgress.ts","../src/components/internal/Slider/Slider.tsx","../src/components/internal/CapitalSlider/CapitalSlider.tsx","../src/components/constants.ts","../src/components/external/CapitalOffer/components/CapitalOfferSelection/CapitalOfferSelection.tsx","../src/components/internal/AnchorButton/AnchorButton.tsx","../src/components/internal/Translation/Translation.tsx","../src/components/external/CapitalOffer/components/CapitalOfferSummary/constants.ts","../src/components/external/CapitalOffer/components/CapitalOfferLegalNotice/CapitalOfferLegalNotice.tsx","../src/components/external/CapitalOffer/components/CapitalOfferSummary/CapitalOfferSummary.tsx","../src/components/external/CapitalOffer/components/CapitalOffer/CapitalOffer.tsx","../src/components/external/CapitalOffer/CapitalOfferElement.tsx","../src/hooks/useFreezePeriod.ts","../src/components/internal/SVGIcons/Download.tsx","../src/components/internal/Button/DownloadButton/useDownload.ts","../src/components/internal/Button/DownloadButton/DownloadButton.tsx","../src/components/internal/SVGIcons/Warning.tsx","../src/components/external/ReportsOverview/components/ReportsTable/constants.ts","../src/components/external/ReportsOverview/components/ReportsTable/ReportsTable.tsx","../src/components/external/ReportsOverview/components/ReportsOverview/constants.ts","../src/components/external/ReportsOverview/components/ReportsOverview/ReportsOverview.tsx","../src/components/external/ReportsOverview/components/ReportsOverviewContainer/constants.ts","../src/components/external/ReportsOverview/components/ReportsOverviewContainer/ReportsOverviewContainer.tsx","../src/components/external/ReportsOverview/ReportsOverviewElement.tsx","../src/components/external/CapitalOverview/constants.ts","../src/images/generic-use-first-touch.svg","../src/components/external/CapitalOverview/components/Unqualified.tsx","../src/components/external/CapitalOverview/components/PreQualifiedIntro.tsx","../src/components/external/CapitalOverview/components/PreQualified/PreQualified.tsx","../src/components/internal/ProgressBar/ProgressBar.tsx","../src/components/external/CapitalOverview/components/GrantItem/constants.ts","../src/components/external/CapitalOverview/components/GrantItem/utils.ts","../src/components/external/CapitalOverview/components/GrantDetails/constants.ts","../src/components/external/CapitalOverview/components/GrantDetails/GrantDetails.tsx","../src/components/external/CapitalOverview/components/GrantAction/constants.ts","../src/components/external/CapitalOverview/components/GrantAction/utils.ts","../src/components/external/CapitalOverview/components/GrantAction/GrantAction.tsx","../src/components/external/CapitalOverview/components/GrantItem/GrantItem.tsx","../src/components/external/CapitalOverview/components/GrantAdjustmentDetails/constants.ts","../src/components/external/CapitalOverview/components/AccountDetails/AccountDetail.tsx","../src/components/external/CapitalOverview/components/AccountDetails/utils.ts","../src/components/external/CapitalOverview/components/AccountDetails/AccountDetails.tsx","../src/components/external/CapitalOverview/components/GrantAdjustmentDetails/GrantAdjustmentDetails.tsx","../src/components/external/CapitalOverview/components/GrantRepaymentDetails/GrantRepaymentDetails.tsx","../src/hooks/useTabbedControl.ts","../src/components/internal/SegmentedControl/SegmentedControl.tsx","../src/components/external/CapitalOverview/components/GrantList/GrantsDisplay.tsx","../src/components/external/CapitalOverview/components/GrantList/GrantList.tsx","../src/components/external/CapitalOverview/components/CapitalOverview/CapitalOverview.tsx","../src/components/external/CapitalOverview/CapitalOverviewElement.tsx","../src/index.ts"],"sourcesContent":["import { DevEnvironment } from './types';\n\nexport const FALLBACK_ENV = 'test' satisfies DevEnvironment;\nexport const normalizeLoadingContext = (loadingContext: string) => loadingContext?.replace?.(/([^\\/])$/, '$1/')!;\nexport const normalizeUrl = (url: string) => url?.replace(/^([^\\/])/, '/$1')!;\n\nexport const resolveEnvironment = (() => {\n    const envs: Partial<Record<DevEnvironment, string>> = {\n        test: 'https://platform-components-external-test.adyen.com/platform-components-external/api/',\n        live: 'https://platform-components-external-live.adyen.com/platform-components-external/api/',\n    };\n\n    return (env?: DevEnvironment) => envs[env ?? FALLBACK_ENV] || envs[FALLBACK_ENV]!;\n})();\n","import type { DeepReadonly, ListWithoutFirst } from './types';\n\ntype _BoundFn<T, Args extends any[]> = Args extends []\n    ? T extends (this: infer ThisType, ...args: [...infer RestArgs]) => infer ReturnType\n        ? (thisValue: ThisType, ...args: RestArgs) => ReturnType\n        : never\n    : T extends (this: Args[0], ...args: [...ListWithoutFirst<Args>, ...infer RestArgs]) => infer ReturnType\n    ? (...args: RestArgs) => ReturnType\n    : never;\n\nexport const fn: <T, Args extends any[]>(func: T, ...args: Args) => _BoundFn<T, Args> = Function.prototype.bind.bind(Function.prototype.call);\n\n// prettier-ignore\nexport const constant = <T>(value?: T) => () => value;\n\nexport const asyncNoop = async () => {};\nexport const identity = <T>(value?: T) => value;\nexport const noop = () => {};\n\nexport const panic = (reason?: any) => {\n    throw reason;\n};\n\nconst _toString = fn(Object.prototype.toString);\nexport const toStringTag = (value?: any) => _toString(value).slice(8, -1);\n\nexport const deepFreeze = <T extends object>(obj: T): DeepReadonly<T> => {\n    Object.keys(obj).forEach(prop => {\n        const value = obj[prop as keyof T];\n        if (value && typeof value === 'object' && !Object.isFrozen(value)) {\n            deepFreeze(value);\n        }\n    });\n    return Object.freeze(obj) as DeepReadonly<T>;\n};\n","import { toStringTag } from '../common';\nimport type { GetPredicateType } from '../types';\n\nexport const isBoolean = (value?: any): value is boolean => value === !!value;\nexport const isFunction = <T>(value?: T): value is GetPredicateType<(...args: any[]) => any, T> => typeof value === 'function';\nexport const isNull = (value?: any): value is null => value === null;\nexport const isNullish = (value?: any): value is undefined | null => value == undefined;\nexport const isNumber = (value?: any): value is number => typeof value === 'number';\nexport const isPlainObject = <T>(value?: T): value is GetPredicateType<Record<any, any>, T> => toStringTag(value) === 'Object';\nexport const isString = (value?: any): value is string => typeof value === 'string';\nexport const isSymbol = (value?: any): value is symbol => typeof value === 'symbol';\nexport const isUndefined = (value?: any): value is undefined => value === undefined;\n","import { isNumber, isSymbol } from './is';\n\nexport const clamp = <T extends number = number>(min: T, value: T, max: T) => {\n    if (Math.min(min, max) !== min) [min, max] = [max, min];\n    return Math.max(min, Math.min(value, max));\n};\n\nexport const isBitSafeInteger = (value?: any): value is number => !isSymbol(value) && value === ~~value;\nexport const isInfinity = (value?: any): value is number => isNumber(value) && 1 / value === 0;\n\nexport const mid = (low: number, high: number) => {\n    if (Number.isInteger(low) && Number.isInteger(high)) {\n        return low + Math.floor((high - low) / 2);\n    }\n    throw TypeError(`Expects 2 integer values: [${low}, ${high}]`);\n};\n\nexport const mod = (value: number, modulo: number) => ((value % modulo) + modulo) % modulo;\n","export const ABORT_EVENT = 'abort';\nexport const DEFAULT_ABORT_ERROR_MESSAGE = 'signal is aborted without reason';\nexport const DEFAULT_TIMEOUT_ERROR_MESSAGE = 'signal timed out';\nexport const MAX_ABORT_TIMEOUT = 0x7fffffff;\n","import { isBoolean } from './is';\n\nexport const boolify = (value?: any, fallbackBoolean = value) => (isBoolean(value) ? value : !!fallbackBoolean);\n\nexport const boolOrFalse = (value?: any) => value === true;\nexport const boolOrTrue = (value?: any) => value !== false;\n\nexport const falsify = (_?: any): false => false;\nexport const truthify = (_?: any): true => true;\n","import { fn } from '../common';\nimport { boolOrFalse, boolOrTrue } from '../value/bool';\nimport type { GetterPropertyDescriptor, ValuePropertyDescriptor } from './types';\n\nexport const enumerable = <T>(value: T, writable = false): ValuePropertyDescriptor<T> => ({\n    writable: boolOrFalse(writable),\n    enumerable: true,\n    value,\n});\n\nexport const getter = <T>(get: () => T, enumerable = true): GetterPropertyDescriptor<T> => ({\n    enumerable: boolOrTrue(enumerable),\n    get,\n});\n\nexport const hasOwnProperty = fn(Object.prototype.hasOwnProperty);\n","/**\n * Compares two values using [`SameValueZero`](https://tc39.es/ecma262/multipage/abstract-operations.html#sec-samevaluezero) comparison and returns `true` if they are the same, or `false` otherwise.\n * The comparison is very similar to strict equality comparison but also returns `true` if both values are `NaN`.\n */\nexport const sameValue = (a: any, b: any) => a === b || !(a === a || b === b);\n","import { enumerable, getter, hasOwnProperty } from '../struct/property';\nimport { DEFAULT_ABORT_ERROR_MESSAGE, DEFAULT_TIMEOUT_ERROR_MESSAGE } from './constants';\nimport { sameValue } from '../value/compare';\n\nif (!hasOwnProperty(AbortSignal.prototype, 'reason')) {\n    try {\n        // Polyfill `AbortSignal.prototype.reason`\n        Object.defineProperty(AbortSignal.prototype, 'reason', {\n            ...getter(function _getReason(this: AbortSignal) {\n                return this.aborted ? abortError() : void 0;\n            }, true),\n            configurable: true,\n        });\n    } catch {\n        // `AbortSignal.prototype` is non-extensible or `reason` property already exists\n        // do nothing (fail silently)\n    }\n}\n\nif (!hasOwnProperty(AbortSignal.prototype, 'throwIfAborted')) {\n    // Polyfill `AbortSignal.prototype.throwIfAborted`\n    AbortSignal.prototype.throwIfAborted = function _throwIfAborted(this: AbortSignal) {\n        if (this.aborted) throw this.reason ?? abortError();\n    };\n}\n\nexport const abortError = (message = DEFAULT_ABORT_ERROR_MESSAGE) => new DOMException(message, 'AbortError');\nexport const timeoutError = (message = DEFAULT_TIMEOUT_ERROR_MESSAGE) => new DOMException(message, 'TimeoutError');\n\nexport const augmentSignalReason = (signal: AbortSignal, reason: any) => {\n    if (!sameValue(signal.reason, reason)) {\n        try {\n            Object.defineProperty(signal, 'reason', enumerable(reason));\n        } catch {\n            // `signal` is non-extensible or `reason` property already exists\n            // do nothing (fail silently)\n        }\n    }\n    return signal;\n};\n","import { clamp } from '../value/number';\nimport { isUndefined } from '../value/is';\nimport { ABORT_EVENT, MAX_ABORT_TIMEOUT } from './constants';\nimport { abortError, augmentSignalReason, timeoutError } from './internals';\n\ndeclare var AbortSignal: {\n    any: (signals: AbortSignal[]) => AbortSignal;\n} & typeof window.AbortSignal;\n\nexport const abortedSignal = (reason: unknown = abortError()) => {\n    if ('abort' in AbortSignal) {\n        return AbortSignal.abort(reason);\n    }\n\n    const _controller = new AbortController();\n    const _reason = isUndefined(reason) ? abortError() : reason;\n    const { signal } = _controller;\n\n    _controller.abort(_reason);\n    augmentSignalReason(signal, _reason);\n    return signal;\n};\n\nexport const abortSignalForAny = (signals: AbortSignal[]) => {\n    if ('any' in AbortSignal) {\n        return AbortSignal.any(signals);\n    }\n\n    let _sourceSignals = new Set<AbortSignal>();\n    let _controller = new AbortController();\n    const { signal } = _controller;\n\n    let abort = function (this: AbortSignal) {\n        _sourceSignals.forEach(signal => signal.removeEventListener(ABORT_EVENT, abort));\n        _sourceSignals.clear();\n\n        const reason = this?.reason ?? abortError();\n\n        _controller.abort(reason);\n        augmentSignalReason(signal, reason);\n        _controller = _sourceSignals = abort = undefined!;\n    };\n\n    setup: {\n        const NIL_EXCEPTION = Symbol('<NIL_EXCEPTION>');\n        let _exception: any = NIL_EXCEPTION;\n\n        filter: {\n            try {\n                for (const maybeSignal of signals) {\n                    if (!isAbortSignal(maybeSignal)) throw new TypeError(`Failed to convert value to 'AbortSignal'`);\n                    if (maybeSignal.aborted) break filter;\n                    _sourceSignals.add(maybeSignal);\n                }\n            } catch (ex) {\n                _exception = ex;\n                break filter;\n            }\n\n            _sourceSignals.forEach(signal => signal.addEventListener(ABORT_EVENT, abort));\n\n            // Mark setup as complete\n            break setup;\n        }\n\n        // If control flow reaches here, it means either of the following:\n        //  (1) at least one of the source signals is already aborted\n        //  (2) at least one invalid value was passed as source signal\n\n        // Hence, the need to abort the `signal` and destroy everything\n        abort.call(signal);\n\n        // And also throw the appropriate exception (if applicable)\n        if (_exception !== NIL_EXCEPTION) throw _exception;\n    }\n\n    return signal;\n};\n\nexport const abortSignalWithTimeout = (ms: number) => {\n    const _timeout = clamp(0, ms, MAX_ABORT_TIMEOUT);\n\n    if ('timeout' in AbortSignal) {\n        return AbortSignal.timeout(_timeout);\n    }\n\n    let _controller = new AbortController();\n    const { signal } = _controller;\n\n    setTimeout(\n        () =>\n            requestAnimationFrame(() => {\n                const reason = timeoutError();\n                _controller.abort(reason);\n                _controller = undefined!;\n                augmentSignalReason(signal, reason);\n            }),\n        _timeout\n    );\n\n    return signal;\n};\n\nexport const isAbortSignal = (value?: any): value is AbortSignal => value instanceof AbortSignal;\n","export const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze(Object.create(null)) as Readonly<{}>;\n","import { EMPTY_ARRAY } from '../value/constants';\n\nexport const ALREADY_RESOLVED_PROMISE = Promise.resolve();\nexport const FOREVER_PENDING_PROMISE = Promise.race(EMPTY_ARRAY);\n","import { ALREADY_RESOLVED_PROMISE } from './constants';\nimport { Promised, PromiseState } from '../types';\n\nconst _pending = () => _PENDING;\nconst _PENDING: unique symbol = Symbol('<<PENDING>>');\n\nexport const getPromiseState = async (promise: Promise<any>): Promise<PromiseState> => {\n    try {\n        const value = await Promise.race([promise, ALREADY_RESOLVED_PROMISE.then(_pending)]);\n        return value === _PENDING ? PromiseState.PENDING : PromiseState.FULFILLED;\n    } catch {\n        return PromiseState.REJECTED;\n    }\n};\n\nexport const tryResolve = function <T extends any, Params extends any[] = []>(\n    this: any,\n    fn: (this: any, ...args: Params) => Promised<T>,\n    ...args: Params\n) {\n    return new Promise<T>(resolve => resolve(fn.call(this, ...args)));\n};\n","import { fn, identity } from '../common';\nimport { EMPTY_ARRAY } from '../value/constants';\nimport { isFunction, isNullish, isUndefined } from '../value/is';\nimport type { MapGetter } from './types';\nimport type { List } from '../types';\n\nexport const getMappedValue: MapGetter = (key, map, factory) => {\n    let value = map.get(key);\n\n    if (isUndefined(value) && isFunction(factory)) {\n        if (!isUndefined((value = factory(key, map)))) {\n            map.set(key, value);\n        }\n    }\n\n    return value;\n};\n\nexport const listFrom = <T extends string = string>(value?: string | any[], fallbackList = EMPTY_ARRAY as unknown as T[]) => {\n    const stringedValue = `${value || ''}`.trim();\n    const stringedList = (stringedValue ? stringedValue.split(/(?:\\s*,\\s*)+/).filter(identity) : EMPTY_ARRAY) as T[];\n    return stringedList.length ? stringedList : fallbackList;\n};\n\nexport const pickFrom = <C extends readonly any[] | any[]>(list: C, option?: C[number], defaultOption?: C[number]) => {\n    if (list.includes(option)) return option;\n    if (isNullish(option)) return list[0];\n    return list.includes(defaultOption) ? defaultOption : list[0];\n};\n\nexport const some = fn(Array.prototype.some);\n\nconst _uniqueFlatten = function _uniqueFlatten<T>(reversed: boolean, items: List<T>, uniqueItems: Set<T> = new Set<T>()) {\n    for (const item of items) {\n        if (!Array.isArray(item)) {\n            reversed && uniqueItems.delete(item);\n            uniqueItems.add(item);\n        } else _uniqueFlatten(reversed, item, uniqueItems);\n    }\n    return uniqueItems;\n};\n\ntype _UniqueFlatten = <T>(items: List<T>, uniqueItems?: Set<T>) => Set<T>;\n\nexport const uniqueFlatten = fn(_uniqueFlatten, void 0, false) as _UniqueFlatten;\nexport const uniqueFlattenReversed = fn(_uniqueFlatten, void 0, true) as _UniqueFlatten;\n","import { isString } from '../value/is';\nimport type { DateFunction, DateTimeComponents } from './types';\n\nexport const parseDate = ((...args) => {\n    const [value] = args;\n\n    const date =\n        args.length >= 2\n            ? new Date(...(args as DateTimeComponents))\n            : value instanceof Date\n            ? value\n            : new Date((isString(value) || Number.isFinite(value) ? value : undefined)!);\n\n    const timestamp = date.getTime();\n    return Number.isFinite(timestamp) ? timestamp : undefined;\n}) as DateFunction<number | undefined>;\n","export const uniqueId = (() => {\n    let counter = Date.now();\n    return (prefix = 'adyen-pe') => `${prefix}-${++counter}`;\n})();\n\nexport default uniqueId;\n","export const UUID_V4_REGEXP = /^[a-f\\d]{8}-[a-f\\d]{4}-4[a-f\\d]{3}-[89ab][a-f\\d]{3}-[a-f\\d]{12}$/i;\n\nexport const uuid = (() => {\n    const _UUID_V4_FILLER_STRING = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\n    return () =>\n        _UUID_V4_FILLER_STRING.replace(/[xy]/g, xy => {\n            const randomNibble = (Math.random() * 16) | 0;\n            const nibble = xy == 'x' ? randomNibble : (randomNibble & 0x3) | 0x8;\n            return nibble.toString(16);\n        });\n})();\n\nexport default uuid;\n","import { fn } from '../common';\nimport { EMPTY_OBJECT } from '../value/constants';\nimport { truthify } from '../value/bool';\nimport { isPlainObject } from '../value/is';\nimport type { PredicateType } from '../types';\n\ntype _PlainObject<T> = PredicateType<typeof isPlainObject<T>>;\n\nexport const asPlainObject = <T>(value?: T, fallback = EMPTY_OBJECT as _PlainObject<T>): _PlainObject<T> =>\n    isPlainObject(value) ? value : asPlainObject(fallback, EMPTY_OBJECT as _PlainObject<T>);\n\ninterface _StructFrom {\n    <T extends Record<any, any>, P extends object | null>(o: P, properties: { [K in keyof T]: TypedPropertyDescriptor<T[K]> }): P extends object\n        ? Omit<P, keyof T> & T\n        : T;\n    <P extends object | null>(o: P): P extends object ? { [K in keyof P]: P[K] } : Record<any, any>;\n}\n\ninterface _Struct {\n    <T extends Record<any, any>>(properties: { [K in keyof T]: TypedPropertyDescriptor<T[K]> }): T;\n    (): Record<any, any>;\n}\n\nexport const structFrom = fn(Object.create, void 0) as _StructFrom;\nexport const struct: _Struct = fn(structFrom, void 0, null);\n\nexport const withFreezeProxyHandlers = <T extends object>(handler: ProxyHandler<T> = EMPTY_OBJECT): Readonly<ProxyHandler<T>> => {\n    return Object.freeze({ ...handler, defineProperty: truthify, set: truthify } as const);\n};\n","import { isNullish, isString } from './is';\n\nexport const capitalize = (str?: string) => (str && str?.length > 0 ? `${str[0]!.toUpperCase()}${str.slice(1)}` : str);\nexport const isEmptyString = (str?: string) => isNullish(str) || (isString(str) && /^\\s*$/.test(str));\n","import { boolOrFalse } from '../../../utils';\n\nexport const SETUP_ENDPOINT_PATH = '/setup';\nexport const AUTO_REFRESH = boolOrFalse(process.env.SESSION_AUTO_REFRESH);\n\nexport const MAX_AGE_MS = (() => {\n    // Value provisioned in `SESSION_MAX_AGE_MS` env variable\n    let maxAgeMs = ~~process.env.SESSION_MAX_AGE_MS!;\n\n    if (Number.isFinite(maxAgeMs) && (maxAgeMs = Math.max(0, ~~maxAgeMs))) {\n        return maxAgeMs;\n    }\n})();\n","import { ErrorTypes } from '../Http/utils';\n\nclass AdyenPlatformExperienceError extends Error {\n    public type: string;\n    public errorCode?: string;\n    public requestId?: string;\n    constructor(type: ErrorTypes, requestId?: string, message?: string, errorCode?: string) {\n        super(message);\n        this.type = type;\n        this.name = type;\n        this.errorCode = errorCode;\n        this.requestId = requestId;\n    }\n}\n\nexport default AdyenPlatformExperienceError;\n","import { isNullish } from '../../utils';\nimport { AdyenErrorResponse, ErrorLevel, HttpOptions } from './types';\nimport AdyenPlatformExperienceError from '../Errors/AdyenPlatformExperienceError';\n\nconst FILENAME_EXTRACTION_REGEX = /^[^]*?filename[^;\\n]*=\\s*(?:UTF-\\d['\"]*)?(?:(['\"])([^]*?)\\1|([^;\\n]*))?[^]*?$/;\n\nexport const enum ErrorTypes {\n    /** Network error. */\n    NETWORK_ERROR = 'NETWORK_ERROR',\n\n    /** Shopper canceled the current transaction. */\n    CANCEL = 'CANCEL',\n\n    /** Implementation error. The method or parameter are incorrect or are not supported. */\n    IMPLEMENTATION_ERROR = 'IMPLEMENTATION_ERROR',\n\n    /** Generic error. */\n    ERROR = 'ERROR',\n\n    /** Token expired */\n    EXPIRED_TOKEN = 'EXPIRED_TOKEN',\n}\n\nexport const getErrorType = (errorCode: number): ErrorTypes => {\n    switch (errorCode) {\n        case 401:\n            return ErrorTypes.EXPIRED_TOKEN;\n        default:\n            return ErrorTypes.NETWORK_ERROR;\n    }\n};\n\nexport const getResponseContentType = (response: Response): string | undefined => response.headers.get('Content-Type')?.split(';', 1)[0];\n\nexport const getResponseDownloadFilename = (response: Response): string | undefined => {\n    const disposition = response.headers.get('Content-Disposition') ?? '';\n    const filename = disposition.replace(FILENAME_EXTRACTION_REGEX, '$2$3');\n    return decodeURIComponent(filename);\n};\n\nexport const getRequestObject = (options: HttpOptions): RequestInit => {\n    const { headers = [], method = 'GET' } = options;\n    const SDKVersion = process.env.VITE_VERSION;\n\n    return {\n        method,\n        mode: 'cors',\n        cache: 'default',\n        credentials: 'same-origin',\n        headers: {\n            Accept: 'application/json, text/plain, */*',\n            'Content-Type': options.contentType ?? 'application/json',\n            ...headers,\n            ...(SDKVersion && { 'SDK-Version': SDKVersion }),\n        },\n        redirect: 'follow',\n        signal: options.signal,\n        referrerPolicy: 'no-referrer-when-downgrade',\n        ...(method === 'POST' && options.body && { body: JSON.stringify(options.body) }),\n    };\n};\n\nexport function handleFetchError({\n    message,\n    level,\n    errorCode,\n    type = ErrorTypes.NETWORK_ERROR,\n    requestId,\n}: {\n    message: string;\n    level: ErrorLevel | undefined;\n    errorCode?: string;\n    type?: ErrorTypes;\n    requestId?: string;\n    status?: number;\n}) {\n    switch (level) {\n        case 'silent': {\n            break;\n        }\n        case 'info':\n        case 'warn':\n            console[level](message);\n            break;\n        case 'error':\n        default:\n            throw new AdyenPlatformExperienceError(type, requestId, message, errorCode);\n    }\n}\n\nexport function isAdyenErrorResponse(data: any): data is AdyenErrorResponse {\n    return data && data.errorCode && data.type && (data.detail || data.invalidFields) && data.status;\n}\n\nexport function parseSearchParams<T extends Record<string, any>>(parameters: T) {\n    const params = new URLSearchParams();\n\n    for (const param of Object.keys(parameters)) {\n        const value = parameters[param];\n        if (!isNullish(value)) {\n            if (Array.isArray(value)) {\n                value.forEach(item => params.append(param, item));\n            } else {\n                // For non-array values, just set the key and value normally\n                params.set(param, String(value));\n            }\n        }\n    }\n\n    return params;\n}\n","import { enumerable, getter, isUndefined, noop, struct } from '../../../utils';\nimport type { Abortable } from './types';\n\nexport const createAbortable = <T>(abortReason?: T) => {\n    let _abortController: AbortController | undefined;\n    let _abortSignal: AbortSignal;\n    let _abortPromise: Promise<never>;\n\n    const _abort = () => {\n        if (isUndefined(_abortController)) return;\n\n        // Capture a reference of the signal abort procedure to be triggered\n        const _abort: typeof noop = _abortController.abort.bind(_abortController);\n\n        // Since abortable can only be refreshed if `_abortController` is `undefined`, trigger the\n        // signal abort procedure after setting `_abortController` to `undefined`. This ensures that\n        // `_abortController` is already `undefined` before any signal abort listener gets a chance\n        // to run. Think about a signal abort listener that triggers an abortable refresh when it\n        // runs — that refresh can only happen if `_abortController` is already set to `undefined`.\n        _abortController = undefined;\n        _abort();\n    };\n\n    const _getAbortPromise = () => {\n        _abortPromise = new Promise<never>((_, reject) => {\n            _abortSignal.addEventListener('abort', function _abort() {\n                _abortSignal.removeEventListener('abort', _abort);\n                reject(abortReason);\n            });\n\n            if (_abortSignal.aborted) throw abortReason;\n        });\n\n        // no-op catch callback to silence unnecessary \"unhandled rejection\" warnings\n        _abortPromise.catch(noop);\n\n        return _abortPromise;\n    };\n\n    const _refreshIfNecessary = () => {\n        if (isUndefined(_abortController)) {\n            _abortController = new AbortController();\n            _abortSignal = _abortController.signal;\n            _abortPromise = _getAbortPromise();\n        }\n        return abortable;\n    };\n\n    const abortable = struct<Abortable<T>>({\n        abort: enumerable(_abort),\n        promise: getter(() => _abortPromise),\n        reason: enumerable(abortReason),\n        refresh: enumerable(_refreshIfNecessary),\n        signal: getter(() => _abortSignal),\n    });\n\n    return _refreshIfNecessary();\n};\n\nexport default createAbortable;\n","import { enumerable, getter, noop, struct } from '../../../utils';\nimport type { Promised } from '../../../utils/types';\nimport type { Deferred } from './types';\n\nexport const createDeferred = <T extends Promised<any> = any>() => {\n    let _promise: Deferred<T>['promise'];\n    let _reject: Deferred<T>['reject'];\n    let _resolve: Deferred<T>['resolve'];\n\n    const _refresh = () => {\n        const previousResolve = _resolve ?? noop;\n\n        const currentPromise = new Promise<T>((resolve, reject) => {\n            _resolve = resolve;\n            _reject = reject;\n        });\n\n        previousResolve((_promise = currentPromise));\n        return deferred;\n    };\n\n    const deferred = struct<Deferred<T>>({\n        promise: getter(() => _promise),\n        refresh: enumerable(_refresh),\n        reject: enumerable(reason => _reject(reason)),\n        resolve: enumerable(value => _resolve(value)),\n    });\n\n    return _refresh();\n};\n\nexport default createDeferred;\n","import { createAbortable } from '../abortable';\nimport { createDeferred } from '../deferred';\nimport { enumerable, getter, isUndefined, tryResolve } from '../../../utils';\nimport type { Promised } from '../../../utils/types';\nimport type { Promisor } from './types';\n\nexport const createPromisor = <T extends any, Params extends any[] = []>(\n    factory: (this: any, signal: AbortSignal, ...args: Params) => Promised<T>\n) => {\n    const _abortable = createAbortable();\n    const _deferred = createDeferred<T>();\n    let _promise: Promisor<T, Params>['promise'] | undefined;\n\n    const promisor = function (this: any, ...args) {\n        isUndefined(_promise) ? _deferred.refresh() : _abortable.abort();\n\n        const currentPromise = tryResolve.call(this, factory, _abortable.refresh().signal, ...args) as Promise<T>;\n\n        (async () => {\n            let isLatestPromise = _promise === (_promise = currentPromise);\n            try {\n                const value = await currentPromise.finally(() => {\n                    isLatestPromise = _promise === currentPromise;\n                    isLatestPromise && (_promise = undefined);\n                });\n                isLatestPromise && _deferred.resolve(value);\n            } catch (ex) {\n                isLatestPromise && _deferred.reject(ex);\n            }\n        })();\n\n        return currentPromise;\n    } as Promisor<T, Params>;\n\n    return Object.defineProperties(promisor, {\n        abort: enumerable(_abortable.abort),\n        promise: getter(() => _deferred.promise),\n        refresh: enumerable(() => void _deferred.refresh()),\n    });\n};\n\nexport default createPromisor;\n","import Core from '../../core';\nimport { SETUP_ENDPOINT_PATH } from './constants';\nimport { parseSearchParams } from '../../Http/utils';\nimport { SessionContext } from '../../../primitives/context/session';\nimport { createPromisor } from '../../../primitives/async/promisor';\nimport {\n    abortSignalForAny,\n    asPlainObject,\n    deepFreeze,\n    EMPTY_OBJECT,\n    isAbortSignal,\n    isPlainObject,\n    isUndefined,\n    noop,\n    struct,\n    withFreezeProxyHandlers,\n} from '../../../utils';\nimport type { EndpointHttpCallables, EndpointSuccessResponse, SessionObject, SetupContextObject, SetupResponse } from '../types';\nimport type { EndpointName, SetupEndpoint } from '../../../types/api/endpoints';\nimport type { HttpMethod } from '../../Http/types';\n\nexport class SetupContext {\n    private _endpoints: SetupContextObject['endpoints'] = EMPTY_OBJECT;\n    private _extraConfig: SetupContextObject['extraConfig'] = EMPTY_OBJECT;\n    private _revokeEndpointsProxy = noop;\n\n    private readonly _beforeHttp = async () => {\n        // a no-op catch callback is used here (`noop`),\n        // to silence unnecessary unhandled promise rejection warnings\n        await this._refreshPromisor.promise.catch(noop);\n    };\n\n    private readonly _refreshPromisor = createPromisor((promisorSignal, signal?: AbortSignal | null | undefined) => {\n        const abortSignal = isAbortSignal(signal) ? abortSignalForAny([signal, promisorSignal]) : promisorSignal;\n        return this._fetchSetupEndpoint(abortSignal);\n    });\n\n    public declare loadingContext?: Core<any>['loadingContext'];\n    public declare readonly refresh: (signal: AbortSignal) => Promise<void>;\n\n    constructor(private readonly _session: SessionContext<SessionObject, any[]>) {\n        let _refreshPromise: Promise<void> | undefined;\n\n        this.refresh = signal => {\n            this._refreshPromisor(signal).catch(noop);\n\n            return (_refreshPromise ??= this._refreshPromisor.promise\n                .finally(() => (_refreshPromise = undefined))\n                .then(({ endpoints, ...rest }) => {\n                    this._resetEndpoints();\n                    ({ proxy: this._endpoints, revoke: this._revokeEndpointsProxy } = this._getEndpointsProxy(endpoints));\n                    this._extraConfig = deepFreeze(rest);\n                }));\n        };\n    }\n\n    get endpoints() {\n        return this._endpoints;\n    }\n\n    get extraConfig() {\n        return this._extraConfig;\n    }\n\n    private _fetchSetupEndpoint(signal: AbortSignal) {\n        return this._session.http(null, {\n            method: 'POST',\n            path: SETUP_ENDPOINT_PATH,\n            errorLevel: 'fatal',\n            loadingContext: this.loadingContext,\n            signal,\n        }) as Promise<SetupResponse>;\n    }\n\n    private _getEndpointsProxy(endpoints: SetupEndpoint) {\n        const availableEndpoints: Set<EndpointName> = new Set(Object.keys(endpoints) as (keyof typeof endpoints)[]);\n        const sessionAwareEndpoints: SetupContextObject['endpoints'] = struct();\n\n        return Proxy.revocable(\n            EMPTY_OBJECT as typeof sessionAwareEndpoints,\n            withFreezeProxyHandlers({\n                get: <Endpoint extends EndpointName>(target: typeof sessionAwareEndpoints, endpoint: Endpoint, receiver: any) => {\n                    if (!availableEndpoints.has(endpoint)) {\n                        return Reflect.get(target, endpoint, receiver);\n                    }\n\n                    sessionAwareEndpoints[endpoint] ??= (() => {\n                        const { method = 'GET', url } = endpoints[endpoint];\n                        if (isUndefined(url || undefined)) return;\n\n                        return ((...args: Parameters<EndpointHttpCallables>) => {\n                            const httpOptions = this._getHttpOptions(method as HttpMethod, url!, ...args);\n                            return this._session.http(this._beforeHttp, httpOptions) as Promise<EndpointSuccessResponse<Endpoint>>;\n                        }) as EndpointHttpCallables<Endpoint>;\n                    })()!;\n\n                    return sessionAwareEndpoints[endpoint];\n                },\n            })\n        );\n    }\n\n    private _getHttpOptions(method: HttpMethod, path: string, ...args: Parameters<EndpointHttpCallables>) {\n        const { loadingContext } = this;\n        const [request, requestParams] = args;\n        const { path: pathParams, query: searchParams } = asPlainObject(requestParams as any);\n        const params = searchParams && parseSearchParams(searchParams);\n\n        if (isPlainObject(pathParams)) {\n            for (const pathParamKey of Object.keys(pathParams)) {\n                path = path.replace(`{${pathParamKey}}`, pathParams[pathParamKey]);\n            }\n        }\n\n        return { loadingContext, ...request, method, params, path } as const;\n    }\n\n    private _resetEndpoints() {\n        this._revokeEndpointsProxy();\n        this._revokeEndpointsProxy = noop;\n        this._endpoints = EMPTY_OBJECT;\n    }\n}\n\nexport default SetupContext;\n","export const ERR_SESSION_EXPIRED: unique symbol = Symbol('Error<SESSION_EXPIRED>');\nexport const ERR_SESSION_FACTORY_UNAVAILABLE: unique symbol = Symbol('Error<SESSION_FACTORY_UNAVAILABLE>');\nexport const ERR_SESSION_HTTP_UNAVAILABLE: unique symbol = Symbol('Error<SESSION_HTTP_UNAVAILABLE>');\nexport const ERR_SESSION_INVALID: unique symbol = Symbol('Error<SESSION_INVALID>');\nexport const ERR_SESSION_REFRESH_ABORTED: unique symbol = Symbol('Error<SESSION_REFRESH_ABORTED>');\nexport const EVT_SESSION_EXPIRED = '_sessionExpired';\nexport const EVT_SESSION_READY = '_sessionReady';\nexport const EVT_SESSION_REFRESHED = '_sessionRefreshed';\nexport const EVT_SESSION_REFRESHING_END = '_sessionRefreshingEnd';\nexport const EVT_SESSION_REFRESHING_START = '_sessionRefreshingStart';\n","export const INTERNAL_EVT_SESSION_DEADLINE = '_session.deadline';\nexport const INTERNAL_EVT_SESSION_READY = '_session.ready';\nexport const INTERNAL_EVT_SESSION_REFRESHING_END = '_session.refreshingEnd';\nexport const INTERNAL_EVT_SESSION_REFRESHING_START = '_session.refreshingStart';\n","import { boolOrFalse, falsify, getter, isFunction, noop, tryResolve } from '../../../../utils';\nimport { createPromisor } from '../../../async/promisor';\nimport { EVT_SESSION_EXPIRED } from '../constants';\nimport type { SessionRefresher } from './types';\n\nexport const _canAutofresh = async <T extends any>(refresher: SessionRefresher<T>) => {\n    const { specification } = refresher.context;\n\n    const canAutofresh = await tryResolve(async () => {\n        const _autoRefresh = specification.autoRefresh;\n        return isFunction(_autoRefresh) ? _autoRefresh.call(specification, refresher.session) : _autoRefresh;\n    }).catch(falsify);\n\n    return boolOrFalse(canAutofresh);\n};\n\nexport const createSessionAutofresher = <T extends any>(refresher: SessionRefresher<T>) => {\n    let _unlistenExpired = refresher.context.emitter.on(EVT_SESSION_EXPIRED, () => _autofresh(false));\n    let _autofreshSignal: AbortSignal | undefined;\n\n    let _autofreshPromisor = createPromisor(async (signal, skipCanAutofreshCheck = false) => {\n        _autofreshSignal = signal;\n\n        const canAutofresh = boolOrFalse(skipCanAutofreshCheck) || (await _canAutofresh(refresher));\n\n        if (_autofreshSignal !== signal) {\n            // The current autofresh signal does not match the autofresh attempt `signal`,\n            // meaning that this autofresh attempt is not the latest attempt.\n            // Return immediately to silently ignore this autofresh attempt.\n            return;\n        }\n\n        if (canAutofresh && refresher.pending && !refresher.refreshing) {\n            // a no-op catch callback is used here (`noop`),\n            // to silence unnecessary unhandled promise rejection warnings\n            refresher.refresh(_autofreshSignal).catch(noop);\n        }\n    });\n\n    let _autofresh = (skipCanAutofreshCheck = false) => {\n        if (!refresher.refreshing) void _autofreshPromisor(skipCanAutofreshCheck);\n    };\n\n    let _destruct = () => {\n        _unlistenExpired();\n        _autofreshPromisor.abort();\n        _autofreshPromisor = _autofreshSignal = _unlistenExpired = undefined!;\n        _autofresh = _destruct = noop;\n    };\n\n    const autofresh = (skipCanAutofreshCheck = false) => _autofresh(skipCanAutofreshCheck);\n\n    return Object.defineProperties(autofresh as typeof autofresh & { readonly destruct: () => void }, {\n        destruct: getter(() => _destruct, false),\n    });\n};\n\nexport default createSessionAutofresher;\n","export const DEFAULT_INTERVAL_MS = 1000;\nexport const MAX_INTERVAL_MS = 0x7fffffff;\n","import { boolOrFalse, clamp, enumerable, struct } from '../../../utils';\nimport { DEFAULT_INTERVAL_MS, MAX_INTERVAL_MS } from './constants';\nimport type { Interval } from './types';\n\n/**\n * Starts an abortable interval with autocorrection for time drifts.\n *\n * @example\n * // Schedule a callback every second:\n * let interval = createInterval(time => {\n *   console.log('clock!', time);\n * }, 1000, true);\n *\n * // And to stop it:\n * interval.cancel();\n *\n * // Don't forget to clean up:\n * interval = null;\n *\n * @param callback Callback to be executed at interval\n * @param ms Interval (in milliseconds)\n * @param runCallbackAsap Whether to execute callback as soon as possible\n *\n * @see [Gist by Jake Archibald](https://gist.github.com/jakearchibald/cb03f15670817001b1157e62a076fe95)\n */\nexport const createInterval = (callback: (time: DOMHighResTimeStamp) => any, ms = DEFAULT_INTERVAL_MS, runCallbackAsap = false) => {\n    let _abortController: AbortController | undefined = new AbortController();\n    let _intervalDelay = clamp(0, ~~ms, MAX_INTERVAL_MS);\n    let _shouldRunCallbackAsap = boolOrFalse(runCallbackAsap);\n\n    if (!Number.isFinite(_intervalDelay)) {\n        _intervalDelay = DEFAULT_INTERVAL_MS;\n    }\n\n    // Prefer `currentTime`, as it'll better sync animations queued in the same frame,\n    // but if it isn't supported, `performance.now()` is fine.\n    const _startTime = (document.timeline?.currentTime as number) ?? performance.now();\n\n    const _cancel = () => {\n        // Release the abort controller resource once aborted\n        _abortController?.abort();\n        _abortController = undefined;\n    };\n\n    const _frame = (time: number) => {\n        if (!_abortController || _abortController.signal.aborted) return;\n        _scheduleFrame(time);\n        callback(time);\n    };\n\n    const _scheduleFrame = (time: number) => {\n        // Just in case the interval callback needs to be executed as soon as possible,\n        // start with a zero delay (instead of the adjusted `ms` delay)\n        let delay = 0;\n\n        if (!_shouldRunCallbackAsap) {\n            const elapsed = time - _startTime;\n            const roundedElapsed = Math.round(elapsed / _intervalDelay) * _intervalDelay;\n            const targetNext = _startTime + roundedElapsed + _intervalDelay;\n\n            // Callback should be executed after adjusted `ms` delay\n            delay = targetNext - performance.now();\n        }\n\n        setTimeout(() => requestAnimationFrame(_frame), delay);\n    };\n\n    _scheduleFrame(_startTime);\n\n    // A frame must have already been scheduled for immediate run\n    _shouldRunCallbackAsap = false;\n\n    return struct<Interval>({\n        cancel: enumerable(_cancel),\n        delay: enumerable(ms),\n        signal: enumerable(_abortController.signal),\n    });\n};\n\nexport default createInterval;\n","import { getter, isFunction, isNullish, noop, struct } from '../../../utils';\nimport type { WatchListEntries, WatchListSubscriptionEventCallbacks } from './types';\n\nexport const createWatchListCurrentStateRecord = <T extends Record<string, any>>(entries: WatchListEntries<T>) => {\n    const statePropertyDescriptors = {} as { [K in keyof T]: TypedPropertyDescriptor<T[K]> };\n    const entriesPropertyDescriptors = Object.getOwnPropertyDescriptors(entries) as typeof statePropertyDescriptors;\n\n    for (const key of Object.keys(entries) as (keyof T)[]) {\n        const { get, value } = entriesPropertyDescriptors[key];\n\n        statePropertyDescriptors[key] = getter(\n            get ||\n                ((isFunction(value)\n                    ? // ensure that the `this` binding of the getter function is preserved\n                      value.bind(entries)\n                    : () => value) as NonNullable<typeof get>)\n        );\n    }\n\n    return struct<Readonly<T>>(statePropertyDescriptors);\n};\n\nexport const createWatchListSubscriptionEventCallbacks = () => {\n    const callbacks = { idle: null, resume: null } as {\n        [K in keyof WatchListSubscriptionEventCallbacks]: NonNullable<WatchListSubscriptionEventCallbacks[K]> | null;\n    };\n\n    const descriptors = {} as {\n        [K in keyof typeof callbacks]: {\n            get: () => (typeof callbacks)[K];\n            set: (callback?: (typeof callbacks)[K]) => void;\n        };\n    };\n\n    for (const key of Object.keys(callbacks) as (keyof typeof callbacks)[]) {\n        descriptors[key] = {\n            get: () => callbacks[key] ?? noop,\n            set: (callback?: (typeof callbacks)[typeof key]) => {\n                if (isNullish(callback)) {\n                    callbacks[key] = null;\n                } else if (isFunction(callback) && callback !== callbacks[key]) {\n                    callbacks[key] = callback;\n                }\n            },\n        };\n    }\n\n    return struct(descriptors) as WatchListSubscriptionEventCallbacks;\n};\n","export const UNSUBSCRIBE_TOKEN: unique symbol = Symbol('<<UNSUBSCRIBE>>');\n","import { enumerable, getMappedValue, getter, isFunction, noop, sameValue, struct } from '../../../utils';\nimport { createWatchListCurrentStateRecord, createWatchListSubscriptionEventCallbacks } from './helpers';\nimport type { WatchList, WatchListEntries, WatchListSubscriptionCallback } from './types';\nimport { UNSUBSCRIBE_TOKEN } from './constants';\n\nexport const isWatchlistUnsubscribeToken = <T extends Record<string, any>>(\n    currentStateSnapshotOrUnsubscribeToken?: Parameters<WatchListSubscriptionCallback<T>>[0]\n): currentStateSnapshotOrUnsubscribeToken is typeof UNSUBSCRIBE_TOKEN => currentStateSnapshotOrUnsubscribeToken === UNSUBSCRIBE_TOKEN;\n\nexport const createWatchlist = <T extends Record<string, any>>(entries: WatchListEntries<T>) => {\n    let lastStateSnapshot: Readonly<T> | undefined;\n\n    const currentState = createWatchListCurrentStateRecord(entries);\n    const subscriptionEventCallbacks = createWatchListSubscriptionEventCallbacks();\n    const subscriptionCallbacksWithReferenceCounting = new Map<WatchListSubscriptionCallback<T>, number>();\n    const unsubscribeCallbacks = new WeakMap<WatchListSubscriptionCallback<T>, (...args: any[]) => void>();\n\n    const _getCurrentStateSnapshot = () => Object.freeze({ ...currentState });\n    const _isWithoutSubscriptionCallbacks = () => subscriptionCallbacksWithReferenceCounting.size === 0;\n\n    const _notifySubscriptions = (unsubscribeToken?: typeof UNSUBSCRIBE_TOKEN) => {\n        if (_isWithoutSubscriptionCallbacks()) return;\n\n        if (isWatchlistUnsubscribeToken(unsubscribeToken)) {\n            const subscriptionCallbacks: WatchListSubscriptionCallback<T>[] = [];\n\n            subscriptionCallbacksWithReferenceCounting.forEach((referenceCount, callback) => {\n                subscriptionCallbacks.push(callback);\n                const unsubscribeCallback = unsubscribeCallbacks.get(callback)!;\n                while (referenceCount--) unsubscribeCallback?.();\n            });\n\n            subscriptionCallbacks.forEach(callback => callback(unsubscribeToken));\n            return true;\n        }\n\n        const currentStateSnapshot = lastStateSnapshot as Readonly<T>;\n\n        lastStateSnapshot = _getCurrentStateSnapshot();\n\n        for (const key of Object.keys(lastStateSnapshot) as (keyof T)[]) {\n            if (sameValue(lastStateSnapshot[key], currentStateSnapshot[key])) continue;\n            subscriptionCallbacksWithReferenceCounting.forEach((_, callback) => callback(lastStateSnapshot!));\n            return true;\n        }\n\n        return false;\n    };\n\n    const subscribe: WatchList<T>['subscribe'] = (subscriptionCallback?: WatchListSubscriptionCallback<T>) => {\n        if (!isFunction(subscriptionCallback)) return noop;\n\n        const unsubscribeCallback = getMappedValue(subscriptionCallback, unsubscribeCallbacks, () => {\n            let unsubscribe: (() => void) | undefined = () => {\n                const subscriptionCallbackReferenceCount = subscriptionCallbacksWithReferenceCounting.get(subscriptionCallback) || 0;\n\n                if (subscriptionCallbackReferenceCount === 1) {\n                    unsubscribe = undefined;\n                    subscriptionCallbacksWithReferenceCounting.delete(subscriptionCallback);\n                    unsubscribeCallbacks.delete(subscriptionCallback);\n\n                    if (_isWithoutSubscriptionCallbacks()) {\n                        lastStateSnapshot = undefined;\n                        subscriptionEventCallbacks.idle();\n                    }\n                } else if (subscriptionCallbackReferenceCount > 1) {\n                    subscriptionCallbacksWithReferenceCounting.set(subscriptionCallback, subscriptionCallbackReferenceCount - 1);\n                }\n            };\n\n            return () => {\n                unsubscribe?.();\n            };\n        })!;\n\n        const willResumeSubscriptions = _isWithoutSubscriptionCallbacks();\n\n        subscriptionCallbacksWithReferenceCounting.set(\n            subscriptionCallback,\n            (subscriptionCallbacksWithReferenceCounting.get(subscriptionCallback) || 0) + 1\n        );\n\n        if (willResumeSubscriptions) {\n            lastStateSnapshot = _getCurrentStateSnapshot();\n            subscriptionEventCallbacks.resume();\n        }\n\n        subscriptionCallback(lastStateSnapshot!);\n\n        return unsubscribeCallback;\n    };\n\n    return struct<WatchList<T>>({\n        idle: getter(_isWithoutSubscriptionCallbacks),\n        on: enumerable(subscriptionEventCallbacks),\n        cancelSubscriptions: enumerable(() => _notifySubscriptions(UNSUBSCRIBE_TOKEN) as true),\n        requestNotification: enumerable(() => _notifySubscriptions()),\n        snapshot: getter(() => lastStateSnapshot ?? _getCurrentStateSnapshot()),\n        subscribe: enumerable(subscribe),\n    });\n};\n\nexport default createWatchlist;\n","import { createInterval, Interval } from '../interval';\nimport { createWatchlist } from '../../reactive/watchlist';\nimport { enumerable, struct } from '../../../utils';\nimport type { Clock, ClockWatchListEntries } from './types';\n\nexport const clock = (() => {\n    let interval: Interval | undefined;\n\n    const { cancelSubscriptions, requestNotification, subscribe, on } = createWatchlist<ClockWatchListEntries>({\n        // Use wrapper function instead of direct reference to `Date.now`,\n        // otherwise, tests will fail since `Date.now` won't be mocked\n        now: () => Date.now(),\n    });\n\n    on.resume = () => {\n        interval = createInterval(requestNotification, 1000, false);\n    };\n\n    on.idle = () => {\n        interval?.cancel();\n        interval = undefined;\n    };\n\n    return struct<Clock>({\n        cancelSubscriptions: enumerable(cancelSubscriptions),\n        subscribe: enumerable(subscribe),\n    });\n})();\n\nexport default clock;\n","import { enumerable, isFunction, isUndefined, noop, struct } from '../../../utils';\nimport type { EmittableEvent, Emitter, EmitterEvents } from './types';\n\nexport const createEventEmitter = <Events extends EmitterEvents>() => {\n    const _eventTarget = new (class extends EventTarget {})();\n\n    const _emitEvent: Emitter<Events>['emit'] = (type, ...restArgs) => {\n        const [detail] = restArgs;\n\n        if (restArgs.length && isUndefined(detail)) {\n            // `undefined` has been explicitly passed as the detail of the event to be dispatched.\n            // Notify the consumer with a corresponding warning indicating possible resolutions.\n            // Warning can further be conditioned to only be available in development environment.\n            console.warn(\n                'Unexpected value `undefined` provided for event detail.\\n' +\n                    '\\tTurn off this warning by doing either of the following:\\n' +\n                    '\\t(1) omit the optional event detail parameter.\\n' +\n                    '\\t(2) explicitly pass `null` for the event detail parameter (instead of `undefined`).\\n'\n            );\n        }\n\n        const event = new CustomEvent(\n            type,\n            struct({\n                bubbles: enumerable(false),\n                cancelable: enumerable(false),\n                detail: enumerable(detail ?? null),\n            })\n        ) as EmittableEvent<Events, typeof type>;\n\n        return _eventTarget.dispatchEvent(event);\n    };\n\n    const _onEvent: Emitter<Events>['on'] = (type, listener) => {\n        if (!isFunction(listener)) return noop;\n\n        const _listener = (evt: Event) =>\n            listener.call(\n                null,\n                struct({\n                    detail: enumerable((evt as EmittableEvent<Events, typeof type>).detail),\n                    timeStamp: enumerable(evt.timeStamp),\n                    type: enumerable((evt as EmittableEvent<Events, typeof type>).type),\n                })\n            );\n\n        _eventTarget.addEventListener(type, _listener);\n\n        return () => _eventTarget.removeEventListener(type, _listener);\n    };\n\n    return struct<Emitter<Events>>({\n        emit: enumerable(_emitEvent),\n        on: enumerable(_onEvent),\n    });\n};\n\nexport default createEventEmitter;\n","import {\n    abortedSignal,\n    abortSignalForAny,\n    enumerable,\n    getter,\n    isAbortSignal,\n    isFunction,\n    noop,\n    parseDate,\n    struct,\n    tryResolve,\n} from '../../../../utils';\nimport clock from '../../../time/clock';\nimport { createAbortable } from '../../../async/abortable';\nimport { createPromisor } from '../../../async/promisor';\nimport { isWatchlistUnsubscribeToken } from '../../../reactive/watchlist';\nimport { createEventEmitter, Emitter } from '../../../reactive/eventEmitter';\nimport { INTERNAL_EVT_SESSION_DEADLINE } from './constants';\nimport type { SessionEventType, SessionSpecification } from '../types';\nimport type { SessionDeadline, SessionDeadlineEmitter } from './types';\n\nexport const createSessionDeadline = <T extends any>(emitter: Emitter<SessionEventType>, specification: SessionSpecification<T>) => {\n    let _deadlineSignal: AbortSignal | undefined;\n    let _deadlineTimestamp = Infinity;\n    let _refreshPromisorSignal: AbortSignal | undefined;\n    let _stopDeadlineClock: (() => void) | undefined;\n\n    const _deadlineAbortable = createAbortable();\n    const _deadlineEmitter: SessionDeadlineEmitter = createEventEmitter();\n\n    const _clearDeadline = () => {\n        _deadlineSignal?.removeEventListener('abort', _clearDeadline);\n        _deadlineTimestamp = Infinity;\n        _stopDeadlineClock?.();\n        _deadlineAbortable.refresh();\n        _deadlineEmitter.emit(INTERNAL_EVT_SESSION_DEADLINE);\n    };\n\n    const _refreshPromisor = createPromisor(async (signal, session: T | undefined) => {\n        _refreshPromisorSignal = signal;\n\n        const deadline = await tryResolve(() => {\n            const _deadline = specification.deadline;\n            return isFunction(_deadline) ? _deadline.call(specification, session, signal) : _deadline;\n        }).catch(noop as () => undefined);\n\n        if (_refreshPromisorSignal !== signal) return;\n\n        const _deadlines = (Array.isArray(deadline) ? deadline : [deadline]).filter(deadline => deadline || deadline === 0);\n\n        if (_deadlines.length > 0) {\n            let _deadlineElapsed = false;\n            let _signals = new Set<AbortSignal>();\n\n            for (const deadline of _deadlines) {\n                if (isAbortSignal(deadline)) {\n                    if ((_deadlineElapsed = deadline.aborted)) break;\n                    _signals.add(deadline);\n                } else {\n                    _deadlineTimestamp = Math.min(_deadlineTimestamp, parseDate(deadline) ?? Infinity);\n                    if ((_deadlineElapsed = _deadlineTimestamp <= Date.now())) break;\n                }\n            }\n\n            _deadlineElapsed ||= _signals.size < 1 && !Number.isFinite(_deadlineTimestamp);\n\n            if (!_deadlineElapsed) {\n                _deadlineSignal = abortSignalForAny([..._signals, _deadlineAbortable.signal]);\n                _deadlineSignal.addEventListener('abort', _clearDeadline);\n                _startDeadlineClock();\n            } else _deadlineSignal ??= abortedSignal();\n\n            // clear collections\n            _deadlines.length = 0;\n            _signals.clear();\n        } else _deadlineSignal = undefined;\n    });\n\n    const _startDeadlineClock = () => {\n        if (!Number.isFinite(_deadlineTimestamp)) return;\n\n        let unsubscribeClock = clock.subscribe(snapshotOrSignal => {\n            if (isWatchlistUnsubscribeToken(snapshotOrSignal)) return _clearDeadline();\n            if (snapshotOrSignal.now >= _deadlineTimestamp) _deadlineAbortable.abort();\n        });\n\n        _stopDeadlineClock = () => {\n            unsubscribeClock?.();\n            unsubscribeClock = _stopDeadlineClock = undefined!;\n        };\n    };\n\n    return struct<SessionDeadline<T>>({\n        elapse: enumerable(_deadlineAbortable.abort),\n        elapsed: getter(() => _deadlineSignal && _deadlineSignal.aborted),\n        on: enumerable(_deadlineEmitter.on),\n        refresh: enumerable(_refreshPromisor.bind(undefined)),\n        signal: getter(() => _deadlineAbortable.signal),\n    });\n};\n\nexport default createSessionDeadline;\n","import { createPromisor } from '../../../async/promisor';\nimport { createEventEmitter, Emitter } from '../../../reactive/eventEmitter';\nimport { abortSignalForAny, ALREADY_RESOLVED_PROMISE, enumerable, getter, isAbortSignal, isFunction, struct, tryResolve } from '../../../../utils';\nimport { INTERNAL_EVT_SESSION_READY, INTERNAL_EVT_SESSION_REFRESHING_END, INTERNAL_EVT_SESSION_REFRESHING_START } from './constants';\nimport { ERR_SESSION_FACTORY_UNAVAILABLE, ERR_SESSION_INVALID, ERR_SESSION_REFRESH_ABORTED, EVT_SESSION_EXPIRED } from '../constants';\nimport type { SessionRefresher, SessionRefresherContext, SessionRefresherEmitter } from './types';\nimport type { SessionEventType, SessionSpecification } from '../types';\n\nexport const createSessionRefresher = <T extends any>(emitter: Emitter<SessionEventType>, specification: SessionSpecification<T>) => {\n    let _refreshPending = false;\n    let _refreshingPromise: Promise<void> | undefined;\n    let _refreshingSignal: AbortSignal;\n    let _waitForRefreshingPromise = true;\n    let _session: T | undefined;\n\n    const _sessionPlaceholder = Symbol('<next_session>');\n    const _refresherEmitter: SessionRefresherEmitter = createEventEmitter();\n\n    function _assertSession(value: any): asserts value is T {\n        try {\n            specification.assert?.(value);\n        } catch (ex) {\n            throw ERR_SESSION_INVALID;\n        }\n    }\n\n    function _assertSessionFactory(value: any): asserts value is NonNullable<SessionSpecification<T>['onRefresh']> {\n        if (!isFunction(value)) throw ERR_SESSION_FACTORY_UNAVAILABLE;\n    }\n\n    const _refreshPromisor = createPromisor((promisorSignal, signal?: AbortSignal | null | undefined) => {\n        if (!_refreshingSignal) _refreshingSignal = promisorSignal;\n        else return _refreshSession(isAbortSignal(signal) ? abortSignalForAny([signal, promisorSignal]) : promisorSignal);\n    });\n\n    const _refreshSession = async (signal: AbortSignal) => {\n        let nextSession: any = _sessionPlaceholder;\n        try {\n            _refreshPending = false;\n            _refreshingSignal = signal;\n\n            if (_waitForRefreshingPromise) {\n                await (_refreshingPromise ??= (async () => {\n                    /////////////////////////////////////////////////////////////////\n                    // Should run only once for each batch of refresh attempts, at //\n                    // the start (the first refresh attempt) of the current batch. //\n                    /////////////////////////////////////////////////////////////////\n\n                    // Defer dispatching `EVT_SESSION_REFRESHING_START` event\n                    // until the next tick, thus guaranteeing consistent async behavior\n                    // for every `refreshPromisor()` call.\n                    await ALREADY_RESOLVED_PROMISE;\n\n                    // Subsequent refresh attempts need not await `_refreshingPromise` anymore\n                    _waitForRefreshingPromise = false;\n\n                    _refresherEmitter.emit(INTERNAL_EVT_SESSION_REFRESHING_START);\n                })());\n            }\n\n            _assertSessionFactory(specification.onRefresh);\n\n            nextSession = await tryResolve(() => specification.onRefresh(_session, signal)).finally(() => {\n                if (signal.aborted) throw ERR_SESSION_REFRESH_ABORTED;\n            });\n        } finally {\n            if (_refreshingSignal === signal) {\n                //////////////////////////////////////////////////////////////////\n                // These session refresh completion steps should run only once, //\n                // at the end of each batch of session refresh attempts (only   //\n                // for the last session refresh request).                       //\n                //////////////////////////////////////////////////////////////////\n\n                try {\n                    if (nextSession !== _sessionPlaceholder) {\n                        _assertSession(nextSession);\n                        _session = nextSession;\n                        _refresherEmitter.emit(INTERNAL_EVT_SESSION_READY);\n                    }\n                } finally {\n                    // Mark current batch of refresh attempts as completed\n                    _refreshingPromise = undefined;\n                    _waitForRefreshingPromise = true;\n                    _refresherEmitter.emit(INTERNAL_EVT_SESSION_REFRESHING_END);\n                }\n            }\n        }\n    };\n\n    emitter.on(EVT_SESSION_EXPIRED, () => (_refreshPending = !_refreshingPromise));\n\n    // Initial refresh promisor call to capture the refreshing signal\n    void _refreshPromisor();\n\n    return struct<SessionRefresher<T>>({\n        context: enumerable(\n            struct<SessionRefresherContext<T>>({\n                emitter: enumerable(emitter),\n                specification: enumerable(specification),\n            })\n        ),\n        on: enumerable(_refresherEmitter.on),\n        pending: getter(() => _refreshPending),\n        promise: getter(() => _refreshPromisor.promise),\n        refresh: enumerable(_refreshPromisor.bind(undefined)),\n        refreshing: getter(() => !!_refreshingPromise),\n        session: getter(() => _session),\n        signal: getter(() => _refreshingSignal),\n    });\n};\n\nexport default createSessionRefresher;\n","import {\n    ERR_SESSION_EXPIRED,\n    ERR_SESSION_HTTP_UNAVAILABLE,\n    EVT_SESSION_EXPIRED,\n    EVT_SESSION_READY,\n    EVT_SESSION_REFRESHED,\n    EVT_SESSION_REFRESHING_END,\n    EVT_SESSION_REFRESHING_START,\n} from './constants';\nimport {\n    INTERNAL_EVT_SESSION_DEADLINE,\n    INTERNAL_EVT_SESSION_READY,\n    INTERNAL_EVT_SESSION_REFRESHING_END,\n    INTERNAL_EVT_SESSION_REFRESHING_START,\n} from './internal/constants';\nimport { createSessionAutofresher } from './internal/autofresher';\nimport { createSessionDeadline } from './internal/deadline';\nimport { createSessionRefresher } from './internal/refresher';\nimport { createEventEmitter } from '../../reactive/eventEmitter';\nimport { isFunction, noop } from '../../../utils';\nimport type { SessionEventType, SessionSpecification } from './types';\n\nexport class SessionContext<T, HttpParams extends any[] = any[]> {\n    private _session: T | undefined;\n\n    private readonly _autofresh;\n    private readonly _deadline;\n    private readonly _refresher;\n\n    private readonly _eventEmitter = createEventEmitter<SessionEventType>();\n\n    public declare readonly http: typeof this._sessionHttp;\n    public declare readonly on: (typeof this._eventEmitter)['on'];\n    public declare readonly refresh: (typeof this._refresher)['refresh'];\n\n    constructor(private readonly _specification: SessionSpecification<T, HttpParams>) {\n        this._deadline = createSessionDeadline(this._eventEmitter, this._specification as SessionSpecification<T>);\n        this._refresher = createSessionRefresher(this._eventEmitter, this._specification as SessionSpecification<T>);\n        this._autofresh = createSessionAutofresher(this._refresher);\n\n        this._deadline.on(INTERNAL_EVT_SESSION_DEADLINE, () => this._eventEmitter.emit(EVT_SESSION_EXPIRED));\n        this._refresher.on(INTERNAL_EVT_SESSION_REFRESHING_START, () => this._eventEmitter.emit(EVT_SESSION_REFRESHING_START));\n        this._refresher.on(INTERNAL_EVT_SESSION_REFRESHING_END, () => this._eventEmitter.emit(EVT_SESSION_REFRESHING_END));\n\n        this._refresher.on(INTERNAL_EVT_SESSION_READY, () => {\n            this._session = this._refresher.session;\n            this._deadline.refresh(this._session).finally(() => this._eventEmitter.emit(EVT_SESSION_REFRESHED));\n            this._eventEmitter.emit(EVT_SESSION_READY);\n        });\n\n        this.http = this._sessionHttp.bind(this);\n        this.on = this._eventEmitter.on;\n        this.refresh = this._refresher.refresh;\n    }\n\n    get isExpired() {\n        return this._deadline.elapsed;\n    }\n\n    get refreshing() {\n        return this._refresher.refreshing;\n    }\n\n    private _assertSessionHttp(value: any): asserts value is NonNullable<SessionSpecification<T, HttpParams>['http']> {\n        if (!isFunction(value)) throw ERR_SESSION_HTTP_UNAVAILABLE;\n    }\n\n    private async _sessionHttp(\n        beforeHttp?: ((currentSession: T | undefined, signal: AbortSignal, ...args: HttpParams) => any) | null,\n        ...args: HttpParams\n    ) {\n        this._autofresh(true);\n        while (true) {\n            try {\n                // a no-op catch callback is used here (`noop`),\n                // to silence unnecessary unhandled promise rejection warnings\n                await this._refresher.promise.catch(noop);\n\n                const { signal } = this._deadline;\n\n                await beforeHttp?.(this._session, signal, ...args);\n                this._assertSessionHttp(this._specification.http);\n\n                return await this._specification.http(this._session, signal, ...args);\n            } catch (ex) {\n                if (ex !== ERR_SESSION_EXPIRED) throw ex;\n                if (this._refresher.pending) continue;\n                this._deadline.elapse();\n            }\n        }\n    }\n}\n\nexport default SessionContext;\n","export const API_VERSION = 'v1';\n","import { getErrorType, getRequestObject, getResponseContentType, getResponseDownloadFilename, handleFetchError, isAdyenErrorResponse } from './utils';\nimport { API_VERSION } from './constants';\nimport { normalizeLoadingContext, normalizeUrl } from '../utils';\nimport { HttpOptions } from './types';\nimport { onErrorHandler } from '../types';\n\nconst errorHandlerHelper = (errorHandler?: onErrorHandler, error?: any) => {\n    // Always throws\n    try {\n        errorHandler?.(error);\n    } catch {\n        throw error;\n    }\n};\n\nexport async function http<T>(options: HttpOptions): Promise<T> {\n    const { errorLevel, loadingContext = '', path } = options;\n    const request = getRequestObject(options);\n    const url = new URL(`${normalizeLoadingContext(loadingContext)}${API_VERSION}${normalizeUrl(path)}`);\n\n    if (options.params) {\n        options.params.forEach((value, param) => {\n            const decodedValue = decodeURIComponent(value);\n            if (decodedValue) url.searchParams.append(param, decodedValue);\n        });\n    }\n\n    return (async () => {\n        // Boolean flag:\n        // Indicates whether a resulting exception will be propagated to the caller (unhandled).\n        // If set to `true`, the resulting exception will be propagated (unhandled).\n        let errorPassThrough = false;\n\n        const error = { level: errorLevel } as Parameters<typeof handleFetchError>[0];\n\n        try {\n            // The `fetch()` could fail and thus throw an exception due to several causes,\n            // including but not limited to: fetch signal aborted, CORS errors, network errors\n            // (e.g device is offline or poor connection), etc.\n            const res = await fetch(url, request); // (!)\n\n            if (res.ok) {\n                if (res.status === 204) {\n                    // No content to process\n                    return null;\n                }\n\n                try {\n                    const contentType = getResponseContentType(res);\n\n                    //TODO: when backend is ready double check this logic\n                    switch (contentType) {\n                        case 'application/json':\n                            // This could throw an exception in one of these two cases:\n                            //   (1) if response has no body content\n                            //   (2) if response body content is not valid JSON\n                            return await res.json(); // (!!)\n                        default:\n                            const blob = await res.blob();\n                            const filename = getResponseDownloadFilename(res);\n                            return { blob, filename } as const;\n                    }\n                } catch (ex) {\n                    // If it does throw an exception, the exception will be propagated to the caller (unhandled).\n                    errorPassThrough = true;\n\n                    // Consider transforming the exception before propagating it to the caller,\n                    // thus making it easier for the caller to differentiate it from other errors.\n                    throw ex;\n                }\n            }\n\n            error.type = getErrorType(res.status);\n\n            // This could throw an exception in one of these two cases:\n            //   (1) if response has no body content\n            //   (2) if response body content is not valid JSON\n            //\n            // If it does throw an exception, the exception will be handled,\n            // since we have the `errorCode` (HTTP status code).\n            const response = await res.json(); // (!)\n\n            error.message = options.errorMessage || `Service at ${url} not available`;\n            error.errorCode = String(response.status);\n            error.requestId = response?.requestId;\n\n            if (isAdyenErrorResponse(response)) {\n                error.message = response.detail;\n                error.errorCode = response.errorCode;\n                error.status = response.status;\n            }\n            errorHandlerHelper(options.errorHandler, error);\n        } catch (ex) {\n            if (errorPassThrough) {\n                // Since the `errorPassThrough` flag is set to `true`,\n                // The exception will be propagated to the caller (unhandled)\n                errorHandlerHelper(options.errorHandler, ex);\n                throw ex;\n            }\n\n            errorHandlerHelper(options.errorHandler, ex);\n\n            error.message = options.errorMessage || `Call to ${url} failed. Error: ${ex}`;\n        }\n\n        // Handle the resulting error\n        // This could throw an exception, depending on the `errorLevel`\n        // If it does throw an exception, the exception will be propagated to the caller (unhandled).\n        handleFetchError(error); // (!!)\n    })();\n}\n\nexport function httpGet<T>(options: Omit<HttpOptions, 'method'>): Promise<T> {\n    return http<T>({ ...options, method: 'GET' });\n}\n\nexport function httpPost<T>(options: Omit<HttpOptions, 'method'>): Promise<T> {\n    return http<T>({ ...options, method: 'POST' });\n}\n","import { ERR_SESSION_EXPIRED, SessionSpecification } from '../../../primitives/context/session';\nimport { abortSignalForAny, enumerable, isAbortSignal, isPlainObject, isString, isUndefined } from '../../../utils';\nimport { http as _http } from '../../Http/http';\nimport { ErrorTypes } from '../../Http/utils';\nimport { AUTO_REFRESH, MAX_AGE_MS } from './constants';\nimport type { SessionObject, SessionRequest } from '../types';\nimport type { HttpOptions } from '../../Http/types';\nimport type { onErrorHandler } from '../../types';\n\ntype _AuthSessionSpecification = SessionSpecification<SessionObject, Parameters<typeof _http>>;\n\nexport class AuthSessionSpecification implements _AuthSessionSpecification {\n    public declare errorHandler: onErrorHandler | null;\n\n    public declare readonly autoRefresh: _AuthSessionSpecification['autoRefresh'];\n    public declare readonly onRefresh: _AuthSessionSpecification['onRefresh'];\n\n    constructor(public onSessionCreate?: SessionRequest) {\n        this._errorHandler = this._errorHandler.bind(this);\n\n        Object.defineProperties(this, {\n            autoRefresh: enumerable<typeof this.autoRefresh>(AUTO_REFRESH),\n            onRefresh: enumerable<typeof this.onRefresh>((_, signal) => this.onSessionCreate!(signal)),\n        });\n    }\n\n    public readonly assert: _AuthSessionSpecification['assert'] = maybeSession => {\n        if (isPlainObject(maybeSession)) {\n            const id = isString(maybeSession.id) ? maybeSession.id.trim() : undefined;\n            const token = isString(maybeSession.token) ? maybeSession.token.trim() : undefined;\n            if (id && token) return;\n        }\n        throw undefined;\n    };\n\n    public readonly deadline: _AuthSessionSpecification['deadline'] = session => {\n        const deadlines = [];\n        let issuedAt: number;\n        let expiresAt: number;\n\n        try {\n            ({ iat: issuedAt, exp: expiresAt } = JSON.parse(atob(session?.token.split('.')[1]!)));\n            deadlines.push(expiresAt);\n        } catch {\n            /* ignore malformed token errors */\n            issuedAt = Date.now();\n        }\n\n        if (!isUndefined(MAX_AGE_MS)) {\n            const issuedAtDate = new Date(issuedAt);\n            deadlines.push(issuedAtDate.setMilliseconds(issuedAtDate.getMilliseconds() + MAX_AGE_MS));\n        }\n\n        return deadlines;\n    };\n\n    public http: _AuthSessionSpecification['http'] = async (session, sessionSignal, httpOptions: HttpOptions) => {\n        const { headers, signal, ...restOptions } = httpOptions;\n        try {\n            const sessionHttpOptions = {\n                ...restOptions,\n                headers: {\n                    ...headers,\n                    ...(session && { Authorization: `Bearer ${session.token}` }),\n                },\n                errorHandler: this._errorHandler,\n                signal: isAbortSignal(signal) ? abortSignalForAny([sessionSignal, signal]) : sessionSignal,\n            };\n            return await _http(sessionHttpOptions);\n        } catch (ex: any) {\n            if (ex?.type === ErrorTypes.EXPIRED_TOKEN) throw ERR_SESSION_EXPIRED;\n            throw ex;\n        }\n    };\n\n    private _errorHandler(error: any) {\n        try {\n            if (this.errorHandler) this.errorHandler(error);\n        } catch {\n            /* Not interested in errors resulting from this instance's `errorHandler()` method */\n        }\n        throw error;\n    }\n}\n\nexport default AuthSessionSpecification;\n","import { enumerable, getter, struct } from '../../../utils';\nimport type { ErrorContainer } from './types';\n\nconst _NO_ERR: unique symbol = Symbol('<<NO_ERR>>');\n\nfunction _assertError<T>(error: any): asserts error is T {\n    /* istanbul ignore if -- @preserve */\n    if (error === _NO_ERR) {\n        // Code execution should never reach this block.\n        // If it does, then the consumer is doing something wrong.\n        // The consumer needs to call the `reset()` method instead.\n        throw new TypeError('Illegal error');\n    }\n}\n\nexport const createErrorContainer = <T = unknown>() => {\n    let _error: T | typeof _NO_ERR = _NO_ERR;\n\n    const _resetError = () => {\n        _error = _NO_ERR;\n    };\n\n    const _setError = (error: T) => {\n        _assertError<T>(error);\n        _error = error;\n    };\n\n    return struct<ErrorContainer<T>>({\n        error: getter(() => (_error === _NO_ERR ? undefined : _error)),\n        hasError: getter(() => _error !== _NO_ERR),\n        reset: enumerable(_resetError),\n        set: enumerable(_setError),\n    });\n};\n\nexport default createErrorContainer;\n","import SetupContext from './SetupContext';\nimport AuthSessionSpecification from './AuthSessionSpecification';\nimport { ERR_SESSION_REFRESH_ABORTED, EVT_SESSION_EXPIRED, EVT_SESSION_READY, SessionContext } from '../../../primitives/context/session';\nimport { createErrorContainer } from '../../../primitives/auxiliary/errorContainer';\nimport { createPromisor } from '../../../primitives/async/promisor';\nimport { createWatchlist } from '../../../primitives/reactive/watchlist';\nimport { boolOrFalse, boolOrTrue, isFunction } from '../../../utils';\n\nimport type { onErrorHandler } from '../../types';\n\nexport class AuthSession {\n    private _canSkipSessionRefresh = false;\n    private _refreshPromisorSignal: AbortSignal | undefined;\n    private _sessionIsFrozen = false;\n\n    private readonly _errorContainer = createErrorContainer();\n    private readonly _specification = new AuthSessionSpecification();\n    private readonly _sessionContext = new SessionContext(this._specification);\n    private readonly _setupContext = new SetupContext(this._sessionContext);\n\n    private readonly _refreshPromisor = createPromisor(async (signal, skipSessionRefreshIfPossible = false) => {\n        let authStateChanged = !this._refreshPromisorSignal;\n        let isLatestRefresh = this._refreshPromisorSignal === (this._refreshPromisorSignal = signal);\n        const onlySetupRefresh = boolOrFalse(skipSessionRefreshIfPossible) && this._canSkipSessionRefresh;\n\n        if (authStateChanged) {\n            authStateChanged = false;\n            this._errorContainer.reset();\n            this._onAuthStateChanged();\n        }\n\n        try {\n            await (onlySetupRefresh ? this._setupContext : this._sessionContext)\n                .refresh(signal)\n                .finally(() => (isLatestRefresh = this._refreshPromisorSignal === signal));\n        } catch (ex) {\n            if (!isLatestRefresh) return;\n            if (!signal.aborted && (onlySetupRefresh || ex !== ERR_SESSION_REFRESH_ABORTED)) this._errorContainer.set(ex);\n            authStateChanged = !onlySetupRefresh;\n        } finally {\n            if (authStateChanged || (onlySetupRefresh && isLatestRefresh)) {\n                this._refreshPromisorSignal = undefined;\n                this._onAuthStateChanged();\n            }\n        }\n    });\n\n    private readonly _watchlist = createWatchlist({\n        endpoints: () => this._setupContext.endpoints,\n        extraConfig: () => this._setupContext.extraConfig,\n        hasError: () => this._errorContainer.hasError,\n        isExpired: () => this._sessionContext.isExpired,\n        isFrozen: () => this._sessionIsFrozen,\n        refreshing: () => !!this._refreshPromisorSignal,\n    });\n\n    public readonly freeze = () => {\n        this._sessionIsFrozen = true;\n        this._watchlist.on.resume = undefined;\n        this._watchlist.cancelSubscriptions();\n    };\n\n    public readonly http = this._sessionContext.http.bind(this._sessionContext, null);\n    public readonly refresh = this._refresh.bind(this);\n    public readonly subscribe = this._watchlist.subscribe;\n\n    constructor() {\n        this._watchlist.on.resume = () => {\n            const unlisteners = [\n                this._sessionContext.on(EVT_SESSION_EXPIRED, () => {\n                    this._canSkipSessionRefresh = false;\n                    this._onAuthStateChanged();\n                }),\n\n                this._sessionContext.on(EVT_SESSION_READY, () => {\n                    void this._refresh((this._canSkipSessionRefresh = true));\n                }),\n            ];\n\n            this._watchlist.on.idle = () => {\n                this._watchlist.on.idle = undefined;\n                unlisteners.forEach(unlisten => unlisten());\n                unlisteners.length = 0;\n            };\n\n            if (!this.context.refreshing && boolOrTrue(this.context.isExpired)) {\n                this._refresh();\n            }\n        };\n    }\n\n    get context() {\n        return this._watchlist.snapshot;\n    }\n\n    set loadingContext(loadingContext: typeof this._setupContext.loadingContext) {\n        this._setupContext.loadingContext = loadingContext;\n    }\n\n    set errorHandler(errorHandler: onErrorHandler | null) {\n        this._specification.errorHandler = errorHandler;\n    }\n\n    set onSessionCreate(onSessionCreate: typeof this._specification.onSessionCreate) {\n        if (this._specification.onSessionCreate === onSessionCreate) return;\n\n        this._specification.onSessionCreate = onSessionCreate;\n        if (!this._refreshPromisorSignal) return;\n\n        if (isFunction(this._specification.onSessionCreate)) {\n            this._canSkipSessionRefresh = false;\n            this._refresh();\n        }\n    }\n\n    private _onAuthStateChanged() {\n        this._watchlist.requestNotification();\n    }\n\n    private _refresh(skipSessionRefreshIfPossible = false) {\n        void this._refreshPromisor(skipSessionRefreshIfPossible);\n    }\n}\n\nexport default AuthSession;\n","import type { KeyOfRecord, WithReplacedUnderscoreOrDash } from '../utils/types';\nimport EN_US from './en-US.json';\nconst _en_US = { ...EN_US };\n\ntype _SupportedLocale = KeyOfRecord<typeof all_locales>;\ntype _Translations = Translations | PromiseLike<Translations>;\n\nexport type CustomTranslations = Record<string, Translations>;\nexport type Locale = `${Lowercase<string>}-${Uppercase<string>}`;\nexport type SupportedLocale = WithReplacedUnderscoreOrDash<_SupportedLocale, '_', '-'>;\nexport type TranslationKey = KeyOfRecord<typeof _en_US>;\nexport type Translations = { [key in TranslationKey]?: string };\nexport type TranslationSource = _Translations | (() => _Translations);\n\nexport type TranslationSourceRecord = {\n    [K in _SupportedLocale]: {\n        [P in K]: TranslationSource;\n    };\n}[_SupportedLocale];\n\nexport type TranslationOptions = {\n    values?: Record<string, any> | ((placeholder: string, index: number, repetitionIndex: number) => any);\n    count?: number;\n};\n\nconst _getTranslations = (translationsPromise: Promise<{ default: Translations }>) =>\n    translationsPromise.then(({ default: translations }) => translations);\n\nexport const da_DK = { da_DK: () => _getTranslations(import('./da-DK.json')) };\nexport const de_DE = { de_DE: () => _getTranslations(import('./de-DE.json')) };\nexport const es_ES = { es_ES: () => _getTranslations(import('./es-ES.json')) };\nexport const fi_FI = { fi_FI: () => _getTranslations(import('./fi-FI.json')) };\nexport const fr_FR = { fr_FR: () => _getTranslations(import('./fr-FR.json')) };\nexport const it_IT = { it_IT: () => _getTranslations(import('./it-IT.json')) };\nexport const nl_NL = { nl_NL: () => _getTranslations(import('./nl-NL.json')) };\nexport const no_NO = { no_NO: () => _getTranslations(import('./no-NO.json')) };\nexport const pt_BR = { pt_BR: () => _getTranslations(import('./pt-BR.json')) };\nexport const sv_SE = { sv_SE: () => _getTranslations(import('./sv-SE.json')) };\n\nexport const en_US = { en_US: _en_US as Translations };\n\nexport const all_locales = {\n    ...da_DK,\n    ...de_DE,\n    ...en_US,\n    ...es_ES,\n    ...fi_FI,\n    ...fr_FR,\n    ...it_IT,\n    ...nl_NL,\n    ...no_NO,\n    ...pt_BR,\n    ...sv_SE,\n} as const;\n","import { all_locales } from '../../../translations';\nimport type { Locale, SupportedLocale, Translations, TranslationSource } from '../../../translations';\n\nexport const FALLBACK_LOCALE = 'en-US' as const;\nexport const DEFAULT_TRANSLATIONS: Translations = all_locales['en_US'];\nexport const DEFAULT_DATETIME_FORMAT = { year: 'numeric', month: '2-digit', day: '2-digit' } as Intl.DateTimeFormatOptions;\nexport const EXCLUDE_PROPS = ['constructor', 'i18n', 'watch', 'preferredTranslations'] as const;\n\nexport const getLocalesFromTranslationSourcesRecord = (sources: Record<Locale, TranslationSource>) =>\n    [\n        ...new Set(\n            Object.keys(sources)\n                .map(locale => locale.replace(/_/g, '-'))\n                .sort()\n        ),\n    ] as Locale[];\n\nexport const SUPPORTED_LOCALES = getLocalesFromTranslationSourcesRecord(all_locales) as SupportedLocale[];\n","/**\n * Currency Codes\n */\nconst CURRENCY_CODES = {\n    AED: 'د.إ',\n    AFN: '؋',\n    ALL: 'L',\n    ANG: 'ƒ',\n    AOA: 'Kz',\n    ARS: '$',\n    AUD: '$',\n    AWG: 'ƒ',\n    AZN: '₼',\n    BAM: 'KM',\n    BBD: '$',\n    BDT: '৳',\n    BGN: 'лв',\n    BHD: '.د.ب',\n    BIF: 'FBu',\n    BMD: '$',\n    BND: '$',\n    BOB: 'Bs.',\n    BRL: 'R$',\n    BSD: '$',\n    BTC: '฿',\n    BTN: 'Nu.',\n    BWP: 'P',\n    BYR: 'p.',\n    BYN: 'Br',\n    BZD: 'BZ$',\n    CAD: '$',\n    CDF: 'FC',\n    CHF: 'Fr.',\n    CLP: '$',\n    CNY: '¥',\n    COP: '$',\n    CRC: '₡',\n    CUC: '$',\n    CUP: '₱',\n    CVE: '$',\n    CZK: 'Kč',\n    DJF: 'Fdj',\n    DKK: 'kr',\n    DOP: 'RD$',\n    DZD: 'دج',\n    EEK: 'kr',\n    EGP: '£',\n    ERN: 'Nfk',\n    ETB: 'Br',\n    EUR: '€',\n    FJD: '$',\n    FKP: '£',\n    GBP: '£',\n    GEL: '₾',\n    GGP: '£',\n    GHC: '₵',\n    GHS: 'GH₵',\n    GIP: '£',\n    GMD: 'D',\n    GNF: 'FG',\n    GTQ: 'Q',\n    GYD: '$',\n    HKD: '$',\n    HNL: 'L',\n    HRK: 'kn',\n    HTG: 'G',\n    HUF: 'Ft',\n    IDR: 'Rp',\n    ILS: '₪',\n    IMP: '£',\n    INR: '₹',\n    IQD: 'ع.د',\n    IRR: '﷼',\n    ISK: 'kr',\n    JEP: '£',\n    JMD: 'J$',\n    JPY: '¥',\n    KES: 'KSh',\n    KGS: 'лв',\n    KHR: '៛',\n    KMF: 'CF',\n    KPW: '₩',\n    KRW: '₩',\n    KYD: '$',\n    KZT: '₸',\n    LAK: '₭',\n    LBP: '£',\n    LKR: '₨',\n    LRD: '$',\n    LSL: 'M',\n    LTL: 'Lt',\n    LVL: 'Ls',\n    MAD: 'MAD',\n    MDL: 'lei',\n    MGA: 'Ar',\n    MKD: 'ден',\n    MMK: 'K',\n    MNT: '₮',\n    MOP: 'MOP$',\n    MUR: '₨',\n    MVR: 'Rf',\n    MWK: 'MK',\n    MXN: '$',\n    MYR: 'RM',\n    MZN: 'MT',\n    NAD: '$',\n    NGN: '₦',\n    NIO: 'C$',\n    NOK: 'kr',\n    NPR: '₨',\n    NZD: '$',\n    OMR: '﷼',\n    PAB: 'B/.',\n    PEN: 'S/.',\n    PGK: 'K',\n    PHP: '₱',\n    PKR: '₨',\n    PLN: 'zł',\n    PYG: 'Gs',\n    QAR: '﷼',\n    RMB: '￥',\n    RON: 'lei',\n    RSD: 'Дин.',\n    RUB: '₽',\n    RWF: 'R₣',\n    SAR: '﷼',\n    SBD: '$',\n    SCR: '₨',\n    SDG: 'ج.س.',\n    SEK: 'kr',\n    SGD: '$',\n    SHP: '£',\n    SLL: 'Le',\n    SOS: 'S',\n    SRD: '$',\n    SSP: '£',\n    STD: 'Db',\n    SVC: '$',\n    SYP: '£',\n    SZL: 'E',\n    THB: '฿',\n    TJS: 'SM',\n    TMT: 'T',\n    TND: 'د.ت',\n    TOP: 'T$',\n    TRL: '₤',\n    TRY: '₺',\n    TTD: 'TT$',\n    TVD: '$',\n    TWD: 'NT$',\n    TZS: 'TSh',\n    UAH: '₴',\n    UGX: 'USh',\n    USD: '$',\n    UYU: '$U',\n    UZS: 'лв',\n    VEF: 'Bs',\n    VND: '₫',\n    VUV: 'VT',\n    WST: 'WS$',\n    XAF: 'FCFA',\n    XBT: 'Ƀ',\n    XCD: '$',\n    XOF: 'CFA',\n    XPF: '₣',\n    YER: '﷼',\n    ZAR: 'R',\n    ZWD: 'Z$',\n};\n\nexport default CURRENCY_CODES;\n","const CURRENCY_DECIMALS = {\n    // ZERO_DECIMAL_CURRENCIES\n    IDR: 1,\n    JPY: 1,\n    KRW: 1,\n    VND: 1,\n    BYR: 1,\n    CVE: 1,\n    DJF: 1,\n    GHC: 1,\n    GNF: 1,\n    KMF: 1,\n    PYG: 1,\n    RWF: 1,\n    UGX: 1,\n    VUV: 1,\n    XAF: 1,\n    XOF: 1,\n    XPF: 1,\n\n    // ONE_DECIMAL_CURRENCIES\n    MRO: 10,\n\n    // THREE_DECIMAL_CURRENCIES\n    BHD: 1000,\n    IQD: 1000,\n    JOD: 1000,\n    KWD: 1000,\n    OMR: 1000,\n    LYD: 1000,\n    TND: 1000,\n};\n\nexport default CURRENCY_DECIMALS;\n","import CURRENCY_CODES from '../constants/currency-codes';\nimport CURRENCY_DECIMALS from '../constants/currency-decimals';\nimport { CurrencyCode, CurrencyDecimalCode } from '../types';\n\n/**\n * @internal\n * @param currencyCode -\n * Get divider amount\n */\nexport const getDivider = (currencyCode: string): number => CURRENCY_DECIMALS[currencyCode as CurrencyDecimalCode] || 100;\n\n/**\n * @internal\n * @param currencyCode -\n * Returns whether a CURRENCY CODE is valid\n */\nexport const isValidCurrencyCode = (currencyCode: string): currencyCode is CurrencyCode => !!CURRENCY_CODES[currencyCode as CurrencyCode];\n\n/**\n * @internal\n */\nexport const getCurrencyCode = (currencyCode: string): string | null => (isValidCurrencyCode(currencyCode) ? CURRENCY_CODES[currencyCode] : null);\n\n/**\n * @internal\n */\nexport const getDecimalAmount = (amount: number | string, currencyCode: string): number => {\n    const divider = getDivider(currencyCode);\n    return parseInt(String(amount), 10) / divider;\n};\n\n/**\n * @internal\n */\nexport const getLocalisedAmount = (\n    amount: number,\n    locale: string,\n    currencyCode: string,\n    hideCurrency = false,\n    options: Intl.NumberFormatOptions = {}\n): string => {\n    const stringAmount = amount.toString(); // Changing amount to string to avoid 0-value from returning false\n    const decimalAmount = getDecimalAmount(stringAmount, currencyCode);\n\n    const formatterLocale = locale.replace('_', '-');\n    const formatterOptions = {\n        style: 'currency',\n        currency: currencyCode,\n        currencyDisplay: 'symbol',\n        ...options,\n    };\n\n    try {\n        return hideCurrency\n            ? formatAmountWithoutCurrency(formatterLocale, formatterOptions, decimalAmount)\n            : decimalAmount.toLocaleString(formatterLocale, formatterOptions);\n    } catch (e) {\n        return stringAmount;\n    }\n};\n\nexport const formatAmountWithoutCurrency = (locale: string, options: Intl.NumberFormatOptions, amount: number) => {\n    return Intl.NumberFormat(locale, options)\n        .formatToParts(amount)\n        .filter(p => p.type !== 'currency')\n        .reduce((s, p) => s + p.value, '')\n        .trim();\n};\n\n/**\n * @internal\n */\nexport const getLocalisedPercentage = (percent = 0, locale: string): string | null => {\n    const decimalPercent = percent / 100 / 100;\n    const localeOptions = {\n        style: 'percent',\n        maximumFractionDigits: 2,\n    };\n\n    try {\n        return decimalPercent.toLocaleString(locale, localeOptions);\n    } catch (e) {\n        return null;\n    }\n};\n","import type { RestampContext } from './types';\n\nexport const REGEX_TZ_OFFSET = /GMT(?:[-+](?:0?\\d|1[0-4])(?::?[0-5]\\d)?)?$/;\n\nexport const { BASE_FORMAT_OPTIONS, BASE_LOCALE, SYSTEM_TIMEZONE, SYSTEM_TIMEZONE_FORMATTER } = (() => {\n    const BASE_LOCALE = 'en-US';\n    const DIGITS_2 = '2-digit';\n    const NUMERIC = 'numeric';\n    const SHORT = 'short';\n    const TZ_LONG = 'longOffset';\n    const FRACTIONAL_SECOND_DIGITS = 3;\n\n    const BASE_FORMAT_OPTIONS: Readonly<Intl.DateTimeFormatOptions> = Object.freeze({\n        year: NUMERIC,\n        month: SHORT,\n        day: NUMERIC,\n        hour: DIGITS_2,\n        minute: DIGITS_2,\n        second: DIGITS_2,\n        fractionalSecondDigits: FRACTIONAL_SECOND_DIGITS,\n        timeZoneName: TZ_LONG, // should not be changed — needed for the tz offsets regexp\n    });\n\n    let SYSTEM_TIMEZONE: RestampContext['TIMEZONE'];\n    let SYSTEM_TIMEZONE_FORMATTER: RestampContext['formatter'];\n\n    try {\n        SYSTEM_TIMEZONE_FORMATTER = new Intl.DateTimeFormat(BASE_LOCALE, BASE_FORMAT_OPTIONS);\n        SYSTEM_TIMEZONE = SYSTEM_TIMEZONE_FORMATTER.resolvedOptions().timeZone;\n    } catch (ex) {\n        SYSTEM_TIMEZONE = undefined;\n    }\n\n    return { BASE_FORMAT_OPTIONS, BASE_LOCALE, SYSTEM_TIMEZONE, SYSTEM_TIMEZONE_FORMATTER };\n})();\n","import { EMPTY_ARRAY, mod } from '../../../../utils';\nimport { REGEX_TZ_OFFSET, SYSTEM_TIMEZONE_FORMATTER } from './constants';\nimport type { RestampContext, Restamper, RestampResult } from './types';\n\nconst REGEX_GMT_OFFSET_UNWANTED_SUBSTRINGS = /\\+(?=-)|([+-]00:00)/g;\nconst REGEX_TZ_SINGLE_DIGIT_OFFSET = /(^\\D?)(\\d)$/;\n\nexport const computeTimezoneOffsetInMinutes = ([offsetHours, offsetMinutes]: readonly [number, number]) =>\n    (Math.abs(offsetHours * 60) + offsetMinutes) * (offsetHours < 0 ? -1 : 1);\n\nexport const computeTimezoneOffsetsFromMinutes = (timezoneOffsetInMinutes: number) =>\n    Object.freeze([\n        Math.floor(timezoneOffsetInMinutes / 60), // offset hours\n        mod(timezoneOffsetInMinutes, 60), // offset minutes\n    ] as const);\n\nexport const parseTimezoneOffset = (offset: string | number) => parseInt(offset as string, 10) || 0;\n\n/**\n * @param timezoneOffset {number} The minute offsets relative to GMT (Greenwich Mean Time).\n * @returns {string} The GMT suffixed string for the specified offsets in the format GMT(+|-)[HH]:[MM], or just GMT (if [HH]:[MM] is 00:00).\n */\nexport const getGMTSuffixForTimezoneOffset = (timezoneOffset: RestampResult['offset']): string => {\n    const offsets = computeTimezoneOffsetsFromMinutes(timezoneOffset);\n    const offsetString = offsets.map(offset => `${offset}`.replace(REGEX_TZ_SINGLE_DIGIT_OFFSET, '$10$2')).join(':');\n    return `GMT+${offsetString}`.replace(REGEX_GMT_OFFSET_UNWANTED_SUBSTRINGS, '');\n};\n\n/**\n * @param timezoneOffset {number} The minute offsets of the timezone relative to GMT (Greenwich Mean Time).\n * @param timezoneOffsetRelativeToSystem {number} The minute offsets of the timezone relative to the system timezone.\n * @returns {string} The system timezone GMT suffixed string in the format GMT(+|-)[HH]:[MM], or just GMT (if [HH]:[MM] is 00:00).\n */\nexport const getSystemTimezoneGMTSuffixFromTimezoneOffsets = (\n    timezoneOffset: RestampResult['offset'],\n    timezoneOffsetRelativeToSystem: RestampResult['offset']\n): string => getGMTSuffixForTimezoneOffset(timezoneOffset - timezoneOffsetRelativeToSystem);\n\nexport const getTimezoneOffsetFromFormattedDateString = (date?: string): number => {\n    const offsets = date?.match(REGEX_TZ_OFFSET)?.[0].replace('GMT', '').split(':', 2).map(parseTimezoneOffset) ?? (EMPTY_ARRAY as readonly number[]);\n    return computeTimezoneOffsetInMinutes(offsets.concat(0, 0).slice(0, 2) as [number, number]);\n};\n\nexport const getTimezoneOffsetForTimestamp = (timestamp: number, timezoneFormatter: RestampContext['formatter'] = SYSTEM_TIMEZONE_FORMATTER) => {\n    const systemOffset = getTimezoneOffsetFromFormattedDateString(SYSTEM_TIMEZONE_FORMATTER?.format(timestamp));\n    const timezoneOffset = getTimezoneOffsetFromFormattedDateString(timezoneFormatter?.format(timestamp));\n    return timezoneOffset - systemOffset;\n};\n\nconst restamp = <R extends Restamper = Restamper>(restamper: R, time: Parameters<R>[0], direction: -1 | 1 = 1) => {\n    const { offset, timestamp } = restamper(time);\n    return timestamp - offset * direction * 60000;\n};\n\nexport const systemToTimezone = <R extends Restamper = Restamper>(restamper: R, time: Parameters<R>[0]) => restamp(restamper, time, 1);\nexport const timezoneToSystem = <R extends Restamper = Restamper>(restamper: R, time: Parameters<R>[0]) => restamp(restamper, time, -1);\n","import { isNullish, isUndefined, struct } from '../../../../utils';\nimport { BASE_FORMAT_OPTIONS, BASE_LOCALE, SYSTEM_TIMEZONE, SYSTEM_TIMEZONE_FORMATTER } from './constants';\nimport type { RestampContext, RestamperWithTimezone, RestampResult } from './types';\nimport { getTimezoneOffsetForTimestamp } from './utils';\n\nconst restamper = (() => {\n    let getTimeZone: (this: RestampContext) => RestampContext['TIMEZONE'];\n    let setTimeZone: (this: RestampContext, timezone?: RestampContext['TIMEZONE'] | null) => void;\n\n    if (!isUndefined(SYSTEM_TIMEZONE)) {\n        getTimeZone = function () {\n            return this.TIMEZONE;\n        };\n\n        setTimeZone = function (timeZone) {\n            if (!isNullish(timeZone)) {\n                try {\n                    const nextFormatter = new Intl.DateTimeFormat(BASE_LOCALE, { ...BASE_FORMAT_OPTIONS, timeZone });\n                    const nextTimeZone = nextFormatter.resolvedOptions().timeZone;\n\n                    if (this.TIMEZONE === nextTimeZone) return;\n\n                    this.TIMEZONE = nextTimeZone;\n                    this.formatter = nextFormatter;\n                } catch (ex) {\n                    // Silently ignore invalid timezone updates\n                    if (import.meta.env.DEV) console.error(ex);\n                }\n            } else {\n                this.TIMEZONE = SYSTEM_TIMEZONE;\n                this.formatter = SYSTEM_TIMEZONE_FORMATTER;\n            }\n        };\n    }\n\n    function restamp(this: RestampContext, ...args: [(string | number | Date)?]): RestampResult {\n        if (args.length === 0) return restamp.call(this, Date.now());\n\n        const time = args[0];\n        const timestamp = new Date(time as NonNullable<typeof time>).getTime();\n        const formatter = this.formatter ?? SYSTEM_TIMEZONE_FORMATTER;\n\n        return Object.freeze({\n            formatted: formatter?.format(timestamp),\n            offset: getTimezoneOffsetForTimestamp(timestamp, formatter),\n            timestamp,\n        } as const);\n    }\n\n    return () => {\n        const context = { TIMEZONE: SYSTEM_TIMEZONE } as RestampContext;\n        const set = setTimeZone?.bind(context);\n\n        const tz = struct({\n            current: { get: getTimeZone?.bind(context), set },\n            system: { value: SYSTEM_TIMEZONE },\n        });\n\n        return Object.defineProperties(restamp.bind(context) as RestamperWithTimezone, {\n            tz: { get: () => tz, set },\n        });\n    };\n})();\n\nexport default restamper;\n","import { JSX } from 'preact';\nimport { DEFAULT_TRANSLATIONS, FALLBACK_LOCALE } from './constants/localization';\nimport { asPlainObject, EMPTY_OBJECT, hasOwnProperty, isFunction } from '../../utils';\nimport type { CustomTranslations, Locale, TranslationOptions, Translations, TranslationSource } from '../../translations';\n\nconst DEFAULT_TRANSLATION_OPTIONS: TranslationOptions = { values: EMPTY_OBJECT, count: 0 } as const;\nconst LOCALE_FORMAT_REGEX = /^[a-z]{2}-[A-Z]{2}$/;\n\n/**\n * Convert to ISO 639-1\n */\nexport const toTwoLetterCode = (locale: string) => locale.substring(0, 2).toLowerCase();\n\n/**\n * Matches a string with one of the locales\n * @param locale -\n * @param supportedLocales -\n\n * @example\n * matchLocale('en-GB');\n * // 'en-US'\n */\nexport function matchLocale(locale: string, supportedLocales: Locale[]): Locale | null {\n    if (!locale) return null;\n    const twoLetterCode = toTwoLetterCode(locale);\n    return supportedLocales.find(supportedLocale => toTwoLetterCode(supportedLocale) === twoLetterCode) || null;\n}\n\n/**\n * Returns a locale with the proper format\n * @param locale -\n *\n * @example\n * formatLocale('En_us');\n * // 'en-US'\n */\nexport function formatLocale(locale: string): Locale | null {\n    const localeString = locale.replace('_', '-');\n\n    // If it's already formatted, return the locale\n    if (LOCALE_FORMAT_REGEX.test(localeString)) return localeString as Locale;\n\n    // Split the string in two\n    const [languageCode, countryCode] = localeString.split('-');\n\n    // If the locale or the country codes are missing, return null\n    if (!languageCode || !countryCode) return null;\n\n    // Ensure correct format and join the strings back together\n    const fullLocale = `${languageCode.toLowerCase()}-${countryCode.toUpperCase()}` as Locale;\n\n    return fullLocale.length === 5 ? fullLocale : null;\n}\n\n/**\n * Checks the locale format.\n * Also checks if it's on the locales array.\n * If it is not, tries to match it with one.\n * @param locale -\n * @param supportedLocales -\n */\nexport function parseLocale(locale: string, supportedLocales: Locale[]): Locale | null {\n    const trimmedLocale = locale.trim();\n\n    if (!trimmedLocale || trimmedLocale.length < 1 || trimmedLocale.length > 5) return FALLBACK_LOCALE;\n\n    const formattedLocale = formatLocale(trimmedLocale);\n\n    if (formattedLocale && supportedLocales.includes(formattedLocale)) return formattedLocale;\n\n    return matchLocale(formattedLocale ?? trimmedLocale, supportedLocales);\n}\n\n/**\n * Formats the locales inside the customTranslations object against the supportedLocales\n * @param customTranslations -\n * @param supportedLocales -\n */\nexport function formatCustomTranslations(customTranslations: CustomTranslations = EMPTY_OBJECT, supportedLocales: Locale[]): CustomTranslations {\n    if (customTranslations === EMPTY_OBJECT) return customTranslations;\n\n    return (Object.keys(customTranslations) as Extract<keyof CustomTranslations, string>[]).reduce((translations, locale) => {\n        const formattedLocale = formatLocale(locale) || parseLocale(locale, supportedLocales);\n        if (formattedLocale && customTranslations[locale]) {\n            translations[formattedLocale] = customTranslations[locale]!;\n        }\n        return translations;\n    }, {} as CustomTranslations);\n}\n\nconst replaceTranslationValues = (translation: string, values?: TranslationOptions['values']) => {\n    if (isFunction(values)) {\n        const repetitions = new Map<string, number>();\n        let placeholderIndex = -1;\n\n        return translation.replace(/%{(\\w+)}/g, (_, placeholder) => {\n            let repetitionIndex = repetitions.get(placeholder) ?? -1;\n            const replacementValue = values(placeholder, ++placeholderIndex, ++repetitionIndex) ?? '';\n            repetitions.set(placeholder, repetitionIndex);\n            return replacementValue;\n        });\n    }\n\n    return translation.replace(/%{(\\w+)}/g, (_, placeholder) => values?.[placeholder] ?? '');\n};\n\n/**\n * Returns a translation string by key\n * @param translations -\n * @param key -\n * @param options -\n *\n * @internal\n */\nexport const getTranslation = (translations: Record<string, string>, key: string, options = DEFAULT_TRANSLATION_OPTIONS): string | null => {\n    const count = options.count ?? 0;\n    const countKey = `${key}__${count}`;\n\n    // Find {key}__{count} translation key\n    if (hasOwnProperty(translations, countKey) && translations[countKey]) {\n        return replaceTranslationValues(translations[countKey] as string, options.values);\n    }\n\n    const pluralKey = `${key}__plural`;\n\n    // Find {key}__plural translation key, if `count` greater than 1 (e.g. myTranslation__plural)\n    if (hasOwnProperty(translations, pluralKey) && count > 1 && translations[pluralKey]) {\n        return replaceTranslationValues(translations[pluralKey] as string, options.values);\n    }\n\n    // Find {key} translation key (e.g. myTranslation)\n    if (hasOwnProperty(translations, key) && translations[key]) {\n        return replaceTranslationValues(translations[key] as string, options.values);\n    }\n\n    return null;\n};\n\n/**\n * Returns an array with all the locales\n * @param locale - The locale the user wants to use\n * @param translations -\n * @param customTranslations -\n */\nexport const loadTranslations = async (\n    locale: string,\n    translations: { [locale: Locale]: TranslationSource } = EMPTY_OBJECT,\n    customTranslations: CustomTranslations = EMPTY_OBJECT\n): Promise<Translations> => {\n    // Match locale to one of our available locales (e.g. es-AR => es-ES)\n    const localeToLoad = parseLocale(locale, Object.keys(translations) as Locale[]) || FALLBACK_LOCALE;\n    const loadedLocale = translations[localeToLoad as keyof typeof translations];\n\n    return {\n        ...DEFAULT_TRANSLATIONS, // Default en-US translations (in case any other translation file is missing any key)\n        ...((await (isFunction(loadedLocale) ? loadedLocale() : loadedLocale)) ?? EMPTY_OBJECT), // Merge with our locale file of the locale they are loading\n        ...asPlainObject(customTranslations?.[locale]), // Merge with their custom locales if available\n    };\n};\n\n/**\n * Injects JSX elements in a middle of a translation and returns a JSX array\n * The input string should use %# as the token to know where to insert the component\n * @param translation - Translation string\n * @param renderFunctions - An array function that renders JSX elements\n */\nexport const interpolateElement = (translation: string, renderFunctions: Array<(translation: string) => JSX.Element>) => {\n    // splits by regex group, it guarantees that it only splits with 2 tokens (%#)\n    const matches = translation.split(/%#(.*?)%#/gm);\n    // the map will create an array of JSX / string elements, this syntax in accepted in JSX/react to render elements\n    return matches.map((term, index) => {\n        // math to get the index of the renderFunction that should be used\n        // since we split on tokens, that means the index of the render function is half of the index of the string\n        const indexInFunctionArray = Math.floor(index / 2);\n        return index % 2 === 0 ? term : renderFunctions[indexInFunctionArray]?.(term);\n    });\n};\n","import Localization from './Localization';\nimport { isFunction, struct } from '../../utils';\nimport { formatLocale, loadTranslations, parseLocale } from './utils';\nimport { EXCLUDE_PROPS, FALLBACK_LOCALE } from './constants/localization';\nimport type { CustomTranslations, Locale } from '../../translations';\n\nexport function createTranslationsLoader(this: Localization) {\n    type TranslationsLoader = {\n        load: (customTranslations?: CustomTranslations) => ReturnType<typeof loadTranslations>;\n        get locale(): Locale;\n        set locale(locale: string);\n        supportedLocales: Locale[];\n    };\n\n    let _locale = this.locale;\n    let _preferredLocale: string = _locale;\n    let _supportedLocales: TranslationsLoader['supportedLocales'] = [...this.supportedLocales];\n\n    return struct<TranslationsLoader>({\n        load: { value: (customTranslations?: CustomTranslations) => loadTranslations(_locale, this.preferredTranslations, customTranslations) },\n        locale: {\n            get: () => _locale,\n            set: (locale: string) => {\n                _preferredLocale = locale;\n                _locale = formatLocale(locale) || parseLocale(locale, _supportedLocales) || FALLBACK_LOCALE;\n            },\n        },\n        supportedLocales: {\n            get: () => _supportedLocales,\n            set(this: TranslationsLoader, supportedLocales: Locale[]) {\n                _supportedLocales = supportedLocales;\n                this.locale = _preferredLocale;\n            },\n        },\n    });\n}\n\nexport function getLocalizationProxyDescriptors(this: Localization) {\n    const descriptors = {} as any;\n\n    for (const [prop, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(Localization.prototype))) {\n        if (EXCLUDE_PROPS.includes(prop as (typeof EXCLUDE_PROPS)[number])) continue;\n\n        if (isFunction(descriptor.get)) {\n            descriptors[prop] = {\n                get: descriptor.get.bind(this),\n                ...(prop === 'timezone' && { set: descriptor.set?.bind(this) }),\n            };\n        } else if (isFunction(descriptor.value)) {\n            descriptors[prop] = { value: descriptor.value.bind(this) };\n        } else {\n            descriptors[prop] = { get: () => this[prop as keyof Localization] };\n        }\n    }\n\n    return descriptors as { [K in keyof Localization['i18n']]: PropertyDescriptor };\n}\n","import {\n    DEFAULT_DATETIME_FORMAT,\n    DEFAULT_TRANSLATIONS,\n    EXCLUDE_PROPS,\n    FALLBACK_LOCALE,\n    getLocalesFromTranslationSourcesRecord,\n    SUPPORTED_LOCALES,\n} from './constants/localization';\nimport type {\n    CustomTranslations,\n    Locale,\n    TranslationKey,\n    TranslationOptions,\n    Translations,\n    TranslationSource,\n    TranslationSourceRecord,\n} from '../../translations';\nimport { en_US } from '../../translations';\nimport { getLocalisedAmount } from './amount/amount-util';\nimport restamper, { RestamperWithTimezone } from './datetime/restamper';\nimport { createTranslationsLoader, getLocalizationProxyDescriptors } from './localization-utils';\nimport { formatCustomTranslations, getTranslation, toTwoLetterCode } from './utils';\nimport { createWatchlist } from '../../primitives/reactive/watchlist';\nimport { ALREADY_RESOLVED_PROMISE, isNull, isNullish, isUndefined, noop, struct } from '../../utils';\n\nexport default class Localization {\n    #locale: Locale = FALLBACK_LOCALE;\n    #languageCode: string = toTwoLetterCode(this.#locale);\n    #availableLocales: Readonly<Locale[]> = [FALLBACK_LOCALE] as const;\n    #supportedLocales: Readonly<Locale[]> = this.#availableLocales;\n\n    #customTranslations?: CustomTranslations;\n    #translations: Translations = DEFAULT_TRANSLATIONS;\n    #translationsLoader = createTranslationsLoader.call(this);\n\n    #ready: Promise<void> = ALREADY_RESOLVED_PROMISE;\n    #currentRefresh?: Promise<void>;\n    #markRefreshAsDone?: () => void;\n    #refreshWatchlist = createWatchlist({ timestamp: () => performance.now() });\n    #restamp: RestamperWithTimezone = restamper();\n\n    private watch = this.#refreshWatchlist.subscribe.bind(undefined);\n    public i18n: Omit<Localization, (typeof EXCLUDE_PROPS)[number]> = struct(getLocalizationProxyDescriptors.call(this));\n    public preferredTranslations?: Readonly<{ [k: Locale]: TranslationSource }>;\n\n    constructor(locale: string = FALLBACK_LOCALE, availableTranslations?: TranslationSourceRecord[]) {\n        this.watch(noop);\n\n        this.preferredTranslations = Object.freeze(\n            availableTranslations?.reduce((records, curr) => ({ ...records, ...curr }), en_US) ?? { ...en_US }\n        );\n\n        this.#availableLocales = getLocalesFromTranslationSourcesRecord(this.preferredTranslations);\n        this.locale = locale;\n    }\n\n    get customTranslations(): CustomTranslations {\n        return this.#customTranslations ?? ({} as CustomTranslations);\n    }\n\n    set customTranslations(customTranslations: CustomTranslations | undefined | null) {\n        let translations: CustomTranslations | undefined = undefined;\n        let supportedLocales: Locale[] = [...this.#availableLocales];\n\n        if (!isNullish(customTranslations)) {\n            translations = formatCustomTranslations(customTranslations, SUPPORTED_LOCALES);\n            const localesFromCustomTranslations = Object.keys(translations) as Locale[];\n\n            // default locales + validated custom locales\n            supportedLocales = [...supportedLocales, ...localesFromCustomTranslations]\n                .sort()\n                .filter((locale, index, locales) => locales.indexOf(locale) === index);\n        }\n\n        this.#translationsLoader.supportedLocales = supportedLocales;\n        this.#refreshTranslations(translations);\n    }\n\n    get languageCode() {\n        return this.#languageCode;\n    }\n\n    get lastRefreshTimestamp() {\n        return this.#refreshWatchlist.snapshot.timestamp;\n    }\n\n    get locale(): Locale {\n        return this.#locale;\n    }\n\n    set locale(locale: string | undefined | null) {\n        if (!isNullish(locale)) {\n            this.#translationsLoader.locale = locale;\n            if (this.#locale === this.#translationsLoader.locale) return;\n            this.#refreshTranslations(this.#customTranslations);\n        } else this.locale = FALLBACK_LOCALE;\n    }\n\n    get ready(): Promise<void> {\n        return this.#ready;\n    }\n\n    get supportedLocales(): Readonly<Locale[]> {\n        return this.#supportedLocales;\n    }\n\n    get timezone(): RestamperWithTimezone['tz']['current'] {\n        return this.#restamp.tz.current;\n    }\n\n    set timezone(timezone: string | undefined | null) {\n        this.#restamp.tz = timezone;\n    }\n\n    #refreshTranslations(customTranslations?: CustomTranslations) {\n        if (isUndefined(this.#markRefreshAsDone)) {\n            this.#ready = new Promise<void>(resolve => {\n                this.#markRefreshAsDone = () => {\n                    resolve(this.#currentRefresh);\n                    this.#currentRefresh = this.#markRefreshAsDone = undefined;\n                };\n            });\n        }\n\n        const currentRefreshDone = () => {\n            if (this.#currentRefresh === currentRefresh) this.#markRefreshAsDone?.();\n        };\n\n        const currentRefresh = (this.#currentRefresh = (async () => {\n            this.#translations = await this.#translationsLoader.load(customTranslations);\n            this.#locale = this.#translationsLoader.locale;\n            this.#supportedLocales = Object.freeze(this.#translationsLoader.supportedLocales);\n            this.#customTranslations = customTranslations;\n            this.#languageCode = toTwoLetterCode(this.#locale);\n            this.#refreshWatchlist.requestNotification();\n        })());\n\n        currentRefresh.then(currentRefreshDone).catch(reason => {\n            currentRefreshDone();\n            // handle current refresh promise rejection\n            // throw reason;\n            console.error(reason);\n        });\n    }\n\n    /**\n     * Returns a translated string from a key in the current {@link Localization.locale}\n     * @param key - Translation key\n     * @param options - Translation options\n     * @returns Translated string\n     */\n    get(key: TranslationKey, options?: TranslationOptions): string {\n        const translation = getTranslation(this.#translations, key, options);\n        return isNull(translation) ? key : translation;\n    }\n\n    /**\n     * Returns a boolean that checks if the translation key exists in the current {@link Localization.locale}\n     * @param key - Translation key\n     * @param options - Translation options\n     * @returns boolean\n     */\n    has(key: string, options?: TranslationOptions): key is TranslationKey {\n        const translation = getTranslation(this.#translations, key, options);\n        return !!translation;\n    }\n\n    /**\n     * Returns a localized string for an amount\n     * @param amount - Amount to be converted\n     * @param currencyCode - Currency code of the amount\n     * @param options - Options for String.prototype.toLocaleString\n     */\n    amount(amount: number, currencyCode: string, options?: Record<string, any>): string {\n        const { hideCurrency, ...restOfOptions } = options || {};\n        const localisedAmount = getLocalisedAmount(amount, this.#locale, currencyCode, hideCurrency, {\n            ...restOfOptions,\n            currencyDisplay: 'symbol',\n            signDisplay: 'never',\n        });\n\n        return amount < 0 ? `- ${localisedAmount}` : localisedAmount;\n    }\n\n    /**\n     * Returns a localized string for a date\n     * @param date - Date to be localized\n     * @param options - Options for {@link Date.toLocaleDateString}\n     */\n    date(date: number | string | Date, options: Intl.DateTimeFormatOptions = {}) {\n        const dateOptions = { ...DEFAULT_DATETIME_FORMAT, timeZone: this.#restamp.tz.current, ...options };\n        return new Date(date).toLocaleDateString(this.#locale, dateOptions);\n    }\n\n    /**\n     * Returns a localized string for a full date\n     * @param date - Date to be localized\n     */\n    fullDate(date: number | string | Date) {\n        return this.date(date, {\n            month: 'short',\n            hour: '2-digit',\n            minute: '2-digit',\n            second: '2-digit',\n            hour12: false,\n        });\n    }\n}\n","import type { CoreOptions, onErrorHandler } from './types';\nimport { FALLBACK_ENV, resolveEnvironment } from './utils';\nimport { AuthSession } from './ConfigContext/session/AuthSession';\nimport BaseElement from '../components/external/BaseElement';\nimport Localization, { TranslationSourceRecord } from './Localization';\nimport { EMPTY_OBJECT } from '../utils';\n\nclass Core<AvailableTranslations extends TranslationSourceRecord[] = [], CustomTranslations extends {} = {}> {\n    public static readonly version = process.env.VITE_VERSION!;\n\n    public components: BaseElement<any>[] = [];\n    public options: CoreOptions<AvailableTranslations, CustomTranslations>;\n\n    public localization: Localization;\n    public loadingContext: string;\n    public session = new AuthSession();\n    public onError?: onErrorHandler;\n\n    // [TODO]: Change the error handling strategy.\n\n    constructor(options: CoreOptions<AvailableTranslations, CustomTranslations>) {\n        this.options = { environment: FALLBACK_ENV, ...options };\n\n        this.localization = new Localization(options.locale, options.availableTranslations);\n        this.loadingContext = process.env.VITE_LOADING_CONTEXT ? process.env.VITE_LOADING_CONTEXT : resolveEnvironment(this.options.environment);\n        this.setOptions(options);\n    }\n\n    async initialize(): Promise<this> {\n        return Promise.all([this.localization.ready]).then(() => this);\n    }\n\n    /**\n     * Updates global configurations, resets the internal state and remounts each element.\n     * @param options - props to update\n     * @returns this - the element instance\n     */\n    public update = async (options: Partial<typeof this.options> = EMPTY_OBJECT): Promise<this> => {\n        this.setOptions(options);\n        await this.initialize();\n\n        this.components.forEach(component => {\n            if (component.props.core === this) {\n                // Update each component under this instance\n                component.update(this.getPropsForComponent(this.options));\n            }\n        });\n\n        return this;\n    };\n\n    /**\n     * Remove the reference of a component\n     * @param component - reference to the component to be removed\n     * @returns this - the element instance\n     */\n    public remove = (component: BaseElement<any>): this => {\n        this.components = this.components.filter(c => c._id !== component._id);\n        component.unmount();\n        return this;\n    };\n\n    /**\n     * @internal\n     * Register components in core to be able to update them all at once\n     */\n    public registerComponent = (component: BaseElement<any>) => {\n        if (component.props.core === this) {\n            this.components.push(component);\n        }\n    };\n\n    /**\n     * @internal\n     * Enhances the config object passed when AdyenPlatformExperience is initialised (environment, clientKey, etc...)\n     * (Re)Initializes core properties & processes (i18n, etc...)\n     * @param options - the config object passed when AdyenPlatformExperience is initialised\n     * @returns this\n     */\n    private setOptions = (options: Partial<typeof this.options>): this => {\n        this.options = { ...this.options, ...options };\n\n        this.localization.locale = this.options?.locale;\n        this.localization.customTranslations = this.options?.translations;\n\n        this.session.loadingContext = this.loadingContext;\n        this.session.onSessionCreate = this.options.onSessionCreate;\n\n        return this;\n    };\n\n    /**\n     * @internal\n     * @param options - options that will be merged to the global Checkout props\n     * @returns props for a new UIElement\n     */\n    private getPropsForComponent(options: any) {\n        return { ...options };\n    }\n}\n\nexport default Core;\n","var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,d=Array.isArray;function w(n,l){for(var u in l)n[u]=l[u];return n}function _(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function g(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function C(n,l){if(null==l)return n.__?C(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?C(n):null}function S(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return S(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!P.__r++||r!==l.debounceRendering)&&((r=l.debounceRendering)||o)(P)}function P(){var n,u,t,r,o,f,c,s;for(i.sort(e);n=i.shift();)n.__d&&(u=i.length,r=void 0,f=(o=(t=n).__v).__e,c=[],s=[],t.__P&&((r=w({},o)).__v=o.__v+1,l.vnode&&l.vnode(r),j(t.__P,r,o,t.__n,t.__P.namespaceURI,32&o.__u?[f]:null,c,null==f?C(o):f,!!(32&o.__u),s),r.__v=o.__v,r.__.__k[r.__i]=r,z(c,r,s),r.__e!=f&&S(r)),i.length>u&&i.sort(e));P.__r=0}function $(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,d,w,_,g=t&&t.__k||v,m=l.length;for(f=I(u,l,g,f,m),a=0;a<m;a++)null!=(y=u.__k[a])&&(h=-1===y.__i?p:g[y.__i]||p,y.__i=a,_=j(n,y,h,i,r,o,e,f,c,s),d=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&V(h.ref,null,y),s.push(y.ref,y.__c||d,y)),null==w&&null!=d&&(w=d),4&y.__u||h.__k===y.__k?f=A(y,f,n):\"function\"==typeof y.type&&void 0!==_?f=_:d&&(f=d.nextSibling),y.__u&=-7);return u.__e=w,f}function I(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(f=r+h,(o=n.__k[r]=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?m(null,o,null,null,null):d(o)?m(k,{children:o},null,null,null):void 0===o.constructor&&o.__b>0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!==(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null===e.__v?(-1==c&&h--,\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=C(e)),q(e,e));return t}function A(n,l,u){var t,i;if(\"function\"==typeof n.type){for(t=n.__k,i=0;t&&i<t.length;i++)t[i]&&(t[i].__=n,l=A(t[i],l,u));return l}n.__e!=l&&(l&&n.type&&!u.contains(l)&&(l=C(n)),u.insertBefore(n.__e,l||null),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(d(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o=n.key,e=n.type,f=l[u];if(null===f||f&&o==f.key&&e===f.type&&0==(2&f.__u))return u;if(t>(null!=f&&0==(2&f.__u)?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;){if(i>=0){if((f=l[i])&&0==(2&f.__u)&&o==f.key&&e===f.type)return i;i--}if(r<l.length){if((f=l[r])&&0==(2&f.__u)&&o==f.key&&e===f.type)return r;r++}}return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function F(n,l,u,t,i){var r;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]===t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),l=l.toLowerCase()in n||\"onFocusOut\"==l||\"onFocusIn\"==l?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function O(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function j(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,g,m,b,C,S,M,P,I,A,H,L,T,F=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof F)try{if(b=u.props,C=\"prototype\"in F&&F.prototype.render,S=(a=F.contextType)&&i[a.__c],M=a?S?S.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(C?u.__c=h=new F(b,M):(u.__c=h=new x(b,M),h.constructor=F,h.render=B),S&&S.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),C&&null==h.__s&&(h.__s=h.state),C&&null!=F.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=w({},h.__s)),w(h.__s,F.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)C&&null==F.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),C&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(C&&null==F.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),!h.__e&&(null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)||u.__v==t.__v)){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),P=0;P<h._sb.length;P++)h.__h.push(h._sb[P]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),C&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,g)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,I=l.__r,A=0,C){for(h.state=h.__s,h.__d=!1,I&&I(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,I&&I(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=w(w({},i),h.getChildContext())),C&&!p&&null!=h.getSnapshotBeforeUpdate&&(g=h.getSnapshotBeforeUpdate(v,y)),f=$(n,d(L=null!=a&&a.type===k&&null==a.key?a.props.children:a)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else for(T=o.length;T--;)_(o[T]);else u.__e=t.__e,u.__k=t.__k;l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=N(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n,u,t){for(var i=0;i<t.length;i++)V(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function N(u,t,i,r,o,e,f,c,s){var a,h,v,y,w,g,m,b=i.props,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((w=e[a])&&\"setAttribute\"in w==!!x&&(x?w.localName==x:3==w.nodeType)){u=w,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null===x)b===k||c&&u.data===k||(u.data=k);else{if(e=e&&n.call(u.childNodes),b=i.props||p,!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(w=u.attributes[a]).name]=w.value;for(a in b)if(w=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=w;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;F(u,a,null,w,o)}for(a in k)w=k[a],\"children\"==a?y=w:\"dangerouslySetInnerHTML\"==a?h=w:\"value\"==a?g=w:\"checked\"==a?m=w:c&&\"function\"!=typeof w||b[a]===w||F(u,a,w,b[a],o);if(h)c||v&&(h.__html===v.__html||h.__html===u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),$(u,d(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&C(i,0),c,s),null!=e)for(a=e.length;a--;)_(e[a]);c||(a=\"value\",\"progress\"==x&&null==g?u.removeAttribute(\"value\"):void 0!==g&&(g!==u[a]||\"progress\"==x&&!g||\"option\"==x&&g!==b[a])&&F(u,a,g,b[a],o),a=\"checked\",void 0!==m&&m!==u[a]&&F(u,a,m,b[a],o))}return u}function V(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function q(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!==n.__e||V(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&q(i[r],u,t||\"function\"!=typeof n.type);t||_(n.__e),n.__c=n.__=n.__e=void 0}function B(n,l,u){return this.constructor(n,u)}function D(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],j(t,u=(!r&&i||t).__k=g(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),z(e,u,f)}function E(n,l){D(n,l,E)}function G(l,u,t){var i,r,o,e,f=w({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&void 0!==e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function J(n,l){var u={__c:l=\"__cC\"+h++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=w({},this.state),\"function\"==typeof n&&(n=n(w({},u),this.props)),n&&w(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},P.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=O(!1),a=O(!0),h=0;export{x as Component,k as Fragment,G as cloneElement,J as createContext,g as createElement,b as createRef,g as h,E as hydrate,t as isValidElement,l as options,D as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\"&quot;\";break;case 38:f=\"&amp;\";break;case 60:f=\"&lt;\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+i+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function d(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function h(n){return o=1,p(D,n)}function p(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.u=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=d(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__H.__h.push(i))}function _(n,u){var i=d(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function T(n,r){var u=d(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=d(t++,10),i=h();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.i=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.i=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,p as useReducer,A as useRef,h as useState};\n//# sourceMappingURL=hooks.module.js.map\n","export const DEFAULT_TYPOGRAPHY_CLASSNAME = 'adyen-pe-typography';\n","export enum TypographyVariant {\n    CAPTION = 'caption',\n    BODY = 'body',\n    SUBTITLE = 'subtitle',\n    TITLE = 'title',\n}\n\nexport enum TypographyModifier {\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 TypographyElement {\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","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as c,createRef as l,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useLayoutEffect as s,useEffect as h,useCallback as v,useContext as d,useDebugValue as p,useId as m,useImperativeHandle as y,useMemo as _,useReducer as b,useRef as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function E(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n,t){var e=t(),r=a({t:{__:e,u:t}}),u=r[0].t,o=r[1];return s(function(){u.__=e,u.u=t,x(u)&&o({t:u})},[n,e,t]),h(function(){return x(u)&&o({t:u}),n(function(){x(u)&&o({t:u})})},[n]),e}function x(n){var t,e,r=n.u,u=n.__;try{var o=r();return!((t=u)===(e=o)&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}}function R(n){n()}function w(n){return n}function k(){return[!1,R]}var I=s;function N(n,t){this.props=n,this.context=t}function M(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:E(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u}(N.prototype=new n).isPureReactComponent=!0,N.prototype.shouldComponentUpdate=function(n,t){return E(this.props,n)||E(this.state,t)};var T=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),T&&T(n)};var A=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function D(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=A,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var L=function(n,t){return null==n?null:r(r(n).map(t))},O={map:L,forEach:L,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},F=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);F(n,t,e,r)};var U=e.unmount;function V(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return V(n,t,e)})),n}function W(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return W(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function P(){this.__u=0,this.o=null,this.__b=null}function j(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function z(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function B(){this.i=null,this.l=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),U&&U(n)},(P.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.o&&(r.o=[]),r.o.push(e);var u=j(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(c):c())};e.__R=i;var c=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=W(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},P.prototype.componentWillUnmount=function(){this.o=[]},P.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=V(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var H=function(n,t,e){if(++e[1]===e[0]&&n.l.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.l.size))for(e=n.i;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.i=e=e[2]}};function Z(n){return this.getChildContext=function(){return n.context},n.children}function Y(n){var e=this,r=n.h;e.componentWillUnmount=function(){o(null,e.v),e.v=null,e.h=null},e.h&&e.h!==r&&e.componentWillUnmount(),e.v||(e.h=r,e.v={nodeType:1,parentNode:r,childNodes:[],contains:function(){return!0},appendChild:function(n){this.childNodes.push(n),e.h.appendChild(n)},insertBefore:function(n,t){this.childNodes.push(n),e.h.insertBefore(n,t)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.h.removeChild(n)}}),o(t(Z,{context:e.context},n.__v),e.v)}function $(n,e){var r=t(Y,{__v:n,h:e});return r.containerInfo=e,r}(B.prototype=new n).__a=function(n){var t=this,e=j(t.__v),r=t.l.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),H(t,n,r)):u()};e?e(o):o()}},B.prototype.render=function(n){this.i=null,this.l=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.l.set(t[e],this.i=[1,0,this.i]);return n.children},B.prototype.componentDidUpdate=B.prototype.componentDidMount=function(){var n=this;this.l.forEach(function(t,e){H(n,e,t)})};var q=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,G=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,J=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,K=/[A-Z0-9]/g,Q=\"undefined\"!=typeof document,X=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function nn(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function tn(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var en=e.event;function rn(){}function un(){return this.cancelBubble}function on(){return this.defaultPrevented}e.event=function(n){return en&&(n=en(n)),n.persist=rn,n.isPropagationStopped=un,n.isDefaultPrevented=on,n.nativeEvent=n};var cn,ln={enumerable:!1,configurable:!0,get:function(){return this.class}},fn=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={},o=-1===e.indexOf(\"-\");for(var i in t){var c=t[i];if(!(\"value\"===i&&\"defaultValue\"in t&&null==c||Q&&\"children\"===i&&\"noscript\"===e||\"class\"===i||\"className\"===i)){var l=i.toLowerCase();\"defaultValue\"===i&&\"value\"in t&&null==t.value?i=\"value\":\"download\"===i&&!0===c?c=\"\":\"translate\"===l&&\"no\"===c?c=!1:\"o\"===l[0]&&\"n\"===l[1]?\"ondoubleclick\"===l?i=\"ondblclick\":\"onchange\"!==l||\"input\"!==e&&\"textarea\"!==e||X(t.type)?\"onfocus\"===l?i=\"onfocusin\":\"onblur\"===l?i=\"onfocusout\":J.test(i)&&(i=l):l=i=\"oninput\":o&&G.test(i)?i=i.replace(K,\"-$&\").toLowerCase():null===c&&(c=void 0),\"oninput\"===l&&u[i=l]&&(i=\"oninputCapture\"),u[i]=c}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",ln)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=q,fn&&fn(n)};var an=e.__r;e.__r=function(n){an&&an(n),cn=n.__c};var sn=e.diffed;e.diffed=function(n){sn&&sn(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),cn=null};var hn={ReactCurrentDispatcher:{current:{readContext:function(n){return cn.__n[n.__c].props.value},useCallback:v,useContext:d,useDebugValue:p,useDeferredValue:w,useEffect:h,useId:m,useImperativeHandle:y,useInsertionEffect:I,useLayoutEffect:s,useMemo:_,useReducer:b,useRef:S,useState:a,useSyncExternalStore:C,useTransition:k}}},vn=\"18.3.1\";function dn(n){return t.bind(null,n)}function pn(n){return!!n&&n.$$typeof===q}function mn(n){return pn(n)&&n.type===u}function yn(n){return!!n&&!!n.displayName&&(\"string\"==typeof n.displayName||n.displayName instanceof String)&&n.displayName.startsWith(\"Memo(\")}function _n(n){return pn(n)?f.apply(null,arguments):n}function bn(n){return!!n.__k&&(o(null,n),!0)}function Sn(n){return n&&(n.base||1===n.nodeType&&n)||null}var gn=function(n,t){return n(t)},En=function(n,t){return n(t)},Cn=u,xn=pn,Rn={useState:a,useId:m,useReducer:b,useEffect:h,useLayoutEffect:s,useInsertionEffect:I,useTransition:k,useDeferredValue:w,useSyncExternalStore:C,startTransition:R,useRef:S,useImperativeHandle:y,useMemo:_,useCallback:v,useContext:d,useDebugValue:p,version:\"18.3.1\",Children:O,render:nn,hydrate:tn,unmountComponentAtNode:bn,createPortal:$,createElement:t,createContext:c,createFactory:dn,cloneElement:_n,createRef:l,Fragment:u,isValidElement:pn,isElement:xn,isFragment:mn,isMemo:yn,findDOMNode:Sn,Component:n,PureComponent:N,memo:M,forwardRef:D,flushSync:En,unstable_batchedUpdates:gn,StrictMode:Cn,Suspense:P,SuspenseList:B,lazy:z,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:hn};export{O as Children,N as PureComponent,Cn as StrictMode,P as Suspense,B as SuspenseList,hn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,_n as cloneElement,dn as createFactory,$ as createPortal,Rn as default,Sn as findDOMNode,En as flushSync,D as forwardRef,tn as hydrate,xn as isElement,mn as isFragment,yn as isMemo,pn as isValidElement,z as lazy,M as memo,nn as render,R as startTransition,bn as unmountComponentAtNode,gn as unstable_batchedUpdates,w as useDeferredValue,I as useInsertionEffect,C as useSyncExternalStore,k as useTransition,vn as version};\n//# sourceMappingURL=compat.module.js.map\n","import { DEFAULT_TYPOGRAPHY_CLASSNAME } from './constants';\nimport cx from 'classnames';\nimport { useMemo } from 'preact/hooks';\nimport { TypographyElement, TypographyModifier, TypographyVariant } from './types';\nimport { memo, PropsWithChildren } from 'preact/compat';\nimport './Typography.scss';\nimport { ComponentChild } from 'preact';\n\ninterface TypographyProps {\n    el?: TypographyElement;\n    stronger?: boolean;\n    strongest?: boolean;\n    variant: TypographyVariant;\n    medium?: boolean;\n    large?: boolean;\n    wide?: boolean;\n    children: ComponentChild;\n    className?: string;\n    testId?: string;\n}\n\nfunction Typography({ el, className, stronger, strongest, variant, medium, large, testId, wide, children }: PropsWithChildren<TypographyProps>) {\n    const Tag = el || 'p';\n    const conditionalClasses = useMemo(\n        () => ({\n            // Caption\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.CAPTION}`]: variant === TypographyVariant.CAPTION,\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.CAPTION}-${TypographyModifier.WIDE}`]:\n                variant === TypographyVariant.CAPTION && wide,\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.CAPTION}-${TypographyModifier.STRONGER}`]:\n                variant === TypographyVariant.CAPTION && stronger,\n\n            // Body\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.BODY}`]: variant === TypographyVariant.BODY,\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.BODY}-${TypographyModifier.WIDE}`]: variant === TypographyVariant.BODY && wide,\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.BODY}-${TypographyModifier.STRONGER}`]:\n                variant === TypographyVariant.BODY && stronger,\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.BODY}-${TypographyModifier.STRONGEST}`]:\n                variant === TypographyVariant.BODY && strongest,\n\n            // Subtitle\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.SUBTITLE}`]: variant === TypographyVariant.SUBTITLE,\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.SUBTITLE}-${TypographyModifier.STRONGER}`]:\n                variant === TypographyVariant.SUBTITLE && stronger,\n\n            // Title\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.TITLE}`]: variant === TypographyVariant.TITLE && !medium && !large,\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.TITLE}-${TypographyModifier.MEDIUM}`]:\n                variant === TypographyVariant.TITLE && medium,\n            [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.TITLE}-${TypographyModifier.LARGE}`]: variant === TypographyVariant.TITLE && large,\n        }),\n        [variant, wide, stronger, medium, large, strongest]\n    );\n\n    return (\n        <Tag className={cx([`${DEFAULT_TYPOGRAPHY_CLASSNAME}`, conditionalClasses, className])} data-testid={testId}>\n            {children}\n        </Tag>\n    );\n}\n\nexport default memo(Typography);\n","import { createContext } from 'preact';\nimport { noop } from '../../utils';\nimport { CommonPropsTypes, CoreProviderProps } from './types';\nimport Localization from '../Localization';\n\nexport const CoreContext = createContext<CoreProviderProps & { i18n: Localization['i18n'] }>({\n    i18n: new Localization().i18n,\n    loadingContext: '',\n    commonProps: {} as CommonPropsTypes,\n    updateCore: noop,\n    componentRef: { current: null },\n});\n","import { useContext } from 'preact/hooks';\nimport { CoreContext } from './CoreContext';\n\nconst useCoreContext = () => useContext(CoreContext);\n\nexport default useCoreContext;\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='223'%20height='169'%20fill='none'%20viewBox='0%200%20223%20169'%3e%3cpath%20fill='%23EAB1A0'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M36.6%20112.2c.6-.1%201-.7%201-1.3l-.9-8.7%202.1%206.6c.2.6.8.8%201.4.7.6-.1%201-.7.8-1.2l-1.3-6.8%202.9-4.8-5.9-5.5-7.6%209%205%204.7%201%206.2c0%20.7.7%201.2%201.5%201Z'/%3e%3cpath%20fill='%23EAB1A0'%20d='M31.7%20103.6c.3.4%201.2%206.6%201.5%209%200%20.5.6%201%201.1%201h.3c.7%200%201.2-.6%201.1-1.3l-.7-9.1'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M31.7%20103.6c.3.4%201.2%206.6%201.5%209%200%20.5.6%201%201.1%201h.3c.7%200%201.2-.6%201.1-1.3l-.7-9.1'/%3e%3cpath%20fill='%23EAB1A0'%20d='M30.4%2099.3v13.1c0%20.6.5%201.1%201.2%201.1.5%200%201-.4%201-1l1.2-9.3'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M30.4%2099.3v13.1c0%20.6.5%201.1%201.2%201.1.5%200%201-.4%201-1l1.2-9.3'/%3e%3cpath%20fill='%23EAB1A0'%20d='M35.8%2092s-6.5%204.8-6.6%206.2a995%20995%200%200%200-.9%2010.3c1.5%200%202.8-1%203.2-2.3.6-2.1%201.2-4.9%201-5.1-.1-.3%205-.7%205.8-3.8'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M35.8%2092s-6.5%204.8-6.6%206.2a995%20995%200%200%200-.9%2010.3c1.5%200%202.8-1%203.2-2.3.6-2.1%201.2-4.9%201-5.1-.1-.3%205-.7%205.8-3.8'/%3e%3cpath%20fill='%233300C2'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M95.3%2046.7S78%2053%2070.5%2059.4c-7.6%206.4-36.1%2031.2-36.1%2031.2l11.2%2011%2038-27.3c3.5-2.6%2011.7-27.6%2011.7-27.6Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='m45.6%20101.7-11.2-11%2029.8-2.5-18.6%2013.5ZM186.4%2090.4h-7.1v25.3h7.1V90.4ZM215.6%2066.7h-7.2V92h7.2V66.7ZM173.7%20167.8h-7l8.3-44h7l-8.3%2044ZM26.3%20167.8h-7l8.3-44h7l-8.3%2044ZM209.2%20167.8h-7l-8.3-44h7l8.3%2044ZM68%2091.1h-7v25h7V91Z'/%3e%3cpath%20fill='%23F3F6F9'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M208.4%2066.7H39V92h169.3V66.7Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M208.4%20123.4v-7.6H39v7.6h169.5Z'/%3e%3cpath%20fill='%23F3F6F9'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M193.7%20123.4V116H15.3v7.5h178.4Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M77.4%20167.8h-7l-8.3-44h7l8.3%2044ZM42.2%20150.4l-.8%203h16.2l.7-3.1h-16ZM80.1%20150.3l1.4%203h15.1l-1-3H80Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='m97.8%20115.9-28.4.1-7.7%2034.7h-23l9.5-40.6a18%2018%200%200%201%2016.7-12l54-.5-.5%202.6c-2%209.1-10.6%2015.6-20.6%2015.7Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M110.7%20115.9H85.5L99%20150.3h-25L62.9%20117c-3-9%203.6-18.6%2013.6-19.4h.8l54.5-1.3-.6%203.9a20.7%2020.7%200%200%201-20.4%2015.7Z'/%3e%3cpath%20fill='%23F3F6F9'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M57.6%20153.4H41.4l-.8%202.7-16.8%204.2c-2%20.7-3.7%202.1-4.7%203.9H55l2.6-10.8ZM96.6%20153.4H81.5l1.3%202.9-15.2%204c-2%20.7-3.6%202.1-4.6%203.8h37.3l-3.7-10.7Z'/%3e%3cpath%20fill='%23fff'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='m54%20168%201-3.8H19a8%208%200%200%200-1%203.8h36ZM101.7%20168l-1.3-3.8H63a8%208%200%200%200-1%203.8h39.6Z'/%3e%3cpath%20fill='%233300C2'%20d='M86.9%2059.6c.3%2020-5.4%2037.7-5.4%2037.7l50.3-.1s4.7-18.7%202-31c-2.6-12.3-16.2-21.8-22.5-22.3-6.2-.6-20.6%204.6-20.6%204.6'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M86.9%2059.6c.3%2020-5.4%2037.7-5.4%2037.7l50.3-.1s4.7-18.7%202-31c-2.6-12.3-16.2-21.8-22.5-22.3-6.2-.6-20.6%204.6-20.6%204.6'/%3e%3cpath%20fill='%23fff'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M96.7%2047.1s.6%205.5%202%209c1.2%203.6%202%207.3%202%207.3s6.8-17.5%208.3-19.6c0%200-8%206.5-12.3%203.3Z'/%3e%3cpath%20fill='%23EAB1A0'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='m105.8%2038.3%203.1%205.5s-4%206.8-8.6%206.7c-4.7%200-3.5-5.6-3.5-5.6l9-6.6Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='m101.8%2044.7-4%204.9-1-2.5%205-2.4ZM97%2083.1H85.6l-3.3-17.9h11.1l3.4%2017.9Z'/%3e%3cpath%20fill='%23EAB1A0'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M101.6%2082.6c-1-1.6-2.3-3-3.2-4.5-1.2-2-1.7-4.5-2.3-6.8-2.5-.7-2.6%204-2.4%206%20.3%201.8%201%203.7%201%203.7-2-.4-10.4-4.7-10.4-4.7.3%200-1.4%202.3-.7%203.3l1%201.3s-.7%201.3-.7%202c-.1%201.2%201.1%202.2%201.1%202.2l.1%202.3c.2.8%201.5%201.5%201.5%201.5s0%201.4.7%201.8c.7.3%2011.2%201.2%2015.8%201.4%200-1.6.5-3.4.3-5%200-1.5-1-3.2-1.8-4.5Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M111.7%2021.9c.4.8-.2%201.8-1%202.4-.7.5-1.7.7-2.6%201%201.2-.4%202.6-.2%203.8.2.4.2.8.4%201%20.7.3.5.1%201.2-.2%201.6-.3.4-.8.8-1.3%201-1.4.7-3%201.2-4.5%201.3%201%200%201.5%201.1%201.1%201.9-.4.8-1.3%201.2-2.2%201.4-1.5.4-3.3.4-4.5-.4-.7-.4-1.1-1-1.5-1.5a7%207%200%200%201-.2-7.4%209%209%200%200%201%205.7-3.8c1.7-.3%205.6-.3%206.4%201.6Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M68.7%2025c.5%201.7%203%202%204.6%201.3-1.2.2-2.4.4-3.3%201.2-1%20.9-1.1%202.4-.1%203%20.3.3.8.4%201.3.4a9%209%200%200%200%204.6-1c-1%20.6-2%201.9-1.3%203%20.6.9%202.2.8%203.2.2%201-.6%202-1.5%203-1.8-.6.4-1.3.8-1.5%201.5-.3.6%200%201.6.6%201.7.5.1%201%200%201.4-.2%201.1-.6%202.2-1.3%203-2.3-1%20.3-.8%201.9.1%202.3%201%20.4%202%200%203-.6a8.5%208.5%200%200%200%202.8-3c-.3.4%200%201.1.6%201.5%201%20.6%202.4.7%203.5.3a9%209%200%200%200%203-2%207%207%200%200%200%202-2.4c.6-1.4.2-3-.7-4.2A10%2010%200%200%200%2095%2021c-4.3-2.3-9.8-3-14.6-1.7a6.6%206.6%200%200%200-6.8-2c-.7.3-1.5.7-1.8%201.4-.5%201.2.5%202.3%201.6%202.8-2%200-5.4%201-4.6%203.5Z'/%3e%3cpath%20fill='%23EAB1A0'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M80.6%2027.7c.7-.7%2010.6-6.8%2010.6-6.8l10.2%203.8%204.8%209.1v.2c.9%207.4-3.1%2010.5-8.8%2013.2-5%202.4-16-1.6-16.9-19.4%200%200%200%200%200%200Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M70.3%2017.3c-.3-.9-.3-1.8.2-2.4.5-.5%201.2-.7%201.9-.6.7%200%201.3.4%201.9.7-.9-.8-.3-2.3.8-2.7%201.1-.3%202.4.1%203.2%201%20.5.4%201%204.3%201.5%204.4.6.1%201%200%201.5-.2%202.4-.9%205-1.5%207.4-1.8%201.9-.3%203.8-.4%205.6-.2%202.1.3%204.2%201%206.2%201.9v0c3.4.2%207.4%2010.5%206.4%2010.8-.9.2.2%200-.1.1-2.1.7-6.4-.7-7.6-1.1a12%2012%200%200%201-3.1-2.1c-1.8-1.4-4-2.2-6.2-2.6l-1.4-.2c-1.8.7-3.8%201-5.8.7-.7%200-1.5-.3-2-.8-.3-.4-.3-1.2.2-1.5-1%20.5-2.1.7-3.3.7-.7%200-1.6%200-2.2-.7-.6-.5-.5-1.6.3-1.8-1.3.3-2.8.7-4%200-.7-.5-1.2-.7-1.4-1.6Z'/%3e%3cpath%20fill='%23EAB1A0'%20d='M100%2027.8c-.6-1.7.7-4.3%202.4-4.6%202.6-.5%204%202%204.5%204%20.5%201.8.6%203.8-.2%205.6-.3.5-.6%201-1.2%201.4'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M100%2027.8c-.6-1.7.7-4.3%202.4-4.6%202.6-.5%204%202%204.5%204%20.5%201.8.6%203.8-.2%205.6-.3.5-.6%201-1.2%201.4'/%3e%3cpath%20fill='%23F3F6F9'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M96.8%207.7c2%200%203.6-1.5%203.6-3.4%200-1.8-1.6-3.3-3.6-3.3s-3.6%201.5-3.6%203.3c0%201.9%201.6%203.4%203.6%203.4Z'/%3e%3cpath%20fill='%23F3F6F9'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M107.4%2022.1c0-.1%200-3.3-1.5-7.5-1.6-4-4.9-9.1-11.6-10.4-8.2-1.2-13.2%204-15.4%207.3-2.3%203.2-2.4%205.3-2.4%205.3a67%2067%200%200%201%2030.9%205.3Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M93.3%2017.9c.7-.9.4-2.2-.6-2.7-1-.4-2.4.2-2.7%201.2.7-.9.4-2.2-.5-2.9-.9-.7-2.3-.7-3.2%200-1%20.6-1.3%201.9-1%202.9%200-.7%200-1.5-.2-2.1-.3-.7-1-1.3-1.7-1.3-.5%200-1%20.2-1.4.5a3%203%200%200%200-1%203c-.3-1-.5-2.1-1.2-3-.7-1-1.8-1.6-3-1.4-1%20.2-2%201.3-2%202.3%200%201%20.7%202%201.5%202.7.1%200%2014.6%204%2017%20.8Z'/%3e%3cpath%20fill='%233300C2'%20d='M128%2054.8s22%2026.5%2018.9%2037.8c-2%206.7-47%204.9-47%204.9l2.5-14.3%2023.7-1.5-9.7-12.5'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M128%2054.8s22%2026.5%2018.9%2037.8c-2%206.7-47%204.9-47%204.9l2.5-14.3%2023.7-1.5-9.7-12.5'/%3e%3cpath%20fill='%23fff'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M57.4%201.4H1v29.4h33.2L48.9%2045l-.2-14.2h8.7V1.4Z'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M2.3%20168h219.4'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='M29.2%2026.3c6.2%200%2011.3-4.7%2011.3-10.5S35.4%205.2%2029.2%205.2C23%205.2%2017.9%2010%2017.9%2015.8s5%2010.5%2011.3%2010.5Z'/%3e%3cpath%20stroke='%23fff'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20stroke-width='.6'%20d='m25.2%2012%208%207.5M33.2%2012l-8%207.5'/%3e%3c/svg%3e\"","import { ComponentChildren, Ref } from 'preact';\nimport { forwardRef } from 'preact/compat';\n\ntype _RenderResult = ComponentChildren | null;\n\n/**\n * Alternative to using `forwardRef` but with fixed type inference.\n * @see [How To Use forwardRef With Generic Components]{@link https://www.totaltypescript.com/forwardref-with-generic-components}\n */\nexport const fixedForwardRef = <P, T>(render: (props: P, ref: Ref<T>) => _RenderResult): ((props: P & { ref?: Ref<T> }) => _RenderResult) =>\n    forwardRef(render);\n\nexport default fixedForwardRef;\n","import { identity, isFunction, noop, sameValue } from '../../../utils';\nimport { MemoComparator, MemoComparatorGetters, MemoComparatorProp } from './types';\n\nexport const memoComparator = (() => {\n    const _comparedProps = new Set<string>();\n\n    const _propHasChanged = <T = {}>(prev: T, next: T, prop: MemoComparatorProp<T>, getters?: MemoComparatorGetters<T>) => {\n        let getter = getters?.[prop];\n        getter = isFunction(getter) ? getter : identity;\n        return !sameValue(getter(prev[prop]), getter(next[prop]));\n    };\n\n    const comparator = (<T = {}>(getters?: MemoComparatorGetters<T>) =>\n        (prev: T, next: T) => {\n            try {\n                for (const prop in prev) {\n                    _comparedProps.add(prop);\n                    if (_propHasChanged(prev, next, prop, getters)) return false;\n                }\n\n                for (const prop in next) {\n                    if (_comparedProps.has(prop)) continue;\n                    _comparedProps.add(prop);\n                    if (_propHasChanged(prev, next, prop, getters)) return false;\n                }\n\n                return true;\n            } finally {\n                _comparedProps.clear();\n            }\n        }) as MemoComparator;\n\n    return Object.defineProperty(comparator, 'exclude', { value: noop });\n})();\n\nexport default memoComparator;\n","import classnames from 'classnames';\nimport { JSX } from 'preact';\n\nconst EXCESS_WHITESPACE_CHAR = /^\\s+|\\s+(?=\\s|$)/g;\n\nexport const parseClassName = (fallbackClassName: string, className: JSX.Signalish<string | undefined>): undefined | string => {\n    const classes = className ? (typeof className === 'string' ? className : className?.value ?? '') : '';\n    return classes.replace(EXCESS_WHITESPACE_CHAR, '') || fallbackClassName.replace(EXCESS_WHITESPACE_CHAR, '') || undefined;\n};\n\nexport const getClassName = (\n    className?: JSX.Signalish<string | undefined>,\n    fallbackClassName?: JSX.Signalish<string | undefined>,\n    requiredClassName?: JSX.Signalish<string | undefined>\n) => classnames(parseClassName('', requiredClassName), parseClassName(parseClassName('', fallbackClassName) || '', className));\n\nexport const getModifierClasses = (prefix: string, modifiers: string[] = [], baseClasses: string[] = []): string =>\n    classnames([...baseClasses, ...modifiers?.map(m => (prefix ? `${prefix}--${m}` : m))]);\n","import { JSXInternal } from 'preact/src/jsx';\nimport { boolify } from '../value/bool';\n\nexport const parseBooleanProp = (prop: boolean | JSXInternal.SignalLike<boolean | undefined> | undefined): boolean =>\n    boolify(prop, (prop as JSXInternal.SignalLike<boolean | undefined>)?.value ?? prop);\n","export const DEFAULT_BUTTON_CLASSNAME = 'adyen-pe-button';\nexport const BUTTON_ANCHOR_CLASSNAME = 'adyen-pe-button__anchor';\nexport const BUTTON_ACTION_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}-actions`;\nexport const ICON_BUTTON_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}--icon`;\nexport const ICON_BUTTON_CONTENT_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}--icon-content`;\nexport const BUTTON_ACTION_CONTAINER_CLASSNAME = `${BUTTON_ACTION_CLASSNAME}__container-wrapper`;\nexport const BUTTON_LABEL_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}__label`;\nexport const BUTTON_ICON_RIGHT_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}__icon-right`;\nexport const BUTTON_ICON_LEFT_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}__icon-left`;\nexport const BUTTON_CONDENSED_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}--condensed`;\nexport const BUTTON_FULL_WIDTH_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}--full-width`;\nexport const BUTTON_LOADING_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}--loading`;\n","import './Spinner.scss';\n\ninterface SpinnerProps {\n    /**\n     * Whether the spinner should be rendered inline\n     */\n    inline?: boolean;\n\n    /**\n     * size of the spinner (x-small/small/medium/large)\n     */\n    size?: 'x-small' | 'small' | 'medium' | 'large';\n}\n\n/**\n * Default Loading Spinner\n * @param props -\n */\nconst Spinner = ({ inline = false, size = 'large' }: SpinnerProps) => (\n    <div className={`adyen-pe-spinner__wrapper ${inline ? 'adyen-pe-spinner__wrapper--inline' : ''}`}>\n        <div className={`adyen-pe-spinner adyen-pe-spinner--${size}`} />\n    </div>\n);\n\nexport default Spinner;\n","import { getModifierClasses } from '../../../../utils/preact';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport { JSXInternal } from 'preact/src/jsx';\nimport cx from 'classnames';\nimport {\n    BUTTON_CONDENSED_CLASSNAME,\n    BUTTON_FULL_WIDTH_CLASSNAME,\n    BUTTON_ICON_LEFT_CLASSNAME,\n    BUTTON_ICON_RIGHT_CLASSNAME,\n    BUTTON_LABEL_CLASSNAME,\n    BUTTON_LOADING_CLASSNAME,\n    ICON_BUTTON_CLASSNAME,\n    ICON_BUTTON_CONTENT_CLASSNAME,\n} from '../constants';\nimport Spinner from '../../Spinner';\nimport Typography from '../../Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../../Typography/types';\nimport { BaseButtonProps } from '../types';\nimport { PropsWithChildren } from 'preact/compat';\n\nconst useButton = (\n    className: string,\n    classNameModifiers: string[],\n    defaultClassName: string,\n    disabled: boolean,\n    props: PropsWithChildren<BaseButtonProps>,\n    onClick?: JSXInternal.MouseEventHandler<HTMLButtonElement> | JSXInternal.MouseEventHandler<HTMLAnchorElement>\n) => {\n    const { children, iconLeft, iconRight, iconButton = false, fullWidth, condensed, state = 'default' } = props;\n\n    const click = useCallback(\n        (e: any) => {\n            e.preventDefault();\n\n            if (!disabled) {\n                onClick?.(e);\n            }\n        },\n        [disabled, onClick]\n    );\n\n    const classes = useMemo(\n        () => getModifierClasses(defaultClassName, classNameModifiers, [defaultClassName, className]),\n        [defaultClassName, classNameModifiers, className]\n    );\n\n    const allProps = useMemo(\n        () => ({\n            ...props,\n            className: cx(classes, {\n                [ICON_BUTTON_CLASSNAME]: iconButton,\n                [BUTTON_CONDENSED_CLASSNAME]: condensed,\n                [BUTTON_FULL_WIDTH_CLASSNAME]: fullWidth,\n                [BUTTON_LOADING_CLASSNAME]: state === 'loading',\n            }),\n            disabled: disabled || state === 'loading',\n        }),\n        [classes, condensed, disabled, fullWidth, iconButton, props, state]\n    );\n\n    const allChildren = useMemo(\n        () =>\n            iconButton ? (\n                <div className={`${ICON_BUTTON_CONTENT_CLASSNAME}`}>{children}</div>\n            ) : (\n                <>\n                    {state === 'loading' && <Spinner size={'x-small'} />}\n                    {iconLeft && <span className={BUTTON_ICON_LEFT_CLASSNAME}>{iconLeft}</span>}\n                    <Typography className={BUTTON_LABEL_CLASSNAME} el={TypographyElement.SPAN} variant={TypographyVariant.BODY}>\n                        {children}\n                    </Typography>\n                    {iconRight && <span className={BUTTON_ICON_RIGHT_CLASSNAME}>{iconRight}</span>}\n                </>\n            ),\n        [children, iconButton, iconLeft, iconRight, state]\n    );\n\n    return { classes, click, allChildren, allProps };\n};\n\nexport default useButton;\n","import type { VNode, h } from 'preact';\nimport { AnchorHTMLAttributes, ButtonHTMLAttributes } from 'preact/compat';\n\nexport type BaseButtonProps = {\n    classNameModifiers?: string[];\n    variant?: ButtonVariant;\n    iconLeft?: VNode<Element>;\n    iconRight?: VNode<Element>;\n    inline?: boolean;\n    iconButton?: boolean;\n    fullWidth?: boolean;\n    condensed?: boolean;\n    state?: 'loading' | 'default';\n    disabled?: h.JSX.Signalish<boolean | undefined>;\n};\n\nexport interface AnchorButtonProps extends AnchorHTMLAttributes<HTMLAnchorElement>, BaseButtonProps {}\n\nexport interface RegularButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, BaseButtonProps {}\n\nexport type ButtonProps = AnchorButtonProps | RegularButtonProps;\n\nexport enum ButtonVariant {\n    PRIMARY = 'primary',\n    SECONDARY = 'secondary',\n    TERTIARY = 'tertiary',\n    TERTIARY_WITH_BACKGROUND = 'tertiary-with-background',\n    LINK = 'link',\n}\n","import useButton from './hooks/useButton';\nimport { DEFAULT_BUTTON_CLASSNAME } from './constants';\nimport { fixedForwardRef, parseBooleanProp, parseClassName } from '../../../utils/preact';\nimport { Ref } from 'preact';\nimport { useMemo } from 'preact/hooks';\nimport { ButtonVariant, RegularButtonProps } from './types';\nimport './Button.scss';\n\n// TODO: Reuse BaseButton component within Button component\nfunction Button(props: RegularButtonProps, ref: Ref<HTMLButtonElement> | undefined) {\n    const classNameValue = useMemo(() => parseClassName('', props.className) || '', [props.className]);\n    const disabledValue = useMemo(() => parseBooleanProp(props.disabled || false), [props.disabled]);\n\n    const { click, allChildren, allProps } = useButton(\n        classNameValue,\n        [...(props.classNameModifiers || []), props.variant || ButtonVariant.PRIMARY],\n        DEFAULT_BUTTON_CLASSNAME,\n        disabledValue,\n        props,\n        props.onClick\n    );\n\n    const { classNameModifiers, ...restOfAllProps } = allProps;\n    return (\n        <button {...restOfAllProps} ref={ref as Ref<HTMLButtonElement>} type={props.type || 'button'} onClick={click}>\n            {allChildren}\n        </button>\n    );\n}\n\nexport default fixedForwardRef(Button);\n","import Typography from '../Typography/Typography';\nimport { TypographyVariant } from '../Typography/types';\nimport { useCallback } from 'preact/hooks';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport { TranslationKey } from '../../../translations';\nimport './ErrorMessageDisplay.scss';\nimport { JSXInternal } from 'preact/src/jsx';\nimport noResults from '../../../images/no-results.svg';\nimport Button from '../Button';\nimport cx from 'classnames';\n\nexport const IMAGE_BREAKPOINT_SIZES = {\n    md: 680,\n    lg: 1024,\n};\n\ntype ErrorMessageDisplayProps = {\n    title: TranslationKey;\n    message?: TranslationKey | TranslationKey[];\n    imageDesktop?: string;\n    imageMobile?: string;\n    withImage?: boolean;\n    centered?: boolean;\n    refreshComponent?: boolean;\n    onContactSupport?: () => void;\n    translationValues?: { [k in TranslationKey]?: JSXInternal.Element | null };\n    absolutePosition?: boolean;\n    outlined?: boolean;\n    renderSecondaryButton?: () => JSXInternal.Element;\n};\n\nexport const ErrorMessageDisplay = ({\n    title,\n    message,\n    imageDesktop,\n    imageMobile,\n    withImage,\n    centered,\n    refreshComponent,\n    onContactSupport,\n    translationValues,\n    absolutePosition = true,\n    outlined = true,\n    renderSecondaryButton,\n}: ErrorMessageDisplayProps) => {\n    const { i18n, updateCore } = useCoreContext();\n    const renderMessage = useCallback(\n        (errorMessage: TranslationKey | TranslationKey[]) => {\n            if (Array.isArray(errorMessage)) {\n                return errorMessage.map((message, i) =>\n                    i === 0 ? (\n                        <>\n                            {i18n.get(message)}\n                            {translationValues && translationValues[message] && <>{translationValues[message]}</>}\n                        </>\n                    ) : (\n                        <>\n                            <br />\n                            {i18n.get(message)}\n                            {translationValues && translationValues[message] && <>{translationValues[message]}</>}\n                        </>\n                    )\n                );\n            }\n            return i18n.get(errorMessage);\n        },\n        [i18n, translationValues]\n    );\n\n    return (\n        <div\n            className={cx(['adyen-pe-error-message-display'], {\n                'adyen-pe-error-message-display--absolute-position': absolutePosition,\n                'adyen-pe-error-message-display--outlined': outlined,\n                'adyen-pe-error-message-display--with-background': !outlined,\n                'adyen-pe-error-message-display--centered': centered,\n            })}\n        >\n            {(imageDesktop || imageMobile || withImage) && (\n                <div className=\"adyen-pe-error-message-display__illustration\">\n                    <picture>\n                        <source type=\"image/svg+xml\" media={`(min-width: ${IMAGE_BREAKPOINT_SIZES.md}px)`} srcSet={imageDesktop} />\n                        <source type=\"image/svg+xml\" media={`(max-width: ${IMAGE_BREAKPOINT_SIZES.md}px)`} srcSet={imageMobile} />\n                        <img srcSet={imageDesktop ?? noResults} alt={i18n.get('thereWasAnUnexpectedError')} />\n                    </picture>\n                </div>\n            )}\n            <Typography variant={TypographyVariant.TITLE}>{i18n.get(title)}</Typography>\n            {message && <Typography variant={TypographyVariant.BODY}>{renderMessage(message)}</Typography>}\n\n            {(onContactSupport || refreshComponent || renderSecondaryButton) && (\n                <div className={'adyen-pe-error-message-display__button'}>\n                    {renderSecondaryButton && renderSecondaryButton()}\n                    {onContactSupport && <Button onClick={onContactSupport}>{i18n.get('contactSupport')}</Button>}\n                    {!onContactSupport && refreshComponent && <Button onClick={updateCore}>{i18n.get('refresh')}</Button>}\n                </div>\n            )}\n        </div>\n    );\n};\n","import { isFunction } from '../../../../../../utils';\nimport AuthSession from '../../../AuthSession';\nimport type { ExternalComponentAvailabilityRegistry } from '../types';\n\nconst getComponentAvailabilityFromEndpoint = (context: AuthSession['context'], endpoint: keyof AuthSession['context']['endpoints']) => {\n    return isFunction(context.endpoints[endpoint]);\n};\n\nconst componentAvailabilityRegistry: ExternalComponentAvailabilityRegistry = {\n    transactions: context => getComponentAvailabilityFromEndpoint(context, 'getTransactions'),\n    transactionDetails: context => getComponentAvailabilityFromEndpoint(context, 'getTransaction'),\n    payouts: context => getComponentAvailabilityFromEndpoint(context, 'getPayouts'),\n    payoutDetails: context => getComponentAvailabilityFromEndpoint(context, 'getPayout'),\n    reports: context => getComponentAvailabilityFromEndpoint(context, 'getReports'),\n    capitalOverview: context => getComponentAvailabilityFromEndpoint(context, 'getDynamicGrantOffersConfiguration'),\n    capitalOffer: context => getComponentAvailabilityFromEndpoint(context, 'getDynamicGrantOffer'),\n};\n\nexport default componentAvailabilityRegistry;\n","import AuthSession from '../AuthSession';\nimport { isWatchlistUnsubscribeToken } from '../../../../primitives/reactive/watchlist';\nimport { createDeferred } from '../../../../primitives/async/deferred';\nimport { boolOrTrue } from '../../../../utils';\n\nconst sessionReady = async (session: AuthSession) => {\n    const ready = createDeferred<void>();\n    const readyPromise = ready.promise;\n    const refreshInProgress = session.context.refreshing;\n    let didTriggerRefresh: boolean | undefined = undefined;\n    let canRefreshSession: boolean | undefined = undefined;\n\n    let sessionUnsubscribe = session.subscribe(maybeUnsubscribeToken => {\n        if (isWatchlistUnsubscribeToken(maybeUnsubscribeToken)) {\n            ready.resolve();\n            return;\n        }\n\n        didTriggerRefresh ??= session.context.refreshing;\n\n        if (session.context.refreshing) return;\n\n        if (boolOrTrue(session.context.isExpired)) {\n            if ((canRefreshSession ??= !(refreshInProgress || didTriggerRefresh))) {\n                canRefreshSession = false;\n                session.refresh();\n                return;\n            }\n        }\n\n        // Session has been refreshed (likely to have an active session)\n        ready.resolve();\n    });\n\n    readyPromise.finally(() => {\n        // Unsubscribe from session immediately readyPromise settles\n        sessionUnsubscribe();\n        sessionUnsubscribe = null!;\n    });\n\n    return readyPromise;\n};\n\nexport default sessionReady;\n","import { boolOrFalse } from '../../../../../utils';\nimport componentAvailabilityRegistry from './helpers/componentAvailabilityRegistry';\nimport type { ExternalComponentType } from '../../../../../components/types';\nimport AuthSession from '../../AuthSession';\nimport sessionReady from '../sessionReady';\n\nconst sessionAwareComponentAvailability = async (type: ExternalComponentType, session: AuthSession) => {\n    await sessionReady(session);\n    return boolOrFalse(await componentAvailabilityRegistry[type]?.(session.context));\n};\n\nexport default sessionAwareComponentAvailability;\n","import { ExternalComponentType } from '../../../../../../components/types';\nimport { TranslationKey } from '../../../../../../translations';\n\nconst componentAvailabilityErrors = (type: ExternalComponentType): TranslationKey => {\n    switch (type) {\n        case 'payouts':\n            return 'weCouldNotLoadThePayoutsOverview';\n        case 'transactions':\n            return 'weCouldNotLoadTheTransactionsOverview';\n        case 'transactionDetails':\n            return 'weCouldNotLoadYourTransactions';\n        case 'payoutDetails':\n            return 'weCouldNotLoadYourPayouts';\n        case 'reports':\n            return 'weCouldNotLoadTheReportsOverview';\n        default:\n            return 'somethingWentWrong';\n    }\n};\n\nexport default componentAvailabilityErrors;\n","import { createContext, toChildArray } from 'preact';\nimport { useContext, useEffect, useMemo, useState } from 'preact/hooks';\nimport { ErrorMessageDisplay } from '../../components/internal/ErrorMessageDisplay/ErrorMessageDisplay';\nimport { AuthSession } from './session/AuthSession';\nimport { isWatchlistUnsubscribeToken } from '../../primitives/reactive/watchlist';\nimport sessionAwareComponentAvailability, { componentAvailabilityErrors } from './session/utils/sessionAwareComponentAvailability';\nimport { asyncNoop, EMPTY_OBJECT, isUndefined, noop } from '../../utils';\nimport type { ConfigProviderProps } from './types';\n\nconst ConfigContext = createContext<AuthSession['context'] & Pick<AuthSession, 'http' | 'refresh'>>({\n    endpoints: EMPTY_OBJECT,\n    extraConfig: EMPTY_OBJECT,\n    hasError: false,\n    http: asyncNoop,\n    isExpired: undefined,\n    isFrozen: false,\n    refresh: noop,\n    refreshing: false,\n});\n\nexport const ConfigProvider = ({ children, session, type }: ConfigProviderProps) => {\n    const { http, refresh } = useMemo(() => session, [session]);\n    const [, setContextCounter] = useState(0);\n    const [unsubscribeCounter, setUnsubscribeCounter] = useState(0);\n    const [hasPermission, setHasPermission] = useState<undefined | boolean>();\n\n    useEffect(() => {\n        sessionAwareComponentAvailability(type, session).then(setHasPermission);\n    }, [session, type]);\n\n    useEffect(() => {\n        return session.subscribe(maybeContext => {\n            const stateUpdater = isWatchlistUnsubscribeToken(maybeContext) ? setUnsubscribeCounter : setContextCounter;\n            stateUpdater(count => count + 1);\n        });\n    }, [unsubscribeCounter]);\n\n    return (\n        <ConfigContext.Provider value={{ ...session.context, http, refresh }}>\n            {!isUndefined(hasPermission) &&\n                (hasPermission ? (\n                    toChildArray(children)\n                ) : (\n                    <ErrorMessageDisplay\n                        withImage\n                        centered\n                        title={'somethingWentWrong'}\n                        message={[componentAvailabilityErrors(type), 'contactSupportForHelp']}\n                    />\n                ))}\n        </ConfigContext.Provider>\n    );\n};\n\nexport const useConfigContext = () => useContext(ConfigContext);\nexport default useConfigContext;\n","import { useCallback, useState } from 'preact/hooks';\n\nconst useBooleanState = (initialState = false) => {\n    const [state, setState] = useState(initialState);\n    const updateState = useCallback((state: boolean) => setState(state), []);\n    const toggleState = useCallback(() => setState(state => !state), []);\n    return [state, updateState, toggleState] as const;\n};\n\nexport default useBooleanState;\n","import { toChildArray } from 'preact';\nimport { useEffect, useMemo } from 'preact/hooks';\nimport { CoreContext } from './CoreContext';\nimport { CoreProviderProps } from './types';\nimport useBooleanState from '../../hooks/useBooleanState';\nimport Localization from '../Localization';\n\n/**\n * CoreProvider Component\n * Wraps a component delaying the render until after the i18n module is fully loaded\n */\nconst CoreProvider = ({\n    i18n = new Localization().i18n,\n    children,\n    commonProps: _commonProps,\n    loadingContext: _loadingContext,\n    updateCore,\n    externalErrorHandler,\n    componentRef,\n}: CoreProviderProps) => {\n    const [ready, setReady] = useBooleanState(false);\n    const commonProps = useMemo(() => _commonProps || {}, [_commonProps]);\n    const loadingContext = useMemo(() => _loadingContext ?? '', [_loadingContext]);\n\n    useEffect(() => {\n        (async () => {\n            await i18n?.ready;\n            setReady(true);\n        })().catch();\n    }, []);\n\n    if (!ready) return null;\n\n    return (\n        <CoreContext.Provider value={{ i18n, commonProps, loadingContext, updateCore, externalErrorHandler, componentRef }}>\n            {toChildArray(children)}\n        </CoreContext.Provider>\n    );\n};\n\nexport default CoreProvider;\n","import { ComponentChild, render } from 'preact';\nimport { BaseElementProps, BaseElementState, ExternalComponentType } from '../types';\nimport { isString, uuid } from '../../utils';\n\nclass BaseElement<P> {\n    public static type: ExternalComponentType;\n\n    public _component: ComponentChild | Error;\n    public _node: Document | ShadowRoot | DocumentFragment | Element | null = null;\n    public readonly _id = `${(this.constructor as typeof BaseElement)?.type}-${uuid()}`;\n\n    public defaultProps = {};\n    public props: P & BaseElementProps;\n    public state: BaseElementState = {};\n\n    protected constructor(props: P & BaseElementProps) {\n        this.props = this.formatProps({ ...this?.defaultProps, ...props });\n        this.props.core.registerComponent(this);\n    }\n\n    /**\n     * Executed during creation of any element.\n     * Gives a chance to any component to format the props we're receiving.\n     */\n    protected formatProps(props: P & BaseElementProps): any {\n        return props;\n    }\n\n    /**\n     * Executed on the `data` getter.\n     * Returns the component data necessary for making a request\n     */\n    protected formatData() {\n        return {};\n    }\n\n    protected setState(newState: object): void {\n        this.state = { ...this.state, ...newState };\n    }\n\n    /**\n     * Returns the component data ready to submit to the Checkout API\n     * Note: this does not ensure validity, check isValid first\n     */\n    get data(): any {\n        return {\n            ...this.formatData(),\n            clientStateDataIndicator: true,\n        };\n    }\n\n    public render(): ComponentChild | Error {\n        // render() not implemented in the element\n        throw new Error('Component cannot be rendered.');\n    }\n\n    /**\n     * Mounts an element into the dom\n     * @param domNode - Node (or selector) where we will mount the element\n     * @returns this - the element instance we mounted\n     */\n    public mount(domNode: string): this;\n    public mount(domNode: HTMLElement): this;\n    public mount(domNode: any): any {\n        const node = isString(domNode) ? document.querySelector(domNode) : domNode;\n\n        if (!node) throw new Error('Component could not mount. Root node was not found.');\n\n        // new, if this._node exists then we are \"remounting\" so we first need to unmount if it's not already been done\n        if (this._node) this.unmount();\n\n        this._node = node;\n        this._component = this.render();\n\n        render(this._component, node);\n        return this;\n    }\n\n    /**\n     * Updates props, resets the internal state and remounts the element.\n     * @param props - props to update\n     * @returns this - the element instance\n     */\n    public update(props: P): this {\n        /*\n        // OLD\n        this.props = this.formatProps({ ...this.props, ...props });\n        this.state = {};\n\n        return this.unmount().mount(this._node); // for new mount fny\n        */\n\n        // /*\n        this.props = this.formatProps({ ...this.props, ...props });\n        this._component = this.render();\n\n        if (this._node) render(this._component, this._node);\n        return this;\n\n        // return this.remount(this._component);\n        // */\n    }\n\n    /**\n     * Unmounts an element and mounts it again on the same node i.e. allows mount w/o having to pass a node.\n     * Should be \"private\" & undocumented (although being a public function is useful for testing).\n     * Left in for legacy reasons\n     */\n    public remount(component: BaseElement<any>): this {\n        if (!this._node) throw new Error('Component is not mounted.');\n\n        const newComponent = component || this.render();\n        render(newComponent, this._node);\n        return this;\n    }\n\n    /**\n     * Unmounts an element from the DOM\n     */\n    public unmount(): this {\n        if (this._node) render(null, this._node);\n        return this;\n    }\n\n    /**\n     * Unmounts an element and removes it from the parent instance\n     * For \"destroy\" type cleanup - when you don't intend to use the component again\n     */\n    public remove() {\n        this.unmount();\n        this.props.core.remove(this);\n    }\n}\n\nexport default BaseElement;\n","import { ConfigProvider } from '../../../core/ConfigContext';\nimport CoreProvider from '../../../core/Context/CoreProvider';\nimport { JSXInternal } from 'preact/src/jsx';\nimport BaseElement from '../BaseElement';\nimport { BaseElementProps, ExternalComponentType, IUIElement, UIElementProps, UIElementStatus } from '../../types';\nimport './UIElement.scss';\nimport cx from 'classnames';\nimport { createRef, RefObject } from 'preact';\n\nexport class UIElement<P> extends BaseElement<P & UIElementProps> implements IUIElement {\n    protected componentRef: UIElement<P> | null = null;\n\n    public componentToRender: (() => JSXInternal.Element) | null = null;\n    public elementRef: UIElement<P> | null;\n    public onContactSupport?: () => void;\n    public customClassNames: string | undefined;\n    public compRef: RefObject<HTMLDivElement>;\n\n    constructor(props: P & UIElementProps & BaseElementProps) {\n        super(props);\n        this.setState = this.setState.bind(this);\n        this.onContactSupport = props.onContactSupport;\n        this.elementRef = this;\n        this.compRef = createRef();\n    }\n\n    get isValid() {\n        return !!this.state.isValid;\n    }\n\n    /**\n     * Get the element's displayable name\n     */\n    get displayName(): ExternalComponentType {\n        return this.type;\n    }\n\n    /**\n     * Get the element accessible name, used in the aria-label of the button that controls selected component\n     */\n    get accessibleName(): string {\n        return this.displayName;\n    }\n\n    /**\n     * Return the type of an element\n     */\n    get type(): ExternalComponentType {\n        return (this.constructor as typeof UIElement)?.type;\n    }\n\n    formatProps(props: P) {\n        return props;\n    }\n\n    /**\n     * Formats the component data output\n     */\n    formatData() {\n        return {\n            ...this.state,\n        };\n    }\n\n    public setState(newState: Record<any, any>): void {\n        this.state = { ...this.state, ...newState };\n    }\n\n    private setUIElementStatus: ((status: string) => void) | undefined;\n\n    public setStatus(status: UIElementStatus, props: P & UIElementProps): this {\n        if (this.componentRef?.setStatus) {\n            this.componentRef.setStatus(status, props);\n        } else {\n            this.setUIElementStatus?.(status);\n        }\n        return this;\n    }\n\n    render() {\n        const core = this.props.core;\n        const updateCore = core.update.bind(core);\n\n        const externalErrorHandler = this.props.onError || core.onError || null;\n\n        core.session.errorHandler = externalErrorHandler;\n\n        return (\n            <ConfigProvider type={this.type} session={core.session} key={performance.now()}>\n                <CoreProvider\n                    i18n={core.localization.i18n}\n                    loadingContext={core.loadingContext}\n                    updateCore={updateCore}\n                    externalErrorHandler={externalErrorHandler}\n                    componentRef={this.compRef}\n                >\n                    {this.componentToRender && (\n                        <div ref={this.compRef} className={cx('adyen-pe-component', this.customClassNames)}>\n                            <div className=\"adyen-pe-component__container\">{this.componentToRender()}</div>\n                        </div>\n                    )}\n                </CoreProvider>\n            </ConfigProvider>\n        );\n    }\n}\n\nexport default UIElement;\n","import { useCallback, useEffect, useReducer, useRef } from 'preact/hooks';\nimport { ErrorLevel } from '../core/Http/types';\nimport { boolOrTrue } from '../utils';\n\nexport interface State<T> {\n    data?: T;\n    error?: Error;\n    isFetching: boolean;\n}\n\n// type Cache<T> = Map<string, T>;\n\ntype Action<T> = { type: 'loading' } | { type: 'fetched'; payload: T } | { type: 'error'; payload: Error };\n\ntype FetchOptions<ReturnType> = {\n    enabled: boolean;\n    errorLevel: ErrorLevel;\n    keepPrevData: boolean;\n    onSuccess?: (data: ReturnType) => void;\n};\n\ntype UseFetchConfig<QueryFn extends (...args: any) => Promise<any>> = {\n    loadingContext?: string;\n    params?: Record<string, string | number | Date>;\n    requestOptions?: RequestInit;\n    fetchOptions?: Partial<FetchOptions<Awaited<ReturnType<QueryFn>>>>;\n    queryFn: QueryFn;\n};\nexport function useFetch<QueryFn extends (...args: any) => Promise<any>, T extends Awaited<ReturnType<QueryFn>>>({\n    fetchOptions: { keepPrevData, onSuccess, enabled } = { keepPrevData: true },\n    queryFn,\n}: // params,\nUseFetchConfig<QueryFn>): State<T> {\n    // TODO cache endpoint calls\n    //const cache = useRef<Cache<T>>(new Map());\n    // Used to prevent state update if the component is unmounted\n    const cancelRequest = useRef<boolean>(false);\n    const initialState: State<T> = {\n        error: undefined,\n        data: undefined,\n        isFetching: boolOrTrue(enabled),\n    };\n    const fetchReducer = (state: State<T>, action: Action<T>): State<T> => {\n        switch (action.type) {\n            case 'loading':\n                return { ...initialState, isFetching: true, data: keepPrevData ? state.data : undefined };\n            case 'fetched':\n                return { ...initialState, data: action.payload, isFetching: false };\n            case 'error':\n                return { ...initialState, error: action.payload, isFetching: false };\n            default:\n                return state;\n        }\n    };\n\n    const [state, dispatch] = useReducer(fetchReducer, initialState);\n\n    const fetchData = useCallback(async () => {\n        // If a cache exists for this url, return it\n        /* if (cache.current.get(url.href)) {\n            dispatch({ type: 'fetched', payload: cache.current.get(url.href)! });\n            return;\n        } */\n        dispatch({ type: 'loading' });\n\n        try {\n            if (cancelRequest.current) return;\n            const data = await queryFn();\n            // cache.current.set(url.href, data);\n            onSuccess?.(data);\n            dispatch({ type: 'fetched', payload: data });\n        } catch (error) {\n            if (cancelRequest.current) return;\n            dispatch({ type: 'error', payload: error as Error });\n        }\n    }, [dispatch, queryFn, onSuccess]);\n\n    useEffect(() => {\n        cancelRequest.current = false;\n\n        if (boolOrTrue(enabled)) void fetchData();\n\n        // Avoid a possible state update after the component was unmounted\n        return () => {\n            cancelRequest.current = true;\n        };\n    }, [enabled, fetchData]);\n\n    return state;\n}\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport { fixedForwardRef } from '../../../utils/preact';\n\n/**\n * @deprecated This component is deprecated. Use <Icon name=\"chevron-down\"/> instead.\n */\nconst ChevronDown = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n    <svg ref={ref} xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" {...props}>\n        {title && <title>{title}</title>}\n        <path\n            fill=\"currentColor\"\n            fillRule=\"evenodd\"\n            d=\"M2.47 4.97c.3-.3.77-.3 1.06 0L8 9.44l4.47-4.47a.75.75 0 1 1 1.06 1.06l-5 5c-.3.3-.77.3-1.06 0l-5-5a.75.75 0 0 1 0-1.06Z\"\n            clipRule=\"evenodd\"\n        />\n    </svg>\n));\n\nexport default ChevronDown;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport { fixedForwardRef } from '../../../utils/preact';\n\n/**\n * @deprecated This component is deprecated. Use <Icon name=\"chevron-up\"/> instead.\n */\nconst ChevronUp = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n    <svg ref={ref} xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" {...props}>\n        {title && <title>{title}</title>}\n        <path\n            fill=\"currentColor\"\n            fillRule=\"evenodd\"\n            d=\"M13.53 11.03c-.3.3-.77.3-1.06 0L8 6.56l-4.47 4.47a.75.75 0 1 1-1.06-1.06l5-5c.3-.3.77-.3 1.06 0l5 5c.3.3.3.77 0 1.06Z\"\n            clipRule=\"evenodd\"\n        />\n    </svg>\n));\n\nexport default ChevronUp;\n","export const ACCORDION_BASE_CLASS = 'adyen-pe-accordion';\nexport const ACCORDION_HEADER_CLASS = ACCORDION_BASE_CLASS + '__header';\nexport const ACCORDION_HEADER_CONTAINER_CLASS = ACCORDION_HEADER_CLASS + '-container';\nexport const ACCORDION_HEADER_CONTROLLER_CLASS = ACCORDION_HEADER_CLASS + '-controller';\nexport const ACCORDION_CONTENT_CLASS = ACCORDION_BASE_CLASS + '__content';\n","import cx from 'classnames';\nimport classnames from 'classnames';\nimport { PropsWithChildren } from 'preact/compat';\nimport { useCallback, useRef, useState } from 'preact/hooks';\nimport ChevronDown from '../SVGIcons/ChevronDown';\nimport ChevronUp from '../SVGIcons/ChevronUp';\nimport {\n    ACCORDION_BASE_CLASS,\n    ACCORDION_CONTENT_CLASS,\n    ACCORDION_HEADER_CLASS,\n    ACCORDION_HEADER_CONTAINER_CLASS,\n    ACCORDION_HEADER_CONTROLLER_CLASS,\n} from './constants';\nimport { AccordionProps } from './types';\nimport './Accordion.scss';\n\nfunction Accordion({ children, classNames, header, headerInformation }: PropsWithChildren<AccordionProps>) {\n    const [isExpanded, setIsExpanded] = useState(false);\n    const accordionContentRef = useRef<HTMLDivElement>(null);\n\n    const toggle = useCallback(() => {\n        setIsExpanded(!isExpanded);\n    }, [isExpanded]);\n\n    return (\n        <div className={classnames(ACCORDION_BASE_CLASS, classNames)}>\n            <h3 className={ACCORDION_HEADER_CLASS}>\n                <button\n                    id={'accordion-controller'}\n                    aria-controls=\"accordion-content\"\n                    className={ACCORDION_HEADER_CONTAINER_CLASS}\n                    onClick={toggle}\n                    aria-expanded={isExpanded}\n                >\n                    <div className={ACCORDION_HEADER_CONTROLLER_CLASS}>\n                        {header}\n                        {isExpanded ? <ChevronUp height={8} width={15} /> : <ChevronDown height={8} width={15} />}\n                    </div>\n                </button>\n                {headerInformation && <div>{headerInformation}</div>}\n            </h3>\n            {\n                <div\n                    role=\"region\"\n                    id={'accordion-content'}\n                    aria-labelledby=\"accordion-controller\"\n                    style={{ maxHeight: isExpanded ? accordionContentRef?.current?.offsetHeight : 0 }}\n                    className={ACCORDION_CONTENT_CLASS}\n                >\n                    <div ref={accordionContentRef}>{children}</div>\n                </div>\n            }\n        </div>\n    );\n}\n\nexport default Accordion;\n","export const CARD_BASE_CLASS = 'adyen-pe-card';\nexport const CARD_BODY = `${CARD_BASE_CLASS}__body`;\nexport const CARD_HEADER = `${CARD_BASE_CLASS}__header`;\nexport const CARD_TITLE = `${CARD_BASE_CLASS}__title`;\nexport const CARD_SUBTITLE = `${CARD_BASE_CLASS}__subtitle`;\nexport const CARD_HEADER_CONTENT = `${CARD_HEADER}-content`;\nexport const CARD_BODY_WITH_TITLE = `${CARD_BODY}--with-title`;\nexport const CARD_NO_OUTLINE = `${CARD_BASE_CLASS}--no-outline`;\nexport const CARD_NO_PADDING = `${CARD_BASE_CLASS}--no-padding`;\nexport const CARD_FILLED = `${CARD_BASE_CLASS}--filled`;\nexport const CARD_FOOTER = `${CARD_BASE_CLASS}__footer`;\n","import {\n    CARD_BASE_CLASS,\n    CARD_BODY,\n    CARD_BODY_WITH_TITLE,\n    CARD_FILLED,\n    CARD_FOOTER,\n    CARD_HEADER,\n    CARD_HEADER_CONTENT,\n    CARD_NO_OUTLINE,\n    CARD_NO_PADDING,\n    CARD_SUBTITLE,\n    CARD_TITLE,\n} from './constants';\nimport { CardProps } from './types';\nimport { PropsWithChildren } from 'preact/compat';\nimport classNames from 'classnames';\nimport './Card.scss';\n\nconst Card = ({\n    title,\n    subTitle,\n    children,\n    footer,\n    el,\n    renderHeader,\n    renderFooter,\n    filled,\n    noOutline,\n    noPadding,\n    classNameModifiers,\n    testId,\n}: PropsWithChildren<CardProps>) => {\n    const Tag = el || 'header';\n    return (\n        <section\n            className={classNames(\n                CARD_BASE_CLASS,\n                { [CARD_FILLED]: filled, [CARD_NO_OUTLINE]: noOutline, [CARD_NO_PADDING]: noPadding },\n                classNameModifiers\n            )}\n            data-testid={testId}\n        >\n            {(title || renderHeader) && (\n                <Tag className={CARD_HEADER}>\n                    {(title || renderHeader) && (\n                        <div className={CARD_HEADER_CONTENT}>\n                            {renderHeader ? renderHeader : <span className={CARD_TITLE}>{title}</span>}\n                            {subTitle && <div className={CARD_SUBTITLE}>{subTitle}</div>}\n                        </div>\n                    )}\n                </Tag>\n            )}\n            <div\n                className={classNames(CARD_BODY, {\n                    [CARD_BODY_WITH_TITLE]: title || renderHeader,\n                })}\n            >\n                {children}\n            </div>\n            {(footer || renderFooter) && <footer className={CARD_FOOTER}>{renderFooter ? renderFooter : footer}</footer>}\n        </section>\n    );\n};\n\nexport default Card;\n","const DIGITS_2 = '2-digit';\nconst LONG = 'long';\nconst NUMERIC = 'numeric';\nconst SHORT = 'short';\nconst SHORT_OFFSET = 'shortOffset';\n\nconst BASE_DATE_FORMAT: Intl.DateTimeFormatOptions = {\n    month: LONG,\n    day: NUMERIC,\n    year: NUMERIC,\n};\n\nconst BASE_TIME_FORMAT: Intl.DateTimeFormatOptions = {\n    hour: DIGITS_2,\n    minute: DIGITS_2,\n};\n\nconst BASE_DATE_TIME_FORMAT: Intl.DateTimeFormatOptions = {\n    ...BASE_DATE_FORMAT,\n    ...BASE_TIME_FORMAT,\n    month: SHORT,\n    hour12: false,\n};\n\nconst BASE_DATE_TIME_MOBILE_FORMAT: Intl.DateTimeFormatOptions = { ...BASE_DATE_TIME_FORMAT, year: undefined };\n\nexport const DATE_FORMAT_CAPITAL_OVERVIEW: Intl.DateTimeFormatOptions = { ...BASE_DATE_FORMAT, month: 'short' };\n\nexport const DATE_FORMAT_PAYOUTS: Intl.DateTimeFormatOptions = BASE_DATE_FORMAT;\nexport const DATE_FORMAT_PAYOUTS_MOBILE: Intl.DateTimeFormatOptions = BASE_DATE_TIME_MOBILE_FORMAT;\nexport const DATE_FORMAT_PAYOUT_DETAILS: Intl.DateTimeFormatOptions = { ...BASE_DATE_FORMAT, weekday: LONG };\n\nexport const DATE_FORMAT_REPORTS: Intl.DateTimeFormatOptions = { ...BASE_DATE_FORMAT, month: SHORT };\n\nexport const DATE_FORMAT_TRANSACTIONS: Intl.DateTimeFormatOptions = BASE_DATE_TIME_FORMAT;\nexport const DATE_FORMAT_TRANSACTIONS_MOBILE: Intl.DateTimeFormatOptions = BASE_DATE_TIME_MOBILE_FORMAT;\n\nexport const DATE_FORMAT_TRANSACTION_DETAILS: Intl.DateTimeFormatOptions = {\n    ...BASE_DATE_FORMAT,\n    ...BASE_TIME_FORMAT,\n    weekday: LONG,\n    timeZoneName: SHORT_OFFSET,\n};\n","export * from './dateFormats';\n\nexport const BREAKPOINTS = {\n    sm: 480,\n    md: 768,\n    lg: 1024,\n} as const;\n","export const SL_BASE_CLASS = 'adyen-pe-structured-list';\nexport const SL_ALIGN_END = `${SL_BASE_CLASS}--align-end`;\nexport const SL_ITEM_CLASS = `${SL_BASE_CLASS}__item`;\nexport const SL_GRID_CLASS = `${SL_BASE_CLASS}__grid`;\nexport const SL_CONTENT_CLASS = `${SL_BASE_CLASS}__content`;\nexport const SL_LABEL_CLASS = `${SL_BASE_CLASS}__label`;\nexport const SL_ITEM_WITH_HIGHLIGHT_CLASS = `${SL_ITEM_CLASS}--has-highlight`;\n","import { useMemo } from 'preact/hooks';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport { uuid } from '../../../utils';\nimport { StructuredListItem } from './types';\n\nexport const useStructuredListItems = (items: StructuredListItem[]) => {\n    const { i18n } = useCoreContext();\n    return useMemo(() => {\n        return items.map(item => {\n            return {\n                key: item.key,\n                value: item.value,\n                id: uuid(),\n                label: i18n.get(item.key),\n                type: item.type,\n                config: item.config,\n            };\n        });\n    }, [i18n, items]);\n};\n","import cx from 'classnames';\nimport { useMemo } from 'preact/hooks';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport { TranslationKey } from '../../../translations';\nimport { TypographyVariant } from '../Typography/types';\nimport Typography from '../Typography/Typography';\nimport {\n    SL_ALIGN_END,\n    SL_BASE_CLASS,\n    SL_CONTENT_CLASS,\n    SL_GRID_CLASS,\n    SL_ITEM_CLASS,\n    SL_ITEM_WITH_HIGHLIGHT_CLASS,\n    SL_LABEL_CLASS,\n} from './constants';\nimport { StructuredListProps } from './types';\nimport './StructuredList.scss';\nimport { useStructuredListItems } from './useStructuredListItem';\n\nexport const StructuredListLayouts = ['3-9', '4-8', '5-7', '6-6', '7-5', '8-4'] as const satisfies ReadonlyArray<`${number}-${number}`>;\n\nconst DEFAULT_LAYOUT = '6-6';\nexport default function StructuredList({\n    items,\n    highlightable,\n    renderValue,\n    renderLabel,\n    layout = DEFAULT_LAYOUT,\n    grid = true,\n    classNames,\n    align = 'end',\n}: StructuredListProps) {\n    const [LABEL_COL_CLASS, VALUE_COL_CLASS] = useMemo(() => {\n        return layout.split('-').map(w => `${SL_GRID_CLASS}--width-${w}-of-12`);\n    }, [layout]);\n    const formattedItems = useStructuredListItems(items);\n    const { i18n } = useCoreContext();\n\n    return (\n        <dl aria-label={i18n.get('structuredList')} className={cx(SL_BASE_CLASS, classNames, { [SL_ALIGN_END]: align === 'end' })}>\n            {formattedItems.map((item, index) => (\n                <div\n                    key={`${index}_${item.id || '0'}`}\n                    className={cx(SL_ITEM_CLASS, {\n                        [SL_ITEM_WITH_HIGHLIGHT_CLASS]: highlightable,\n                        [SL_GRID_CLASS]: grid,\n                    })}\n                >\n                    <dt className={cx(SL_LABEL_CLASS, LABEL_COL_CLASS)}>\n                        {renderLabel ? (\n                            renderLabel(item.label, items[index]!.key)\n                        ) : (\n                            <Typography variant={TypographyVariant.BODY}>{item.label}</Typography>\n                        )}\n                    </dt>\n                    <dd aria-label={`${i18n.get(item.key as TranslationKey)} ${i18n.get('value')}`} className={cx(SL_CONTENT_CLASS, VALUE_COL_CLASS)}>\n                        {renderValue ? (\n                            renderValue(item.value, item.key, item.type, item.config)\n                        ) : (\n                            <Typography variant={TypographyVariant.BODY}>{item.value}</Typography>\n                        )}\n                    </dd>\n                </div>\n            ))}\n        </dl>\n    );\n}\n","export const BASE_CLASS = 'adyen-pe-overview-details';\nexport const SKELETON_CLASS = `${BASE_CLASS}__skeleton`;\nexport const SKELETON_CONTAINER = `${SKELETON_CLASS}-container`;\nexport const SKELETON_LOADING = `${SKELETON_CLASS}--loading-content`;\nexport const STATUS_SKELETON = `${BASE_CLASS}__status-skeleton`;\n","import cx from 'classnames';\nimport { memo } from 'preact/compat';\nimport { SKELETON_CLASS, SKELETON_CONTAINER, SKELETON_LOADING, STATUS_SKELETON } from './constants';\n\nconst DataOverviewDetailsSkeleton = ({ skeletonRowNumber = 0 }: { skeletonRowNumber?: number }) => {\n    const className = cx(SKELETON_CLASS, SKELETON_LOADING);\n    const skeletonRows = Array.from({ length: skeletonRowNumber });\n    const statusSkeletonRows = Array.from({ length: 2 });\n\n    return (\n        <div className={SKELETON_CONTAINER}>\n            <div className={STATUS_SKELETON}>\n                {statusSkeletonRows.map((_, index) => (\n                    <span className={className} key={`status-skeleton-${index}`} />\n                ))}\n            </div>\n            {skeletonRows.map((_, index) => (\n                <span className={className} key={`skeleton-${index}`} />\n            ))}\n        </div>\n    );\n};\n\nexport default memo(DataOverviewDetailsSkeleton);\n","import { useCallback, useMemo } from 'preact/hooks';\nimport useCoreContext from '../core/Context/useCoreContext';\n\nconst _useAtomicTimezoneOperation = <Args extends any[], ReturnValue>(operation: (...args: Args) => ReturnValue) => {\n    const { i18n } = useCoreContext();\n\n    return useCallback(\n        (...args: Args) => {\n            // capture timezone to restore\n            const timezoneToRestore = i18n.timezone;\n            try {\n                // perform timezone operation\n                return operation(...args);\n            } finally {\n                // restore timezone\n                i18n.timezone = timezoneToRestore;\n            }\n        },\n        [i18n, operation]\n    );\n};\n\nconst _useActiveTimezone = (timezone?: string) => {\n    const { i18n } = useCoreContext();\n\n    const getActiveTimezone = _useAtomicTimezoneOperation(\n        useCallback(() => {\n            // first reset to system timezone,\n            // then attempt to set the specified timezone,\n            // will fail silently if specified timezone is invalid\n            i18n.timezone = undefined;\n            i18n.timezone = timezone;\n            return i18n.timezone!;\n        }, [i18n, timezone])\n    );\n\n    return useMemo(getActiveTimezone, [getActiveTimezone]);\n};\n\nconst useTimezoneAwareDateFormatting = (timezone?: string) => {\n    const { i18n } = useCoreContext();\n    const activeTimezone = _useActiveTimezone(timezone);\n\n    const dateFormat = _useAtomicTimezoneOperation(\n        useCallback<(typeof i18n)['date']>(\n            (...args) => {\n                i18n.timezone = activeTimezone;\n                return i18n.date(...args);\n            },\n            [i18n, activeTimezone]\n        )\n    );\n\n    const fullDateFormat = _useAtomicTimezoneOperation(\n        useCallback<(typeof i18n)['fullDate']>(\n            (...args) => {\n                i18n.timezone = activeTimezone;\n                return i18n.fullDate(...args);\n            },\n            [i18n, activeTimezone]\n        )\n    );\n\n    return { dateFormat, fullDateFormat } as const;\n};\n\nexport default useTimezoneAwareDateFormatting;\n","export const PD_BASE_CLASS = 'adyen-pe-payout-data';\nexport const PD_TITLE_CONTAINER_CLASS = `${PD_BASE_CLASS}__title-container`;\nexport const PD_TITLE_CLASS = `${PD_BASE_CLASS}__title`;\nexport const PD_TITLE_CLASS_WITH_EXTRA_DETAILS = `${PD_BASE_CLASS}__title--with-extra-details`;\nexport const PD_TITLE_BA_CLASS = `${PD_BASE_CLASS}__title--ba-id`;\nexport const PD_CONTENT_CLASS = `${PD_BASE_CLASS}__content`;\nexport const PD_EXTRA_DETAILS_CLASS = `${PD_BASE_CLASS}__extra-details`;\nexport const PD_EXTRA_DETAILS_LABEL = `${PD_BASE_CLASS}__extra-details-label`;\nexport const PD_EXTRA_DETAILS_ICON = `${PD_BASE_CLASS}__extra-details-icon`;\nexport const PD_BUTTON_ACTIONS = `${PD_BASE_CLASS}__button-actions`;\nexport const PD_SECTION_CLASS = `${PD_CONTENT_CLASS}--section`;\nexport const PD_CARD_CLASS = `${PD_CONTENT_CLASS}--card`;\nexport const PD_CARD_TITLE_CLASS = `${PD_CARD_CLASS}-title`;\nexport const PD_SECTION_AMOUNT_CLASS = `${PD_SECTION_CLASS}-amount`;\nexport const PD_SECTION_GROSS_AMOUNT_CLASS = `${PD_SECTION_AMOUNT_CLASS}-gross`;\nexport const PD_SECTION_NET_AMOUNT_CLASS = `${PD_SECTION_AMOUNT_CLASS}-net`;\nexport const PD_UNPAID_AMOUNT = `${PD_BASE_CLASS}--unpaid-amount`;\n","export enum TagVariant {\n    DEFAULT = 'default',\n    WARNING = 'warning',\n    ERROR = 'error',\n    SUCCESS = 'success',\n    WHITE = 'white',\n    LIGHT = 'light',\n    LIGHT_WITH_OUTLINE = 'light-with-outline',\n\n    // Adapted from the latest Bento tag variants spec\n    BLUE = 'blue',\n}\n\nexport interface TagProps {\n    variant?: TagVariant;\n    label: string;\n}\n","import cx from 'classnames';\nimport { TagProps, TagVariant } from './types';\nimport './Tag.scss';\nimport { memo } from 'preact/compat';\nexport const Tag = memo(({ variant = TagVariant.DEFAULT, label }: TagProps) => {\n    return (\n        <div\n            className={cx('adyen-pe-tag', {\n                // [TODO]: These Bento tag variants definitions are outdated\n                'adyen-pe-tag--success': variant === TagVariant.SUCCESS,\n                'adyen-pe-tag--default': variant === TagVariant.DEFAULT,\n                'adyen-pe-tag--warning': variant === TagVariant.WARNING,\n                'adyen-pe-tag--error': variant === TagVariant.ERROR,\n                'adyen-pe-tag--primary': variant === TagVariant.WHITE,\n                'adyen-pe-tag--light': variant === TagVariant.LIGHT,\n                'adyen-pe-tag--light-with-outline': variant === TagVariant.LIGHT_WITH_OUTLINE,\n                // Adopted from the latest Bento tag variants spec\n                'adyen-pe-tag--blue': variant === TagVariant.BLUE,\n            })}\n        >\n            {label}\n        </div>\n    );\n});\n","import './Icon.scss';\nimport cx from 'classnames';\nimport { JSX } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\n\nconst icons = {\n    'angle-right': () => import('../../../images/icons/angle-right.svg?component'),\n    'checkmark-circle-fill': () => import('../../../images/icons/checkmark-circle-fill.svg?component'),\n    'checkmark-square-fill': () => import('../../../images/icons/checkmark-square-fill.svg?component'),\n    checkmark: () => import('../../../images/icons/checkmark.svg?component'),\n    'chevron-down': () => import('../../../images/icons/chevron-down.svg?component'),\n    'chevron-left': () => import('../../../images/icons/chevron-left.svg?component'),\n    'chevron-right': () => import('../../../images/icons/chevron-right.svg?component'),\n    'chevron-up': () => import('../../../images/icons/chevron-up.svg?component'),\n    copy: () => import('../../../images/icons/copy.svg?component'),\n    'cross-circle-fill': () => import('../../../images/icons/cross-circle-fill.svg?component'),\n    cross: () => import('../../../images/icons/cross.svg?component'),\n    download: () => import('../../../images/icons/download.svg?component'),\n    'external-link': () => import('../../../images/icons/external-link.svg?component'),\n    filter: () => import('../../../images/icons/filter.svg?component'),\n    'info-filled': () => import('../../../images/icons/info-filled.svg?component'),\n    'minus-circle-outline': () => import('../../../images/icons/minus-circle-outline.svg?component'),\n    'plus-circle-outline': () => import('../../../images/icons/plus-circle-outline.svg?component'),\n    square: () => import('../../../images/icons/square.svg?component'),\n    'trash-can': () => import('../../../images/icons/trash-can.svg?component'),\n    upload: () => import('../../../images/icons/upload.svg?component'),\n    'warning-filled': () => import('../../../images/icons/warning-filled.svg?component'),\n    warning: () => import('../../../images/icons/warning.svg?component'),\n} as const;\n\nexport type IconName = keyof typeof icons;\n\n/**\n * Props for the Icon component.\n */\ninterface IconProps {\n    /**\n     * The name of the icon to be displayed.\n     */\n    name: IconName;\n\n    /**\n     * Optional class name(s) for styling the icon.\n     */\n    className?: string;\n\n    /**\n     * Any additional attributes or properties that can be passed to the icon element (e.g., role, aria-label, etc.).\n     */\n    [key: string]: any;\n}\n\nexport const Icon = ({ className, name, ...props }: IconProps) => {\n    const [IconComponent, setIconComponent] = useState<JSX.Element | null>(null);\n\n    useEffect(() => {\n        if (icons[name]) {\n            icons[name]().then(({ default: LoadedIcon }) => {\n                setIconComponent(<LoadedIcon />);\n            });\n        } else {\n            setIconComponent(null);\n            console.error(`Icon with name \"${name}\" does not exist.`);\n        }\n    }, [name]);\n\n    return (\n        IconComponent && (\n            <span className={cx('adyen-pe-icon', className)} role=\"img\" aria-hidden {...props}>\n                {IconComponent}\n            </span>\n        )\n    );\n};\n\nexport default Icon;\n","import Typography from '../Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../Typography/types';\nimport { LinkProps } from './types';\nimport { PropsWithChildren, TargetedEvent } from 'preact/compat';\nimport cx from 'classnames';\nimport { useCallback } from 'preact/hooks';\nimport './Link.scss';\nimport Icon from '../Icon';\n\nfunction Link({\n    href,\n    children,\n    variant = 'default',\n    truncate,\n    target = '_blank',\n    withIcon = true,\n    classNames = [],\n    ...props\n}: PropsWithChildren<LinkProps>) {\n    const onClick = useCallback((e: TargetedEvent<HTMLAnchorElement>) => e.stopPropagation(), []);\n    return (\n        <a\n            className={cx('adyen-pe-link', [...classNames], {\n                [`adyen-pe-link--${variant}`]: variant !== 'default',\n                'adyen-pe-link--truncate': truncate,\n            })}\n            href={href}\n            target={target}\n            rel=\"noopener noreferrer\"\n            onClick={onClick}\n            {...props}\n        >\n            <Typography className=\"adyen-pe-link__text\" el={TypographyElement.SPAN} variant={TypographyVariant.BODY}>\n                {children}\n            </Typography>\n            {withIcon && target === '_blank' && <Icon name=\"external-link\" />}\n        </a>\n    );\n}\n\nexport default Link;\n","import cx from 'classnames';\n\nconst Icon = ({ className, alt, url }: { className?: string; alt?: string; url: string }) => {\n    return (\n        <div className=\"adyen-pe-data-grid__icon-container\">\n            <img className={cx('adyen-pe-data-grid__icon', className)} alt={alt} src={url} />\n        </div>\n    );\n};\n\nexport default Icon;\n","import { createContext } from 'preact';\nimport { useContext } from 'preact/hooks';\nimport { DataGridContextProps } from '../types';\nimport { EMPTY_OBJECT } from '../../../../utils';\n\nexport const DataGridContext = createContext<DataGridContextProps>(EMPTY_OBJECT as any);\n\nexport const useDataGridContext = () => useContext(DataGridContext);\n","import { HTMLAttributes, PropsWithChildren } from 'preact/compat';\nimport { useDataGridContext } from './hooks/useDataGridContext';\nimport { useEffect, useRef } from 'preact/hooks';\nimport { cloneElement, isValidElement } from 'preact';\nimport cx from 'classnames';\nimport { CellTextPosition } from './types';\n\nexport default function DataGridCell({\n    children,\n    column,\n    position,\n    ...props\n}: PropsWithChildren<HTMLAttributes<HTMLDivElement>> & { column: string; position?: string }) {\n    const { registerCells } = useDataGridContext();\n    const ref = useRef<HTMLDivElement>(null);\n\n    useEffect(() => {\n        if (ref.current) {\n            registerCells({\n                column,\n                width: ref.current?.getBoundingClientRect().width,\n            });\n        }\n    }, [column, registerCells]);\n\n    return (\n        <div\n            role=\"cell\"\n            className={cx('adyen-pe-data-grid__cell', {\n                'adyen-pe-data-grid__cell--right': position === 'right',\n                'adyen-pe-data-grid__cell--center': position === 'center',\n            })}\n            {...props}\n        >\n            {children && isValidElement(children)\n                ? cloneElement(children, {\n                      ...children?.props,\n                      ref: ref,\n                      style: { width: 'min-content' },\n                  })\n                : null}\n        </div>\n    );\n}\n","import DataGridCell from '../DataGridCell';\nimport { DataGridColumn } from '../types';\nimport { CustomCell } from '../DataGrid';\nimport Icon from './Icon';\nimport { CustomButtonObject, CustomDataObject, CustomIconObject, CustomLinkObject } from '../../../types';\nimport Button from '../../Button';\nimport { JSXInternal } from 'preact/src/jsx';\nimport Link from '../../Link/Link';\nimport { ButtonVariant } from '../../Button/types';\nimport cx from 'classnames';\n\nexport const isCustomDataObject = (item: any): item is CustomDataObject => {\n    return !!item && typeof item === 'object' && 'value' in item;\n};\n\nconst _isIconType = (item: any): item is CustomIconObject => {\n    return !!item && typeof item === 'object' && item.type === 'icon';\n};\n\nconst _isButtonType = (item: any): item is CustomButtonObject => {\n    return !!item && typeof item === 'object' && item.type === 'button';\n};\n\nconst _isLinkType = (item: any): item is CustomLinkObject => {\n    return !!item && typeof item === 'object' && item.type === 'link';\n};\n\nexport const TableCells = <\n    Items extends Array<any>,\n    Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n    CustomCells extends CustomCell<Items, Columns, Columns[number]>\n>({\n    columns,\n    customCells,\n    item,\n    rowIndex,\n}: {\n    columns: Columns;\n    customCells?: CustomCells;\n    item: Items[number];\n    rowIndex: number;\n}) => {\n    return (\n        <>\n            {columns.map(({ key, position }) => {\n                if (customCells?.[key])\n                    return (\n                        <DataGridCell aria-labelledby={String(key)} key={key} column={key} position={position}>\n                            <div style={{ width: 'min-content' }}>\n                                {\n                                    // TODO create safeguard to remove \"as any\" assertion\n                                    customCells[key]!({\n                                        key,\n                                        value: item[key],\n                                        item,\n                                        rowIndex,\n                                    } as any)\n                                }\n                            </div>\n                        </DataGridCell>\n                    );\n\n                const data = item[key] as CustomDataObject;\n\n                const { value, type } = isCustomDataObject(data) ? data : { value: data, type: 'text' };\n\n                const icon = _isIconType(data)\n                    ? { url: data?.config?.src, alt: data?.config?.alt !== undefined && data?.config?.alt !== null ? data?.config?.alt : data.value }\n                    : undefined;\n                const buttonCallback = _isButtonType(data)\n                    ? (e: JSXInternal.TargetedMouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n                          e.stopPropagation();\n                          data?.config?.action();\n                      }\n                    : undefined;\n\n                return (\n                    <DataGridCell aria-labelledby={String(key)} key={key} column={key} position={position}>\n                        <div className=\"adyen-pe-data-grid__cell-value\">\n                            {_isIconType(data) && data.config && icon?.url && (\n                                <div className={cx('adyen-pe-data-grid__icon-cell', data?.config?.className)}>\n                                    <Icon {...icon} />\n                                    {value.trim() && <span>{value}</span>}\n                                </div>\n                            )}\n                            {type === 'text' && <span className={cx(data?.config?.className)}>{value}</span>}\n                            {type === 'button' && data.config && buttonCallback && (\n                                <Button className={cx(data.config?.className)} onClick={buttonCallback} variant={ButtonVariant.SECONDARY}>\n                                    {value}\n                                </Button>\n                            )}\n                            {_isLinkType(data) && data.config && (\n                                <Link\n                                    classNames={data.config.className ? [data.config.className] : []}\n                                    href={data.config.href}\n                                    target={data.config.target}\n                                >\n                                    {value}\n                                </Link>\n                            )}\n                        </div>\n                    </DataGridCell>\n                );\n            })}\n        </>\n    );\n};\n","import { ButtonVariant } from '../types';\nimport { ComponentChild } from 'preact';\n\nexport interface ButtonActionObject {\n    title: string;\n    event: (event: Event) => void;\n    icon?: Node;\n    disabled?: boolean;\n    variant?: ButtonVariant;\n    renderTitle?: (title: string) => ComponentChild;\n    state?: 'loading' | 'default';\n    classNames?: string[];\n}\n\nexport type ButtonActionsList = ButtonActionObject[] | readonly ButtonActionObject[];\n\nexport enum ButtonActionsLayoutBasic {\n    BUTTONS_END = 'buttons-end',\n    FILL_CONTAINER = 'fill-container',\n    SPACE_BETWEEN = 'space-between',\n    VERTICAL_STACK = 'vertical-stack',\n}\n\nexport enum ButtonActionsLayoutExtended {\n    BUTTONS_START = 'buttons-start',\n}\n\nexport const ButtonActionsLayout = { ...ButtonActionsLayoutBasic, ...ButtonActionsLayoutExtended };\nexport type ButtonActionsLayout = ButtonActionsLayoutBasic | ButtonActionsLayoutExtended;\n","import Button from '../../Button';\nimport { ButtonActionsLayout, ButtonActionsList } from './types';\nimport { BUTTON_ACTION_CLASSNAME, BUTTON_ACTION_CONTAINER_CLASSNAME } from '../constants';\nimport { ButtonVariant } from '../types';\nimport './ButtonActions.scss';\nimport { memo } from 'preact/compat';\nimport { useMemo } from 'preact/hooks';\nimport cx from 'classnames';\n\ninterface ButtonActionsProps {\n    actions: ButtonActionsList;\n    layout?: ButtonActionsLayout;\n}\nfunction ButtonActions({ actions, layout = ButtonActionsLayout.BUTTONS_END }: ButtonActionsProps) {\n    const conditionalClasses = (): string => {\n        return `${BUTTON_ACTION_CLASSNAME}--${layout}`;\n    };\n\n    const generateButtonVariantByIndex = (actionIndex: number) => {\n        const lastActionIndex = actions.length - 1;\n        return actionIndex === lastActionIndex ? ButtonVariant.PRIMARY : ButtonVariant.SECONDARY;\n    };\n\n    const reversedActions = useMemo(() => [...actions].reverse(), [actions]);\n\n    return (\n        <div className={BUTTON_ACTION_CLASSNAME}>\n            <div className={`${BUTTON_ACTION_CONTAINER_CLASSNAME} ${conditionalClasses()}`} role=\"group\">\n                {reversedActions.map((button, index) => (\n                    <Button\n                        className={cx(button.classNames)}\n                        aria-label={button.title}\n                        key={`${index}_${button.title || '0'}`}\n                        disabled={button.disabled}\n                        variant={button.variant || generateButtonVariantByIndex(index)}\n                        onClick={button.event}\n                        state={button.state ?? 'default'}\n                    >\n                        {button.renderTitle ? button.renderTitle(button.title) : button.title}\n                    </Button>\n                ))}\n            </div>\n        </div>\n    );\n}\n\nexport default memo(ButtonActions);\n","import classnames from 'classnames';\nimport { useMemo } from 'preact/hooks';\nimport useCoreContext from '../../../../core/Context/useCoreContext';\nimport { TranslationKey } from '../../../../translations';\nimport { IPayoutDetails } from '../../../../types';\nimport { EMPTY_OBJECT } from '../../../../utils';\nimport Accordion from '../../../internal/Accordion/Accordion';\nimport Card from '../../../internal/Card/Card';\nimport { DATE_FORMAT_PAYOUT_DETAILS } from '../../../../constants';\nimport StructuredList from '../../../internal/StructuredList';\nimport { ListValue, StructuredListProps } from '../../../internal/StructuredList/types';\nimport { TypographyVariant } from '../../../internal/Typography/types';\nimport Typography from '../../../internal/Typography/Typography';\nimport DataOverviewDetailsSkeleton from '../../../internal/DataOverviewDetails/DataOverviewDetailsSkeleton';\nimport useTimezoneAwareDateFormatting from '../../../../hooks/useTimezoneAwareDateFormatting';\nimport './PayoutData.scss';\nimport {\n    PD_BASE_CLASS,\n    PD_BUTTON_ACTIONS,\n    PD_CARD_CLASS,\n    PD_CARD_TITLE_CLASS,\n    PD_CONTENT_CLASS,\n    PD_EXTRA_DETAILS_CLASS,\n    PD_EXTRA_DETAILS_ICON,\n    PD_EXTRA_DETAILS_LABEL,\n    PD_SECTION_AMOUNT_CLASS,\n    PD_SECTION_CLASS,\n    PD_SECTION_GROSS_AMOUNT_CLASS,\n    PD_SECTION_NET_AMOUNT_CLASS,\n    PD_TITLE_BA_CLASS,\n    PD_TITLE_CLASS,\n    PD_TITLE_CONTAINER_CLASS,\n    PD_TITLE_CLASS_WITH_EXTRA_DETAILS,\n    PD_UNPAID_AMOUNT,\n} from './constants';\nimport { Tag } from '../../../internal/Tag/Tag';\nimport { TagVariant } from '../../../internal/Tag/types';\nimport Link from '../../../internal/Link/Link';\nimport Icon from '../../../internal/DataGrid/components/Icon';\nimport { isCustomDataObject } from '../../../internal/DataGrid/components/TableCells';\nimport cx from 'classnames';\nimport { ButtonVariant } from '../../../internal/Button/types';\nimport { ButtonActionsLayoutBasic } from '../../../internal/Button/ButtonActions/types';\nimport ButtonActions from '../../../internal/Button/ButtonActions/ButtonActions';\nimport { PayoutDetailsCustomization } from '../types';\n\nexport const PayoutData = ({\n    balanceAccountId,\n    balanceAccountDescription,\n    payout: payoutData,\n    extraFields,\n}: {\n    payout?: IPayoutDetails;\n    isFetching?: boolean;\n    balanceAccountId: string;\n    balanceAccountDescription?: string;\n    extraFields?: Record<string, any> | undefined;\n    dataCustomization?: { details?: PayoutDetailsCustomization };\n}) => {\n    const { payout } = payoutData ?? (EMPTY_OBJECT as NonNullable<typeof payoutData>);\n    const { dateFormat } = useTimezoneAwareDateFormatting('UTC');\n    const { i18n } = useCoreContext();\n\n    const adjustments = useMemo(() => {\n        const data = payoutData?.amountBreakdowns?.adjustmentBreakdown?.reduce(\n            (accumulator, currentValue) => {\n                const payoutValue =\n                    currentValue?.amount?.value && currentValue?.amount?.currency\n                        ? i18n.amount(currentValue?.amount?.value, currentValue?.amount?.currency, { hideCurrency: true })\n                        : (currentValue?.amount?.value ?? '').toString();\n                const translationKey = `${currentValue?.category}` as TranslationKey;\n                const categoryTranslation = i18n.get(translationKey);\n                const categoryLabel = currentValue?.category && categoryTranslation !== translationKey ? categoryTranslation : currentValue?.category;\n\n                if (currentValue?.category && payoutValue && categoryLabel) {\n                    const targetObj = accumulator[currentValue?.amount?.value && currentValue?.amount?.value < 0 ? 'subtractions' : 'additions'];\n                    targetObj.push({ key: categoryLabel as TranslationKey, value: payoutValue });\n                }\n                return accumulator;\n            },\n            { subtractions: [] as { key: TranslationKey; value: ListValue }[], additions: [] as { key: TranslationKey; value: ListValue }[] }\n        );\n        data?.subtractions.sort((a, b) => a.key.localeCompare(b.key));\n        data?.additions.sort((a, b) => a.key.localeCompare(b.key));\n        return data;\n    }, [i18n, payoutData]);\n\n    const fundsCaptured = useMemo(() => {\n        const data = payoutData?.amountBreakdowns?.fundsCapturedBreakdown?.reduce((items, breakdown) => {\n            if (breakdown?.amount?.value === 0) return items;\n            if (breakdown?.amount?.value && breakdown.category) {\n                items.push({\n                    key: breakdown.category as TranslationKey,\n                    value: i18n.amount(breakdown?.amount?.value, breakdown?.amount?.currency, { hideCurrency: true }),\n                });\n            }\n            return items;\n        }, [] as { key: TranslationKey; value: ListValue }[]);\n        data?.sort((a, b) => {\n            if (a.key === 'capture') return -1;\n            if (b.key === 'capture') return 1;\n            return a.key.localeCompare(b.key);\n        });\n        return data;\n    }, [payoutData, i18n]);\n\n    const creationDate = useMemo(\n        () => (payout?.createdAt ? dateFormat(new Date(payout?.createdAt), DATE_FORMAT_PAYOUT_DETAILS) : ''),\n        [payout, dateFormat]\n    );\n\n    const extraDetails: StructuredListProps['items'] =\n        Object.entries(extraFields || {})\n            .filter(([, field]) => field.type !== 'button' && field.visibility !== 'hidden')\n            .map(([key, value]) => ({\n                key: key as TranslationKey,\n                value: isCustomDataObject(value) ? value.value : value,\n                type: isCustomDataObject(value) ? value.type : 'text',\n                config: isCustomDataObject(value) ? value.config : undefined,\n            })) || [];\n\n    const buttonActions = useMemo(() => {\n        const extraActions = extraFields\n            ? Object.values(extraFields)\n                  .filter(field => field.type === 'button')\n                  .map(field => ({\n                      title: field.value,\n                      variant: ButtonVariant.SECONDARY,\n                      event: field.config?.action,\n                      classNames: field?.config?.className ? [field?.config?.className] : [],\n                  }))\n            : [];\n        const actions = [...extraActions].filter(Boolean);\n        return actions;\n    }, [extraFields]);\n\n    return (\n        <>\n            {!payout ? (\n                <DataOverviewDetailsSkeleton skeletonRowNumber={6} />\n            ) : (\n                <div className={PD_BASE_CLASS}>\n                    <div\n                        className={cx(PD_TITLE_CLASS, {\n                            [PD_TITLE_CLASS_WITH_EXTRA_DETAILS]: extraDetails.length,\n                        })}\n                    >\n                        <div className={PD_TITLE_CONTAINER_CLASS}>\n                            <Typography variant={TypographyVariant.SUBTITLE} stronger>\n                                {i18n.get('netPayout')}\n                            </Typography>\n                            {payout.isSumOfSameDayPayouts && <Tag variant={TagVariant.BLUE} label={i18n.get('sumOfSameDayPayouts')}></Tag>}\n                        </div>\n                        <Typography variant={TypographyVariant.TITLE} large>\n                            {`${i18n.amount(payout.payoutAmount.value, payout.payoutAmount.currency, {\n                                hideCurrency: true,\n                            })} ${payout.payoutAmount.currency}`}\n                        </Typography>\n                        <Typography variant={TypographyVariant.BODY}>{creationDate}</Typography>\n                        <div className={PD_SECTION_CLASS}>\n                            {balanceAccountDescription && (\n                                <Typography variant={TypographyVariant.CAPTION} stronger wide>\n                                    {`${balanceAccountDescription}`}\n                                </Typography>\n                            )}\n                            <Typography variant={TypographyVariant.CAPTION} className={PD_TITLE_BA_CLASS}>{`${balanceAccountId}`}</Typography>\n                        </div>\n                    </div>\n                    {extraDetails && extraDetails.length > 0 ? (\n                        <div>\n                            <StructuredList\n                                classNames={PD_EXTRA_DETAILS_CLASS}\n                                items={extraDetails}\n                                align=\"start\"\n                                layout=\"5-7\"\n                                renderLabel={label => <div className={PD_EXTRA_DETAILS_LABEL}>{label}</div>}\n                                renderValue={(val, key, type, config) => {\n                                    if (type === 'link' && config) {\n                                        return (\n                                            <Link classNames={[cx(config?.className)]} href={config.href} target={config.target || '_blank'}>\n                                                {val}\n                                            </Link>\n                                        );\n                                    }\n                                    if (type === 'icon' && config) {\n                                        const icon = { url: config.src, alt: config.alt || val };\n                                        return (\n                                            <div className={cx(PD_EXTRA_DETAILS_ICON, config?.className)}>\n                                                <Icon {...icon} />\n                                                <Typography variant={TypographyVariant.BODY}>{val}</Typography>\n                                            </div>\n                                        );\n                                    }\n                                    return (\n                                        <Typography className={cx(config?.className)} variant={TypographyVariant.BODY}>\n                                            {val}\n                                        </Typography>\n                                    );\n                                }}\n                            />\n                        </div>\n                    ) : null}\n                    <div className={PD_CONTENT_CLASS}>\n                        <div className={PD_SECTION_CLASS}>\n                            {payout?.fundsCapturedAmount &&\n                                (fundsCaptured && Object.keys(fundsCaptured).length > 0 ? (\n                                    <Accordion\n                                        header={<Typography variant={TypographyVariant.BODY}>{i18n.get('fundsCaptured')}</Typography>}\n                                        headerInformation={\n                                            <Typography variant={TypographyVariant.BODY}>\n                                                {i18n.amount(payout.fundsCapturedAmount.value, payout.fundsCapturedAmount.currency)}\n                                            </Typography>\n                                        }\n                                    >\n                                        <div className={PD_SECTION_CLASS}>\n                                            {\n                                                <div className={PD_CARD_CLASS}>\n                                                    <Card noPadding>\n                                                        <StructuredList items={fundsCaptured} />\n                                                    </Card>\n                                                </div>\n                                            }\n                                        </div>\n                                    </Accordion>\n                                ) : (\n                                    <div className={classnames(PD_SECTION_AMOUNT_CLASS, PD_SECTION_GROSS_AMOUNT_CLASS)}>\n                                        <Typography variant={TypographyVariant.BODY}>{i18n.get('fundsCaptured')}</Typography>\n                                        <Typography variant={TypographyVariant.BODY}>\n                                            {i18n.amount(payout.fundsCapturedAmount.value, payout.fundsCapturedAmount.currency)}\n                                        </Typography>\n                                    </div>\n                                ))}\n                        </div>\n                        <div className={PD_SECTION_CLASS}>\n                            {(adjustments?.subtractions && Object.keys(adjustments?.subtractions).length > 0) ||\n                            (adjustments?.additions && Object.keys(adjustments?.additions).length > 0) ? (\n                                <Accordion\n                                    header={<Typography variant={TypographyVariant.BODY}>{i18n.get('adjustments')}</Typography>}\n                                    headerInformation={\n                                        <Typography variant={TypographyVariant.BODY}>\n                                            {i18n.amount(payout.adjustmentAmount.value, payout.adjustmentAmount.currency)}\n                                        </Typography>\n                                    }\n                                >\n                                    {adjustments?.additions && Object.keys(adjustments?.additions).length > 0 && (\n                                        <div className={PD_CARD_CLASS}>\n                                            <Card\n                                                noPadding\n                                                renderHeader={\n                                                    <Typography className={PD_CARD_TITLE_CLASS} variant={TypographyVariant.CAPTION} stronger>\n                                                        {i18n.get('additions')}\n                                                    </Typography>\n                                                }\n                                            >\n                                                <StructuredList items={adjustments?.additions} />\n                                            </Card>\n                                        </div>\n                                    )}\n                                    {adjustments?.subtractions && Object.keys(adjustments?.subtractions).length > 0 && (\n                                        <div className={PD_CARD_CLASS}>\n                                            <Card\n                                                noPadding\n                                                renderHeader={\n                                                    <Typography className={PD_CARD_TITLE_CLASS} variant={TypographyVariant.CAPTION} stronger>\n                                                        {i18n.get('subtractions')}\n                                                    </Typography>\n                                                }\n                                            >\n                                                <StructuredList items={adjustments?.subtractions} />\n                                            </Card>\n                                        </div>\n                                    )}\n                                </Accordion>\n                            ) : (\n                                <div className={classnames(PD_SECTION_AMOUNT_CLASS, PD_SECTION_GROSS_AMOUNT_CLASS)}>\n                                    <Typography variant={TypographyVariant.BODY}>{i18n.get('adjustments')}</Typography>\n                                    <Typography variant={TypographyVariant.BODY}>\n                                        {i18n.amount(payout.adjustmentAmount.value, payout.adjustmentAmount.currency)}\n                                    </Typography>\n                                </div>\n                            )}\n                        </div>\n                        <div className={classnames(PD_SECTION_CLASS)}>\n                            <div className={classnames(PD_SECTION_AMOUNT_CLASS, PD_SECTION_NET_AMOUNT_CLASS)}>\n                                <Typography variant={TypographyVariant.BODY} stronger>\n                                    {i18n.get('netPayout')}\n                                </Typography>\n                                <Typography variant={TypographyVariant.BODY} stronger>\n                                    {i18n.amount(payout.payoutAmount.value, payout.payoutAmount.currency)}\n                                </Typography>\n                            </div>\n                        </div>\n                    </div>\n                    {payoutData?.payout?.unpaidAmount && (\n                        <div className={PD_UNPAID_AMOUNT}>\n                            <Typography variant={TypographyVariant.BODY}>{i18n.get('remainingAmount')}</Typography>\n                            <Typography variant={TypographyVariant.BODY}>\n                                {i18n.amount(payoutData.payout.unpaidAmount.value, payoutData.payout.unpaidAmount.currency)}\n                            </Typography>\n                        </div>\n                    )}\n                    {buttonActions.length ? (\n                        <div className={PD_BUTTON_ACTIONS}>\n                            <ButtonActions actions={buttonActions} layout={ButtonActionsLayoutBasic.BUTTONS_END} />\n                        </div>\n                    ) : null}\n                </div>\n            )}\n        </>\n    );\n};\n","import { ComponentChild, VNode } from 'preact';\nimport { JSXInternal } from 'preact/src/jsx';\n\nexport interface AlertProps {\n    className?: string;\n    type: AlertTypeOption;\n    title?: VNode<Element> | string;\n    description?: VNode<Element> | string;\n    children?: ComponentChild;\n    onClose?: (event: JSXInternal.TargetedMouseEvent<HTMLButtonElement>) => void;\n    variant?: AlertVariantOption;\n}\n\nexport enum AlertTypeOption {\n    WARNING = 'warning',\n    CRITICAL = 'critical',\n    HIGHLIGHT = 'highlight',\n    SUCCESS = 'success',\n}\n\nexport enum AlertVariantOption {\n    DEFAULT = 'default',\n    TIP = 'tip',\n}\n","import Icon from '../Icon';\nimport { AlertTypeOption } from './types';\n\nexport interface AlertIconProps {\n    type: AlertTypeOption;\n    className?: string;\n}\n\nexport const AlertIcon = ({ className, type }: AlertIconProps) => {\n    switch (type) {\n        case AlertTypeOption.WARNING:\n            return <Icon name=\"warning-filled\" className={className} />;\n        case AlertTypeOption.CRITICAL:\n            return <Icon name=\"cross-circle-fill\" className={className} />;\n        case AlertTypeOption.HIGHLIGHT:\n            return <Icon name=\"info-filled\" className={className} />;\n        case AlertTypeOption.SUCCESS:\n        default:\n            return <Icon name=\"checkmark-circle-fill\" className={className} />;\n    }\n};\n","import cx from 'classnames';\nimport Button from '../Button';\nimport { ButtonVariant } from '../Button/types';\nimport Icon from '../Icon';\nimport { TypographyElement, TypographyVariant } from '../Typography/types';\nimport Typography from '../Typography/Typography';\nimport { AlertIcon } from './AlertIcon';\nimport { AlertProps, AlertVariantOption } from './types';\nimport './Alert.scss';\n\nexport const Alert = ({ className, description, title, type, children, onClose, variant = AlertVariantOption.DEFAULT }: AlertProps) => (\n    <div className={cx('adyen-pe-alert', `adyen-pe-alert--${type}`, `adyen-pe-alert--${variant}`, className)} role=\"alert\">\n        <AlertIcon type={type} className=\"adyen-pe-alert__icon\" />\n        <div className={'adyen-pe-alert__content'}>\n            {title && variant !== AlertVariantOption.TIP && (\n                <Typography className={'adyen-pe-alert__title'} el={TypographyElement.DIV} variant={TypographyVariant.BODY} wide strongest>\n                    {title}\n                </Typography>\n            )}\n            {description && (\n                <Typography\n                    className={'adyen-pe-alert__description'}\n                    el={TypographyElement.DIV}\n                    variant={variant !== AlertVariantOption.TIP ? TypographyVariant.CAPTION : TypographyVariant.BODY}\n                    wide\n                >\n                    {description}\n                </Typography>\n            )}\n            {children}\n        </div>\n        {onClose && variant !== AlertVariantOption.TIP && (\n            <div className=\"adyen-pe-alert__close-button\">\n                <Button iconButton variant={ButtonVariant.TERTIARY} onClick={onClose}>\n                    <Icon name=\"cross\" />\n                </Button>\n            </div>\n        )}\n    </div>\n);\n\nexport default Alert;\n","import type { PropsWithChildren } from 'preact/compat';\nimport type { ButtonActionObject } from '../../../internal/Button/ButtonActions/types';\nimport { ILineItem, IRefundReason } from '../../../../types';\n\nexport const enum ActiveView {\n    DETAILS,\n    REFUND,\n    REFUND_SUCCESS,\n    REFUND_ERROR,\n}\n\nexport const enum RefundedState {\n    INDETERMINATE,\n    PARTIAL,\n    FULL,\n}\n\nexport const enum RefundMode {\n    NON_REFUNDABLE = 'non_refundable',\n    PARTIAL_AMOUNT = 'partially_refundable_any_amount',\n    PARTIAL_LINE_ITEMS = 'partially_refundable_with_line_items_required',\n    FULL_AMOUNT = 'fully_refundable_only',\n}\n\nexport const enum RefundStatus {\n    IN_PROGRESS = 'in_progress',\n    COMPLETED = 'completed',\n    FAILED = 'failed',\n}\n\nexport const enum RefundType {\n    PARTIAL = 'partial',\n    FULL = 'full',\n}\n\nexport type RefundReason = IRefundReason;\n\ntype _TransactionDataContextBase<T extends TransactionDataContextProviderProps> = Omit<T, _TransactionDataContextExcludedProps> & {\n    primaryAction: () => void;\n    secondaryAction: () => void;\n};\n\nexport type _TransactionDataContextExcludedProps =\n    | 'children'\n    | 'lineItems'\n    | 'refundAmount'\n    | 'refundAvailable'\n    | 'refundDisabled'\n    | 'setActiveView'\n    | 'setPrimaryAction'\n    | 'setSecondaryAction';\n\nexport type TransactionDataContext<T extends TransactionDataContextProviderProps> = _TransactionDataContextBase<T>;\n\nexport interface TransactionDataContextProviderProps extends PropsWithChildren {\n    lineItems: readonly ILineItem[];\n    refundAvailable: boolean;\n    refundDisabled: boolean;\n    setActiveView: (activeView: ActiveView) => void;\n    setPrimaryAction: (action: ButtonActionObject | undefined) => void;\n    setSecondaryAction: (action: ButtonActionObject | undefined) => void;\n}\n","import { memo } from 'preact/compat';\nimport { createContext } from 'preact';\nimport { useCallback, useContext, useEffect, useMemo } from 'preact/hooks';\nimport { EMPTY_ARRAY, EMPTY_OBJECT, noop } from '../../../../../utils';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport Icon from '../../../../internal/Icon';\nimport type { ButtonActionObject } from '../../../../internal/Button/ButtonActions/types';\nimport type { ITransactionDetailsContext, TransactionDetailsProviderProps } from './types';\nimport type { TranslationKey } from '../../../../../translations';\nimport { ButtonVariant } from '../../../../internal/Button/types';\nimport { ActiveView } from '../types';\n\nconst TransactionDetailsContext = createContext<ITransactionDetailsContext>({\n    availableItems: EMPTY_ARRAY,\n    primaryAction: noop,\n    secondaryAction: noop,\n    transaction: EMPTY_OBJECT as ITransactionDetailsContext['transaction'],\n    extraFields: EMPTY_OBJECT,\n    dataCustomization: EMPTY_OBJECT,\n});\n\nconst enum TransactionNavigationAction {\n    FORWARD = 1,\n    BACKWARD,\n}\n\nexport const TransactionDetailsProvider = memo(\n    ({\n        children,\n        lineItems,\n        refundAvailable: primaryActionAvailable,\n        refundDisabled,\n        setActiveView,\n        setPrimaryAction,\n        setSecondaryAction,\n        transaction,\n        transactionNavigator,\n        extraFields,\n        dataCustomization,\n    }: TransactionDetailsProviderProps) => {\n        const { i18n } = useCoreContext();\n        const { currentTransaction, canNavigateBackward, canNavigateForward, backward, forward } = transactionNavigator;\n\n        const primaryActionLabel = useMemo(() => ({ title: i18n.get('refundAction') }), [i18n]);\n        const primaryActionDisabled = useMemo(() => !primaryActionAvailable || refundDisabled, [primaryActionAvailable, refundDisabled]);\n\n        const primaryAction = useCallback(\n            () => void (!primaryActionDisabled && setActiveView(ActiveView.REFUND)),\n            [primaryActionDisabled, setActiveView]\n        );\n\n        const _secondaryAction = useMemo<TransactionNavigationAction | undefined>(() => {\n            if (currentTransaction !== transaction.id) return;\n            if (canNavigateBackward) return TransactionNavigationAction.BACKWARD;\n            if (canNavigateForward) return TransactionNavigationAction.FORWARD;\n        }, [canNavigateBackward, canNavigateForward, currentTransaction, transaction]);\n\n        const secondaryAction = useCallback(() => {\n            switch (_secondaryAction) {\n                case TransactionNavigationAction.BACKWARD:\n                    return void backward();\n                case TransactionNavigationAction.FORWARD:\n                    return void forward();\n            }\n        }, [_secondaryAction, backward, forward]);\n\n        const secondaryActionLabel = useMemo(() => {\n            switch (_secondaryAction) {\n                case TransactionNavigationAction.BACKWARD:\n                    return {\n                        title: i18n.get('refund.returnToRefund' as TranslationKey),\n                        renderTitle: (title: string) => (\n                            <>\n                                <Icon style={{ transform: 'scaleX(-1)' }} name=\"angle-right\" />\n                                <span>{title}</span>\n                            </>\n                        ),\n                    };\n                case TransactionNavigationAction.FORWARD:\n                    return {\n                        title: i18n.get('refund.goToPayment' as TranslationKey),\n                        renderTitle: (title: string) => (\n                            <>\n                                <Icon name=\"angle-right\" />\n                                <span>{title}</span>\n                            </>\n                        ),\n                    };\n            }\n        }, [_secondaryAction, i18n]);\n\n        useEffect(() => {\n            setPrimaryAction(\n                primaryActionAvailable\n                    ? Object.freeze({\n                          disabled: primaryActionDisabled,\n                          event: primaryAction,\n                          variant: ButtonVariant.PRIMARY,\n                          ...primaryActionLabel,\n                      } as ButtonActionObject)\n                    : undefined\n            );\n        }, [primaryAction, primaryActionAvailable, primaryActionDisabled, primaryActionLabel, setPrimaryAction]);\n\n        useEffect(() => {\n            setSecondaryAction(\n                _secondaryAction && secondaryActionLabel\n                    ? Object.freeze({\n                          disabled: false,\n                          event: secondaryAction,\n                          variant: ButtonVariant.SECONDARY,\n                          ...secondaryActionLabel,\n                      } as ButtonActionObject)\n                    : undefined\n            );\n        }, [_secondaryAction, secondaryAction, secondaryActionLabel, setSecondaryAction]);\n\n        return (\n            <TransactionDetailsContext.Provider\n                value={{ availableItems: lineItems, primaryAction, secondaryAction, transaction, extraFields, dataCustomization }}\n            >\n                {children}\n            </TransactionDetailsContext.Provider>\n        );\n    }\n);\n\nexport const useTransactionDetailsContext = () => useContext(TransactionDetailsContext);\nexport default useTransactionDetailsContext;\n","export const REFUND_REASONS = Object.freeze(['requested_by_customer', 'issue_with_item_sold', 'fraudulent', 'duplicate', 'other'] as const);\n\nexport const REFUND_REFERENCE_CHAR_LIMIT = 80;\n","import { useCallback, useMemo } from 'preact/hooks';\nimport useCoreContext from '../../../../../../core/Context/useCoreContext';\nimport AuthSession from '../../../../../../core/ConfigContext/session/AuthSession';\nimport { ActiveView } from '../../types';\nimport type { ITransactionRefundContext, TransactionRefundProviderProps } from '../types';\nimport type { ITransaction, ITransactionRefundPayload } from '../../../../../../types';\n\ntype _BaseUseRefundActionProps = Pick<TransactionRefundProviderProps, 'refreshTransaction' | 'transactionId'> &\n    Pick<ITransactionRefundContext, 'refundReason'> & {\n        refundAmount: ITransaction['amount'];\n        refundInProgress: boolean;\n        refundTransaction: AuthSession['context']['endpoints']['initiateRefund'];\n        setActiveView: (activeView: ActiveView) => void;\n    };\n\nexport const useRefundAction = <T extends _BaseUseRefundActionProps>({\n    refundAmount: amount,\n    refundReason,\n    refundInProgress,\n    refundTransaction,\n    setActiveView,\n    transactionId,\n}: T) => {\n    const { i18n } = useCoreContext();\n\n    const refundAmountLabel = useMemo(() => {\n        const formattedAmount = i18n.amount(amount.value, amount.currency);\n        return { title: i18n.get('refundPayment', { values: { amount: formattedAmount } }) };\n    }, [amount, i18n]);\n\n    const refundPaymentLabel = useMemo(() => {\n        return { title: i18n.get('refundAction') };\n    }, [i18n]);\n    const refundingPaymentLabel = useMemo(\n        () => ({\n            title: `${i18n.get('inProgress')}..`,\n            state: 'loading',\n        }),\n        [i18n]\n    );\n\n    const refundParams = useMemo(\n        () => ({\n            path: { transactionId },\n        }),\n        [transactionId]\n    );\n\n    const refundPayload = useMemo<ITransactionRefundPayload>(\n        () => ({\n            amount,\n            refundReason,\n            // ...(refundMode === RefundMode.PARTIAL_LINE_ITEMS && { lineItems: [] }),\n        }),\n        [amount, refundReason]\n    );\n\n    const refundAction = useCallback(\n        // [TODO]: Fix broken/missing type inference for useMutation mutate()\n        () =>\n            refundTransaction?.(\n                {\n                    body: refundPayload,\n                    contentType: 'application/json',\n                },\n                refundParams\n            )\n                .then(() => {\n                    setActiveView(ActiveView.REFUND_SUCCESS);\n                })\n                .catch(() => {\n                    setActiveView(ActiveView.REFUND_ERROR);\n                }),\n        [refundTransaction, refundParams, refundPayload, setActiveView]\n    );\n\n    const refundActionLabel = useMemo(() => {\n        if (refundInProgress) return refundingPaymentLabel;\n        if (amount.value > 0) return refundAmountLabel;\n        return refundPaymentLabel;\n    }, [amount, refundInProgress, refundAmountLabel, refundPaymentLabel, refundingPaymentLabel]);\n\n    return { refundAction, refundActionLabel } as const;\n};\n","import { useRefundAction } from './useRefundAction';\nimport { useCallback, useEffect, useMemo } from 'preact/hooks';\nimport useCoreContext from '../../../../../../core/Context/useCoreContext';\nimport type { ITransactionRefundContext, TransactionRefundProviderProps } from '../types';\nimport { ButtonVariant } from '../../../../../internal/Button/types';\nimport { ActiveView } from '../../types';\n\ntype _BaseUseRefundContextActionsProps = Parameters<typeof useRefundAction>[0] &\n    Pick<TransactionRefundProviderProps, 'setActiveView' | 'setPrimaryAction' | 'setSecondaryAction'> &\n    Pick<ITransactionRefundContext, 'interactionsDisabled'>;\n\nexport const useRefundContextActions = <T extends _BaseUseRefundContextActionsProps>({\n    interactionsDisabled,\n    refundAmount,\n    setActiveView,\n    setPrimaryAction,\n    setSecondaryAction,\n    ...refundActionProps\n}: T) => {\n    const { refundAction, refundActionLabel: primaryActionLabel } = useRefundAction({ ...refundActionProps, refundAmount, setActiveView });\n    const { i18n } = useCoreContext();\n\n    const primaryActionDisabled = useMemo(() => interactionsDisabled || refundAmount.value <= 0, [refundAmount, interactionsDisabled]);\n    const primaryAction = useCallback(() => !primaryActionDisabled && refundAction(), [primaryActionDisabled, refundAction]);\n\n    const secondaryActionDisabled = interactionsDisabled;\n    const secondaryActionLabel = useMemo(() => i18n.get('back'), [i18n]);\n\n    const secondaryAction = useCallback(\n        () => void (!secondaryActionDisabled && setActiveView(ActiveView.DETAILS)),\n        [secondaryActionDisabled, setActiveView]\n    );\n\n    useEffect(() => {\n        setPrimaryAction(\n            Object.freeze({\n                disabled: primaryActionDisabled,\n                event: primaryAction,\n                variant: ButtonVariant.PRIMARY,\n                ...primaryActionLabel,\n            })\n        );\n    }, [primaryAction, primaryActionDisabled, primaryActionLabel, setPrimaryAction]);\n\n    useEffect(() => {\n        setSecondaryAction(\n            Object.freeze({\n                disabled: secondaryActionDisabled,\n                event: secondaryAction,\n                title: secondaryActionLabel,\n                variant: ButtonVariant.SECONDARY,\n            })\n        );\n    }, [secondaryAction, secondaryActionDisabled, secondaryActionLabel, setSecondaryAction]);\n\n    return { primaryAction, secondaryAction } as const;\n};\n","import { RefundMode } from '../../types';\nimport { clamp } from '../../../../../../utils';\nimport { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport type { ITransaction } from '../../../../../../types';\nimport type { ITransactionRefundContext } from '../types';\n\ntype _BaseUseRefundContextAmountProps = Pick<\n    ITransactionRefundContext,\n    'availableAmount' | 'currency' | 'interactionsDisabled' | 'items' | 'refundMode'\n>;\n\nexport const useRefundContextAmount = <T extends _BaseUseRefundContextAmountProps>({\n    availableAmount,\n    currency,\n    interactionsDisabled,\n    items,\n    refundMode,\n}: T) => {\n    const [refundAmount, setRefundAmount] = useState(0);\n\n    const _amount = useMemo(() => {\n        switch (refundMode) {\n            case RefundMode.NON_REFUNDABLE:\n                return 0;\n            case RefundMode.PARTIAL_LINE_ITEMS:\n            case RefundMode.PARTIAL_AMOUNT:\n                return refundAmount;\n            // case RefundMode.PARTIAL_LINE_ITEMS:\n            //     return items.reduce((total, { amount, quantity }) => total + amount * quantity, 0);\n            case RefundMode.FULL_AMOUNT:\n            default:\n                return availableAmount;\n        }\n    }, [availableAmount, items, refundMode, refundAmount]);\n\n    const amount = useMemo<Readonly<ITransaction['amount']>>(() => Object.freeze({ currency, value: _amount }), [_amount, currency]);\n    const canSetRefundAmount = useMemo(() => !interactionsDisabled && refundMode === RefundMode.PARTIAL_AMOUNT, [interactionsDisabled, refundMode]);\n\n    const setAmount = useCallback<ITransactionRefundContext['setAmount']>(\n        amount => void (canSetRefundAmount && setRefundAmount(clamp(0, amount, availableAmount))),\n        [availableAmount, canSetRefundAmount]\n    );\n\n    useEffect(() => {\n        setRefundAmount(availableAmount);\n    }, [availableAmount]);\n\n    return [amount, setAmount] as const;\n};\n","import { clamp, EMPTY_ARRAY, isUndefined } from '../../../../../utils';\nimport type { ITransactionRefundContext, TransactionRefundItem, TransactionRefundItemUpdates } from './types';\n\nconst _updateRefundItemQuantity = (\n    refundableItems: Map<string, TransactionRefundItem>,\n    nextRefundItems: ITransactionRefundContext['items'][number][],\n    refundItem: { id: string; quantity: number },\n    refundQuantity = 0\n) => {\n    const { ...refundableItem } = refundableItems.get(refundItem.id)!;\n    const quantity = clamp(0, Math.trunc(refundQuantity), (refundableItem.quantity += refundItem.quantity));\n\n    refundableItem.quantity -= quantity;\n    refundableItems.set(refundItem.id, Object.freeze(refundableItem));\n\n    if (quantity > 0) nextRefundItems.push(Object.freeze({ ...refundableItem, quantity }));\n};\n\nexport const updateRefundItems = (\n    refundableItems: Map<string, TransactionRefundItem>,\n    currentRefundItems: ITransactionRefundContext['items'],\n    refundItemUpdates = EMPTY_ARRAY as unknown as TransactionRefundItemUpdates\n): ITransactionRefundContext['items'] => {\n    const refundQuantities = new Map(refundItemUpdates?.map(({ id, quantity }) => [id, quantity]) ?? EMPTY_ARRAY);\n    const nextRefundItems = [] as (typeof currentRefundItems)[number][];\n\n    currentRefundItems.forEach(item => {\n        const refundQuantity = refundQuantities.get(item.id);\n\n        if (isUndefined(refundQuantity)) {\n            nextRefundItems.push(item);\n        } else if (refundQuantities.delete(item.id)) {\n            _updateRefundItemQuantity(refundableItems, nextRefundItems, item, refundQuantity);\n        }\n    });\n\n    refundQuantities.forEach((refundQuantity, id) => {\n        _updateRefundItemQuantity(refundableItems, nextRefundItems, { id, quantity: 0 }, refundQuantity);\n    });\n\n    return nextRefundItems.length > 0 ? Object.freeze(nextRefundItems) : EMPTY_ARRAY;\n};\n","import { EMPTY_ARRAY } from '../../../../../../utils';\nimport { updateRefundItems } from '../helpers';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport type { ITransactionRefundContext, TransactionRefundItem, TransactionRefundProviderProps } from '../types';\n\ntype _BaseUseRefundContextLineItemsProps = Pick<TransactionRefundProviderProps, 'currency' | 'lineItems'>;\n\nexport const useRefundContextLineItems = <T extends _BaseUseRefundContextLineItemsProps>({ currency, lineItems }: T) => {\n    const [items, setItems] = useState(EMPTY_ARRAY as ITransactionRefundContext['items']);\n\n    const refundableItems = useMemo(() => {\n        const items = lineItems\n            ?.filter(item => {\n                if (item.amountIncludingTax.currency !== currency) return;\n                const qty = item.availableQuantity;\n                return qty > 0 && Number.isFinite(qty) && Math.trunc(qty) === qty;\n            })\n            .map(\n                ({ id, ...item }) =>\n                    [\n                        id,\n                        Object.freeze({\n                            amount: item.amountIncludingTax.value,\n                            quantity: item.availableQuantity,\n                            id,\n                        }),\n                    ] as const\n            );\n\n        return new Map<string, TransactionRefundItem>(items ?? EMPTY_ARRAY);\n    }, [currency, lineItems]);\n\n    const availableItems = useMemo<ITransactionRefundContext['availableItems']>(\n        () => lineItems?.filter(({ id }) => refundableItems.has(id)) ?? EMPTY_ARRAY,\n        [items, lineItems, refundableItems]\n    );\n\n    const clearItems = useCallback<ITransactionRefundContext['clearItems']>(\n        function (ids) {\n            setItems(items => {\n                // prettier-ignore\n                const _items = arguments.length === 0\n                    ? new Map(items.map(({ id }) => [id, 0]))\n                    : new Map(ids?.map(id => [id, 0]) ?? EMPTY_ARRAY);\n\n                const itemUpdates = [..._items].map(([id, quantity]) => ({ id, quantity } as const));\n                return updateRefundItems(refundableItems, items, itemUpdates);\n            });\n        },\n        [refundableItems]\n    );\n\n    const updateItems = useCallback<ITransactionRefundContext['updateItems']>(\n        itemUpdates => setItems(items => updateRefundItems(refundableItems, items, itemUpdates)),\n        [refundableItems]\n    );\n\n    return { availableItems, clearItems, items, updateItems } as const;\n};\n","import { useCallback, useMemo, useState } from 'preact/hooks';\nimport type { ITransactionRefundContext } from '../types';\nimport { RefundMode, type RefundReason } from '../../types';\nimport { REFUND_REASONS } from '../../constants';\n\ntype _BaseUseRefundContextReasonProps = Pick<ITransactionRefundContext, 'interactionsDisabled' | 'refundMode'>;\n\nexport const useRefundContextReason = <T extends _BaseUseRefundContextReasonProps>({ interactionsDisabled, refundMode }: T) => {\n    const [refundReason, setReason] = useState<RefundReason>(REFUND_REASONS[0]);\n\n    const canSetRefundReason = useMemo(\n        // [TODO]: Remove refund mode check here and use the `refundable` field from `useTransactionRefundMetadata`\n        () => !interactionsDisabled && refundMode !== RefundMode.NON_REFUNDABLE,\n        [interactionsDisabled, refundMode]\n    );\n\n    const setRefundReason = useCallback<ITransactionRefundContext['setRefundReason']>(\n        reason => void (canSetRefundReason && setReason(reason)),\n        [canSetRefundReason]\n    );\n\n    return [refundReason, setRefundReason] as const;\n};\n","import { useState, useCallback, useRef, useMemo, useEffect } from 'preact/hooks';\nimport { ALREADY_RESOLVED_PROMISE, EMPTY_OBJECT, isFunction, isNumber, tryResolve } from '../../utils';\nimport { AdyenErrorResponse } from '../../core/Http/types';\n\ntype MutationOptions<ResponseType> = {\n    onSuccess?: (data: ResponseType) => void | Promise<void>;\n    onError?: (error: Error | AdyenErrorResponse) => void | Promise<void>;\n    onSettled?: (data: ResponseType | undefined, error: Error | AdyenErrorResponse | null) => void | Promise<void>;\n    retry?: number | boolean;\n    retryDelay?: number | ((retryAttempt: number) => number);\n    shouldRetry?: (error: AdyenErrorResponse) => boolean;\n};\ntype MutationStatus = 'idle' | 'loading' | 'success' | 'error';\n\nconst catchCallback = (reason: unknown) => {\n    setTimeout(() => {\n        throw reason;\n    }, 0);\n};\n\nfunction useMutation<queryFn extends (...args: any[]) => any, ResponseType extends Awaited<ReturnType<queryFn>>>({\n    queryFn,\n    options,\n}: {\n    queryFn: queryFn | undefined;\n    options?: MutationOptions<ResponseType>;\n}) {\n    const { retry = false, retryDelay = 1000, onSuccess, onError, onSettled, shouldRetry } = options || (EMPTY_OBJECT as NonNullable<typeof options>);\n\n    const [data, setData] = useState<ResponseType | null>(null);\n    const [error, setError] = useState<Error | AdyenErrorResponse | null>(null);\n    const [status, setStatus] = useState<MutationStatus>('idle');\n\n    // Use refs for mutable values that shouldn't trigger re-renders\n    const mountedRef = useRef(true);\n    const retryCountRef = useRef(0);\n\n    const reset = useCallback(() => {\n        setData(null);\n        setError(null);\n        setStatus('idle');\n        retryCountRef.current = 0;\n    }, []);\n\n    const resetRetries = useCallback(() => {\n        retryCountRef.current = 0;\n    }, []);\n\n    const mutate = useCallback(\n        async (...variables: Parameters<queryFn>): Promise<ResponseType> => {\n            try {\n                setStatus('loading');\n                setError(null);\n\n                const result = await queryFn?.(...variables);\n\n                // Only update state if component is still mounted\n                if (mountedRef.current) {\n                    setData(result);\n                    setStatus('success');\n                }\n\n                ALREADY_RESOLVED_PROMISE.then(() => {\n                    onSuccess && tryResolve(onSuccess, result).catch(catchCallback);\n                    onSettled && tryResolve(onSettled, result, null).catch(catchCallback);\n                    resetRetries();\n                });\n\n                return result;\n            } catch (error: any) {\n                let maxRetries = 0;\n                if (isNumber(retry) && (shouldRetry ? shouldRetry(error) : true)) {\n                    maxRetries = Math.max(0, Math.floor(retry));\n                } else {\n                    maxRetries = 0;\n                }\n\n                // Handle retries\n                if (retryCountRef.current++ < maxRetries) {\n                    const delay = isFunction(retryDelay) ? retryDelay(retryCountRef.current) : retryDelay ?? 1000;\n\n                    await new Promise(resolve => setTimeout(resolve, delay));\n\n                    return mutate(...variables);\n                }\n\n                // Only update state if component is still mounted\n                if (mountedRef.current) {\n                    setError(error);\n                    setStatus('error');\n                }\n\n                // Run error callbacks\n                ALREADY_RESOLVED_PROMISE.then(() => {\n                    onError && tryResolve(onError, error).catch(catchCallback);\n                    onSettled && tryResolve(onSettled, undefined, error).catch(catchCallback);\n                    resetRetries();\n                });\n\n                throw error;\n            }\n        },\n        [queryFn, onSuccess, onSettled, retry, shouldRetry, retryDelay, resetRetries, onError]\n    );\n\n    // Cleanup on unmount\n    useEffect(() => {\n        return () => {\n            mountedRef.current = false;\n        };\n    }, []);\n\n    return useMemo(\n        () => ({\n            data,\n            error,\n            status,\n            isIdle: status === 'idle',\n            isLoading: status === 'loading',\n            isSuccess: status === 'success',\n            isError: status === 'error',\n            mutate,\n            reset,\n        }),\n        [data, error, status, mutate, reset]\n    );\n}\n\nexport default useMutation;\n","import { memo } from 'preact/compat';\nimport { createContext } from 'preact';\nimport { useContext } from 'preact/hooks';\nimport { EMPTY_ARRAY, noop } from '../../../../../utils';\nimport { REFUND_REASONS } from '../constants';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport { useRefundContextActions } from './hooks/useRefundContextActions';\nimport { useRefundContextAmount } from './hooks/useRefundContextAmount';\nimport { useRefundContextLineItems } from './hooks/useRefundContextLineItems';\nimport { useRefundContextReason } from './hooks/useRefundContextReason';\nimport useMutation from '../../../../../hooks/useMutation/useMutation';\nimport type { ITransactionRefundContext, TransactionRefundProviderProps } from './types';\nimport { RefundMode } from '../types';\n\nconst TransactionRefundContext = createContext<ITransactionRefundContext>({\n    amount: 0,\n    availableAmount: 0,\n    availableItems: EMPTY_ARRAY,\n    clearItems: noop,\n    currency: '',\n    interactionsDisabled: false,\n    items: EMPTY_ARRAY,\n    primaryAction: noop,\n    refundMode: RefundMode.FULL_AMOUNT,\n    refundReason: REFUND_REASONS[0],\n    secondaryAction: noop,\n    setAmount: noop,\n    setRefundReason: noop,\n    transactionId: '',\n    updateItems: noop,\n});\n\nexport const TransactionRefundProvider = memo(\n    ({\n        availableAmount,\n        children,\n        currency,\n        lineItems,\n        refreshTransaction,\n        refundMode,\n        setActiveView,\n        setPrimaryAction,\n        setSecondaryAction,\n        transactionId,\n    }: TransactionRefundProviderProps) => {\n        const { isLoading: refundInProgress, mutate: refundTransaction } = useMutation({\n            queryFn: useConfigContext().endpoints.initiateRefund,\n        });\n        const { availableItems, clearItems, items, updateItems } = useRefundContextLineItems({ currency, lineItems });\n        const interactionsDisabled = refundInProgress;\n        const [refundAmount, setAmount] = useRefundContextAmount({ availableAmount, currency, interactionsDisabled, items, refundMode });\n        const [refundReason, setRefundReason] = useRefundContextReason({ interactionsDisabled, refundMode });\n        const { value: amount } = refundAmount;\n\n        const { primaryAction, secondaryAction } = useRefundContextActions({\n            interactionsDisabled,\n            refreshTransaction,\n            refundAmount,\n            refundInProgress,\n            refundReason,\n            refundTransaction,\n            setActiveView,\n            setPrimaryAction,\n            setSecondaryAction,\n            transactionId,\n        });\n\n        return (\n            <TransactionRefundContext.Provider\n                value={{\n                    amount,\n                    availableAmount,\n                    availableItems,\n                    clearItems,\n                    currency,\n                    interactionsDisabled,\n                    items,\n                    primaryAction,\n                    refundMode,\n                    refundReason,\n                    secondaryAction,\n                    setAmount,\n                    setRefundReason,\n                    transactionId,\n                    updateItems,\n                }}\n            >\n                {children}\n            </TransactionRefundContext.Provider>\n        );\n    }\n);\n\nexport const useTransactionRefundContext = () => useContext(TransactionRefundContext);\nexport default useTransactionRefundContext;\n","import { EMPTY_ARRAY, enumerable, getter, isEmptyString, isFunction, isNullish, struct } from '../../../../../../utils';\nimport type { TransactionNavigation, TransactionNavigationCallback, TransactionNavigator } from './types';\nimport type { ITransaction } from '../../../../../../types';\n\nexport const createDuplexTransactionNavigator = () => {\n    let [currentTransactionId, previousTransactionId, fromTransactionId, toTransactionId] = EMPTY_ARRAY as readonly ITransaction['id'][];\n    const canNavigateBackward = () => !!(currentTransactionId && currentTransactionId === toTransactionId && fromTransactionId);\n    const canNavigateForward = () => !!(currentTransactionId && currentTransactionId === fromTransactionId && toTransactionId);\n\n    let onNavigation: TransactionNavigationCallback | null = null;\n\n    const backward: TransactionNavigator['backward'] = () => {\n        if (canNavigateBackward()) {\n            previousTransactionId = currentTransactionId;\n            currentTransactionId = fromTransactionId;\n            triggerNavigationCallback();\n        }\n    };\n\n    const forward: TransactionNavigator['forward'] = () => {\n        if (canNavigateForward()) {\n            previousTransactionId = currentTransactionId;\n            currentTransactionId = toTransactionId;\n            triggerNavigationCallback();\n        }\n    };\n\n    const reset: TransactionNavigator['reset'] = (_fromTransactionId, _toTransactionId) => {\n        const cachedCurrentTransactionId = currentTransactionId;\n        currentTransactionId = previousTransactionId = fromTransactionId = toTransactionId = undefined;\n\n        if (!isEmptyString(_fromTransactionId) && !isEmptyString(_toTransactionId)) {\n            fromTransactionId = _fromTransactionId;\n            toTransactionId = _toTransactionId;\n\n            currentTransactionId =\n                cachedCurrentTransactionId === fromTransactionId || cachedCurrentTransactionId === toTransactionId\n                    ? cachedCurrentTransactionId\n                    : fromTransactionId;\n\n            if (cachedCurrentTransactionId !== currentTransactionId) triggerNavigationCallback();\n        }\n    };\n\n    const setNavigationCallback = (callback: TransactionNavigationCallback | null | undefined) => {\n        if (isNullish(callback)) {\n            onNavigation = null;\n        } else if (isFunction(callback) && onNavigation !== (onNavigation = callback)) {\n            triggerNavigationCallback();\n        }\n    };\n\n    const triggerNavigationCallback = () => {\n        const from = previousTransactionId;\n        const to = currentTransactionId!;\n        previousTransactionId = undefined;\n\n        onNavigation?.(\n            struct<TransactionNavigation>({\n                from: getter(() => from),\n                to: getter(() => to),\n            })\n        );\n    };\n\n    return struct<TransactionNavigator>({\n        backward: enumerable(backward),\n        forward: enumerable(forward),\n        canNavigateBackward: getter(canNavigateBackward),\n        canNavigateForward: getter(canNavigateForward),\n        currentTransaction: getter(() => currentTransactionId),\n        onNavigation: { set: setNavigationCallback },\n        reset: enumerable(reset),\n    });\n};\n\nexport default createDuplexTransactionNavigator;\n","import createDuplexTransactionNavigator from './transactionNavigator/createDuplexTransactionNavigator';\nimport type { TransactionDataContentProps } from '../../components/TransactionData/TransactionDataContent';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport { useFetch } from '../../../../../hooks/useFetch';\nimport { EMPTY_OBJECT } from '../../../../../utils';\n\nexport const useTransaction = (initialTransaction: TransactionDataContentProps['transaction']) => {\n    const [transaction, setTransaction] = useState(initialTransaction);\n    const [fetchTransactionId, setFetchTransactionId] = useState(initialTransaction.id);\n    const [lastFetchTimestamp, setLastFetchTimestamp] = useState(performance.now());\n    const { getTransaction } = useConfigContext().endpoints;\n\n    const _transactionNavigator = useRef(createDuplexTransactionNavigator());\n    const transactionNavigator = _transactionNavigator.current;\n\n    const navigationAction = useRef(false);\n    const cachedIsFetching = useRef(false);\n    const cachedInitialTransaction = useRef(initialTransaction);\n    const lastFetchTransactionId = useRef(fetchTransactionId);\n\n    const fetchEnabled = useMemo(() => !!getTransaction && !!fetchTransactionId && navigationAction.current, [fetchTransactionId, getTransaction]);\n\n    const queryFn = useCallback(\n        () =>\n            getTransaction!(EMPTY_OBJECT, {\n                path: { transactionId: fetchTransactionId },\n            }),\n        [fetchTransactionId, getTransaction]\n    );\n\n    const {\n        data,\n        error,\n        isFetching: fetchingTransaction,\n    } = useFetch({\n        fetchOptions: { enabled: fetchEnabled },\n        queryFn,\n    });\n\n    const refreshTransaction = useCallback(() => {\n        return setFetchTransactionId(undefined!);\n    }, []);\n\n    useEffect(() => {\n        if (!fetchTransactionId) setFetchTransactionId(transaction.id);\n    }, [fetchTransactionId, transaction]);\n\n    useEffect(() => {\n        const navigator = _transactionNavigator.current;\n        const transaction = cachedInitialTransaction.current;\n\n        if (transaction.category === 'Refund') {\n            navigator.reset(transaction.id, transaction.refundMetadata?.originalPaymentId);\n            navigator.onNavigation = ({ to: id }) => {\n                navigationAction.current = true;\n                setLastFetchTimestamp(performance.now());\n                if (id) setFetchTransactionId(id);\n            };\n        }\n\n        return () => {\n            navigationAction.current = false;\n            navigator.onNavigation = null;\n            navigator.reset();\n        };\n    }, []);\n\n    useEffect(() => {\n        if (cachedIsFetching.current === fetchingTransaction) return;\n        if ((cachedIsFetching.current = fetchingTransaction)) return;\n\n        if (!data || error) {\n            setFetchTransactionId(lastFetchTransactionId.current);\n        } else {\n            const initialTransaction = cachedInitialTransaction.current;\n            setTransaction(() => ({\n                ...(data.id === initialTransaction.id ? initialTransaction : EMPTY_OBJECT),\n                ...data,\n            }));\n            lastFetchTransactionId.current = fetchTransactionId;\n        }\n    }, [data, error, fetchingTransaction, fetchTransactionId, lastFetchTimestamp]);\n\n    return { fetchingTransaction, refreshTransaction, transaction, transactionNavigator } as const;\n};\n\nexport default useTransaction;\n","import type { IRefundStatus } from '../../../../../types';\n\ntype _RefundItem = { status: IRefundStatus };\n\nexport const checkRefundStatusCollection = <T extends _RefundItem>(predicate: (item: T) => unknown, refundStatusCollection?: T[]) => {\n    let every = refundStatusCollection ? refundStatusCollection?.length > 0 : false;\n    let some = false;\n\n    refundStatusCollection?.forEach(item => {\n        const passesCheck = !!predicate(item);\n        every &&= passesCheck;\n        some ||= passesCheck;\n    });\n\n    return { every, some } as const;\n};\n","import { useMemo } from 'preact/hooks';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { boolOrFalse, isFunction, isUndefined } from '../../../../../utils';\nimport { AlertTypeOption } from '../../../../internal/Alert/types';\nimport { RefundMode, RefundedState, RefundStatus } from '../../context/types';\nimport { checkRefundStatusCollection } from './helpers';\nimport type { IRefundMode } from '../../../../../types';\nimport type { TransactionDataProps } from '../../types';\n\nconst allStatuses = ['completed', 'in_progress', 'failed'];\n\nexport const useTransactionRefundMetadata = (transaction: TransactionDataProps['transaction']) => {\n    const { i18n } = useCoreContext();\n\n    const details = transaction?.refundDetails;\n    const refundMode: IRefundMode = details?.refundMode ?? RefundMode.FULL_AMOUNT;\n    const refundLocked = boolOrFalse(details?.refundLocked);\n    const refundable = refundMode !== RefundMode.NON_REFUNDABLE;\n    const originalAmount = transaction?.originalAmount?.value;\n\n    const refundableAmount = useMemo(() => (transaction ? Math.max(0, details?.refundableAmount?.value ?? 0) : 0), [details, transaction]);\n\n    const refundAuthorization = isFunction(useConfigContext().endpoints.initiateRefund);\n    const refundAvailable = refundAuthorization && refundable && refundableAmount > 0;\n    const refundCurrency = details?.refundableAmount?.currency ?? transaction?.amount.currency ?? '';\n    const refundDisabled = !refundAvailable || refundLocked;\n\n    const statuses: Record<'in_progress' | 'completed' | 'failed', { amounts: number[]; currency: string }> = useMemo(() => {\n        const statusDetails = transaction?.refundDetails?.refundStatuses ?? [];\n        return (\n            statusDetails\n                ?.filter(currentStatus => currentStatus.amount.value !== 0)\n                .sort((firstStatus, secondStatus) => {\n                    if (allStatuses.includes(firstStatus.status) && allStatuses.includes(secondStatus.status)) {\n                        return allStatuses.indexOf(firstStatus.status) > allStatuses.indexOf(secondStatus.status) ? 0 : -1;\n                    }\n                    return -1;\n                })\n                .reduce((res, currentStatusValue) => {\n                    const currentStatus = currentStatusValue.status;\n                    const amount = ~currentStatusValue.amount.value + 1;\n                    if (res?.[currentStatus]) {\n                        res?.[currentStatus]?.amounts.push(amount);\n                        return res;\n                    } else {\n                        return { ...res, [currentStatus]: { amounts: [amount], currency: currentStatusValue.amount.currency } };\n                    }\n                }, {} as Record<'in_progress' | 'completed' | 'failed', { amounts: number[]; currency: string }>) ?? {}\n        );\n    }, [transaction?.refundDetails?.refundStatuses]);\n\n    const refundedAmount = useMemo(() => {\n        const totalCompleted = statuses.completed?.amounts?.reduce((sum, amount) => sum + amount, 0);\n        return totalCompleted ? Math.max(0, totalCompleted ?? 0) : 0;\n    }, [statuses]);\n\n    const { some: someRefunded, every: allRefunded } = useMemo(\n        () => checkRefundStatusCollection(({ status }) => status === RefundStatus.COMPLETED, details?.refundStatuses),\n        [details?.refundStatuses]\n    );\n\n    const refundStatuses = useMemo(() => {\n        if (refundableAmount === 0 && refundedAmount > 0 && allRefunded && refundedAmount === originalAmount) {\n            return [{ type: AlertTypeOption.HIGHLIGHT, label: i18n.get('refund.fullAmountRefunded') }];\n        } else {\n            const statusAlerts = Object.keys(statuses)?.map(status => {\n                const currentStatus = status as 'in_progress' | 'completed' | 'failed';\n                const formattedAmount = statuses?.[currentStatus]?.amounts.reduce((res, value, currentIndex) => {\n                    const amountsLength = statuses?.[currentStatus]?.amounts.length;\n                    if (amountsLength > 1 && currentIndex === amountsLength - 1)\n                        return `${res ? `${res}` : ''} ${i18n.get('and')} ${i18n.amount(value, statuses?.[currentStatus]?.currency)}`;\n                    return `${res ? `${res},` : ''} ${i18n.amount(value, statuses?.[currentStatus]?.currency)}`;\n                }, '');\n                const totalAmount = statuses?.[currentStatus]?.amounts.reduce((sum, amount) => sum + amount, 0);\n\n                switch (status) {\n                    case RefundStatus.COMPLETED:\n                        return {\n                            type: AlertTypeOption.HIGHLIGHT,\n                            label: i18n.get('refund.amountAlreadyRefunded', { values: { amount: formattedAmount } }),\n                        };\n                    case RefundStatus.IN_PROGRESS:\n                        if (totalAmount === originalAmount) {\n                            return {\n                                type: AlertTypeOption.HIGHLIGHT,\n                                label: i18n.get('refund.theRefundIsBeingProcessed'),\n                            };\n                        } else {\n                            return {\n                                type: AlertTypeOption.HIGHLIGHT,\n                                label: i18n.get('refund.amountInProgress', { values: { amount: formattedAmount } }),\n                            };\n                        }\n                    case RefundStatus.FAILED:\n                        if (totalAmount === originalAmount) {\n                            return {\n                                type: AlertTypeOption.WARNING,\n                                label: i18n.get('refund.fullAmountFailed'),\n                            };\n                        } else {\n                            return {\n                                type: AlertTypeOption.WARNING,\n                                label: i18n.get('refund.amountFailed', { values: { amount: formattedAmount } }),\n                            };\n                        }\n                    default:\n                        return;\n                }\n            });\n            return statusAlerts ?? [];\n        }\n    }, [refundableAmount, originalAmount, i18n, refundedAmount, statuses, allRefunded]);\n\n    const refundableAmountLabel = useMemo(() => {\n        if (refundableAmount > 0) {\n            const formattedAmount = i18n.amount(refundableAmount, refundCurrency);\n            switch (refundMode) {\n                case RefundMode.FULL_AMOUNT:\n                    return {\n                        type: AlertTypeOption.HIGHLIGHT,\n                        description: i18n.get('refund.onlyRefundable', { values: { amount: formattedAmount } }),\n                    };\n                case RefundMode.PARTIAL_AMOUNT:\n                    return {\n                        type: AlertTypeOption.HIGHLIGHT,\n                        description: i18n.get('refund.maximumRefundable', { values: { amount: formattedAmount } }),\n                    };\n                default:\n                    return null;\n            }\n        }\n        return null;\n    }, [i18n, refundableAmount, refundCurrency, refundMode]);\n\n    const refundedState = useMemo(() => {\n        switch (refundMode) {\n            case RefundMode.NON_REFUNDABLE:\n                if (refundableAmount === 0 && refundedAmount > 0 && allRefunded && refundedAmount === originalAmount) {\n                    return RefundedState.FULL;\n                }\n        }\n\n        switch (refundMode) {\n            case RefundMode.PARTIAL_AMOUNT:\n            case RefundMode.PARTIAL_LINE_ITEMS:\n                if (refundableAmount > 0 && someRefunded && refundedAmount > 0 && !isUndefined(originalAmount) && refundedAmount < originalAmount) {\n                    return RefundedState.PARTIAL;\n                }\n        }\n\n        return RefundedState.INDETERMINATE;\n    }, [refundableAmount, refundedAmount, refundMode, originalAmount, someRefunded, allRefunded]);\n\n    return {\n        refundableAmount, // the maximum amount still available for refund\n        refundable, // whether the refund mode of the payment allows for refund\n        refundableAmountLabel,\n        refundAvailable, // whether a refund can be initiated for the payment\n        refundAuthorization, // whether the authenticated user has sufficient permission to initiate refunds\n        refundCurrency, // the payment currency for any initiated refund\n        refundDisabled, // whether refund action for the payment is disabled (refund view should be prevented)\n        refundedAmount, // the total amount already refunded\n        refundedState, // whether the payment is yet to be, partially or fully refunded\n        refundStatuses, //the refund statuses\n        refundLocked, // whether refund action for the payment is temporarily locked\n        refundMode, // the refund mode of the payment\n    } as const;\n};\n\nexport default useTransactionRefundMetadata;\n","export const DEFAULT_POPOVER_CLASSNAME = 'adyen-pe-popover';\nexport const DEFAULT_TOOLTIP_CLASSNAME = 'adyen-pe-tooltip';\nexport const POPOVER_CONTAINER_CLASSNAME = `${DEFAULT_POPOVER_CLASSNAME}-container`;\nexport const POPOVER_HEADER_CLASSNAME = `${DEFAULT_POPOVER_CLASSNAME}__header`;\nexport const POPOVER_HEADER_TITLE_CLASSNAME = `${DEFAULT_POPOVER_CLASSNAME}__header-title`;\nexport const POPOVER_CONTENT_CLASSNAME = `${DEFAULT_POPOVER_CLASSNAME}__content`;\nexport const TOOLTIP_CONTENT_CLASSNAME = `${DEFAULT_TOOLTIP_CLASSNAME}__content`;\nexport const POPOVER_FOOTER_CLASSNAME = `${DEFAULT_POPOVER_CLASSNAME}__footer`;\n","import Button from '../../Button';\nimport { ButtonVariant } from '../../Button/types';\nimport './PopoverDismissButton.scss';\nimport useCoreContext from '../../../../core/Context/useCoreContext';\nimport { memo } from 'preact/compat';\n\ninterface PopoverDismissButtonProps {\n    image?: boolean;\n    onClick: () => void;\n}\n\nfunction PopoverDismissButton({ image = true, onClick }: PopoverDismissButtonProps) {\n    const { i18n } = useCoreContext();\n    const getConditionalClasses = (): string => {\n        return image ? 'adyen-pe-popover-dismiss-button--on-image' : '';\n    };\n    return (\n        <>\n            <Button\n                className={getConditionalClasses()}\n                iconButton={true}\n                variant={ButtonVariant.TERTIARY}\n                onClick={onClick}\n                aria-label={i18n.get('closeIconLabel')}\n            >\n                <svg role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n                    <title>{'dismiss'}</title>\n                    <path\n                        fill=\"#00112C\"\n                        fillRule=\"evenodd\"\n                        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\"\n                        clipRule=\"evenodd\"\n                    />\n                </svg>\n            </Button>\n        </>\n    );\n}\n\nexport default memo(PopoverDismissButton);\n","import Typography from '../../Typography/Typography';\nimport { TypographyVariant } from '../../Typography/types';\nimport { memo } from 'preact/compat';\n\nexport interface PopoverTitleProps {\n    title: string;\n    isImageTitle?: boolean;\n}\nfunction PopoverTitle({ title, isImageTitle = false }: PopoverTitleProps) {\n    const getVariant = (): TypographyVariant => {\n        return isImageTitle ? TypographyVariant.SUBTITLE : TypographyVariant.BODY;\n    };\n\n    return (\n        <Typography strongest={!isImageTitle} variant={getVariant()}>\n            {title}\n        </Typography>\n    );\n}\n\nexport default memo(PopoverTitle);\n","import { ButtonActionsLayout, ButtonActionsList } from '../Button/ButtonActions/types';\nimport { ComponentChildren } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { MutableRef } from 'preact/hooks';\n\nexport enum PopoverContainerVariant {\n    TOOLTIP = 'tooltip',\n    POPOVER = 'popover',\n}\n\ninterface PopoverCoreProps {\n    actions?: ButtonActionsList;\n    actionsLayout?: ButtonActionsLayout;\n    variant?: PopoverContainerVariant;\n    divider?: boolean;\n    dismissible?: boolean;\n    fitContent?: boolean;\n    disableFocusTrap?: boolean;\n    open?: boolean;\n    withContentPadding?: boolean;\n    modifiers?: string[];\n    position?: PopoverContainerPosition;\n    containerSize?: PopoverContainerSize;\n    title?: string;\n    targetElement: MutableRef<Element | null>;\n    withoutSpace?: boolean;\n    dismiss?: () => any;\n    setToTargetWidth?: boolean;\n    children: ComponentChildren;\n    classNameModifiers?: string[];\n    showOverlay?: boolean;\n    fitPosition?: boolean;\n}\n\ntype UncontrolledProps = Pick<HTMLAttributes<any>, 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'role'>;\n\nexport type PopoverProps = PopoverCoreProps & UncontrolledProps;\n\nexport enum PopoverContainerPosition {\n    TOP = 'top',\n    TOP_LEFT = 'top-left',\n    RIGHT = 'right',\n    BOTTOM = 'bottom',\n    BOTTOM_LEFT = 'bottom-left',\n    LEFT = 'left',\n}\n\nexport enum PopoverContainerSize {\n    MEDIUM = 'medium',\n    WIDE = 'wide',\n}\n","import UIElement from './external/UIElement/UIElement';\nimport { Core, onErrorHandler } from '../core';\nimport { TransactionsTableFields } from './external/TransactionsOverview/components/TransactionsTable/types';\nimport { IPayout, IPayoutDetails, IReport, ITransaction, ITransactionWithDetails } from '../types';\nimport { AnchorHTMLAttributes } from 'preact/compat';\nimport { ReportsTableFields } from './external/ReportsOverview/components/ReportsTable/ReportsTable';\nimport { StringWithAutocompleteOptions } from '../utils/types';\nimport { PayoutsTableFields } from './external/PayoutsOverview/components/PayoutsTable/PayoutsTable';\nimport { TransactionDetailsFields } from './external';\n\nexport const enum InteractionKeyCode {\n    ARROW_DOWN = 'ArrowDown',\n    ARROW_LEFT = 'ArrowLeft',\n    ARROW_RIGHT = 'ArrowRight',\n    ARROW_UP = 'ArrowUp',\n    BACKSPACE = 'Backspace',\n    END = 'End',\n    ENTER = 'Enter',\n    ESCAPE = 'Escape',\n    HOME = 'Home',\n    PAGE_DOWN = 'PageDown',\n    PAGE_UP = 'PageUp',\n    SPACE = 'Space',\n    TAB = 'Tab',\n}\n\nexport interface BaseElementProps {\n    core: Core<any, any>;\n}\n\nexport interface IUIElement {\n    accessibleName: string;\n    displayName: string;\n    elementRef: any;\n    type: string;\n}\n\nexport interface IFormElement<P> {\n    submit(): void;\n    setStatus(status: UIElementStatus, props?: any): UIElement<P>;\n    showValidation(): void;\n    setState(newState: object): void;\n}\n\nexport type UIElementStatus = 'ready' | 'loading' | 'error' | 'success';\n\nexport type SetTriggerValidation = (callback: (schema?: Record<string, any>) => void) => void;\n\nexport interface UIElementProps {\n    hideTitle?: boolean;\n    onContactSupport?: () => void;\n    onError?: onErrorHandler;\n    ref?: any;\n}\n\nexport interface FormProps<P> {\n    onChange?: (state: any, element: UIElement<P> | null) => void;\n    onValid?: (state: any, element: UIElement<P> | null) => void;\n    beforeSubmit?: (state: any, element: UIElement<P>, actions: any) => Promise<void>;\n    onSubmit?: (state: any, element: UIElement<P> | null) => void;\n    onComplete?: (state: BaseElementProps, element: UIElement<P> | null) => void;\n    onError?: (error: any, element?: UIElement<P> | null) => void;\n    triggerValidation?: SetTriggerValidation;\n}\n\nexport type BaseElementState = {\n    errors?: {\n        [key: string]: any;\n    };\n    valid?: {\n        [key: string]: boolean;\n    };\n    fieldProblems?: {\n        [key: string]: any;\n    };\n    isValid?: boolean;\n};\n\nexport type _UIComponentProps<T> = BaseElementProps & Omit<UIElementProps, 'ref'> & T & {};\n\nexport type ExternalUIComponentProps<T> = UIElementProps & T & {};\n\ntype onRecordSelection<T extends { showModal: () => void }> = (selection: T) => any;\n\ninterface _DataOverviewSelectionProps<T extends { showModal: () => void } = { showModal: () => void }> {\n    onRecordSelection?: onRecordSelection<T>;\n}\n\nexport type DataGridIcon = { url: string; alt?: string } | ((value: unknown) => { url: string; alt?: string });\n\nexport type DataGridCustomColumnConfig<k> = {\n    key: k;\n    flex?: number;\n    align?: 'right' | 'left' | 'center';\n    visibility?: 'visible' | 'hidden';\n};\n\nexport type CustomColumn<T extends string> = {\n    [k in T]: DataGridCustomColumnConfig<k>;\n}[T];\n\ninterface _DataOverviewComponentProps {\n    allowLimitSelection?: boolean;\n    balanceAccountId?: string;\n    onFiltersChanged?: (filters: { [P in FilterParam]?: string }) => any;\n    preferredLimit?: 10 | 20;\n    showDetails?: boolean;\n}\n\nexport type CustomDataObject = CustomIconObject | CustomTextObject | CustomLinkObject | CustomButtonObject;\n\ninterface BaseCustomObject {\n    value: any;\n}\n\ntype BaseDetails = {\n    className?: string;\n};\n\nexport interface CustomIconObject extends BaseCustomObject {\n    type: 'icon';\n    config: BaseDetails & { src: string; alt?: string };\n}\n\nexport interface CustomTextObject extends BaseCustomObject {\n    type: 'text';\n    config?: BaseDetails;\n}\n\nexport interface CustomLinkObject extends BaseCustomObject {\n    type: 'link';\n    config: BaseDetails & { href: string; target?: AnchorHTMLAttributes<any>['target'] };\n}\n\nexport interface CustomButtonObject extends BaseCustomObject {\n    type: 'button';\n    config: BaseDetails & { action: () => void };\n}\n\nexport type CustomDataRetrieved = { [k: string]: CustomDataObject | Record<any, any> | string | number | boolean };\n\nexport type OnDataRetrievedCallback<DataRetrieved, CallbackResponse = CustomDataRetrieved[]> = (data: DataRetrieved) => Promise<CallbackResponse>;\n\nexport type DataCustomizationObject<Columns extends string, DataRetrieved, CallbackResponse> = {\n    fields: CustomColumn<StringWithAutocompleteOptions<Columns>>[];\n    onDataRetrieve?: OnDataRetrievedCallback<DataRetrieved, CallbackResponse>;\n};\n\nexport type DetailsCustomFieldConfig<k> = {\n    key: k;\n    visibility?: 'visible' | 'hidden';\n};\n\nexport type CustomDetailsField<T extends string> = {\n    [k in T]: DetailsCustomFieldConfig<k>;\n}[T];\n\nexport type DetailsDataCustomizationObject<Columns extends string, DataRetrieved, CallbackResponse> = {\n    fields: CustomDetailsField<StringWithAutocompleteOptions<Columns>>[];\n    onDataRetrieve?: OnDataRetrievedCallback<DataRetrieved, CallbackResponse>;\n};\n\ninterface _CustomizableDataOverview<CustomizationOptions extends Record<string, DataCustomizationObject<any, any, any>>> {\n    dataCustomization?: CustomizationOptions;\n}\n\ntype OverviewCustomizationProperties<Fields extends string, Data, DetailsFields extends string, DetailsData> = {\n    list?: DataCustomizationObject<Fields, Data[], CustomDataRetrieved[]>;\n    details?: DetailsDataCustomizationObject<DetailsFields, DetailsData, CustomDataRetrieved>;\n};\n\nexport interface ReportsOverviewComponentProps\n    extends Omit<_DataOverviewComponentProps, 'showDetails'>,\n        _CustomizableDataOverview<Omit<OverviewCustomizationProperties<ReportsTableFields, IReport, any, any>, 'details'>> {}\n\nexport interface TransactionOverviewComponentProps\n    extends _DataOverviewComponentProps,\n        _CustomizableDataOverview<\n            OverviewCustomizationProperties<TransactionsTableFields, ITransaction, TransactionDetailsFields, ITransactionWithDetails>\n        >,\n        _DataOverviewSelectionProps<{ id: string; showModal: () => void }> {}\n\nexport interface PayoutsOverviewComponentProps\n    extends _DataOverviewComponentProps,\n        _CustomizableDataOverview<OverviewCustomizationProperties<PayoutsTableFields, IPayout, any, IPayoutDetails>>,\n        _DataOverviewSelectionProps<{ balanceAccountId: string; date: string; showModal: () => void }> {}\n\nexport const enum FilterParam {\n    BALANCE_ACCOUNT = 'balanceAccount',\n    CATEGORIES = 'categories',\n    CURRENCIES = 'currencies',\n    CREATED_SINCE = 'createdSince',\n    CREATED_UNTIL = 'createdUntil',\n    STATUSES = 'statuses',\n    MIN_AMOUNT = 'minAmount',\n    MAX_AMOUNT = 'maxAmount',\n}\n\nexport type ExternalComponentType =\n    | 'transactions'\n    | 'transactionDetails'\n    | 'payouts'\n    | 'payoutDetails'\n    | 'reports'\n    | 'capitalOverview'\n    | 'capitalOffer';\n","export const popoverUtil = (<T extends Element, U extends Function>() => {\n    let popoverRefs: Array<{ element: T; callback?: U | undefined }> = [];\n\n    const closePopoversOutsideOfClick = (eventPath: EventTarget[]) => {\n        const index = eventPath.reduce((index: number, path: EventTarget) => {\n            const pathMatchIndex =\n                path instanceof Node\n                    ? popoverRefs.findIndex(popoverRef => {\n                          const popoverRefId = popoverRef.element.getAttribute('id');\n                          const pathId = path && (path as HTMLElement)?.getAttribute ? (path as HTMLElement)?.getAttribute('id') : null;\n                          return popoverRefId === pathId;\n                      })\n                    : -1;\n            if (index === -1 && pathMatchIndex !== -1) return pathMatchIndex;\n            return index;\n        }, -1);\n        if (index === -1) {\n            closeNestedPopovers(0);\n        } else {\n            index + 1 <= popoverRefs.length - 1 && closeNestedPopovers(index + 1);\n        }\n    };\n\n    const remove = (currentRef: T) => {\n        const index = popoverRefs.findIndex(refs => refs.element.getAttribute('id') === currentRef.getAttribute('id'));\n        if (index >= 0) {\n            popoverRefs.splice(index, 1);\n        }\n    };\n\n    const add = (currentRef: T, callback: U | undefined) => {\n        const index = popoverRefs.findIndex(refs => refs.element.getAttribute('id') === currentRef.getAttribute('id'));\n        if (index >= 0) return;\n        popoverRefs.push({ element: currentRef, callback: callback });\n    };\n\n    const closeNestedPopovers = (fromIndex: number) => {\n        const popoverLength = popoverRefs.length;\n        for (let i = fromIndex; i < popoverLength; i++) {\n            popoverRefs?.[i]?.callback?.();\n        }\n        popoverRefs.splice(fromIndex);\n    };\n\n    const closeAll = () => {\n        popoverRefs.forEach(ref => ref?.callback?.());\n        popoverRefs = [];\n    };\n\n    return { add, remove, closeAll, closePopoversOutsideOfClick };\n})();\n","export const REF: unique symbol = Symbol('_ref');\n","export class ReflexError extends Error {}\nexport class UnknownRefError extends ReflexError {}\nexport class MissingReflexActionError extends ReflexError {}\n","import { REF } from './constants';\nimport { MissingReflexActionError } from './errors';\nimport type { Ref, Reflex, Reflexable, ReflexAction } from './types';\nimport { EMPTY_OBJECT, hasOwnProperty, isFunction, isUndefined, sameValue } from '../../../utils';\nimport { RefObject } from 'preact';\n\nexport function assertReflexAction<T = any>(value?: any): asserts value is ReflexAction<T> {\n    if (!isFunction(value)) throw new MissingReflexActionError();\n}\n\nexport const isReflex = <T = any>(value: any): value is Reflex<T> => {\n    try {\n        if (isFunction(value) && hasOwnProperty(value, 'current') && hasOwnProperty(value, REF) && !sameValue(value, (value as Reflex<T>)[REF])) {\n            const notDefined = (value as Reflex<T>).actions.get(EMPTY_OBJECT as ReflexAction<T>);\n            const size = (value as Reflex<T>).actions.size;\n            return isUndefined(notDefined) && Number.isInteger(size) && size >= 0;\n        }\n    } catch {\n        /* Definitely not a reflex, return false outside this block */\n    }\n\n    return false;\n};\n\nexport const unwrap = <T = any>(reflexable: Reflexable<T>): Ref<T> => (isReflex<T>(reflexable) ? unwrap(reflexable[REF]) : reflexable);\n\nexport function isRefObject(ref: any): ref is RefObject<any> {\n    return !!ref.current;\n}\n","import type { Defined, Nullable } from '../../../utils/types';\nimport type { Ref, RefAsCallback, Reflex, Reflexable, ReflexAction, ReflexRecord, ReflexRegister } from './types';\nimport { enumerable, isFunction, sameValue, struct } from '../../../utils';\nimport { assertReflexAction, unwrap } from './helpers';\nimport { UnknownRefError } from './errors';\nimport { REF } from './constants';\n\nexport const createReflexRegister = (() => {\n    const _getRecordForRef = <T = any>(register: WeakMap<NonNullable<Ref>, ReflexRecord>, ref: NonNullable<Ref<T>>): ReflexRecord<T> => {\n        const record = register.get(ref);\n        if (!record) throw new UnknownRefError();\n        return record;\n    };\n\n    const _bindReflexAction = <T = any>(\n        register: WeakMap<NonNullable<Ref>, ReflexRecord>,\n        reflexable: NonNullable<Reflexable<T>>,\n        action?: ReflexAction<T>\n    ): ReflexRecord<T>[0] => {\n        let record: ReflexRecord<T> | undefined;\n        let actions: Defined<typeof record>[1];\n\n        const _ref = unwrap(reflexable) as NonNullable<Ref>;\n\n        try {\n            record = _getRecordForRef(register, _ref);\n        } catch {\n            /**\n             * Ignore the original exception — since this could be a potential\n             * reflex action binding. If no reflex action was provided, throw\n             * an exception to signal the missing reflex action.\n             */\n            assertReflexAction<T>(action);\n        }\n\n        if (record) [, actions] = record;\n        else {\n            const isCallbackRef = isFunction(_ref);\n\n            const _updateCurrentInstance: RefAsCallback<T | undefined> = isCallbackRef\n                ? instance => {\n                      _ref((_current = instance));\n                  }\n                : instance => {\n                      if (_ref) {\n                          _ref.current = instance;\n                          _current = _ref.current;\n                      }\n                  };\n\n            const reflex = (instance => {\n                if (actions.size === 0) {\n                    // Reflex is dead when there are no more reflex actions.\n                    // It should no longer mutate the _ref current instance.\n                    // Binding a new action registers _ref afresh with a new\n                    // reflex.\n                    return;\n                }\n\n                const previous = _current;\n\n                _updateCurrentInstance(instance);\n\n                if (!sameValue(_current, previous)) {\n                    for (const [action] of actions) {\n                        action(_current, previous);\n                    }\n                }\n            }) as Reflex<T>;\n\n            let _current: Nullable<T> = isCallbackRef ? null : _ref.current;\n\n            register.set(_ref, (record = [reflex, (actions = new Map())]));\n\n            Object.defineProperties(reflex, {\n                [REF]: { value: _ref },\n                actions: {\n                    value: struct({\n                        get: { value: actions.get.bind(actions) },\n                        size: { get: () => actions.size },\n                    }),\n                },\n                current: {\n                    get: () => _current,\n                    set: isCallbackRef ? (void 0 as unknown as typeof reflex) : reflex,\n                },\n            });\n        }\n\n        if (action) {\n            actions.set(action, 1 + (actions.get(action) || 0));\n        }\n\n        return record[0];\n    };\n\n    const _unbindReflexAction = <T = any>(\n        register: WeakMap<NonNullable<Ref>, ReflexRecord>,\n        reflexable: Reflexable<T>,\n        action: ReflexAction<T>\n    ): void => {\n        const _ref = unwrap(reflexable);\n        const [, actions] = _getRecordForRef(register, _ref as NonNullable<Ref>);\n        const bindings = actions.get(action) || 0;\n\n        if (bindings === 1) actions.delete(action);\n        else if (bindings > 1) actions.set(action, bindings - 1);\n        if (actions.size === 0 && _ref) register.delete(_ref);\n    };\n\n    return (): ReflexRegister => {\n        const _register = new WeakMap<NonNullable<Ref>, ReflexRecord>();\n        return struct({\n            bind: enumerable(_bindReflexAction.bind(void 0, _register)),\n            unbind: enumerable(_unbindReflexAction.bind(void 0, _register)),\n        }) as ReflexRegister;\n    };\n})();\n\nexport const $globalReflexRegister = createReflexRegister();\nexport default $globalReflexRegister;\n","import type { Reflex, Reflexable, ReflexAction, ReflexContainer, ReflexRegister } from './types';\nimport type { DefinedNullable, Nullable } from '../../../utils/types';\nimport { isNullish, sameValue, struct } from '../../../utils';\nimport { assertReflexAction, unwrap } from './helpers';\nimport { $globalReflexRegister } from './register';\nimport { REF } from './constants';\n\nexport const createIsolatedFauxReflex = <T = any>(action: ReflexAction<T>): Reflex<T> => {\n    assertReflexAction<T>(action);\n\n    const $actions = new WeakMap<ReflexAction<T>, number>([[action, 1]]);\n\n    const reflex = (instance => {\n        if (sameValue(_current, instance)) return;\n        const previous = _current;\n        action((_current = instance), previous);\n    }) as Reflex<T>;\n\n    let _current: Nullable<T> = null;\n\n    return Object.defineProperties(reflex, {\n        [REF]: { value: reflex },\n        actions: {\n            value: struct({\n                get: { value: $actions.get.bind($actions) },\n                size: { value: 1 },\n            }),\n        },\n        current: {\n            get: () => _current,\n            set: reflex,\n        },\n    });\n};\n\nexport const createReflexContainer = <T = any>(register: ReflexRegister = $globalReflexRegister): ReflexContainer<T> => {\n    let _reflex: Nullable<Reflex<T>>;\n    let _reflexable: DefinedNullable<Reflexable<T>> = null;\n    let _reflexAction: ReflexAction<T>;\n    let _released = false;\n\n    const _refreshContainer = (action: ReflexAction<T>) => {\n        _reflex = undefined;\n        _reflexable = null;\n        _reflexAction = action;\n        _released = false;\n    };\n\n    const _releaseContainer = () => {\n        if (!_released) {\n            _unbindReflexAction();\n            _released = true;\n        }\n    };\n\n    const _unbindReflexAction = () => {\n        try {\n            if (!_reflexable) return;\n            register.unbind(_reflexable, _reflexAction);\n        } catch {\n            /* ignore exception for unknown ref */\n        }\n    };\n\n    const _updateContainer = (action: ReflexAction<T>, reflexable?: Nullable<Reflexable<T>>) => {\n        assertReflexAction<T>(action);\n\n        if (_released) _refreshContainer(action);\n\n        const currentReflexable = isNullish(reflexable) ? null : reflexable;\n\n        if (_reflexAction === action && _reflexable === currentReflexable) {\n            if (_reflex) return; // no further update required\n        } else if (_reflexable) {\n            if (sameValue(unwrap(_reflexable), unwrap(currentReflexable!))) {\n                _reflex = register.bind(_reflexable, action);\n                _unbindReflexAction();\n                _reflexAction = action;\n                return; // no further update required\n            }\n\n            _unbindReflexAction();\n        }\n\n        _reflexAction = action;\n\n        _reflex = (_reflexable = currentReflexable) ? register.bind(_reflexable, _reflexAction) : createIsolatedFauxReflex(_reflexAction);\n    };\n\n    return struct<ReflexContainer<T>>({\n        action: { get: () => _reflexAction },\n        reflex: { get: () => _reflex },\n        release: { value: _releaseContainer },\n        update: { value: _updateContainer },\n    });\n};\n\nexport default createReflexContainer;\n","import { useLayoutEffect, useMemo, useRef } from 'preact/hooks';\nimport { createReflexContainer, Reflex, Reflexable, ReflexAction } from '../primitives/reactive/reflex';\nimport type { Nullable } from '../utils/types';\n\nconst useReflex = <T = any>(action: ReflexAction<T>, reflexable?: Nullable<Reflexable<T>>) => {\n    const container = useRef(createReflexContainer<T>());\n\n    useLayoutEffect(() => container.current.release, []);\n\n    return useMemo(() => {\n        container.current.update(action, reflexable);\n        return container.current.reflex as Reflex<T>;\n    }, [action, reflexable]);\n};\n\nexport default useReflex;\n","import { useCallback, useEffect, useRef } from 'preact/hooks';\nimport { popoverUtil } from '../../components/internal/Popover/utils/popoverUtil';\nimport type { Reflexable } from '../../primitives/reactive/reflex';\nimport type { Nullable } from '../../utils/types';\nimport useReflex from '../useReflex';\n\nexport const CONTROL_ELEMENT_PROPERTY: unique symbol = Symbol('__control.Elem.');\n\nexport const enum ClickOutsideVariant {\n    POPOVER = 'POPOVER',\n    DEFAULT = 'DEFAULT',\n}\nconst onFocusoutCapture = (e: Event) => {\n    e.stopImmediatePropagation();\n};\nexport const useClickOutside = <T extends Element = Element>(\n    rootElementRef?: Nullable<Reflexable<T>>,\n    callback?: (interactionKeyPressed: boolean) => void,\n    disableClickOutside?: boolean,\n    variant?: ClickOutsideVariant\n) => {\n    const ref = useRef<Nullable<T>>(null);\n\n    const handleClickOutside = useCallback(\n        (e: Event) => {\n            const eventPath: EventTarget[] = e.composedPath();\n            if (!(ref && ref.current)) return;\n            if (variant === ClickOutsideVariant.POPOVER) {\n                popoverUtil.closePopoversOutsideOfClick(eventPath);\n            } else {\n                let eventPathIndex = 0;\n                let samePath = false;\n                let currentElement: Element | null = eventPath[eventPathIndex] as Element;\n\n                while (currentElement instanceof Element) {\n                    if ((samePath ||= currentElement?.isSameNode(ref.current))) break;\n                    currentElement = (eventPath[++eventPathIndex] as Element) ?? currentElement.parentElement;\n\n                    if ((currentElement as any)?.[CONTROL_ELEMENT_PROPERTY] instanceof Element) {\n                        currentElement = (currentElement as any)[CONTROL_ELEMENT_PROPERTY];\n                        eventPath.length = 0;\n                    }\n                }\n\n                if (callback && !samePath) callback(true);\n            }\n        },\n        [ref, callback, variant]\n    );\n\n    const clickOutsideHandlerRef = useRef(handleClickOutside);\n\n    useEffect(() => {\n        return () => {\n            if (ref.current) popoverUtil.remove(ref.current);\n            document.removeEventListener('click', clickOutsideHandlerRef.current, true);\n        };\n    }, []);\n\n    useEffect(() => {\n        document.removeEventListener('click', clickOutsideHandlerRef.current, true);\n        clickOutsideHandlerRef.current = handleClickOutside;\n        document.addEventListener('click', clickOutsideHandlerRef.current, true);\n        if (variant === ClickOutsideVariant.POPOVER) {\n            if (ref.current instanceof Element) popoverUtil.add(ref.current, callback);\n        }\n        return () => {\n            if (ref.current) popoverUtil.remove(ref.current);\n            document.removeEventListener('click', clickOutsideHandlerRef.current, true);\n        };\n    }, [handleClickOutside, callback, variant]);\n\n    useEffect(() => {\n        if (disableClickOutside) {\n            document.removeEventListener('click', clickOutsideHandlerRef.current, true);\n        } else {\n            document.addEventListener('click', clickOutsideHandlerRef.current, true);\n        }\n    }, [disableClickOutside]);\n\n    return useReflex<T>(\n        useCallback(\n            (current: Nullable<T>, previous) => {\n                if (previous instanceof Element) {\n                    previous.removeEventListener('focusout', onFocusoutCapture, true);\n                }\n                if (current instanceof Element) {\n                    if (!disableClickOutside) {\n                        current.addEventListener('focusout', onFocusoutCapture, true);\n                        ref.current = current;\n                    }\n                }\n            },\n            [disableClickOutside, variant]\n        ),\n        rootElementRef\n    );\n};\n","import { isNullish, isNumber, isUndefined, mod, some } from '../../../utils';\n\nexport interface TabbableRoot {\n    get current(): Element | null;\n    set current(maybeTabbableOrOffset: Element | number | null);\n    root: Element | null;\n    tabbables: Element[];\n}\n\nexport const SELECTORS = `\n    a[href],\n    audio[controls],\n    video[controls],\n    button,\n    input,\n    select,\n    textarea,\n    [contenteditable],\n    [tabindex]\n`.replace(/\\s+/, '');\n\nconst ATTRIBUTES = ['contenteditable', 'controls', 'disabled', 'hidden', 'href', 'inert', 'tabindex'];\nconst CHECKED_RADIOS = new Map<HTMLFormElement, Map<string, HTMLInputElement | null>>();\n\nconst isInput = (element: Element): element is HTMLInputElement => element.tagName === 'INPUT';\nconst isRadio = (element: Element): element is HTMLInputElement => isInput(element) && element.type === 'radio';\nconst isCheckedRadio = (element: Element): element is HTMLInputElement => {\n    const name = (element as HTMLInputElement).name;\n    const form = (element as HTMLInputElement).form;\n    const checkedRadiosForForm = CHECKED_RADIOS.get(form as HTMLFormElement);\n\n    let checkedRadio = checkedRadiosForForm?.get(name);\n\n    if (isUndefined(checkedRadio) && form) {\n        checkedRadio = (form.querySelector(`input[type=radio][name='${name}']:checked`) as HTMLInputElement) || null;\n        CHECKED_RADIOS.set(form, (checkedRadiosForForm || new Map<string, HTMLInputElement | null>()).set(name, checkedRadio));\n    }\n\n    return checkedRadio === element;\n};\n\nconst shouldRefresh = (tabbables: Element[], records: MutationRecord[]) => {\n    for (const record of records) {\n        if (record.type !== 'attributes') {\n            if (some(record.addedNodes, (node: Node) => node instanceof Element && isTabbable(node as Element))) return true;\n            if (some(record.removedNodes, (node: Node) => tabbables.includes(node as Element))) return true;\n        } else if (isTabbable(record.target as Element)) return true;\n        else if (tabbables.includes(record.target as Element)) return true;\n    }\n    return false;\n};\n\nexport const focusIsWithin = (rootElement: Element = document.body, elementWithFocus?: Element | null): boolean => {\n    if (isUndefined(rootElement)) return false;\n    if (isNullish(elementWithFocus)) return !!document.activeElement && focusIsWithin(rootElement, document.activeElement);\n\n    let parentElement = elementWithFocus?.parentNode as Element | null;\n\n    while (parentElement) {\n        if (parentElement === rootElement) return true;\n        parentElement = parentElement?.parentNode as Element | null;\n    }\n\n    return false;\n};\n\nexport const isFocusable = (element: Element) =>\n    !(\n        // [TODO]: Include all of these checks\n        // (1) matches focusable elements selector\n        // (2) is disabled element\n        // (3) is inert or inert subtree child\n        // (4) is hidden input\n        // (5) with visibility: hidden\n        // (6) is summary of open details element\n        // (7) is details with summary element\n        // (8) is disabled fieldset subtree child\n\n        /* (1) */ (\n            !element.matches(SELECTORS) ||\n            /* (2) */ (element as HTMLInputElement)?.disabled ||\n            /* (3) */ /^(true)?$/.test(element.getAttribute('inert') as string) ||\n            /* (4) */ (isInput(element) && element.hidden)\n        )\n    );\n\nexport const isTabbable = (element: Element) =>\n    !(\n        (\n            (isRadio(element) && !isCheckedRadio(element)) || // (1) is not checked radio button\n            (element as HTMLElement)?.tabIndex < 0 || // (2) has negative tabindex\n            !isFocusable(element)\n        ) // (3) is not focusable\n    );\n\nexport const withTabbableRoot = () => {\n    const observer = new MutationObserver(records => shouldRefresh(tabbables, records) && getTabbables());\n    const tabbables: Element[] = [];\n\n    let currentIndex = -1;\n    let root: Element | null = null;\n\n    const focusAt = (tabbableIndex: number) => {\n        if (tabbableIndex < 0) return;\n        const constrainedIndex = Math.min(tabbableIndex, tabbables.length - 1);\n        if (currentIndex !== constrainedIndex) currentIndex = constrainedIndex;\n        (tabbables[currentIndex] as HTMLElement)?.focus();\n    };\n\n    const getTabbables = () => {\n        tabbables.length = 0;\n        if (!(root instanceof Element)) return;\n        root.querySelectorAll(SELECTORS).forEach(maybeTabbable => isTabbable(maybeTabbable) && tabbables.push(maybeTabbable));\n        if (!focusIsWithin(root)) return;\n        tabbableRoot.current = document.activeElement;\n    };\n\n    const tabbableRoot = Object.create(null, {\n        current: {\n            get: () => tabbables[currentIndex] ?? null,\n            set: (maybeTabbableOrOffset: Element | number | null) => {\n                if (!maybeTabbableOrOffset) return;\n                if (!isNumber(maybeTabbableOrOffset)) return focusAt(tabbables.indexOf(maybeTabbableOrOffset));\n                if (maybeTabbableOrOffset !== ~~maybeTabbableOrOffset) return;\n                return focusAt(mod(currentIndex + maybeTabbableOrOffset, tabbables.length));\n            },\n        },\n        root: {\n            get: () => root,\n            set: (maybeElement?: any) => {\n                if (maybeElement === root) return;\n\n                root && observer.disconnect();\n                root = maybeElement instanceof Element ? maybeElement : null;\n                tabbables.length = 0;\n\n                if (!root) return;\n\n                observer.observe(root, {\n                    attributeFilter: ATTRIBUTES,\n                    attributes: true,\n                    childList: true,\n                    subtree: true,\n                });\n\n                getTabbables();\n            },\n        },\n        tabbables: { value: tabbables },\n    }) as TabbableRoot;\n\n    return tabbableRoot;\n};\n\nexport default withTabbableRoot;\n","import { useCallback, useMemo, useRef } from 'preact/hooks';\nimport { InteractionKeyCode } from '../../components/types';\nimport { isUndefined } from '../../utils';\nimport withTabbableRoot, { focusIsWithin, isFocusable } from '../../primitives/dom/tabbableRoot/tabbable';\nimport type { Reflexable } from '../../primitives/reactive/reflex';\nimport type { Nullable } from '../../utils/types';\nimport useReflex from '../useReflex';\n\nconst useFocusTrap = (rootElementRef: Nullable<Reflexable<Element>>, onEscape: (interactionKeyPressed: boolean) => any) => {\n    const escapedFocus = useRef(false);\n    const focusElement = useRef<Element | null>(null);\n    const interactionKeyPressed = useRef(false);\n    const tabbableRoot = useMemo(withTabbableRoot, []);\n\n    const onClickCapture = useMemo(() => {\n        let lastFocusableElement: Element | null = null;\n        let raf: number | undefined;\n\n        return (evt: Event) => {\n            if (!isUndefined(raf)) cancelAnimationFrame(raf);\n            let element = evt.target as Element | null;\n            while (element && element !== evt.currentTarget) {\n                if (isFocusable(element)) {\n                    lastFocusableElement = element;\n                    raf = requestAnimationFrame(() => {\n                        raf = requestAnimationFrame(() => {\n                            if (focusElement.current !== lastFocusableElement && lastFocusableElement instanceof HTMLElement) {\n                                (focusElement.current = lastFocusableElement)?.focus();\n                            }\n                            lastFocusableElement = null;\n                            raf = undefined;\n                        });\n                    });\n                    return;\n                }\n                element = element.parentNode as Element | null;\n            }\n        };\n    }, []);\n\n    const onFocusInCapture = useCallback((evt: FocusEvent) => {\n        tabbableRoot.current = focusElement.current = evt.target as Element | null;\n    }, []);\n\n    const onFocusOutCapture = useCallback((evt: FocusEvent) => {\n        if (tabbableRoot.tabbables.includes(evt.relatedTarget as Element)) return;\n        if (focusIsWithin(evt.currentTarget as Element, evt.relatedTarget as Element | null)) return;\n        if (interactionKeyPressed.current) return;\n\n        escapedFocus.current = true;\n\n        requestAnimationFrame(() => {\n            if (escapedFocus.current) onEscape((escapedFocus.current = false));\n        });\n    }, []);\n\n    const onKeyDownCapture = useMemo(() => {\n        let raf: number | undefined;\n\n        return (evt: KeyboardEvent) => {\n            switch (evt.code) {\n                case InteractionKeyCode.ARROW_DOWN:\n                case InteractionKeyCode.ARROW_LEFT:\n                case InteractionKeyCode.ARROW_RIGHT:\n                case InteractionKeyCode.ARROW_UP:\n                case InteractionKeyCode.END:\n                case InteractionKeyCode.ESCAPE:\n                case InteractionKeyCode.HOME:\n                case InteractionKeyCode.PAGE_DOWN:\n                case InteractionKeyCode.PAGE_UP:\n                case InteractionKeyCode.TAB:\n                    cancelAnimationFrame(raf as number);\n                    raf = requestAnimationFrame(() => {\n                        raf = requestAnimationFrame(() => {\n                            interactionKeyPressed.current = false;\n                            raf = undefined;\n                        });\n                    });\n                    interactionKeyPressed.current = true;\n                    break;\n            }\n            if (evt.code === InteractionKeyCode.TAB) {\n                evt.preventDefault();\n                tabbableRoot.current = evt.shiftKey ? -1 : 1;\n            } else if (evt.code === InteractionKeyCode.ESCAPE) onEscape(true);\n        };\n    }, []);\n\n    return useReflex<Element>(\n        useCallback((current, previous) => {\n            if (previous instanceof Element) {\n                (previous as HTMLElement).removeEventListener('keydown', onKeyDownCapture, true);\n                (previous as HTMLElement).removeEventListener('focusin', onFocusInCapture, true);\n                (previous as HTMLElement).removeEventListener('focusout', onFocusOutCapture, true);\n                (current as HTMLElement).removeEventListener('click', onClickCapture, true);\n            }\n\n            if (current instanceof Element) {\n                (current as HTMLElement).addEventListener('keydown', onKeyDownCapture, true);\n                (current as HTMLElement).addEventListener('focusin', onFocusInCapture, true);\n                (current as HTMLElement).addEventListener('focusout', onFocusOutCapture, true);\n                (current as HTMLElement).addEventListener('click', onClickCapture, true);\n                escapedFocus.current = false;\n                tabbableRoot.root = current;\n            } else tabbableRoot.root = null;\n        }, []),\n        rootElementRef\n    );\n};\n\nexport default useFocusTrap;\n","import { enumerable, isUndefined, struct, structFrom } from '../../../../utils';\n\ntype ObserverCallback = (entry: IntersectionObserverEntry) => void;\n\ninterface WithIntersectionObserver {\n    remove: (this: { observerCallback: ObserverCallback }) => void;\n}\n\ninterface ObserverInstance {\n    observerCallback: ObserverCallback;\n    observer: IntersectionObserver;\n}\n\nconst getIntersectionObserver = (() => {\n    const observerCallbackMap = new WeakMap<ObserverCallback, ObserverInstance & WithIntersectionObserver>();\n\n    const withIntersectionObserver = struct({\n        remove: enumerable(function () {\n            remove(this.observerCallback);\n        } as WithIntersectionObserver['remove']),\n    }) as WithIntersectionObserver;\n\n    const findObserver = (callbackFn: ObserverCallback) => {\n        let observerInstance = observerCallbackMap.get(callbackFn);\n\n        if (isUndefined(observerInstance)) {\n            const observer = new IntersectionObserver(\n                entries => {\n                    entries.forEach(entry => {\n                        if (callbackFn) callbackFn(entry);\n                    });\n                },\n                { root: null, rootMargin: '', threshold: [1] }\n            );\n\n            observerInstance = structFrom(withIntersectionObserver, {\n                observerCallback: enumerable(callbackFn),\n                observer: enumerable(observer),\n            }) as ObserverInstance & WithIntersectionObserver;\n\n            observerCallbackMap.set(callbackFn, observerInstance);\n        }\n\n        return observerInstance;\n    };\n\n    const remove = (callbackFn: ObserverCallback) => {\n        const currentObserver = observerCallbackMap.get(callbackFn);\n        currentObserver?.observer.disconnect();\n        observerCallbackMap.delete(callbackFn);\n    };\n\n    return findObserver;\n})();\n\nexport default getIntersectionObserver;\n","import { PopoverContainerPosition, PopoverContainerVariant } from '../../components/internal/Popover/types';\nimport getIntersectionObserver from '../../components/internal/Popover/utils/utils';\nimport { MutableRef, useCallback, useEffect, useRef, useState } from 'preact/hooks';\nimport { Ref } from 'preact';\nimport type { Reflexable } from '../../primitives/reactive/reflex';\nimport type { Nullable } from '../../utils/types';\nimport useReflex from '../useReflex';\nimport { isRefObject } from '../../primitives/reactive/reflex/helpers';\n\nconst calculateOffset = ({\n    popover,\n    offset,\n    targetElement,\n    position,\n    variant,\n    fullWidth,\n}: {\n    popover: Element;\n    offset: [number, number, number, number];\n    targetElement: MutableRef<Element | null>;\n    position: PopoverContainerPosition;\n    variant: PopoverContainerVariant;\n    fullWidth: boolean;\n}) => {\n    const currentTarget = targetElement?.current as HTMLElement;\n\n    let dimensionX = 0;\n    let dimensionY = 0;\n    const targetPosition = currentTarget.getBoundingClientRect();\n    const bodyPosition = document.body.getBoundingClientRect();\n\n    const popoverContent = popover?.firstChild as HTMLElement;\n    const toCenterFullWidth = bodyPosition.left + bodyPosition.width / 2 - popoverContent.offsetWidth / 2;\n    const toCenterX = targetPosition.left + targetPosition.width / 2 - popoverContent.offsetWidth / 2;\n    const toCenterY = targetPosition.top + targetPosition.height / 2 - popoverContent.offsetHeight / 2;\n    switch (position) {\n        case PopoverContainerPosition.BOTTOM:\n            dimensionX = fullWidth\n                ? toCenterFullWidth\n                : variant === PopoverContainerVariant.TOOLTIP\n                ? toCenterX + window.scrollX\n                : targetPosition?.left + window.scrollX;\n            dimensionY = targetPosition?.top + targetPosition?.height + window.scrollY + offset[1];\n            break;\n        case PopoverContainerPosition.BOTTOM_LEFT:\n            dimensionX = targetPosition?.right + window.scrollX - popover.clientWidth;\n            dimensionY = targetPosition?.top + targetPosition?.height + window.scrollY + offset[1];\n            break;\n        case PopoverContainerPosition.TOP:\n            dimensionX = variant === PopoverContainerVariant.TOOLTIP ? toCenterX + window.scrollX : targetPosition.left + window.scrollX;\n            dimensionY = targetPosition?.top - popoverContent?.clientHeight + window.scrollY - offset[0];\n            break;\n        case PopoverContainerPosition.RIGHT:\n            dimensionX = targetPosition.left + targetPosition.width + window.scrollX + offset[2];\n            dimensionY =\n                variant === PopoverContainerVariant.TOOLTIP\n                    ? toCenterY + window.scrollY\n                    : targetPosition?.top - targetPosition?.height / 2 + window.scrollY;\n            break;\n        case PopoverContainerPosition.LEFT:\n            dimensionX = targetPosition?.left - popover?.clientWidth + window.scrollX - offset[3];\n            dimensionY =\n                variant === PopoverContainerVariant.TOOLTIP\n                    ? toCenterY + window.scrollY\n                    : targetPosition?.top + window.scrollY - targetPosition?.height / 2;\n            break;\n    }\n\n    const result = [dimensionX, dimensionY, 0];\n\n    const res = result.reduce((acc, currentVal, index) => {\n        if (index === 0) {\n            return acc + `${currentVal}px,`;\n        } else if (index === result.length - 1) {\n            return acc + ` ${currentVal}px)`;\n        } else {\n            return acc + ` ${currentVal}px,`;\n        }\n    }, 'translate3d(');\n\n    return `position:absolute;inset:0 auto auto 0;margin: 0;transform: ${res};visibility:hidden`;\n};\nconst usePopoverPositioner = (\n    offset: [number, number, number, number],\n    targetElement: MutableRef<Element | null>,\n    variant: PopoverContainerVariant,\n    position?: PopoverContainerPosition,\n    arrowRef?: Ref<HTMLSpanElement> | undefined,\n    setToTargetWidth?: boolean,\n    showOverlay?: boolean,\n    fitPosition?: boolean,\n    ref?: Nullable<Reflexable<Element>>\n) => {\n    const [initialPosition, setInitialPosition] = useState(true);\n    const [showPopover, setShowPopover] = useState(fitPosition ? !fitPosition : !!position);\n    const [currentPosition, setCurrentPosition] = useState(position || PopoverContainerPosition.TOP);\n    const [checkedPositions, setCheckedPosition] = useState<Array<[PopoverContainerPosition, number]>>([]);\n\n    const observerCallback = useCallback(\n        (entry: IntersectionObserverEntry) => {\n            if (entry.intersectionRatio === 1) return setShowPopover(true);\n            if (!initialPosition && entry.intersectionRatio !== 1) {\n                if (checkedPositions && checkedPositions.length === (fitPosition ? 5 : 4)) {\n                    const bestPos = checkedPositions.reduce((res, pos) => {\n                        if (pos[1] > res[1]) return pos;\n                        return res;\n                    }, checkedPositions[0]!);\n                    setCurrentPosition(bestPos[0]);\n                    setShowPopover(true);\n                    return;\n                }\n                setShowPopover(false);\n                switch (currentPosition) {\n                    case PopoverContainerPosition.TOP:\n                        setCheckedPosition(value => [...value, [PopoverContainerPosition.TOP, entry.intersectionRatio]]);\n                        setCurrentPosition(PopoverContainerPosition.BOTTOM);\n                        break;\n                    case PopoverContainerPosition.BOTTOM:\n                        setCheckedPosition(value => [...value, [PopoverContainerPosition.BOTTOM, entry.intersectionRatio]]);\n                        setCurrentPosition(fitPosition ? PopoverContainerPosition.BOTTOM_LEFT : PopoverContainerPosition.RIGHT);\n                        break;\n                    case PopoverContainerPosition.BOTTOM_LEFT:\n                        setCheckedPosition(value => [...value, [PopoverContainerPosition.BOTTOM, entry.intersectionRatio]]);\n                        setCurrentPosition(PopoverContainerPosition.RIGHT);\n                        break;\n                    case PopoverContainerPosition.RIGHT:\n                        setCheckedPosition(value => [...value, [PopoverContainerPosition.RIGHT, entry.intersectionRatio]]);\n                        setCurrentPosition(PopoverContainerPosition.LEFT);\n                        break;\n                    case PopoverContainerPosition.LEFT:\n                        setCheckedPosition(value => [...value, [PopoverContainerPosition.LEFT, entry.intersectionRatio]]);\n                        setCurrentPosition(PopoverContainerPosition.TOP);\n                        break;\n                }\n            }\n        },\n        [initialPosition, checkedPositions, currentPosition, fitPosition]\n    );\n    const observerCallbackRef = useRef(observerCallback);\n\n    useEffect(() => {\n        getIntersectionObserver(observerCallbackRef.current).remove();\n        observerCallbackRef.current = observerCallback;\n    }, [observerCallback]);\n\n    return useReflex<Element>(\n        useCallback(\n            (current, previous) => {\n                if (previous && (!position || fitPosition)) {\n                    const observer = getIntersectionObserver(observerCallback).observer;\n                    observer.unobserve(previous);\n                }\n\n                if (current && targetElement.current) {\n                    if (!position || fitPosition) {\n                        const observer = getIntersectionObserver(observerCallback).observer;\n                        observer.observe(current);\n                    }\n                    if (!(current instanceof Element)) return;\n                    const popoverStyle = calculateOffset({\n                        popover: current,\n                        offset,\n                        targetElement,\n                        position: currentPosition,\n                        variant,\n                        fullWidth: showOverlay ?? false,\n                    });\n                    const style = showPopover ? popoverStyle + ';visibility:visible' : popoverStyle;\n\n                    const styleWithWidth = setToTargetWidth\n                        ? style + ';min-width:fit-content;width:' + targetElement.current?.clientWidth + 'px'\n                        : style;\n                    current.setAttribute('style', `${styleWithWidth}`);\n\n                    if (initialPosition) setInitialPosition(false);\n\n                    if (variant && variant === PopoverContainerVariant.TOOLTIP && arrowRef && isRefObject(arrowRef)) {\n                        arrowRef.current?.setAttribute('data-popover-placement', currentPosition);\n                    }\n                }\n            },\n            [\n                offset,\n                targetElement,\n                currentPosition,\n                position,\n                variant,\n                observerCallback,\n                showPopover,\n                initialPosition,\n                setToTargetWidth,\n                arrowRef,\n                showOverlay,\n                fitPosition,\n            ]\n        ),\n        ref\n    );\n};\n\nexport default usePopoverPositioner;\n","import { uniqueId } from '../../utils';\nimport { useCallback, useRef } from 'preact/hooks';\nimport type { Reflexable } from '../../primitives/reactive/reflex';\nimport type { Nullable } from '../../utils/types';\nimport useReflex from '../useReflex';\n\nconst useUniqueIdentifier = (ref?: Nullable<Reflexable<Element>>) => {\n    const id = useRef<string>();\n\n    return useReflex<Element>(\n        useCallback(\n            (current, previous) => {\n                if (previous instanceof Element && previous.id === id.current) previous.id = '';\n                if (!(current instanceof Element)) return;\n                current.id = id.current || (id.current = uniqueId());\n            },\n            [ref]\n        ),\n        ref\n    );\n};\n\nexport default useUniqueIdentifier;\n","import ButtonActions from '../Button/ButtonActions/ButtonActions';\nimport { ButtonActionsLayoutBasic } from '../Button/ButtonActions/types';\nimport {\n    DEFAULT_POPOVER_CLASSNAME,\n    DEFAULT_TOOLTIP_CLASSNAME,\n    POPOVER_CONTAINER_CLASSNAME,\n    POPOVER_CONTENT_CLASSNAME,\n    POPOVER_FOOTER_CLASSNAME,\n    POPOVER_HEADER_CLASSNAME,\n    POPOVER_HEADER_TITLE_CLASSNAME,\n    TOOLTIP_CONTENT_CLASSNAME,\n} from './constants';\nimport PopoverDismissButton from './PopoverDismissButton/PopoverDismissButton';\nimport PopoverTitle from './PopoverTitle/PopoverTitle';\nimport { PopoverContainerSize, PopoverContainerVariant, PopoverProps } from './types';\nimport { InteractionKeyCode } from '../../types';\nimport { ClickOutsideVariant, CONTROL_ELEMENT_PROPERTY, useClickOutside } from '../../../hooks/element/useClickOutside';\nimport useFocusTrap from '../../../hooks/element/useFocusTrap';\nimport usePopoverPositioner from '../../../hooks/element/usePopoverPositioner';\nimport useUniqueIdentifier from '../../../hooks/element/useUniqueIdentifier';\nimport useReflex from '../../../hooks/useReflex';\nimport { getModifierClasses } from '../../../utils/preact';\nimport { boolOrTrue, isFunction } from '../../../utils';\nimport { isFocusable, SELECTORS } from '../../../primitives/dom/tabbableRoot/tabbable';\nimport classNames from 'classnames';\nimport { createPortal, PropsWithChildren } from 'preact/compat';\nimport { useCallback, useEffect, useMemo, useRef } from 'preact/hooks';\nimport { Ref } from 'preact';\nimport './Popover.scss';\n\nconst findFirstFocusableElement = (root: Element) => {\n    let focusable: HTMLElement | undefined;\n    const elements = root.querySelector(`.${TOOLTIP_CONTENT_CLASSNAME}`)?.querySelectorAll(SELECTORS);\n    if (elements) {\n        Array.prototype.some.call(elements, elem => {\n            if (isFocusable(elem)) return (focusable = elem);\n        });\n        return focusable;\n    }\n    return null;\n};\n\nconst getGapByVariant = (variant: PopoverContainerVariant): [number, number, number, number] => {\n    return variant === PopoverContainerVariant.TOOLTIP ? [10, 3, 5, 5] : [15, 15, 15, 15];\n};\n\nfunction Popover({\n    actions,\n    disableFocusTrap = false,\n    actionsLayout = ButtonActionsLayoutBasic.SPACE_BETWEEN,\n    variant = PopoverContainerVariant.TOOLTIP,\n    title,\n    open,\n    dismissible,\n    modifiers,\n    divider,\n    fitContent,\n    withoutSpace,\n    containerSize,\n    position,\n    targetElement,\n    setToTargetWidth,\n    dismiss,\n    children,\n    withContentPadding,\n    classNameModifiers,\n    showOverlay = false,\n    fitPosition,\n    ...uncontrolledProps\n}: PropsWithChildren<PopoverProps>) {\n    const isDismissible = useMemo(() => isFunction(dismiss) && boolOrTrue(dismissible), [dismiss, dismissible]);\n    const arrowRef = useUniqueIdentifier() as Ref<HTMLSpanElement> | undefined;\n    const popoverOpen = useRef<boolean>();\n\n    const onCloseFocusTrap = useCallback(\n        (interactionKeyPressed: boolean) => {\n            dismiss && dismiss();\n            if (interactionKeyPressed) {\n                (targetElement?.current as HTMLElement)?.focus();\n            }\n        },\n        [dismiss, targetElement]\n    );\n\n    const onKeyDown = useCallback(\n        (e: KeyboardEvent) => {\n            if (e.code === InteractionKeyCode.ESCAPE) {\n                dismiss && dismiss();\n                (targetElement?.current as HTMLElement).focus();\n            }\n        },\n        [dismiss, targetElement]\n    );\n\n    const cachedOnKeyDown = useRef(onKeyDown);\n    const autoFocusAnimFrame = useRef<ReturnType<typeof requestAnimationFrame>>();\n\n    const popoverPositionAnchorElement = useClickOutside(\n        usePopoverPositioner(getGapByVariant(variant), targetElement, variant, position, arrowRef, setToTargetWidth, showOverlay, fitPosition),\n        dismiss,\n        variant === PopoverContainerVariant.TOOLTIP && !open,\n        ClickOutsideVariant.POPOVER\n    );\n    const popoverFocusTrapElement = useFocusTrap(disableFocusTrap ? null : popoverPositionAnchorElement, onCloseFocusTrap);\n\n    const popoverElement = useReflex<Element & { [CONTROL_ELEMENT_PROPERTY]?: (typeof targetElement)['current'] }>(\n        useCallback(\n            (current, previous) => {\n                if (previous instanceof Element) {\n                    previous[CONTROL_ELEMENT_PROPERTY] = undefined;\n                    delete previous[CONTROL_ELEMENT_PROPERTY];\n                }\n                if (current instanceof Element) {\n                    current[CONTROL_ELEMENT_PROPERTY] = targetElement.current;\n                    cancelAnimationFrame(autoFocusAnimFrame.current!);\n\n                    autoFocusAnimFrame.current = requestAnimationFrame(() => {\n                        if (popoverOpen.current === open) return;\n                        if (!(popoverOpen.current = open)) return;\n                        const focusable = findFirstFocusableElement(current) as HTMLElement;\n                        focusable?.focus();\n                    });\n                }\n            },\n            [open, targetElement]\n        ),\n        disableFocusTrap ? popoverPositionAnchorElement : popoverFocusTrapElement\n    );\n\n    const popoverElementWithId = useUniqueIdentifier(popoverElement);\n\n    const conditionalClasses = useMemo(\n        () => ({\n            [`${DEFAULT_POPOVER_CLASSNAME}--medium`]: containerSize === PopoverContainerSize.MEDIUM,\n            [`${DEFAULT_POPOVER_CLASSNAME}--with-divider`]: !!divider,\n            [`${DEFAULT_POPOVER_CLASSNAME}--wide`]: containerSize === PopoverContainerSize.WIDE,\n            [`${DEFAULT_POPOVER_CLASSNAME}--fit-content`]: fitContent,\n            [`${DEFAULT_POPOVER_CLASSNAME}--without-space`]: withoutSpace,\n            [`${DEFAULT_POPOVER_CLASSNAME}--auto-width`]: showOverlay,\n        }),\n        [containerSize, divider, withoutSpace, fitContent, showOverlay]\n    );\n\n    useEffect(() => {\n        if (popoverElement.current) popoverElement.current[CONTROL_ELEMENT_PROPERTY] = targetElement.current;\n    }, [targetElement]);\n\n    useEffect(() => {\n        document.removeEventListener('keydown', cachedOnKeyDown.current);\n        document.addEventListener('keydown', (cachedOnKeyDown.current = onKeyDown));\n        return () => document.removeEventListener('keydown', cachedOnKeyDown.current);\n    }, [onKeyDown]);\n\n    const classNamesByVariant =\n        variant === PopoverContainerVariant.TOOLTIP ? DEFAULT_TOOLTIP_CLASSNAME : `${DEFAULT_POPOVER_CLASSNAME} ${POPOVER_CONTAINER_CLASSNAME}`;\n    const classNamesContentByVariant = variant === PopoverContainerVariant.TOOLTIP ? TOOLTIP_CONTENT_CLASSNAME : `${POPOVER_CONTENT_CLASSNAME}`;\n\n    return createPortal(\n        <>\n            {open ? (\n                <>\n                    {showOverlay && <div className=\"adyen-pe-popover__overlay\"></div>}\n                    <div\n                        id=\"popover\"\n                        ref={popoverElementWithId}\n                        {...uncontrolledProps}\n                        className={classNames(classNamesByVariant, conditionalClasses, classNameModifiers)}\n                        style={{ visibility: 'hidden' }}\n                        role={uncontrolledProps.role ?? (variant === PopoverContainerVariant.POPOVER ? 'dialog' : 'tooltip')}\n                    >\n                        {(title || isDismissible) && (\n                            <div className={getModifierClasses(POPOVER_HEADER_CLASSNAME, modifiers, [POPOVER_HEADER_CLASSNAME])}>\n                                {title && (\n                                    <div className={POPOVER_HEADER_TITLE_CLASSNAME}>\n                                        <PopoverTitle title={title} />\n                                    </div>\n                                )}\n                                {isDismissible && <PopoverDismissButton onClick={dismiss!} />}\n                            </div>\n                        )}\n                        {children && (\n                            <>\n                                <div\n                                    className={classNames(classNamesContentByVariant, {\n                                        [`${POPOVER_CONTENT_CLASSNAME}--with-padding`]: withContentPadding,\n                                        [`${POPOVER_CONTENT_CLASSNAME}--overlay`]: showOverlay,\n                                    })}\n                                >\n                                    {children}\n                                </div>\n                                {variant === PopoverContainerVariant.TOOLTIP && (\n                                    <span data-popover-placement=\"hidden\" ref={arrowRef} className=\"adyen-pe-tooltip__arrow\" />\n                                )}\n                            </>\n                        )}\n                        {actions && (\n                            <div className={POPOVER_FOOTER_CLASSNAME}>\n                                <ButtonActions actions={actions} layout={actionsLayout} />\n                            </div>\n                        )}\n                    </div>\n                </>\n            ) : null}\n        </>,\n        document.getElementsByTagName('body')[0]!\n    );\n}\nexport default Popover;\n","import { useCallback } from 'preact/hooks';\nimport { InteractionKeyCode } from '../../types';\nimport useBooleanState from '../../../hooks/useBooleanState';\n\nexport interface TooltipListeners {\n    onfocusoutCapture(): void;\n    onMouseLeave(): void;\n    onKeyDown(evt: Event): void;\n    onFocus(): void;\n    onMouseEnter(): void;\n}\nexport const useTooltipListeners = (): {\n    isVisible: boolean;\n    listeners: TooltipListeners;\n} => {\n    const [isVisible, setIsVisible] = useBooleanState();\n    const showTooltip = useCallback(() => setIsVisible(true), [setIsVisible]);\n    const hideTooltip = useCallback(() => setIsVisible(false), [setIsVisible]);\n\n    const onKeyDown = useCallback(\n        (evt: KeyboardEvent) => {\n            switch (evt.code) {\n                case InteractionKeyCode.ESCAPE:\n                    hideTooltip();\n                    break;\n                default:\n                    break;\n            }\n        },\n        [hideTooltip]\n    );\n\n    return {\n        listeners: {\n            onfocusoutCapture: hideTooltip,\n            onMouseLeave: hideTooltip,\n            onKeyDown,\n            onFocus: showTooltip,\n            onMouseEnter: showTooltip,\n        },\n        isVisible,\n    };\n};\n","import Popover from '../Popover/Popover';\nimport { PopoverContainerVariant } from '../Popover/types';\nimport { useTooltipListeners } from './useTooltipListeners';\nimport { TypographyVariant } from '../Typography/types';\nimport Typography from '../Typography/Typography';\nimport useUniqueIdentifier from '../../../hooks/element/useUniqueIdentifier';\nimport classNames from 'classnames';\nimport { cloneElement, VNode } from 'preact';\nimport { PropsWithChildren } from 'preact/compat';\nimport { MutableRef } from 'preact/hooks';\nimport { TooltipProps } from './types';\nimport './Tooltip.scss';\n\nconst isString = (content: string | VNode<any>) => {\n    return typeof content === 'string';\n};\n\nfunction isTouchDevice() {\n    const hasTouchStart = 'ontouchstart' in window;\n\n    // Check for maximum touch points (standard and IE)\n    const hasTouchPoints =\n        (navigator.maxTouchPoints && navigator.maxTouchPoints > 0) ||\n        ((navigator as any).msMaxTouchPoints && (navigator as any).msMaxTouchPoints > 0);\n\n    const hasCoarsePointer = window.matchMedia && window.matchMedia('(pointer: coarse)').matches;\n\n    return hasTouchStart || hasTouchPoints || hasCoarsePointer;\n}\n\nexport const Tooltip = ({ content, children, triggerRef, showTooltip, position, isContainerHovered = false }: PropsWithChildren<TooltipProps>) => {\n    const controllerRef = useUniqueIdentifier();\n    const { isVisible, listeners } = useTooltipListeners();\n\n    if (isTouchDevice()) return <>{children}</>;\n\n    return (\n        <>\n            {children\n                ? cloneElement(children, {\n                      ...children?.props,\n                      role: 'button',\n                      tabIndex: -1,\n                      ref: controllerRef,\n                      className: children?.props?.className\n                          ? classNames(`${children?.props?.className} adyen-pe__tooltip-target`, {\n                                ' adyen-pe__tooltip-target--hovered': isContainerHovered,\n                            })\n                          : classNames('adyen-pe__tooltip-target', { 'adyen-pe__tooltip-target--hovered': isContainerHovered }),\n                      ...listeners,\n                      'aria-describedby': `tooltip-${controllerRef.current?.id}`,\n                  })\n                : null}\n\n            {(isVisible || showTooltip) && (\n                <Popover\n                    variant={PopoverContainerVariant.TOOLTIP}\n                    targetElement={(triggerRef ?? controllerRef) as MutableRef<Element | null>}\n                    position={position}\n                    open={isVisible || showTooltip}\n                >\n                    <>{content && isString(content) ? <Typography variant={TypographyVariant.CAPTION}>{content}</Typography> : { content }}</>\n                </Popover>\n            )}\n        </>\n    );\n};\n","import useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { Tooltip } from '../../../../internal/Tooltip/Tooltip';\nimport { TypographyVariant } from '../../../../internal/Typography/types';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { CategoryProps } from './types';\n\nfunction Category({ value, isContainerHovered }: CategoryProps) {\n    const { i18n } = useCoreContext();\n\n    const tooltipKey = `tooltip.${value}`;\n\n    return (\n        <>\n            {i18n.has(tooltipKey) && (\n                <Tooltip content={i18n.get(tooltipKey)} isContainerHovered={isContainerHovered}>\n                    <span>\n                        <Typography variant={TypographyVariant.BODY}>\n                            {i18n.has(`txType.${value}`) ? i18n.get(`txType.${value}`) : `${value}`}\n                        </Typography>\n                    </span>\n                </Tooltip>\n            )}\n        </>\n    );\n}\n\nexport default Category;\n","import AdyenPlatformExperienceError from '../../core/Errors/AdyenPlatformExperienceError';\nimport { TranslationKey } from '../../translations';\nimport { JSXInternal } from 'preact/src/jsx';\n\nexport type ErrorMessage = {\n    title: TranslationKey;\n    message?: TranslationKey | TranslationKey[];\n    refreshComponent?: boolean;\n    onContactSupport?: () => void;\n    translationValues?: { [k in TranslationKey]?: JSXInternal.Element | null };\n};\n\nexport const UNDEFINED_ERROR = { title: 'thereWasAnUnexpectedError', message: ['contactSupportForHelp'] } satisfies ErrorMessage;\n\nexport const getCommonErrorMessage = (error: AdyenPlatformExperienceError | undefined, onContactSupport?: () => void): ErrorMessage | null => {\n    if (!error) return null;\n    switch (error.errorCode) {\n        case '29_001':\n            return {\n                title: 'theRequestIsMissingRequiredFieldsOrContainsInvalidData',\n                message: ['contactSupportForHelp'],\n                onContactSupport,\n            };\n        case '30_112':\n            return {\n                title: 'entityWasNotFound',\n                message: ['entityWasNotFoundDetail'],\n                onContactSupport,\n            };\n        case '00_403':\n            return UNDEFINED_ERROR;\n        default:\n            return null;\n    }\n};\n","import cx from 'classnames';\nimport { useCallback, useState } from 'preact/hooks';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport Button from '../Button';\nimport { ButtonVariant } from '../Button/types';\nimport Icon from '../Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\nimport './CopyText.scss';\nimport { HTMLProps } from 'preact/compat';\n\ntype CopyTextProps = {\n    textToCopy: string;\n    isHovered?: boolean;\n    buttonLabel?: string;\n    showCopyTextTooltip?: boolean;\n    type?: 'Link' | 'Text' | 'Default';\n} & HTMLProps<HTMLSpanElement>;\n\nconst CopyText = ({ textToCopy, isHovered, buttonLabel, showCopyTextTooltip = true, type = 'Link', ...restProps }: CopyTextProps) => {\n    const { i18n } = useCoreContext();\n\n    const [tooltipLabel, setTooltipLabel] = useState(i18n.get('copy'));\n\n    const onClick = useCallback(async () => {\n        if (textToCopy) {\n            try {\n                await navigator.clipboard.writeText(textToCopy);\n                setTooltipLabel(i18n.get('copied'));\n            } catch (e) {\n                console.log(e);\n            }\n        }\n    }, [i18n, textToCopy]);\n\n    const resetTooltipLabel = useCallback(() => {\n        setTooltipLabel(i18n.get('copy'));\n    }, [i18n]);\n\n    return (\n        <span\n            className={cx('adyen-pe-copy-text__container', {\n                ['adyen-pe-copy-text__container--information']: type === 'Link',\n            })}\n            {...restProps}\n        >\n            {showCopyTextTooltip ? (\n                <Tooltip content={textToCopy} isContainerHovered={isHovered}>\n                    <span\n                        className={cx({\n                            ['adyen-pe-copy-text__label']: type !== 'Default',\n                            ['adyen-pe-copy-text__information']: type === 'Link',\n                            ['adyen-pe-copy-text__text']: type === 'Text',\n                        })}\n                    >\n                        {buttonLabel || textToCopy}\n                    </span>\n                </Tooltip>\n            ) : (\n                <span\n                    className={cx({\n                        ['adyen-pe-copy-text__label']: type !== 'Default',\n                        ['adyen-pe-copy-text__information']: type === 'Link',\n                        ['adyen-pe-copy-text__text']: type === 'Text',\n                    })}\n                >\n                    {buttonLabel || textToCopy}\n                </span>\n            )}\n            <Tooltip content={tooltipLabel}>\n                <Button\n                    variant={ButtonVariant.TERTIARY}\n                    className=\"adyen-pe-copy-text\"\n                    onClick={onClick}\n                    onBlur={resetTooltipLabel}\n                    onMouseLeaveCapture={resetTooltipLabel}\n                    data-testid=\"copyText\"\n                >\n                    <div\n                        className={cx('adyen-pe-copy-text__icon', {\n                            ['adyen-pe-copy-text__icon--information']: type === 'Link',\n                        })}\n                    >\n                        <Icon name={'copy'} data-testid={'copy-icon'} />\n                    </div>\n                </Button>\n            </Tooltip>\n        </span>\n    );\n};\n\nexport default CopyText;\n","import { ErrorMessage, getCommonErrorMessage, UNDEFINED_ERROR } from './getCommonErrorCode';\nimport AdyenPlatformExperienceError from '../../core/Errors/AdyenPlatformExperienceError';\nimport CopyText from '../internal/CopyText/CopyText';\nimport { TranslationKey } from '../../translations';\n\nexport const getErrorMessage = (\n    error: AdyenPlatformExperienceError | undefined,\n    errorMessage: TranslationKey,\n    onContactSupport?: () => void\n): ErrorMessage => {\n    if (!error) return UNDEFINED_ERROR;\n    const commonError = getCommonErrorMessage(error, onContactSupport);\n    if (commonError) return commonError;\n    switch (error.errorCode) {\n        case undefined:\n            return {\n                title: 'somethingWentWrong',\n                message: [errorMessage, 'tryRefreshingThePageOrComeBackLater'],\n                refreshComponent: true,\n            };\n        case '00_500': {\n            const secondaryErrorMessage = onContactSupport ? 'theErrorCodeIs' : 'contactSupportForHelpAndShareErrorCode';\n            return {\n                title: 'somethingWentWrong',\n                message: [errorMessage, secondaryErrorMessage],\n                translationValues: {\n                    [secondaryErrorMessage]: error.requestId ? <CopyText textToCopy={error.requestId} /> : null,\n                },\n                onContactSupport,\n            };\n        }\n        default:\n            return UNDEFINED_ERROR;\n    }\n};\n","import { ErrorMessageDisplay } from '../ErrorMessageDisplay/ErrorMessageDisplay';\nimport { getErrorMessage } from '../../utils/getErrorMessage';\nimport AdyenPlatformExperienceError from '../../../core/Errors/AdyenPlatformExperienceError';\nimport { TranslationKey } from '../../../translations';\n\nconst DataOverviewError = ({\n    error,\n    errorMessage,\n    onContactSupport,\n}: {\n    error: AdyenPlatformExperienceError | undefined;\n    errorMessage: TranslationKey;\n    onContactSupport?: () => void;\n}) => {\n    const {\n        title,\n        message,\n        refreshComponent,\n        translationValues,\n        onContactSupport: ContactSupport,\n    } = getErrorMessage(error, errorMessage, onContactSupport);\n\n    return (\n        <ErrorMessageDisplay\n            title={title}\n            message={message}\n            translationValues={translationValues}\n            withImage\n            centered\n            refreshComponent={refreshComponent}\n            onContactSupport={ContactSupport}\n        />\n    );\n};\n\nexport default DataOverviewError;\n","import useCoreContext from '../../../../core/Context/useCoreContext';\nimport { noop } from '../../../../utils';\nimport { TableCells } from './TableCells';\nimport { DataGridColumn, InteractiveBodyProps } from '../types';\nimport { CustomCell } from '../DataGrid';\n\nexport const TableBody = <\n    Items extends Array<any>,\n    Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n    ClickedField extends keyof Items[number],\n    CustomCells extends CustomCell<Items, Columns, Columns[number]>\n>({\n    data,\n    columns,\n    customCells,\n    onRowHover,\n}: Omit<InteractiveBodyProps<Items, Columns, ClickedField, CustomCells>, 'onRowClick'>) => {\n    const { i18n } = useCoreContext();\n    return (\n        <>\n            {data?.map((item, index) => (\n                <div\n                    role=\"row\"\n                    tabIndex={0}\n                    className=\"adyen-pe-data-grid__row\"\n                    key={item}\n                    onMouseEnter={i18n.has(`tooltip.${item?.category}`) && onRowHover ? () => onRowHover(index) : noop}\n                    onFocus={i18n.has(`tooltip.${item?.category}`) && onRowHover ? () => onRowHover(index) : noop}\n                    onMouseLeave={i18n.has(`tooltip.${item?.category}`) && onRowHover ? () => onRowHover() : noop}\n                    onBlur={i18n.has(`tooltip.${item?.category}`) && onRowHover ? () => onRowHover() : noop}\n                >\n                    <TableCells<Items, Columns, CustomCells> columns={columns} customCells={customCells} item={item} rowIndex={index} />\n                </div>\n            ))}\n        </>\n    );\n};\n","import { useCallback, useReducer } from 'preact/hooks';\nimport useReflex from '../../../../hooks/useReflex';\nimport { InteractionKeyCode } from '../../../types';\nimport { INITIAL_STATE } from '../DataGrid';\n\nexport const useInteractiveDataGrid = ({ totalRows }: { totalRows: number }) => {\n    const [state, dispatch] = useReducer<Readonly<{ activeIndex: number; index: number }>, { type: 'ACTIVE' | 'CURRENT'; index: number }>(\n        (currentState, action) => {\n            const total = totalRows;\n\n            if (total > 1) {\n                const nextIndex = action.index;\n\n                if (nextIndex < total && nextIndex! >= 0) {\n                    if (action.type === 'ACTIVE') {\n                        return Object.freeze({ ...currentState, index: action.index ?? 0, activeIndex: action.index });\n                    } else {\n                        return Object.freeze({ ...currentState, index: action.index ?? 0, activeIndex: -1 });\n                    }\n                }\n            }\n            return currentState;\n        },\n        INITIAL_STATE\n    );\n\n    const ref = useReflex<Element>(\n        useCallback(\n            current => {\n                if (!(current instanceof Element)) return;\n\n                const optionIndex = Number((current as HTMLElement).dataset?.index);\n\n                if ((state.activeIndex === -1 && optionIndex === 0) || optionIndex === state.index) {\n                    current.setAttribute('tabindex', '0');\n                } else {\n                    current.setAttribute('tabindex', '-1');\n                }\n                if (optionIndex === state.activeIndex) {\n                    (current as HTMLElement)?.focus();\n                }\n            },\n            [state.activeIndex, state.index]\n        )\n    );\n\n    const onKeyDownCapture = useCallback(\n        (evt: KeyboardEvent) => {\n            const isRow = (evt.target as HTMLElement)?.getAttribute('role') === 'row';\n            if (!isRow) {\n                if (evt.code === InteractionKeyCode.ARROW_LEFT) {\n                    dispatch({\n                        type: 'ACTIVE',\n                        index: state.index,\n                    });\n                }\n                return;\n            }\n            switch (evt.code) {\n                case InteractionKeyCode.ARROW_DOWN:\n                case InteractionKeyCode.ARROW_UP:\n                    dispatch({\n                        type: 'ACTIVE',\n                        index: evt.code === InteractionKeyCode.ARROW_DOWN ? state.index + 1 : state.index - 1,\n                    });\n                    break;\n                case InteractionKeyCode.HOME:\n                    dispatch({\n                        type: 'ACTIVE',\n                        index: 0,\n                    });\n                    break;\n                case InteractionKeyCode.END:\n                    dispatch({\n                        type: 'ACTIVE',\n                        index: totalRows - 1,\n                    });\n                    break;\n                case InteractionKeyCode.ENTER:\n                    (evt.currentTarget as HTMLElement)?.click();\n                    break;\n                default:\n                    return;\n            }\n            evt.stopPropagation();\n        },\n\n        [totalRows, state.index]\n    );\n\n    const onFocusCapture = useCallback(\n        (index: number) => (evt: Event) => {\n            const isRow = (evt.target as HTMLElement)?.localName === 'tr';\n            if (!isRow || state.index === -1) dispatch({ type: 'CURRENT', index: index });\n        },\n        [state.index]\n    );\n\n    return { listeners: { onKeyDownCapture, onFocusCapture }, ref, activeIndex: state.activeIndex, currentIndex: state.index };\n};\n","import { TableCells } from './TableCells';\nimport useCoreContext from '../../../../core/Context/useCoreContext';\nimport { noop } from '../../../../utils';\nimport { useCallback } from 'preact/hooks';\nimport { useInteractiveDataGrid } from '../hooks/useInteractiveDataGrid';\nimport { DataGridColumn, InteractiveBodyProps } from '../types';\nimport { CustomCell } from '../DataGrid';\n\nexport const InteractiveBody = <\n    Items extends any[],\n    Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n    ClickedField extends keyof Items[number],\n    CustomCells extends CustomCell<Items, Columns, Columns[number]>\n>({\n    data,\n    columns,\n    onRowClick,\n    customCells,\n    onRowHover,\n}: InteractiveBodyProps<Items, Columns, ClickedField, CustomCells>) => {\n    const onClickCallBack = useCallback(\n        (item: Items[number]) => () => onRowClick?.callback(onRowClick?.retrievedField ? item[onRowClick.retrievedField] : item),\n        [onRowClick]\n    );\n\n    const { i18n } = useCoreContext();\n\n    const { currentIndex, listeners, ref } = useInteractiveDataGrid({ totalRows: data?.length ?? 0 });\n\n    return (\n        <>\n            {data?.map((item, index) => (\n                <div\n                    role=\"row\"\n                    tabIndex={0}\n                    onMouseEnter={i18n.has(`tooltip.${item?.category}`) && onRowHover ? () => onRowHover(index) : noop}\n                    onFocus={i18n.has(`tooltip.${item?.category}`) && onRowHover ? () => onRowHover(index) : noop}\n                    onMouseLeave={i18n.has(`tooltip.${item?.category}`) && onRowHover ? () => onRowHover() : noop}\n                    onBlur={i18n.has(`tooltip.${item?.category}`) && onRowHover ? () => onRowHover() : noop}\n                    ref={ref}\n                    aria-selected={index === currentIndex}\n                    data-index={index}\n                    className=\"adyen-pe-data-grid__row adyen-pe-data-grid__row--clickable\"\n                    key={item}\n                    onClick={onClickCallBack(item)}\n                    onFocusCapture={listeners.onFocusCapture(index)}\n                    onKeyDownCapture={listeners.onKeyDownCapture}\n                >\n                    <TableCells columns={columns} customCells={customCells} item={item} rowIndex={index} />\n                </div>\n            ))}\n        </>\n    );\n};\n","import cx from 'classnames';\nimport '../DataGrid.scss';\nimport { VNode } from 'preact';\n\nconst SkeletonBody = ({ columnsNumber, loading, emptyMessageDisplay }: { columnsNumber: number; loading: boolean; emptyMessageDisplay?: VNode }) => {\n    const rows = Array.from({ length: 10 }, (_, index) => index);\n    const columns = Array.from({ length: columnsNumber }, (_, index) => index);\n    return (\n        <>\n            {rows.map((_, i) => (\n                <div className=\"adyen-pe-data-grid__row\" key={`adyen-pe-data-grid-skeleton-row-${i}`}>\n                    {columns.map((_, index) => (\n                        <div key={`adyen-pe-data-grid-skeleton-cell-${index}`} className=\"adyen-pe-data-grid__cell adyen-pe-data-grid__skeleton-cell\">\n                            <span\n                                className={cx({\n                                    'adyen-pe-data-grid__skeleton-cell-content adyen-pe-data-grid__skeleton-cell-content--loading': loading,\n                                    'adyen-pe-data-grid__empty-cell': !loading,\n                                })}\n                            />\n                        </div>\n                    ))}\n                </div>\n            ))}\n            {!loading && emptyMessageDisplay && emptyMessageDisplay}\n        </>\n    );\n};\n\nexport default SkeletonBody;\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='300'%20height='200'%20viewBox='0%200%20300%20200'%20fill='none'%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20fill='%23BF7C6A'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M189.3%20113.7c-1-.3%2036.3%2028.6%2047.7%2026.4%209.3-1.8%2014.3-59%2014.3-59h-9.9l-10.8%2036.3s-30.4-22.3-31.8-22.3c-1.4%200-8%2019.1-9.5%2018.6Z'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='m230.1%20116.7%202%203.2'/%3e%3cpath%20fill='%23BF7C6A'%20d='m259.8%2074.6%2010-3.6.7-8.1c.1-.9-.6-1.6-1.4-1.7-.8-.1-1.5.5-1.7%201.3l-1.3%206.6-12.6%204.8'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='m259.8%2074.6%2010-3.6.7-8.1c.1-.9-.6-1.6-1.4-1.7-.8-.1-1.5.5-1.7%201.3l-1.3%206.6-12.6%204.8'/%3e%3cpath%20fill='%23BF7C6A'%20d='m260.5%2075.5%2011.1-3.5%202.9-7.1c.3-.8-.1-1.7-.9-2.1-.8-.3-1.6%200-2%20.7l-3.2%205.9-10.2%203.2'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='m260.5%2075.5%2011.1-3.5%202.9-7.1c.3-.8-.1-1.7-.9-2.1-.8-.3-1.6%200-2%20.7l-3.2%205.9-10.2%203.2'/%3e%3cpath%20fill='%23BF7C6A'%20d='m254%2076.5%207.4-7.8c.7-.6.8-1.5.2-2.2-.5-.7-1.5-.8-2.2-.4-2%201.3-6.2%205-10.7%207.1-3.1%201.4-5.2%205.8-5.8%207.3'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='m254%2076.5%207.4-7.8c.7-.6.8-1.5.2-2.2-.5-.7-1.5-.8-2.2-.4-2%201.3-6.2%205-10.7%207.1-3.1%201.4-5.2%205.8-5.8%207.3'/%3e%3cpath%20fill='%23BF7C6A'%20d='M250.3%2082.2c1.2-.3%2021.6-8.6%2026.7-10.3.9-.3%201.4-1.2%201.1-2.1-.2-.9-1-1.1-1.9-1-4.4.8-17.9%203.9-19.5%204.2-1.5.2-5.3.6-10.9%203.1a9%209%200%200%200-5.2%208'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M250.3%2082.2c1.2-.3%2021.6-8.6%2026.7-10.3.9-.3%201.4-1.2%201.1-2.1-.2-.9-1-1.1-1.9-1-4.4.8-17.9%203.9-19.5%204.2-1.5.2-5.3.6-10.9%203.1a9%209%200%200%200-5.2%208'/%3e%3cpath%20fill='%2300112C'%20d='M130.9%2063.1c.8%207.3%204.7%2014.1%2010.3%2018l-3.1-6.4c-.5-1-.9-2-1-3.1l-.1-.3c-.1-.1-.1.2%200%20.1'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M130.9%2063.1c.8%207.3%204.7%2014.1%2010.3%2018l-3.1-6.4c-.5-1-.9-2-1-3.1l-.1-.3c-.1-.1-.1.2%200%20.1'/%3e%3cpath%20fill='%23BF7C6A'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='m158.9%2074.8-13.2.2-1.5%2018%208.4%203.6%207.9-3.8-1.6-18Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M151.9%2083.9c-4.7%200-6.4-2.7-6.4-2.7v-4.6h13.4l.3%206c-.1.1-2.5%201.3-7.3%201.3Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M134.5%2070.7c2.4%203%206.3%205.7%209.8%207.3%203.6%201.6%2015.3%201.7%2019.5-1.1%208.8-5.9%2010.5-20.3%208.2-30.6-.7-3.4-1.8-6.8-3.7-9.7a22%2022%200%200%200-19.8-9.3c-7.5.5-19.3%205.9-20.8%2014.2-1.7%209.6.8%2021.6%206.8%2029.2Z'/%3e%3cpath%20fill='%23BF7C6A'%20d='M133.2%2058.9s-5.1-7-7.8-1.6%204.8%2013.4%2010.8%2011.2'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M133.2%2058.9s-5.1-7-7.8-1.6%204.8%2013.4%2010.8%2011.2'/%3e%3cpath%20fill='%23BF7C6A'%20d='M169.5%2052.4s2.3-8.3%206.7-4.2c4.4%204.1.2%2014.2-6.2%2014.3'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M169.5%2052.4s2.3-8.3%206.7-4.2c4.4%204.1.2%2014.2-6.2%2014.3'/%3e%3cpath%20fill='%23BF7C6A'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M166.9%2041.2c-6.3-12-33.4-8.2-34.9%206.3A38.2%2038.2%200%200%200%20142%2077c5.7%205.2%2012%204.5%2014.1%204.1%202.1-.3%208.2-1.8%2011.7-8.8a37.2%2037.2%200%200%200-.9-31.1Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M134.1%2055c7.8-1.1%2015.5-2.6%2023.1-4.4l-.4-4.8c1%201.6%201.8%202.7%202.4%204.5%203-1.3%206.3-1.5%209.5-1.6%203.1-.1-4.2-14.3-6.1-15.6a16.2%2016.2%200%200%200-7.1-2.1c-5.7-.6-11.7-.4-16.7%202.3-4%202.2-7.3%206.4-7.6%2011%200%201.5.5%2011%202.9%2010.7Z'/%3e%3cpath%20fill='%23BF7C6A'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M114.5%20113.7c1-.3-36.3%2028.6-47.7%2026.4-9.3-1.8-14.3-59-14.3-59h9.9l10.8%2036.3s30.4-22.3%2031.8-22.3c1.5-.1%208.1%2019.1%209.5%2018.6Z'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='m73.8%20116.7-2.1%203.2'/%3e%3cpath%20fill='%23BF7C6A'%20d='M44%2074.6%2034%2071l-.7-8.1c-.1-.9.6-1.6%201.4-1.7.8-.1%201.5.5%201.7%201.3l1.3%206.6%2012.6%204.8'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M44%2074.6%2034%2071l-.7-8.1c-.1-.9.6-1.6%201.4-1.7.8-.1%201.5.5%201.7%201.3l1.3%206.6%2012.6%204.8'/%3e%3cpath%20fill='%23BF7C6A'%20d='M43.3%2075.5%2032.2%2072l-2.9-7c-.3-.8.1-1.7.9-2.1.8-.3%201.6%200%202%20.7l3.2%205.9%2010.2%203.2'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M43.3%2075.5%2032.2%2072l-2.9-7c-.3-.8.1-1.7.9-2.1.8-.3%201.6%200%202%20.7l3.2%205.9%2010.2%203.2'/%3e%3cpath%20fill='%23BF7C6A'%20d='m49.8%2076.5-7.4-7.8c-.7-.6-.8-1.5-.2-2.2.5-.7%201.5-.8%202.2-.4%202%201.3%206.2%205%2010.7%207.1%203.1%201.4%205.2%205.8%205.8%207.3'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='m49.8%2076.5-7.4-7.8c-.7-.6-.8-1.5-.2-2.2.5-.7%201.5-.8%202.2-.4%202%201.3%206.2%205%2010.7%207.1%203.1%201.4%205.2%205.8%205.8%207.3'/%3e%3cpath%20fill='%23BF7C6A'%20d='M53.5%2082.2C52.4%2081.9%2032%2073.7%2026.8%2072a1.6%201.6%200%200%201-1.1-2.1c.2-.9%201-1.1%201.9-1%204.4.8%2017.9%203.9%2019.5%204.2%201.5.2%205.3.6%2010.9%203.1a9%209%200%200%201%205.2%208'/%3e%3cpath%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M53.5%2082.2C52.4%2081.9%2032%2073.7%2026.8%2072a1.6%201.6%200%200%201-1.1-2.1c.2-.9%201-1.1%201.9-1%204.4.8%2017.9%203.9%2019.5%204.2%201.5.2%205.3.6%2010.9%203.1a9%209%200%200%201%205.2%208'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='M139.9%2087.6c-1.4-3.4-6.3-12.5-9.8-11.7a90.7%2090.7%200%200%200-46.2%2029.7c-4.4%205.4-2%208.7-2%208.7l7.1%2018.8s3.6%202%2015.4%201.7c17.4-.5%2038.8-26.8%2039.5-30.6.4-2.6-1.7-10.8-4-16.6Z'/%3e%3cpath%20fill='%233300C2'%20d='m196.6%20232.8-18.7-58.1h-51l-20.2%2058.1'/%3e%3cpath%20stroke='%230C112C'%20stroke-miterlimit='10'%20d='m196.6%20232.8-18.7-58.1h-51l-20.2%2058.1'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='m159.1%2091.8-16.8.1s-20.4%201-21.3%206.8c-1.6%2010.6%206.1%2052.6%205.9%2056.2l-4.8%2020.4.2.1c10.7%205%2022.7%207.2%2034.6%206.2l23.1-1.9-3.2-18.2c-.2-2.7%207.3-46%206.9-61.3-.1-7.1-24.6-8.4-24.6-8.4Z'/%3e%3cpath%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='10'%20d='m141.4%2092%201.6-5.6h18.7l1.1%204.9c-.1.1-8.9%2011-21.4.7Zm23.1-4.4c1.4-3.4%206.3-12.5%209.8-11.7a90.7%2090.7%200%200%201%2046.2%2029.7c4.4%205.4%202%208.7%202%208.7l-7.1%2018.8s-3.6%202-15.4%201.7c-17.4-.5-38.8-26.8-39.5-30.6a48.3%2048.3%200%200%201%204-16.6ZM119.9%2018c0-2.5%201.1-4.9%202.7-6.8%201.9-2.2%204.5-3.8%207.4-4.2%202.9-.4%205.9.6%207.9%202.7a4.8%204.8%200%200%200-3-4.1s5-.2%207.1.4a14.7%2014.7%200%200%201%2011%2017.8c-2.3%208.8-14.2%207-21%205.6-5.6-1.2-12-4.9-12.1-11.4Z'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='a'%3e%3cpath%20fill='%23fff'%20d='M0%200h300v200H0z'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\"","import { DataGridContext } from '../hooks/useDataGridContext';\nimport { ComponentChildren, toChildArray } from 'preact';\nimport { useCallback, useMemo } from 'preact/hooks';\n\ntype ColumnWidth = { column: string; width: number };\n\nexport const DataGridProvider = ({ children }: { children: ComponentChildren }) => {\n    const minWidthByColumn = useMemo(() => new Map<string, number>(), []);\n    const registerCells: (props: ColumnWidth) => void = useCallback(\n        ({ column, width }) => {\n            if (minWidthByColumn.has(column)) {\n                const existingWidth = minWidthByColumn.get(column)!;\n                if (width > existingWidth) {\n                    minWidthByColumn.set(column, width);\n                }\n            } else {\n                minWidthByColumn.set(column, width);\n            }\n        },\n        [minWidthByColumn]\n    );\n\n    const getMinWidthByColumn = useCallback(\n        (column: string) => {\n            return minWidthByColumn.get(column);\n        },\n        [minWidthByColumn]\n    );\n\n    return <DataGridContext.Provider value={{ registerCells, getMinWidthByColumn }}>{toChildArray(children)}</DataGridContext.Provider>;\n};\n","import classnames from 'classnames';\nimport { DataGridColumn } from '../types';\nimport { useDataGridContext } from '../hooks/useDataGridContext';\nimport { useEffect, useRef } from 'preact/hooks';\n\nexport const TableHeaderCell = ({ cellKey, position, label }: DataGridColumn<Extract<string, string>> & { cellKey: string }) => {\n    const { registerCells } = useDataGridContext();\n    const ref = useRef<HTMLDivElement>(null);\n\n    useEffect(() => {\n        if (ref.current) {\n            registerCells({\n                column: cellKey,\n                width: ref.current?.getBoundingClientRect().width,\n            });\n        }\n    }, [cellKey, registerCells]);\n\n    return (\n        <div\n            role=\"columnheader\"\n            id={String(cellKey)}\n            className={classnames('adyen-pe-data-grid__cell adyen-pe-data-grid__cell--heading', {\n                'adyen-pe-data-grid__cell--right': position === 'right',\n                'adyen-pe-data-grid__cell--center': position === 'center',\n            })}\n        >\n            <div ref={ref} className={'adyen-pe-data-grid__cell--heading-content'}>\n                {label}\n            </div>\n        </div>\n    );\n};\n","import { ComponentChild, toChildArray } from 'preact';\nimport classnames from 'classnames';\nimport './DataGrid.scss';\nimport { TableBody } from './components/TableBody';\nimport { InteractiveBody } from './components/InteractiveBody';\nimport { DataGridColumn, DataGridProps } from './types';\nimport SkeletonBody from './components/SkeletonBody';\nimport { ErrorMessageDisplay } from '../ErrorMessageDisplay/ErrorMessageDisplay';\nimport { useMemo } from 'preact/hooks';\nimport emptyTableIcon from '../../../images/no-data-female.svg';\nimport { DataGridProvider } from './utils/DataGridProvider';\nimport { useDataGridContext } from './hooks/useDataGridContext';\nimport { TableHeaderCell } from './components/TableHeaderCell';\n\nexport const INITIAL_STATE = Object.freeze({\n    activeIndex: -1,\n    index: -1,\n});\n\nexport type CustomCell<\n    Item extends Array<any>,\n    Columns extends Array<DataGridColumn<Extract<keyof Item[number], string>>>,\n    T extends Columns[number]\n> = {\n    [k in T['key']]?: (\n        props: Item[0][k] extends NonNullable<Item[0][k]>\n            ? { key: k; value: Item[number][k]; item: Item[number]; rowIndex: number }\n            : { key: k; item: Item[number]; rowIndex: number }\n    ) => ComponentChild;\n};\n\nfunction DataGrid<\n    Items extends Array<any>,\n    Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n    ClickedField extends keyof Items[number],\n    CustomCells extends CustomCell<Items, Columns, Columns[number]>\n>({ errorDisplay, ...props }: DataGridProps<Items, Columns, ClickedField, CustomCells>) {\n    return (\n        <div style={{ width: '100%' }}>\n            <DataGridProvider>\n                <DataGridTable {...props} errorDisplay={errorDisplay} />\n            </DataGridProvider>\n        </div>\n    );\n}\n\nfunction DataGridTable<\n    Items extends Array<any>,\n    Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n    ClickedField extends keyof Items[number],\n    CustomCells extends CustomCell<Items, Columns, Columns[number]>\n>({ errorDisplay, ...props }: DataGridProps<Items, Columns, ClickedField, CustomCells>) {\n    const children = useMemo(() => toChildArray(props.children), [props.children]);\n    const footer = useMemo(() => children.find((child: ComponentChild) => (child as any)?.['type'] === DataGridFooter), [children]);\n    const emptyBody = useMemo(() => props.data?.length === 0, [props.data]);\n    const showMessage = useMemo(() => !props.loading && (emptyBody || props.error), [emptyBody, props.error, props.loading]);\n    const { getMinWidthByColumn } = useDataGridContext();\n\n    const visibleCols = props.columns\n        .filter(column => column.visible !== false)\n        .map(column => ({ ...column, minWidth: getMinWidthByColumn(column.key) }));\n\n    const cellWidths = visibleCols.map(col => `minmax(${(col.minWidth || 100) + 40}px, ${col.flex || 1}fr)`).join(' ');\n    return (\n        <div\n            className={classnames('adyen-pe-data-grid', {\n                'adyen-pe-data-grid--condensed': props.condensed,\n                'adyen-pe-data-grid--outline': props.outline,\n                'adyen-pe-data-grid--scrollable': props.scrollable,\n                'adyen-pe-data-grid--loading': props.loading,\n                'adyen-pe-data-grid--empty': emptyBody || props.error,\n            })}\n            style={`--adyen-pe-data-grid-cols: ${visibleCols.length}; --adyen-pe-data-grid-cells: ${cellWidths};`}\n        >\n            <>\n                <div className=\"adyen-pe-data-grid__table-wrapper\">\n                    <div role=\"table\" className=\"adyen-pe-data-grid__table\">\n                        <div className=\"adyen-pe-data-grid__head\" role=\"rowgroup\">\n                            <div role=\"rowheader\" className=\"adyen-pe-data-grid__header\" style={props.loading ? { width: '100%' } : {}}>\n                                {visibleCols.map(item => (\n                                    <TableHeaderCell key={item.key} label={item.label} position={item.position} cellKey={item.key} />\n                                ))}\n                            </div>\n                        </div>\n\n                        <DataGridBody<Items, Columns, ClickedField, CustomCells> {...props} columns={visibleCols as Columns} emptyBody={emptyBody} />\n                    </div>\n                    {showMessage &&\n                        (emptyBody && !props.error ? (\n                            <ErrorMessageDisplay\n                                title={props.emptyTableMessage?.title ?? 'thereAreNoResults'}\n                                message={props.emptyTableMessage?.message}\n                                imageDesktop={emptyTableIcon}\n                                centered\n                            />\n                        ) : props.error && errorDisplay ? (\n                            errorDisplay()\n                        ) : null)}\n                </div>\n                {footer}\n            </>\n        </div>\n    );\n}\n\nfunction DataGridBody<\n    Items extends Array<any>,\n    Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n    ClickedField extends keyof Items[number],\n    CustomCells extends CustomCell<Items, Columns, Columns[number]>\n>(props: DataGridProps<Items, Columns, ClickedField, CustomCells> & { emptyBody: boolean }) {\n    const showSkeleton = useMemo(() => props.loading || props.emptyBody || props.error, [props.emptyBody, props.error, props.loading]);\n\n    return (\n        <div\n            role=\"rowgroup\"\n            className={classnames('adyen-pe-data-grid__body')}\n            style={showSkeleton && { display: 'grid', gridTemplateColumns: '1fr' }}\n        >\n            {showSkeleton ? (\n                <SkeletonBody columnsNumber={props.columns.length} loading={props.loading} />\n            ) : props.onRowClick ? (\n                <InteractiveBody<Items, Columns, ClickedField, CustomCells>\n                    onRowHover={props.onRowHover}\n                    data={props.data}\n                    columns={props.columns}\n                    onRowClick={props.onRowClick}\n                    customCells={props.customCells}\n                />\n            ) : (\n                <TableBody<Items, Columns, ClickedField, CustomCells>\n                    onRowHover={props.onRowHover}\n                    data={props.data}\n                    customCells={props.customCells}\n                    columns={props.columns}\n                />\n            )}\n        </div>\n    );\n}\n\nDataGrid.Footer = DataGridFooter;\n\nfunction DataGridFooter({ children }: { children: ComponentChild }) {\n    return <div className=\"adyen-pe-data-grid__footer\">{children}</div>;\n}\n\nDataGrid.defaultProps = {\n    condensed: false,\n    outline: true,\n    scrollable: true,\n};\n\nexport default DataGrid;\n","export const ARIA_ERROR_SUFFIX = '-ariaError';\nexport const ERROR_MSG_INCOMPLETE_FIELD = 'incompleteField';\n","import { ButtonActionObject } from '../../components/internal/Button/ButtonActions/types';\n\nexport enum CommitAction {\n    NONE = 0,\n    APPLY = 1,\n    CLEAR = 2,\n}\n\nexport interface UseCommitActionConfig {\n    applyDisabled?: boolean;\n    applyTitle?: string;\n    resetDisabled?: boolean;\n    resetTitle?: string;\n}\n\nexport interface CommitActionProperties {\n    readonly commitAction: CommitAction;\n    readonly commitActionButtons: readonly [ButtonActionObject, ButtonActionObject];\n    readonly committing: boolean;\n    readonly resetCommitAction: () => void;\n}\n","import { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { ButtonVariant } from '../../components/internal/Button/types';\nimport { ButtonActionObject } from '../../components/internal/Button/ButtonActions/types';\nimport { CommitAction, CommitActionProperties, UseCommitActionConfig } from './types';\nimport useCoreContext from '../../core/Context/useCoreContext';\nimport { boolOrFalse, EMPTY_OBJECT } from '../../utils';\n\nconst useCommitAction = ({ applyDisabled, applyTitle, resetDisabled, resetTitle }: UseCommitActionConfig = EMPTY_OBJECT): CommitActionProperties => {\n    const { i18n } = useCoreContext();\n    const [commitAction, setCommitAction] = useState(CommitAction.NONE);\n    const [committing, setCommitting] = useState(commitAction !== CommitAction.NONE);\n\n    const applyAction = useCallback(() => setCommitAction(CommitAction.APPLY), [setCommitAction]);\n    const resetAction = useCallback(() => setCommitAction(CommitAction.CLEAR), [setCommitAction]);\n    const resetCommitAction = useCallback(() => setCommitAction(CommitAction.NONE), [setCommitAction]);\n\n    const applyButtonAction = useMemo(\n        () =>\n            ({\n                disabled: boolOrFalse(applyDisabled),\n                event: applyAction,\n                title: applyTitle?.trim() || i18n.get('apply'),\n                variant: ButtonVariant.PRIMARY,\n            } as ButtonActionObject),\n        [i18n, applyAction, applyDisabled, applyTitle]\n    );\n\n    const resetButtonAction = useMemo(\n        () =>\n            ({\n                disabled: boolOrFalse(resetDisabled),\n                event: resetAction,\n                title: resetTitle?.trim() || i18n.get('reset'),\n                variant: ButtonVariant.SECONDARY,\n            } as ButtonActionObject),\n        [i18n, resetAction, resetDisabled, resetTitle]\n    );\n\n    const commitActionButtons = useMemo(() => [applyButtonAction, resetButtonAction] as const, [applyButtonAction, resetButtonAction]);\n\n    useEffect(() => {\n        setCommitting(commitAction !== CommitAction.NONE);\n        switch (commitAction) {\n            case CommitAction.APPLY:\n            case CommitAction.CLEAR:\n                resetCommitAction();\n                break;\n        }\n    }, [commitAction, setCommitting, resetCommitAction]);\n\n    return { commitAction, commitActionButtons, committing, resetCommitAction } as const;\n};\n\nexport default useCommitAction;\n","import { JSX } from 'preact';\nimport { useRef, useState, useEffect } from 'preact/hooks';\nimport cx from 'classnames';\nimport './Img.scss';\nimport { ImgProps } from './types';\n\nexport default function Img(props: ImgProps) {\n    const { backgroundUrl = '', className = '', classNameModifiers = [], src = '', alt = '', showOnError = false } = props;\n    const [loaded, setLoaded] = useState(false);\n    const imageRef = useRef(null);\n\n    const handleLoad = () => {\n        setLoaded(true);\n    };\n\n    const handleError = () => {\n        setLoaded(showOnError);\n    };\n\n    const classNames = cx(\n        [className],\n        'adyen-pe-image',\n        { 'adyen-pe-image--loaded': loaded },\n        ...classNameModifiers.map(modifier => `adyen-pe-image--${modifier}`)\n    );\n\n    useEffect(() => {\n        const image = backgroundUrl ? new Image() : imageRef.current;\n        if (image) {\n            image.src = backgroundUrl || src;\n            image.onload = handleLoad;\n        }\n        setLoaded(!!image?.complete);\n    }, []);\n\n    if (backgroundUrl) {\n        return <div style={{ backgroundUrl } as JSX.CSSProperties} {...props} className={classNames} />;\n    }\n\n    return <img {...props} alt={alt} ref={imageRef} className={classNames} onError={handleError} />;\n}\n","import { DEFAULT_BUTTON_CLASSNAME } from '../../Button/constants';\nimport { ButtonVariant } from '../../Button/types';\nimport { getModifierClasses } from '../../../../utils/preact';\n\nexport const DROPDOWN_BASE_CLASS = 'adyen-pe-dropdown';\nexport const DROPDOWN_BUTTON_CLASSNAME = getModifierClasses(DEFAULT_BUTTON_CLASSNAME, [ButtonVariant.SECONDARY], [DEFAULT_BUTTON_CLASSNAME]);\nexport const DROPDOWN_BUTTON_CLASS = `${DROPDOWN_BASE_CLASS}__button`;\nexport const DROPDOWN_BUTTON_ACTIVE_CLASS = `${DROPDOWN_BUTTON_CLASS}--active`;\nexport const DROPDOWN_BUTTON_COLLAPSE_INDICATOR_CLASS = `${DROPDOWN_BUTTON_CLASS}-collapse-indicator`;\nexport const DROPDOWN_BUTTON_HAS_SELECTION_CLASS = `${DROPDOWN_BUTTON_CLASS}--has-selection`;\nexport const DROPDOWN_BUTTON_ICON_CLASS = `${DROPDOWN_BUTTON_CLASS}-icon`;\nexport const DROPDOWN_BUTTON_MULTI_SELECT_COUNTER_CLASS = `${DROPDOWN_BUTTON_CLASS}-multiselect-counter`;\nexport const DROPDOWN_BUTTON_READONLY_CLASS = `${DROPDOWN_BUTTON_CLASS}--readonly`;\nexport const DROPDOWN_BUTTON_TEXT_CLASS = `${DROPDOWN_BUTTON_CLASS}-text`;\nexport const DROPDOWN_BUTTON_VALID_CLASS = `${DROPDOWN_BUTTON_CLASS}--valid`;\nexport const DROPDOWN_BUTTON_INVALID_CLASS = `${DROPDOWN_BUTTON_CLASS}--invalid`;\nexport const DROPDOWN_ELEMENT_CLASS = `${DROPDOWN_BASE_CLASS}__element`;\nexport const DROPDOWN_ELEMENT_ACTIVE_CLASS = `${DROPDOWN_ELEMENT_CLASS}--active`;\nexport const DROPDOWN_ELEMENT_CHECKBOX_CLASS = `${DROPDOWN_ELEMENT_CLASS}-checkbox`;\nexport const DROPDOWN_ELEMENT_CHECKMARK_CLASS = `${DROPDOWN_ELEMENT_CLASS}-checkmark`;\nexport const DROPDOWN_ELEMENT_CONTENT_CLASS = `${DROPDOWN_ELEMENT_CLASS}-content`;\nexport const DROPDOWN_ELEMENT_DISABLED_CLASS = `${DROPDOWN_ELEMENT_CLASS}--disabled`;\nexport const DROPDOWN_ELEMENT_ICON_CLASS = `${DROPDOWN_ELEMENT_CLASS}-icon`;\nexport const DROPDOWN_ELEMENT_NO_OPTION_CLASS = `${DROPDOWN_ELEMENT_CLASS}--no-option`;\nexport const DROPDOWN_LIST_CLASS = `${DROPDOWN_BASE_CLASS}__list`;\nexport const DROPDOWN_LIST_ACTIVE_CLASS = `${DROPDOWN_LIST_CLASS}--active`;\nexport const DROPDOWN_MULTI_SELECT_CLASS = `${DROPDOWN_BASE_CLASS}--multiselect`;\n","import cx from 'classnames';\nimport { Ref } from 'preact';\nimport { MutableRef, useMemo } from 'preact/hooks';\nimport { AnchorHTMLAttributes, ButtonHTMLAttributes, HTMLAttributes, PropsWithChildren } from 'preact/compat';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport Img from '../../../Img';\nimport Button from '../../../Button';\nimport { ButtonVariant } from '../../../Button/types';\nimport Typography from '../../../Typography/Typography';\nimport ChevronDown from '../../../SVGIcons/ChevronDown';\nimport { TypographyElement, TypographyVariant } from '../../../Typography/types';\nimport { boolOrFalse } from '../../../../../utils';\nimport {\n    DROPDOWN_BUTTON_ACTIVE_CLASS,\n    DROPDOWN_BUTTON_CLASS,\n    DROPDOWN_BUTTON_CLASSNAME,\n    DROPDOWN_BUTTON_COLLAPSE_INDICATOR_CLASS,\n    DROPDOWN_BUTTON_HAS_SELECTION_CLASS,\n    DROPDOWN_BUTTON_ICON_CLASS,\n    DROPDOWN_BUTTON_INVALID_CLASS,\n    DROPDOWN_BUTTON_MULTI_SELECT_COUNTER_CLASS,\n    DROPDOWN_BUTTON_READONLY_CLASS,\n    DROPDOWN_BUTTON_TEXT_CLASS,\n    DROPDOWN_BUTTON_VALID_CLASS,\n} from '../constants';\nimport type { SelectButtonProps, SelectItem } from '../types';\n\nconst SelectButtonElement = <T extends SelectItem>({\n    active,\n    disabled,\n    className,\n    filterable,\n    toggleButtonRef,\n    ...props\n}: PropsWithChildren<\n    SelectButtonProps<T> &\n        (Partial<ButtonHTMLAttributes<HTMLButtonElement>> &\n            Partial<AnchorHTMLAttributes<HTMLAnchorElement>> &\n            Partial<HTMLAttributes<HTMLDivElement>>)\n>) => {\n    const baseClassName = useMemo(() => (filterable ? cx(DROPDOWN_BUTTON_CLASSNAME, className) : className), [className, filterable]);\n    return filterable ? (\n        <div {...props} className={baseClassName} ref={toggleButtonRef as Ref<HTMLDivElement>} />\n    ) : (\n        <Button\n            {...props}\n            className={baseClassName}\n            disabled={disabled}\n            variant={ButtonVariant.SECONDARY}\n            ref={toggleButtonRef as MutableRef<HTMLButtonElement>}\n        />\n    );\n};\n\nconst SelectButton = <T extends SelectItem>(props: SelectButtonProps<T> & { appliedFilterNumber: number }) => {\n    const { i18n } = useCoreContext();\n    const { active, filterable, multiSelect, placeholder, readonly, showList, withoutCollapseIndicator } = props;\n    const placeholderText = useMemo(() => placeholder?.trim() || i18n.get('select.filter.placeholder'), [i18n, placeholder]);\n    const buttonActiveItem = useMemo(() => (boolOrFalse(multiSelect) ? undefined : active[0]), [active, multiSelect]);\n    const buttonTitleText = useMemo(() => buttonActiveItem?.name?.trim() || placeholderText, [buttonActiveItem, placeholderText]);\n\n    return (\n        <SelectButtonElement\n            active={active}\n            disabled={readonly}\n            aria-disabled={readonly}\n            aria-expanded={showList}\n            aria-haspopup=\"listbox\"\n            className={cx(DROPDOWN_BUTTON_CLASS, {\n                [DROPDOWN_BUTTON_ACTIVE_CLASS]: showList,\n                [DROPDOWN_BUTTON_HAS_SELECTION_CLASS]: !!active.length,\n                [DROPDOWN_BUTTON_READONLY_CLASS]: readonly,\n                [DROPDOWN_BUTTON_INVALID_CLASS]: props.isInvalid,\n                [DROPDOWN_BUTTON_VALID_CLASS]: props.isValid,\n            })}\n            filterable={filterable}\n            onClick={!readonly ? props.toggleList : undefined}\n            onKeyDown={!readonly ? props.onButtonKeyDown : undefined}\n            role={filterable ? 'button' : undefined}\n            tabIndex={0}\n            title={buttonTitleText}\n            toggleButtonRef={props.toggleButtonRef}\n            type={!filterable ? 'button' : undefined}\n            aria-describedby={props.ariaDescribedBy}\n            id={props.id ?? ''}\n        >\n            {showList && filterable ? (\n                <input\n                    aria-autocomplete=\"list\"\n                    aria-controls={props.selectListId}\n                    aria-expanded={showList}\n                    aria-owns={props.selectListId}\n                    autoComplete=\"off\"\n                    className=\"adyen-pe-filter-input\"\n                    onInput={props.onInput}\n                    placeholder={placeholderText}\n                    ref={props.filterInputRef}\n                    role=\"combobox\"\n                    type=\"text\"\n                />\n            ) : (\n                <>\n                    {buttonActiveItem?.icon && (\n                        <Img className={DROPDOWN_BUTTON_ICON_CLASS} src={buttonActiveItem.icon} alt={buttonActiveItem?.name?.trim() ?? ''} />\n                    )}\n                    <span className={DROPDOWN_BUTTON_TEXT_CLASS}>{buttonActiveItem?.selectedOptionName?.trim() || buttonTitleText}</span>\n                    {multiSelect && props.appliedFilterNumber > 0 && (\n                        <div className={DROPDOWN_BUTTON_MULTI_SELECT_COUNTER_CLASS}>\n                            <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY} stronger={true}>\n                                {props.appliedFilterNumber}\n                            </Typography>\n                        </div>\n                    )}\n                </>\n            )}\n            {!withoutCollapseIndicator && (\n                <span className={DROPDOWN_BUTTON_COLLAPSE_INDICATOR_CLASS}>\n                    <ChevronDown role=\"presentation\" />\n                </span>\n            )}\n        </SelectButtonElement>\n    );\n};\n\nexport default SelectButton;\n","import { useEffect, useState } from 'preact/hooks';\nimport useCoreContext from '../core/Context/useCoreContext';\n\nexport const useContainerQuery = <T extends readonly [string, number, { min?: number; max?: number }?]>(query: T) => {\n    const { componentRef } = useCoreContext();\n    const [width, setWidth] = useState(componentRef.current?.offsetWidth || 0);\n    const [type, breakpoint, minMax] = query;\n\n    let queryMatch = false;\n\n    switch (type) {\n        case 'up':\n            queryMatch = width >= breakpoint;\n            break;\n        case 'down':\n            queryMatch = width <= breakpoint;\n            break;\n        case 'only':\n            if (minMax) {\n                const { min, max } = minMax;\n                queryMatch = max ? width <= max : min ? width >= min : false;\n            } else {\n                queryMatch = width === breakpoint;\n            }\n            break;\n    }\n\n    useEffect(() => {\n        const containerElement = componentRef.current;\n        if (!containerElement) return;\n\n        // ResizeObserver to watch for changes to container's size.\n        const resizeObserver = new ResizeObserver(entries => {\n            for (const entry of entries) {\n                if (entry.target === containerElement) {\n                    setWidth(containerElement.offsetWidth);\n                }\n            }\n        });\n\n        resizeObserver.observe(containerElement);\n\n        // Cleanup resize observer on unmount\n        return () => {\n            resizeObserver.unobserve(containerElement);\n            resizeObserver.disconnect();\n        };\n    }, [componentRef]);\n\n    return queryMatch;\n};\n\nexport default useContainerQuery;\n","import { BREAKPOINTS } from '../constants';\nimport type { ValueOfRecord } from '../utils/types';\nimport { useContainerQuery } from './useContainerQuery';\n\nexport const containerQueries = {\n    up: {\n        sm: ['up', BREAKPOINTS.sm],\n        md: ['up', BREAKPOINTS.md],\n        lg: ['up', BREAKPOINTS.lg],\n    },\n    down: {\n        xs: ['down', BREAKPOINTS.sm - 1],\n        sm: ['down', BREAKPOINTS.md - 1],\n        md: ['down', BREAKPOINTS.lg - 1],\n    },\n    only: {\n        xs: ['only', BREAKPOINTS.sm - 1, { max: BREAKPOINTS.sm - 1 }],\n        sm: ['only', BREAKPOINTS.sm, { max: BREAKPOINTS.md - 1 }],\n        md: ['only', BREAKPOINTS.md, { max: BREAKPOINTS.lg - 1 }],\n        lg: ['only', BREAKPOINTS.lg, { min: BREAKPOINTS.lg }],\n    },\n} as const;\n\ntype _ContainerQueries = typeof containerQueries;\n\nexport type ResponsiveViewportContainerQuery = ValueOfRecord<{\n    [K in keyof _ContainerQueries]: ValueOfRecord<_ContainerQueries[K]>;\n}>;\n\nexport const useResponsiveContainer = useContainerQuery<ResponsiveViewportContainerQuery>;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport { fixedForwardRef } from '../../../utils/preact';\n\n/**\n * @deprecated This component is deprecated. Use <Icon name=\"checkmark-square-fill\"/> instead.\n */\nconst CheckedBox = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n    <svg {...props} ref={ref} xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n        {title && <title>{title}</title>}\n        <path\n            fill=\"currentColor\"\n            d=\"M1.25 3.5c0-1.24 1-2.25 2.25-2.25h9c1.24 0 2.25 1 2.25 2.25v9c0 1.24-1 2.25-2.25 2.25h-9c-1.24 0-2.25-1-2.25-2.25v-9ZM12.06 6 11 4.94l-4 4-2-2L3.94 8 7 11.06 12.06 6Z\"\n        />\n    </svg>\n));\n\nexport default CheckedBox;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport { fixedForwardRef } from '../../../utils/preact';\n\n/**\n * @deprecated This component is deprecated. Use <Icon name=\"square\"/> instead.\n */\nconst UncheckedBox = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n    <svg {...props} ref={ref} xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n        {title && <title>{title}</title>}\n        <path stroke=\"currentColor\" d=\"M.5 4C.5 2 2.1.5 4 .5h8c2 0 3.5 1.6 3.5 3.5v8c0 2-1.6 3.5-3.5 3.5H4C2 15.5.5 13.9.5 12V4Z\" />\n    </svg>\n));\n\nexport default UncheckedBox;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport { fixedForwardRef } from '../../../utils/preact';\n\n/**\n * @deprecated This component is deprecated. Use <Icon name=\"checkmark\"/> instead.\n */\nconst Checkmark = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n    <svg {...props} ref={ref} xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" width=\"16\" viewBox=\"0 0 16 16\" height=\"16\">\n        {title && <title>{title}</title>}\n        <path\n            fill=\"currentColor\"\n            fill-rule=\"evenodd\"\n            d=\"M14.5 4.5a.7.7 0 0 0-1-1L6 10.9 2.5 7.5a.8.8 0 0 0-1 1l4 4a.8.8 0 0 0 1 0l8-8Z\"\n            clip-rule=\"evenodd\"\n        />\n    </svg>\n));\n\nexport default Checkmark;\n","import cx from 'classnames';\nimport { memo } from 'preact/compat';\nimport Img from '../../../Img';\nimport type { SelectItem, SelectItemProps } from '../types';\nimport CheckedBox from '../../../SVGIcons/CheckedBox';\nimport UncheckedBox from '../../../SVGIcons/UncheckedBox';\nimport Checkmark from '../../../SVGIcons/Checkmark';\nimport { boolOrFalse } from '../../../../../utils';\nimport {\n    DROPDOWN_ELEMENT_ACTIVE_CLASS,\n    DROPDOWN_ELEMENT_CHECKBOX_CLASS,\n    DROPDOWN_ELEMENT_CHECKMARK_CLASS,\n    DROPDOWN_ELEMENT_CLASS,\n    DROPDOWN_ELEMENT_CONTENT_CLASS,\n    DROPDOWN_ELEMENT_DISABLED_CLASS,\n    DROPDOWN_ELEMENT_ICON_CLASS,\n} from '../constants';\n\ntype _RenderSelectOptionResult<T extends SelectItem> = ReturnType<SelectItemProps<T>['renderListItem']>;\ntype _RenderSelectOptionData<T extends SelectItem> = Parameters<SelectItemProps<T>['renderListItem']>[0];\n\nexport const renderDefaultMultiSelectionCheckedness = <T extends SelectItem>(data: _RenderSelectOptionData<T>): _RenderSelectOptionResult<T> =>\n    data.multiSelect ? (\n        <span className={DROPDOWN_ELEMENT_CHECKBOX_CLASS}>\n            {data.selected ? <CheckedBox role=\"presentation\" /> : <UncheckedBox role=\"presentation\" />}\n        </span>\n    ) : null;\n\nexport const renderDefaultSingleSelectionCheckedness = <T extends SelectItem>(data: _RenderSelectOptionData<T>): _RenderSelectOptionResult<T> =>\n    data.multiSelect ? null : <span className={DROPDOWN_ELEMENT_CHECKMARK_CLASS}>{data.selected && <Checkmark role=\"presentation\" />}</span>;\n\nexport const renderListItemDefault = <T extends SelectItem>(data: _RenderSelectOptionData<T>): _RenderSelectOptionResult<T> => (\n    <>\n        {renderDefaultMultiSelectionCheckedness(data)}\n        <div className={data.contentClassName as string}>\n            {data.item.icon && <Img className={data.iconClassName as string} alt={data.item.name} src={data.item.icon} />}\n            <span>{data.item.name}</span>\n        </div>\n        {renderDefaultSingleSelectionCheckedness(data)}\n    </>\n);\n\nconst SelectListItem = <T extends SelectItem>({ item, multiSelect, onKeyDown, onSelect, renderListItem, selected }: SelectItemProps<T>) => {\n    const disabled = !!item.disabled;\n\n    // A change in Preact v10.11.1 means that all falsy values are assessed and set on data attributes.\n    // In the case of `data-disabled` we only ever want it set if item.disabled is actually true, since the presence\n    // of the `data-disabled` attr, regardless of its value, will disable the select list item.\n    const dataDisabled = boolOrFalse(item.disabled) || null;\n\n    const itemClassName = cx(DROPDOWN_ELEMENT_CLASS, {\n        [DROPDOWN_ELEMENT_ACTIVE_CLASS]: selected,\n        [DROPDOWN_ELEMENT_DISABLED_CLASS]: disabled,\n    });\n\n    return (\n        <li\n            aria-disabled={disabled}\n            aria-selected={selected}\n            className={itemClassName}\n            data-disabled={dataDisabled}\n            data-value={item.id}\n            onClick={onSelect}\n            onKeyDown={onKeyDown}\n            title={item.name}\n            role=\"option\"\n            tabIndex={-1}\n        >\n            {renderListItem({\n                item,\n                multiSelect,\n                selected,\n                contentClassName: DROPDOWN_ELEMENT_CONTENT_CLASS,\n                iconClassName: DROPDOWN_ELEMENT_ICON_CLASS,\n            })}\n        </li>\n    );\n};\n\nexport default memo(SelectListItem);\n","import { containerQueries, useResponsiveContainer } from '../../../../../hooks/useResponsiveContainer';\nimport Popover from '../../../Popover/Popover';\nimport { PopoverContainerPosition, PopoverContainerSize, PopoverContainerVariant, PopoverProps } from '../../../Popover/types';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { boolOrFalse, isFunction } from '../../../../../utils';\nimport { fixedForwardRef } from '../../../../../utils/preact';\nimport cx from 'classnames';\nimport { ForwardedRef, memo } from 'preact/compat';\nimport { useMemo } from 'preact/hooks';\nimport { DROPDOWN_ELEMENT_CLASS, DROPDOWN_ELEMENT_NO_OPTION_CLASS, DROPDOWN_LIST_ACTIVE_CLASS, DROPDOWN_LIST_CLASS } from '../constants';\nimport type { SelectItem, SelectListProps } from '../types';\nimport SelectListItem, { renderListItemDefault } from './SelectListItem';\n\nconst SelectList = fixedForwardRef(\n    <T extends SelectItem>(\n        {\n            active,\n            commitActions,\n            items,\n            multiSelect,\n            onKeyDown,\n            onSelect,\n            renderListItem,\n            selectListId,\n            showList,\n            textFilter,\n            toggleButtonRef,\n            dismissPopover,\n            setToTargetWidth,\n            popoverClassNameModifiers,\n            showOverlay,\n            fitPosition,\n        }: SelectListProps<T>,\n        ref: ForwardedRef<HTMLUListElement>\n    ) => {\n        const { i18n } = useCoreContext();\n        const isSmContainer = useResponsiveContainer(containerQueries.down.xs);\n        const filteredItems = items.filter(item => !textFilter || item.name.toLowerCase().includes(textFilter));\n        const listClassName = cx(DROPDOWN_LIST_CLASS, { [DROPDOWN_LIST_ACTIVE_CLASS]: showList });\n        const noOptionsClassName = cx(DROPDOWN_ELEMENT_CLASS, DROPDOWN_ELEMENT_NO_OPTION_CLASS);\n        const renderSelectOption = useMemo(() => (isFunction(renderListItem) ? renderListItem : renderListItemDefault), [renderListItem]);\n        const multipleSelection = useMemo(() => boolOrFalse(multiSelect), [multiSelect]);\n\n        return showList ? (\n            <Popover\n                classNameModifiers={popoverClassNameModifiers}\n                actions={multipleSelection ? commitActions : undefined}\n                disableFocusTrap={true}\n                divider={true}\n                dismiss={dismissPopover}\n                dismissible={false}\n                open={showList}\n                setToTargetWidth={setToTargetWidth}\n                containerSize={PopoverContainerSize.MEDIUM}\n                variant={PopoverContainerVariant.POPOVER}\n                targetElement={toggleButtonRef as PopoverProps['targetElement']}\n                withContentPadding={false}\n                position={PopoverContainerPosition.BOTTOM}\n                showOverlay={showOverlay && isSmContainer}\n                fitPosition={fitPosition}\n            >\n                <ul className={listClassName} id={selectListId} ref={ref} role=\"listbox\" aria-multiselectable={multipleSelection}>\n                    {filteredItems.length ? (\n                        filteredItems.map(item => {\n                            return (\n                                <SelectListItem\n                                    item={item}\n                                    key={item.id}\n                                    multiSelect={multipleSelection}\n                                    onKeyDown={onKeyDown}\n                                    onSelect={onSelect}\n                                    renderListItem={renderSelectOption}\n                                    selected={active.includes(item)}\n                                />\n                            );\n                        })\n                    ) : (\n                        <div className={noOptionsClassName}>{i18n.get('select.noOptionsFound')}</div>\n                    )}\n                </ul>\n            </Popover>\n        ) : null;\n    }\n);\n\nexport default memo(SelectList);\n","import { useCallback, useEffect, useState } from 'preact/hooks';\nimport { EMPTY_ARRAY } from '../../../../../utils';\nimport { SelectItem, SelectProps } from '../types';\n\nconst useSelect = <T extends SelectItem>({ items, multiSelect, selected }: Pick<SelectProps<T>, 'items' | 'multiSelect' | 'selected'>) => {\n    const getSelectedItems = useCallback(\n        (selectedItems: typeof selected = EMPTY_ARRAY) => {\n            const _selected = (EMPTY_ARRAY as readonly T['id'][]).concat(selectedItems ?? EMPTY_ARRAY).filter(Boolean);\n            const _selectedItems = items.filter(item => _selected.includes(item.id));\n            const selection = multiSelect ? _selectedItems : _selectedItems.slice(0, 1);\n            return selection.length ? Object.freeze(selection) : EMPTY_ARRAY;\n        },\n        [items, multiSelect]\n    );\n\n    const [selection, setSelection] = useState(getSelectedItems(selected));\n\n    const resetSelection = useCallback(\n        (selection: readonly T[] | T[] = EMPTY_ARRAY) => {\n            const nextSelection = selection.filter(item => items.includes(item));\n            setSelection(nextSelection.length ? Object.freeze(nextSelection) : EMPTY_ARRAY);\n        },\n        [items, setSelection]\n    );\n\n    const select = useCallback(\n        (item: T) => {\n            setSelection(currentSelection => {\n                const index = currentSelection.indexOf(item);\n\n                // Item not already selected\n                if (index < 0) return Object.freeze(((multiSelect ? currentSelection : EMPTY_ARRAY) as readonly T[]).concat(item));\n\n                // Item is current selection\n                if (!multiSelect) return currentSelection;\n\n                // Item should be deselected\n                const nextSelection = [...currentSelection];\n                nextSelection.splice(index, 1);\n                return nextSelection.length ? Object.freeze(nextSelection) : EMPTY_ARRAY;\n            });\n        },\n        [multiSelect, setSelection]\n    );\n\n    useEffect(() => setSelection(getSelectedItems(selected)), [getSelectedItems, selected, setSelection]);\n\n    return { resetSelection, select, selection } as const;\n};\n\nexport default useSelect;\n","import cx from 'classnames';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { InteractionKeyCode } from '../../../types';\nimport { ARIA_ERROR_SUFFIX } from '../../../../core/Errors/constants';\nimport { boolOrFalse, EMPTY_ARRAY, noop, uuid } from '../../../../utils';\nimport useCommitAction, { CommitAction } from '../../../../hooks/useCommitAction';\nimport SelectButton from './components/SelectButton';\nimport SelectList from './components/SelectList';\nimport useSelect from './hooks/useSelect';\nimport { DROPDOWN_BASE_CLASS, DROPDOWN_MULTI_SELECT_CLASS } from './constants';\nimport { SelectItem, SelectProps } from './types';\nimport './Select.scss';\n\n// [TODO]: Revisit this component logic — for handling user interaction\nconst Select = <T extends SelectItem>({\n    className,\n    classNameModifiers = EMPTY_ARRAY as [],\n    popoverClassNameModifiers,\n    items = EMPTY_ARRAY as readonly T[],\n    filterable = false,\n    multiSelect = false,\n    readonly = false,\n    onChange = noop,\n    selected,\n    name,\n    isInvalid,\n    isValid,\n    placeholder,\n    uniqueId,\n    renderListItem,\n    isCollatingErrors,\n    setToTargetWidth,\n    withoutCollapseIndicator = false,\n    showOverlay = false,\n    fitPosition,\n}: SelectProps<T>) => {\n    const { resetSelection, select, selection } = useSelect({ items, multiSelect, selected });\n    const [showList, setShowList] = useState<boolean>(false);\n    const [textFilter, setTextFilter] = useState<string>('');\n    const filterInputRef = useRef<HTMLInputElement>(null);\n    const selectListRef = useRef<HTMLUListElement>(null);\n    const toggleButtonRef = useRef<HTMLButtonElement>(null);\n    const selectListId = useRef(`select-${uuid()}`);\n    const [appliedFilterNumber, setAppliedFilterNumber] = useState(0);\n\n    const autoFocusAnimFrame = useRef<ReturnType<typeof requestAnimationFrame>>();\n    const pendingClickOutsideTriggeredHideList = useRef(true);\n    const clearSelectionInProgress = useRef(false);\n    const cachedSelectedItems = useRef(selection);\n    const selectedItems = useRef(selection);\n\n    const dismissPopover = useCallback(() => {\n        setTextFilter('');\n        setShowList(false);\n        if (showList) {\n            resetSelection(cachedSelectedItems.current);\n            pendingClickOutsideTriggeredHideList.current = true;\n        }\n    }, [resetSelection, setShowList, setTextFilter, showList]);\n\n    //TODO: Clarify and delete this\n    // const selectContainerRef = useClickOutside(\n    //     useRef<HTMLDivElement>(null),\n    //     useCallback(() => {\n    //         setTextFilter('');\n    //         setShowList(false);\n    //         if (showList) {\n    //             resetSelection(cachedSelectedItems.current);\n    //             pendingClickOutsideTriggeredHideList.current = true;\n    //         }\n    //     }, [resetSelection, showList, setShowList, setTextFilter])\n    // );\n\n    const dropdownClassName = useMemo(\n        () =>\n            cx([\n                DROPDOWN_BASE_CLASS,\n                { [DROPDOWN_MULTI_SELECT_CLASS]: boolOrFalse(multiSelect) },\n                ...classNameModifiers.map(mod => `${DROPDOWN_BASE_CLASS}--${mod}`),\n                className,\n            ]),\n        [className, classNameModifiers, multiSelect]\n    );\n\n    const { commitAction, commitActionButtons, committing, resetCommitAction } = useCommitAction({\n        resetDisabled: !selection.length,\n    });\n\n    /**\n     * Closes the select list:\n     *   - empties the text filter\n     *   - restores focus to the select button element (?)\n     */\n    const closeList = useCallback(() => {\n        setTextFilter('');\n        setShowList(false);\n        resetCommitAction();\n\n        if (!pendingClickOutsideTriggeredHideList.current) {\n            toggleButtonRef.current?.focus();\n        } else pendingClickOutsideTriggeredHideList.current = false;\n    }, [resetCommitAction, setShowList, setTextFilter]);\n\n    const commitSelection = useCallback(() => {\n        cachedSelectedItems.current = selection;\n        const value = `${selection.map(({ id }) => id)}`;\n        onChange({ target: { value, name } });\n    }, [name, onChange, selection]);\n\n    useEffect(() => {\n        switch (commitAction) {\n            case CommitAction.APPLY:\n                commitSelection();\n                break;\n            case CommitAction.CLEAR:\n                resetSelection();\n                clearSelectionInProgress.current = true;\n                break;\n        }\n    }, [commitAction, commitSelection, resetSelection]);\n\n    /**\n     * Closes the select list and fires an onChange\n     * @param e - Event\n     */\n    const handleSelect = useCallback(\n        (e: Event) => {\n            e.preventDefault();\n\n            // If the target is not one of the list items, select the first list item\n            const target: HTMLUListElement | undefined | null =\n                e.currentTarget && selectListRef?.current?.contains(e.currentTarget as HTMLUListElement)\n                    ? (e.currentTarget as HTMLUListElement)\n                    : null; // (selectListRef?.current?.firstElementChild as HTMLUListElement);\n\n            if (target && !target.getAttribute('data-disabled')) {\n                const value = target.getAttribute('data-value');\n                const item = items.find(item => item.id === value)!;\n                select(item);\n            }\n        },\n        [items, select]\n    );\n\n    useEffect(() => {\n        if (selectedItems.current !== selection) {\n            selectedItems.current = selection;\n            if (!multiSelect || clearSelectionInProgress.current) {\n                commitSelection();\n                closeList();\n            }\n        }\n        clearSelectionInProgress.current = false;\n    }, [closeList, commitSelection, multiSelect, selection]);\n\n    useEffect(() => {\n        if (committing) {\n            setAppliedFilterNumber(selection.length);\n            closeList();\n        }\n    }, [committing, closeList, setAppliedFilterNumber, selection.length]);\n\n    /**\n     * Handle keyDown events on the selectList button\n     * Opens the selectList and focuses the first element if available\n     * @param evt {KeyboardEvent}\n     */\n    const handleButtonKeyDown = useCallback(\n        (evt: KeyboardEvent) => {\n            switch (evt.code) {\n                case InteractionKeyCode.ESCAPE:\n                case InteractionKeyCode.TAB:\n                    /**\n                     * Implementation notes ({@link https://w3c.github.io/aria-practices/examples/disclosure/disclosure-navigation.html article}):\n                     * - When user has focused select button but not yet moved into select list, close list and keep focus on the select button\n                     * - Shift+Tab out of select should close list\n                     */\n                    showList && closeList();\n                    pendingClickOutsideTriggeredHideList.current = evt.key === InteractionKeyCode.TAB;\n                    return;\n                case InteractionKeyCode.ENTER:\n                case InteractionKeyCode.SPACE:\n                    if (filterable && showList) {\n                        if (evt.key === InteractionKeyCode.ENTER) {\n                            if (textFilter) handleSelect(evt);\n                            else break;\n                        }\n                        return;\n                    }\n                    break;\n                case InteractionKeyCode.ARROW_DOWN:\n                case InteractionKeyCode.ARROW_UP:\n                    break;\n                default:\n                    return;\n            }\n\n            evt.preventDefault();\n            setShowList(true);\n        },\n        [closeList, filterable, handleSelect, showList, setShowList, textFilter]\n    );\n\n    useEffect(() => {\n        if (showList) {\n            cancelAnimationFrame(autoFocusAnimFrame.current!);\n\n            autoFocusAnimFrame.current = requestAnimationFrame(() => {\n                focus: {\n                    let item = selectListRef.current?.firstElementChild as HTMLLIElement;\n                    let firstAvailableItem: typeof item | undefined;\n\n                    while (item) {\n                        if (!(item.dataset.disabled && item.dataset.disabled === 'true')) {\n                            if (item.getAttribute('aria-selected') === 'true') {\n                                item.focus();\n                                break focus;\n                            }\n                            firstAvailableItem = firstAvailableItem || item;\n                        }\n                        item = item.nextElementSibling as HTMLLIElement;\n                    }\n\n                    if (firstAvailableItem) firstAvailableItem.focus();\n                }\n            });\n        }\n    }, [showList]);\n\n    /**\n     * Handle keyDown events on the list elements\n     * Navigates through the list, or select an element, or focus the filter input, or close the menu.\n     * @param e - KeyDownEvent\n     */\n    const handleListKeyDown = useCallback(\n        (evt: KeyboardEvent) => {\n            const target = evt.target as HTMLInputElement;\n\n            switch (evt.code) {\n                case InteractionKeyCode.ESCAPE:\n                    evt.preventDefault();\n                    // When user is actively navigating through list with arrow keys - close list and keep focus on the Select Button re. a11y guidelines (above)\n                    closeList();\n                    break;\n                case InteractionKeyCode.ENTER:\n                case InteractionKeyCode.SPACE:\n                    handleSelect(evt);\n                    break;\n                case InteractionKeyCode.ARROW_DOWN: {\n                    evt.preventDefault();\n                    let item = target.nextElementSibling as HTMLLIElement;\n                    while (item) {\n                        if (!(item.dataset.disabled && item.dataset.disabled === 'true')) {\n                            item.focus();\n                            break;\n                        }\n                        item = item.nextElementSibling as HTMLLIElement;\n                    }\n                    break;\n                }\n                case InteractionKeyCode.ARROW_UP: {\n                    evt.preventDefault();\n                    focus: {\n                        let item = target.previousElementSibling as HTMLLIElement;\n                        while (item) {\n                            if (!(item.dataset.disabled && item.dataset.disabled === 'true')) {\n                                item.focus();\n                                break focus;\n                            }\n                            item = item.previousElementSibling as HTMLLIElement;\n                        }\n                        if (filterable && filterInputRef.current) {\n                            filterInputRef.current.focus();\n                        }\n                    }\n                    break;\n                }\n                case InteractionKeyCode.TAB:\n                    closeList();\n                    break;\n                default:\n            }\n        },\n        [closeList, filterable, handleSelect]\n    );\n\n    /**\n     * Updates the state with the current text filter value\n     * @param e - KeyboardEvent\n     */\n    const handleTextFilter = useCallback(\n        (e: Event) => {\n            const value: string = (e.target as HTMLInputElement).value;\n            setTextFilter(value.toLowerCase());\n        },\n        [setTextFilter]\n    );\n\n    /**\n     * Toggles the selectList and focuses in either the filter input or in the selectList button\n     * @param e - Event\n     */\n    const toggleList = useCallback(\n        (e: Event) => {\n            e.preventDefault();\n            setShowList(showList => !showList);\n            showList && resetSelection(cachedSelectedItems.current);\n        },\n        [setShowList, showList, resetSelection]\n    );\n\n    useEffect(() => {\n        if (showList && filterable) {\n            filterInputRef.current?.focus();\n        }\n    }, [filterable, showList]);\n\n    return (\n        <div className={dropdownClassName}>\n            <SelectButton\n                id={uniqueId ?? undefined}\n                appliedFilterNumber={appliedFilterNumber}\n                active={selection}\n                filterInputRef={filterInputRef}\n                filterable={filterable}\n                isInvalid={isInvalid}\n                isValid={isValid}\n                onButtonKeyDown={handleButtonKeyDown}\n                onInput={handleTextFilter}\n                multiSelect={multiSelect}\n                placeholder={placeholder}\n                readonly={readonly}\n                selectListId={selectListId.current}\n                showList={showList}\n                toggleButtonRef={toggleButtonRef}\n                toggleList={toggleList}\n                withoutCollapseIndicator={withoutCollapseIndicator}\n                ariaDescribedBy={!isCollatingErrors && uniqueId ? `${uniqueId}${ARIA_ERROR_SUFFIX}` : ''}\n            />\n            <SelectList\n                popoverClassNameModifiers={popoverClassNameModifiers}\n                setToTargetWidth={setToTargetWidth}\n                dismissPopover={dismissPopover}\n                active={selection}\n                commitActions={commitActionButtons}\n                items={items}\n                multiSelect={multiSelect}\n                onKeyDown={handleListKeyDown}\n                onSelect={handleSelect}\n                selectListId={selectListId.current}\n                ref={selectListRef}\n                toggleButtonRef={toggleButtonRef}\n                renderListItem={renderListItem}\n                showList={showList}\n                showOverlay={showOverlay}\n                textFilter={textFilter}\n                fitPosition={fitPosition}\n            />\n        </div>\n    );\n};\n\nexport default Select;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport { fixedForwardRef } from '../../../utils/preact';\n\n/**\n * @deprecated This component is deprecated. Use <Icon name=\"chevron-left\"/> instead.\n */\nconst ChevronLeft = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'> & Partial<SVGStyleElement>, ref: Ref<SVGSVGElement>) => (\n    <svg {...props} ref={ref} width=\"7\" height=\"10\" viewBox=\"0 0 6 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        {title && <title>{title}</title>}\n\n        <path\n            d=\"M5.56077 2.00011L2.56077 5.00011L5.56077 8.00011L4.50011 9.06077L0.439453 5.00011L4.50011 0.939453L5.56077 2.00011Z\"\n            fill={props.disabled ? '#8D95A3' : '#00112C'}\n        />\n    </svg>\n));\n\nexport default ChevronLeft;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport { fixedForwardRef } from '../../../utils/preact';\n\n/**\n * @deprecated This component is deprecated. Use <Icon name=\"chevron-right\"/> instead.\n */\nconst ChevronRight = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'> & Partial<SVGStyleElement>, ref: Ref<SVGSVGElement>) => (\n    <svg {...props} ref={ref} width=\"7\" height=\"10\" viewBox=\"0 0 6 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        {title && <title>{title}</title>}\n        <path\n            d=\"M0.439453 7.9999L3.43945 4.9999L0.439454 1.9999L1.50011 0.93924L5.56077 4.9999L1.50011 9.06056L0.439453 7.9999Z\"\n            fill={props.disabled ? '#8D95A3' : '#00112C'}\n        />\n    </svg>\n));\n\nexport default ChevronRight;\n","import { ButtonVariant } from '../Button/types';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport { EMPTY_ARRAY, isNullish } from '../../../utils';\nimport classnames from 'classnames';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport Button from '../Button';\nimport './Pagination.scss';\nimport { PaginationProps } from './types';\nimport Select from '../FormFields/Select';\nimport { SelectItem } from '../FormFields/Select/types';\nimport ChevronLeft from '../SVGIcons/ChevronLeft';\nimport ChevronRight from '../SVGIcons/ChevronRight';\n\nexport default function Pagination({ next, hasNext, hasPrev, prev, limit, limitOptions, onLimitSelection }: PaginationProps) {\n    const { i18n } = useCoreContext();\n\n    const _limitOptions = useMemo(\n        () => limitOptions && Object.freeze(limitOptions.map(option => ({ id: `${option}`, name: `${option}` } as SelectItem))),\n        [limitOptions]\n    );\n\n    const _onLimitChanged = useCallback(\n        ({ target }: any) => {\n            if (isNullish(target?.value)) return;\n            onLimitSelection?.(+target.value);\n        },\n        [onLimitSelection]\n    );\n\n    return (\n        <div aria-label={i18n.get('paginatedNavigation')} className={`adyen-pe-pagination ${classnames({})}`}>\n            <div className=\"adyen-pe-pagination__context\">\n                {_limitOptions && onLimitSelection && (\n                    <>\n                        <span>{i18n.get('pagination.showing')}</span>\n                        <div className=\"adyen-pe-pagination__limit-selector\">\n                            <Select\n                                setToTargetWidth={true}\n                                filterable={false}\n                                multiSelect={false}\n                                items={_limitOptions}\n                                onChange={_onLimitChanged}\n                                selected={`${limit ?? ''}`}\n                            />\n                        </div>\n                    </>\n                )}\n            </div>\n\n            <div className=\"adyen-pe-pagination__controls\">\n                <Button\n                    aria-label={i18n.get('pagination.previousPage')}\n                    variant={ButtonVariant.TERTIARY}\n                    disabled={!hasPrev}\n                    iconButton={true}\n                    classNameModifiers={['circle'].concat(hasPrev ? EMPTY_ARRAY : 'disabled')}\n                    onClick={prev}\n                >\n                    <ChevronLeft disabled={!hasPrev} />\n                </Button>\n                <Button\n                    aria-label={i18n.get('pagination.nextPage')}\n                    variant={ButtonVariant.TERTIARY}\n                    disabled={!hasNext}\n                    iconButton={true}\n                    classNameModifiers={['circle'].concat(hasNext ? EMPTY_ARRAY : 'disabled')}\n                    onClick={next}\n                >\n                    <ChevronRight disabled={!hasNext} />\n                </Button>\n            </div>\n        </div>\n    );\n}\n","export const BASE_CLASS = 'adyen-pe-transactions-table';\nexport const AMOUNT_CLASS = BASE_CLASS + '__amount';\nexport const PAYMENT_METHOD_CLASS = BASE_CLASS + '__payment-method';\nexport const PAYMENT_METHOD_LOGO_CONTAINER_CLASS = BASE_CLASS + '__payment-method-logo-container';\nexport const PAYMENT_METHOD_LOGO_CLASS = BASE_CLASS + '__payment-method-logo';\nexport const DATE_AND_PAYMENT_METHOD_CLASS = BASE_CLASS + '__date-and-payment-method';\nexport const DATE_METHOD_CLASS = BASE_CLASS + '__date-and-payment-method--date';\n","import useCoreContext from '../core/Context/useCoreContext';\nimport { EMPTY_OBJECT } from '../utils';\nimport { useMemo } from 'preact/hooks';\n\n// TODO - Remove once we define a strategy to handle images\nconst FALLBACK_CDN_CONTEXT = 'https://cdf6519016.cdn.adyen.com/checkoutshopper/';\n\nexport interface ImageOptions {\n    extension?: string;\n    imageFolder?: string;\n    resourceContext?: string;\n    name: string;\n    parentFolder?: string;\n    size?: string;\n    subFolder?: string;\n}\n\nconst returnImage = ({\n    name,\n    resourceContext,\n    imageFolder = 'logos/',\n    parentFolder = '',\n    extension = 'svg',\n    size = '',\n    subFolder = '',\n}: ImageOptions) => {\n    const path = `/images/${imageFolder}/${subFolder}/${parentFolder}/${name}${size}.${extension}`.replace(/\\/+/g, '/');\n    return `${resourceContext}${path}`;\n};\n\nexport const useImageUrl = ({ options = EMPTY_OBJECT, name }: { options: Partial<ImageOptions>; name: string }) => {\n    const { loadingContext } = useCoreContext();\n\n    // TODO - Get rid of FALLBACK_CDN_CONTEXT once we define our assets URL\n    const image = useMemo(\n        () =>\n            returnImage({\n                resourceContext: FALLBACK_CDN_CONTEXT || loadingContext,\n                name,\n                ...options,\n            }),\n        [loadingContext, name, options]\n    );\n\n    return image;\n};\n","import cx from 'classnames';\nimport { useImageUrl } from '../../../hooks/useImageUrl';\nimport { useMemo } from 'preact/hooks';\n\ninterface ImageProps {\n    name: string;\n    alt: string;\n    extension?: string;\n    className?: string;\n    folder?: string;\n}\n\nexport const Image = ({ folder = 'components/', className, alt, name, extension }: ImageProps) => {\n    const imageUrl = useImageUrl({\n        options: useMemo(() => ({ imageFolder: folder, extension }), [extension, folder]),\n        name,\n    });\n\n    return <img className={cx('adyen-pe__image', className)} alt={alt} src={imageUrl} />;\n};\n","import { ITransaction } from '../../../../types';\n\nconst PAYMENT_METHODS = Object.freeze({\n    klarna: 'Klarna',\n    paypal: 'PayPal',\n});\n\nexport function parsePaymentMethodType(paymentMethod: NonNullable<ITransaction['paymentMethod']>, format?: 'detail' | 'fourDigit') {\n    if (paymentMethod.lastFourDigits) return format === 'detail' ? '•••• •••• •••• ' + paymentMethod.lastFourDigits : paymentMethod.lastFourDigits;\n\n    return paymentMethod.description || PAYMENT_METHODS[paymentMethod.type as keyof typeof PAYMENT_METHODS] || paymentMethod.type;\n}\n","import useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { ITransaction } from '../../../../../types';\nimport { Image } from '../../../../internal/Image/Image';\nimport { Tag } from '../../../../internal/Tag/Tag';\nimport { TagVariant } from '../../../../internal/Tag/types';\nimport { TypographyVariant } from '../../../../internal/Typography/types';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { containerQueries, useResponsiveContainer } from '../../../../../hooks/useResponsiveContainer';\nimport { parsePaymentMethodType } from '../utils';\nimport { PAYMENT_METHOD_CLASS, PAYMENT_METHOD_LOGO_CLASS, PAYMENT_METHOD_LOGO_CONTAINER_CLASS } from './constants';\n\nconst PaymentMethodCell = ({\n    paymentMethod,\n    bankAccount,\n}: {\n    paymentMethod?: ITransaction['paymentMethod'];\n    bankAccount?: ITransaction['bankAccount'];\n}) => {\n    const { i18n } = useCoreContext();\n    const isSmContainer = useResponsiveContainer(containerQueries.down.xs);\n\n    return (\n        <div className={PAYMENT_METHOD_CLASS}>\n            {paymentMethod || bankAccount ? (\n                <>\n                    <div className={PAYMENT_METHOD_LOGO_CONTAINER_CLASS}>\n                        <Image\n                            name={paymentMethod ? paymentMethod.type : 'bankTransfer'}\n                            alt={paymentMethod ? paymentMethod.type : 'bankTransfer'}\n                            folder={'logos/'}\n                            className={PAYMENT_METHOD_LOGO_CLASS}\n                        />\n                    </div>\n                    <Typography variant={TypographyVariant.BODY} stronger={isSmContainer}>\n                        {paymentMethod ? parsePaymentMethodType(paymentMethod) : bankAccount?.accountNumberLastFourDigits}\n                    </Typography>\n                </>\n            ) : (\n                <Tag label={i18n.get('noData')} variant={TagVariant.LIGHT_WITH_OUTLINE} />\n            )}\n        </div>\n    );\n};\n\nexport default PaymentMethodCell;\n","const labels = {\n    id: 'paymentId',\n    transactionType: 'transactionType',\n    createdAt: 'date',\n    balanceAccountId: 'balanceAccount',\n    accountHolderId: 'account',\n    amount: 'txAmount',\n    description: 'description',\n    status: 'status',\n    category: 'category',\n    paymentMethod: 'paymentMethod',\n    currency: 'currency',\n    fundsCapturedAmount: 'fundsCaptured',\n    payoutAmount: 'netPayout',\n    adjustmentAmount: 'adjustments',\n    dateAndPaymentMethod: 'date',\n    dateAndReportType: 'date',\n    reportType: 'report',\n    reportFile: 'file',\n} as const;\n\nexport const getLabel = (key: keyof typeof labels) => {\n    return labels[key] || key;\n};\n","import { useMemo } from 'preact/hooks';\nimport { getLabel } from '../components/utils/getLabel';\nimport { CellTextPosition } from '../components/internal/DataGrid/types';\nimport { CustomColumn, DataGridCustomColumnConfig } from '../components/types';\nimport useCoreContext from '../core/Context/useCoreContext';\nimport { EMPTY_OBJECT, isUndefined } from '../utils';\nimport { containerQueries, useResponsiveContainer } from './useResponsiveContainer';\n\ntype Columns<k extends string> = DataGridCustomColumnConfig<k> & { label?: string; position?: CellTextPosition; visible?: boolean };\n\nfunction removeUndefinedProperties<T extends string>(obj: Omit<Columns<T>, 'key'>): Partial<Columns<T>> {\n    let result: Partial<Omit<Columns<T>, 'key'>> = {};\n    for (const key of Object.keys(obj) as Array<keyof Omit<Columns<T>, 'key'>>) {\n        if (!isUndefined(obj[key])) {\n            result = { ...result, [key as keyof T]: obj[key] };\n        }\n    }\n    return result;\n}\n\nexport const useTableColumns = <T extends string, C extends string>({\n    fields,\n    customColumns,\n    columnConfig,\n}: {\n    fields: T[] | Readonly<T[]>;\n    customColumns?: CustomColumn<C>[];\n    columnConfig?: { [k in T]?: Omit<Columns<k>, 'key'> };\n}) => {\n    const { i18n } = useCoreContext();\n\n    const tableColumns: CustomColumn<T>[] = useMemo(() => fields.map(field => ({ key: field })), [fields]);\n    const isSmAndUpContainer = useResponsiveContainer(containerQueries.up.sm);\n\n    const columns = useMemo(() => {\n        const newFields = customColumns?.filter(cc => !fields?.some(field => field === (cc.key as unknown as T))).map(colum => colum.key) || [];\n\n        const mergedColumns = [...tableColumns, ...(customColumns?.filter(col => col?.key) || [])];\n\n        const customColumnsMap =\n            customColumns?.reduce<Record<string, (typeof customColumns)[number]>>((acc, col) => {\n                acc[col.key] = col;\n                return acc;\n            }, {}) || {};\n\n        // Use a Map to track columns by key.\n        const columnMap = new Map<string, { key: T; position?: 'center' | 'left' | 'right'; flex?: number; visible?: boolean; label: string }>();\n\n        mergedColumns.forEach(current => {\n            // Check if there is a custom column that should be hidden\n            const hiddenColumn = customColumnsMap[current.key];\n            if (hiddenColumn?.visibility === 'hidden') return;\n\n            if (columnMap.has(current.key)) {\n                // Merge properties from current into the existing column.\n                const existing = columnMap.get(current.key)!;\n                // Current's properties will override existing ones if there are conflicts\n                columnMap.set(current.key, {\n                    ...existing,\n                    ...current,\n                    visible: current.visibility !== 'hidden',\n                    position: current.align || existing.position,\n                });\n            } else {\n                const { key, flex, align } = current;\n                const label = i18n.get(getLabel(key as any));\n                const config = removeUndefinedProperties<T>(columnConfig?.[key] || EMPTY_OBJECT);\n\n                columnMap.set(current.key, {\n                    key: key as unknown as T,\n                    label,\n                    visible: newFields.includes(current.key as unknown as C) ? isSmAndUpContainer : true,\n                    flex,\n                    position: align,\n                    ...config,\n                });\n            }\n        });\n\n        return Array.from(columnMap.values());\n    }, [columnConfig, customColumns, fields, i18n, isSmAndUpContainer, tableColumns]);\n\n    return columns;\n};\n","import { FC } from 'preact/compat';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport { DATE_FORMAT_TRANSACTIONS_MOBILE, DATE_FORMAT_TRANSACTIONS } from '../../../../../constants';\nimport Category from '../Category/Category';\nimport DataOverviewError from '../../../../internal/DataOverviewError/DataOverviewError';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { getCurrencyCode } from '../../../../../core/Localization/amount/amount-util';\nimport { TranslationKey } from '../../../../../translations';\nimport useTimezoneAwareDateFormatting from '../../../../../hooks/useTimezoneAwareDateFormatting';\nimport DataGrid from '../../../../internal/DataGrid';\nimport Pagination from '../../../../internal/Pagination';\nimport { TypographyVariant } from '../../../../internal/Typography/types';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { containerQueries, useResponsiveContainer } from '../../../../../hooks/useResponsiveContainer';\nimport { AMOUNT_CLASS, BASE_CLASS, DATE_AND_PAYMENT_METHOD_CLASS, DATE_METHOD_CLASS } from './constants';\nimport './TransactionTable.scss';\nimport PaymentMethodCell from './PaymentMethodCell';\nimport { TransactionTableProps } from './types';\nimport { useTableColumns } from '../../../../../hooks/useTableColumns';\n\n// Remove status column temporarily\n// const FIELDS = ['createdAt', 'status', 'paymentMethod', 'transactionType', 'amount'] as const;\n\nexport const TRANSACTION_FIELDS = ['createdAt', 'paymentMethod', 'transactionType', 'amount'] as const;\nexport type TransactionsTableCols = (typeof TRANSACTION_FIELDS)[number];\n\nexport const TransactionsTable: FC<TransactionTableProps> = ({\n    activeBalanceAccount,\n    availableCurrencies,\n    error,\n    hasMultipleCurrencies,\n    loading,\n    onContactSupport,\n    onRowClick,\n    showDetails,\n    showPagination,\n    transactions,\n    customColumns,\n    ...paginationProps\n}) => {\n    const { i18n } = useCoreContext();\n    const { dateFormat } = useTimezoneAwareDateFormatting(activeBalanceAccount?.timeZone);\n    const [hoveredRow, setHoveredRow] = useState<undefined | number>();\n    const isSmAndUpContainer = useResponsiveContainer(containerQueries.up.sm);\n    const isMdAndUpContainer = useResponsiveContainer(containerQueries.up.md);\n    const isXsAndDownContainer = useResponsiveContainer(containerQueries.down.xs);\n\n    const amountLabel = i18n.get('amount');\n    const columns = useTableColumns({\n        fields: TRANSACTION_FIELDS,\n        customColumns,\n        columnConfig: {\n            amount: {\n                label: hasMultipleCurrencies\n                    ? undefined\n                    : `${amountLabel} ${availableCurrencies && availableCurrencies[0] ? `(${getCurrencyCode(availableCurrencies[0])})` : ''}`,\n                position: 'right',\n                flex: isSmAndUpContainer ? 1.5 : undefined,\n            },\n            transactionType: { visible: isMdAndUpContainer },\n            paymentMethod: { visible: isSmAndUpContainer },\n        },\n    });\n\n    const EMPTY_TABLE_MESSAGE = {\n        title: 'noTransactionsFound',\n        message: ['tryDifferentSearchOrResetYourFiltersAndWeWillTryAgain'],\n    } satisfies { title: TranslationKey; message: TranslationKey | TranslationKey[] };\n\n    const onHover = useCallback(\n        (index?: number) => {\n            setHoveredRow(index ?? undefined);\n        },\n        [setHoveredRow]\n    );\n\n    const errorDisplay = useMemo(\n        () => () => <DataOverviewError error={error} onContactSupport={onContactSupport} errorMessage={'weCouldNotLoadYourTransactions'} />,\n        [error, onContactSupport]\n    );\n\n    return (\n        <div className={BASE_CLASS}>\n            <DataGrid\n                errorDisplay={errorDisplay}\n                error={error}\n                columns={columns}\n                data={transactions}\n                loading={loading}\n                outline={false}\n                onRowClick={{ callback: onRowClick }}\n                onRowHover={onHover}\n                emptyTableMessage={EMPTY_TABLE_MESSAGE}\n                customCells={{\n                    // Remove status column temporarily\n                    /* status: ({ value }) => {\n                        return (\n                            <Tag\n                                label={i18n.get(value)}\n                                variant={value === 'Booked' ? TagVariant.SUCCESS : value === 'Reversed' ? TagVariant.ERROR : TagVariant.DEFAULT}\n                            />\n                        );\n                    },*/\n\n                    transactionType: ({ item, rowIndex }) => {\n                        const tooltipKey = `tooltip.${item.category}`;\n                        return item.category ? (\n                            i18n.has(tooltipKey) ? (\n                                <Category isContainerHovered={rowIndex === hoveredRow} value={item.category} />\n                            ) : (\n                                <Typography variant={TypographyVariant.BODY}>\n                                    {i18n.has(`txType.${item.category}`) ? i18n.get(`txType.${item.category}`) : `${item.category}`}\n                                </Typography>\n                            )\n                        ) : null;\n                    },\n                    amount: ({ value }) => {\n                        const amount = i18n.amount(value.value, value.currency, { hideCurrency: !hasMultipleCurrencies });\n                        return (\n                            <Typography variant={TypographyVariant.BODY} className={AMOUNT_CLASS}>\n                                {amount}\n                            </Typography>\n                        );\n                    },\n                    createdAt: ({ item, value }) => {\n                        if (isXsAndDownContainer) {\n                            return (\n                                <div className={DATE_AND_PAYMENT_METHOD_CLASS}>\n                                    <PaymentMethodCell paymentMethod={item.paymentMethod} bankAccount={item.bankAccount} />\n                                    <Typography variant={TypographyVariant.BODY} className={DATE_METHOD_CLASS}>\n                                        {dateFormat(item.createdAt, DATE_FORMAT_TRANSACTIONS_MOBILE)}\n                                    </Typography>\n                                </div>\n                            );\n                        }\n                        return <Typography variant={TypographyVariant.BODY}>{dateFormat(value, DATE_FORMAT_TRANSACTIONS)}</Typography>;\n                    },\n\n                    paymentMethod: ({ item }) => <PaymentMethodCell paymentMethod={item.paymentMethod} bankAccount={item.bankAccount} />,\n                }}\n            >\n                {showPagination && (\n                    <DataGrid.Footer>\n                        <Pagination {...paginationProps} />\n                    </DataGrid.Footer>\n                )}\n            </DataGrid>\n        </div>\n    );\n};\n","import { TRANSACTION_FIELDS } from '../../TransactionsOverview/components/TransactionsTable/TransactionsTable';\nimport type { TransactionDetailData } from '../types';\n\nexport const TX_DATA_CLASS = 'adyen-pe-transaction-data';\nexport const TX_DATA_AMOUNT = `${TX_DATA_CLASS}__amount`;\nexport const TX_DATA_ACTION_BAR = `${TX_DATA_CLASS}__action-bar`;\nexport const TX_DATA_CONTAINER = `${TX_DATA_CLASS}__container`;\nexport const TX_DATA_HEAD_CONTAINER = `${TX_DATA_CLASS}__head-container`;\nexport const TX_DATA_INPUT = `${TX_DATA_CLASS}__input`;\nexport const TX_DATA_INPUT_CHARS = `${TX_DATA_INPUT}-chars-counter`;\nexport const TX_DATA_INPUT_CONTAINER = `${TX_DATA_INPUT}-container`;\nexport const TX_DATA_INPUT_CONTAINER_SHORT = `${TX_DATA_INPUT_CONTAINER}--short`;\nexport const TX_DATA_INPUT_CONTAINER_TEXT = `${TX_DATA_INPUT_CONTAINER}--text-input`;\nexport const TX_DATA_INPUT_CONTAINER_WITH_ERROR = `${TX_DATA_INPUT_CONTAINER}--with-error`;\nexport const TX_DATA_INPUT_HEAD = `${TX_DATA_INPUT}-head`;\nexport const TX_DATA_INPUT_TEXTAREA = `${TX_DATA_INPUT}--textarea`;\nexport const TX_DATA_LABEL = `${TX_DATA_CLASS}__label`;\nexport const TX_DATA_LIST = `${TX_DATA_CLASS}__list`;\nexport const TX_DATA_PAY_METHOD = `${TX_DATA_CLASS}__payment-method`;\nexport const TX_DATA_PAY_METHOD_DETAIL = `${TX_DATA_PAY_METHOD}-detail`;\nexport const TX_DATA_PAY_METHOD_LOGO = `${TX_DATA_PAY_METHOD}-logo`;\nexport const TX_DATA_PAY_METHOD_LOGO_CONTAINER = `${TX_DATA_PAY_METHOD_LOGO}-container`;\nexport const TX_DATA_TAGS = `${TX_DATA_CLASS}__tags`;\nexport const TX_STATUS_BOX = `${TX_DATA_CLASS}__status-box`;\nexport const TX_REFUND_RESPONSE = `${TX_DATA_CLASS}__refund-response`;\nexport const TX_REFUND_RESPONSE_ICON = `${TX_DATA_CLASS}__refund-response-icon`;\nexport const TX_REFUND_RESPONSE_SUCCESS_ICON = `${TX_REFUND_RESPONSE_ICON}--success`;\nexport const TX_REFUND_RESPONSE_ERROR_ICON = `${TX_REFUND_RESPONSE_ICON}--error`;\nexport const TX_REFUND_STATUSES_CONTAINER = `${TX_DATA_CLASS}__refund-statuses-container`;\n\nexport const TX_DETAILS_RESERVED_FIELDS_SET = new Set([\n    ...(['status', 'category', 'paymentMethod', 'bankAccount', 'balanceAccount', 'id', 'balanceAccountId'] satisfies (keyof TransactionDetailData)[]),\n    ...TRANSACTION_FIELDS,\n    'deductedAmount',\n    'lineItems',\n    'originalAmount',\n    'paymentPspReference',\n    'refundDetails',\n    'refundMetadata',\n] as const);\n","import { useMemo } from 'preact/hooks';\nimport CopyText from '../../../../internal/CopyText/CopyText';\nimport { TX_DATA_LABEL, TX_DATA_LIST, TX_DETAILS_RESERVED_FIELDS_SET } from '../constants';\nimport { isCustomDataObject } from '../../../../internal/DataGrid/components/TableCells';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport useTransactionDetailsContext from '../../context/details';\nimport StructuredList from '../../../../internal/StructuredList';\nimport { StructuredListProps } from '../../../../internal/StructuredList/types';\nimport { TranslationKey } from '../../../../../translations';\nimport { isNullish } from '../../../../../utils';\nimport Link from '../../../../internal/Link/Link';\nimport { TypographyVariant } from '../../../../internal/Typography/types';\nimport Typography from '../../../../internal/Typography/Typography';\nimport Icon from '../../../../internal/DataGrid/components/Icon';\nimport cx from 'classnames';\n\nconst TransactionDataProperties = () => {\n    const { i18n } = useCoreContext();\n    const { transaction, extraFields, dataCustomization } = useTransactionDetailsContext();\n\n    return useMemo(() => {\n        const { balanceAccount, category, id, paymentPspReference, refundMetadata } = transaction;\n        const isRefundTransaction = category === 'Refund';\n        const SKIP_ITEM: StructuredListProps['items'][number] = null!;\n\n        const getFormattedAmount = (amount?: (typeof transaction)['amount']) => {\n            if (isNullish(amount)) return null;\n            const { value, currency } = amount;\n            return i18n.amount(value, currency);\n        };\n\n        const deductedAmount = getFormattedAmount(transaction.deductedAmount);\n        const originalAmount = getFormattedAmount(transaction.originalAmount);\n\n        const deductedAmountKey = isRefundTransaction ? 'refund.refundFee' : 'refund.fee';\n        const originalAmountKey = isRefundTransaction ? 'refund.originalPayment' : 'refund.originalAmount';\n        const paymentReferenceKey = isRefundTransaction ? 'refund.paymentPspReference' : 'refund.pspReference';\n\n        const listItems: StructuredListProps['items'] = [\n            // amounts\n            originalAmount ? { key: originalAmountKey as TranslationKey, value: originalAmount, id: 'originalAmount' } : SKIP_ITEM,\n            deductedAmount ? { key: deductedAmountKey as TranslationKey, value: deductedAmount, id: 'deductedAmount' } : SKIP_ITEM,\n\n            // balance account\n            balanceAccount?.description ? { key: 'account' as const, value: balanceAccount.description, id: 'description' } : SKIP_ITEM,\n\n            // refund reason\n            isRefundTransaction && refundMetadata?.refundReason\n                ? {\n                      key: 'refundReason' as const,\n                      value: i18n.has(`refundReason.${refundMetadata.refundReason}` as TranslationKey)\n                          ? i18n.get(`refundReason.${refundMetadata.refundReason}` as TranslationKey)\n                          : refundMetadata.refundReason,\n                      id: 'refundReason',\n                  }\n                : SKIP_ITEM,\n\n            // reference id\n            { key: 'referenceID' as const, value: <CopyText type={'Default'} textToCopy={id} showCopyTextTooltip={false} />, id: 'id' },\n\n            isRefundTransaction && refundMetadata?.refundPspReference\n                ? { key: 'refund.refundPspReference' as TranslationKey, value: refundMetadata.refundPspReference, id: 'refundPspReference' }\n                : SKIP_ITEM,\n\n            // psp reference\n            paymentPspReference ? { key: paymentReferenceKey as TranslationKey, value: paymentPspReference, id: 'paymentPspReference' } : SKIP_ITEM,\n        ]\n            .filter(Boolean)\n            .filter(val => !dataCustomization?.details?.fields?.some(field => field.key === val.id && field.visibility === 'hidden'));\n\n        // Add custom data\n\n        const itemsWithExtraFields = [\n            ...listItems,\n            ...(Object.entries(extraFields || {})\n                .filter(([key, value]) => !TX_DETAILS_RESERVED_FIELDS_SET.has(key as any) && value.type !== 'button' && value.visibility !== 'hidden')\n                .map(([key, value]) => ({\n                    key: key as TranslationKey,\n                    value: isCustomDataObject(value) ? value.value : value,\n                    type: isCustomDataObject(value) ? value.type : 'text',\n                    config: isCustomDataObject(value) ? value.config : undefined,\n                })) || {}),\n        ];\n\n        return (\n            <StructuredList\n                classNames={TX_DATA_LIST}\n                items={itemsWithExtraFields}\n                layout=\"5-7\"\n                align=\"start\"\n                renderLabel={label => <div className={TX_DATA_LABEL}>{label}</div>}\n                renderValue={(val, key, type, config) => {\n                    if (type === 'link' && config) {\n                        return (\n                            <Link classNames={[cx(config?.className)]} href={config.href} target={config.target || '_blank'}>\n                                {val}\n                            </Link>\n                        );\n                    }\n                    if (type === 'icon' && config) {\n                        const icon = { url: config?.src, alt: config.alt || val };\n                        return (\n                            <div className={cx('adyen-pe-transaction-data__list-icon-value', config?.className)}>\n                                <Icon {...icon} />\n                                <Typography variant={TypographyVariant.BODY}> {val} </Typography>\n                            </div>\n                        );\n                    }\n                    return (\n                        <Typography className={cx(config?.className)} variant={TypographyVariant.BODY}>\n                            {val}\n                        </Typography>\n                    );\n                }}\n            />\n        );\n    }, [dataCustomization?.details?.fields, extraFields, i18n, transaction]);\n};\n\nexport default TransactionDataProperties;\n","import { PropsWithChildren } from 'preact/compat';\nimport { TX_DATA_CONTAINER } from '../constants';\nimport cx from 'classnames';\n\nconst TransactionDetailsDataContainer = ({ children, className }: PropsWithChildren<{ className?: string }>) => (\n    <div className={cx(TX_DATA_CONTAINER, className)}>{children}</div>\n);\n\nexport default TransactionDetailsDataContainer;\n","import { EMPTY_OBJECT } from '../../../../utils';\nimport { RefundType } from '../context/types';\nimport { TagVariant } from '../../../internal/Tag/types';\nimport { parsePaymentMethodType } from '../../TransactionsOverview/components/utils';\nimport type { TransactionDetailData } from '../types';\n\nexport const getAmountStyleForTransaction = (transaction: TransactionDetailData) => {\n    switch (transaction?.status) {\n        case 'Booked':\n            return 'default';\n        case 'Reversed':\n            return 'error';\n        default:\n            return 'pending';\n    }\n};\n\nexport const getTagVariantForTransaction = (transaction: TransactionDetailData) => {\n    switch (transaction?.status) {\n        case 'Booked':\n            return TagVariant.SUCCESS;\n        case 'Reversed':\n            return TagVariant.ERROR;\n        default:\n            return TagVariant.DEFAULT;\n    }\n};\n\nexport const getPaymentMethodTypeForTransaction = (transaction: TransactionDetailData) => {\n    return transaction?.paymentMethod ? transaction.paymentMethod.type : transaction?.bankAccount ? 'bankTransfer' : null;\n};\n\nexport const getDisplayablePaymentMethodForTransaction = (transaction: TransactionDetailData) => {\n    return transaction?.paymentMethod\n        ? parsePaymentMethodType(transaction.paymentMethod, 'detail')\n        : transaction?.bankAccount?.accountNumberLastFourDigits;\n};\n\nexport const getRefundTypeForTransaction = (transaction: TransactionDetailData) => {\n    if (transaction.category === 'Refund') {\n        const { refundType } = transaction.refundMetadata ?? (EMPTY_OBJECT as NonNullable<TransactionDetailData['refundMetadata']>);\n        switch (refundType) {\n            case RefundType.FULL:\n                return RefundType.FULL;\n            case RefundType.PARTIAL:\n                return RefundType.PARTIAL;\n        }\n    }\n};\n","import {\n    TX_DATA_AMOUNT,\n    TX_DATA_LABEL,\n    TX_DATA_PAY_METHOD,\n    TX_DATA_PAY_METHOD_DETAIL,\n    TX_DATA_PAY_METHOD_LOGO,\n    TX_DATA_PAY_METHOD_LOGO_CONTAINER,\n    TX_DATA_TAGS,\n} from '../constants';\nimport {\n    getAmountStyleForTransaction,\n    getDisplayablePaymentMethodForTransaction,\n    getPaymentMethodTypeForTransaction,\n    getRefundTypeForTransaction,\n} from '../utils';\nimport cx from 'classnames';\nimport { memo } from 'preact/compat';\nimport { useMemo } from 'preact/hooks';\nimport { DATE_FORMAT_TRANSACTION_DETAILS } from '../../../../../constants';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport useTimezoneAwareDateFormatting from '../../../../../hooks/useTimezoneAwareDateFormatting';\nimport type { TransactionDataContentProps } from '../TransactionData/TransactionDataContent';\nimport type { TranslationKey } from '../../../../../translations';\nimport { RefundedState, RefundType } from '../../context/types';\nimport { Image } from '../../../../internal/Image/Image';\nimport { TagVariant } from '../../../../internal/Tag/types';\nimport { Tag } from '../../../../internal/Tag/Tag';\n\ntype TransactionStatusBoxProps = Pick<TransactionDataContentProps, 'transaction'> & { refundedState: RefundedState };\n\nconst TransactionStatusBox = ({ refundedState, transaction }: TransactionStatusBoxProps) => {\n    const { i18n } = useCoreContext();\n    const { dateFormat } = useTimezoneAwareDateFormatting(transaction?.balanceAccount?.timeZone);\n    const { amount, category, createdAt /*, status*/ } = transaction;\n\n    const formattedAmount = useMemo(() => {\n        const { currency, value } = amount;\n        return `${i18n.amount(value, currency, { hideCurrency: true })} ${currency}`;\n    }, [amount, i18n]);\n\n    const [paymentMethodType, paymentMethod, refundType] = useMemo(\n        () =>\n            [\n                getPaymentMethodTypeForTransaction(transaction),\n                getDisplayablePaymentMethodForTransaction(transaction),\n                getRefundTypeForTransaction(transaction),\n            ] as const,\n        [transaction]\n    );\n\n    return (\n        <>\n            <div className={TX_DATA_TAGS}>\n                {/*{status && <Tag label={i18n.get(status)} variant={getTagVariantForTransaction(transaction)} />}*/}\n                {category && <Tag label={i18n.get(`txType.${category}`)} variant={TagVariant.DEFAULT} />}\n\n                {/* refund type: only available for transaction.category == Refund */}\n                {refundType && (\n                    <>\n                        {refundType === RefundType.FULL && <Tag label={i18n.get('full')} variant={TagVariant.SUCCESS} />}\n                        {refundType === RefundType.PARTIAL && <Tag label={i18n.get('partial')} variant={TagVariant.BLUE} />}\n                    </>\n                )}\n\n                {refundedState === RefundedState.FULL && <Tag label={i18n.get('refunded.full')} variant={TagVariant.SUCCESS} />}\n                {refundedState === RefundedState.PARTIAL && <Tag label={i18n.get('refunded.partial')} variant={TagVariant.BLUE} />}\n            </div>\n\n            {formattedAmount && (\n                <div className={cx(TX_DATA_AMOUNT, `${TX_DATA_AMOUNT}--${getAmountStyleForTransaction(transaction)}`)}>{formattedAmount}</div>\n            )}\n\n            {paymentMethodType && (\n                <div className={TX_DATA_PAY_METHOD}>\n                    <div className={TX_DATA_PAY_METHOD_LOGO_CONTAINER}>\n                        <Image className={TX_DATA_PAY_METHOD_LOGO} name={paymentMethodType} alt={paymentMethodType} folder={'logos/'} />\n                    </div>\n\n                    <div className={TX_DATA_PAY_METHOD_DETAIL}>{paymentMethod}</div>\n                </div>\n            )}\n\n            {createdAt && <div className={TX_DATA_LABEL}>{dateFormat(new Date(createdAt), DATE_FORMAT_TRANSACTION_DETAILS)}</div>}\n        </>\n    );\n};\n\nexport default memo(TransactionStatusBox);\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport { fixedForwardRef } from '../../../utils/preact';\n\nconst CloseCircle = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n    <svg ref={ref} xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" {...props}>\n        {title && <title>{title}</title>}\n        <g clip-path=\"url(#a)\">\n            <path\n                d=\"M.25 8a7.75 7.75 0 1 1 15.5 0A7.75 7.75 0 0 1 .25 8ZM6 4.94 4.94 6l2 2-2 2L6 11.06l2-2 2 2L11.06 10l-2-2 2-2L10 4.94l-2 2-2-2Z\"\n                fill=\"currentColor\"\n            />\n        </g>\n        <defs>\n            <clipPath id=\"a\">\n                <path fill=\"#fff\" d=\"M0 0h16v16H0z\" />\n            </clipPath>\n        </defs>\n    </svg>\n));\n\nexport default CloseCircle;\n","import { ARIA_ERROR_SUFFIX } from '../../../core/Errors/constants';\nimport { hasOwnProperty } from '../../../utils';\nimport classNames from 'classnames';\nimport { h } from 'preact';\nimport { ForwardedRef, forwardRef, TargetedEvent } from 'preact/compat';\nimport { useCallback } from 'preact/hooks';\nimport { InputBaseProps } from './types';\nimport './FormFields.scss';\n\nfunction InputBase(\n    { onInput, onKeyUp, trimOnBlur, onBlurHandler, onBlur, onFocusHandler, errorMessage, ...props }: InputBaseProps,\n    ref: ForwardedRef<HTMLInputElement | null>\n) {\n    const { autoCorrect, classNameModifiers, isInvalid, isValid, readonly = false, spellCheck, type, uniqueId, isCollatingErrors, disabled } = props;\n\n    /**\n     * To avoid confusion with misplaced/misdirected onChange handlers - InputBase only accepts onInput, onBlur & onFocus handlers.\n     * The first 2 being the means by which we expect useForm--handleChangeFor validation functionality to be applied.\n     */\n    if (hasOwnProperty(props, 'onChange')) {\n        console.error('Error: Form fields that rely on InputBase may not have an onChange property');\n    }\n\n    const handleInput = useCallback(\n        (event: TargetedEvent<HTMLInputElement, Event>) => {\n            onInput?.(event);\n        },\n        [onInput]\n    );\n\n    const handleKeyUp = useCallback(\n        (event: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) => {\n            if (onKeyUp) onKeyUp(event);\n        },\n        [onKeyUp]\n    );\n\n    const handleBlur = useCallback(\n        (event: h.JSX.TargetedEvent<HTMLInputElement>) => {\n            onBlurHandler?.(event); // From Field component\n\n            if (trimOnBlur) {\n                (event.target as HTMLInputElement).value = (event.target as HTMLInputElement).value.trim(); // needed to trim trailing spaces in field (leading spaces can be done via formatting)\n            }\n\n            onBlur?.(event);\n        },\n        [onBlur, onBlurHandler, trimOnBlur]\n    );\n\n    const handleFocus = useCallback(\n        (event: h.JSX.TargetedEvent<HTMLInputElement>) => {\n            onFocusHandler?.(event); // From Field component\n        },\n        [onFocusHandler]\n    );\n\n    const inputClassNames = classNames(\n        'adyen-pe-input',\n        [`adyen-pe-input--${type}`],\n        props.className,\n        {\n            'adyen-pe-input--invalid': isInvalid,\n            'adyen-pe-input--valid': isValid,\n        },\n        classNameModifiers?.map(m => `adyen-pe-input--${m}`)\n    );\n\n    // Don't spread classNameModifiers etc to input element (it ends up as an attribute on the element itself)\n    const { classNameModifiers: cnm, uniqueId: uid, isInvalid: iiv, isValid: iv, isCollatingErrors: ce, ...newProps } = props;\n\n    return (\n        <>\n            <input\n                id={uniqueId}\n                {...newProps}\n                type={type}\n                className={inputClassNames}\n                readOnly={readonly}\n                aria-describedby={isCollatingErrors ? undefined : `${uniqueId}${ARIA_ERROR_SUFFIX}`}\n                aria-invalid={isInvalid}\n                onInput={handleInput}\n                onBlurCapture={handleBlur}\n                onFocus={handleFocus}\n                onKeyUp={handleKeyUp}\n                disabled={disabled}\n                ref={ref}\n            />\n            {isInvalid && errorMessage && (\n                <span className=\"adyen-pe-input__invalid-value\" id={`${uniqueId}${ARIA_ERROR_SUFFIX}`}>\n                    {errorMessage}\n                </span>\n            )}\n        </>\n    );\n}\n\nInputBase.defaultProps = {\n    type: 'text',\n    classNameModifiers: [],\n    onInput: () => {},\n};\n\nexport default forwardRef(InputBase);\n","import {\n    TX_DATA_CONTAINER,\n    TX_DATA_INPUT,\n    TX_DATA_INPUT_CONTAINER,\n    TX_DATA_INPUT_CONTAINER_SHORT,\n    TX_DATA_INPUT_CONTAINER_TEXT,\n    TX_DATA_INPUT_CONTAINER_WITH_ERROR,\n    TX_DATA_INPUT_HEAD,\n} from '../constants';\nimport cx from 'classnames';\nimport { h } from 'preact';\nimport { useMemo, useRef, useState } from 'preact/hooks';\nimport { boolOrFalse, uniqueId } from '../../../../../utils';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport useTransactionRefundContext from '../../context/refund';\nimport CloseCircle from '../../../../internal/SVGIcons/CloseCircle';\nimport InputBase from '../../../../internal/FormFields/InputBase';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../../../../internal/Typography/types';\nimport { getDecimalAmount, getDivider } from '../../../../../core/Localization/amount/amount-util';\nimport { TranslationKey } from '../../../../../translations';\nimport { ARIA_ERROR_SUFFIX } from '../../../../../core/Errors/constants';\nimport { TagVariant } from '../../../../internal/Tag/types';\nimport { Tag } from '../../../../internal/Tag/Tag';\n\n// [TODO]: These utils are reusable and should be located in a shared module\nconst formatAmount = (amount: number, currency: string) => getDecimalAmount(amount, currency).toFixed(getCurrencyExponent(currency));\nconst getCurrencyExponent = (currency: string) => Math.log10(getDivider(currency));\n\nconst _BaseRefundAmountInput = ({\n    currency,\n    disabled,\n    errorMessage,\n    errorMessageArg,\n    onInput,\n    value,\n}: {\n    currency: string;\n    disabled?: boolean;\n    errorMessage: TranslationKey | null;\n    errorMessageArg?: string;\n    onBlur?: (evt: h.JSX.TargetedEvent<HTMLInputElement>) => unknown;\n    onInput?: (evt: h.JSX.TargetedEvent<HTMLInputElement>) => unknown;\n    value: string | number;\n}) => {\n    const { i18n } = useCoreContext();\n    const inputIdentifier = useRef(uniqueId());\n    const labelIdentifier = useRef(uniqueId());\n\n    const error = errorMessage ? (errorMessageArg ? i18n.get(errorMessage, { values: { amount: errorMessageArg } }) : i18n.get(errorMessage)) : '';\n\n    return (\n        <div className={TX_DATA_CONTAINER}>\n            <div className={TX_DATA_INPUT_HEAD}>\n                <div id={labelIdentifier.current}>\n                    <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY} stronger>\n                        {i18n.get('refundAmount')}\n                    </Typography>\n                </div>\n            </div>\n\n            <div\n                className={cx({\n                    [TX_DATA_INPUT_CONTAINER]: true,\n                    [TX_DATA_INPUT_CONTAINER_SHORT]: true,\n                    [TX_DATA_INPUT_CONTAINER_TEXT]: true,\n                    [TX_DATA_INPUT_CONTAINER_WITH_ERROR]: !!errorMessage,\n                })}\n            >\n                <label htmlFor={inputIdentifier.current} aria-labelledby={labelIdentifier.current}>\n                    {currency && <Tag label={currency} variant={TagVariant.DEFAULT} />}\n                    <InputBase\n                        min={0}\n                        type=\"number\"\n                        className={TX_DATA_INPUT}\n                        disabled={boolOrFalse(disabled)}\n                        lang={i18n.locale}\n                        onInput={onInput}\n                        value={value}\n                        uniqueId={inputIdentifier.current}\n                    />\n                </label>\n                {errorMessage && (\n                    <div className=\"adyen-pe-input__refund-invalid-value\" id={`${inputIdentifier.current}${ARIA_ERROR_SUFFIX}`}>\n                        <CloseCircle />\n                        <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY}>\n                            {error}\n                        </Typography>\n                    </div>\n                )}\n            </div>\n        </div>\n    );\n};\n\nexport const TransactionRefundFullAmountInput = () => {\n    const { availableAmount, currency } = useTransactionRefundContext();\n    return <_BaseRefundAmountInput currency={currency} errorMessage={null} value={formatAmount(availableAmount, currency)} disabled />;\n};\n\nexport const TransactionRefundPartialAmountInput = ({ locale }: { locale: string }) => {\n    const { availableAmount, currency, interactionsDisabled, setAmount } = useTransactionRefundContext();\n    const [errorMessage, setErrorMessage] = useState<TranslationKey | null>(null);\n    const [refundAmount, setRefundAmount] = useState(`${formatAmount(availableAmount, currency)}`);\n    const { i18n } = useCoreContext();\n    const computeRefundAmount = useMemo(() => {\n        const exponent = getCurrencyExponent(currency);\n        return (value: string) => Math.trunc(+`${parseFloat(value)}e${exponent}`) || 0;\n    }, [currency]);\n\n    const onInput = (evt: h.JSX.TargetedEvent<HTMLInputElement>) => {\n        let value = evt.currentTarget.value.trim();\n        const amount = computeRefundAmount(value);\n        let message: typeof errorMessage = null;\n\n        if (amount || value) {\n            if (amount < 0) message = 'noNegativeNumbersAllowed';\n            if (amount > availableAmount) message = 'refundAmount.excess';\n        } else message = 'refundAmount.required';\n\n        // Get the decimal separator based on the user's locale\n        const decimalSeparator = 1.1.toLocaleString(locale).match(/\\d(.*?)\\d/)?.[1] || '.';\n        // Split the input value at the decimal separator\n        const parts = value.split(decimalSeparator);\n\n        if (parts.length === 2) {\n            const exponent = getCurrencyExponent(currency);\n\n            const integerPart = parts[0]!;\n            let decimalPart = parts[1]!;\n\n            if (decimalPart.length >= exponent) {\n                decimalPart = decimalPart.substring(0, exponent);\n                value = integerPart + decimalSeparator + decimalPart;\n                evt.currentTarget.value = value;\n            }\n        }\n\n        setRefundAmount(value);\n        setErrorMessage(message);\n        setAmount(message ? 0 : amount);\n    };\n\n    return (\n        <_BaseRefundAmountInput\n            currency={currency}\n            errorMessage={errorMessage}\n            errorMessageArg={i18n.amount(availableAmount, currency)}\n            onInput={onInput}\n            value={refundAmount}\n            disabled={interactionsDisabled}\n        />\n    );\n};\n","import { useMemo } from 'preact/hooks';\nimport { TX_DATA_CONTAINER, TX_DATA_HEAD_CONTAINER } from '../constants';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../../../../internal/Typography/types';\n\nconst TransactionRefundNotice = () => {\n    const { i18n } = useCoreContext();\n\n    return useMemo(\n        () => (\n            <div className={`${TX_DATA_CONTAINER} ${TX_DATA_HEAD_CONTAINER}`}>\n                <Typography el={TypographyElement.DIV} variant={TypographyVariant.SUBTITLE} stronger>\n                    {i18n.get('refundAction')}\n                </Typography>\n                <Typography variant={TypographyVariant.BODY}>{i18n.get('refundNotice')}</Typography>\n            </div>\n        ),\n        [i18n]\n    );\n};\n\nexport default TransactionRefundNotice;\n","import { useCallback, useMemo } from 'preact/hooks';\nimport { TX_DATA_CONTAINER, TX_DATA_INPUT_CONTAINER, TX_DATA_INPUT_CONTAINER_SHORT, TX_DATA_INPUT_HEAD } from '../constants';\nimport { REFUND_REASONS } from '../../context/constants';\nimport type { RefundReason } from '../../context/types';\nimport useTransactionRefundContext from '../../context/refund';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport Select from '../../../../internal/FormFields/Select';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../../../../internal/Typography/types';\nimport { SelectProps } from '../../../../internal/FormFields/Select/types';\n\nconst TransactionRefundReason = () => {\n    const { i18n } = useCoreContext();\n    const { interactionsDisabled, refundReason, setRefundReason } = useTransactionRefundContext();\n    const refundReasons = useMemo(\n        () =>\n            Object.freeze(\n                REFUND_REASONS.map(reason => ({ id: reason, name: i18n.has(`refundReason.${reason}`) ? i18n.get(`refundReason.${reason}`) : reason }))\n            ),\n        [i18n]\n    );\n\n    const onReasonChanged = useCallback<SelectProps<{ id: RefundReason; name: string }>['onChange']>(\n        evt => {\n            const reason = evt.target?.value;\n            reason && setRefundReason(reason);\n        },\n        [setRefundReason]\n    );\n\n    return (\n        <div className={TX_DATA_CONTAINER}>\n            <div className={TX_DATA_INPUT_HEAD}>\n                <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY} stronger>\n                    {i18n.get('refundReason')}\n                </Typography>\n            </div>\n\n            <div className={`${TX_DATA_INPUT_CONTAINER} ${TX_DATA_INPUT_CONTAINER_SHORT}`}>\n                <Select\n                    items={refundReasons}\n                    readonly={interactionsDisabled}\n                    filterable={false}\n                    multiSelect={false}\n                    onChange={onReasonChanged}\n                    selected={refundReason}\n                />\n            </div>\n        </div>\n    );\n};\n\nexport default TransactionRefundReason;\n","import cx from 'classnames';\nimport type { ComponentChild } from 'preact';\nimport type { PropsWithChildren } from 'preact/compat';\nimport { useCallback, useLayoutEffect, useMemo, useState } from 'preact/hooks';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { useFetch } from '../../../../../hooks/useFetch';\nimport type { IBalanceAccountBase, ILineItem } from '../../../../../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../../../../../utils';\nimport Alert from '../../../../internal/Alert/Alert';\nimport { AlertTypeOption, AlertVariantOption } from '../../../../internal/Alert/types';\nimport Button from '../../../../internal/Button';\nimport ButtonActions from '../../../../internal/Button/ButtonActions/ButtonActions';\nimport { ButtonActionObject, ButtonActionsLayoutBasic } from '../../../../internal/Button/ButtonActions/types';\nimport { ButtonVariant } from '../../../../internal/Button/types';\nimport DataOverviewDetailsSkeleton from '../../../../internal/DataOverviewDetails/DataOverviewDetailsSkeleton';\nimport Icon from '../../../../internal/Icon';\nimport { TypographyModifier, TypographyVariant } from '../../../../internal/Typography/types';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { TransactionDetailsProvider } from '../../context/details';\nimport { TransactionRefundProvider } from '../../context/refund';\nimport { ActiveView, RefundMode } from '../../context/types';\nimport useTransaction from '../../hooks/useTransaction';\nimport useTransactionRefundMetadata from '../../hooks/useTransactionRefundMetadata';\nimport type { TransactionDataProps } from '../../types';\nimport {\n    TX_DATA_ACTION_BAR,\n    TX_DATA_CLASS,\n    TX_REFUND_RESPONSE,\n    TX_REFUND_RESPONSE_ERROR_ICON,\n    TX_REFUND_RESPONSE_ICON,\n    TX_REFUND_RESPONSE_SUCCESS_ICON,\n    TX_REFUND_STATUSES_CONTAINER,\n    TX_STATUS_BOX,\n} from '../constants';\nimport TransactionDataProperties from '../details/TransactionDataProperties';\nimport TransactionDetailsDataContainer from '../details/TransactionDetailsDataContainer';\nimport TransactionStatusBox from '../details/TransactionStatusBox';\nimport { TransactionRefundFullAmountInput, TransactionRefundPartialAmountInput } from '../refund/TransactionRefundAmount';\nimport TransactionRefundNotice from '../refund/TransactionRefundNotice';\nimport TransactionRefundReason from '../refund/TransactionRefundReason';\nimport './TransactionData.scss';\n\nexport interface TransactionDataContentProps {\n    transaction: NonNullable<TransactionDataProps['transaction']>;\n    // TODO - Unify this parameter with dataCustomization\n    extraFields: Record<string, any> | undefined;\n    balanceAccount?: IBalanceAccountBase;\n    dataCustomization?: TransactionDataProps['dataCustomization'];\n}\n\nconst _TransactionDataContentViewWrapper = ({\n    children,\n    renderViewActionButtons,\n    renderViewMessageBox,\n}: PropsWithChildren<{ renderViewActionButtons: () => ComponentChild; renderViewMessageBox?: () => ComponentChild }>) => {\n    return (\n        <div className={TX_DATA_CLASS}>\n            {children}\n            {renderViewMessageBox && renderViewMessageBox()}\n            {renderViewActionButtons()}\n        </div>\n    );\n};\n\nconst _RefundResponseViewWrapper = ({\n    action,\n    title,\n    renderIcon,\n    subtitle,\n}: {\n    title: string;\n    subtitle: string;\n    renderIcon?: () => ComponentChild;\n    action: () => ComponentChild;\n}) => (\n    <div className={TX_REFUND_RESPONSE}>\n        {renderIcon && renderIcon()}\n        <Typography className={TypographyModifier.MEDIUM} variant={TypographyVariant.TITLE}>\n            {title}\n        </Typography>\n        <Typography variant={TypographyVariant.BODY}>{subtitle}</Typography>\n        {action && action()}\n    </div>\n);\n\nexport const TransactionDataContent = ({ transaction: initialTransaction, extraFields, dataCustomization }: TransactionDataContentProps) => {\n    const [activeView, _setActiveView] = useState(ActiveView.DETAILS);\n    const [primaryAction, _setPrimaryAction] = useState<ButtonActionObject>();\n    const [secondaryAction, _setSecondaryAction] = useState<ButtonActionObject>();\n    //TODO: Remove this when locked status returns from backend\n    const [locked, setLocked] = useState(false);\n\n    const { fetchingTransaction, refreshTransaction, transaction, transactionNavigator } = useTransaction(initialTransaction);\n    const {\n        refundable,\n        refundableAmount,\n        refundableAmountLabel,\n        refundAvailable,\n        refundCurrency,\n        refundDisabled: refundDisabledMetaData,\n        refundedState,\n        refundStatuses,\n        refundMode,\n        refundLocked,\n    } = useTransactionRefundMetadata(transaction);\n\n    //TODO: Remove this and do not rename refundDetails from the hook when locked status returns from backend\n    const refundDisabled = useMemo(() => refundDisabledMetaData || locked, [refundDisabledMetaData, locked]);\n    const { i18n } = useCoreContext();\n    const lineItems: readonly ILineItem[] = Object.freeze(transaction?.lineItems ?? EMPTY_ARRAY);\n\n    const setPrimaryAction = useCallback((action: ButtonActionObject | undefined) => _setPrimaryAction(action), []);\n    const setSecondaryAction = useCallback((action: ButtonActionObject | undefined) => _setSecondaryAction(action), []);\n\n    const shouldPreventActiveViewIfRefund = useCallback(\n        (activeView: ActiveView) => activeView === ActiveView.REFUND && refundDisabled,\n        [refundDisabled]\n    );\n\n    const { getBalanceAccounts: balanceAccountEndpointCall } = useConfigContext().endpoints;\n\n    const { data: balanceAccounts } = useFetch(\n        useMemo(\n            () => ({\n                fetchOptions: {\n                    enabled: !!balanceAccountEndpointCall && !transaction.balanceAccount && !!transaction.balanceAccountId,\n                    keepPrevData: true,\n                },\n                queryFn: async () => balanceAccountEndpointCall?.(EMPTY_OBJECT),\n            }),\n            [transaction.balanceAccountId, transaction.balanceAccount, balanceAccountEndpointCall]\n        )\n    );\n\n    const setActiveView = useCallback(\n        (activeView: ActiveView) => void (shouldPreventActiveViewIfRefund(activeView) || _setActiveView(activeView)),\n        [shouldPreventActiveViewIfRefund]\n    );\n\n    const renderViewActionButtons = useCallback(() => {\n        const extraActions = extraFields\n            ? Object.values(extraFields)\n                  .filter(field => field.type === 'button')\n                  .map(action => ({\n                      title: action.value,\n                      variant: ButtonVariant.SECONDARY,\n                      event: action.config?.action,\n                      classNames: action.config?.className ? [action.config.className] : [],\n                  }))\n            : [];\n\n        const actions = [primaryAction!, secondaryAction!, ...extraActions].filter(Boolean);\n\n        return actions.length ? (\n            <TransactionDetailsDataContainer className={TX_DATA_ACTION_BAR}>\n                <ButtonActions actions={actions} layout={ButtonActionsLayoutBasic.BUTTONS_END} />\n            </TransactionDetailsDataContainer>\n        ) : null;\n    }, [extraFields, primaryAction, secondaryAction]);\n\n    const onRefundSuccess = useCallback(() => {\n        refreshTransaction();\n        setLocked(true);\n    }, [setLocked, refreshTransaction]);\n\n    const renderMessages = useCallback(() => {\n        return refundStatuses?.length || refundLocked || locked ? (\n            <div className={TX_REFUND_STATUSES_CONTAINER}>\n                {(refundLocked || locked) && (\n                    <Alert\n                        type={AlertTypeOption.HIGHLIGHT}\n                        variant={AlertVariantOption.TIP}\n                        description={`${i18n.get('refund.theRefundIsBeingProcessed')} ${i18n.get('pleaseComeBackLater')}`}\n                    />\n                )}\n                {refundStatuses.map((status, index) => (\n                    <Alert\n                        key={`${Math.random()}-${index}`}\n                        variant={AlertVariantOption.TIP}\n                        type={status?.type ?? AlertTypeOption.HIGHLIGHT}\n                        description={status?.label}\n                    />\n                ))}\n            </div>\n        ) : null;\n    }, [i18n, refundStatuses, refundLocked, locked]);\n\n    const balanceAccountData = transaction.balanceAccount ?? balanceAccounts?.data?.find(account => account.id === transaction.balanceAccountId);\n\n    useLayoutEffect(() => {\n        _setActiveView(ActiveView.DETAILS);\n    }, [transaction]);\n\n    useLayoutEffect(() => {\n        if (refundDisabled) _setActiveView(ActiveView.DETAILS);\n    }, [refundDisabled]);\n\n    if (fetchingTransaction) {\n        return <DataOverviewDetailsSkeleton skeletonRowNumber={5} />;\n    }\n\n    if (shouldPreventActiveViewIfRefund(activeView)) return null;\n\n    const commonContextProviderProps = {\n        lineItems,\n        refundAvailable,\n        refundDisabled,\n        setActiveView,\n        setPrimaryAction,\n        setSecondaryAction,\n    } as const;\n\n    switch (activeView) {\n        case ActiveView.DETAILS:\n            return (\n                <_TransactionDataContentViewWrapper renderViewActionButtons={renderViewActionButtons} renderViewMessageBox={renderMessages}>\n                    <TransactionDetailsProvider\n                        {...commonContextProviderProps}\n                        transaction={\n                            !transaction.balanceAccount && !!balanceAccountData\n                                ? { ...transaction, balanceAccount: balanceAccountData as IBalanceAccountBase }\n                                : { ...transaction }\n                        }\n                        transactionNavigator={transactionNavigator}\n                        extraFields={extraFields}\n                        dataCustomization={dataCustomization}\n                    >\n                        <TransactionDetailsDataContainer className={TX_STATUS_BOX}>\n                            <TransactionStatusBox transaction={transaction} refundedState={refundedState} />\n                        </TransactionDetailsDataContainer>\n\n                        <TransactionDataProperties />\n                    </TransactionDetailsProvider>\n                </_TransactionDataContentViewWrapper>\n            );\n\n        case ActiveView.REFUND:\n            return (\n                <_TransactionDataContentViewWrapper renderViewActionButtons={renderViewActionButtons}>\n                    <TransactionRefundProvider\n                        {...commonContextProviderProps}\n                        availableAmount={refundableAmount}\n                        currency={refundCurrency}\n                        refundMode={refundMode}\n                        refreshTransaction={refreshTransaction}\n                        transactionId={transaction.id}\n                    >\n                        <TransactionRefundNotice />\n\n                        {/* refund reason selector */}\n                        {refundable && <TransactionRefundReason />}\n\n                        {/* refund amount input */}\n                        {refundMode === RefundMode.FULL_AMOUNT && <TransactionRefundFullAmountInput />}\n                        {(refundMode === RefundMode.PARTIAL_AMOUNT || refundMode === RefundMode.PARTIAL_LINE_ITEMS) && (\n                            <TransactionRefundPartialAmountInput locale={i18n.locale} />\n                        )}\n\n                        {refundableAmountLabel && (\n                            <Alert\n                                variant={AlertVariantOption.TIP}\n                                type={refundableAmountLabel.type}\n                                description={refundableAmountLabel.description}\n                            />\n                        )}\n                    </TransactionRefundProvider>\n                </_TransactionDataContentViewWrapper>\n            );\n\n        case ActiveView.REFUND_SUCCESS:\n            return (\n                <_RefundResponseViewWrapper\n                    renderIcon={() => <Icon name=\"checkmark-circle-fill\" className={cx(TX_REFUND_RESPONSE_ICON, TX_REFUND_RESPONSE_SUCCESS_ICON)} />}\n                    title={i18n.get('refundActionSuccessTitle')}\n                    subtitle={i18n.get('refundActionSuccessSubtitle')}\n                    action={() => (\n                        <Button variant={ButtonVariant.SECONDARY} onClick={onRefundSuccess}>\n                            {i18n.get('goBack')}\n                        </Button>\n                    )}\n                />\n            );\n\n        case ActiveView.REFUND_ERROR:\n            return (\n                <_RefundResponseViewWrapper\n                    renderIcon={() => <Icon name=\"cross-circle-fill\" className={cx(TX_REFUND_RESPONSE_ICON, TX_REFUND_RESPONSE_ERROR_ICON)} />}\n                    title={i18n.get('refundActionErrorTitle')}\n                    subtitle={i18n.get('refundActionErrorSubtitle')}\n                    action={() => (\n                        <Button variant={ButtonVariant.SECONDARY} onClick={refreshTransaction}>\n                            {i18n.get('goBack')}\n                        </Button>\n                    )}\n                />\n            );\n\n        default:\n            return null;\n    }\n};\n\nexport default TransactionDataContent;\n","import { boolOrFalse } from '../../../../../utils';\nimport DataOverviewDetailsSkeleton from '../../../../internal/DataOverviewDetails/DataOverviewDetailsSkeleton';\nimport TransactionDataContent from './TransactionDataContent';\nimport type { TransactionDataProps } from '../../types';\n\nexport const TransactionData = ({ error, isFetching, transaction, extraFields, dataCustomization }: TransactionDataProps) => {\n    const isLoading = boolOrFalse(isFetching);\n    const isWithoutContent = !(transaction || error);\n    const showLoadingIndicator = isLoading || isWithoutContent;\n\n    if (showLoadingIndicator) {\n        return <DataOverviewDetailsSkeleton skeletonRowNumber={5} />;\n    }\n\n    if (transaction) {\n        return <TransactionDataContent dataCustomization={dataCustomization} transaction={transaction} extraFields={extraFields} />;\n    }\n\n    return null;\n};\n","import { useConfigContext } from '../core/ConfigContext';\nimport { useFetch } from './useFetch';\nimport { EMPTY_OBJECT } from '../utils';\nimport { useMemo } from 'preact/hooks';\n\nconst useBalanceAccounts = (balanceAccountId?: string, enabled?: boolean) => {\n    const { getBalanceAccounts: balanceAccountEndpointCall } = useConfigContext().endpoints;\n\n    const { data, isFetching, error } = useFetch(\n        useMemo(\n            () => ({\n                fetchOptions: { enabled: !!balanceAccountEndpointCall && (enabled ?? true), keepPrevData: true },\n                queryFn: async () => balanceAccountEndpointCall?.(EMPTY_OBJECT),\n            }),\n            [balanceAccountEndpointCall]\n        )\n    );\n\n    const balanceAccounts = useMemo(\n        () => data?.data.filter(account => (balanceAccountId ? account.id === balanceAccountId : true)),\n        [data?.data, balanceAccountId]\n    );\n\n    const isBalanceAccountIdWrong = useMemo(\n        () => !!balanceAccountId && !!data?.data.length && balanceAccounts?.length === 0,\n        [balanceAccounts?.length, data?.data.length, balanceAccountId]\n    );\n\n    // TODO: Consider unifying error with isBalanceAccountIdWrong\n    return { balanceAccounts, isBalanceAccountIdWrong, isFetching, error } as const;\n};\n\nexport default useBalanceAccounts;\n","import { useClickOutside } from '../../../hooks/element/useClickOutside';\nimport { containerQueries, useResponsiveContainer } from '../../../hooks/useResponsiveContainer';\nimport Button from '../Button';\nimport Icon from '../Icon';\nimport { ButtonVariant } from '../Button/types';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport { useCallback, useContext, useEffect } from 'preact/hooks';\nimport { createContext, Ref } from 'preact';\nimport cx from 'classnames';\nimport './Modal.scss';\nimport { ModalProps } from './types';\n\nconst ModalContext = createContext({ withinModal: false });\n\nexport const useModalContext = () => useContext(ModalContext);\n\nexport default function Modal({\n    title,\n    children,\n    classNameModifiers = [],\n    isOpen,\n    onClose,\n    isDismissible = true,\n    headerWithBorder = true,\n    size = 'fluid',\n    ...props\n}: ModalProps) {\n    const isSmContainer = useResponsiveContainer(containerQueries.down.xs);\n    const { i18n } = useCoreContext();\n    const targetElement = useClickOutside(null, onClose) as Ref<HTMLDivElement>;\n\n    const handleEscKey = useCallback(\n        (e: KeyboardEvent) => {\n            if (e.key === 'Escape' && isOpen && isDismissible) {\n                onClose();\n            }\n        },\n        [isOpen, isDismissible, onClose]\n    );\n\n    useEffect(() => {\n        if (isOpen) {\n            window.addEventListener('keydown', handleEscKey);\n        } else {\n            window.removeEventListener('keydown', handleEscKey);\n        }\n        return () => window.removeEventListener('keydown', handleEscKey);\n    }, [isOpen, handleEscKey]);\n\n    return (\n        <>\n            {isOpen && (\n                <div\n                    className={cx(\n                        'adyen-pe-modal-wrapper',\n                        classNameModifiers.map(m => `adyen-pe-modal-wrapper--${m}`),\n                        { 'adyen-pe-modal-wrapper--open': isOpen, 'adyen-pe-modal-wrapper--dismissible': isDismissible }\n                    )}\n                    role=\"dialog\"\n                    aria-modal=\"true\"\n                    aria-hidden={!open}\n                    {...props}\n                >\n                    <ModalContext.Provider value={{ withinModal: true }}>\n                        <div\n                            className={cx('adyen-pe-modal', {\n                                'adyen-pe-modal--fluid': size === 'fluid',\n                                'adyen-pe-modal--small': size === 'small',\n                                'adyen-pe-modal--large': size === 'large',\n                                'adyen-pe-modal--extra-large': size === 'extra-large',\n                                'adyen-pe-modal--full-screen': size === 'full-screen' || isSmContainer,\n                            })}\n                            ref={targetElement}\n                        >\n                            <div\n                                className={cx('adyen-pe-modal__header', {\n                                    'adyen-pe-modal__header--with-title': title,\n                                    'adyen-pe-modal__header--with-border-bottom': headerWithBorder,\n                                })}\n                            >\n                                {title && <div className={`adyen-pe-modal__header__title`}>{title}</div>}\n\n                                {isDismissible && (\n                                    <Button\n                                        onClick={onClose}\n                                        variant={ButtonVariant.TERTIARY}\n                                        iconButton\n                                        classNameModifiers={['circle']}\n                                        className={`adyen-pe-modal__header-icon`}\n                                        aria-label={i18n.get('dismiss')}\n                                    >\n                                        <Icon name=\"cross\" />\n                                    </Button>\n                                )}\n                            </div>\n                            <div className={'adyen-pe-modal__content'}>{children}</div>\n                        </div>\n                    </ModalContext.Provider>\n                </div>\n            )}\n        </>\n    );\n}\n","import { boolOrFalse } from '../../../utils';\nimport { useModalContext } from '../Modal/Modal';\nimport { useEffect, useMemo, useState } from 'preact/hooks';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport type { TranslationKey } from '../../../translations';\nimport type { ExternalUIComponentProps } from '../../types';\nimport type { DetailsComponentProps } from './types';\n\ntype _BaseUseDataOverviewDetailsTitleProps = Pick<ExternalUIComponentProps<DetailsComponentProps>, 'hideTitle' | 'type'>;\n\nexport const TITLES_BY_TYPE = {\n    transaction: 'transactionDetails',\n    payout: 'payoutDetails',\n} as const satisfies Record<_BaseUseDataOverviewDetailsTitleProps['type'], TranslationKey>;\n\nexport const useDataOverviewDetailsTitle = <T extends _BaseUseDataOverviewDetailsTitleProps>({ hideTitle: _hideTitle, type }: T) => {\n    const { i18n } = useCoreContext();\n    const { withinModal } = useModalContext();\n    const [forcedHideTitle, setForcedHideTitle] = useState(false);\n\n    const hideTitle = useMemo(() => forcedHideTitle || boolOrFalse(_hideTitle), [forcedHideTitle, _hideTitle]);\n    const title = useMemo(() => i18n.get(TITLES_BY_TYPE[type]), [i18n, type]);\n\n    useEffect(() => {\n        // ensure title is always hidden within overview details modal\n        setForcedHideTitle(withinModal);\n    }, [withinModal]);\n\n    return { hideTitle, title } as const;\n};\n\nexport default useDataOverviewDetailsTitle;\n","export const BASE_CLASS = 'adyen-pe-payouts-table';\nexport const NET_PAYOUT_CLASS = `${BASE_CLASS}__net-payout`;\n","import cx from 'classnames';\nimport { FC } from 'preact/compat';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport AdyenPlatformExperienceError from '../../../../../core/Errors/AdyenPlatformExperienceError';\nimport { getCurrencyCode } from '../../../../../core/Localization/amount/amount-util';\nimport { TranslationKey } from '../../../../../translations';\nimport { IPayout } from '../../../../../types';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport useTimezoneAwareDateFormatting from '../../../../../hooks/useTimezoneAwareDateFormatting';\nimport DataGrid from '../../../../internal/DataGrid';\nimport { DATE_FORMAT_PAYOUTS, DATE_FORMAT_PAYOUTS_MOBILE } from '../../../../../constants';\nimport DataOverviewError from '../../../../internal/DataOverviewError/DataOverviewError';\nimport Pagination from '../../../../internal/Pagination';\nimport { PaginationProps, WithPaginationLimitSelection } from '../../../../internal/Pagination/types';\nimport { TypographyVariant } from '../../../../internal/Typography/types';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { getLabel } from '../../../../utils/getLabel';\nimport { containerQueries, useResponsiveContainer } from '../../../../../hooks/useResponsiveContainer';\nimport { BASE_CLASS, NET_PAYOUT_CLASS } from './constants';\nimport './PayoutsTable.scss';\nimport { useTableColumns } from '../../../../../hooks/useTableColumns';\nimport { CustomColumn } from '../../../../types';\nimport { StringWithAutocompleteOptions } from '../../../../../utils/types';\n\nconst AMOUNT_FIELDS = ['fundsCapturedAmount', 'adjustmentAmount', 'payoutAmount'] as const;\nexport const PAYOUT_TABLE_FIELDS = ['createdAt', ...AMOUNT_FIELDS] as const;\nexport type PayoutsTableFields = (typeof PAYOUT_TABLE_FIELDS)[number];\n\nconst _isAmountFieldKey = (key: (typeof PAYOUT_TABLE_FIELDS)[number]): key is (typeof AMOUNT_FIELDS)[number] => {\n    return AMOUNT_FIELDS.includes(key as (typeof AMOUNT_FIELDS)[number]);\n};\n\nexport interface PayoutsTableProps extends WithPaginationLimitSelection<PaginationProps> {\n    loading: boolean;\n    error?: AdyenPlatformExperienceError;\n    onContactSupport?: () => void;\n    onRowClick: (value: any) => void;\n    showDetails?: boolean;\n    showPagination: boolean;\n    data: IPayout[] | undefined;\n    customColumns?: CustomColumn<StringWithAutocompleteOptions<PayoutsTableFields>>[];\n}\n\nexport const PayoutsTable: FC<PayoutsTableProps> = ({\n    error,\n    loading,\n    onContactSupport,\n    onRowClick,\n    showDetails,\n    showPagination,\n    data,\n    customColumns,\n    ...paginationProps\n}) => {\n    const { i18n } = useCoreContext();\n    const { dateFormat } = useTimezoneAwareDateFormatting('UTC');\n    const { refreshing } = useConfigContext();\n    const isLoading = useMemo(() => loading || refreshing, [loading, refreshing]);\n    const isSmAndUpContainer = useResponsiveContainer(containerQueries.up.sm);\n\n    const getAmountFieldConfig = useCallback(\n        (key: (typeof PAYOUT_TABLE_FIELDS)[number]) => {\n            const label = i18n.get(getLabel(key));\n            if (_isAmountFieldKey(key)) {\n                return {\n                    label: data?.[0]?.[key]?.currency ? `${label} (${getCurrencyCode(data?.[0]?.[key]?.currency)})` : label,\n                    position: 'right',\n                } as const;\n            }\n        },\n        [data, i18n]\n    );\n\n    const columns = useTableColumns({\n        fields: PAYOUT_TABLE_FIELDS,\n        customColumns,\n        columnConfig: useMemo(\n            () => ({\n                fundsCapturedAmount: { ...getAmountFieldConfig('fundsCapturedAmount'), visible: isSmAndUpContainer },\n                adjustmentAmount: { ...getAmountFieldConfig('adjustmentAmount'), visible: isSmAndUpContainer },\n                payoutAmount: getAmountFieldConfig('payoutAmount'),\n            }),\n            [getAmountFieldConfig, isSmAndUpContainer]\n        ),\n    });\n\n    const EMPTY_TABLE_MESSAGE = {\n        title: 'noPayoutsFound',\n        message: ['tryDifferentSearchOrResetYourFiltersAndWeWillTryAgain'],\n    } satisfies { title: TranslationKey; message: TranslationKey | TranslationKey[] };\n\n    const errorDisplay = useMemo(\n        () => () => <DataOverviewError error={error} errorMessage={'weCouldNotLoadYourPayouts'} onContactSupport={onContactSupport} />,\n        [error, onContactSupport]\n    );\n\n    return (\n        <div className={BASE_CLASS}>\n            <DataGrid\n                errorDisplay={errorDisplay}\n                error={error}\n                columns={columns}\n                data={data}\n                loading={isLoading}\n                outline={false}\n                onRowClick={{ callback: onRowClick }}\n                emptyTableMessage={EMPTY_TABLE_MESSAGE}\n                customCells={{\n                    createdAt: ({ value }) => {\n                        if (!value) return null;\n                        if (!isSmAndUpContainer) return dateFormat(value, DATE_FORMAT_PAYOUTS_MOBILE);\n                        return value && <Typography variant={TypographyVariant.BODY}>{dateFormat(value, DATE_FORMAT_PAYOUTS)}</Typography>;\n                    },\n                    fundsCapturedAmount: ({ value }) => {\n                        return (\n                            value && (\n                                <Typography variant={TypographyVariant.BODY}>\n                                    {i18n.amount(value.value, value.currency, { hideCurrency: true })}\n                                </Typography>\n                            )\n                        );\n                    },\n                    adjustmentAmount: ({ value }) => {\n                        return (\n                            value && (\n                                <Typography variant={TypographyVariant.BODY}>\n                                    {i18n.amount(value.value, value.currency, { hideCurrency: true })}\n                                </Typography>\n                            )\n                        );\n                    },\n                    payoutAmount: ({ value }) => {\n                        return (\n                            value && (\n                                <Typography variant={TypographyVariant.BODY} className={cx({ [`${NET_PAYOUT_CLASS}--strong`]: !isSmAndUpContainer })}>\n                                    {i18n.amount(value.value, value.currency, { hideCurrency: isSmAndUpContainer })}\n                                </Typography>\n                            )\n                        );\n                    },\n                }}\n            >\n                {showPagination && (\n                    <DataGrid.Footer>\n                        <Pagination {...paginationProps} />\n                    </DataGrid.Footer>\n                )}\n            </DataGrid>\n        </div>\n    );\n};\n","import './DataOverviewDetails.scss';\nimport { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { useConfigContext } from '../../../core/ConfigContext';\nimport AdyenPlatformExperienceError from '../../../core/Errors/AdyenPlatformExperienceError';\nimport { useFetch } from '../../../hooks/useFetch';\nimport { IBalanceAccountBase, IPayoutDetails } from '../../../types';\nimport { EMPTY_OBJECT } from '../../../utils';\nimport { PayoutData } from '../../external/PayoutDetails/components/PayoutData';\nimport TransactionData from '../../external/TransactionDetails/components/TransactionData';\nimport useBalanceAccounts from '../../../hooks/useBalanceAccounts';\nimport { CustomColumn, ExternalUIComponentProps } from '../../types';\nimport { getErrorMessage } from '../../utils/getErrorMessage';\nimport { ErrorMessageDisplay } from '../ErrorMessageDisplay/ErrorMessageDisplay';\nimport { DetailsComponentProps, DetailsWithId, TransactionDetailData } from './types';\nimport Typography from '../Typography/Typography';\nimport { TypographyVariant } from '../Typography/types';\nimport useDataOverviewDetailsTitle from './useDataOverviewDetailsTitle';\nimport { TX_DETAILS_RESERVED_FIELDS_SET } from '../../external/TransactionDetails/components/constants';\nimport { PAYOUT_TABLE_FIELDS } from '../../external/PayoutsOverview/components/PayoutsTable/PayoutsTable';\nimport { TransactionDetailsCustomization } from '../../external';\nimport { PayoutDetailsCustomization } from '../../external/PayoutDetails/types';\n\nconst ENDPOINTS_BY_TYPE = {\n    transaction: 'getTransaction',\n    payout: 'getPayout',\n} as const;\n\nconst isDetailsWithId = (props: DetailsComponentProps): props is DetailsWithId => !('data' in props);\n\nexport default function DataOverviewDetails(props: ExternalUIComponentProps<DetailsComponentProps> & { balanceAccount?: IBalanceAccountBase }) {\n    const details = useMemo(() => (isDetailsWithId(props) ? null : props.data), [props]);\n    const dataId = useMemo(() => (isDetailsWithId(props) ? props.id : null), [props]);\n    const getDetail = useConfigContext().endpoints[ENDPOINTS_BY_TYPE[props.type]] as any; // [TODO]: Fix type and remove 'as any'\n\n    const { hideTitle, title } = useDataOverviewDetailsTitle(props);\n\n    const { data, error, isFetching } = useFetch(\n        useMemo(\n            () => ({\n                fetchOptions: { enabled: !!dataId && !!getDetail },\n                queryFn: async () => {\n                    const queryParam =\n                        props.type === 'transaction'\n                            ? {\n                                  path: { transactionId: dataId },\n                              }\n                            : {\n                                  query: { balanceAccountId: dataId, createdAt: props.date },\n                              };\n\n                    return getDetail!(EMPTY_OBJECT, { ...queryParam });\n                },\n            }),\n            [dataId, getDetail, props]\n        )\n    );\n\n    const balanceAccountId = props.type === 'payout' ? props.id : data?.balanceAccountId;\n    const hasBalanceAccountDetail = props.type === 'payout' ? props?.balanceAccountDescription : props?.balanceAccount;\n    const { balanceAccounts } = useBalanceAccounts(balanceAccountId, !hasBalanceAccountDetail);\n\n    const errorProps = useMemo(() => {\n        if (error) {\n            return getErrorMessage(error as AdyenPlatformExperienceError, 'weCouldNotLoadYourTransactions', props.onContactSupport);\n        }\n    }, [error, props.onContactSupport]);\n\n    const detailsData = details ?? data;\n\n    const [extraFields, setExtraFields] = useState<Record<string, any>>();\n\n    const getExtraFields = useCallback(async () => {\n        if (data && ((isDetailsWithId(props) && props.type === 'transaction') || props.type === 'payout')) {\n            const detailsData = await props.dataCustomization?.details?.onDataRetrieve?.(data);\n\n            setExtraFields(\n                props.dataCustomization?.details?.fields.reduce((acc, field) => {\n                    return TX_DETAILS_RESERVED_FIELDS_SET.has(field.key as any) ||\n                        PAYOUT_TABLE_FIELDS.includes(field.key as any) ||\n                        field?.visibility === 'hidden'\n                        ? acc\n                        : { ...acc, ...(detailsData?.[field.key] ? { [field.key]: detailsData[field.key] } : {}) };\n                }, {} as CustomColumn<any>)\n            );\n        }\n    }, [data, props]);\n\n    const dataCustomization =\n        (isDetailsWithId(props) && props.type === 'transaction') || props.type === 'payout' ? props.dataCustomization : undefined;\n\n    useEffect(() => {\n        void getExtraFields();\n    }, [getExtraFields]);\n\n    return (\n        <div className=\"adyen-pe-overview-details\">\n            {!hideTitle && (\n                <div className=\"adyen-pe-overview-details--title\">\n                    <Typography variant={TypographyVariant.TITLE} medium>\n                        {title}\n                    </Typography>\n                </div>\n            )}\n\n            {error && errorProps && (\n                <div className=\"adyen-pe-overview-details--error-container\">\n                    <ErrorMessageDisplay withImage {...errorProps} />\n                </div>\n            )}\n\n            {props.type === 'transaction' && (\n                <TransactionData\n                    transaction={\n                        detailsData\n                            ? ({\n                                  ...(detailsData || EMPTY_OBJECT),\n                                  balanceAccount: props?.balanceAccount || balanceAccounts?.[0],\n                              } as TransactionDetailData)\n                            : undefined\n                    }\n                    error={!!(error && errorProps)}\n                    isFetching={isFetching}\n                    extraFields={extraFields}\n                    dataCustomization={dataCustomization as { details?: TransactionDetailsCustomization }}\n                />\n            )}\n            {props.type === 'payout' && detailsData && (\n                <PayoutData\n                    balanceAccountId={dataId!}\n                    payout={detailsData as IPayoutDetails}\n                    balanceAccountDescription={props?.balanceAccountDescription || balanceAccounts?.[0]?.description}\n                    isFetching={isFetching}\n                    extraFields={extraFields}\n                    dataCustomization={dataCustomization as { details?: PayoutDetailsCustomization }}\n                />\n            )}\n        </div>\n    );\n}\n","import { _UIComponentProps, ExternalComponentType } from '../../types';\nimport UIElement from '../UIElement/UIElement';\nimport DataOverviewDetails from '../../internal/DataOverviewDetails/DataOverviewDetails';\nimport { PayoutDetailsProps } from './types';\n\nexport class PayoutElement extends UIElement<PayoutDetailsProps> {\n    public static type: ExternalComponentType = 'payoutDetails';\n\n    constructor(props: _UIComponentProps<PayoutDetailsProps>) {\n        super(props);\n        this.componentToRender = this.componentToRender.bind(this);\n    }\n\n    public componentToRender = () => {\n        return <DataOverviewDetails {...this.props} type={'payout'} ref={(ref: UIElement<PayoutDetailsProps>) => void (this.componentRef = ref)} />;\n    };\n}\n\nexport default PayoutElement;\n","export const WITH_ERROR_CLASS = 'adyen-pe-data-overview-container--with-error';\n","import { WITH_ERROR_CLASS } from './constants';\nimport { ErrorMessageDisplay } from '../ErrorMessageDisplay/ErrorMessageDisplay';\nimport { useConfigContext } from '../../../core/ConfigContext';\nimport { TranslationKey } from '../../../translations';\nimport cx from 'classnames';\nimport { PropsWithChildren } from 'preact/compat';\nimport { getErrorMessage } from '../../utils/getErrorMessage';\nimport AdyenPlatformExperienceError from '../../../core/Errors/AdyenPlatformExperienceError';\n\ntype DataOverviewContainerProps = PropsWithChildren<{\n    balanceAccountsError?: Error;\n    className: string;\n    errorMessage: TranslationKey;\n    isBalanceAccountIdWrong: boolean;\n    onContactSupport?: () => void;\n}>;\n\nfunction DataOverviewContainer({\n    balanceAccountsError,\n    children,\n    className,\n    errorMessage,\n    isBalanceAccountIdWrong,\n    onContactSupport,\n}: DataOverviewContainerProps) {\n    const { hasError } = useConfigContext();\n\n    // TODO: Verify if WITH_ERROR_CLASS should appended only for session setup error\n    return (\n        <div className={cx(className, { [WITH_ERROR_CLASS]: hasError })}>\n            {hasError ? (\n                <ErrorMessageDisplay\n                    withImage\n                    centered\n                    title={'somethingWentWrong'}\n                    message={[errorMessage, 'tryRefreshingThePageOrComeBackLater']}\n                    refreshComponent={true}\n                />\n            ) : balanceAccountsError ? (\n                <ErrorMessageDisplay\n                    withImage\n                    centered\n                    {...getErrorMessage(balanceAccountsError as AdyenPlatformExperienceError, 'weCouldNotLoadYourBalanceAccounts', onContactSupport)}\n                />\n            ) : isBalanceAccountIdWrong ? (\n                <ErrorMessageDisplay\n                    withImage\n                    centered\n                    title={'somethingWentWrong'}\n                    message={[errorMessage, 'theSelectedBalanceAccountIsIncorrect']}\n                />\n            ) : (\n                <>{children}</>\n            )}\n        </div>\n    );\n}\n\nexport default DataOverviewContainer;\n","export const BASE_CLASS = 'adyen-pe-payouts-overview';\nexport const BASE_CLASS_DETAILS = 'adyen-pe-payouts-details';\nexport const EARLIEST_PAYOUT_SINCE_DATE = new Date('2024-04-16T00:00:00.000Z').toString();\n","import cx from 'classnames';\nimport Button from '../Button';\nimport Icon from '../Icon';\nimport { isFunction } from '../../../utils';\nimport { ButtonVariant } from '../Button/types';\nimport { PropsWithChildren } from 'preact/compat';\nimport { useEffect, useState } from 'preact/hooks';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport { containerQueries, useResponsiveContainer } from '../../../hooks/useResponsiveContainer';\nimport type { FilterBarMobileSwitchProps, FilterBarProps } from './types';\nimport './FilterBar.scss';\n\nconst MOBILE_SWITCH_CLASS = 'adyen-pe-filter-bar-mobile-switch';\n\nexport const useFilterBarState = () => {\n    const isMobileContainer = useResponsiveContainer(containerQueries.down.xs);\n    const [showingFilters, setShowingFilters] = useState(!isMobileContainer);\n    useEffect(() => {\n        setShowingFilters(!isMobileContainer);\n    }, [isMobileContainer]);\n\n    return { isMobileContainer, showingFilters, setShowingFilters } as const;\n};\n\nexport const FilterBarMobileSwitch = ({ isMobileContainer, showingFilters, setShowingFilters }: FilterBarMobileSwitchProps) => {\n    return isMobileContainer ? (\n        <div className={MOBILE_SWITCH_CLASS}>\n            <Button\n                iconButton\n                className={`${MOBILE_SWITCH_CLASS}__button`}\n                disabled={!isFunction(setShowingFilters)}\n                onClick={() => setShowingFilters?.(!showingFilters)}\n                variant={ButtonVariant.SECONDARY}\n            >\n                <Icon name={showingFilters ? 'cross' : 'filter'} />\n            </Button>\n        </div>\n    ) : null;\n};\n\nexport const FilterBar = (props: PropsWithChildren<FilterBarProps>) => {\n    const { i18n } = useCoreContext();\n    return props.showingFilters ? (\n        <div\n            aria-label={i18n.get('filterBar')}\n            className={cx('adyen-pe-filter-bar', { 'adyen-pe-filter-bar__content--mobile': props.isMobileContainer })}\n        >\n            {props.children}\n            {props.canResetFilters && !!props.resetFilters && (\n                <Button variant={ButtonVariant.TERTIARY} onClick={props.resetFilters}>\n                    {i18n.get('button.clearAll')}\n                </Button>\n            )}\n        </div>\n    ) : null;\n};\n\nexport default FilterBar;\n","import useBalanceAccountSelection from '../../../../../hooks/useBalanceAccountSelection';\nimport { memo } from 'preact/compat';\nimport { useCallback } from 'preact/hooks';\nimport Select from '../../Select';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { containerQueries, useResponsiveContainer } from '../../../../../hooks/useResponsiveContainer';\nimport { renderDefaultSingleSelectionCheckedness } from '../components/SelectListItem';\nimport { SelectItem, SelectProps } from '../types';\nimport './BalanceAccountSelector.scss';\n\ntype _GetRenderListItemType<T> = T extends Readonly<SelectItem[]> ? NonNullable<SelectProps<T[number]>['renderListItem']> : never;\n\nconst BA_SELECTOR_CLASS = 'adyen-pe-balance-account-selector';\nconst BA_SELECTOR_ACCOUNT_ID_CLASS = `${BA_SELECTOR_CLASS}__account-id` as const;\nconst BA_SELECTOR_ACCOUNT_LABEL_CLASS = `${BA_SELECTOR_CLASS}__account-label` as const;\n\nconst BalanceAccountSelector = memo(\n    ({\n        activeBalanceAccount,\n        balanceAccountSelectionOptions,\n        onBalanceAccountSelection,\n    }: Omit<ReturnType<typeof useBalanceAccountSelection>, 'resetBalanceAccountSelection'>) => {\n        const isSmContainer = useResponsiveContainer(containerQueries.down.xs);\n        const { i18n } = useCoreContext();\n\n        const renderListItem = useCallback<_GetRenderListItemType<typeof balanceAccountSelectionOptions>>(\n            data => (\n                <>\n                    <div className={data.contentClassName}>\n                        {data.item.name && <span className={BA_SELECTOR_ACCOUNT_LABEL_CLASS}>{data.item.name}</span>}\n                        <span className={data.item.name ? BA_SELECTOR_ACCOUNT_ID_CLASS : BA_SELECTOR_ACCOUNT_LABEL_CLASS}>{data.item.id}</span>\n                    </div>\n                    {renderDefaultSingleSelectionCheckedness(data)}\n                </>\n            ),\n            []\n        );\n\n        return balanceAccountSelectionOptions && balanceAccountSelectionOptions.length > 1 ? (\n            <Select\n                popoverClassNameModifiers={[BA_SELECTOR_CLASS]}\n                onChange={onBalanceAccountSelection}\n                filterable={false}\n                multiSelect={false}\n                placeholder={activeBalanceAccount?.id || i18n.get('balanceAccount')}\n                selected={activeBalanceAccount?.id}\n                withoutCollapseIndicator={true}\n                items={balanceAccountSelectionOptions}\n                renderListItem={renderListItem}\n                showOverlay={isSmContainer}\n            />\n        ) : null;\n    }\n);\n\nexport default BalanceAccountSelector;\n","export const LIMIT_OPTIONS = Object.freeze([10, 20]);\nexport const MAX_PAGE_LIMIT = 100;\nexport const DEFAULT_PAGE_LIMIT = 10;\n","import { MAX_PAGE_LIMIT } from './constants';\n\nexport const getClampedPageLimit = (pageLimit?: number) => {\n    const limit = ~~(pageLimit as number);\n    return limit === pageLimit && limit > 0 ? Math.min(limit, MAX_PAGE_LIMIT) : Math.max(limit, 0);\n};\n","import { useMemo, useRef } from 'preact/hooks';\nimport { DEFAULT_PAGE_LIMIT } from '../constants';\nimport { getClampedPageLimit } from '../utils';\nimport { isNumber, mid } from '../../../../utils';\nimport { BasePaginatedRecordsInitOptions } from './types';\n\nexport const getNearestFromSortedUniqueNums = (nums: number[], target: number): number => {\n    const lastindex = nums.length - 1;\n\n    if (lastindex < 0) return target;\n    if (target <= (nums[0] as number)) return nums[0] as number;\n    if (target >= (nums[lastindex] as number)) return nums[lastindex] as number;\n\n    let index = 0,\n        lo = 0,\n        hi = lastindex;\n\n    while (true) {\n        const current = nums[(index = mid(lo, hi))] as number;\n        if (lo > hi || target === current) return current;\n        target > current ? (lo = index + 1) : (hi = index - 1);\n    }\n};\n\nconst usePageLimit = ({\n    preferredLimit = DEFAULT_PAGE_LIMIT,\n    preferredLimitOptions,\n}: Pick<BasePaginatedRecordsInitOptions<any, any, any, any>, 'preferredLimit' | 'preferredLimitOptions'>) => {\n    const cachedLimitOptions = useRef<readonly number[]>();\n    const cachedLimit = useRef<number>();\n\n    const options = useMemo(() => {\n        try {\n            const uniqueOptions = new Set<number>();\n\n            for (const option of preferredLimitOptions as number[]) {\n                const limit = getClampedPageLimit(option);\n                if (limit > 0) uniqueOptions.add(limit);\n            }\n\n            return Object.freeze([...uniqueOptions].sort((a, b) => a - b));\n        } catch {\n            /* ignore exception — no options available */\n        }\n    }, [preferredLimitOptions]);\n\n    const limit = useMemo(() => {\n        let limit = getClampedPageLimit(preferredLimit) || DEFAULT_PAGE_LIMIT;\n\n        parsing: try {\n            if (cachedLimitOptions.current === options) break parsing;\n\n            const uniqueOptions = new Set((cachedLimitOptions.current = options));\n\n            if (uniqueOptions.size === 0) {\n                cachedLimitOptions.current = undefined;\n                break parsing;\n            }\n\n            if (cachedLimit.current !== limit) {\n                selection: {\n                    if (uniqueOptions.size === uniqueOptions.add(limit).size) {\n                        break selection;\n                    } else uniqueOptions.delete(limit);\n\n                    if (uniqueOptions.size === uniqueOptions.add(cachedLimit.current as number).size) {\n                        if (isNumber(cachedLimit.current)) {\n                            limit = cachedLimit.current;\n                            break selection;\n                        }\n                    } else uniqueOptions.delete(cachedLimit.current as number);\n\n                    // limit = cachedLimitOptions.current?.[0] as number;\n                    limit = getNearestFromSortedUniqueNums(cachedLimitOptions.current as number[], limit);\n                }\n            }\n        } catch {\n            /* ignore exception here — there are no options */\n        }\n\n        return (cachedLimit.current = limit);\n    }, [options, preferredLimit]);\n\n    return { limit, limitOptions: options } as const;\n};\n\nexport default usePageLimit;\n","import { useEffect, useMemo, useRef } from 'preact/hooks';\n\nconst useMounted = <U extends (...args: any[]) => any>(beforeUnmount?: U) => {\n    const $mounted = useRef(false);\n    const unmount = useMemo(() => beforeUnmount, [beforeUnmount]);\n\n    useEffect(() => {\n        $mounted.current = true;\n\n        return () => {\n            $mounted.current = false;\n            unmount && unmount();\n        };\n    }, [unmount]);\n\n    return $mounted;\n};\n\nexport default useMounted;\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { RequestPageCallback, RequestPageCallbackParams, UsePaginationSetupConfig } from './types';\nimport useBooleanState from '../../../../hooks/useBooleanState';\nimport useMounted from '../../../../hooks/useMounted';\nimport { PaginationType, UsePagination } from '../types';\nimport { getClampedPageLimit } from '../utils';\nimport { noop } from '../../../../utils';\n\nconst usePagination = <Pagination extends PaginationType>(\n    paginationSetupConfig: UsePaginationSetupConfig<Pagination>,\n    requestPageCallback?: RequestPageCallback<Pagination>,\n    pageLimit?: number\n): UsePagination => {\n    const $controller = useRef<AbortController>();\n    const $maxVisitedPage = useRef<number>();\n    const $maxVisitedPageSize = useRef<number>();\n    const $page = useRef<number>();\n\n    const $mounted = useMounted(\n        useCallback(() => {\n            $controller.current?.abort();\n            $controller.current = undefined;\n        }, [])\n    );\n\n    const [page, setCurrentPage] = useState($page.current);\n    const [paginationChanged, updatePaginationChanged] = useBooleanState(false);\n    const limit = useMemo(() => getClampedPageLimit(pageLimit), [pageLimit]);\n\n    const { getPageCount, getPageParams, resetPageCount, updatePagination } = paginationSetupConfig;\n\n    const goto = useMemo(() => {\n        return requestPageCallback\n            ? (page: number) => {\n                  if (!(limit && Number.isInteger(page))) return;\n\n                  const PAGES = getPageCount();\n                  const requestedPage = page < 0 ? page + PAGES + 1 : page;\n                  const isValidPageRequest = requestedPage > 0 && (PAGES ? requestedPage <= PAGES : requestedPage === 1);\n\n                  if (!isValidPageRequest) return;\n\n                  $controller.current?.abort();\n                  $controller.current = new AbortController();\n\n                  if (!$mounted.current) return;\n\n                  if (($page.current = requestedPage) > 1 || PAGES) {\n                      setCurrentPage($page.current);\n                  }\n\n                  (async () => {\n                      const { signal } = $controller.current as AbortController;\n                      const params = { ...getPageParams(requestedPage, limit), limit, page: requestedPage } as RequestPageCallbackParams<Pagination>;\n\n                      try {\n                          const data = await requestPageCallback(params, signal);\n                          if (!data || !$mounted.current) return;\n\n                          const { size, ...paginationData } = data;\n\n                          updatePagination(requestedPage, limit, paginationData);\n                          $maxVisitedPage.current = $page.current && Math.max($page.current, $maxVisitedPage.current || -Infinity);\n\n                          if ($page.current && $page.current === $maxVisitedPage.current) $maxVisitedPageSize.current = size;\n                          if ($page.current === 1 && size > 0) setCurrentPage($page.current);\n\n                          $page.current = undefined;\n                          updatePaginationChanged(true);\n                      } catch (ex) {\n                          if (signal.aborted) return;\n                          console.error(ex); // throw ex;\n                      }\n                  })();\n              }\n            : (noop as UsePagination['goto']);\n    }, [limit, requestPageCallback]);\n\n    const next = useCallback(() => {\n        page && goto(Math.min(page + 1, getPageCount()));\n    }, [goto, page]);\n\n    const prev = useCallback(() => {\n        page && goto(Math.max(page - 1, 1));\n    }, [goto, page]);\n\n    const pages = useMemo(() => getPageCount() || page || undefined, [goto, paginationChanged]);\n    const hasNext = useMemo(() => !!(page && pages) && page < pages, [page, pages]);\n    const hasPrev = useMemo(() => !!page && page > 1, [page]);\n\n    const size = useMemo(\n        () => ($maxVisitedPage.current ? ($maxVisitedPage.current - 1) * limit + ($maxVisitedPageSize.current || 0) : 0),\n        [goto, paginationChanged]\n    );\n\n    const pageSize = useMemo(() => limit && Math.min(limit, size || Infinity) % limit, [limit, size]);\n\n    const resetPagination = useCallback(() => {\n        resetPageCount();\n        $maxVisitedPage.current = $maxVisitedPageSize.current = $page.current = undefined;\n        $mounted.current && setCurrentPage($page.current);\n    }, [resetPageCount]);\n\n    useEffect(() => {\n        if ($mounted.current && paginationChanged) {\n            updatePaginationChanged(false);\n        }\n    }, [paginationChanged]);\n\n    return { goto, hasNext, hasPrev, limit, next, page, pages, pageSize, prev, resetPagination, size };\n};\n\nexport default usePagination;\n","import { useMemo } from 'preact/hooks';\nimport { isString, isUndefined } from '../../../../utils';\nimport { RequestPageCallback, RequestPageCallbackParams } from './types';\nimport { PaginationType, UsePagination, WithEitherPages, WithNextPage, WithPrevPage } from '../types';\nimport usePagination from './usePagination';\n\ntype HasEitherPages = WithEitherPages<PaginationType.CURSOR>;\ntype HasNextPage = WithNextPage<PaginationType.CURSOR>;\ntype HasPrevPage = WithPrevPage<PaginationType.CURSOR>;\ntype PageCursorType = RequestPageCallbackParams<PaginationType.CURSOR>['cursor'];\n\nexport const hasNextPage = (value: HasEitherPages): value is HasNextPage => isString((value as HasNextPage).next);\nexport const hasPrevPage = (value: HasEitherPages): value is HasPrevPage => isString((value as HasPrevPage).prev);\n\nconst useCursorPagination = (requestPageCallback?: RequestPageCallback<PaginationType.CURSOR>, pageLimit?: number): UsePagination => {\n    const paginationSetupConfig = useMemo(() => {\n        const cursors: PageCursorType[] = [];\n        const getPageCount = () => cursors.length;\n        const resetPageCount = () => {\n            cursors.length = 0;\n        };\n        const getPageParams = (page: number) => ({ cursor: cursors[page - 1] });\n\n        const updateCursor = (cursor: PageCursorType, page: number) => {\n            const currentCursor = cursors[page - 1];\n\n            if ((page === 1 || page === (cursors.length || 1) + 1) && isUndefined(currentCursor)) {\n                cursors[page - 1] = cursor ? decodeURIComponent(cursor) : undefined;\n            }\n        };\n\n        const updatePagination = (page: number, limit: number, paginationData: HasEitherPages) => {\n            if (hasNextPage(paginationData)) updateCursor(paginationData.next, page + 1);\n            if (hasPrevPage(paginationData)) updateCursor(paginationData.prev, page - 1);\n        };\n\n        return { getPageCount, getPageParams, resetPageCount, updatePagination };\n    }, []);\n\n    return usePagination<PaginationType.CURSOR>(paginationSetupConfig, requestPageCallback, pageLimit);\n};\n\nexport default useCursorPagination;\n","import { useMemo } from 'preact/hooks';\nimport { RequestPageCallback } from './types';\nimport { PaginationType, UsePagination, WithEitherPages, WithNextPage } from '../types';\nimport usePagination from './usePagination';\n\nexport type HasEitherPages = WithEitherPages<PaginationType.OFFSET>;\nexport type HasNextPage = WithNextPage<PaginationType.OFFSET>;\nexport const hasNextPage = (value: HasEitherPages): value is HasNextPage => (value as HasNextPage).next;\n\nconst useOffsetPagination = (requestPageCallback?: RequestPageCallback<PaginationType.OFFSET>, pageLimit?: number): UsePagination => {\n    const paginationSetupConfig = useMemo(() => {\n        let currentPage = 0;\n        const getPageCount = () => currentPage;\n        const resetPageCount = () => {\n            currentPage = 0;\n        };\n        const getPageParams = (page: number, limit: number) => ({ offset: (page - 1) * limit });\n\n        const updatePagination = (page: number, limit: number, paginationData: HasEitherPages) => {\n            if (hasNextPage(paginationData) && paginationData.next) {\n                currentPage = Math.max(currentPage, page + 1);\n            }\n        };\n\n        return { getPageCount, getPageParams, resetPageCount, updatePagination };\n    }, []);\n\n    return usePagination<PaginationType.OFFSET>(paginationSetupConfig, requestPageCallback, pageLimit);\n};\n\nexport default useOffsetPagination;\n","import { useEffect, useMemo, useReducer, useRef } from 'preact/hooks';\nimport { EMPTY_OBJECT } from '../../utils';\nimport useMounted from '../useMounted';\nimport { ReactiveStateRecord, ReactiveStateUpdateRequest, ReactiveStateUpdateRequestWithField, UseReactiveStateRecord } from './types';\n\nconst useReactiveState = <Value, Param extends string>(\n    params: ReactiveStateRecord<Value, Param> = EMPTY_OBJECT as ReactiveStateRecord<Value, Param>,\n    initialStateSameAsDefault = true\n): UseReactiveStateRecord<Value, Param> => {\n    const $hasDefaultState = useRef(initialStateSameAsDefault);\n    const $defaultState = useRef(Object.freeze({ ...params }) as ReactiveStateRecord<Value, Param>);\n    const $stateParams = useRef(new Set(Object.keys($defaultState.current) as Param[]));\n    const $changedParams = useRef(new Set<Param>());\n    const $mounted = useMounted();\n\n    const [resetState, updateState] = useMemo(() => {\n        const requestStateUpdate = (stateUpdateRequest: ReactiveStateUpdateRequest<Value, Param>) => {\n            if (!$mounted.current) return;\n            dispatch(stateUpdateRequest);\n        };\n\n        return [\n            () => requestStateUpdate('reset'),\n            (stateUpdateRequest: ReactiveStateUpdateRequestWithField<Value, Param>) => requestStateUpdate(stateUpdateRequest),\n        ];\n    }, [$mounted]);\n\n    const [state, dispatch] = useReducer((state, stateUpdateRequest: ReactiveStateUpdateRequest<Value, Param>) => {\n        if (stateUpdateRequest === 'reset') {\n            $changedParams.current.clear();\n            return $defaultState.current;\n        }\n\n        const stateUpdate = { ...stateUpdateRequest } as ReactiveStateRecord<Value, Param>;\n        const stateUpdateFlags = [0];\n\n        (Object.keys(stateUpdate) as Param[]).forEach((key, index) => {\n            if (!$stateParams.current.has(key)) return;\n\n            const currentValue = state[key] ?? undefined;\n            const defaultValue = $defaultState.current[key] ?? undefined;\n            const updateValue = stateUpdate[key] ?? defaultValue;\n\n            if (updateValue === currentValue) return;\n\n            const flagIndex = Math.floor(index / 32);\n            const updateFlag = 1 << index % 32;\n\n            stateUpdate[key] = updateValue;\n            stateUpdateFlags[flagIndex] |= updateFlag;\n            $changedParams.current[updateValue === defaultValue ? 'delete' : 'add'](key);\n        });\n\n        const STATE = stateUpdateFlags.some(flag => flag)\n            ? $hasDefaultState.current && $changedParams.current.size === 0\n                ? $defaultState.current\n                : Object.freeze({ ...state, ...stateUpdate })\n            : state;\n\n        if (!$hasDefaultState.current) {\n            // Mark as having default state on the first \"non-reset\" state update request,\n            // whether it results in a state update or not.\n            $defaultState.current = STATE;\n            $hasDefaultState.current = true;\n        }\n\n        return STATE;\n    }, $defaultState.current);\n\n    const canResetState = useMemo(() => !!$changedParams.current.size, []);\n\n    useEffect(() => {\n        $defaultState.current = Object.freeze({ ...params }) as ReactiveStateRecord<Value, Param>;\n        $stateParams.current = new Set(Object.keys($defaultState.current) as Param[]);\n        $hasDefaultState.current = initialStateSameAsDefault;\n        resetState();\n    }, [initialStateSameAsDefault, params, resetState]);\n    return { canResetState, defaultState: $defaultState.current, resetState, state, updateState };\n};\n\nexport default useReactiveState;\n","import { EMPTY_OBJECT } from '../../../../utils';\nimport { UsePaginatedRecordsFilters } from './types';\nimport useReactiveState from '../../../../hooks/useReactiveState';\nimport { ReactiveStateRecord } from '../../../../hooks/useReactiveState/types';\n\nconst usePaginatedRecordsFilters = <FilterValue, FilterParam extends string>(\n    filterParams: ReactiveStateRecord<FilterValue, FilterParam> = EMPTY_OBJECT as ReactiveStateRecord<FilterValue, FilterParam>,\n    initialFiltersSameAsDefault?: boolean\n): UsePaginatedRecordsFilters<FilterValue, FilterParam> => {\n    const {\n        canResetState: canResetFilters,\n        defaultState: defaultFilters,\n        resetState: resetFilters,\n        state: filters,\n        updateState: updateFilters,\n    } = useReactiveState<FilterValue, FilterParam>(filterParams, initialFiltersSameAsDefault);\n\n    return { canResetFilters, defaultFilters, filters, resetFilters, updateFilters };\n};\n\nexport default usePaginatedRecordsFilters;\n","import { UseReactiveStateRecord } from '../../../hooks/useReactiveState/types';\n\nexport const enum PageNeighbour {\n    NEXT = 'next',\n    PREV = 'prev',\n}\n\nexport const enum PaginationType {\n    CURSOR = 'cursor',\n    OFFSET = 'offset',\n}\n\nexport type ForPaginationType<T extends PaginationType, CursorType, OffsetType> = T extends PaginationType.CURSOR\n    ? CursorType\n    : T extends PaginationType.OFFSET\n    ? OffsetType\n    : never;\n\ntype BothPageNeighbours<T = any> = { [P in PageNeighbour]: T };\ntype NextPageNeighbour<T = any> = Omit<BothPageNeighbours<T>, PageNeighbour.PREV>;\ntype PrevPageNeighbour<T = any> = Omit<BothPageNeighbours<T>, PageNeighbour.NEXT>;\n\ntype WithNextPageNeighbour<T = any> = BothPageNeighbours<T> | NextPageNeighbour<T>;\ntype WithPrevPageNeighbour<T = any> = BothPageNeighbours<T> | PrevPageNeighbour<T>;\ntype WithPageNeighbours<T = any> = WithNextPageNeighbour<T> | WithPrevPageNeighbour<T>;\n\ntype WhichPageNeighbour<T extends PaginationType> = ForPaginationType<T, string, boolean>;\n\nexport type WithEitherPages<T extends PaginationType> = WithPageNeighbours<WhichPageNeighbour<T>>;\nexport type WithNextPage<T extends PaginationType> = WithNextPageNeighbour<WhichPageNeighbour<T>>;\nexport type WithPrevPage<T extends PaginationType> = WithPrevPageNeighbour<WhichPageNeighbour<T>>;\n\nexport type WithPaginationCursor<T extends Record<any, any> = {}> = T & { cursor?: string };\nexport type WithPaginationLimit<T extends Record<any, any> = {}> = T & { limit?: number };\nexport type WithPaginationOffset<T extends Record<any, any> = {}> = T & { offset: number };\nexport type WithPaginationRecordSize<T extends Record<any, any> = {}> = T & { size?: number };\n\nexport type WithPaginationLimitSelection<T extends Record<any, any> = {}> = T & {\n    limitOptions?: readonly number[];\n    onLimitSelection?: (limit: number) => void;\n};\n\nexport type PaginatedResponseDataKeyword = 'hasNext' | 'hasPrevious' | '_links';\nexport type PaginatedResponseDataField<DataField extends string> = Exclude<DataField | PaginatedResponseDataKeyword, PaginatedResponseDataKeyword>;\n\nexport type BasePaginatedResponseData<T = any, DataField extends string = 'data'> = {\n    [K in PaginatedResponseDataField<DataField>]?: T[];\n};\n\nexport type PaginatedResponseDataWithLinks<T = any, DataField extends string = 'data'> = BasePaginatedResponseData<T, DataField> & {\n    _links: {\n        [K in PageNeighbour]?: { cursor: string };\n    };\n};\n\nexport type PaginatedResponseDataWithoutLinks<T = any, DataField extends string = 'data'> = BasePaginatedResponseData<T, DataField> & {\n    hasNext?: boolean;\n    hasPrevious?: boolean;\n};\n\nexport type PaginatedResponseData<T = any, DataField extends string = 'data'> =\n    | PaginatedResponseDataWithLinks<T, DataField>\n    | PaginatedResponseDataWithoutLinks<T, DataField>;\n\nexport interface UseFilters<S extends UseReactiveStateRecord> {\n    canResetFilters: S['canResetState'];\n    defaultFilters: S['defaultState'];\n    filters: S['state'];\n    resetFilters: S['resetState'];\n    updateFilters: S['updateState'];\n}\n\nexport interface UsePagination extends Required<WithPaginationLimit>, WithPaginationRecordSize {\n    goto: (page: number) => void;\n    hasNext: boolean;\n    hasPrev: boolean;\n    next: () => void;\n    page: number | undefined;\n    pages: number | undefined;\n    pageSize: number | undefined;\n    prev: () => void;\n    resetPagination: () => void;\n}\n\nexport type PaginationProps = WithPaginationLimitSelection<Omit<UsePagination, 'goto' | 'resetPagination'> & Partial<Pick<UsePagination, 'goto'>>>;\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { boolOrFalse, EMPTY_OBJECT } from '../../../../utils';\nimport {\n    BasePaginatedRecordsInitOptions,\n    PaginatedRecordsFetcherReturnValue,\n    RequestPageCallback,\n    RequestPageCallbackParams,\n    RequestPageCallbackReturnValue,\n    UsePaginatedRecords,\n} from './types';\nimport usePageLimit from './usePageLimit';\nimport useCursorPagination from './useCursorPagination';\nimport useOffsetPagination from './useOffsetPagination';\nimport usePaginatedRecordsFilters from './usePaginatedRecordsFilters';\nimport useBooleanState from '../../../../hooks/useBooleanState';\nimport useMounted from '../../../../hooks/useMounted';\nimport {\n    PageNeighbour,\n    PaginatedResponseData,\n    PaginatedResponseDataField,\n    PaginatedResponseDataWithLinks,\n    PaginationType,\n    WithEitherPages,\n} from '../types';\nimport AdyenPlatformExperienceError from '../../../../core/Errors/AdyenPlatformExperienceError';\nimport { ReactiveStateRecord } from '../../../../hooks/useReactiveState/types';\n\nconst offsetPaginatedResponseFields = ['hasNext', 'hasPrevious'] as const;\n\nconst isCursorPaginatedResponseData = <T, DataField extends string>(\n    data: PaginatedResponseData<T, DataField>\n): data is PaginatedResponseDataWithLinks<T, DataField> => {\n    const dataProperties = Object.getOwnPropertyNames(data as PaginatedResponseDataWithLinks<T, DataField>);\n    return !offsetPaginatedResponseFields.some(prop => dataProperties.includes(prop));\n};\n\nconst parseCursorPaginatedResponseData = <T, DataField extends string>(\n    data: PaginatedResponseData<T, DataField>,\n    dataField: PaginatedResponseDataField<DataField> = 'data' as PaginatedResponseDataField<DataField>\n) => {\n    const records = data[dataField] as T[];\n\n    if (isCursorPaginatedResponseData<T, DataField>(data)) {\n        const paginationData = Object.fromEntries(\n            Object.entries(data._links).map(([key, value]) => [key, value.cursor])\n        ) as WithEitherPages<PaginationType.CURSOR>;\n\n        return { records, paginationData };\n    }\n\n    throw new TypeError('MALFORMED_PAGINATED_DATA');\n};\n\nconst parseOffsetPaginatedResponseData = <T, DataField extends string>(\n    data: PaginatedResponseData<T, DataField>,\n    dataField: PaginatedResponseDataField<DataField> = 'data' as PaginatedResponseDataField<DataField>\n) => {\n    const records = data[dataField] as T[];\n\n    if (!isCursorPaginatedResponseData<T, DataField>(data)) {\n        const { hasNext, hasPrevious } = data;\n\n        const paginationData = {\n            [PageNeighbour.NEXT]: boolOrFalse(hasNext),\n            [PageNeighbour.PREV]: boolOrFalse(hasPrevious),\n        } as WithEitherPages<PaginationType.OFFSET>;\n\n        return { records, paginationData };\n    }\n\n    throw new TypeError('MALFORMED_PAGINATED_DATA');\n};\n\nconst usePaginatedRecords = <T, DataField extends string, FilterValue extends string, FilterParam extends string>({\n    dataField = 'data' as PaginatedResponseDataField<DataField>,\n    fetchRecords,\n    filterParams = EMPTY_OBJECT as ReactiveStateRecord<FilterValue, FilterParam>,\n    initialFiltersSameAsDefault = true,\n    initialize,\n    onFiltersChanged,\n    pagination,\n    preferredLimit,\n    preferredLimitOptions,\n    enabled,\n}: BasePaginatedRecordsInitOptions<T, DataField, FilterValue, FilterParam>): UsePaginatedRecords<T, FilterValue, FilterParam> => {\n    const [records, setRecords] = useState<T[]>([]);\n    const [fetching, updateFetching] = useBooleanState(true);\n    const [error, setError] = useState<AdyenPlatformExperienceError>();\n    const [preferredPageLimit, setPreferredPageLimit] = useState(preferredLimit);\n\n    const $mounted = useMounted();\n    const $initialFetchInProgress = useRef(true);\n    const $lastRequestedPage = useRef(1);\n    const $recordsFilters = usePaginatedRecordsFilters<FilterValue, FilterParam>(filterParams, initialFiltersSameAsDefault);\n\n    const { limit, limitOptions } = usePageLimit({ preferredLimit: preferredPageLimit, preferredLimitOptions });\n    const { defaultFilters, filters, updateFilters, ...filtersProps } = $recordsFilters;\n\n    const [parsePaginatedResponseData, usePagination] = useMemo(\n        () =>\n            pagination === PaginationType.CURSOR\n                ? [parseCursorPaginatedResponseData, useCursorPagination]\n                : [parseOffsetPaginatedResponseData, useOffsetPagination],\n        []\n    );\n\n    const updateLimit = useCallback((limit: number) => setPreferredPageLimit(limit), []);\n\n    const { goto, page, pages, resetPagination, ...paginationProps } = usePagination(\n        useCallback(\n            async (\n                { page, ...pageRequestParams }: RequestPageCallbackParams<PaginationType>,\n                signal?: AbortSignal\n            ): Promise<RequestPageCallbackReturnValue<PaginationType>> => {\n                try {\n                    setError(undefined);\n                    $lastRequestedPage.current = page;\n\n                    if (!$mounted.current || <undefined>updateFetching(true)) return;\n\n                    const res = await fetchRecords({ ...pageRequestParams, ...filters }, signal);\n                    const { records, paginationData } = parsePaginatedResponseData<T, DataField>(res, dataField);\n\n                    if ($initialFetchInProgress.current) {\n                        initialize?.([records, paginationData] as PaginatedRecordsFetcherReturnValue<PaginationType, T>, $recordsFilters);\n                        $initialFetchInProgress.current = false;\n                    }\n\n                    if ($mounted.current) {\n                        setRecords(records);\n                        updateFetching(false);\n                    }\n\n                    return { ...paginationData, size: records?.length };\n                } catch (err) {\n                    // TODO - Handle signal abortion and updateFetching\n                    if (signal?.aborted) return;\n                    updateFetching(false);\n                    setError(err as AdyenPlatformExperienceError);\n\n                    console.error(err);\n                }\n            },\n            [fetchRecords, filters, limit]\n        ) as RequestPageCallback<PaginationType>,\n        limit\n    );\n\n    useMemo(() => {\n        $initialFetchInProgress.current = true;\n        /* eslint-disable-next-line */\n    }, [filterParams]);\n\n    useMemo(() => {\n        resetPagination();\n        $lastRequestedPage.current = 1;\n        /* eslint-disable-next-line */\n    }, [filters, limit, resetPagination]);\n\n    useEffect(() => {\n        if (enabled) goto($lastRequestedPage.current);\n    }, [goto, enabled]);\n\n    useEffect(() => {\n        onFiltersChanged?.(filters);\n    }, [filters]);\n\n    return { error, fetching, filters, goto, limitOptions, page, pages, records, updateFilters, updateLimit, ...filtersProps, ...paginationProps };\n};\n\nexport default usePaginatedRecords;\n","import { PaginatedRecordsInitOptions, UsePaginatedRecords } from './types';\nimport usePaginatedRecords from './usePaginatedRecords';\nimport { PaginationType } from '../types';\n\nconst useCursorPaginatedRecords = <T, DataField extends string, FilterValue extends string, FilterParam extends string>(\n    initOptions: PaginatedRecordsInitOptions<T, DataField, FilterValue, FilterParam>\n): UsePaginatedRecords<T, FilterValue, FilterParam> => {\n    return usePaginatedRecords<T, DataField, FilterValue, FilterParam>({\n        ...initOptions,\n        pagination: PaginationType.CURSOR,\n    });\n};\n\nexport default useCursorPaginatedRecords;\n","import { capitalize } from '../utils';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport type { SelectItem } from '../components/internal/FormFields/Select/types';\nimport type { IBalanceAccountBase } from '../types';\n\nconst useBalanceAccountSelection = (balanceAccounts?: IBalanceAccountBase[]) => {\n    const [selectedBalanceAccountIndex, setSelectedBalanceAccountIndex] = useState(0);\n    const resetBalanceAccountSelection = useCallback(() => setSelectedBalanceAccountIndex(0), [setSelectedBalanceAccountIndex]);\n\n    const activeBalanceAccount = useMemo(() => {\n        return balanceAccounts?.[selectedBalanceAccountIndex];\n    }, [balanceAccounts, selectedBalanceAccountIndex]);\n\n    const balanceAccountSelectionOptions = useMemo(\n        () =>\n            balanceAccounts && balanceAccounts.length > 1\n                ? Object.freeze(balanceAccounts.map(({ description, id }) => ({ id, name: capitalize(description) } as SelectItem)))\n                : undefined,\n        [balanceAccounts]\n    );\n\n    const onBalanceAccountSelection = useCallback(\n        ({ target }: any) => {\n            const balanceAccountId = target?.value;\n            const index = balanceAccounts?.findIndex(({ id }) => id === balanceAccountId);\n            if (index! >= 0) setSelectedBalanceAccountIndex(index!);\n        },\n        [balanceAccounts, setSelectedBalanceAccountIndex]\n    );\n\n    return { activeBalanceAccount, balanceAccountSelectionOptions, onBalanceAccountSelection, resetBalanceAccountSelection } as const;\n};\n\nexport default useBalanceAccountSelection;\n","import { useMemo, useRef, useState } from 'preact/hooks';\nimport restamper, { RestampContext } from '../../../../core/Localization/datetime/restamper';\nimport { getGMTSuffixForTimezoneOffset, getTimezoneOffsetFromFormattedDateString } from '../../../../core/Localization/datetime/restamper/utils';\nimport { isWatchlistUnsubscribeToken } from '../../../../primitives/reactive/watchlist';\nimport { boolOrFalse, EMPTY_ARRAY, EMPTY_OBJECT, noop } from '../../../../utils';\nimport clock from '../../../../primitives/time/clock';\n\nexport type UseTimezoneConfig = {\n    timezone?: RestampContext['TIMEZONE'];\n    withClock?: boolean;\n};\n\nexport const { getTimezoneTime, getUsedTimezone } = (() => {\n    const REGEX_CLOCK_TIME_MATCHER = /\\d{2}:\\d{2}(?=:\\d{2}(?:\\.\\d+)?\\s+([AP]M))/i;\n    const REGEX_GMT_OFFSET_UNWANTED_SUBSTRINGS = /^GMT|0(?=\\d:00)|:00/g;\n    const $restamper = restamper();\n\n    const getTimezoneTime = (timezone: RestampContext['TIMEZONE'], timestamp = Date.now()) => {\n        $restamper.tz = timezone!; // switch restamper to this timezone\n\n        const { formatted } = $restamper(timestamp);\n        const [time = '', meridian = ''] = formatted?.match(REGEX_CLOCK_TIME_MATCHER) ?? EMPTY_ARRAY;\n        const offset = getTimezoneOffsetFromFormattedDateString(formatted);\n        const clockTime = `${time}${meridian && ` ${meridian}`}`;\n        const GMTOffsetString = getGMTSuffixForTimezoneOffset(offset).replace(REGEX_GMT_OFFSET_UNWANTED_SUBSTRINGS, '');\n\n        return [clockTime, GMTOffsetString] as const;\n    };\n\n    const getUsedTimezone = (timezone?: RestampContext['TIMEZONE']) => {\n        $restamper.tz = timezone;\n        return $restamper.tz.current!;\n    };\n\n    return { getTimezoneTime, getUsedTimezone } as const;\n})();\n\nconst useTimezone = ({ timezone: tz, withClock = false }: UseTimezoneConfig = EMPTY_OBJECT) => {\n    const shouldWatchClock = useMemo(() => boolOrFalse(withClock), [withClock]);\n    const timezone = useMemo(() => getUsedTimezone(tz), [tz]);\n    const unwatchClock = useRef(noop);\n\n    const [timestamp, setTimestamp] = useState(Date.now());\n    const [clockTime, GMTOffset] = useMemo(() => getTimezoneTime(timezone, timestamp), [timestamp, timezone]);\n\n    useMemo(() => {\n        unwatchClock.current();\n\n        unwatchClock.current = shouldWatchClock\n            ? clock.subscribe(snapshot => {\n                  if (!isWatchlistUnsubscribeToken(snapshot)) setTimestamp(snapshot.now);\n              })\n            : noop;\n    }, [setTimestamp, shouldWatchClock]);\n\n    return { clockTime, GMTOffset, timestamp, timezone } as const;\n};\n\nexport default useTimezone;\n","import { clamp, enumerable, getter, hasOwnProperty, isBitSafeInteger, isFunction, isNullish, isUndefined, struct } from '../../../../../utils';\nimport type {\n    RangeTimestamp,\n    RangeTimestampOffsets,\n    RangeTimestamps,\n    RangeTimestampsConfig,\n    RangeTimestampsConfigContext,\n    RangeTimestampsConfigParameter,\n    RangeTimestampsConfigParameterValue,\n    RangeTimestampsConfigRestampingContext,\n    RangeTimestampsConfigWithFromOffsets,\n    RangeTimestampsConfigWithoutOffsets,\n} from './types';\nimport { Restamper, RestamperWithTimezone, systemToTimezone, timezoneToSystem } from '../../../../../core/Localization/datetime/restamper';\n\nexport const createRangeTimestampsConfigRestampingContext = (restamper: RestamperWithTimezone) =>\n    Object.freeze({\n        systemToTimezone: enumerable((time?: Parameters<Restamper>[0]) => systemToTimezone(restamper, time)),\n        timezoneToSystem: enumerable((time?: Parameters<Restamper>[0]) => timezoneToSystem(restamper, time)),\n        timezoneOffset: enumerable((time?: Parameters<Restamper>[0]) => restamper(time).offset),\n    }) as { [P in keyof RangeTimestampsConfigRestampingContext]: TypedPropertyDescriptor<RangeTimestampsConfigRestampingContext[P]> };\n\nexport const getRangeTimestampsContextIntegerPropertyFactory = <T extends number = number>(\n    minInteger: T,\n    maxInteger: T,\n    defaultInteger: T = minInteger\n) => {\n    const _getNormalizedValue = (value?: T | null, fallbackValue?: T) => {\n        let normalizedValue = value as T;\n\n        if (isNullish(value)) normalizedValue = defaultInteger;\n        else if (!isBitSafeInteger(value)) normalizedValue = fallbackValue ?? defaultInteger;\n\n        const clampedValue = clamp(minInteger, normalizedValue, maxInteger) as T;\n        return clampedValue === normalizedValue ? clampedValue : fallbackValue ?? defaultInteger;\n    };\n\n    return (initialValue?: T) => {\n        const valueGetter = getter(() => normalizedValue);\n        let normalizedValue = _getNormalizedValue(initialValue);\n\n        return struct({\n            value: valueGetter,\n            descriptor: enumerable({\n                ...valueGetter,\n                set(this: RangeTimestamps, value?: T | null) {\n                    const currentValue = normalizedValue;\n                    normalizedValue = _getNormalizedValue(value, normalizedValue);\n                    if (currentValue !== normalizedValue) this.now = this.now;\n                },\n            }),\n        }) as Readonly<{\n            value: T;\n            descriptor: TypedPropertyDescriptor<T>;\n        }>;\n    };\n};\n\nexport const getRangeTimestampsConfigParameterUnwrapper =\n    (config: RangeTimestampsConfig, context: RangeTimestampsConfigContext) =>\n    <T = {}>(value: T): RangeTimestampsConfigParameterValue<T> =>\n        isFunction(value) ? value.call(config, context) : value;\n\nexport const isRangeTimestampsConfigWithoutOffsets = (config: RangeTimestampsConfig): config is RangeTimestampsConfigWithoutOffsets =>\n    !hasOwnProperty(config, 'offsets');\n\nexport const isRangeTimestampsConfigWithFromOffsets = (\n    config: Exclude<RangeTimestampsConfig, RangeTimestampsConfigWithoutOffsets>\n): config is RangeTimestampsConfigWithFromOffsets => hasOwnProperty(config, 'from');\n\nexport const nowTimestamp = (({ now }) => now) satisfies RangeTimestampsConfigParameter<RangeTimestamp>;\n\nexport const offsetsForNDays = (() => {\n    const _cache = new Map<number, RangeTimestampOffsets>();\n\n    return (numberOfDays: number) => {\n        let offsets = _cache.get(numberOfDays);\n\n        if (isUndefined(offsets)) {\n            offsets = Object.freeze([0, 0, numberOfDays, 0, 0, 0, -1] as const);\n            _cache.set(numberOfDays, offsets);\n        }\n\n        return offsets;\n    };\n})();\n\nexport const parseRangeTimestamp = (timestamp: Date | RangeTimestamp): RangeTimestamp | undefined => {\n    try {\n        const normalizedTimestamp = timestamp instanceof Date || +timestamp === timestamp ? timestamp : undefined;\n        const parsedTimestamp = new Date(normalizedTimestamp as RangeTimestamp).getTime();\n        return isNaN(parsedTimestamp) ? undefined : parsedTimestamp;\n    } catch {\n        /* ignore any parsing exception and implicitly return `undefined` */\n    }\n};\n","import { asPlainObject, EMPTY_OBJECT, getter, struct } from '../../../../../utils';\nimport restamper, { RestamperWithTimezone } from '../../../../../core/Localization/datetime/restamper';\nimport type { RangeTimestamp, RangeTimestamps, RangeTimestampsConfig, RangeTimestampsConfigContext } from './types';\nimport {\n    createRangeTimestampsConfigRestampingContext,\n    getRangeTimestampsConfigParameterUnwrapper,\n    isRangeTimestampsConfigWithFromOffsets,\n    isRangeTimestampsConfigWithoutOffsets,\n    parseRangeTimestamp,\n} from './utils';\n\nconst createRangeTimestampsFactory = <T extends Record<any, any> = {}>(\n    config = EMPTY_OBJECT as RangeTimestampsConfig,\n    additionalContext = EMPTY_OBJECT as { [P in keyof T]: TypedPropertyDescriptor<T[P]> }\n) => {\n    const _config = asPlainObject(config);\n    const _additionalContext = asPlainObject(additionalContext);\n\n    return () => {\n        const _restamper = restamper();\n        const nowDescriptor = getter(() => NOW);\n        const tzDescriptor = getter(() => _restamper.tz.current);\n        const configContext = struct({\n            now: nowDescriptor,\n            timezone: tzDescriptor,\n            ...createRangeTimestampsConfigRestampingContext(_restamper),\n        }) as RangeTimestampsConfigContext;\n        const unwrap = getRangeTimestampsConfigParameterUnwrapper(_config, configContext);\n\n        let { from, to, now: NOW } = EMPTY_OBJECT as RangeTimestamps;\n\n        const nowSetter = (timestamp?: Date | RangeTimestamp | null) => {\n            NOW = parseRangeTimestamp((timestamp ?? Date.now()) as RangeTimestamp) ?? NOW;\n\n            parsing: {\n                if (isRangeTimestampsConfigWithoutOffsets(_config)) {\n                    from = parseRangeTimestamp(unwrap(_config.from)) ?? NOW;\n                    to = parseRangeTimestamp(unwrap(_config.to)) ?? NOW;\n                    break parsing;\n                }\n\n                let date: Date;\n                let direction: 1 | -1;\n                let withRangeFrom: boolean;\n\n                if ((withRangeFrom = isRangeTimestampsConfigWithFromOffsets(_config))) {\n                    date = new Date((from = parseRangeTimestamp(unwrap(_config.from)) ?? NOW));\n                    direction = 1;\n                } else {\n                    date = new Date((to = parseRangeTimestamp(unwrap(_config.to)) ?? NOW));\n                    direction = -1;\n                }\n\n                // revert timestamp to system timezone ahead of offset operations\n                date = new Date(configContext.timezoneToSystem(date));\n\n                const [years = 0, months = 0, days = 0, hours = 0, minutes = 0, seconds = 0, ms = 0] = unwrap(_config.offsets);\n\n                date.setFullYear(date.getFullYear() + years * direction, date.getMonth() + months * direction, date.getDate() + days * direction);\n\n                date.setHours(\n                    date.getHours() + hours * direction,\n                    date.getMinutes() + minutes * direction,\n                    date.getSeconds() + seconds * direction,\n                    date.getMilliseconds() + ms * direction\n                );\n\n                // restamp timestamp to current target timezone before update range\n                const timestamp = parseRangeTimestamp(configContext.systemToTimezone(date)) ?? NOW;\n\n                withRangeFrom ? (to = timestamp) : (from = timestamp);\n            }\n\n            if (from > to) [from, to] = [to, from];\n        };\n\n        const tzSetter = (timezone?: RestamperWithTimezone['tz']['current'] | null) => {\n            const tz = _restamper.tz;\n            const currentTimezone = tz.current;\n            _restamper.tz = timezone;\n            if (tz.current !== currentTimezone) nowSetter(NOW);\n        };\n\n        nowSetter();\n\n        return struct<RangeTimestamps<T>>({\n            ..._additionalContext,\n            from: getter(() => from),\n            now: { ...nowDescriptor, set: nowSetter },\n            timezone: { ...tzDescriptor, set: tzSetter },\n            to: getter(() => to),\n        });\n    };\n};\n\nexport default createRangeTimestampsFactory;\n","import restamper, { systemToTimezone, timezoneToSystem } from '../../../../core/Localization/datetime/restamper';\nimport { BASE_LOCALE, BASE_FORMAT_OPTIONS } from '../../../../core/Localization/datetime/restamper/constants';\nimport { DEFAULT_DATETIME_FORMAT } from '../../../../core/Localization/constants/localization';\nimport { EMPTY_ARRAY, EMPTY_OBJECT, identity, isInfinity, isUndefined, mod } from '../../../../utils';\nimport type { Month, MonthDays, Time, WeekDay } from './types';\n\nconst DATE_PARTS_REGEX = /^(\\d{2})\\/(\\d{2})\\/(-?\\d+),\\s+(\\d{2}):(\\d{2}):(\\d{2}).(\\d{3})/;\n\nconst _startTimestamp =\n    <RestArgs extends any[], DateAdjustmentFn extends (date: Date, ...args: RestArgs) => Date | number>(\n        adjustDate = identity as unknown as DateAdjustmentFn\n    ) =>\n    (timestamp: Date | number, timezone?: string, ...args: RestArgs) => {\n        const restamper = withTimezone(timezone);\n        const restampedDate = new Date(timezoneToSystem(restamper, timestamp));\n        restampedDate.setHours(0, 0, 0, 0);\n        return systemToTimezone(restamper, adjustDate(restampedDate, ...args));\n    };\n\nexport const startOfDay = _startTimestamp();\nexport const startOfMonth = _startTimestamp(date => date.setDate(1));\nexport const startOfYear = _startTimestamp(date => date.setMonth(0, 1));\n\nexport const startOfWeek = _startTimestamp((date, firstWeekDay?: WeekDay) => {\n    const dateOffset = getWeekDayIndex(date.getDay() as WeekDay, firstWeekDay ?? 0);\n    return date.setDate(date.getDate() - dateOffset);\n});\n\nexport const isLeapYear = (year: number) => (year % 100 ? year % 4 : year % 400) === 0;\n\nexport const getMonthDays = (month: Month, year: number, offset = 0) => {\n    const nextMonth = month + offset;\n    const monthIndex = mod(nextMonth, 12) as Month;\n    const nextYear = year + Math.floor(nextMonth / 12);\n\n    let days: MonthDays = 31;\n\n    switch (monthIndex) {\n        case 1:\n            days = isLeapYear(nextYear) ? 29 : 28;\n            break;\n        case 3:\n        case 5:\n        case 8:\n        case 10:\n            days = 30;\n            break;\n    }\n\n    return [days, monthIndex, nextYear] as const;\n};\n\nexport const getWeekDayIndex = (weekDay: WeekDay, firstWeekDay: WeekDay = 0) => ((7 - firstWeekDay + weekDay) % 7) as WeekDay;\n\nexport const computeTimestampOffset = (timestamp: number, timezone?: string) =>\n    isInfinity(timestamp) ? 0 : timestamp - startOfDay(timestamp, timezone);\n\nexport const getDateObjectFromTimestamp = (timestamp?: number) => (isUndefined(timestamp) ? timestamp : new Date(timestamp));\n\nexport const getTimezoneDateString = (date: number | string | Date, options: Intl.DateTimeFormatOptions = EMPTY_OBJECT) => {\n    const restamper = withTimezone(options.timeZone);\n    const dateOptions = { ...DEFAULT_DATETIME_FORMAT, ...options, timeZone: restamper.tz.current };\n    return new Date(date).toLocaleDateString(BASE_LOCALE, dateOptions);\n};\n\nexport const getTimezoneDateParts = (date: number | string | Date, timeZone?: string) => {\n    const dateString = getTimezoneDateString(date, { ...BASE_FORMAT_OPTIONS, ...DEFAULT_DATETIME_FORMAT, timeZone, hour12: false });\n    const [, month = '', day = '', year = '', hours = '', minutes = '', seconds = '', ms = ''] = dateString.match(DATE_PARTS_REGEX) ?? EMPTY_ARRAY;\n    return [+year, +month - 1, +day, +hours % 24, +minutes, +seconds, +ms] as const;\n};\n\nexport const getEdgesDistance = (fromTime: Time, toTime: Time, timezone?: string) => {\n    if (isInfinity(fromTime) || isInfinity(toTime)) return Infinity;\n    const [fromYear, fromMonth] = getTimezoneDateParts(fromTime, timezone);\n    const [toYear, toMonth] = getTimezoneDateParts(toTime, timezone);\n    return Math.abs(toMonth - fromMonth + (toYear - fromYear) * 12);\n};\n\nexport const withTimezone = (() => {\n    const _restamper = restamper();\n    return (timezone?: string) => {\n        _restamper.tz = undefined; // first reset to system timezone\n        _restamper.tz = timezone;\n        return _restamper;\n    };\n})();\n","import { clamp } from '../../../../../../../utils';\nimport createRangeTimestampsFactory from '../../factory';\nimport { getRangeTimestampsContextIntegerPropertyFactory, nowTimestamp, offsetsForNDays } from '../../utils';\nimport { startOfWeek } from '../../../utils';\nimport type { WeekDay } from '../../../types';\n\nexport const DEFAULT_FIRST_WEEK_DAY = 1;\nexport const ONE_WEEK_OFFSETS = offsetsForNDays(7);\n\nconst _getFirstWeekDayContext = getRangeTimestampsContextIntegerPropertyFactory<WeekDay>(0, 6, DEFAULT_FIRST_WEEK_DAY);\n\nconst offsetWeek = (weekCount: number = 0) => {\n    const weeks = ~~clamp(0, weekCount as number, Infinity) || 0;\n\n    return (firstWeekDay: WeekDay = DEFAULT_FIRST_WEEK_DAY) => {\n        const restConfig = weeks ? { offsets: ONE_WEEK_OFFSETS } : { to: nowTimestamp };\n        const firstWeekDayContext = _getFirstWeekDayContext(firstWeekDay);\n\n        return createRangeTimestampsFactory(\n            {\n                from: ({ now, timezone, systemToTimezone, timezoneToSystem }) => {\n                    const date = new Date(timezoneToSystem(startOfWeek(now, timezone, firstWeekDayContext.value)));\n                    date.setDate(date.getDate() - weeks * 7);\n                    return systemToTimezone(date);\n                },\n                ...restConfig,\n            },\n            { firstWeekDay: firstWeekDayContext.descriptor }\n        )();\n    };\n};\n\nexport default offsetWeek;\n","import { clamp } from '../../../../../../../utils';\nimport createRangeTimestampsFactory from '../../factory';\nimport type { RangeTimestampOffsets } from '../../types';\nimport { nowTimestamp } from '../../utils';\nimport { startOfMonth } from '../../../utils';\n\nexport const ONE_MONTH_OFFSETS = Object.freeze([0, 1, 0, 0, 0, 0, -1] as const) as RangeTimestampOffsets;\n\nconst offsetMonth = (monthCount: number = 0) => {\n    const months = ~~clamp(0, monthCount as number, Infinity) || 0;\n    const restConfig = months ? { offsets: ONE_MONTH_OFFSETS } : { to: nowTimestamp };\n\n    return createRangeTimestampsFactory({\n        from: ({ now, timezone, systemToTimezone, timezoneToSystem }) => {\n            const date = new Date(timezoneToSystem(startOfMonth(now, timezone)));\n            date.setMonth(date.getMonth() - months);\n            return systemToTimezone(date);\n        },\n        ...restConfig,\n    });\n};\n\nexport default offsetMonth;\n","import offsetMonth from './shared/offsetMonth';\nconst lastMonth = offsetMonth(1);\nexport default lastMonth;\n","import createRangeTimestampsFactory from '../factory';\nimport { getRangeTimestampsContextIntegerPropertyFactory, nowTimestamp } from '../utils';\nimport { startOfDay } from '../../utils';\n\nexport const MAX_NUM_DAYS = 365;\nexport const MIN_NUM_DAYS = 1;\nexport const DEFAULT_NUM_DAYS = 1;\n\nconst _getNumberOfDaysContext = getRangeTimestampsContextIntegerPropertyFactory<number>(MIN_NUM_DAYS, MAX_NUM_DAYS, DEFAULT_NUM_DAYS);\n\nconst lastNDays = (numberOfDays?: number) => {\n    const numberOfDaysContext = _getNumberOfDaysContext(numberOfDays);\n\n    return createRangeTimestampsFactory(\n        {\n            from: ({ now, timezone, systemToTimezone, timezoneToSystem }) => {\n                const date = new Date(timezoneToSystem(startOfDay(now, timezone)));\n                date.setDate(date.getDate() - numberOfDaysContext.value + 1);\n                return systemToTimezone(date);\n            },\n            to: nowTimestamp,\n        },\n        { numberOfDays: numberOfDaysContext.descriptor }\n    )();\n};\n\nexport default lastNDays;\n","import offsetWeek from './shared/offsetWeek';\nconst lastWeek = offsetWeek(1);\nexport default lastWeek;\n","import offsetMonth from './shared/offsetMonth';\nconst thisMonth = offsetMonth(0);\nexport default thisMonth;\n","import offsetWeek from './shared/offsetWeek';\nconst thisWeek = offsetWeek(0);\nexport default thisWeek;\n","import createRangeTimestampsFactory from '../factory';\nimport { nowTimestamp } from '../utils';\nimport { startOfYear } from '../../utils';\n\nconst yearToDate = createRangeTimestampsFactory({\n    from: ({ now, timezone }) => startOfYear(now, timezone),\n    to: nowTimestamp,\n});\n\nexport default yearToDate;\n","import { useCallback, useMemo, useRef, useState } from 'preact/hooks';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport type { RestampContext } from '../../../../../core/Localization/datetime/restamper';\nimport type { TranslationKey } from '../../../../../translations';\nimport { RangeTimestamp, RangeTimestamps } from '../../../Calendar/calendar/timerange';\nimport * as RangePreset from '../../../Calendar/calendar/timerange/presets';\n\nexport type UseTimeRangeSelectionConfig = {\n    now?: RangeTimestamp;\n    options: Readonly<Partial<{ [P in TranslationKey]: RangeTimestamps }>>;\n    selectedOption?: string;\n    timezone?: RestampContext['TIMEZONE'];\n};\n\nexport type UseTimeRangeSelectionData = ReturnType<typeof useTimeRangeSelection>;\n\nexport const getTimeRangeSelectionDefaultPresetOptions = () =>\n    Object.freeze({\n        'rangePreset.last7Days': RangePreset.lastNDays(7),\n        'rangePreset.last30Days': RangePreset.lastNDays(30),\n        'rangePreset.thisWeek': RangePreset.thisWeek(),\n        'rangePreset.lastWeek': RangePreset.lastWeek(),\n        'rangePreset.thisMonth': RangePreset.thisMonth(),\n        'rangePreset.lastMonth': RangePreset.lastMonth(),\n        'rangePreset.yearToDate': RangePreset.yearToDate(),\n    } as const);\n\nexport const useTimeRangeSelection = ({\n    now = Date.now(),\n    options: presetOptions,\n    selectedOption: selectedPresetOption,\n    timezone,\n}: UseTimeRangeSelectionConfig) => {\n    const { i18n } = useCoreContext();\n    const [from, setFrom] = useState<number>();\n    const [to, setTo] = useState<number>();\n    const [selectedOption, setSelectedOption] = useState<string>();\n    const NOW = useRef<typeof now>();\n    const TZ = useRef<typeof timezone>();\n\n    const [customOption, getRangesForOption, selectionOptions] = useMemo(() => {\n        const customOption = i18n.get('rangePreset.custom');\n        const optionKeys = Object.keys(presetOptions);\n        const selectionOptions = Object.freeze(optionKeys.map(key => i18n.get(key as TranslationKey)));\n\n        const getRangesForOption = (option: string, options: readonly string[] = selectionOptions) => {\n            const optionIndex = options.findIndex(currentOption => currentOption === option);\n            return presetOptions[optionKeys[optionIndex] as keyof typeof presetOptions];\n        };\n\n        return [customOption, getRangesForOption, selectionOptions] as const;\n    }, [i18n, presetOptions]);\n\n    const [isCustomSelection, setIsCustomSelection] = useState(selectedPresetOption === customOption);\n    const selectionOptionsWithCustomOption = useMemo(() => Object.freeze([...selectionOptions, customOption]), [customOption, selectionOptions]);\n\n    const options = useMemo(\n        () => (isCustomSelection ? selectionOptionsWithCustomOption : selectionOptions),\n        [isCustomSelection, selectionOptions, selectionOptionsWithCustomOption]\n    );\n\n    const onSelection = useCallback(\n        (option: string) => {\n            const ranges = getRangesForOption(option, selectionOptions);\n            if (!ranges) return;\n\n            setFrom(ranges.from);\n            setTo(ranges.to);\n            setIsCustomSelection(false);\n            setSelectedOption(option);\n        },\n        [customOption, getRangesForOption, selectedOption, selectionOptions]\n    );\n\n    const customSelection = useCallback(() => {\n        setFrom(undefined);\n        setTo(undefined);\n        setIsCustomSelection(true);\n        setSelectedOption(customOption);\n    }, [customOption]);\n\n    useMemo(() => {\n        selectedPresetOption === customOption ? setSelectedOption(customOption) : onSelection(selectedPresetOption!);\n    }, []);\n\n    useMemo(() => {\n        if (NOW.current !== now || TZ.current !== timezone) {\n            const options = Object.values(presetOptions);\n\n            options.forEach(ranges => {\n                ranges.now = now;\n                ranges.timezone = timezone;\n            });\n\n            NOW.current = now;\n            TZ.current = options[0]?.timezone;\n\n            onSelection(selectedOption!);\n        }\n    }, [now, timezone, presetOptions]);\n\n    return {\n        customSelection,\n        from,\n        onSelection,\n        options,\n        selectedOption,\n        to,\n    } as const;\n};\n\nexport default useTimeRangeSelection;\n","import { useCallback, useEffect, useMemo, useRef } from 'preact/hooks';\nimport Select from '../../../FormFields/Select';\nimport { SelectItem } from '../../../FormFields/Select/types';\nimport { useTimeRangeSelection, UseTimeRangeSelectionConfig } from './useTimeRangeSelection';\n\nconst TimeRangeSelector = ({\n    calendarRef,\n    onTimeRangeSelected,\n    timestamp,\n    ...useTimeRangeSelectionConfig\n}: UseTimeRangeSelectionConfig & {\n    calendarRef?: any;\n    onTimeRangeSelected?: (option: string) => any;\n    timestamp: DOMHighResTimeStamp;\n}) => {\n    const { customSelection, from, onSelection, options, selectedOption, to } = useTimeRangeSelection(useTimeRangeSelectionConfig);\n    const selectOptions = useMemo(() => Object.freeze(options.map(id => ({ id, name: id } as SelectItem))), [options]);\n    const onSelectedOptionChanged = useCallback(({ target }: any) => onSelection(target?.value), [onSelection]);\n    const rangeSelectionInProgress = useRef(true);\n    const cachedTimestamp = useRef(timestamp);\n\n    useEffect(() => {\n        if (calendarRef?.current && from && to) {\n            rangeSelectionInProgress.current = true;\n            calendarRef.current.from = new Date(from);\n            calendarRef.current.to = new Date(to);\n        }\n    }, [calendarRef, from, to]);\n\n    useEffect(() => {\n        if (cachedTimestamp.current !== timestamp) {\n            cachedTimestamp.current = timestamp;\n\n            if (rangeSelectionInProgress.current) {\n                rangeSelectionInProgress.current = false;\n            } else customSelection();\n        }\n    }, [customSelection, timestamp]);\n\n    useEffect(() => {\n        selectedOption && onTimeRangeSelected?.(selectedOption);\n    }, [selectedOption, onTimeRangeSelected]);\n\n    return (\n        <Select\n            setToTargetWidth={true}\n            items={selectOptions}\n            filterable={false}\n            multiSelect={false}\n            onChange={onSelectedOptionChanged}\n            selected={selectedOption}\n        />\n    );\n};\n\nexport default TimeRangeSelector;\n","import { boolOrTrue, EMPTY_OBJECT, enumerable, isPlainObject, struct, structFrom } from '../../../../../utils';\n\ntype PropertyDescriptor<T = any> = {\n    configurable?: boolean;\n    enumerable?: boolean;\n    value?: T;\n    writable?: boolean;\n    get?(): T | undefined;\n    set?(v?: T): void;\n};\n\ntype PropertyFactory = {\n    <T = any>(setter?: false | ((value?: T) => T | undefined), value?: T): PropertyDescriptor<T>;\n    is: (value: any) => value is PropertyDescriptor;\n    isObject: (value: any) => value is Record<any, any>;\n    immutable: <T = any>(value?: T) => PropertyDescriptor<T>;\n    mutable: <T = any>(value?: T) => PropertyDescriptor<T>;\n    restricted: () => PropertyDescriptor<undefined>;\n};\n\nexport const property = (() => {\n    const descriptor = <T>(descriptor: PropertyDescriptor<T>) =>\n        Object.freeze(\n            structFrom(EMPTY_OBJECT, Object.fromEntries(Object.entries(descriptor).map(([field, value]) => [field, { value }])))\n        ) as PropertyDescriptor<T>;\n\n    const isPropDescriptor = (value: any): value is PropertyDescriptor => {\n        try {\n            return Object.getPrototypeOf(value) === EMPTY_OBJECT;\n        } catch {\n            return false;\n        }\n    };\n\n    const prop = <T = any>(setter?: false | ((value?: T) => T | undefined), value?: T) => {\n        if (!setter) return descriptor(enumerable(value, boolOrTrue(setter)));\n\n        let currentValue = value;\n\n        return descriptor({\n            enumerable: true,\n            get: () => currentValue,\n            set: (value?: T) => {\n                currentValue = setter(value);\n            },\n        });\n    };\n\n    return Object.defineProperties(prop, {\n        is: { value: isPropDescriptor },\n        isObject: { value: isPlainObject },\n        immutable: { value: <T = any>(value?: T) => prop(false, value) },\n        mutable: { value: <T = any>(value?: T) => prop(undefined, value) },\n        restricted: { value: () => prop<undefined>(false) },\n    }) as PropertyFactory;\n})();\n\nexport const propsProperty = (() => {\n    type UnwrappedProps<T extends Record<string, any>> = {\n        [K in keyof T]:\n            | (T[K] extends PropertyDescriptor<infer U> ? (U extends Record<string, any> ? UnwrappedProps<U> : U) : T[K])\n            | PropertyDescriptor<T[K]>;\n    } & Record<string, any>;\n\n    const propsProperty = <T extends Record<string, any> = {}>(props = {} as UnwrappedProps<T>, deepImmutable = false) => {\n        const $props = struct() as UnwrappedProps<T>;\n\n        for (const [prop, maybeDescriptor] of Object.entries<UnwrappedProps<T>[keyof T]>(props)) {\n            try {\n                const isDescriptor = property.is(maybeDescriptor);\n                const isPlainObject = property.isObject(maybeDescriptor);\n\n                if (isDescriptor || isPlainObject) {\n                    Object.defineProperty($props, prop, isDescriptor ? maybeDescriptor : propsProperty(maybeDescriptor, deepImmutable));\n                    continue;\n                } else if (deepImmutable) {\n                    Object.defineProperty($props, prop, property.immutable(maybeDescriptor));\n                    continue;\n                }\n            } catch {\n                /* no empty catch block */\n            }\n\n            $props[prop as keyof T] = maybeDescriptor;\n        }\n\n        return property((props = {} as UnwrappedProps<T>) => Object.assign($props, props), $props);\n    };\n\n    const unwrapped = <T extends Record<string, any> = {}>(props = {} as UnwrappedProps<T>, deepImmutable = false) => {\n        const P = propsProperty(props, deepImmutable);\n        return struct({ P }).P as T;\n    };\n\n    return Object.defineProperties(propsProperty, {\n        unwrapped: { value: unwrapped },\n    }) as {\n        <T extends Record<string, any> = {}>(props?: UnwrappedProps<T>, deepImmutable?: boolean): PropertyDescriptor<UnwrappedProps<T>>;\n        unwrapped: <T extends Record<string, any> = {}>(props?: UnwrappedProps<T>, deepImmutable?: boolean) => T;\n    };\n})();\n","import { VNode } from 'preact';\nimport {\n    CalendarConfig,\n    CalendarGridControlRecord,\n    CalendarSelection,\n    CalendarShiftControls,\n    FirstWeekDay,\n    Time,\n    TimeFrameSize,\n} from './calendar/types';\n\nexport const enum CalendarGridRenderToken {\n    DATE,\n    DAY_OF_WEEK,\n    MONTH_HEADER,\n}\n\nexport interface CalendarGridCursorRootProps {\n    onClickCapture: (evt: Event) => void;\n    onMouseOverCapture: (evt: Event) => void;\n    onPointerOverCapture: (evt: Event) => void;\n    onKeyDownCapture: (evt: KeyboardEvent) => void;\n}\n\nexport interface CalendarHandle {\n    clear: () => void;\n    config: CalendarConfig;\n    from?: Date;\n    to?: Date;\n}\n\nexport interface CalendarProps {\n    blocks?: TimeFrameSize;\n    controls?: CalendarShiftControls;\n    dynamicBlockRows?: boolean;\n    firstWeekDay?: FirstWeekDay;\n    highlight?: CalendarSelection | string;\n    locale?: string;\n    onHighlight?: (from?: number, to?: number) => any;\n    onlyCellsWithin?: boolean;\n    originDate?: Time | Time[];\n    prepare?: (renderToken: CalendarGridRenderToken, renderContext: any) => any;\n    renderControl?: (...args: CalendarGridControlRecord) => VNode | null;\n    sinceDate?: Time;\n    timezone?: string;\n    trackCurrentDay?: boolean;\n    untilDate?: Time;\n    useYearView?: boolean;\n}\n\nexport type CalendarRenderControl = Exclude<CalendarProps['renderControl'], undefined>;\nexport type CalendarControlRenderer = (targetElement: Element, ...args: CalendarGridControlRecord) => ReturnType<CalendarRenderControl>;\n","import { memo } from 'preact/compat';\nimport { property, propsProperty } from './utils';\nimport { CalendarGridDateProps, CalendarGridDateRenderProps } from './types';\nimport { fixedForwardRef, getClassName, memoComparator } from '../../../../../utils/preact';\nimport { EMPTY_OBJECT } from '../../../../../utils';\nimport { CalendarGridRenderToken } from '../../types';\n\nconst DEFAULT_DATE_CELL_CLASSNAME = 'adyen-pe-calendar__cell adyen-pe-calendar__cell--date';\nconst DEFAULT_DATE_TIME_CLASSNAME = 'adyen-pe-calendar__date';\n\nconst getGridDateRenderProps = (computedProps = EMPTY_OBJECT as any, prepare?: CalendarGridDateProps['prepare']) => {\n    const renderProps = propsProperty.unwrapped<CalendarGridDateRenderProps>(\n        {\n            childClassName: property.mutable(DEFAULT_DATE_TIME_CLASSNAME),\n            childProps: {\n                children: property.restricted(),\n                className: '',\n            },\n            className: property.mutable(DEFAULT_DATE_CELL_CLASSNAME),\n            props: {\n                ...computedProps,\n                children: property.restricted(),\n                className: '',\n            },\n        },\n        true\n    );\n\n    prepare?.(CalendarGridRenderToken.DATE, renderProps);\n    return renderProps;\n};\n\nconst CalendarGridDate = fixedForwardRef(\n    ({ grid, prepare, datetime, flags, index, label, onlyCellsWithin }: CalendarGridDateProps, cursorElementRef) => {\n        const withinMonth = flags.WITHIN_BLOCK;\n\n        const props = {\n            'data-cursor-position': index,\n            'data-within-month': withinMonth,\n            tabIndex: -1,\n        } as any;\n\n        if (withinMonth) {\n            const withinRange = flags.WITHIN_RANGE;\n\n            props['data-today'] = flags.CURRENT;\n            props['data-first-week-day'] = flags.LINE_START;\n            props['data-last-week-day'] = flags.LINE_END;\n            props['data-weekend'] = flags.WEEKEND;\n            props['data-first-month-day'] = flags.BLOCK_START;\n            props['data-last-month-day'] = flags.BLOCK_END;\n\n            props['data-within-range'] = withinRange;\n\n            if (withinRange) {\n                props['data-range-end'] = flags.RANGE_END;\n                props['data-range-start'] = flags.RANGE_START;\n                props['data-selection-end'] = flags.SELECTION_END;\n                props['data-selection-start'] = flags.SELECTION_START;\n                props['data-within-selection'] = flags.WITHIN_SELECTION;\n                props['aria-selected'] = `${!!(flags.SELECTION_END || flags.SELECTION_START || flags.WITHIN_SELECTION)}`;\n            }\n\n            if (index === +grid.cursor) props.ref = cursorElementRef;\n        }\n\n        const renderProps = getGridDateRenderProps(props, prepare);\n        const { children: _, className, ...extendedProps } = renderProps.props || (EMPTY_OBJECT as NonNullable<typeof renderProps.props>);\n        const classes = getClassName(renderProps.className, DEFAULT_DATE_CELL_CLASSNAME, className);\n\n        return (\n            <td {...extendedProps} {...props} className={classes}>\n                {(!onlyCellsWithin || withinMonth) &&\n                    (() => {\n                        const {\n                            children: _,\n                            className,\n                            ...extendedProps\n                        } = renderProps.childProps || (EMPTY_OBJECT as NonNullable<typeof renderProps.childProps>);\n                        const classes = getClassName(renderProps.childClassName, DEFAULT_DATE_TIME_CLASSNAME, className);\n                        return (\n                            <time {...extendedProps} className={classes} dateTime={datetime}>\n                                {label}\n                            </time>\n                        );\n                    })()}\n            </td>\n        );\n    }\n);\n\nexport default memo(\n    CalendarGridDate,\n    memoComparator({\n        block: memoComparator.exclude,\n        flags: value => +(value as number),\n    })\n);\n","import { memo } from 'preact/compat';\nimport { property, propsProperty } from './utils';\nimport { getClassName, memoComparator } from '../../../../../utils/preact';\nimport { CalendarGridDayOfWeekProps, CalendarGridDayOfWeekRenderProps } from './types';\nimport { EMPTY_OBJECT } from '../../../../../utils';\nimport { CalendarGridRenderToken } from '../../types';\nimport { Ref } from 'preact';\n\nconst DEFAULT_CELL_CLASSNAME = 'adyen-pe-calendar__cell adyen-pe-calendar__cell--day-of-week';\nconst DEFAULT_CELL_ABBR_CLASSNAME = 'adyen-pe-calendar__day-of-week';\n\nconst getGridDayOfWeekRenderProps = (computedProps = EMPTY_OBJECT as any, prepare?: CalendarGridDayOfWeekProps['prepare']) => {\n    const renderProps = propsProperty.unwrapped<CalendarGridDayOfWeekRenderProps>(\n        {\n            childClassName: property.mutable(DEFAULT_CELL_ABBR_CLASSNAME),\n            childProps: {\n                children: property.restricted(),\n                className: '',\n            },\n            className: property.mutable(DEFAULT_CELL_CLASSNAME),\n            props: {\n                ...computedProps,\n                children: property.restricted(),\n                className: '',\n            },\n        },\n        true\n    );\n\n    prepare?.(CalendarGridRenderToken.DAY_OF_WEEK, renderProps);\n    return renderProps;\n};\n\nconst CalendarGridDayOfWeek = ({ prepare, flags, labels: { long: longLabel, short: shortLabel } }: CalendarGridDayOfWeekProps) => {\n    const props = {\n        'aria-label': longLabel,\n        'data-first-week-day': flags.LINE_START,\n        'data-last-week-day': flags.LINE_END,\n        'data-weekend': flags.WEEKEND,\n        scope: 'col',\n    };\n\n    const renderProps = getGridDayOfWeekRenderProps(props, prepare);\n    const { children: _, className, ...extendedProps } = renderProps.props || (EMPTY_OBJECT as NonNullable<typeof renderProps.props>);\n\n    const classes = getClassName(renderProps.className, DEFAULT_CELL_CLASSNAME, className);\n\n    const {\n        children: __,\n        className: childClassName,\n        ...extendedChildProps\n    } = renderProps.childProps || (EMPTY_OBJECT as NonNullable<typeof renderProps.childProps>);\n    const childClasses = getClassName(renderProps.childClassName, DEFAULT_CELL_ABBR_CLASSNAME, childClassName);\n\n    return (\n        <th {...extendedProps} ref={extendedProps.ref as Ref<HTMLTableCellElement>} {...props} className={classes}>\n            <abbr {...extendedChildProps} className={childClasses}>\n                {shortLabel}\n            </abbr>\n        </th>\n    );\n};\n\nexport default memo(\n    CalendarGridDayOfWeek,\n    memoComparator({\n        block: memoComparator.exclude,\n        flags: value => +(value as number),\n    })\n);\n","import { forwardRef, memo } from 'preact/compat';\nimport { CalendarGridProps } from './types';\nimport CalendarGridDate from './CalendarGridDate';\nimport CalendarGridDayOfWeek from './CalendarGridDayOfWeek';\nimport '../../Calendar.scss';\n\nconst CalendarGrid = forwardRef(({ cursorRootProps, onlyCellsWithin, prepare, grid }: CalendarGridProps, cursorElementRef) => (\n    <ol className={'adyen-pe-calendar'} role=\"none\" {...cursorRootProps}>\n        {grid.map(block => (\n            <li key={block.datetime} className={'adyen-pe-calendar__month'} role=\"none\">\n                <div className={'adyen-pe-calendar__month-name'} role=\"none\">\n                    <time dateTime={block.datetime} aria-hidden=\"true\">\n                        {block.label}\n                    </time>\n                </div>\n\n                <table\n                    role=\"grid\"\n                    aria-multiselectable={true}\n                    aria-label={`${block.label} calendar`}\n                    className={'adyen-pe-calendar__grid'}\n                    style={{ '--adyen-pe-calendar-rowspan': grid.rowspan }}\n                >\n                    <thead>\n                        <tr className={'adyen-pe-calendar__row'}>\n                            {grid.weekdays.map((data, index) => (\n                                <CalendarGridDayOfWeek key={data.labels['long']} grid={grid} block={block} prepare={prepare} cell={index} {...data} />\n                            ))}\n                        </tr>\n                    </thead>\n                    <tbody>\n                        {block.map((row, rowindex) => (\n                            <tr key={`${block.month}:${rowindex}`} className={'adyen-pe-calendar__row'}>\n                                {row.map((data, index) => (\n                                    <CalendarGridDate\n                                        key={`${block.month}:${data.timestamp}`}\n                                        ref={cursorElementRef}\n                                        grid={grid}\n                                        block={block}\n                                        prepare={prepare}\n                                        cell={index}\n                                        onlyCellsWithin={onlyCellsWithin}\n                                        row={rowindex}\n                                        {...data}\n                                    />\n                                ))}\n                            </tr>\n                        ))}\n                    </tbody>\n                </table>\n            </li>\n        ))}\n    </ol>\n));\n\nexport default memo(CalendarGrid);\n","export const DAY_MS = 86400000 as const;\nexport const DAY_OF_WEEK_FORMATS = ['narrow', 'short', 'long'] as const;\nexport const FIRST_WEEK_DAYS = [0, 1, 6] as const;\nexport const FRAME_SIZES = [1, 2, 3, 4, 6, 12] as const;\nexport const MAXIMUM_MONTH_UNITS = 42 as const;\nexport const WEEKEND_DAYS_SEED = [0, 1] as const;\nexport const YEAR_MONTHS = 12 as const;\nexport const CONTROLS_ALL: unique symbol = Symbol();\nexport const CONTROLS_MINIMAL: unique symbol = Symbol();\nexport const CONTROLS_NONE: unique symbol = Symbol();\nexport const CALENDAR_CONTROLS = [CONTROLS_NONE, CONTROLS_MINIMAL, CONTROLS_ALL] as const;\nexport const SELECT_MANY: unique symbol = Symbol();\nexport const SELECT_NONE: unique symbol = Symbol();\nexport const SELECT_ONE: unique symbol = Symbol();\nexport const CALENDAR_SELECTIONS = [SELECT_NONE, SELECT_ONE, SELECT_MANY] as const;\nexport const CURSOR_BACKWARD: unique symbol = Symbol();\nexport const CURSOR_BLOCK_END: unique symbol = Symbol();\nexport const CURSOR_BLOCK_START: unique symbol = Symbol();\nexport const CURSOR_DOWNWARD: unique symbol = Symbol();\nexport const CURSOR_FORWARD: unique symbol = Symbol();\nexport const CURSOR_LINE_END: unique symbol = Symbol();\nexport const CURSOR_LINE_START: unique symbol = Symbol();\nexport const CURSOR_NEXT_BLOCK: unique symbol = Symbol();\nexport const CURSOR_PREV_BLOCK: unique symbol = Symbol();\nexport const CURSOR_UPWARD: unique symbol = Symbol();\nexport const RANGE_FROM: unique symbol = Symbol();\nexport const RANGE_TO: unique symbol = Symbol();\nexport const SELECTION_COLLAPSE: unique symbol = Symbol();\nexport const SELECTION_FARTHEST: unique symbol = Symbol();\nexport const SELECTION_FROM: unique symbol = Symbol();\nexport const SELECTION_NEAREST: unique symbol = Symbol();\nexport const SELECTION_TO: unique symbol = Symbol();\nexport const SHIFT_BLOCK: unique symbol = Symbol();\nexport const SHIFT_FRAME: unique symbol = Symbol();\nexport const SHIFT_PERIOD: unique symbol = Symbol();\n","import { FRAME_SIZES, WEEKEND_DAYS_SEED } from '../../constants';\nimport { FirstWeekDay, TimeFrameSize, WeekDay } from '../../types';\nimport { mod } from '../../../../../../utils';\n\nexport const downsizeTimeFrame = (size: TimeFrameSize, maxsize: number): TimeFrameSize => {\n    if (maxsize >= size) return size;\n    let i = Math.max(1, FRAME_SIZES.indexOf(size));\n    while (--i && maxsize < (FRAME_SIZES[i] as TimeFrameSize)) {}\n    return FRAME_SIZES[i] as TimeFrameSize;\n};\n\nexport const resolveTimeFrameBlockSize = (size: TimeFrameSize) => FRAME_SIZES[Math.max(FRAME_SIZES.indexOf(size), 0)];\n\nexport const getWeekendDays = (firstWeekDay: FirstWeekDay = 0) =>\n    // [TODO]: Derive weekend days based on locale\n    Object.freeze(WEEKEND_DAYS_SEED.map(seed => mod(6 - firstWeekDay + seed, 7)) as [WeekDay, WeekDay]);\n","import { RANGE_FROM, RANGE_TO } from '../constants';\nimport { Time, TimeFrameRangeEdge } from '../types';\nimport { computeTimestampOffset, getEdgesDistance } from '../utils';\n\nexport default class __TimeSlice__ {\n    readonly #numberOfMonths: number = Infinity;\n    readonly #endTimestamp: number = Infinity;\n    readonly #startTimestamp: number = -Infinity;\n    readonly #endTimestampOffset: number = 0;\n    readonly #startTimestampOffset: number = 0;\n\n    constructor(timezone?: string, fromTime?: Time, toTime?: Time);\n    constructor(timezone?: string, time?: Time, timeEdge?: TimeFrameRangeEdge);\n    constructor(...args: any[]) {\n        if (args.length >= 3) {\n            let timestamp = new Date(args[1]).getTime();\n\n            if (typeof args[2] !== 'symbol') {\n                this.#startTimestamp = timestamp || this.#startTimestamp;\n                this.#endTimestamp = new Date(args[2]).getTime() || this.#endTimestamp;\n\n                if (this.#endTimestamp < this.#startTimestamp) {\n                    [this.#endTimestamp, this.#startTimestamp] = [this.#startTimestamp, this.#endTimestamp];\n                }\n\n                this.#startTimestampOffset = computeTimestampOffset(this.#startTimestamp, args[0]);\n                this.#endTimestampOffset = computeTimestampOffset(this.#endTimestamp, args[0]);\n                this.#numberOfMonths = getEdgesDistance(this.#startTimestamp, this.#endTimestamp, args[0]) + 1;\n            } else if (!isNaN(timestamp)) {\n                switch (args[2]) {\n                    case RANGE_TO:\n                        this.#endTimestamp = timestamp;\n                        this.#endTimestampOffset = computeTimestampOffset(this.#endTimestamp, args[0]);\n                        break;\n\n                    case RANGE_FROM:\n                    default:\n                        this.#startTimestamp = timestamp;\n                        this.#startTimestampOffset = computeTimestampOffset(this.#startTimestamp, args[0]);\n                        break;\n                }\n            }\n        }\n    }\n\n    get numberOfMonths() {\n        return this.#numberOfMonths;\n    }\n\n    get endTimestamp() {\n        return this.#endTimestamp;\n    }\n\n    get endTimestampOffset() {\n        return this.#endTimestampOffset;\n    }\n\n    get startTimestamp() {\n        return this.#startTimestamp;\n    }\n\n    get startTimestampOffset() {\n        return this.#startTimestampOffset;\n    }\n}\n","import __TimeSlice__ from './TimeSlice';\nimport { RANGE_FROM, RANGE_TO } from '../constants';\nimport { TimeSlice, TimeSliceFactory } from '../types';\nimport { getter, struct } from '../../../../../utils';\nimport { withTimezone } from '../utils';\n\nconst factory = ((...args: any[]) => {\n    let tz = withTimezone().tz.current;\n    let slice = new __TimeSlice__(tz, ...args);\n\n    return struct({\n        from: getter(() => slice.startTimestamp, false),\n        to: getter(() => slice.endTimestamp, false),\n        offsets: {\n            value: struct({\n                from: getter(() => slice.startTimestampOffset, false),\n                to: getter(() => slice.endTimestampOffset, false),\n            }),\n        },\n        span: getter(() => slice.numberOfMonths, false),\n        timezone: {\n            ...getter(() => tz, false),\n            set: (timezone: string | undefined | null) => {\n                const currentTimezone = tz;\n                tz = withTimezone(timezone ?? undefined).tz.current;\n                if (tz !== currentTimezone) {\n                    slice = new __TimeSlice__(tz, ...args);\n                }\n            },\n        },\n    }) as TimeSlice;\n}) as TimeSliceFactory;\n\nexport const UNBOUNDED_SLICE = factory();\nexport const sinceNow = () => factory(Date.now(), RANGE_FROM);\nexport const untilNow = () => factory(Date.now(), RANGE_TO);\n\nexport default ((...args: any[]) => (args.length === 0 ? UNBOUNDED_SLICE : factory(...args))) as TimeSliceFactory;\n","import {\n    CONTROLS_ALL,\n    CONTROLS_MINIMAL,\n    CONTROLS_NONE,\n    CURSOR_BACKWARD,\n    CURSOR_BLOCK_END,\n    CURSOR_BLOCK_START,\n    CURSOR_DOWNWARD,\n    CURSOR_FORWARD,\n    CURSOR_LINE_END,\n    CURSOR_LINE_START,\n    CURSOR_NEXT_BLOCK,\n    CURSOR_PREV_BLOCK,\n    CURSOR_UPWARD,\n    DAY_OF_WEEK_FORMATS,\n    FIRST_WEEK_DAYS,\n    FRAME_SIZES,\n    RANGE_FROM,\n    RANGE_TO,\n    SHIFT_BLOCK,\n    SHIFT_FRAME,\n    SHIFT_PERIOD,\n    SELECT_MANY,\n    SELECT_NONE,\n    SELECT_ONE,\n    SELECTION_COLLAPSE,\n    SELECTION_FARTHEST,\n    SELECTION_FROM,\n    SELECTION_NEAREST,\n    SELECTION_TO,\n    CALENDAR_CONTROLS,\n    CALENDAR_SELECTIONS,\n} from './constants';\nimport { Indexed } from '../../../../primitives/auxiliary/indexed';\nimport { WatchListCallable } from '../../../../primitives/reactive/watchlist';\n\nexport type WithGetSetProperty<T = any> = {\n    get _(): T;\n    set _($: T);\n};\n\n// export type WithGetSetProperties<K extends string, T = any> = {\n//     [P in K]: WithGetSetProperty<T, X>['_'];\n// };\n\nexport type WithTimeEdges<T = {}> = {\n    from: T;\n    to: T;\n};\n\nexport type DayOfWeekLabelFormat = (typeof DAY_OF_WEEK_FORMATS)[number];\nexport type FirstWeekDay = (typeof FIRST_WEEK_DAYS)[number];\nexport type WeekDay = FirstWeekDay | 2 | 3 | 4 | 5;\nexport type Month = WeekDay | 7 | 8 | 9 | 10 | 11;\nexport type MonthDays = 28 | 29 | 30 | 31;\nexport type Time = Date | number | string;\n\nexport enum TimeFlag {\n    CURRENT = 0x1,\n    CURSOR = 0x2,\n    WEEKEND = 0x4,\n    LINE_START = 0x8,\n    LINE_END = 0x10,\n    WITHIN_BLOCK = 0x20,\n    BLOCK_START = 0x40,\n    BLOCK_END = 0x80,\n    WITHIN_RANGE = 0x100,\n    RANGE_START = 0x200,\n    RANGE_END = 0x400,\n    WITHIN_SELECTION = 0x800,\n    SELECTION_START = 0x1000,\n    SELECTION_END = 0x2000,\n    ALL = 0x3fff,\n}\n\nexport type TimeFlagProp = Exclude<keyof typeof TimeFlag, 'ALL'>;\n\nexport type TimeFrameCursor =\n    | typeof CURSOR_BACKWARD\n    | typeof CURSOR_BLOCK_END\n    | typeof CURSOR_BLOCK_START\n    | typeof CURSOR_DOWNWARD\n    | typeof CURSOR_FORWARD\n    | typeof CURSOR_LINE_END\n    | typeof CURSOR_LINE_START\n    | typeof CURSOR_NEXT_BLOCK\n    | typeof CURSOR_PREV_BLOCK\n    | typeof CURSOR_UPWARD;\n\nexport type TimeFrameSelection =\n    | typeof SELECTION_COLLAPSE\n    | typeof SELECTION_FARTHEST\n    | typeof SELECTION_FROM\n    | typeof SELECTION_NEAREST\n    | typeof SELECTION_TO;\n\nexport type TimeFrameRangeEdge = typeof RANGE_FROM | typeof RANGE_TO;\nexport type TimeFrameShift = typeof SHIFT_BLOCK | typeof SHIFT_FRAME | typeof SHIFT_PERIOD;\nexport type TimeFrameSize = (typeof FRAME_SIZES)[number];\n\ntype TimeFrameBlockMetrics<T extends string> = {\n    [K in T]: Readonly<WithTimeEdges<number>> & { readonly units: number };\n};\n\nexport type TimeFrameBlock = TimeFrameBlockMetrics<'inner' | 'outer'> &\n    Readonly<{\n        [K: number]: readonly [number, number];\n        month: Month;\n        year: number;\n    }>;\n\nexport type TimeSlice = Readonly<WithTimeEdges<number>> &\n    Readonly<{\n        offsets: Readonly<WithTimeEdges<number>>;\n        span: number;\n    }> & {\n        get timezone(): string;\n        set timezone(value: string | undefined | null);\n    };\n\nexport type TimeSliceFactory = {\n    (fromTime?: Time, toTime?: Time): TimeSlice;\n    (time?: Time, timeEdge?: TimeFrameRangeEdge): TimeSlice;\n};\n\nexport const enum CalendarShiftControlFlag {\n    PREV = 0x1,\n    BLOCK = 0x0,\n    FRAME = 0x2,\n    PERIOD = 0x4,\n}\n\nexport enum CalendarShiftControlsFlag {\n    PREV_PERIOD = CalendarShiftControlFlag.PREV | CalendarShiftControlFlag.PERIOD,\n    PREV_FRAME = CalendarShiftControlFlag.PREV | CalendarShiftControlFlag.FRAME,\n    PREV = CalendarShiftControlFlag.PREV | CalendarShiftControlFlag.BLOCK,\n    NEXT = CalendarShiftControlFlag.BLOCK,\n    NEXT_FRAME = CalendarShiftControlFlag.FRAME,\n    NEXT_PERIOD = CalendarShiftControlFlag.PERIOD,\n}\n\nexport type CalendarShiftControl = keyof typeof CalendarShiftControlsFlag;\nexport type CalendarShiftControls = (typeof CALENDAR_CONTROLS)[number];\nexport type CalendarSelection = (typeof CALENDAR_SELECTIONS)[number];\n\nexport type CalendarConfig = {\n    blocks?: TimeFrameSize;\n    controls?: CalendarShiftControls;\n    firstWeekDay?: FirstWeekDay;\n    fixedBlockHeight?: boolean;\n    highlight?: CalendarSelection | string;\n    locale?: string;\n    minified?: boolean;\n    timeslice?: TimeSlice;\n    timezone?: string;\n    trackCurrentDay?: boolean;\n};\n\nexport type CalendarFlagsRecord = Readonly<{\n    [K in TimeFlagProp]?: 1;\n}>;\n\nexport type CalendarBlock = Readonly<{\n    datetime: string;\n    label: string;\n    month: number;\n    year: number;\n}>;\n\nexport type CalendarBlockCellData = Readonly<{\n    datetime: string;\n    flags: CalendarFlagsRecord;\n    index: number;\n    label: string;\n    timestamp: number;\n}>;\n\nexport type CalendarDayOfWeekData = Readonly<{\n    flags: CalendarFlagsRecord;\n    labels: Readonly<{ [K in DayOfWeekLabelFormat]: string }>;\n}>;\n\nexport type IndexedCalendarBlock = Indexed<Indexed<CalendarBlockCellData>> & CalendarBlock;\n\nexport type CalendarGridControls = Readonly<{\n    [P in CalendarShiftControl]?: (evt?: Event) => boolean;\n}>;\n\nexport type CalendarGridControlRecord = [CalendarShiftControl, Exclude<CalendarGridControls[CalendarShiftControl], undefined>];\n\nexport type CalendarGrid = Indexed<IndexedCalendarBlock> &\n    Readonly<{\n        config: {\n            (config?: CalendarConfig): CalendarConfig;\n            cursorIndex: WithGetSetProperty<(this: CalendarConfig, evt: Event) => number | undefined>['_'];\n            shiftFactor: WithGetSetProperty<(this: CalendarConfig, evt: Event, target: CalendarShiftControl) => number | undefined>['_'];\n            watch: WithGetSetProperty<WatchListCallable<any, CalendarConfig>>['_'];\n        };\n        controls: Indexed<CalendarGridControlRecord> & CalendarGridControls;\n        cursor: (evt?: Event) => boolean;\n        highlight: WithTimeEdges<WithGetSetProperty<number | undefined>['_']> & Readonly<{ blank: boolean }>;\n        rowspan: number;\n        weekdays: Indexed<CalendarDayOfWeekData>;\n    }>;\n\nexport type CalendarFacade = {\n    (init?: CalendarConfig | TimeFrameSize | WatchListCallable<any, CalendarConfig>): Readonly<{\n        readonly grid: CalendarGrid;\n        readonly kill: () => void;\n    }>;\n    readonly controls: Readonly<{\n        ALL: typeof CONTROLS_ALL;\n        MINIMAL: typeof CONTROLS_MINIMAL;\n        NONE: typeof CONTROLS_NONE;\n    }>;\n    readonly highlight: Readonly<{\n        ONE: typeof SELECT_ONE;\n        MANY: typeof SELECT_MANY;\n        NONE: typeof SELECT_NONE;\n    }>;\n    readonly slice: TimeSliceFactory &\n        Readonly<{\n            FROM: typeof RANGE_FROM;\n            SINCE_NOW: TimeSlice;\n            TO: typeof RANGE_TO;\n            UNBOUNDED: TimeSlice;\n            UNTIL_NOW: TimeSlice;\n        }>;\n};\n\nexport type CalendarWatchAtoms = Partial<WithTimeEdges<number>> & {\n    blocks?: TimeFrameSize;\n    cells?: number;\n    controls?: CalendarShiftControls;\n    cursor?: number;\n    highlight?: CalendarSelection;\n    locale?: string;\n    minified?: boolean;\n    origin?: number;\n    today: number;\n    timezone?: string;\n};\n","import { CalendarFlagsRecord, TimeFlag, TimeFlagProp } from '../../types';\nimport { isString, struct, withFreezeProxyHandlers } from '../../../../../../utils';\n\nconst createFlagsRecord = (() => {\n    const CACHE = {} as { [K: number]: CalendarFlagsRecord };\n    const FLAG_PROPS = Object.keys(TimeFlag).filter(prop => isNaN(+prop)) as TimeFlagProp[];\n\n    const isFlagProp = (property: string | symbol): property is TimeFlagProp =>\n        property !== 'ALL' && isString(property) && FLAG_PROPS.includes(property as TimeFlagProp);\n\n    return (flags: number): CalendarFlagsRecord => {\n        const flagsTruncated = flags & TimeFlag.ALL;\n\n        if (!CACHE[flagsTruncated]) {\n            CACHE[flagsTruncated] = new Proxy(\n                struct({\n                    valueOf: { value: () => flagsTruncated },\n                }),\n                withFreezeProxyHandlers({\n                    get: (target: {}, property: string | symbol) => {\n                        switch (property) {\n                            case 'valueOf':\n                                return target.valueOf;\n                            case Symbol.toStringTag:\n                                return '_';\n                            default:\n                                if (!isFlagProp(property)) return;\n                        }\n\n                        return flagsTruncated & (TimeFlag[property] as number) ? 1 : undefined;\n                    },\n                })\n            ) as CalendarFlagsRecord;\n        }\n\n        return CACHE[flagsTruncated] as CalendarFlagsRecord;\n    };\n})();\n\nexport default createFlagsRecord;\n","import { identity, isString } from '../../../utils';\nimport type { Indexed, IndexedMapIteratorFactory } from './types';\n\nexport const indexedProxyGetTrap =\n    <V>(getter: (index: number) => V) =>\n    (target: Indexed<V>, property: string | symbol, receiver: any) => {\n        if (isString(property)) {\n            const index = +property;\n            if (index >= 0 && index < target.length) {\n                return getter(index);\n            }\n        }\n        return Reflect.get(target, property, receiver);\n    };\n\nexport const mapIteratorFactory: IndexedMapIteratorFactory = function* (callback = identity, thisArg: any) {\n    for (let i = 0; i < this.length; i++) {\n        yield callback.call(thisArg, this[i], i, this);\n    }\n};\n","import { isFunction, isNumber, struct, structFrom, truthify } from '../../../utils';\nimport { indexedProxyGetTrap, mapIteratorFactory } from './helpers';\nimport type { Indexed, IndexedMapIteratorCallback } from './types';\n\nconst __INDEXED_PROTO__ = Object.freeze(\n    struct<\n        Readonly<{\n            [Symbol.iterator]: (this: Indexed) => Generator<any>;\n            map: Indexed['map'];\n        }>\n    >({\n        [Symbol.iterator]: {\n            value(this: Indexed) {\n                return mapIteratorFactory.call(this);\n            },\n        },\n        map: {\n            value(this: Indexed, callback?: IndexedMapIteratorCallback, thisArg?: any) {\n                return [...mapIteratorFactory.call(this, callback, thisArg)];\n            },\n        },\n    })\n);\n\nexport const createIndexed = <T extends Record<any, any> = {}, V = any>(\n    iterablePropertyDescriptorsOrSize: PropertyDescriptorMap | (() => number) | number,\n    iteratorValueGetter: (index: number) => V\n): Indexed<V> & T => {\n    if (isFunction(iterablePropertyDescriptorsOrSize)) {\n        return createIndexed<T, V>(\n            {\n                length: { get: iterablePropertyDescriptorsOrSize },\n            },\n            iteratorValueGetter\n        );\n    }\n\n    if (isNumber(iterablePropertyDescriptorsOrSize)) {\n        return createIndexed<T, V>(\n            {\n                length: { value: iterablePropertyDescriptorsOrSize },\n            },\n            iteratorValueGetter\n        );\n    }\n\n    return new Proxy(structFrom(__INDEXED_PROTO__, iterablePropertyDescriptorsOrSize), {\n        get: indexedProxyGetTrap(iteratorValueGetter),\n        set: truthify,\n    }) as Indexed<V> & T;\n};\n\nexport default createIndexed;\n","import $restamper, { RestamperWithTimezone, systemToTimezone, timezoneToSystem } from '../../../core/Localization/datetime/restamper';\nimport { createWatchlist, isWatchlistUnsubscribeToken } from '../../reactive/watchlist';\nimport { enumerable, getter, isNull, struct } from '../../../utils';\nimport type { Today, TodayWatchListEntries } from './types';\nimport { clock } from '../clock';\n\nexport const today = (() => {\n    const timezones = new Map<NonNullable<RestamperWithTimezone['tz']['current']>, Today>();\n    const restamper = $restamper();\n\n    const getTimestampWithTomorrowOffset = (withTimestamp = Date.now()) => {\n        const restampedDate = new Date(timezoneToSystem(restamper, withTimestamp));\n        const currentTimestamp = systemToTimezone(restamper, restampedDate.setHours(0, 0, 0, 0)); // current day start timestamp\n        const nextTimestamp = systemToTimezone(restamper, restampedDate.setDate(restampedDate.getDate() + 1)); // next day start timestamp\n        return [currentTimestamp, nextTimestamp - currentTimestamp] as const;\n    };\n\n    return (timezone?: RestamperWithTimezone['tz']['current']) => {\n        restamper.tz = timezone;\n\n        const tz = restamper.tz.current!;\n\n        return (\n            timezones.get(tz) ??\n            (() => {\n                let timestamp: number | null = null;\n                let tomorrowOffset: number | null = null;\n                let unsubscribeClock: ReturnType<Today['subscribe']> | null = null;\n\n                const getTimestamp = () => {\n                    restamper.tz = tz; // switch restamper to this timezone\n                    return timestamp ?? getTimestampWithTomorrowOffset()[0];\n                };\n\n                const refreshTimestamps = (withTimestamp = Date.now()) => {\n                    restamper.tz = tz; // switch restamper to this timezone\n                    [timestamp, tomorrowOffset] = getTimestampWithTomorrowOffset(withTimestamp);\n                };\n\n                const { cancelSubscriptions, requestNotification, subscribe, on } = createWatchlist<TodayWatchListEntries>({\n                    timestamp: getTimestamp,\n                });\n\n                on.resume = () => {\n                    unsubscribeClock = clock.subscribe(snapshot => {\n                        if (isWatchlistUnsubscribeToken(snapshot)) return;\n\n                        const { now } = snapshot;\n\n                        if (isNull(timestamp) || isNull(tomorrowOffset)) return refreshTimestamps(now);\n                        if (now - timestamp < tomorrowOffset) return;\n\n                        refreshTimestamps(now);\n                        requestNotification();\n                    });\n                };\n\n                on.idle = () => {\n                    unsubscribeClock?.();\n                    timestamp = tomorrowOffset = unsubscribeClock = null;\n                };\n\n                const instance = struct<Today>({\n                    cancelSubscriptions: enumerable(cancelSubscriptions),\n                    timestamp: getter(getTimestamp),\n                    timezone: enumerable(tz),\n                    subscribe: enumerable(subscribe),\n                });\n\n                timezones.set(tz, instance);\n                return instance;\n            })()\n        );\n    };\n})();\n\nexport default today;\n","import { downsizeTimeFrame, resolveTimeFrameBlockSize } from '../common/utils';\nimport $timeslice, { UNBOUNDED_SLICE } from '../../timeslice';\nimport { computeTimestampOffset } from '../../utils';\nimport {\n    CURSOR_BACKWARD,\n    CURSOR_BLOCK_END,\n    CURSOR_BLOCK_START,\n    CURSOR_DOWNWARD,\n    CURSOR_FORWARD,\n    CURSOR_LINE_END,\n    CURSOR_LINE_START,\n    CURSOR_NEXT_BLOCK,\n    CURSOR_PREV_BLOCK,\n    CURSOR_UPWARD,\n    DAY_MS,\n    FIRST_WEEK_DAYS,\n    SELECTION_COLLAPSE,\n    SELECTION_FARTHEST,\n    SELECTION_FROM,\n    SELECTION_NEAREST,\n    SELECTION_TO,\n    SHIFT_BLOCK,\n    SHIFT_FRAME,\n    SHIFT_PERIOD,\n} from '../../constants';\nimport createFlagsRecord from '../common/flags';\nimport { createIndexed } from '../../../../../../primitives/auxiliary/indexed';\nimport type { WatchListCallable } from '../../../../../../primitives/reactive/watchlist';\nimport { BASE_LOCALE } from '../../../../../../core/Localization/datetime/restamper/constants';\nimport {\n    clamp,\n    enumerable,\n    isBitSafeInteger,\n    isBoolean,\n    isFunction,\n    isInfinity,\n    isNullish,\n    isUndefined,\n    mid,\n    mod,\n    struct,\n} from '../../../../../../utils';\nimport today from '../../../../../../primitives/time/today';\nimport {\n    CalendarBlock,\n    CalendarBlockCellData,\n    CalendarDayOfWeekData,\n    FirstWeekDay,\n    IndexedCalendarBlock,\n    Time,\n    TimeFrameBlock,\n    TimeFrameCursor,\n    TimeFrameSelection,\n    TimeFrameShift,\n    TimeFrameSize,\n    TimeSlice,\n} from '../../types';\n\nexport default abstract class TimeFrame {\n    static #DEFAULT_LOCALE = BASE_LOCALE;\n\n    #cursorBlockIndex: number = 0;\n    #cursorBlockStartIndex!: number;\n    #cursorBlockEndIndex!: number;\n    #cursorStartIndex: number = -1;\n    #cursorEndIndex: number = -1;\n    #cursorIndex!: number;\n    #cursorOffset!: number;\n    #cursorTimestamp!: number;\n    #dynamicBlockHeight: boolean = false;\n    #effect?: WatchListCallable;\n    #firstWeekDay: FirstWeekDay = 0;\n    #frameBlocksCached: IndexedCalendarBlock[] = [];\n    #locale: string = TimeFrame.#DEFAULT_LOCALE;\n    #maxFrameSize: TimeFrameSize = 12;\n    #selectionStartTimestamp?: number;\n    #selectionEndTimestamp?: number;\n    #size: TimeFrameSize = 1;\n    #_timeslice!: TimeSlice;\n    #timeslice!: TimeSlice;\n    #timezone!: string;\n    #today = today();\n    #unwatchCurrentDay?: () => void;\n\n    #fromTimestamp: number = -Infinity;\n    #toTimestamp: number = Infinity;\n    #fromBlockOffsetFromOrigin: number = -Infinity;\n    #toBlockOffsetFromOrigin: number = Infinity;\n    #numberOfBlocks: number = Infinity;\n    #numberOfUnits: number = 0;\n\n    protected daysInWeek: number = 0;\n    protected origin!: number;\n    protected originTimestamp!: number;\n\n    protected abstract getCursorBlockOriginTimestampOffset(timestamp: number): number;\n    protected abstract getDayOfWeekAtIndex(index: number): CalendarDayOfWeekData;\n    protected abstract getEdgeBlockOffsetsFromOrigin(): [number, number];\n    protected abstract getFormattedDataForBlockCell(time: Time): [string, string];\n    protected abstract getFormattedDataForFrameBlock(time: Time): [string, string];\n    protected abstract getFrameBlockAtIndex(index: number): TimeFrameBlock;\n    protected abstract getUnitsForFrameBlockAtIndex(index: number): number;\n    protected abstract getUnitsOffsetForTimestamp(startTimestamp: number, timestamp: number): number;\n    protected abstract reoriginate(): void;\n    protected abstract reslice(): void;\n    protected abstract shiftOrigin(offset: number): void;\n\n    abstract getTimestampAtIndex(indexOffset: number): number;\n    abstract withCurrentDayTimestamp(): void;\n\n    abstract get currentDayTimestamp(): number;\n    abstract get rowspan(): number;\n\n    #daysOfWeek = createIndexed(() => this.daysInWeek, this.getDayOfWeekAtIndex.bind(this));\n    #frameBlocks = createIndexed(() => this.#size, this.#getFrameBlockAtIndex.bind(this));\n\n    protected get fromTimestamp() {\n        return this.#fromTimestamp;\n    }\n\n    protected get toTimestamp() {\n        return this.#toTimestamp;\n    }\n\n    protected get numberOfBlocks() {\n        return this.#numberOfBlocks;\n    }\n\n    get blankSelection() {\n        return this.#selectionStartTimestamp === this.#selectionEndTimestamp && isUndefined(this.#selectionEndTimestamp);\n    }\n\n    get cursor() {\n        return this.#cursorIndex ?? -1;\n    }\n\n    get daysOfWeek() {\n        return this.#daysOfWeek;\n    }\n\n    get dynamicBlockHeight(): boolean {\n        return this.#dynamicBlockHeight;\n    }\n\n    set dynamicBlockHeight(bool: boolean | null | undefined) {\n        if (isNullish(bool)) this.#dynamicBlockHeight = !!bool;\n        else if (isBoolean(bool)) this.#dynamicBlockHeight = bool;\n    }\n\n    set effect(effect: WatchListCallable | null | undefined) {\n        if (isNullish(effect)) this.#effect = undefined;\n        else if (isFunction(effect)) this.#effect = effect;\n    }\n\n    get firstWeekDay(): FirstWeekDay {\n        return this.#firstWeekDay;\n    }\n\n    set firstWeekDay(day: FirstWeekDay | null | undefined) {\n        if (!isNullish(day)) {\n            if (!FIRST_WEEK_DAYS.includes(day)) return;\n            if (this.#firstWeekDay === (this.#firstWeekDay = day)) return;\n        } else this.firstWeekDay = 0;\n    }\n\n    get frameBlocks() {\n        return this.#frameBlocks;\n    }\n\n    get isAtEnd() {\n        return !isInfinity(this.#toBlockOffsetFromOrigin) && this.#toBlockOffsetFromOrigin === this.#size - 1;\n    }\n\n    get isAtStart() {\n        return !isInfinity(this.#fromBlockOffsetFromOrigin) && this.#fromBlockOffsetFromOrigin === 0;\n    }\n\n    get locale(): string {\n        return this.#locale;\n    }\n\n    set locale(locale: string | Intl.Locale | null | undefined) {\n        const currentLocale = this.#locale;\n\n        if (isNullish(locale)) {\n            this.#locale = TimeFrame.#DEFAULT_LOCALE;\n        } else if (typeof Intl !== 'undefined') {\n            try {\n                this.#locale = new Intl.Locale(locale as NonNullable<typeof locale>).toString();\n            } catch {\n                this.#locale = TimeFrame.#DEFAULT_LOCALE;\n            }\n        }\n\n        if (this.#locale !== currentLocale) this.refreshFrame(true);\n    }\n\n    get selectionStart() {\n        return this.#selectionStartTimestamp;\n    }\n\n    get selectionEnd() {\n        return this.#selectionEndTimestamp;\n    }\n\n    get size(): TimeFrameSize {\n        return this.#size;\n    }\n\n    set size(size: TimeFrameSize | null | undefined) {\n        const nextFrameSize = Math.min((!isNullish(size) && resolveTimeFrameBlockSize(size)) || 1, this.#maxFrameSize) as TimeFrameSize;\n        if (this.#size === (this.#size = nextFrameSize)) return;\n        this.#shiftOriginIfNecessary();\n        this.refreshFrame();\n    }\n\n    get timeslice(): TimeSlice {\n        return this.#timeslice;\n    }\n\n    set timeslice(timeslice: TimeSlice | null | undefined) {\n        if (timeslice === this.#_timeslice || (isNullish(timeslice) && this.#_timeslice === UNBOUNDED_SLICE)) return;\n        const { from, to, timezone } = (this.#_timeslice = timeslice ?? UNBOUNDED_SLICE);\n        this.#timeslice = $timeslice(from, to);\n        this.timezone = timezone;\n    }\n\n    get timezone(): string {\n        return this.#timezone;\n    }\n\n    set timezone(timezone: string | null | undefined) {\n        this.#timeslice.timezone = timezone;\n        this.#timezone = this.#timeslice.timezone;\n        this.#today = today(this.#timezone);\n\n        if (this.#unwatchCurrentDay) {\n            this.#unwatchCurrentDay();\n            this.#unwatchCurrentDay = this.#today.subscribe(this.refreshFrame.bind(this, true));\n        }\n\n        this.#applyTimeSliceUpdate();\n    }\n\n    set trackCurrentDay(bool: boolean | null | undefined) {\n        if (isBoolean(bool)) {\n            if (bool && !this.#unwatchCurrentDay) {\n                this.#unwatchCurrentDay = this.#today.subscribe(this.refreshFrame.bind(this, true));\n            } else if (!bool && this.#unwatchCurrentDay) {\n                this.#unwatchCurrentDay();\n                this.#unwatchCurrentDay = undefined;\n            }\n        } else if (isNullish(bool)) this.trackCurrentDay = false;\n    }\n\n    get units() {\n        return this.#numberOfUnits;\n    }\n\n    #applyTimeSliceUpdate() {\n        const { from, to, span, offsets } = this.#timeslice;\n\n        this.#fromTimestamp = from - offsets.from;\n        this.#toTimestamp = to - offsets.to;\n        this.#numberOfBlocks = span;\n\n        const selectionStartTimestamp = isUndefined(this.#selectionStartTimestamp)\n            ? this.#selectionStartTimestamp\n            : Math.max(this.#selectionStartTimestamp, from);\n\n        const selectionEndTimestamp = isUndefined(this.#selectionEndTimestamp)\n            ? this.#selectionEndTimestamp\n            : Math.min(this.#selectionEndTimestamp, to);\n\n        if (selectionStartTimestamp === this.#selectionStartTimestamp || selectionEndTimestamp === this.#selectionEndTimestamp) {\n            this.#selectionStartTimestamp = selectionStartTimestamp;\n            this.#selectionEndTimestamp = selectionEndTimestamp;\n        } else this.#selectionStartTimestamp = this.#selectionEndTimestamp = undefined;\n\n        this.reslice();\n        this.#maxFrameSize = downsizeTimeFrame(12, this.numberOfBlocks);\n        this.#size = downsizeTimeFrame(this.#size, this.numberOfBlocks);\n\n        this.shiftFrameToTimestamp(this.#cursorTimestamp);\n    }\n\n    #getClampedFrameOffset(frameOffset: number) {\n        return clamp(this.#fromBlockOffsetFromOrigin, frameOffset || 0, this.#toBlockOffsetFromOrigin - this.#size + 1);\n    }\n\n    #getContainedTimestamp(time?: Time, withMidRangeFallback = true): [number, number] {\n        let timestamp = new Date(time as Time).getTime();\n\n        if (isNaN(timestamp)) return this.#getContainedTimestamp(Date.now());\n\n        const { from, to } = this.#timeslice;\n        const clampedTimestamp = clamp(from, timestamp, to);\n\n        if (clampedTimestamp !== timestamp && withMidRangeFallback) {\n            timestamp = mid(from, to);\n            if (isNaN(timestamp) || isInfinity(timestamp)) {\n                timestamp = clampedTimestamp;\n            }\n        } else timestamp = clampedTimestamp;\n\n        const offset = computeTimestampOffset(timestamp, this.#timezone);\n\n        return [timestamp - offset, offset];\n    }\n\n    #getFrameBlockAtIndex(index: number): IndexedCalendarBlock | undefined {\n        if (!(isBitSafeInteger(index) && index >= 0 && index < this.#size)) return;\n\n        if (!this.#frameBlocksCached[index]) {\n            const block = this.getFrameBlockAtIndex(index);\n            if (!block) return undefined as unknown as IndexedCalendarBlock;\n\n            const [label, datetime] = this.getFormattedDataForFrameBlock(block[block.inner.from]![0] + DAY_MS / 2);\n            const blockStartIndex = block.outer.from;\n\n            this.#frameBlocksCached[index] = createIndexed<CalendarBlock>(\n                {\n                    datetime: enumerable(datetime),\n                    label: enumerable(label),\n                    length: enumerable(Math.ceil(block.outer.units / this.rowspan)),\n                    month: enumerable(block.month),\n                    year: enumerable(block.year),\n                },\n                index => {\n                    const indexOffset = index * this.rowspan;\n\n                    return createIndexed(this.rowspan, index => {\n                        const [timestamp, flags] = block[index + indexOffset] as (typeof block)[number];\n                        const [label, datetime] = this.getFormattedDataForBlockCell(timestamp + DAY_MS / 2);\n\n                        return struct({\n                            datetime: enumerable(datetime),\n                            flags: enumerable(createFlagsRecord(flags)),\n                            index: enumerable(blockStartIndex + index + indexOffset),\n                            label: enumerable(label),\n                            timestamp: enumerable(timestamp),\n                        }) as CalendarBlockCellData;\n                    });\n                }\n            );\n        }\n\n        return this.#frameBlocksCached[index] as IndexedCalendarBlock;\n    }\n\n    #shiftFrameCursorByOffset(offset: number): void {\n        if (offset === 0) return;\n        this.#cursorOffset += offset;\n        this.refreshFrame();\n    }\n\n    #shiftOrigin(offset: number) {\n        const clampedOffset = this.#getClampedFrameOffset(offset);\n        if (clampedOffset) {\n            this.shiftOrigin(clampedOffset);\n            this.#fromBlockOffsetFromOrigin -= clampedOffset;\n            this.#toBlockOffsetFromOrigin -= clampedOffset;\n            this.#cursorBlockIndex = mod(this.#cursorBlockIndex - clampedOffset, this.#size);\n            this.refreshFrame();\n        }\n    }\n\n    #shiftOriginIfNecessary() {\n        const size_1 = this.#size - 1;\n        const offset = Math.min(size_1 - (this.origin % this.#size), this.#toBlockOffsetFromOrigin) - size_1;\n        if (offset) this.#shiftOrigin(offset);\n    }\n\n    protected initialize() {\n        this.timeslice = UNBOUNDED_SLICE;\n    }\n\n    protected refreshFrame(skipCursorRefresh = false): void {\n        this.#frameBlocksCached.length = 0;\n\n        if (!(isUndefined(this.#cursorOffset) || skipCursorRefresh)) {\n            const cursorBlock = this.getFrameBlockAtIndex(this.#cursorBlockIndex) as TimeFrameBlock;\n            const { from: startIndex, to: endIndex } = cursorBlock.inner;\n            const [nextCursorTimestamp] = this.#getContainedTimestamp(this.getTimestampAtIndex(startIndex + this.#cursorOffset), false);\n\n            this.#cursorOffset = this.getUnitsOffsetForTimestamp(this.getTimestampAtIndex(startIndex), nextCursorTimestamp);\n\n            const nextCursorOffset = startIndex + this.#cursorOffset;\n            const clampedNextCursorOffset = clamp(startIndex, nextCursorOffset, endIndex);\n\n            if (clampedNextCursorOffset > nextCursorOffset) {\n                this.#cursorOffset = this.getUnitsForFrameBlockAtIndex(--this.#cursorBlockIndex) + nextCursorOffset - clampedNextCursorOffset;\n                if (this.#cursorBlockIndex >= 0) return this.refreshFrame();\n                this.#cursorBlockIndex = this.#size - 1;\n                return this.shiftFrameByOffset(-1, SHIFT_FRAME);\n            }\n\n            if (clampedNextCursorOffset < nextCursorOffset) {\n                this.#cursorOffset = nextCursorOffset - clampedNextCursorOffset - 1;\n                if (++this.#cursorBlockIndex < this.#size) return this.refreshFrame();\n                this.#cursorBlockIndex = 0;\n                return this.shiftFrameByOffset(1, SHIFT_FRAME);\n            }\n\n            this.#cursorBlockStartIndex = startIndex;\n            this.#cursorBlockEndIndex = endIndex;\n            this.#cursorTimestamp = this.#getContainedTimestamp(this.getTimestampAtIndex(nextCursorOffset), false)[0];\n            this.#cursorOffset = this.getCursorBlockOriginTimestampOffset(this.#cursorTimestamp);\n            this.#cursorIndex = startIndex + this.#cursorOffset;\n\n            const firstBlock = this.#cursorBlockIndex > 0 ? (this.getFrameBlockAtIndex(0) as TimeFrameBlock) : cursorBlock;\n            const lastBlock = this.#cursorBlockIndex < this.#size - 1 ? (this.getFrameBlockAtIndex(this.#size - 1) as TimeFrameBlock) : cursorBlock;\n\n            this.#cursorStartIndex = firstBlock.inner.from;\n            this.#cursorEndIndex = lastBlock.inner.to;\n            this.#numberOfUnits = lastBlock.outer.to + 1;\n        }\n\n        this.withCurrentDayTimestamp();\n        this.#effect?.();\n    }\n\n    shiftFrameByOffset(offset?: number, offsetType?: TimeFrameShift) {\n        if (offset && isBitSafeInteger(offset)) {\n            switch (offsetType) {\n                case SHIFT_BLOCK:\n                    return this.#shiftOrigin(offset);\n                case SHIFT_PERIOD:\n                    return this.#shiftOrigin(offset * 12);\n                case SHIFT_FRAME:\n                default:\n                    return this.#shiftOrigin(offset * this.#size);\n            }\n        }\n    }\n\n    shiftFrameCursor(nextCursorPosition: TimeFrameCursor | number) {\n        switch (nextCursorPosition) {\n            case CURSOR_BACKWARD:\n                return this.#shiftFrameCursorByOffset(-1);\n            case CURSOR_FORWARD:\n                return this.#shiftFrameCursorByOffset(1);\n            case CURSOR_UPWARD:\n                return this.#shiftFrameCursorByOffset(-this.rowspan);\n            case CURSOR_DOWNWARD:\n                return this.#shiftFrameCursorByOffset(this.rowspan);\n            case CURSOR_BLOCK_START:\n                return this.#shiftFrameCursorByOffset(this.#cursorBlockStartIndex - this.#cursorIndex);\n            case CURSOR_BLOCK_END:\n                return this.#shiftFrameCursorByOffset(this.#cursorBlockEndIndex - this.#cursorIndex);\n            case CURSOR_LINE_START:\n                return this.#shiftFrameCursorByOffset(-(this.#cursorIndex % this.rowspan));\n            case CURSOR_LINE_END:\n                return this.#shiftFrameCursorByOffset(this.rowspan - ((this.#cursorIndex % this.rowspan) + 1));\n            case CURSOR_PREV_BLOCK:\n                return this.#shiftFrameCursorByOffset(-this.getUnitsForFrameBlockAtIndex((this.#cursorBlockIndex ?? 0) - 1));\n            case CURSOR_NEXT_BLOCK:\n                return this.#shiftFrameCursorByOffset(this.getUnitsForFrameBlockAtIndex(this.#cursorBlockIndex ?? 0));\n        }\n\n        if (nextCursorPosition < 0) return;\n\n        if (nextCursorPosition >= this.#cursorStartIndex && nextCursorPosition <= this.#cursorEndIndex) {\n            return this.#shiftFrameCursorByOffset(nextCursorPosition - this.#cursorIndex);\n        }\n    }\n\n    shiftFrameToTimestamp(timestamp?: number) {\n        this.#cursorTimestamp = this.originTimestamp = this.#getContainedTimestamp(timestamp, false).reduce((a, b) => a + b);\n        this.#cursorOffset = this.getCursorBlockOriginTimestampOffset(this.#cursorTimestamp);\n        this.reoriginate();\n\n        [this.#fromBlockOffsetFromOrigin, this.#toBlockOffsetFromOrigin] = this.getEdgeBlockOffsetsFromOrigin();\n        this.#shiftOriginIfNecessary();\n        this.refreshFrame();\n\n        this.#shiftFrameCursorByOffset(this.getUnitsOffsetForTimestamp(this.getTimestampAtIndex(this.#cursorIndex), this.#cursorTimestamp));\n    }\n\n    clearSelection() {\n        if (this.blankSelection) return;\n        this.#selectionStartTimestamp = this.#selectionEndTimestamp = undefined;\n        this.refreshFrame(true);\n    }\n\n    updateSelection(time: Time, selection?: TimeFrameSelection) {\n        const currentStart = this.#selectionStartTimestamp as number;\n        const currentEnd = this.#selectionEndTimestamp as number;\n        const timestamp = this.#getContainedTimestamp(time, false).reduce((a, b) => a + b);\n\n        if (selection === SELECTION_FARTHEST) {\n            if (timestamp <= currentStart) selection = SELECTION_TO;\n            else if (timestamp >= currentEnd) selection = SELECTION_FROM;\n        }\n\n        switch (selection) {\n            case SELECTION_FROM:\n                this.#selectionStartTimestamp = timestamp;\n                this.#selectionEndTimestamp = Math.max(this.#selectionStartTimestamp, currentEnd ?? timestamp);\n                break;\n            case SELECTION_TO:\n                this.#selectionEndTimestamp = timestamp;\n                this.#selectionStartTimestamp = Math.min(currentStart ?? timestamp, this.#selectionEndTimestamp);\n                break;\n            case SELECTION_FARTHEST:\n            case SELECTION_NEAREST: {\n                let startDistance = Math.abs(timestamp - (currentStart ?? timestamp));\n                let endDistance = Math.abs(timestamp - (currentEnd ?? timestamp));\n\n                if (selection === SELECTION_NEAREST) {\n                    [startDistance, endDistance] = [endDistance, startDistance];\n                }\n\n                if (startDistance > endDistance) {\n                    this.#selectionStartTimestamp = timestamp;\n                } else this.#selectionEndTimestamp = timestamp;\n\n                break;\n            }\n            case SELECTION_COLLAPSE:\n            default:\n                this.#selectionStartTimestamp = this.#selectionEndTimestamp = timestamp;\n                break;\n        }\n\n        if (this.#selectionStartTimestamp !== currentStart || this.#selectionEndTimestamp !== currentEnd) {\n            this.refreshFrame(true);\n        }\n    }\n}\n","import TimeFrame from './TimeFrame';\nimport { getWeekendDays } from '../common/utils';\nimport { computeTimestampOffset, getEdgesDistance, getMonthDays, getTimezoneDateParts, startOfMonth, startOfWeek, withTimezone } from '../../utils';\nimport { DAY_MS, DAY_OF_WEEK_FORMATS, MAXIMUM_MONTH_UNITS } from '../../constants';\nimport { systemToTimezone, timezoneToSystem } from '../../../../../../core/Localization/datetime/restamper';\nimport createFlagsRecord from '../common/flags';\nimport {\n    enumerable,\n    isBitSafeInteger,\n    isInfinity,\n    isString,\n    isUndefined,\n    struct,\n    structFrom,\n    withFreezeProxyHandlers,\n} from '../../../../../../utils';\nimport {\n    CalendarDayOfWeekData,\n    DayOfWeekLabelFormat,\n    FirstWeekDay,\n    Month,\n    MonthDays,\n    Time,\n    TimeFlag,\n    TimeFrameBlock,\n    TimeFrameSelection,\n    WeekDay,\n} from '../../types';\n\nexport default class MonthFrame extends TimeFrame {\n    #daysInWeek = 7 as const;\n    #daysOfWeekCached: CalendarDayOfWeekData[] = [];\n    #daysOfWeekend: readonly WeekDay[] = getWeekendDays(this.firstWeekDay);\n    #currentDayTimestamp!: number;\n    #fromTimestamp: number = -Infinity;\n    #toTimestamp: number = Infinity;\n    #numberOfBlocks: number = Infinity;\n    #originMonthStartOffset!: WeekDay;\n    #originMonthStartTimestamp!: number;\n    #originYear!: number;\n    #selectionFromTimestamp?: number;\n    #selectionToTimestamp?: number;\n\n    protected daysInWeek: number = this.#daysInWeek;\n    protected declare origin: Month;\n\n    constructor() {\n        super();\n        this.initialize();\n    }\n\n    protected get fromTimestamp() {\n        return this.#fromTimestamp;\n    }\n\n    protected get toTimestamp() {\n        return this.#toTimestamp;\n    }\n\n    protected get numberOfBlocks() {\n        return this.#numberOfBlocks;\n    }\n\n    get currentDayTimestamp() {\n        return this.#currentDayTimestamp;\n    }\n\n    get dynamicBlockHeight(): boolean {\n        return super.dynamicBlockHeight;\n    }\n\n    set dynamicBlockHeight(bool: boolean | null | undefined) {\n        const current = this.dynamicBlockHeight;\n        super.dynamicBlockHeight = bool;\n        if (this.dynamicBlockHeight !== current) this.refreshFrame(true);\n    }\n\n    get rowspan() {\n        return this.#daysInWeek;\n    }\n\n    get firstWeekDay(): FirstWeekDay {\n        return super.firstWeekDay;\n    }\n\n    set firstWeekDay(day: FirstWeekDay | null | undefined) {\n        const current = this.firstWeekDay;\n        super.firstWeekDay = day;\n\n        if (this.firstWeekDay === current) return;\n\n        this.#daysOfWeekCached.length = 0;\n        this.#daysOfWeekend = getWeekendDays(this.firstWeekDay);\n        this.reoriginate();\n        this.refreshFrame();\n    }\n\n    #getBlockTimestampOffsetFromOrigin(timestamp: number) {\n        const offset = getEdgesDistance(timestamp, this.originTimestamp, this.timezone);\n        return timestamp < this.originTimestamp ? 0 - offset : offset;\n    }\n\n    #getDayOffsetTimestamp(fromTimestamp: Date | number, dayOffset = 0) {\n        const restamper = withTimezone(this.timezone);\n        const restampedTimestamp = timezoneToSystem(restamper, fromTimestamp);\n        const timestamp = systemToTimezone(restamper, restampedTimestamp + dayOffset * DAY_MS);\n        let [, , , hrs, mins] = getTimezoneDateParts(timestamp, this.timezone);\n        let timeOffset = 0;\n\n        if (hrs > 0 || mins > 0) {\n            hrs = (hrs > 12 ? 24 : 0) - hrs;\n            mins = (hrs > 1 ? 1 : -1) * mins;\n            timeOffset = hrs * 3600000 + mins * 60000;\n        }\n\n        return timestamp + timeOffset;\n    }\n\n    #getStartForTimestamp(timestamp?: number) {\n        return isUndefined(timestamp) || isInfinity(timestamp) ? timestamp : timestamp - computeTimestampOffset(timestamp, this.timezone);\n    }\n\n    #updateSelectionTimestamps() {\n        this.#selectionFromTimestamp = this.#getStartForTimestamp(this.selectionStart);\n        this.#selectionToTimestamp = this.#getStartForTimestamp(this.selectionEnd);\n    }\n\n    protected getCursorBlockOriginTimestampOffset(timestamp: number): number {\n        return getTimezoneDateParts(timestamp, this.timezone)[2] - 1;\n    }\n\n    protected getDayOfWeekAtIndex(index: number) {\n        if (!this.#daysOfWeekCached[index]) {\n            const date = new Date(this.getTimestampAtIndex(index));\n            let flags = 0;\n\n            if (this.#daysOfWeekend.includes(index as WeekDay)) flags |= TimeFlag.WEEKEND;\n            if (index === 0) flags |= TimeFlag.LINE_START;\n            else if (index === 6) flags |= TimeFlag.LINE_END;\n\n            const labelDescriptors = {} as {\n                [K in DayOfWeekLabelFormat]: {\n                    enumerable: true;\n                    value: string;\n                };\n            };\n\n            for (const format of DAY_OF_WEEK_FORMATS) {\n                labelDescriptors[format] = enumerable(\n                    date.toLocaleDateString(this.locale, { weekday: format, timeZone: this.timezone })\n                ) as (typeof labelDescriptors)[typeof format];\n            }\n\n            this.#daysOfWeekCached[index] = struct({\n                flags: enumerable(createFlagsRecord(flags)),\n                labels: enumerable(struct(labelDescriptors)),\n            }) as CalendarDayOfWeekData;\n        }\n\n        return this.#daysOfWeekCached[index] as CalendarDayOfWeekData;\n    }\n\n    protected getEdgeBlockOffsetsFromOrigin(): [number, number] {\n        return [this.#getBlockTimestampOffsetFromOrigin(this.#fromTimestamp), this.#getBlockTimestampOffsetFromOrigin(this.#toTimestamp)];\n    }\n\n    protected getFormattedDataForBlockCell(time: Time): [string, string] {\n        const [year, month, date] = getTimezoneDateParts(time, this.timezone);\n        return [Number(date).toLocaleString(this.locale), `${year}-${`${month + 1}`.padStart(2, '0')}-${`${date}`.padStart(2, '0')}`];\n    }\n\n    protected getFormattedDataForFrameBlock(time: Time): [string, string] {\n        const [year, month] = getTimezoneDateParts(time, this.timezone);\n        return [\n            new Date(time).toLocaleDateString(this.locale, { month: 'long', year: 'numeric', timeZone: this.timezone }),\n            `${year}-${`${month + 1}`.padStart(2, '0')}`,\n        ];\n    }\n\n    protected getFrameBlockAtIndex(index: number): TimeFrameBlock {\n        const [monthDays, month, year] = getMonthDays(this.origin, this.#originYear, index);\n        const innerStartIndex = index > 0 ? this.getFrameBlockAtIndex(index - 1).inner.to + 1 : this.#originMonthStartOffset;\n        const innerEndIndex = innerStartIndex + monthDays - 1;\n        const outerStartIndex = Math.floor(innerStartIndex / 7) * 7;\n        const outerEndAfterIndex = this.dynamicBlockHeight ? Math.ceil((innerEndIndex + 1) / 7) * 7 : outerStartIndex + MAXIMUM_MONTH_UNITS;\n        const numberOfUnits = this.dynamicBlockHeight ? outerEndAfterIndex - outerStartIndex : MAXIMUM_MONTH_UNITS;\n\n        const proxyForIndexPropertyAccess = new Proxy(\n            struct(),\n            withFreezeProxyHandlers({\n                get: (target: {}, property: string | symbol, receiver: {}) => {\n                    if (isString(property)) {\n                        const offset = +property;\n\n                        if (isBitSafeInteger(offset) && offset >= 0 && offset < numberOfUnits) {\n                            const index = outerStartIndex + offset;\n                            const timestamp = this.getTimestampAtIndex(index);\n                            const weekDay = (index % this.#daysInWeek) as WeekDay;\n\n                            let flags = timestamp === this.currentDayTimestamp ? TimeFlag.CURRENT : 0;\n\n                            if (index === this.cursor) flags |= TimeFlag.CURSOR;\n                            if (this.#daysOfWeekend.includes(weekDay)) flags |= TimeFlag.WEEKEND;\n\n                            if (weekDay === 0) flags |= TimeFlag.LINE_START;\n                            else if (weekDay === this.#daysInWeek - 1) flags |= TimeFlag.LINE_END;\n\n                            if (index >= innerStartIndex && index <= innerEndIndex) {\n                                if (index === innerStartIndex) flags |= TimeFlag.BLOCK_START;\n                                else if (index === innerEndIndex) flags |= TimeFlag.BLOCK_END;\n                                flags |= TimeFlag.WITHIN_BLOCK;\n                            }\n\n                            if (timestamp >= this.fromTimestamp && timestamp <= this.toTimestamp) {\n                                if (timestamp === this.fromTimestamp) flags |= TimeFlag.RANGE_START;\n                                if (timestamp === this.toTimestamp) flags |= TimeFlag.RANGE_END;\n                                flags |= TimeFlag.WITHIN_RANGE;\n                            }\n\n                            if (timestamp >= (this.#selectionFromTimestamp as number) && timestamp <= (this.#selectionToTimestamp as number)) {\n                                if (timestamp === (this.#selectionFromTimestamp as number)) flags |= TimeFlag.SELECTION_START;\n                                if (timestamp === (this.#selectionToTimestamp as number)) flags |= TimeFlag.SELECTION_END;\n                                flags |= TimeFlag.WITHIN_SELECTION;\n                            }\n\n                            return [timestamp, flags] as const;\n                        }\n                    }\n\n                    return Reflect.get(target, property, receiver);\n                },\n            })\n        );\n\n        return structFrom(proxyForIndexPropertyAccess, {\n            inner: {\n                value: struct({\n                    from: { value: innerStartIndex },\n                    to: { value: innerEndIndex },\n                    units: { value: monthDays },\n                }),\n            },\n            month: { value: month },\n            outer: {\n                value: struct({\n                    from: { value: outerStartIndex },\n                    to: { value: outerEndAfterIndex - 1 },\n                    units: { value: numberOfUnits },\n                }),\n            },\n            year: { value: year },\n        }) as TimeFrameBlock;\n    }\n\n    protected getUnitsForFrameBlockAtIndex(index: number): MonthDays {\n        return getMonthDays(this.origin, this.#originYear, index)[0];\n    }\n\n    protected getUnitsOffsetForTimestamp(startTimestamp: number, timestamp: number) {\n        return Math.round((timestamp - startTimestamp) / DAY_MS);\n    }\n\n    protected reoriginate() {\n        this.originTimestamp = startOfMonth(this.originTimestamp, this.timezone);\n        const [originYear, originMonth] = getTimezoneDateParts(this.originTimestamp, this.timezone);\n        const weekStartTimestamp = startOfWeek(this.originTimestamp, this.timezone, this.firstWeekDay);\n\n        this.origin = originMonth as Month;\n        this.#originYear = originYear;\n        this.#originMonthStartOffset = this.getUnitsOffsetForTimestamp(weekStartTimestamp, this.originTimestamp) as WeekDay;\n        this.#originMonthStartTimestamp = this.#getDayOffsetTimestamp(this.originTimestamp, -this.#originMonthStartOffset);\n    }\n\n    protected reslice() {\n        this.#updateSelectionTimestamps();\n        this.#fromTimestamp = this.#getStartForTimestamp(super.fromTimestamp) as number;\n        this.#toTimestamp = this.#getStartForTimestamp(super.toTimestamp) as number;\n        this.#numberOfBlocks = getEdgesDistance(super.fromTimestamp, super.toTimestamp, this.timezone) + 1;\n    }\n\n    protected shiftOrigin(offset: number) {\n        const [year, month] = getTimezoneDateParts(this.originTimestamp, this.timezone);\n        const [, offsetMonth, offsetYear] = getMonthDays(month as Month, year, offset);\n\n        const restamper = withTimezone(this.timezone);\n        const originTimestamp = new Date(timezoneToSystem(restamper, this.originTimestamp)).setFullYear(offsetYear, offsetMonth);\n\n        this.originTimestamp = systemToTimezone(restamper, originTimestamp);\n        this.reoriginate();\n    }\n\n    clearSelection() {\n        super.clearSelection();\n        this.#updateSelectionTimestamps();\n        this.refreshFrame(true);\n    }\n\n    getTimestampAtIndex(indexOffset: number) {\n        return this.#getDayOffsetTimestamp(this.#originMonthStartTimestamp, indexOffset);\n    }\n\n    updateSelection(time: Time, selection?: TimeFrameSelection) {\n        super.updateSelection(time, selection);\n        this.#updateSelectionTimestamps();\n        this.refreshFrame(true);\n    }\n\n    withCurrentDayTimestamp() {\n        this.#currentDayTimestamp = this.#getStartForTimestamp(Date.now()) as number;\n    }\n}\n","import { enumerable, struct } from '../../../utils';\nimport type { EffectStack } from './types';\n\nconst _NO_EXCEPTION = Symbol('<<NO_EXCEPTION>>');\n\nexport const createEffectStack = <Effect extends (...args: any[]) => any>(effect: Effect) => {\n    const _stack: any[] = [];\n\n    const _bindFn: EffectStack<Effect>['bind'] = fn =>\n        function (this: unknown, ...args) {\n            let exception: unknown = _NO_EXCEPTION;\n            try {\n                _stack.push(fn);\n                return fn.call(this, ...args);\n            } catch (ex) {\n                throw (exception = ex);\n            } finally {\n                _stack.pop();\n                if (_stack.length === 0 && exception === _NO_EXCEPTION) effect();\n            }\n        } as typeof fn;\n\n    return struct<EffectStack<Effect>>({\n        bind: enumerable(_bindFn),\n        effect: enumerable(effect),\n    });\n};\n\nexport default createEffectStack;\n","import { InteractionKeyCode } from '../../../../types';\nimport {\n    CALENDAR_CONTROLS,\n    CALENDAR_SELECTIONS,\n    CONTROLS_ALL,\n    CONTROLS_MINIMAL,\n    CONTROLS_NONE,\n    CURSOR_BACKWARD,\n    CURSOR_BLOCK_END,\n    CURSOR_BLOCK_START,\n    CURSOR_DOWNWARD,\n    CURSOR_FORWARD,\n    CURSOR_LINE_END,\n    CURSOR_LINE_START,\n    CURSOR_NEXT_BLOCK,\n    CURSOR_PREV_BLOCK,\n    CURSOR_UPWARD,\n    FIRST_WEEK_DAYS,\n    FRAME_SIZES,\n    SELECT_MANY,\n    SELECT_NONE,\n    SELECT_ONE,\n    SELECTION_COLLAPSE,\n    SELECTION_FROM,\n    SELECTION_TO,\n    SHIFT_BLOCK,\n    SHIFT_FRAME,\n    SHIFT_PERIOD,\n} from '../constants';\nimport { withTimezone } from '../utils';\nimport { MonthFrame, TimeFrame /* , YearFrame */ } from '../timeframe';\nimport { createIndexed } from '../../../../../primitives/auxiliary/indexed';\nimport { createEffectStack, EffectStack } from '../../../../../primitives/reactive/effectStack';\nimport { systemToTimezone, timezoneToSystem } from '../../../../../core/Localization/datetime/restamper';\nimport today from '../../../../../primitives/time/today';\nimport {\n    createWatchlist,\n    isWatchlistUnsubscribeToken,\n    WatchList,\n    WatchListCallable,\n    WatchListSubscriptionCallback,\n} from '../../../../../primitives/reactive/watchlist';\nimport {\n    boolify,\n    boolOrTrue,\n    EMPTY_OBJECT,\n    isBitSafeInteger,\n    isFunction,\n    isNullish,\n    isString,\n    isUndefined,\n    noop,\n    pickFrom,\n    struct,\n    structFrom,\n    withFreezeProxyHandlers,\n} from '../../../../../utils';\nimport {\n    CalendarConfig,\n    CalendarDayOfWeekData,\n    CalendarGrid,\n    CalendarGridControlRecord,\n    CalendarSelection,\n    CalendarShiftControl,\n    CalendarShiftControlFlag,\n    CalendarShiftControlsFlag,\n    CalendarWatchAtoms,\n} from '../types';\n\nexport default class Calendar {\n    grid: CalendarGrid;\n    kill: () => void;\n    #config = EMPTY_OBJECT as CalendarConfig;\n    #destructed = false;\n    #frame?: TimeFrame;\n    #highlightFrom?: number;\n    #highlightTo?: number;\n    #highlightInProgress = false;\n    #highlightSelection?: CalendarSelection = SELECT_NONE;\n    #pendingWatchNotification = false;\n    #rangeOffsets?: [number, number, number, number, number, number];\n    #lastHighlightRange?: string = this.#rangeOffsets?.join(' ');\n\n    #cursorIndexFromEvent?: CalendarGrid['config']['cursorIndex'];\n    #shiftFactorFromEvent?: CalendarGrid['config']['shiftFactor'];\n    #watchCallback?: CalendarGrid['config']['watch'];\n    #watchableEffect?: () => void;\n    #unwatch?: () => void;\n\n    #today = today();\n    #shiftControlsHandles: CalendarGridControlRecord[1][] = [];\n    #shiftControlsList?: CalendarShiftControl[];\n\n    #shiftControls = new Proxy(\n        createIndexed(() => this.#shiftControlsList?.length ?? 0, this.#getShiftControlRecordAtIndex.bind(this)),\n        withFreezeProxyHandlers({\n            get: (target: {}, property: string | symbol, receiver: {}): any => {\n                const index = this.#shiftControlsList?.indexOf(property as CalendarShiftControl) ?? -1;\n                return index >= 0 ? this.#getShiftControlRecordAtIndex(index)?.[1] : Reflect.get(target, property, receiver);\n            },\n        })\n    ) as CalendarGrid['controls'];\n\n    #watchlist?: WatchList<CalendarWatchAtoms> = createWatchlist({\n        blocks: () => this.#frame?.size,\n        cells: () => this.#frame?.units,\n        controls: () => pickFrom(CALENDAR_CONTROLS, this.#config.controls),\n        cursor: () => this.#frame?.cursor,\n        from: () => this.#frame?.selectionStart,\n        highlight: () => this.#highlightSelection,\n        locale: () => this.#frame?.locale,\n        minified: () => boolify(this.#config.minified),\n        origin: () => this.#frame?.getTimestampAtIndex(0),\n        timezone: () => this.#frame?.timezone,\n        to: () => this.#frame?.selectionEnd,\n        today: () => this.#today.timestamp,\n    });\n\n    #lastWatchableSnapshot?: CalendarWatchAtoms = this.#watchlist?.snapshot;\n\n    #chainedNotifyEffectStack?: EffectStack = createEffectStack(() => this.#watchCallback && this.#watchlist?.requestNotification());\n\n    #chainedWatchEffectStack?: EffectStack = createEffectStack(() => this.#watchCallback?.call(this.#currentConfig));\n\n    #grid = structFrom(\n        createIndexed(\n            () => this.#frame?.size ?? 0,\n            index => this.#frame?.frameBlocks[index]\n        ),\n        {\n            config: {\n                value: Object.defineProperties(\n                    (config?: CalendarConfig) => {\n                        config && this.#configure(config);\n                        return this.#currentConfig;\n                    },\n                    {\n                        cursorIndex: {\n                            get: () => this.#cursorIndexFromEvent,\n                            set: (fn: CalendarGrid['config']['cursorIndex'] | null | undefined) => {\n                                if (this.#destructed) return;\n                                if (isNullish(fn)) this.#cursorIndexFromEvent = undefined;\n                                else if (isFunction(fn)) this.#cursorIndexFromEvent = fn;\n                            },\n                        },\n                        shiftFactor: {\n                            get: () => this.#shiftFactorFromEvent,\n                            set: (fn: CalendarGrid['config']['shiftFactor'] | null | undefined) => {\n                                if (this.#destructed) return;\n                                if (isNullish(fn)) this.#shiftFactorFromEvent = undefined;\n                                else if (isFunction(fn)) this.#shiftFactorFromEvent = fn;\n                            },\n                        },\n                        watch: {\n                            get: () => this.#watchCallback,\n                            set: (fn: CalendarGrid['config']['watch'] | null | undefined) => {\n                                if (this.#destructed) return;\n                                if (isFunction(fn)) {\n                                    this.#watchCallback = fn;\n\n                                    if (!this.#watchableEffect) {\n                                        const watchCallback = this.#chainedNotifyEffectStack?.bind(Calendar.#watchableEffectCallback.bind(this));\n\n                                        if (watchCallback) {\n                                            this.#watchableEffect = this.#chainedNotifyEffectStack?.bind(noop);\n                                            this.#unwatch = this.#watchlist?.subscribe(this.#chainedWatchEffectStack?.bind(watchCallback));\n                                            this.#frame && (this.#frame.effect = this.#watchableEffect);\n                                        }\n                                    }\n\n                                    if (!this.#pendingWatchNotification) return;\n\n                                    this.#pendingWatchNotification = false;\n                                    this.#watchableEffect?.();\n                                } else if (isNullish(fn)) this.#watchCallback = undefined;\n                            },\n                        },\n                    }\n                ),\n            },\n            controls: { value: this.#shiftControls },\n            cursor: {\n                value: Object.defineProperties(\n                    (evt?: Event) => Calendar.#withNotifyEffect.call(this, (evt?: Event) => !!(evt && this.#cursorHandle(evt)))(evt),\n                    {\n                        valueOf: { value: () => this.#frame?.cursor ?? -1 },\n                    }\n                ),\n            },\n            highlight: {\n                value: (() => {\n                    const blank = () => this.#highlightFrom === this.#highlightTo && isUndefined(this.#highlightTo);\n\n                    const setter = (selection: typeof SELECTION_FROM | typeof SELECTION_TO) => (time?: number | null) =>\n                        Calendar.#withNotifyEffect.call(this, (time?: number | null) => {\n                            if (this.#destructed || !this.#highlightSelection || this.#highlightSelection === SELECT_NONE) return;\n                            if (isNullish(time)) return this.#clearHighlight();\n\n                            if (!blank()) {\n                                this.#frame?.updateSelection(time, selection);\n                                if (this.#highlightSelection === SELECT_MANY && this.#rangeOffsets) {\n                                    this.#rangeHighlight(time, selection === SELECTION_FROM ? SELECTION_TO : SELECTION_FROM, this.#rangeOffsets);\n                                }\n                            } else this.#frame?.updateSelection(time, SELECTION_COLLAPSE);\n\n                            this.#highlightFrom = this.#frame?.selectionStart;\n                            this.#highlightTo = this.#frame?.selectionEnd;\n                            this.#frame?.shiftFrameToTimestamp(selection === SELECTION_FROM ? this.#highlightFrom : this.#highlightTo);\n                        })(time);\n\n                    return struct({\n                        blank: { get: blank },\n                        from: {\n                            get: () => this.#frame?.selectionStart ?? this.#highlightFrom,\n                            set: setter(SELECTION_FROM),\n                        },\n                        to: {\n                            get: () => this.#frame?.selectionEnd ?? this.#highlightTo,\n                            set: setter(SELECTION_TO),\n                        },\n                    });\n                })(),\n            },\n            rowspan: { get: () => this.#frame?.rowspan ?? 0 },\n            weekdays: { get: () => this.#frame?.daysOfWeek ?? Calendar.#DAYS_OF_WEEK_FALLBACK },\n        }\n    ) as CalendarGrid;\n\n    static #RANGE_OFFSETS_FORMAT_REGEX = /^(?:0|[1-9]\\d*)(\\s+(?:0|[1-9]\\d*)?){0,5}?$/;\n    static #CURSOR_POINTER_INTERACTION_EVENTS = ['click', 'mouseover', 'pointerover'];\n    static #DAYS_OF_WEEK_FALLBACK = createIndexed(0, noop as () => CalendarDayOfWeekData);\n    static #SHIFT_ACTIVATION_KEYS = [InteractionKeyCode.ENTER, InteractionKeyCode.SPACE];\n    static #SHIFT_ALL_CONTROLS = Object.keys(CalendarShiftControlsFlag).filter(control => isNaN(+control)) as CalendarShiftControl[];\n    static #SHIFT_MINIMAL_CONTROLS = ['PREV', 'NEXT'] as CalendarShiftControl[];\n\n    static #getOffsetsFromRange(range?: string): [number, number, number, number, number, number] | undefined {\n        if (!isString(range)) return;\n        if (!Calendar.#RANGE_OFFSETS_FORMAT_REGEX.test(range)) return;\n        const offsets = range.split(/\\s+/);\n        return Array.from({ length: 6 }, (_, index) => parseInt(offsets[index] ?? '0')) as [number, number, number, number, number, number];\n    }\n\n    static #getShiftOffsetType(flags: number) {\n        switch (flags & ~CalendarShiftControlFlag.PREV) {\n            case CalendarShiftControlFlag.FRAME:\n                return SHIFT_FRAME;\n            case CalendarShiftControlFlag.PERIOD:\n                return SHIFT_PERIOD;\n            case CalendarShiftControlFlag.BLOCK:\n            default:\n                return SHIFT_BLOCK;\n        }\n    }\n\n    static #getShiftOffsetUnit(flags: number) {\n        return flags & CalendarShiftControlFlag.PREV ? -1 : 1;\n    }\n\n    static #watchableEffectCallback: WatchListSubscriptionCallback<CalendarWatchAtoms> = function (this: Calendar, snapshot) {\n        if (isWatchlistUnsubscribeToken(snapshot)) return;\n\n        let controlsChanged = false;\n        let highlightChanged = false;\n        let selectionChanged = false;\n        const highlightRange = this.#rangeOffsets?.join(' ');\n\n        for (const key of Object.keys(snapshot) as (keyof typeof snapshot)[]) {\n            if (snapshot[key] === this.#lastWatchableSnapshot?.[key]) continue;\n            if (key === 'controls') controlsChanged = true;\n            else if (key === 'highlight') highlightChanged = true;\n            else if (key === 'from' || key === 'to') selectionChanged = true;\n        }\n\n        if (this.#lastHighlightRange !== highlightRange) {\n            this.#lastHighlightRange = highlightRange;\n            highlightChanged = true;\n        }\n\n        this.#lastWatchableSnapshot = snapshot;\n\n        if (this.#highlightInProgress && !selectionChanged) this.#restoreHighlight();\n        if (controlsChanged) this.#refreshShiftControls();\n        if (highlightChanged) this.#refreshHighlighting();\n    };\n\n    static #withNotifyEffect<T extends WatchListCallable = WatchListCallable>(this: Calendar, fn: T) {\n        return this.#chainedNotifyEffectStack?.bind(fn) ?? fn;\n    }\n\n    constructor() {\n        this.grid = this.#grid;\n        this.kill = this.#destruct.bind(this);\n    }\n\n    get #currentConfig() {\n        return { ...this.#config } as CalendarConfig;\n    }\n\n    get #timeframe() {\n        // return (this.#config.minified as boolean) ? new YearFrame() : new MonthFrame();\n        return new MonthFrame();\n    }\n\n    #canShiftInDirection(shiftDirection: 1 | -1) {\n        return !!this.#frame && !(shiftDirection > 0 ? this.#frame.isAtEnd : this.#frame.isAtStart);\n    }\n\n    #configure(config: CalendarConfig) {\n        if (this.#destructed) return;\n\n        this.#rangeOffsets = undefined;\n\n        const highlight = config?.highlight;\n        const minified = boolify(this.#config.minified);\n\n        if (!isString(highlight)) {\n            this.#highlightSelection = pickFrom(CALENDAR_SELECTIONS, highlight, this.#highlightSelection);\n        } else if ((this.#rangeOffsets = Calendar.#getOffsetsFromRange(highlight))) {\n            this.#highlightSelection = SELECT_MANY;\n        }\n\n        this.#config = {\n            ...this.#config,\n            ...config,\n            blocks: pickFrom(FRAME_SIZES, config?.blocks, this.#config.blocks),\n            controls: pickFrom(CALENDAR_CONTROLS, config?.controls, this.#config.controls),\n            firstWeekDay: pickFrom(FIRST_WEEK_DAYS, config?.firstWeekDay, this.#config.firstWeekDay),\n            fixedBlockHeight: boolify(config?.fixedBlockHeight, this.#config.fixedBlockHeight),\n            highlight: this.#highlightSelection,\n            minified: boolify(config?.minified, this.#config.minified),\n            trackCurrentDay: boolify(config?.trackCurrentDay, this.#config.trackCurrentDay),\n        };\n\n        if (!isFunction(this.#watchCallback)) {\n            if (!this.#frame) {\n                this.#frame = this.#timeframe;\n                this.#reframe();\n                this.#refreshShiftControls();\n                this.#refreshHighlighting();\n            } else this.#pendingWatchNotification = true;\n\n            return;\n        }\n\n        if (!this.#frame || minified !== this.#config.minified) {\n            this.#frame = this.#timeframe;\n            this.#frame.effect = this.#watchableEffect;\n        }\n\n        this.#reframe();\n        this.#watchableEffect?.();\n    }\n\n    #cursorHandle(evt?: Event): true | undefined {\n        if (!(evt && this.#frame && isFunction(this.#watchCallback))) return;\n\n        if (evt instanceof KeyboardEvent) {\n            switch (evt.code) {\n                case InteractionKeyCode.ARROW_LEFT:\n                    this.#frame.shiftFrameCursor(CURSOR_BACKWARD);\n                    break;\n                case InteractionKeyCode.ARROW_RIGHT:\n                    this.#frame.shiftFrameCursor(CURSOR_FORWARD);\n                    break;\n                case InteractionKeyCode.ARROW_UP:\n                    this.#frame.shiftFrameCursor(CURSOR_UPWARD);\n                    break;\n                case InteractionKeyCode.ARROW_DOWN:\n                    this.#frame.shiftFrameCursor(CURSOR_DOWNWARD);\n                    break;\n                case InteractionKeyCode.HOME:\n                    this.#frame.shiftFrameCursor(evt.ctrlKey ? CURSOR_BLOCK_START : CURSOR_LINE_START);\n                    break;\n                case InteractionKeyCode.END:\n                    this.#frame.shiftFrameCursor(evt.ctrlKey ? CURSOR_BLOCK_END : CURSOR_LINE_END);\n                    break;\n                case InteractionKeyCode.PAGE_UP:\n                    evt.shiftKey ? this.#frame.shiftFrameByOffset(-1, SHIFT_PERIOD) : this.#frame.shiftFrameCursor(CURSOR_PREV_BLOCK);\n                    break;\n                case InteractionKeyCode.PAGE_DOWN:\n                    evt.shiftKey ? this.#frame.shiftFrameByOffset(1, SHIFT_PERIOD) : this.#frame.shiftFrameCursor(CURSOR_NEXT_BLOCK);\n                    break;\n                case InteractionKeyCode.SPACE:\n                case InteractionKeyCode.ENTER:\n                    this.#highlight();\n                    return true;\n                default:\n                    return;\n            }\n\n            this.#highlightInProgress && this.#highlight(EMPTY_OBJECT);\n            return true;\n        }\n\n        if (evt instanceof MouseEvent && Calendar.#CURSOR_POINTER_INTERACTION_EVENTS.includes(evt.type) && isFunction(this.#cursorIndexFromEvent)) {\n            const cursorIndex = this.#cursorIndexFromEvent.call(this.#currentConfig, evt);\n\n            if (!isBitSafeInteger(cursorIndex)) return;\n\n            const isClick = evt.type === 'click';\n\n            if (!(isClick || this.#highlightInProgress)) return;\n            this.#frame.shiftFrameCursor(cursorIndex);\n\n            if (this.#frame.cursor === cursorIndex) {\n                isClick ? this.#highlight() : this.#highlight(EMPTY_OBJECT);\n                return true;\n            }\n        }\n    }\n\n    #destruct() {\n        if (this.#destructed) return;\n\n        this.#unwatch?.();\n\n        this.#chainedNotifyEffectStack =\n            this.#chainedWatchEffectStack =\n            this.#cursorIndexFromEvent =\n            this.#frame =\n            this.#highlightSelection =\n            this.#lastHighlightRange =\n            this.#lastWatchableSnapshot =\n            this.#rangeOffsets =\n            this.#shiftFactorFromEvent =\n            this.#unwatch =\n            this.#watchlist =\n            this.#watchableEffect =\n            this.#watchCallback =\n                undefined;\n\n        this.#config = EMPTY_OBJECT;\n        this.#highlightInProgress = this.#pendingWatchNotification = false;\n        this.#destructed = true;\n    }\n\n    #getShiftControlRecordAtIndex(index: number): CalendarGridControlRecord | undefined {\n        if (!this.#shiftControlsList || index < 0 || index >= this.#shiftControlsList.length) return;\n\n        const control = this.#shiftControlsList[index] as CalendarShiftControl;\n\n        if (!this.#shiftControlsHandles[index]) {\n            const flags = CalendarShiftControlsFlag[control];\n            const shiftOffsetType = Calendar.#getShiftOffsetType(flags);\n            const shiftOffsetUnit = Calendar.#getShiftOffsetUnit(flags);\n\n            this.#shiftControlsHandles[index] = (...args: any[]) =>\n                Calendar.#withNotifyEffect.call(this, (...args: any[]) => {\n                    const canShift = this.#canShiftInDirection(shiftOffsetUnit);\n                    if (!(canShift && args.length)) return canShift;\n\n                    const shiftFactor = this.#getShiftFactorFromEvent(control, args[0] as Event);\n                    if (isUndefined(shiftFactor)) return false;\n\n                    this.#frame?.shiftFrameByOffset(shiftOffsetUnit * shiftFactor, shiftOffsetType);\n                    return true;\n                })(...args);\n        }\n\n        return [control, this.#shiftControlsHandles[index] as CalendarGridControlRecord[1]];\n    }\n\n    #getShiftFactorFromEvent(target: CalendarShiftControl, evt?: Event): number | undefined {\n        if (!(this.#frame && isFunction(this.#watchCallback))) return;\n\n        if (evt instanceof MouseEvent) {\n            if (evt.type !== 'click') return;\n        } else if (evt instanceof KeyboardEvent) {\n            if (!Calendar.#SHIFT_ACTIVATION_KEYS.includes(evt.code as InteractionKeyCode)) return;\n        } else return;\n\n        let shiftFactor = 1;\n\n        if (isFunction(this.#shiftFactorFromEvent)) {\n            const factor = Number(this.#shiftFactorFromEvent.call(this.#currentConfig, evt, target));\n            shiftFactor = Number.isInteger(factor) && factor >= 1 ? factor : shiftFactor;\n        }\n\n        return shiftFactor;\n    }\n\n    #highlight(secretFauxHighlightingHint?: any) {\n        if (this.#destructed || !this.#frame) return;\n\n        switch (this.#highlightSelection) {\n            case SELECT_MANY:\n            case SELECT_ONE:\n                break;\n            case SELECT_NONE:\n            default:\n                return;\n        }\n\n        const cursor = this.#frame.cursor;\n        const fromTimestamp = Math.max(this.#frame.getTimestampAtIndex(cursor), this.#frame.timeslice.from);\n        const toTimestamp = Math.min(this.#frame.getTimestampAtIndex(cursor + 1) - 1, this.#frame.timeslice.to);\n        const range = this.#rangeOffsets;\n\n        if (this.#highlightSelection === SELECT_ONE || this.#frame.blankSelection || range) {\n            this.#highlightInProgress = !(this.#highlightSelection === SELECT_ONE || range);\n\n            if (this.#highlightSelection === SELECT_MANY && range) {\n                const selectionDirection = toTimestamp >= (this.#frame.selectionEnd as number) ? SELECTION_FROM : SELECTION_TO;\n\n                selectionDirection === SELECTION_FROM\n                    ? this.#frame.updateSelection(toTimestamp, SELECTION_TO)\n                    : this.#frame.updateSelection(fromTimestamp, SELECTION_FROM);\n\n                this.#rangeHighlight(\n                    (selectionDirection === SELECTION_FROM ? this.#frame.selectionEnd : this.#frame.selectionStart) as number,\n                    selectionDirection,\n                    range\n                );\n            } else {\n                this.#frame.updateSelection(fromTimestamp, SELECTION_FROM);\n                this.#frame.updateSelection(toTimestamp, SELECTION_TO);\n            }\n        } else {\n            const isFauxHighlighting = secretFauxHighlightingHint === EMPTY_OBJECT;\n            const restamper = withTimezone(this.#frame.timezone);\n\n            if (!isFauxHighlighting) this.#highlightInProgress = false;\n\n            if (fromTimestamp <= this.#frame.selectionStart!) {\n                const selectionStartDay = new Date(timezoneToSystem(restamper, this.#frame.selectionStart!));\n                const selectionStartDayEndTimestamp = Math.min(\n                    systemToTimezone(restamper, selectionStartDay.setDate(selectionStartDay.getDate() + 1) - 1),\n                    this.#frame.timeslice.to\n                );\n\n                if (fromTimestamp === this.#frame.selectionStart! && toTimestamp <= selectionStartDayEndTimestamp) {\n                    this.#frame.updateSelection(toTimestamp, SELECTION_TO);\n                }\n\n                this.#frame.updateSelection(fromTimestamp, SELECTION_FROM);\n            } else {\n                const selectionEndDay = new Date(timezoneToSystem(restamper, this.#frame.selectionEnd!));\n                const selectionEndDayStartTimestamp = Math.max(\n                    systemToTimezone(restamper, selectionEndDay.setHours(0, 0, 0, 0)),\n                    this.#frame.timeslice.from\n                );\n\n                if (fromTimestamp <= this.#frame.selectionEnd! && fromTimestamp >= selectionEndDayStartTimestamp) {\n                    this.#frame.updateSelection(fromTimestamp, SELECTION_FROM);\n                }\n\n                this.#frame.updateSelection(toTimestamp, SELECTION_TO);\n            }\n\n            if (isFauxHighlighting) return;\n        }\n\n        this.#highlightFrom = this.#frame.selectionStart;\n        this.#highlightTo = this.#frame.selectionEnd;\n    }\n\n    #clearHighlight() {\n        this.#frame?.clearSelection();\n        this.#highlightInProgress = false;\n        this.#highlightFrom = this.#highlightTo = undefined;\n    }\n\n    #rangeHighlight(\n        time: number,\n        selectionDirection: typeof SELECTION_FROM | typeof SELECTION_TO,\n        rangeOffsets?: [number, number, number, number, number, number]\n    ) {\n        if (!this.#frame) return;\n\n        const restamper = withTimezone(this.#frame?.timezone);\n        const restampedDate = new Date(timezoneToSystem(restamper, time));\n        const direction = selectionDirection === SELECTION_FROM ? -1 : 1;\n        const [years = 0, months = 0, days = 0, hours = 0, minutes = 0, seconds = 0] = rangeOffsets ?? [];\n\n        restampedDate.setFullYear(\n            restampedDate.getFullYear() + years * direction,\n            restampedDate.getMonth() + months * direction,\n            restampedDate.getDate() + days * direction\n        );\n        restampedDate.setHours(\n            restampedDate.getHours() + hours * direction,\n            restampedDate.getMinutes() + minutes * direction,\n            restampedDate.getSeconds() + seconds * direction\n        );\n\n        this.#frame.updateSelection(systemToTimezone(restamper, restampedDate.getTime() - direction), selectionDirection);\n    }\n\n    #restoreHighlight() {\n        this.#highlightFrom && this.#frame?.updateSelection(this.#highlightFrom, SELECTION_FROM);\n        this.#highlightTo && this.#frame?.updateSelection(this.#highlightTo, SELECTION_TO);\n        this.#highlightInProgress = false;\n    }\n\n    #reframe() {\n        if (!this.#frame) return;\n\n        this.#frame.timeslice = this.#config.timeslice;\n        this.#frame.dynamicBlockHeight = !this.#config.fixedBlockHeight;\n        this.#frame.firstWeekDay = this.#config.firstWeekDay;\n        this.#frame.locale = this.#config.locale;\n        this.#frame.size = this.#config.blocks;\n        this.#frame.timezone = this.#config.timezone;\n        this.#frame.trackCurrentDay = this.#config.trackCurrentDay;\n        this.#today = today(this.#frame.timezone);\n\n        this.#restoreHighlight();\n    }\n\n    #refreshHighlighting() {\n        switch (this.#highlightSelection) {\n            case SELECT_MANY:\n                if (!boolOrTrue(this.#frame?.blankSelection) && this.#rangeOffsets) {\n                    this.#rangeHighlight(this.#frame?.selectionStart!, SELECTION_TO, this.#rangeOffsets);\n                }\n                break;\n            case SELECT_ONE:\n                if (!boolOrTrue(this.#frame?.blankSelection)) {\n                    const restamper = withTimezone(this.#frame?.timezone);\n                    const restampedDate = new Date(timezoneToSystem(restamper, this.#frame?.selectionStart!));\n                    this.#frame?.updateSelection(systemToTimezone(restamper, restampedDate.setHours(23, 59, 59, 999)), SELECTION_TO);\n                }\n                break;\n            case SELECT_NONE:\n            default:\n                this.#clearHighlight();\n                return;\n        }\n    }\n\n    #refreshShiftControls() {\n        switch (this.#watchlist?.snapshot.controls) {\n            case CONTROLS_ALL:\n                this.#shiftControlsList = Calendar.#SHIFT_ALL_CONTROLS;\n                break;\n            case CONTROLS_MINIMAL:\n                this.#shiftControlsList = Calendar.#SHIFT_MINIMAL_CONTROLS;\n                break;\n            case CONTROLS_NONE:\n            default:\n                this.#shiftControlsList = undefined;\n        }\n\n        this.#shiftControlsHandles.length = 0;\n        this.#shiftControlsHandles.length = this.#shiftControlsList?.length ?? 0;\n    }\n}\n","import Calendar from './Calendar';\nimport { CONTROLS_ALL, CONTROLS_MINIMAL, CONTROLS_NONE, RANGE_FROM, RANGE_TO, SELECT_MANY, SELECT_NONE, SELECT_ONE } from '../constants';\nimport { ALREADY_RESOLVED_PROMISE, enumerable, isFunction, isNumber, struct } from '../../../../../utils';\nimport timeslice, { sinceNow, UNBOUNDED_SLICE, untilNow } from '../timeslice';\nimport { CalendarFacade } from '../types';\n\nconst calendar = (() => {\n    const calendar = (init => {\n        const { grid, kill } = new Calendar();\n\n        if (isNumber(init)) grid.config({ blocks: init });\n        else if (isFunction(init))\n            ALREADY_RESOLVED_PROMISE.then(() => {\n                grid.config.watch = init;\n            });\n        else grid.config(init);\n\n        return struct({\n            grid: enumerable(grid),\n            kill: enumerable(kill),\n        }) as ReturnType<CalendarFacade>;\n    }) as CalendarFacade;\n\n    return Object.defineProperties(calendar, {\n        controls: {\n            value: struct({\n                ALL: { value: CONTROLS_ALL },\n                MINIMAL: { value: CONTROLS_MINIMAL },\n                NONE: { value: CONTROLS_NONE },\n            }),\n        },\n        highlight: {\n            value: struct({\n                ONE: { value: SELECT_ONE },\n                MANY: { value: SELECT_MANY },\n                NONE: { value: SELECT_NONE },\n            }),\n        },\n        slice: {\n            value: Object.defineProperties(timeslice.bind(null), {\n                FROM: { value: RANGE_FROM },\n                TO: { value: RANGE_TO },\n                UNBOUNDED: { value: UNBOUNDED_SLICE },\n                SINCE_NOW: { get: sinceNow },\n                UNTIL_NOW: { get: untilNow },\n            }),\n        },\n    });\n})();\n\nexport default calendar;\n","import { memo } from 'preact/compat';\nimport { CalendarControlsProps } from './types';\nimport calendar from '../../calendar';\nimport { isFunction } from '../../../../../utils';\n\nconst CalendarControls = ({ config, grid: { controls }, renderer }: CalendarControlsProps) => {\n    if (config.controls === calendar.controls.NONE || !isFunction(renderer)) return null;\n    return <>{controls.map(([control, handle]) => renderer(control, handle))}</>;\n};\n\nexport default memo(CalendarControls);\n","import { useCallback } from 'preact/hooks';\nimport { ALREADY_RESOLVED_PROMISE } from '../../utils';\nimport type { ReflexAction } from '../../primitives/reactive/reflex';\nimport useReflex from '../useReflex';\n\nconst useFocusCursor = (callback?: ReflexAction<Element>) => {\n    const finallyCallback = useCallback(\n        ((current, previous) => {\n            if (previous instanceof Element) previous.setAttribute('tabindex', '-1');\n            if (current instanceof Element) {\n                current.setAttribute('tabindex', '0');\n                // schedule a microtask to focus the current element\n                ALREADY_RESOLVED_PROMISE.then(() => (current as HTMLElement)?.focus());\n            }\n        }) as ReflexAction<Element>,\n        []\n    );\n\n    return useReflex<Element>(\n        useCallback(\n            (current, previous) => {\n                try {\n                    callback?.(current, previous);\n                } finally {\n                    finallyCallback(current, previous);\n                }\n            },\n            [callback]\n        )\n    );\n};\n\nexport default useFocusCursor;\n","import { Ref } from 'preact';\nimport { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'preact/hooks';\nimport useCoreContext from '../../../../core/Context/useCoreContext';\nimport type { ReflexAction } from '../../../../primitives/reactive/reflex';\nimport { getDateObjectFromTimestamp } from '../calendar/utils';\nimport { EMPTY_OBJECT, isFunction } from '../../../../utils';\nimport { CalendarGridCursorRootProps, CalendarHandle, CalendarProps } from '../types';\nimport useFocusCursor from '../../../../hooks/element/useFocusCursor';\nimport calendar from '../calendar';\n\nconst useCalendar = (\n    {\n        blocks,\n        controls,\n        dynamicBlockRows,\n        firstWeekDay,\n        highlight,\n        locale,\n        onHighlight,\n        originDate,\n        renderControl,\n        sinceDate,\n        timezone,\n        trackCurrentDay,\n        untilDate,\n        useYearView,\n    }: CalendarProps,\n    ref: Ref<unknown>\n) => {\n    const { i18n } = useCoreContext();\n    const [lastMutationTimestamp, setLastMutationTimestamp] = useState<DOMHighResTimeStamp>(performance.now());\n    const timeslice = useMemo(() => calendar.slice(sinceDate, untilDate), [sinceDate, untilDate]);\n    const config = useRef<ReturnType<typeof grid.config>>(EMPTY_OBJECT);\n\n    const activeControls = useMemo(\n        () => controls ?? (isFunction(renderControl) ? calendar.controls.MINIMAL : calendar.controls.NONE),\n        [controls, renderControl]\n    );\n\n    const activeHighlight = useMemo(\n        () => highlight ?? (isFunction(onHighlight) ? calendar.highlight.ONE : calendar.highlight.NONE),\n        [highlight, onHighlight]\n    );\n\n    const { grid, kill } = useMemo(() => {\n        const { grid, kill } = calendar(function () {\n            setLastMutationTimestamp(performance.now());\n            config.current = this;\n\n            if (highlightStart === grid.highlight.from && highlightEnd === grid.highlight.to) return;\n\n            highlightStart = grid.highlight.from;\n            highlightEnd = grid.highlight.to;\n            onHighlight?.(highlightStart, highlightEnd);\n        });\n\n        let { from: highlightStart, to: highlightEnd } = grid.highlight;\n\n        grid.config.cursorIndex = (evt: Event): number | undefined => {\n            let element: HTMLElement | null = evt.target as HTMLElement;\n\n            while (element && element !== evt.currentTarget) {\n                const index = Number(element.dataset.cursorPosition);\n                if (Number.isFinite(index)) return index;\n                element = element.parentNode as HTMLElement;\n            }\n        };\n\n        grid.config.shiftFactor = function (evt: Event) {\n            if (this.controls !== calendar.controls.MINIMAL) return;\n            if ((evt as MouseEvent)?.shiftKey) return 12;\n            if ((evt as MouseEvent)?.altKey) return this.blocks;\n            return 1;\n        };\n\n        return { grid, kill };\n    }, []);\n\n    const cursorRootProps = useMemo(() => {\n        const pointerHandle = (evt: Event) => {\n            grid.cursor(evt);\n        };\n\n        return {\n            onClickCapture: pointerHandle,\n            onMouseOverCapture: pointerHandle,\n            onPointerOverCapture: pointerHandle,\n            onKeyDownCapture: (evt: KeyboardEvent) => {\n                grid.cursor(evt) && evt.preventDefault();\n            },\n        } as CalendarGridCursorRootProps;\n    }, [grid]);\n\n    const cursorElementRef = useFocusCursor(\n        useCallback(\n            ((current, previous) => {\n                if (previous instanceof Element) previous.removeAttribute('aria-selected');\n                if (current instanceof Element) current.setAttribute('aria-selected', 'true');\n            }) as ReflexAction<Element>,\n            []\n        )\n    );\n\n    useImperativeHandle(\n        ref,\n        () => {\n            const { from, to } = grid?.highlight || EMPTY_OBJECT;\n            return {\n                clear: () => {\n                    grid?.highlight && (grid.highlight.from = undefined);\n                },\n                get config() {\n                    return { ...(config.current ?? EMPTY_OBJECT) };\n                },\n                get from() {\n                    return getDateObjectFromTimestamp(from);\n                },\n                set from(date) {\n                    grid?.highlight && date && (grid.highlight.from = date.getTime());\n                },\n                get to() {\n                    return getDateObjectFromTimestamp(to);\n                },\n                set to(date) {\n                    grid?.highlight && date && (grid.highlight.to = date.getTime());\n                },\n            } as CalendarHandle;\n        },\n        [grid, lastMutationTimestamp]\n    );\n\n    useEffect(() => {\n        grid.config({\n            blocks,\n            controls: activeControls,\n            firstWeekDay,\n            fixedBlockHeight: !dynamicBlockRows,\n            highlight: activeHighlight,\n            locale: locale ?? i18n.locale,\n            minified: useYearView,\n            timeslice,\n            timezone,\n            trackCurrentDay,\n        });\n    }, [\n        activeControls,\n        activeHighlight,\n        blocks,\n        dynamicBlockRows,\n        firstWeekDay,\n        grid,\n        i18n,\n        locale,\n        timeslice,\n        timezone,\n        trackCurrentDay,\n        useYearView,\n    ]);\n\n    useEffect(() => {\n        const origins = ([] as number[])\n            .concat(originDate as ConcatArray<number>)\n            .slice(0, 2)\n            .map(Number)\n            .filter(Boolean);\n        if (origins[0]) grid.highlight.from = +origins[0];\n        if (origins[1]) grid.highlight.to = +origins[1];\n        return kill;\n    }, []);\n\n    return { cursorElementRef, cursorRootProps, grid };\n};\n\nexport default useCalendar;\n","import { forwardRef, memo } from 'preact/compat';\nimport CalendarGrid from './components/CalendarGrid';\nimport CalendarControls from './components/CalendarControls';\nimport useCalendar from './hooks/useCalendar';\nimport { CalendarProps } from './types';\nimport './Calendar.scss';\n\nconst Calendar = forwardRef((props: CalendarProps, ref) => {\n    const calendar = useCalendar(props, ref);\n    const config = calendar.grid.config();\n\n    return (\n        <div role=\"none\">\n            <CalendarControls config={config} grid={calendar.grid} renderer={props.renderControl} />\n            <CalendarGrid\n                ref={calendar.cursorElementRef}\n                config={config}\n                cursorRootProps={calendar.cursorRootProps}\n                grid={calendar.grid}\n                onlyCellsWithin={props.onlyCellsWithin}\n                prepare={props.prepare}\n            />\n        </div>\n    );\n});\n\nexport default memo(Calendar);\n","import { VNode } from 'preact';\nimport { createPortal } from 'preact/compat';\nimport { useMemo, useState } from 'preact/hooks';\nimport type { Reflexable } from '../../primitives/reactive/reflex';\nimport type { Nullable } from '../../utils/types';\nimport useReflex from '../useReflex';\n\nconst useDetachedRender = (callback: (targetElement: Element, ...args: any[]) => VNode | null, targetRef?: Nullable<Reflexable<Element>>) => {\n    const [render, setRender] = useState<(...args: any[]) => VNode | null>();\n\n    const renderTarget = useReflex<Element>(\n        useMemo(() => {\n            const render =\n                (targetElement: Element) =>\n                (...args: any[]) => {\n                    const jsx = callback(targetElement, ...args);\n                    return jsx && createPortal(jsx, targetElement);\n                };\n\n            setRender(undefined);\n\n            return targetElement => setRender(targetElement instanceof Element ? () => render(targetElement) : undefined);\n        }, [callback, targetRef]),\n        targetRef\n    );\n\n    return [render, renderTarget] as const;\n};\n\nexport default useDetachedRender;\n","import { ButtonVariant } from '../../Button/types';\nimport { useCallback } from 'preact/hooks';\nimport { isFunction } from '../../../../utils';\nimport ChevronDown from '../../SVGIcons/ChevronDown';\nimport ChevronUp from '../../SVGIcons/ChevronUp';\nimport { CalendarControlRenderer, CalendarRenderControl } from '../types';\nimport useCoreContext from '../../../../core/Context/useCoreContext';\nimport useDetachedRender from '../../../../hooks/element/useDetachedRender';\nimport Button from '../../Button';\n\nconst useCalendarControlsRendering = (renderControl?: CalendarRenderControl) => {\n    const { i18n } = useCoreContext();\n\n    return useDetachedRender(\n        useCallback(\n            ((targetElement, control, handle) => {\n                if (!(targetElement instanceof HTMLElement)) return null;\n                if (isFunction(renderControl)) return renderControl(control, handle);\n\n                let directionModifier: string;\n                let labelModifier: 'next' | 'previous';\n                let Chevron: typeof ChevronDown | typeof ChevronUp;\n\n                switch (control) {\n                    case 'PREV':\n                        directionModifier = 'prev';\n                        labelModifier = 'previous';\n                        Chevron = ChevronUp;\n                        break;\n                    case 'NEXT':\n                        directionModifier = labelModifier = 'next';\n                        Chevron = ChevronDown;\n                        break;\n                    default:\n                        return null;\n                }\n\n                const shouldRenderControl = handle();\n\n                return shouldRenderControl ? (\n                    <Button\n                        aria-label={i18n.get(`calendar.${labelModifier}Month`)}\n                        variant={ButtonVariant.TERTIARY}\n                        disabled={!shouldRenderControl}\n                        classNameModifiers={['circle', directionModifier]}\n                        iconButton={true}\n                        key={control}\n                        onClick={handle}\n                    >\n                        <Chevron role=\"presentation\" />\n                    </Button>\n                ) : null;\n            }) as CalendarControlRenderer,\n            [i18n, renderControl]\n        )\n    );\n};\n\nexport default useCalendarControlsRendering;\n","import cx from 'classnames';\nimport { forwardRef } from 'preact/compat';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport { Ref } from 'preact';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport { boolOrTrue, EMPTY_OBJECT, noop } from '../../../utils';\nimport useReflex from '../../../hooks/useReflex';\nimport useTimezone from '../Calendar/hooks/useTimezone';\nimport { DEFAULT_FIRST_WEEK_DAY } from '../Calendar/calendar/timerange/presets/shared/offsetWeek';\nimport { DateFilterProps } from '../FilterBar/filters/DateFilter/types';\nimport TimeRangeSelector from './components/TimeRangeSelector';\nimport Calendar from '../Calendar';\nimport calendar from '../Calendar/calendar';\nimport useCalendarControlsRendering from '../Calendar/hooks/useCalendarControlsRendering';\nimport { CalendarHandle, CalendarProps } from '../Calendar/types';\nimport './DatePicker.scss';\n\nexport type DatePickerProps = CalendarProps &\n    Pick<DateFilterProps, 'now' | 'selectedPresetOption' | 'showTimezoneInfo' | 'timeRangePresetOptions' | 'timezone'> & {\n        onPresetOptionSelected?: (option: string) => any;\n    };\n\nconst DatePicker = forwardRef((props: DatePickerProps, ref) => {\n    const { i18n } = useCoreContext();\n    const [controlsRenderer, controlsContainerRef] = useCalendarControlsRendering(props.renderControl);\n    const [lastUpdatedTimestamp, setLastUpdatedTimestamp] = useState<DOMHighResTimeStamp>(performance.now());\n\n    const withTimezone = useMemo(() => boolOrTrue(props.showTimezoneInfo), [props.showTimezoneInfo]);\n    const { clockTime: time, GMTOffset: offset } = useTimezone({ timezone: props.timezone, withClock: withTimezone });\n\n    const datePickerClassName = useMemo(() => cx([{ 'adyen-pe-datepicker--with-timezone': withTimezone }, 'adyen-pe-datepicker']), [withTimezone]);\n    const timezoneI18nOptions = useMemo(() => (withTimezone ? { values: { offset, time } } : EMPTY_OBJECT), [offset, time, withTimezone]);\n\n    const calendarRef = useReflex<CalendarHandle>(noop, ref as Ref<CalendarHandle>);\n\n    const onHighlight = useCallback(() => {\n        setLastUpdatedTimestamp(performance.now());\n\n        if (calendarRef.current?.from && calendarRef.current?.to) {\n            props.onHighlight?.(+calendarRef.current?.from, +calendarRef.current?.to);\n        }\n    }, [setLastUpdatedTimestamp, props.onHighlight]);\n\n    return (\n        <div className={datePickerClassName}>\n            <div className={'adyen-pe-datepicker__selector-container'}>\n                <TimeRangeSelector\n                    now={props.now}\n                    calendarRef={calendarRef}\n                    onTimeRangeSelected={props.onPresetOptionSelected}\n                    options={props.timeRangePresetOptions}\n                    selectedOption={props.selectedPresetOption}\n                    timestamp={lastUpdatedTimestamp}\n                    timezone={props.timezone}\n                />\n            </div>\n            <div ref={controlsContainerRef} role=\"group\" className={'adyen-pe-datepicker__controls'} aria-label={i18n.get('calendar.controls')} />\n            <Calendar\n                {...props}\n                ref={calendarRef}\n                firstWeekDay={DEFAULT_FIRST_WEEK_DAY}\n                dynamicBlockRows={true}\n                onlyCellsWithin={true}\n                controls={props.controls ?? calendar.controls.MINIMAL}\n                highlight={props.highlight ?? calendar.highlight.MANY}\n                onHighlight={onHighlight}\n                renderControl={controlsRenderer}\n                trackCurrentDay={true}\n            />\n            {withTimezone && <div className={'adyen-pe-datepicker__timezone'}>{i18n.get('calendar.timezone', timezoneI18nOptions)}</div>}\n        </div>\n    );\n});\n\nexport default DatePicker;\n","import useButton from '../../../Button/hooks/useButton';\nimport { TypographyElement, TypographyVariant } from '../../../Typography/types';\nimport Typography from '../../../Typography/Typography';\nimport { fixedForwardRef, parseBooleanProp, parseClassName } from '../../../../../utils/preact';\nimport { ForwardedRef } from 'preact/compat';\nimport { useMemo } from 'preact/hooks';\nimport { FilterButtonProps } from './types';\nimport './FilterButton.scss';\n\nconst DEFAULT_FILTER_BUTTON_CLASSNAME = 'adyen-pe-filter-button';\n\nfunction FilterButton(props: FilterButtonProps, ref: ForwardedRef<HTMLButtonElement>) {\n    const { className, classNameModifiers = [], children, disabled, onClick, ...restAttributes } = props;\n    const classNameValue = useMemo(() => parseClassName('', className) || '', [className]);\n    const disabledValue = useMemo(() => parseBooleanProp(disabled), [disabled]);\n\n    const { classes, click } = useButton(classNameValue, classNameModifiers, DEFAULT_FILTER_BUTTON_CLASSNAME, disabledValue, props, onClick);\n\n    return (\n        <button className={classes} ref={ref} onClick={click} {...restAttributes}>\n            <Typography el={TypographyElement.DIV} variant={TypographyVariant.BODY} stronger={true}>\n                {children}\n            </Typography>\n        </button>\n    );\n}\nexport default fixedForwardRef(FilterButton);\n","import InputBase from './InputBase';\nimport { InputBaseProps } from './types';\nimport { ForwardedRef, forwardRef } from 'preact/compat';\n\nexport default forwardRef(function InputText(props: InputBaseProps, ref: ForwardedRef<HTMLInputElement | null>) {\n    return <InputBase classNameModifiers={props.classNameModifiers} {...props} ref={ref} aria-required={props.required} type=\"text\" />;\n});\n","import { containerQueries, useResponsiveContainer } from '../../../../../hooks/useResponsiveContainer';\nimport FilterButton from '../../components/FilterButton/FilterButton';\nimport Popover from '../../../Popover/Popover';\nimport { PopoverContainerPosition, PopoverContainerVariant } from '../../../Popover/types';\nimport { TypographyElement, TypographyVariant } from '../../../Typography/types';\nimport Typography from '../../../Typography/Typography';\nimport useCommitAction, { CommitAction } from '../../../../../hooks/useCommitAction';\nimport useUniqueIdentifier from '../../../../../hooks/element/useUniqueIdentifier';\nimport { isEmptyString, isNull } from '../../../../../utils';\nimport { memo } from 'preact/compat';\nimport { MutableRef, useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { Ref } from 'preact';\nimport useBooleanState from '../../../../../hooks/useBooleanState';\nimport '../../../FormFields';\nimport InputText from '../../../FormFields/InputText';\nimport { BaseFilterProps, FilterEditModalRenderProps, FilterProps } from './types';\n\nconst isValueEmptyFallback = (value?: string) => {\n    return !value || isEmptyString(value);\n};\n\nconst renderFallback = (() => {\n    const DefaultEditModalBody = <T extends BaseFilterProps>(props: FilterEditModalRenderProps<T>) => {\n        const { editAction, name, onChange, onValueUpdated } = props;\n        const [currentValue, setCurrentValue] = useState(props.value);\n\n        const handleInput = useCallback(\n            (e: Event) => {\n                const value = (e.target as HTMLInputElement).value.trim();\n                setCurrentValue(value);\n                onValueUpdated(value);\n            },\n            [onValueUpdated]\n        );\n\n        useEffect(() => {\n            if (editAction === CommitAction.CLEAR) {\n                const value = '';\n                setCurrentValue(value);\n                onValueUpdated(value);\n                onChange(value);\n            }\n\n            if (editAction === CommitAction.APPLY) {\n                onChange(currentValue ?? '');\n            }\n        }, [currentValue, editAction, onChange, onValueUpdated]);\n\n        return <InputText name={name} value={currentValue} onInput={handleInput} />;\n    };\n\n    return <T extends BaseFilterProps>(props: FilterEditModalRenderProps<T>) => <DefaultEditModalBody<T> {...props} />;\n})();\n\nconst BaseFilter = <T extends BaseFilterProps = BaseFilterProps>({ render, ...props }: FilterProps<T>) => {\n    const isSmContainer = useResponsiveContainer(containerQueries.down.xs);\n    const [editMode, _updateEditMode] = useBooleanState(false);\n    const [editModalMounting, updateEditModalMounting] = useBooleanState(false);\n    const isValueEmpty = useMemo(() => props.isValueEmpty ?? isValueEmptyFallback, [props.isValueEmpty]);\n    const [hasEmptyValue, updateHasEmptyValue] = useBooleanState(isValueEmpty(props.value));\n    const [hasInitialValue, updateHasInitialValue] = useBooleanState(false);\n    const [valueChanged, updateValueChanged] = useBooleanState(false);\n    const [disabledApply, updateDisabledApply] = useBooleanState(isValueEmpty(props.value));\n    const targetElement = useUniqueIdentifier() as NonNullable<MutableRef<Element | null>>;\n\n    const renderModalBody = useMemo(() => render ?? renderFallback<T>, [render]);\n\n    const onValueUpdated = useCallback(\n        (currentValue?: string | null) => {\n            const hasEmptyValue = isValueEmpty(currentValue ?? undefined);\n            updateHasEmptyValue(hasEmptyValue);\n            updateDisabledApply(isNull(currentValue));\n            updateValueChanged(hasInitialValue ? currentValue !== props.value : !hasEmptyValue);\n        },\n        [isValueEmpty, updateHasEmptyValue, updateDisabledApply, updateValueChanged, hasInitialValue, props.value]\n    );\n\n    const { commitAction, commitActionButtons, committing, resetCommitAction } = useCommitAction({\n        applyDisabled: disabledApply || !valueChanged,\n        resetDisabled: hasEmptyValue,\n    });\n\n    const [closeEditDialog, openEditDialog] = useMemo(() => {\n        const updateEditMode = (mode: boolean) => () => {\n            if (mode === editMode) return;\n\n            if (mode) {\n                resetCommitAction();\n                updateValueChanged(false);\n                updateHasInitialValue(false);\n            }\n\n            _updateEditMode(mode);\n            updateEditModalMounting(mode);\n        };\n\n        return [updateEditMode(false), updateEditMode(true)];\n    }, [_updateEditMode, editMode, resetCommitAction, updateEditModalMounting, updateHasInitialValue, updateValueChanged]);\n\n    useEffect(() => {\n        if (editModalMounting) {\n            const hasEmptyValue = isValueEmpty(props.value);\n            updateEditModalMounting(false);\n            updateHasEmptyValue(hasEmptyValue);\n            updateHasInitialValue(!hasEmptyValue);\n        }\n    }, [props.value, editModalMounting, isValueEmpty, updateEditModalMounting, updateHasEmptyValue, updateHasInitialValue]);\n\n    useEffect(() => {\n        committing && closeEditDialog();\n        updateHasEmptyValue(hasEmptyValue);\n    }, [committing, closeEditDialog, updateHasEmptyValue, hasEmptyValue]);\n    const isOnlySmContainer = useResponsiveContainer(containerQueries.only.sm);\n    const isOnlyMdContainer = useResponsiveContainer(containerQueries.only.md);\n\n    return (\n        <>\n            <div className={`adyen-pe-filter adyen-pe-filter--${props.type}`}>\n                {useMemo(\n                    () => (\n                        <FilterButton\n                            classNameModifiers={[\n                                ...(props.appliedFilterAmount ? ['with-counter'] : []),\n                                ...(props.classNameModifiers ?? []),\n                                ...(editMode ? ['active'] : []),\n                                ...(hasEmptyValue ? [] : ['has-selection']),\n                            ]}\n                            onClick={editMode ? closeEditDialog : openEditDialog}\n                            tabIndex={0}\n                            ref={targetElement as Ref<HTMLButtonElement>}\n                        >\n                            <div className=\"adyen-pe-filter-button__default-container\">\n                                <Typography\n                                    el={TypographyElement.SPAN}\n                                    variant={TypographyVariant.BODY}\n                                    stronger={true}\n                                    className=\"adyen-pe-filter-button__label\"\n                                >\n                                    {props.label}\n                                </Typography>\n                                {!!props.appliedFilterAmount && (\n                                    <div className=\"adyen-pe-filter-button__counter-wrapper\">\n                                        <Typography\n                                            el={TypographyElement.SPAN}\n                                            variant={TypographyVariant.BODY}\n                                            stronger={true}\n                                            className=\"adyen-pe-filter-button__counter\"\n                                        >\n                                            {props.appliedFilterAmount}\n                                        </Typography>\n                                    </div>\n                                )}\n                            </div>\n                        </FilterButton>\n                    ),\n                    [\n                        props.appliedFilterAmount,\n                        props.classNameModifiers,\n                        props.label,\n                        editMode,\n                        hasEmptyValue,\n                        closeEditDialog,\n                        openEditDialog,\n                        targetElement,\n                    ]\n                )}\n            </div>\n            {editMode && (\n                <Popover\n                    actions={commitActionButtons}\n                    title={props.title?.trim()}\n                    variant={PopoverContainerVariant.POPOVER}\n                    modifiers={['filter']}\n                    open={editMode}\n                    aria-label={`${props.label}`}\n                    dismiss={closeEditDialog}\n                    dismissible={false}\n                    withContentPadding={props.withContentPadding ?? true}\n                    divider={true}\n                    targetElement={targetElement}\n                    disableFocusTrap={false}\n                    position={PopoverContainerPosition.BOTTOM}\n                    containerSize={props.containerSize}\n                    showOverlay={isSmContainer}\n                    fitPosition={isOnlySmContainer || isOnlyMdContainer}\n                >\n                    {renderModalBody({ ...props, editAction: commitAction, onValueUpdated })}\n                </Popover>\n            )}\n        </>\n    );\n};\n\nexport default memo(BaseFilter);\n","import { UseTimeRangeSelectionConfig } from '../../../DatePicker/components/TimeRangeSelector';\nimport { BaseFilterProps } from '../BaseFilter/types';\n\nexport const enum DateRangeFilterParam {\n    FROM = 'from',\n    TO = 'to',\n}\n\nexport interface DateFilterProps extends BaseFilterProps {\n    onChange: (params?: { [P in DateRangeFilterParam | 'selectedPresetOption']?: string }) => void;\n    sinceDate?: string;\n    untilDate?: string;\n    now?: UseTimeRangeSelectionConfig['now'];\n    selectedPresetOption?: string;\n    showTimezoneInfo?: boolean;\n    timeRangePresetOptions: UseTimeRangeSelectionConfig['options'];\n    timezone?: UseTimeRangeSelectionConfig['timezone'];\n    [DateRangeFilterParam.FROM]?: string;\n    [DateRangeFilterParam.TO]?: string;\n}\n","import Localization from '../../../../../core/Localization';\nimport useTimezoneAwareDateFormatting from '../../../../../hooks/useTimezoneAwareDateFormatting';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { BASE_LOCALE } from '../../../../../core/Localization/datetime/restamper/constants';\nimport { EMPTY_OBJECT } from '../../../../../utils';\nimport { CommitAction } from '../../../../../hooks/useCommitAction';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { CalendarHandle } from '../../../Calendar/types';\nimport DatePicker from '../../../DatePicker';\nimport BaseFilter from '../BaseFilter';\nimport { FilterEditModalRenderProps, FilterProps } from '../BaseFilter/types';\nimport { DateFilterProps, DateRangeFilterParam } from './types';\nimport './DateFilterCore.scss';\n\nconst formattingOptions = {\n    month: 'short',\n    day: 'numeric',\n    year: 'numeric',\n} as const;\n\nconst computeDateFilterValue = (i18n: Localization['i18n'], fullDateFormat: Localization['fullDate'], fromDate?: string, toDate?: string) => {\n    const from = fromDate && fullDateFormat(fromDate);\n    const to = toDate && fullDateFormat(toDate);\n\n    if (from && to) return `${from} - ${to}`;\n    if (from) return i18n.get('filter.date.since', { values: { date: from } });\n    if (to) return i18n.get('filter.date.until', { values: { date: to } });\n};\n\nconst resolveDate = (date?: any) => {\n    try {\n        return new Date(date || '').toISOString();\n    } catch {\n        return '';\n    }\n};\n\nconst renderDateFilterModalBody = (() => {\n    const DateFilterEditModalBody = ({\n        editAction,\n        from,\n        to,\n        now,\n        onChange,\n        onValueUpdated,\n        showTimezoneInfo,\n        selectedPresetOption,\n        timeRangePresetOptions,\n        timezone,\n        sinceDate,\n        untilDate,\n    }: FilterEditModalRenderProps<DateFilterProps>) => {\n        const { i18n } = useCoreContext();\n        const { fullDateFormat } = useTimezoneAwareDateFormatting(timezone);\n        const [presetOption, setPresetOption] = useState(selectedPresetOption);\n        const originDate = useMemo(() => [new Date(from as string), new Date(to as string)], [from, to]);\n        const datePickerRef = useRef<CalendarHandle & { selection?: string }>();\n\n        const onHighlight = useCallback(\n            (from?: number, to?: number) => {\n                onValueUpdated(computeDateFilterValue(i18n, fullDateFormat, resolveDate(from), resolveDate(to)));\n            },\n            [i18n, fullDateFormat, onValueUpdated]\n        );\n\n        useEffect(() => {\n            switch (editAction) {\n                case CommitAction.APPLY:\n                    onChange({\n                        selectedPresetOption: presetOption,\n                        [DateRangeFilterParam.FROM]: resolveDate(datePickerRef.current?.from),\n                        [DateRangeFilterParam.TO]: resolveDate(datePickerRef.current?.to),\n                    });\n                    break;\n\n                case CommitAction.CLEAR:\n                    datePickerRef.current?.clear();\n                    onChange();\n            }\n        }, [editAction, onChange, presetOption]);\n\n        return (\n            <DatePicker\n                ref={datePickerRef}\n                now={now}\n                originDate={originDate}\n                onHighlight={onHighlight}\n                onPresetOptionSelected={setPresetOption}\n                selectedPresetOption={selectedPresetOption}\n                timeRangePresetOptions={timeRangePresetOptions}\n                timezone={timezone}\n                showTimezoneInfo={showTimezoneInfo}\n                sinceDate={resolveDate(sinceDate)}\n                untilDate={resolveDate(untilDate)}\n            />\n        );\n    };\n\n    return (props: FilterEditModalRenderProps<DateFilterProps>) => <DateFilterEditModalBody {...props} />;\n})();\n\nconst customDateRangeFormat = (formatter: Intl.DateTimeFormat, fromDate: Date, toDate: Date) => {\n    return formatter.formatRange(fromDate, toDate);\n};\n\nexport default function DateFilterCore<T extends DateFilterProps = DateFilterProps>({\n    title,\n    from,\n    to,\n    selectedPresetOption,\n    ...props\n}: FilterProps<T>) {\n    const { i18n } = useCoreContext();\n    const { fullDateFormat } = useTimezoneAwareDateFormatting(props.timezone);\n    const [selectedPresetOptionValue, setSelectedPresetOption] = useState<string>();\n    const [fromValue, setFrom] = useState<string>();\n    const [toValue, setTo] = useState<string>();\n\n    const onChange = useCallback<NonNullable<typeof props.onChange>>(\n        params => {\n            const { from, to, selectedPresetOption } = params ?? (EMPTY_OBJECT as NonNullable<typeof params>);\n            try {\n                setSelectedPresetOption(selectedPresetOptionValue ?? selectedPresetOption);\n                setFrom(resolveDate(fromValue ?? from));\n                setTo(resolveDate(toValue ?? to));\n            } finally {\n                props.onChange({ from, to, selectedPresetOption });\n            }\n        },\n        [selectedPresetOptionValue, fromValue, toValue, props]\n    );\n\n    const customSelection = useMemo(() => i18n.get('rangePreset.custom'), [i18n]);\n\n    const dateTimeFormatter = useMemo(() => {\n        const _formattingOptions = { ...formattingOptions, timeZone: props.timezone };\n        let formatter = new Intl.DateTimeFormat(BASE_LOCALE, _formattingOptions);\n\n        try {\n            formatter = new Intl.DateTimeFormat(i18n.locale, _formattingOptions);\n        } catch {\n            /* invalid locale: continue with base `en-US` formatter */\n        }\n\n        return formatter;\n    }, [i18n, props.timezone]);\n\n    useEffect(() => setSelectedPresetOption(selectedPresetOption), [selectedPresetOption]);\n    useEffect(() => setFrom(resolveDate(from || Date.now())), [from]);\n    useEffect(() => setTo(resolveDate(to || Date.now())), [to]);\n\n    const label = useMemo(() => {\n        if (selectedPresetOption === customSelection && fromValue && toValue) {\n            return customDateRangeFormat(dateTimeFormatter, new Date(fromValue), new Date(toValue));\n        }\n\n        return selectedPresetOption ?? props.label;\n    }, [customSelection, dateTimeFormatter, fromValue, toValue, selectedPresetOption, props.label]);\n\n    return (\n        <BaseFilter<T>\n            {...(props as FilterProps<T>)}\n            from={from}\n            to={to}\n            type={'date'}\n            label={label}\n            onChange={onChange}\n            render={renderDateFilterModalBody}\n            selectedPresetOption={selectedPresetOption}\n            value={computeDateFilterValue(i18n, fullDateFormat, from, to)}\n            withContentPadding={false}\n        />\n    );\n}\n","import { UseTimeRangeSelectionConfig } from '../../../DatePicker/components/TimeRangeSelector';\nimport DateFilterCore from './DateFilterCore';\nimport useDefaultOverviewFilterParams from '../../../../../hooks/useDefaultOverviewFilterParams';\nimport { FilterParam } from '../../../../types';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { DateFilterProps, DateRangeFilterParam } from './types';\nimport { UsePaginatedRecords } from '../../../Pagination/hooks/types';\nimport { EMPTY_OBJECT } from '../../../../../utils';\n\ntype DataOverviewDateFilterProps = Pick<UsePaginatedRecords<any, string, FilterParam>, 'canResetFilters' | 'filters' | 'updateFilters'> &\n    ReturnType<typeof useDefaultOverviewFilterParams> & {\n        timezone?: UseTimeRangeSelectionConfig['timezone'];\n    };\n\nconst DateFilter = <T extends DateFilterProps = DateFilterProps>({\n    timezone,\n    canResetFilters,\n    defaultParams,\n    filters,\n    nowTimestamp,\n    refreshNowTimestamp,\n    sinceDate,\n    untilDate,\n    updateFilters,\n}: Pick<T, 'sinceDate' | 'untilDate'> & DataOverviewDateFilterProps) => {\n    const { i18n } = useCoreContext();\n    const defaultTimeRangePreset = useMemo(() => i18n.get(defaultParams.current.defaultTimeRange), [i18n]);\n    const [selectedTimeRangePreset, setSelectedTimeRangePreset] = useState(defaultTimeRangePreset);\n\n    const updateCreatedDateFilter = useCallback(\n        (params: Parameters<DateFilterProps['onChange']>[0] = EMPTY_OBJECT) => {\n            for (const [param, value] of Object.entries(params) as [keyof typeof params, (typeof params)[keyof typeof params]][]) {\n                switch (param) {\n                    case 'selectedPresetOption':\n                        setSelectedTimeRangePreset(value || defaultTimeRangePreset);\n                        break;\n                    case DateRangeFilterParam.FROM:\n                        updateFilters({\n                            [FilterParam.CREATED_SINCE]: value || defaultParams.current.defaultFilterParams[FilterParam.CREATED_SINCE],\n                        });\n                        break;\n                    case DateRangeFilterParam.TO:\n                        updateFilters({\n                            [FilterParam.CREATED_UNTIL]: value || defaultParams.current.defaultFilterParams[FilterParam.CREATED_UNTIL],\n                        });\n                        break;\n                    default:\n                        return;\n                }\n\n                refreshNowTimestamp();\n            }\n        },\n        [defaultTimeRangePreset, refreshNowTimestamp, updateFilters]\n    );\n\n    useMemo(() => !canResetFilters && setSelectedTimeRangePreset(defaultTimeRangePreset), [canResetFilters, defaultTimeRangePreset]);\n\n    return (\n        <DateFilterCore\n            label={i18n.get('dateRange')}\n            name={FilterParam.CREATED_SINCE}\n            sinceDate={sinceDate}\n            untilDate={untilDate ?? new Date(nowTimestamp).toString()}\n            from={filters[FilterParam.CREATED_SINCE]}\n            to={filters[FilterParam.CREATED_UNTIL]}\n            selectedPresetOption={selectedTimeRangePreset}\n            timeRangePresetOptions={defaultParams.current.timeRangeOptions}\n            timezone={timezone}\n            onChange={updateCreatedDateFilter}\n            showTimezoneInfo={true}\n            now={nowTimestamp}\n        />\n    );\n};\n\nexport default DateFilter;\n","import { TranslationKey } from '../../translations';\nimport { ModalSize } from '../../components/internal/Modal/types';\n\ntype CallbackFunction<T> = (arg: T) => void;\n\ntype DetailsConfig<T> = {\n    showDetails: boolean;\n    callback?: CallbackFunction<T>;\n};\n\nexport type SelectedDetail<Options> = {\n    title?: TranslationKey;\n    selection: { type: keyof Options; data: any };\n    modalSize?: ModalSize;\n};\n\nexport type GetArgsExceptCallback<T extends Required<DetailsConfig<any>>> = Omit<Parameters<T['callback']>[0], 'showModal'>;\n\nexport type ModalDetailsOptions<Options extends string> = {\n    [k in Options]: DetailsConfig<any>;\n};\n\nexport type CallbackIsPresent<\n    Opt extends ModalDetailsOptions<any>,\n    Options extends ModalDetailsOptions<Extract<keyof Opt, string>>,\n    T extends SelectedDetail<Options>\n> = Options[T['selection']['type']] extends {\n    callback: any;\n}\n    ? true\n    : false;\n\nexport type CallbackParams<\n    Opt extends ModalDetailsOptions<any>,\n    Options extends ModalDetailsOptions<Extract<keyof Opt, string>>,\n    T extends SelectedDetail<Options>\n> = {\n    callback: (\n        args: Options[T['selection']['type']] extends { callback: any } ? GetArgsExceptCallback<Required<Options[T['selection']['type']]>> : never\n    ) => void;\n};\nexport function hasCallback(options: any): options is Required<DetailsConfig<any>> {\n    return 'callback' in options;\n}\n","import { useCallback, useMemo, useState } from 'preact/hooks';\nimport { CallbackIsPresent, CallbackParams, GetArgsExceptCallback, hasCallback, ModalDetailsOptions, SelectedDetail } from './types';\n\n/**\n * @param options - This parameter is an object that contains several fields.\n *                  The keys of these fields represent the type of details that will be displayed on a modal.\n *                  - showDetails: An array of values that determine whether the details should be shown on the modal.\n *                                 If this field is undefined, it will be assumed to be true.\n *                  - callback?: An optional function that will be executed at the merchant level.\n *                               This function will receive a 'showModal' function as a parameter,\n *                               which allows the merchant to control when the modal appears.\n */\n\nfunction useModalDetails<Options extends ModalDetailsOptions<any>>(options: Options) {\n    const [selectedDetail, setSelectedDetail] = useState<SelectedDetail<Options> | null>(null);\n    const updateDetails = useCallback(\n        <T extends SelectedDetail<Options>>(\n            state: T\n        ): CallbackIsPresent<Options, Options, T> extends true ? CallbackParams<Options, Options, T> : {} => {\n            if (state && hasCallback(options[state.selection.type])) {\n                return {\n                    callback: options?.[state.selection.type]?.callback\n                        ? (\n                              args: Options[T['selection']['type']] extends { callback: any }\n                                  ? GetArgsExceptCallback<Required<Options[T['selection']['type']]>>\n                                  : never\n                          ) => options[state.selection.type]?.callback?.({ showModal: () => setSelectedDetail(state), ...args })\n                        : () => options[state.selection.type]?.showDetails && setSelectedDetail(state),\n                };\n            }\n            setSelectedDetail(state);\n            return {} as CallbackIsPresent<Options, Options, T> extends true ? CallbackParams<Options, Options, T> : {};\n        },\n        [options]\n    );\n    const resetDetails = useCallback(() => setSelectedDetail(null), []);\n\n    const detailsToShow = useMemo(() => {\n        const details = {} as { [key in keyof Options]: boolean };\n\n        for (const detail in options) {\n            const selectedDetail = options[detail];\n            details[detail] = !selectedDetail?.showDetails || !!selectedDetail.callback;\n        }\n\n        return details;\n    }, [options]);\n\n    return {\n        selectedDetail,\n        updateDetails,\n        detailsToShow,\n        resetDetails,\n    };\n}\n\nexport default useModalDetails;\n","import { memo } from 'preact/compat';\nimport Select from '../../../../internal/FormFields/Select';\nimport { containerQueries, useResponsiveContainer } from '../../../../../hooks/useResponsiveContainer';\nimport type { SelectProps } from '../../../../internal/FormFields/Select/types';\nimport useMultiSelectionFilter from './useMultiSelectionFilter';\n\nconst MultiSelectionFilter = memo(\n    <FilterParam extends string = string, FilterValue extends string = string>({\n        placeholder,\n        selection,\n        selectionOptions,\n        updateSelection,\n    }: ReturnType<typeof useMultiSelectionFilter<FilterParam, FilterValue>> & Pick<SelectProps<any>, 'placeholder'>) => {\n        const isSmContainer = useResponsiveContainer(containerQueries.down.xs);\n        const isOnlySmContainer = useResponsiveContainer(containerQueries.only.sm);\n        const isOnlyMdContainer = useResponsiveContainer(containerQueries.only.md);\n\n        return selectionOptions && selectionOptions.length > 1 ? (\n            <Select\n                onChange={updateSelection}\n                filterable={false}\n                multiSelect={true}\n                placeholder={placeholder}\n                selected={selection}\n                withoutCollapseIndicator={true}\n                items={selectionOptions}\n                showOverlay={isSmContainer}\n                fitPosition={isOnlyMdContainer || isOnlySmContainer}\n            />\n        ) : null;\n    }\n);\n\nexport default MultiSelectionFilter;\n","import { SelectItem } from '../../../../../internal/FormFields/Select/types';\nimport { SelectionOptionsList } from './types';\n\nexport const selectionOptionsFor = <T extends string = string>(list: SelectionOptionsList<T>) =>\n    Object.freeze(list.map(id => ({ id, name: id } as SelectItem)));\n","import { useCallback, useMemo, useState } from 'preact/hooks';\nimport { listFrom } from '../../../../../../utils';\nimport { selectionOptionsFor } from './utils';\nimport type { SelectionOptionsList, UseMultiSelectionFilterConfig, UseMultiSelectionFilterConfigWithoutValues } from './types';\n\nexport const useMultiSelectionFilter = <FilterParam extends string = string, FilterValue extends string = string>({\n    filterParam,\n    filterValues,\n    filters,\n    defaultFilters,\n    updateFilters,\n}: UseMultiSelectionFilterConfig<FilterParam, FilterValue>) => {\n    const selection = useMemo(() => {\n        return listFrom<FilterValue>(filters?.[filterParam] ?? defaultFilters?.[filterParam] ?? '');\n    }, [defaultFilters, filters, filterParam]);\n\n    const selectionOptions = useMemo(() => filterValues && selectionOptionsFor(filterValues), [filterValues]);\n\n    const updateSelection = useCallback(\n        ({ target }: any) => {\n            updateFilters?.({ [filterParam]: target?.value || '' });\n        },\n        [updateFilters, filterParam]\n    );\n\n    return { selection, selectionOptions, updateSelection } as const;\n};\n\nexport const useMultiSelectionFilterWithoutValues = <FilterParam extends string = string, FilterValue extends string = string>(\n    config: UseMultiSelectionFilterConfigWithoutValues<FilterParam, FilterValue>\n) => {\n    const [filterValues, updateFilterValues] = useState<SelectionOptionsList<FilterValue>>();\n    const useMultiSelectionFilterProperties = useMultiSelectionFilter({ ...config, filterValues });\n    return { ...useMultiSelectionFilterProperties, filterValues, updateFilterValues } as const;\n};\n\nexport default useMultiSelectionFilter;\n","import { FilterParam } from '../../../../../types';\nimport type { ITransaction } from '../../../../../../types';\nimport type { TransactionsOverviewMultiSelectionFilterParam } from './types';\n\nexport const TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTERS = [FilterParam.CURRENCIES, FilterParam.CATEGORIES, FilterParam.STATUSES] as const;\n\nexport const DEFAULT_TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTER_PARAMS = Object.freeze(\n    Object.fromEntries(TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTERS.map(param => [param, '']))\n) as Readonly<{ [P in TransactionsOverviewMultiSelectionFilterParam]: string }>;\n\nexport const TRANSACTION_CATEGORIES: readonly ITransaction['category'][] = [\n    'ATM',\n    'Capital',\n    'Chargeback',\n    'Correction',\n    'Fee',\n    'Payment',\n    'Refund',\n    'Transfer',\n    'Other',\n] as const;\n\nexport const TRANSACTION_STATUSES: readonly ITransaction['status'][] = ['Booked', 'Pending', 'Reversed'] as const;\n","import useBalanceAccountSelection from './useBalanceAccountSelection';\nimport { MutableRef, useCallback, useEffect, useRef, useState } from 'preact/hooks';\nimport { getTimeRangeSelectionDefaultPresetOptions } from '../components/internal/DatePicker/components/TimeRangeSelector';\nimport { DEFAULT_TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTER_PARAMS } from '../components/external/TransactionsOverview/components/MultiSelectionFilter';\nimport { FilterParam } from '../components/types';\n\nconst getDefaultFilterParams = (type: 'transactions' | 'payouts' | 'reports') => {\n    const timeRangeOptions = getTimeRangeSelectionDefaultPresetOptions();\n    const defaultTimeRange = 'rangePreset.last30Days';\n    const { from, to } = timeRangeOptions[defaultTimeRange];\n\n    const defaultFilterParams = {\n        ...(type === 'transactions' && {\n            ...DEFAULT_TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTER_PARAMS,\n            [FilterParam.MIN_AMOUNT]: undefined,\n            [FilterParam.MAX_AMOUNT]: undefined,\n        }),\n        [FilterParam.BALANCE_ACCOUNT]: undefined,\n        [FilterParam.CREATED_SINCE]: new Date(from).toISOString(),\n        [FilterParam.CREATED_UNTIL]: new Date(to).toISOString(),\n    } as const;\n\n    return { defaultFilterParams, defaultTimeRange, timeRangeOptions } as const;\n};\n\nconst useDefaultOverviewFilterParams = (\n    filterType: Parameters<typeof getDefaultFilterParams>[0],\n    balanceAccount?: ReturnType<typeof useBalanceAccountSelection>['activeBalanceAccount']\n) => {\n    const [nowTimestamp, setNowTimestamp] = useState(Date.now());\n    const params = getDefaultFilterParams(filterType);\n    const defaultParams: MutableRef<any> = useRef(params);\n    const refreshNowTimestamp = useCallback(() => setNowTimestamp(Date.now()), [setNowTimestamp]);\n\n    useEffect(() => {\n        refreshNowTimestamp();\n    }, [balanceAccount, refreshNowTimestamp]);\n\n    return { defaultParams, nowTimestamp, refreshNowTimestamp } as const;\n};\n\nexport default useDefaultOverviewFilterParams;\n","import { FC } from 'preact/compat';\nimport Typography from '../../Typography/Typography';\nimport useCoreContext from '../../../../core/Context/useCoreContext';\nimport { TypographyElement, TypographyVariant } from '../../Typography/types';\nimport type { TranslationKey } from '../../../../translations';\nimport type { UIElementProps } from '../../../types';\nimport './DataOverviewHeader.scss';\n\nexport const BASE_CLASS = 'adyen-pe-data-overview-header';\n\nexport interface DataOverviewHeaderProps {\n    baseClassName?: string;\n    descriptionKey?: TranslationKey;\n    hideTitle?: UIElementProps['hideTitle'];\n    titleKey?: TranslationKey;\n}\n\nexport const DataOverviewHeader: FC<DataOverviewHeaderProps> = ({ baseClassName = BASE_CLASS, children, hideTitle, titleKey, descriptionKey }) => {\n    const { i18n } = useCoreContext();\n    return (\n        <header className={baseClassName}>\n            <div className={`${baseClassName}__headings`}>\n                {!hideTitle && titleKey && (\n                    <div className={`${baseClassName}__title`}>\n                        <Typography el={TypographyElement.SPAN} variant={TypographyVariant.TITLE} medium>\n                            {i18n.get(titleKey)}\n                        </Typography>\n                    </div>\n                )}\n                {descriptionKey && (\n                    <p className={`${baseClassName}__description`}>\n                        <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY}>\n                            {i18n.get(descriptionKey)}\n                        </Typography>\n                    </p>\n                )}\n            </div>\n            {children && <div className={`${baseClassName}__controls`}>{children}</div>}\n        </header>\n    );\n};\n","import { useMemo } from 'preact/hooks';\nimport DataOverviewDetails from '../../DataOverviewDetails/DataOverviewDetails';\nimport { DetailsComponentProps, PayoutDetailsWithIdProps, SelectedDetail } from '../../DataOverviewDetails/types';\nimport './ModalContent.scss';\n\nconst CLASSNAMES = {\n    base: 'adyen-pe-modal-content',\n};\n\n// [TODO]: Consider covering ...restData with type information (added here as a hack to capture extra details)\nfunction ModalContent({ type, data, dataCustomization, ...restData }: SelectedDetail) {\n    const detailProps: DetailsComponentProps = useMemo(() => {\n        switch (type) {\n            case 'payout':\n                return { ...(data as PayoutDetailsWithIdProps & { balanceAccountDescription?: string }), type, ...restData };\n            case 'transaction':\n                // [TODO]: Consider providing type information for ...restData (added here to provide extra details)\n                return { id: data, type, ...restData } as DetailsComponentProps;\n            default:\n                return { data, type } as DetailsComponentProps;\n        }\n    }, [data, type]);\n\n    return (\n        <>\n            {detailProps && (\n                <div className={CLASSNAMES.base}>\n                    <DataOverviewDetails {...(detailProps as DetailsComponentProps)} dataCustomization={dataCustomization} />\n                </div>\n            )}\n        </>\n    );\n}\n\nexport default ModalContent;\n","import Modal from '../Modal';\nimport { useEffect } from 'preact/hooks';\nimport { FC, PropsWithChildren } from 'preact/compat';\nimport { popoverUtil } from '../Popover/utils/popoverUtil';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport useModalDetails from '../../../hooks/useModalDetails/useModalDetails';\nimport ModalContent from '../Modal/ModalContent/ModalContent';\nimport { DataCustomizationObject } from '../../types';\n\nexport interface DataOverviewDisplayProps {\n    onContactSupport?: () => void;\n    balanceAccountDescription?: string;\n    selectedDetail: ReturnType<typeof useModalDetails>['selectedDetail'];\n    resetDetails: ReturnType<typeof useModalDetails>['resetDetails'];\n    className: string;\n    dataCustomization?: DataCustomizationObject<any, any, any>;\n}\n\nexport const DataDetailsModal: FC<DataOverviewDisplayProps> = ({\n    children,\n    className,\n    selectedDetail,\n    resetDetails,\n    dataCustomization,\n}: PropsWithChildren<DataOverviewDisplayProps>) => {\n    const { i18n } = useCoreContext();\n    const isModalOpen = !!selectedDetail;\n\n    useEffect(() => {\n        if (isModalOpen) {\n            popoverUtil.closeAll();\n        }\n    }, [isModalOpen]);\n\n    return (\n        <div className={className}>\n            {children}\n            {selectedDetail && (\n                <Modal\n                    title={selectedDetail?.title ? i18n.get(selectedDetail.title) : undefined}\n                    isOpen={!!selectedDetail}\n                    aria-label={i18n.get('payoutDetails')}\n                    onClose={resetDetails}\n                    isDismissible={true}\n                    headerWithBorder={false}\n                    size={selectedDetail?.modalSize ?? 'large'}\n                >\n                    {selectedDetail && <ModalContent dataCustomization={{ details: dataCustomization }} {...selectedDetail?.selection} />}\n                </Modal>\n            )}\n        </div>\n    );\n};\n","import { useCallback, useEffect, useState } from 'preact/hooks';\nimport { OnDataRetrievedCallback } from '../components/types';\nimport { isFunction } from '../utils';\n\nexport const useCustomColumnsData = <T>({\n    records,\n    hasCustomColumn = false,\n    onDataRetrieve,\n    mergeCustomData,\n}: {\n    records: T[];\n    hasCustomColumn?: boolean;\n    onDataRetrieve: OnDataRetrievedCallback<T[]> | undefined;\n    mergeCustomData: (args: { retrievedData: Awaited<ReturnType<OnDataRetrievedCallback<T[]>>>; records: T[] }) => (T & Record<string, any>)[];\n}) => {\n    const [customRecords, setCustomRecords] = useState<T[] | (T & Record<string, any>)[]>(records);\n    const [loadingCustomRecords, setLoadingCustomRecords] = useState(false);\n\n    const mergedRecords = useCallback(async () => {\n        try {\n            if (hasCustomColumn && isFunction(onDataRetrieve)) {\n                const retrievedData = await onDataRetrieve(records);\n                if (!Array.isArray(retrievedData)) throw new Error('Retrieved data should be an array');\n                else setCustomRecords(mergeCustomData({ records, retrievedData: retrievedData?.filter(Boolean) || [] }));\n            } else {\n                setCustomRecords(records);\n            }\n        } catch (error) {\n            setCustomRecords(records);\n            console.error(error);\n        } finally {\n            setLoadingCustomRecords(false);\n        }\n    }, [hasCustomColumn, onDataRetrieve, mergeCustomData, records]);\n\n    useEffect(() => {\n        if (records.length) {\n            setLoadingCustomRecords(true);\n            void mergedRecords();\n        }\n    }, [mergedRecords, records]);\n\n    return { customRecords, loadingCustomRecords } as const;\n};\n","import { EMPTY_ARRAY } from '../../../utils';\nimport type { CustomColumn } from '../../types';\n\ntype _Fields<Field extends string> = readonly CustomColumn<Field>[];\n\nexport const hasCustomField = <Field extends string, PreferredFields extends _Fields<Field>, StandardFields extends readonly string[] = string[]>(\n    preferredFields?: PreferredFields,\n    standardFields = EMPTY_ARRAY as unknown as StandardFields\n) => {\n    if (Array.isArray(preferredFields)) {\n        for (const field of preferredFields) {\n            try {\n                // Normalize the field to determine its name (without any leading or trailing whitespaces)\n                const fieldName = typeof field === 'object' ? field?.key?.trim() : false;\n\n                if (\n                    // `fieldName` is expected to be a string (except in a case of misconfiguration)\n                    typeof fieldName === 'string' &&\n                    // `fieldName` should not be an empty string (except in a case of misconfiguration)\n                    fieldName &&\n                    // `field` is a custom field if `fieldName` is not in the `standardFields` list\n                    !standardFields.includes(fieldName as StandardFields[number])\n                ) {\n                    return true;\n                }\n            } catch (ex) {\n                // An exception will only be thrown if there is some misconfiguration of the preferred field.\n                // Only log the exception to console if not in production environment (vite).\n                if (!import.meta.env.PROD) console.error(ex);\n            }\n        }\n    }\n    return false;\n};\n\nexport default hasCustomField;\n","import { EMPTY_OBJECT } from '../../../utils';\n\nexport type MatchRecordCallback<OriginalRecord extends Record<string, any>, ModifiedRecord extends Record<string, any>> = (\n    modifiedRecord: ModifiedRecord,\n    originalRecord: OriginalRecord,\n    recordIndex: number\n) => any;\n\nexport type MergedRecord<OriginalRecord extends Record<string, any>, ModifiedRecord extends Record<string, any>> =\n    | OriginalRecord\n    | (OriginalRecord & Partial<Omit<ModifiedRecord, keyof OriginalRecord>>);\n\nexport const mergeRecords = <OriginalRecord extends Record<string, any>, ModifiedRecord extends Record<string, any>>(\n    originalRecords: OriginalRecord[],\n    modifiedRecords: ModifiedRecord[],\n    matchRecordCallback: MatchRecordCallback<OriginalRecord, ModifiedRecord>\n) => {\n    const mergedRecords: MergedRecord<OriginalRecord, ModifiedRecord>[] = [];\n\n    for (let i = 0; i < originalRecords.length; i++) {\n        const originalRecord = originalRecords[i]!;\n        const modifiedRecord = modifiedRecords.find(record => matchRecordCallback(record, originalRecord, i));\n        mergedRecords[i] = { ...(modifiedRecord ?? EMPTY_OBJECT), ...originalRecord };\n    }\n\n    return mergedRecords;\n};\n\nexport default mergeRecords;\n","import { BASE_CLASS, BASE_CLASS_DETAILS, EARLIEST_PAYOUT_SINCE_DATE } from './constants';\nimport { PAYOUT_TABLE_FIELDS, PayoutsTable } from '../PayoutsTable/PayoutsTable';\nimport FilterBar, { FilterBarMobileSwitch, useFilterBarState } from '../../../../internal/FilterBar';\nimport BalanceAccountSelector from '../../../../internal/FormFields/Select/BalanceAccountSelector';\nimport { DEFAULT_PAGE_LIMIT, LIMIT_OPTIONS } from '../../../../internal/Pagination/constants';\nimport { useCursorPaginatedRecords } from '../../../../internal/Pagination/hooks';\nimport useBalanceAccountSelection from '../../../../../hooks/useBalanceAccountSelection';\nimport DateFilter from '../../../../internal/FilterBar/filters/DateFilter/DateFilter';\nimport useModalDetails from '../../../../../hooks/useModalDetails/useModalDetails';\nimport { IPayout } from '../../../../../types';\nimport useDefaultOverviewFilterParams from '../../../../../hooks/useDefaultOverviewFilterParams';\nimport { DataOverviewHeader } from '../../../../internal/DataOverviewDisplay/DataOverviewHeader';\nimport { PayoutsOverviewComponentProps, ExternalUIComponentProps, FilterParam, CustomDataRetrieved } from '../../../../types';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport AdyenPlatformExperienceError from '../../../../../core/Errors/AdyenPlatformExperienceError';\nimport { IBalanceAccountBase } from '../../../../../types';\nimport { isFunction } from '../../../../../utils';\nimport { useCallback, useEffect, useMemo } from 'preact/hooks';\nimport { DataDetailsModal } from '../../../../internal/DataOverviewDisplay/DataDetailsModal';\nimport './PayoutsOverview.scss';\nimport { useCustomColumnsData } from '../../../../../hooks/useCustomColumnsData';\nimport hasCustomField from '../../../../utils/customData/hasCustomField';\nimport mergeRecords from '../../../../utils/customData/mergeRecords';\n\nexport const PayoutsOverview = ({\n    onFiltersChanged,\n    balanceAccounts,\n    allowLimitSelection,\n    preferredLimit = DEFAULT_PAGE_LIMIT,\n    onRecordSelection,\n    showDetails,\n    isLoadingBalanceAccount,\n    onContactSupport,\n    hideTitle,\n    dataCustomization,\n}: ExternalUIComponentProps<\n    PayoutsOverviewComponentProps & { balanceAccounts: IBalanceAccountBase[] | undefined; isLoadingBalanceAccount: boolean }\n>) => {\n    const { getPayouts: payoutsEndpointCall } = useConfigContext().endpoints;\n    const { activeBalanceAccount, balanceAccountSelectionOptions, onBalanceAccountSelection } = useBalanceAccountSelection(balanceAccounts);\n    const { defaultParams, nowTimestamp, refreshNowTimestamp } = useDefaultOverviewFilterParams('payouts', activeBalanceAccount);\n\n    const getPayouts = useCallback(\n        async (pageRequestParams: Record<FilterParam | 'cursor', string>, signal?: AbortSignal) => {\n            const requestOptions = { signal, errorLevel: 'error' } as const;\n\n            return payoutsEndpointCall!(requestOptions, {\n                query: {\n                    ...pageRequestParams,\n                    createdSince:\n                        pageRequestParams[FilterParam.CREATED_SINCE] ?? defaultParams.current.defaultFilterParams[FilterParam.CREATED_SINCE],\n                    createdUntil:\n                        pageRequestParams[FilterParam.CREATED_UNTIL] ?? defaultParams.current.defaultFilterParams[FilterParam.CREATED_UNTIL],\n                    balanceAccountId: activeBalanceAccount?.id ?? '',\n                },\n            });\n        },\n        [activeBalanceAccount?.id, defaultParams, payoutsEndpointCall]\n    );\n\n    // FILTERS\n    const filterBarState = useFilterBarState();\n    const _onFiltersChanged = useMemo(() => (isFunction(onFiltersChanged) ? onFiltersChanged : void 0), [onFiltersChanged]);\n    const preferredLimitOptions = useMemo(() => (allowLimitSelection ? LIMIT_OPTIONS : undefined), [allowLimitSelection]);\n\n    const { canResetFilters, error, fetching, filters, limit, limitOptions, records, resetFilters, updateFilters, updateLimit, ...paginationProps } =\n        useCursorPaginatedRecords<IPayout, 'data', string, FilterParam>({\n            fetchRecords: getPayouts,\n            dataField: 'data',\n            filterParams: defaultParams.current.defaultFilterParams,\n            initialFiltersSameAsDefault: true,\n            onFiltersChanged: _onFiltersChanged,\n            preferredLimit,\n            preferredLimitOptions,\n            enabled: !!activeBalanceAccount?.id && !!payoutsEndpointCall,\n        });\n\n    useEffect(() => {\n        refreshNowTimestamp();\n    }, [filters, refreshNowTimestamp]);\n\n    const payoutDetails = useMemo(\n        () => ({\n            showDetails: showDetails ?? true,\n            callback: onRecordSelection,\n        }),\n        [showDetails, onRecordSelection]\n    );\n\n    const mergeCustomData = useCallback(\n        ({ records, retrievedData }: { records: IPayout[]; retrievedData: CustomDataRetrieved[] }) =>\n            mergeRecords(records, retrievedData, (modifiedRecord, record) => modifiedRecord.createdAt === record.createdAt),\n        []\n    );\n\n    const hasCustomColumn = useMemo(() => hasCustomField(dataCustomization?.list?.fields, PAYOUT_TABLE_FIELDS), [dataCustomization?.list?.fields]);\n    const { customRecords, loadingCustomRecords } = useCustomColumnsData<IPayout>({\n        records,\n        hasCustomColumn,\n        onDataRetrieve: dataCustomization?.list?.onDataRetrieve,\n        mergeCustomData,\n    });\n\n    const modalOptions = useMemo(() => ({ payout: payoutDetails }), [payoutDetails]);\n\n    const { updateDetails, resetDetails, selectedDetail } = useModalDetails(modalOptions);\n\n    const onRowClick = useCallback(\n        (value: IPayout) => {\n            updateDetails({\n                selection: {\n                    type: 'payout',\n                    data: { id: activeBalanceAccount?.id, balanceAccountDescription: activeBalanceAccount?.description || '', date: value.createdAt },\n                },\n                modalSize: 'small',\n            }).callback({ balanceAccountId: activeBalanceAccount?.id || '', date: value.createdAt });\n        },\n        [updateDetails, activeBalanceAccount?.id, activeBalanceAccount?.description]\n    );\n\n    return (\n        <div className={BASE_CLASS}>\n            <DataOverviewHeader hideTitle={hideTitle} titleKey=\"payoutsTitle\" descriptionKey=\"payoutsNotice\">\n                <FilterBarMobileSwitch {...filterBarState} />\n            </DataOverviewHeader>\n            <FilterBar {...filterBarState}>\n                <BalanceAccountSelector\n                    activeBalanceAccount={activeBalanceAccount}\n                    balanceAccountSelectionOptions={balanceAccountSelectionOptions}\n                    onBalanceAccountSelection={onBalanceAccountSelection}\n                />\n                <DateFilter\n                    canResetFilters={canResetFilters}\n                    defaultParams={defaultParams}\n                    filters={filters}\n                    nowTimestamp={nowTimestamp}\n                    refreshNowTimestamp={refreshNowTimestamp}\n                    sinceDate={EARLIEST_PAYOUT_SINCE_DATE}\n                    timezone={'UTC'}\n                    updateFilters={updateFilters}\n                />\n            </FilterBar>\n            <DataDetailsModal\n                className={BASE_CLASS_DETAILS}\n                onContactSupport={onContactSupport}\n                selectedDetail={selectedDetail as ReturnType<typeof useModalDetails>['selectedDetail']}\n                resetDetails={resetDetails}\n                dataCustomization={dataCustomization?.details}\n            >\n                <PayoutsTable\n                    loading={fetching || isLoadingBalanceAccount || !balanceAccounts || loadingCustomRecords}\n                    data={dataCustomization?.list?.onDataRetrieve ? customRecords : records}\n                    showPagination={true}\n                    onRowClick={onRowClick}\n                    showDetails={showDetails}\n                    limit={limit}\n                    limitOptions={limitOptions}\n                    onContactSupport={onContactSupport}\n                    onLimitSelection={updateLimit}\n                    error={error as AdyenPlatformExperienceError}\n                    customColumns={dataCustomization?.list?.fields}\n                    {...paginationProps}\n                />\n            </DataDetailsModal>\n        </div>\n    );\n};\n","export const BASE_CLASS = 'adyen-pe-payouts-overview-container';\n","import useBalanceAccounts from '../../../../../hooks/useBalanceAccounts';\nimport DataOverviewContainer from '../../../../internal/DataOverviewContainer/DataOverviewContainer';\nimport type { PayoutsOverviewComponentProps, ExternalUIComponentProps } from '../../../../types';\nimport { PayoutsOverview } from '../PayoutsOverview/PayoutsOverview';\nimport { BASE_CLASS } from './constants';\n\nfunction PayoutsOverviewContainer({ ...props }: ExternalUIComponentProps<PayoutsOverviewComponentProps>) {\n    const { balanceAccounts, isBalanceAccountIdWrong, isFetching, error } = useBalanceAccounts(props.balanceAccountId);\n\n    return (\n        <DataOverviewContainer\n            balanceAccountsError={error}\n            className={BASE_CLASS}\n            errorMessage={'weCouldNotLoadThePayoutsOverview'}\n            isBalanceAccountIdWrong={isBalanceAccountIdWrong}\n            onContactSupport={props.onContactSupport}\n        >\n            <PayoutsOverview {...props} balanceAccounts={balanceAccounts} isLoadingBalanceAccount={isFetching} />\n        </DataOverviewContainer>\n    );\n}\nexport default PayoutsOverviewContainer;\n","import { _UIComponentProps, ExternalComponentType, PayoutsOverviewComponentProps } from '../../types';\nimport Payouts from './components/PayoutsOverviewContainer/PayoutsOverviewContainer';\nimport UIElement from '../UIElement/UIElement';\n\nexport class PayoutsElement extends UIElement<PayoutsOverviewComponentProps> {\n    public static type: ExternalComponentType = 'payouts';\n\n    constructor(props: _UIComponentProps<PayoutsOverviewComponentProps>) {\n        super(props);\n        this.componentToRender = this.componentToRender.bind(this);\n    }\n\n    public componentToRender = () => {\n        return (\n            <Payouts\n                {...this.props}\n                balanceAccountId={this.props.balanceAccountId}\n                ref={(ref: UIElement<PayoutsOverviewComponentProps>) => void (this.componentRef = ref)}\n            />\n        );\n    };\n}\n\nexport default PayoutsElement;\n","import { _UIComponentProps, ExternalComponentType } from '../../types';\nimport UIElement from '../UIElement/UIElement';\nimport DataOverviewDetails from '../../internal/DataOverviewDetails/DataOverviewDetails';\nimport { TransactionDetailsProps } from './types';\n\nexport class TransactionElement extends UIElement<TransactionDetailsProps> {\n    public static type: ExternalComponentType = 'transactionDetails';\n\n    constructor(props: _UIComponentProps<TransactionDetailsProps>) {\n        super(props);\n        this.componentToRender = this.componentToRender.bind(this);\n    }\n\n    public componentToRender = () => {\n        return (\n            <DataOverviewDetails\n                {...this.props}\n                type={'transaction'}\n                ref={(ref: UIElement<TransactionDetailsProps>) => void (this.componentRef = ref)}\n            />\n        );\n    };\n}\n\nexport default TransactionElement;\n","export const DIVIDER_CLASS_NAMES = {\n    base: 'adyen-pe-divider',\n};\n","import { FunctionalComponent } from 'preact';\nimport cx from 'classnames';\nimport './Divider.scss';\nimport { DividerProps } from './types';\nimport { DIVIDER_CLASS_NAMES } from './constants';\n\nexport const Divider: FunctionalComponent<DividerProps> = ({ className }) => {\n    return <hr className={cx(DIVIDER_CLASS_NAMES.base, className)} />;\n};\n","import cx from 'classnames';\nimport { FC } from 'preact/compat';\nimport Typography from '../Typography/Typography';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport { TypographyElement, TypographyVariant } from '../Typography/types';\nimport type { TranslationKey } from '../../../translations';\nimport type { UIElementProps } from '../../types';\nimport './Header.scss';\nimport { Divider } from '../Divider/Divider';\n\nexport const BASE_CLASS = 'adyen-pe-header';\n\nexport interface HeaderProps {\n    baseClassName?: string;\n    hasDivider?: boolean;\n    hideTitle?: UIElementProps['hideTitle'];\n    subtitleKey?: TranslationKey;\n    titleKey?: TranslationKey;\n    subtitleConfig?: {\n        variant?: TypographyVariant;\n        typographyEl?: TypographyElement;\n        classNames?: string;\n    };\n}\n\nexport const Header: FC<HeaderProps> = ({ baseClassName = BASE_CLASS, children, hasDivider, hideTitle, titleKey, subtitleKey, subtitleConfig }) => {\n    const { i18n } = useCoreContext();\n    return (\n        <header className={baseClassName}>\n            <div className={`${baseClassName}__headings`}>\n                {!hideTitle && titleKey && (\n                    <div className={`${baseClassName}__title`}>\n                        <Typography el={TypographyElement.SPAN} variant={TypographyVariant.TITLE} medium>\n                            {i18n.get(titleKey)}\n                        </Typography>\n                    </div>\n                )}\n                {subtitleKey && (\n                    <div className={cx(`${baseClassName}__subtitle`, subtitleConfig?.classNames)}>\n                        <Typography\n                            el={subtitleConfig?.typographyEl ?? TypographyElement.SPAN}\n                            variant={subtitleConfig?.variant ?? TypographyVariant.BODY}\n                        >\n                            {i18n.get(subtitleKey)}\n                        </Typography>\n                    </div>\n                )}\n                {hasDivider && <Divider className={`${baseClassName}__divider`} />}\n            </div>\n            {children && <div className={`${baseClassName}__controls`}>{children}</div>}\n        </header>\n    );\n};\n","export const BASE_CLASS = 'adyen-pe-transaction-totals';\nexport const ITEM_CLASS = 'adyen-pe-transaction-totals__item';\n","export const DEFAULT_BASE_BUTTON_CLASSNAME = 'adyen-pe-base-button';\n","import useButton from '../Button/hooks/useButton';\nimport { DEFAULT_BASE_BUTTON_CLASSNAME } from './constants';\nimport { fixedForwardRef, parseBooleanProp, parseClassName } from '../../../utils/preact';\nimport { Ref } from 'preact';\nimport { useMemo } from 'preact/hooks';\nimport { ButtonProps } from './types';\nimport './BaseButton.scss';\n\nfunction BaseButton(props: ButtonProps, ref: Ref<HTMLButtonElement>) {\n    const classNameValue = useMemo(() => parseClassName('', props.className) || '', [props.className]);\n    const disabledValue = useMemo(() => parseBooleanProp(props.disabled || false), [props.disabled]);\n\n    const { click, allProps } = useButton(\n        classNameValue,\n        [...(props.classNameModifiers || []), ...(props.fullWidth ? ['full-width'] : [])],\n        DEFAULT_BASE_BUTTON_CLASSNAME,\n        disabledValue,\n        props,\n        props.onClick\n    );\n\n    return (\n        <button type={props.type || 'button'} onClick={click} ref={ref} {...allProps}>\n            {props.children}\n        </button>\n    );\n}\n\nexport default fixedForwardRef(BaseButton);\n","const NAMESPACE = 'adyen-pe-expandable-card';\n\n// Block classes\nexport const BASE_CLASS = NAMESPACE;\n\n// Element classes\nexport const CONTAINER_CLASS = BASE_CLASS + '__container';\nexport const CONTENT_CLASS = BASE_CLASS + '__content';\nexport const CHEVRON_CLASS = BASE_CLASS + '__chevron';\n\n// Modifier classes\nexport const CONTAINER_BUTTON_CLASS = CONTAINER_CLASS + '--button';\nexport const CONTAINER_FILLED_CLASS = CONTAINER_CLASS + '--filled';\nexport const CONTAINER_HIDDEN_CLASS = CONTAINER_CLASS + '--hidden';\nexport const CONTAINER_IN_FLOW_CLASS = CONTAINER_CLASS + '--in-flow';\nexport const CONTAINER_OVERLAY_CLASS = CONTAINER_CLASS + '--overlay';\nexport const CONTENT_EXPANDABLE_CLASS = CONTENT_CLASS + '--expandable';\n\n// Custom properties\nexport const CARD_HEIGHT_PROPERTY = `--${NAMESPACE}-height`;\n\n// Other constants\nexport const CONTAINER_OVERLAY_ID = CONTAINER_OVERLAY_CLASS;\n","import classNames from 'classnames';\nimport { ExpandableCardProps } from './types';\nimport { PropsWithChildren } from 'preact/compat';\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { useClickOutside } from '../../../hooks/element/useClickOutside';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport BaseButton from '../BaseButton';\nimport ChevronUp from '../SVGIcons/ChevronUp';\nimport ChevronDown from '../SVGIcons/ChevronDown';\nimport './ExpandableCard.scss';\nimport {\n    BASE_CLASS,\n    CARD_HEIGHT_PROPERTY,\n    CHEVRON_CLASS,\n    CONTAINER_BUTTON_CLASS,\n    CONTAINER_CLASS,\n    CONTAINER_FILLED_CLASS,\n    CONTAINER_HIDDEN_CLASS,\n    CONTAINER_IN_FLOW_CLASS,\n    CONTAINER_OVERLAY_CLASS,\n    CONTAINER_OVERLAY_ID,\n    CONTENT_CLASS,\n    CONTENT_EXPANDABLE_CLASS,\n} from './constants';\n\nconst ExpandableCard = ({ renderHeader, children, filled, fullWidth, inFlow, ...listeners }: PropsWithChildren<ExpandableCardProps>) => {\n    const { i18n } = useCoreContext();\n    const [isOpen, setIsOpen] = useState(false);\n    const [collapsedCardHeight, setCollapsedCardHeight] = useState(0);\n    const inNormalFlow = useMemo(() => inFlow === true, [inFlow]);\n    const toggleIsOpen = useCallback(() => setIsOpen(isOpen => !isOpen), [setIsOpen]);\n    const expandButtonRef = useRef<HTMLButtonElement>(null);\n    const expandableCardRef = useRef<HTMLDivElement>(null);\n    const isClosedFromOutside = useRef(false);\n    const isOpenRef = useRef(isOpen);\n\n    const clickOutsideRef = useClickOutside<HTMLElement>(\n        undefined,\n        useCallback(() => {\n            if (isOpen) {\n                toggleIsOpen();\n                isClosedFromOutside.current = true;\n            }\n        }, [isOpen, toggleIsOpen])\n    );\n\n    useLayoutEffect(() => {\n        const cardElement = expandableCardRef.current;\n        if (!cardElement) return;\n\n        if (inNormalFlow) {\n            // The inNormalFlow value is currently `true`,\n            // Ensure the collapsed card height property is up-to-date\n            cardElement.style.setProperty(CARD_HEIGHT_PROPERTY, `${collapsedCardHeight}px`);\n        } else if (!isOpen) {\n            // The card isn't currently expanded, and the inNormalFlow value is currently `false`\n            // The collapsed card height property is no longer needed\n            cardElement.style.removeProperty(CARD_HEIGHT_PROPERTY);\n        }\n    }, [collapsedCardHeight, inNormalFlow, isOpen]);\n\n    useEffect(() => {\n        if (!inNormalFlow) return void setCollapsedCardHeight(0);\n\n        const element = expandButtonRef.current;\n        if (!element) return;\n\n        const resizeObserver = new ResizeObserver(entries => {\n            for (const entry of entries) {\n                if (entry.target !== element) continue;\n                setCollapsedCardHeight(element.offsetHeight || 0);\n            }\n        });\n\n        resizeObserver.observe(element);\n\n        return () => {\n            resizeObserver.unobserve(element);\n            resizeObserver.disconnect();\n        };\n    }, [inNormalFlow]);\n\n    useEffect(() => {\n        if (isOpen) {\n            clickOutsideRef.current?.focus();\n        } else {\n            // We want to manually focus the expand button only when the card is collapsed by inside clicks\n            // Therefore we skip the manual focus initially when isOpen is false and when we have outside clicks\n            if (isOpenRef.current !== isOpen && !isClosedFromOutside.current) {\n                expandButtonRef.current?.focus();\n            }\n            isClosedFromOutside.current = false;\n        }\n        isOpenRef.current = isOpen;\n    }, [isOpen, clickOutsideRef]);\n\n    return (\n        <div ref={expandableCardRef} className={BASE_CLASS}>\n            {children ? (\n                <>\n                    <BaseButton\n                        className={classNames(CONTAINER_CLASS, CONTAINER_BUTTON_CLASS, { [CONTAINER_FILLED_CLASS]: filled })}\n                        disabled={isOpen}\n                        fullWidth={fullWidth}\n                        aria-controls={CONTAINER_OVERLAY_ID}\n                        aria-expanded={isOpen}\n                        aria-hidden={isOpen}\n                        onClick={toggleIsOpen}\n                        ref={expandButtonRef}\n                        data-testid={'expand-button'}\n                        {...listeners}\n                    >\n                        <span className=\"adyen-pe-visually-hidden\">{i18n.get('expandableCard.expand')}</span>\n                        <div className={classNames(CONTENT_CLASS, CONTENT_EXPANDABLE_CLASS)}>{renderHeader}</div>\n                        <div className={CHEVRON_CLASS}>\n                            <ChevronDown role=\"presentation\" />\n                        </div>\n                    </BaseButton>\n                    <BaseButton\n                        id={CONTAINER_OVERLAY_ID}\n                        className={classNames(CONTAINER_CLASS, CONTAINER_BUTTON_CLASS, CONTAINER_OVERLAY_CLASS, {\n                            [CONTAINER_FILLED_CLASS]: filled,\n                            [CONTAINER_HIDDEN_CLASS]: !isOpen,\n                            [CONTAINER_IN_FLOW_CLASS]: inNormalFlow,\n                        })}\n                        disabled={!isOpen}\n                        fullWidth={fullWidth}\n                        aria-controls={CONTAINER_OVERLAY_ID}\n                        aria-expanded={isOpen}\n                        aria-hidden={!isOpen}\n                        onClick={toggleIsOpen}\n                        ref={clickOutsideRef}\n                        data-testid={'collapse-button'}\n                        {...listeners}\n                    >\n                        <span className=\"adyen-pe-visually-hidden\">{i18n.get('expandableCard.collapse')}</span>\n                        <div className={classNames(CONTENT_CLASS, CONTENT_EXPANDABLE_CLASS)}>\n                            {renderHeader}\n                            <div>{children}</div>\n                        </div>\n                        <div className={CHEVRON_CLASS}>\n                            <ChevronUp role=\"presentation\" />\n                        </div>\n                    </BaseButton>\n                </>\n            ) : (\n                <div className={classNames(CONTAINER_CLASS, { [CONTAINER_FILLED_CLASS]: filled })} {...listeners}>\n                    <div className={CONTENT_CLASS}>{renderHeader}</div>\n                </div>\n            )}\n        </div>\n    );\n};\n\nexport default ExpandableCard;\n","export const BASE_CLASS = 'adyen-pe-amount-skeleton';\nexport const MARGIN_CLASS = BASE_CLASS + '--has-margin';\nexport const LOADING_CLASS = BASE_CLASS + '--loading';\n","import classNames from 'classnames';\nimport { BASE_CLASS, LOADING_CLASS, MARGIN_CLASS } from './constants';\nimport './AmountSkeleton.scss';\nimport { FC } from 'preact/compat';\nimport { AmountSkeletonProps } from './types';\n\nexport const AmountSkeleton: FC<AmountSkeletonProps> = ({ hasMargin = false, isLoading = false, width }) => {\n    return <span className={classNames(BASE_CLASS, { [LOADING_CLASS]: isLoading, [MARGIN_CLASS]: hasMargin })} style={{ width }}></span>;\n};\n\nexport default AmountSkeleton;\n","export const BASE_CLASS = 'adyen-pe-summary-item';\nexport const LABEL_CONTAINER_CLASS = BASE_CLASS + '__label-container';\nexport const LABEL_CONTAINER_CLASS_LOADING = LABEL_CONTAINER_CLASS + '--loading';\nexport const BODY_CLASS = BASE_CLASS + '--body';\nexport const LABEL_CLASS = BASE_CLASS + '__label';\nexport const PLACEHOLDER_CLASS = BASE_CLASS + '__placeholder';\nexport const AMOUNT_CLASS = BASE_CLASS + '__amount';\n","import { LABEL_CLASS, LABEL_CONTAINER_CLASS, LABEL_CONTAINER_CLASS_LOADING } from './constants';\nimport { SummaryItemLabelProps } from './types';\nimport { TypographyVariant } from '../../../../internal/Typography/types';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { fixedForwardRef } from '../../../../../utils/preact';\nimport classNames from 'classnames';\nimport { ForwardedRef } from 'preact/compat';\n\nexport const SummaryItemLabel = fixedForwardRef(\n    ({ config, i18n, isSkeletonVisible, className, ...restArgs }: SummaryItemLabelProps, ref: ForwardedRef<HTMLSpanElement>) => {\n        return (\n            <span\n                className={classNames(LABEL_CONTAINER_CLASS, className, { [LABEL_CONTAINER_CLASS_LOADING]: isSkeletonVisible })}\n                style={{ cursor: 'default' }}\n                ref={ref}\n                {...restArgs}\n            >\n                {config.labelKey && (\n                    <Typography variant={TypographyVariant.CAPTION} className={LABEL_CLASS}>\n                        {i18n.get(config.labelKey)}\n                    </Typography>\n                )}\n            </span>\n        );\n    }\n);\n","import AmountSkeleton from '../AmountSkeleton/AmountSkeleton';\nimport { AMOUNT_CLASS, BASE_CLASS, BODY_CLASS, LABEL_CLASS, PLACEHOLDER_CLASS } from './constants';\nimport { SummaryItemLabel } from './SummaryItemLabel';\nimport { SummaryItemColumnConfig, SummaryItemProps } from './types';\nimport { Tooltip } from '../../../../internal/Tooltip/Tooltip';\nimport { TypographyVariant } from '../../../../internal/Typography/types';\nimport Typography from '../../../../internal/Typography/Typography';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport classNames from 'classnames';\nimport { useCallback, useEffect } from 'preact/hooks';\nimport './SummaryItem.scss';\nimport { containerQueries, useResponsiveContainer } from '../../../../../hooks/useResponsiveContainer';\n\nexport const SummaryItem = ({\n    columnConfigs,\n    isHeader = false,\n    isHovered = false,\n    isSkeletonVisible = false,\n    isLoading = false,\n    widths,\n    onWidthsSet,\n    isEmpty,\n}: SummaryItemProps) => {\n    const { i18n } = useCoreContext();\n\n    useEffect(() => {\n        const newWidths = columnConfigs.map(config => config.ref?.current?.getBoundingClientRect().width ?? 0);\n        onWidthsSet(newWidths);\n        // We need columnConfigs only for the refs, therefore we don't need to include them in effect dependencies\n        // If we do include it though, we run into an infinite loop of re-rendering\n        // TODO: Check what causes the infinite loop\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [onWidthsSet]);\n\n    const getColumnStyle = (index: number) => ({ width: widths && widths[index] ? widths[index] : 'auto' });\n\n    const isXsContainer = useResponsiveContainer(containerQueries.only.xs);\n\n    const typographyVariant = useCallback(\n        (config: SummaryItemColumnConfig, isLongValue: boolean) => {\n            if (config.valueHasLabelStyle) {\n                return TypographyVariant.CAPTION;\n            }\n            return isLongValue && !isXsContainer ? TypographyVariant.BODY : TypographyVariant.TITLE;\n        },\n        [isXsContainer]\n    );\n\n    return (\n        <div className={classNames(BASE_CLASS, { [BODY_CLASS]: !isHeader })}>\n            {columnConfigs.map((config, index) => {\n                const value = config.getValue();\n                const isLongValue = !!value && value.length > 12;\n                return (\n                    <div key={index}>\n                        {isHeader &&\n                            (config.tooltipLabel ? (\n                                <Tooltip content={i18n.get(`${config.tooltipLabel}`)} isContainerHovered={isHovered}>\n                                    <SummaryItemLabel config={config} i18n={i18n} isSkeletonVisible={isSkeletonVisible} />\n                                </Tooltip>\n                            ) : (\n                                <SummaryItemLabel config={config} i18n={i18n} isSkeletonVisible={isSkeletonVisible} />\n                            ))}\n                        {isSkeletonVisible ? (\n                            <AmountSkeleton isLoading={isLoading} hasMargin={config.hasSkeletonMargin} width={config.skeletonWidth + 'px'} />\n                        ) : isEmpty ? (\n                            <span className={classNames([BASE_CLASS, PLACEHOLDER_CLASS])}></span>\n                        ) : (\n                            <div ref={config.ref} style={getColumnStyle(index)}>\n                                <Typography\n                                    variant={typographyVariant(config, isLongValue)}\n                                    className={classNames({ [LABEL_CLASS]: config.valueHasLabelStyle, [AMOUNT_CLASS]: !config.valueHasLabelStyle })}\n                                >\n                                    {value}\n                                </Typography>\n                            </div>\n                        )}\n                    </div>\n                );\n            })}\n        </div>\n    );\n};\n","import { TransactionTotalItemProps } from './types';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { useMemo, useRef } from 'preact/hooks';\nimport { SummaryItemColumnConfig } from '../SummaryItem/types';\nimport { SummaryItem } from '../SummaryItem/SummaryItem';\n\nexport const TransactionTotalItem = ({\n    total,\n    hiddenField,\n    isHeader = false,\n    isHovered = false,\n    isSkeleton = false,\n    isLoading = false,\n    widths,\n    onWidthsSet,\n}: TransactionTotalItemProps) => {\n    const { i18n } = useCoreContext();\n    const incomingRef = useRef<HTMLDivElement>(null);\n    const expenseRef = useRef<HTMLDivElement>(null);\n    const currencyRef = useRef<HTMLDivElement>(null);\n\n    const columnConfigs: SummaryItemColumnConfig[] = useMemo(() => {\n        const incomingsConfig: SummaryItemColumnConfig = {\n            labelKey: 'totalIncoming',\n            ref: incomingRef,\n            skeletonWidth: 80,\n            getValue: () => total && i18n.amount(total.incomings, total.currency),\n            tooltipLabel: 'tooltip.totalIncoming',\n        };\n\n        const expensesConfig: SummaryItemColumnConfig = {\n            labelKey: 'totalOutgoing',\n            ref: expenseRef,\n            skeletonWidth: 80,\n            getValue: () => total && i18n.amount(total.expenses, total.currency),\n            tooltipLabel: 'tooltip.totalOutgoing',\n        };\n\n        return [\n            ...(hiddenField !== 'incomings' ? [incomingsConfig] : []),\n            ...(hiddenField !== 'expenses' ? [expensesConfig] : []),\n            {\n                ref: currencyRef,\n                skeletonWidth: 40,\n                valueHasLabelStyle: true,\n                getValue: () => total?.currency,\n            },\n        ];\n    }, [total, hiddenField, i18n]);\n\n    return (\n        <SummaryItem\n            isHovered={isHovered}\n            isEmpty={!total}\n            columnConfigs={columnConfigs}\n            isHeader={isHeader}\n            isSkeletonVisible={isSkeleton}\n            isLoading={isLoading}\n            widths={widths}\n            onWidthsSet={onWidthsSet}\n        />\n    );\n};\n","export const BASE_CLASS = 'adyen-pe-base-list';\n","import './BaseList.scss';\nimport { BASE_CLASS } from './constants';\nimport { FC } from 'preact/compat';\nimport { BaseListProps } from './types';\nimport cx from 'classnames';\n\nexport const BaseList: FC<BaseListProps> = ({ children, classNames }) => {\n    return <ul className={cx(BASE_CLASS, [classNames])}>{children}</ul>;\n};\n","import { useCallback, useState } from 'preact/hooks';\n\nexport const useMaxWidthsState = (): [number[], (widths: number[]) => void] => {\n    const [maxWidths, setMaxWidths] = useState<number[]>([]);\n    const setMaxWidthsConditionally = useCallback((widths: number[]) => {\n        setMaxWidths(currentMaxWidths =>\n            widths.every(width => !width)\n                ? widths\n                : widths.map((width, index) => {\n                      const currentMaxWidth = currentMaxWidths[index];\n                      return !currentMaxWidth || width > currentMaxWidth ? width : currentMaxWidth;\n                  })\n        );\n    }, []);\n    return [maxWidths, setMaxWidthsConditionally];\n};\n","import { useMemo, useState } from 'preact/hooks';\nimport ExpandableCard from '../../../../internal/ExpandableCard/ExpandableCard';\nimport { memo } from 'preact/compat';\nimport { TransactionTotalItem } from '../TransactionTotalItem/TransactionTotalItem';\nimport { BaseList } from '../../../../internal/BaseList/BaseList';\nimport { useMaxWidthsState } from '../../hooks/useMaxWidths';\nimport './TransactionTotals.scss';\nimport { ITransactionTotalWithKey, TotalsCardProps } from './types';\n\nexport const TotalsCard = memo(({ totals, isLoading, hiddenField, fullWidth }: TotalsCardProps) => {\n    const [maxWidths, setMaxWidths] = useMaxWidthsState();\n    const [isHovered, setIsHovered] = useState(false);\n\n    const [firstTotal, ...restOfTotals] = useMemo(() => {\n        return totals.map((t: Partial<ITransactionTotalWithKey>) => {\n            t['key'] = `${t.currency}-${Math.random()}`;\n            return t as ITransactionTotalWithKey;\n        });\n    }, [totals]);\n\n    return (\n        <ExpandableCard\n            renderHeader={\n                <TransactionTotalItem\n                    isHovered={isHovered}\n                    total={firstTotal}\n                    hiddenField={hiddenField}\n                    widths={maxWidths}\n                    isHeader\n                    isSkeleton={isLoading}\n                    isLoading={isLoading}\n                    onWidthsSet={setMaxWidths}\n                />\n            }\n            fullWidth={fullWidth}\n            onMouseEnter={() => setIsHovered(true)}\n            onFocus={() => setIsHovered(true)}\n            onMouseLeave={() => setIsHovered(false)}\n            onBlur={() => setIsHovered(false)}\n        >\n            {!isLoading && restOfTotals.length && (\n                <BaseList>\n                    {restOfTotals.map(total => (\n                        <li key={total.key}>\n                            <TransactionTotalItem\n                                isHovered={isHovered}\n                                total={total}\n                                hiddenField={hiddenField}\n                                widths={maxWidths}\n                                onWidthsSet={setMaxWidths}\n                            />\n                        </li>\n                    ))}\n                </BaseList>\n            )}\n        </ExpandableCard>\n    );\n});\n","import { useCallback, useMemo } from 'preact/hooks';\nimport { EMPTY_OBJECT } from '../../../../../utils';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport { useFetch } from '../../../../../hooks/useFetch';\nimport { OperationParameters } from '../../../../../types/api/endpoints';\nimport { WithPartialField } from '../../../../../utils/types';\nimport { BASE_CLASS, ITEM_CLASS } from './constants';\nimport { memo } from 'preact/compat';\nimport { ITransaction } from '../../../../../types';\nimport { containerQueries, useResponsiveContainer } from '../../../../../hooks/useResponsiveContainer';\nimport './TransactionTotals.scss';\nimport { TotalsCard } from './TotalsCard';\n\ntype TransactionTotalsProps = Required<OperationParameters<'getTransactionTotals'>['query']> & {\n    isAvailableCurrenciesFetching: boolean;\n    availableCurrencies: ITransaction['amount']['currency'][] | undefined;\n    fullWidth?: boolean;\n};\n\nconst TransactionTotals = memo(\n    ({\n        availableCurrencies,\n        isAvailableCurrenciesFetching,\n        balanceAccountId,\n        createdSince,\n        createdUntil,\n        categories,\n        statuses,\n        maxAmount,\n        minAmount,\n        currencies,\n        fullWidth,\n    }: WithPartialField<TransactionTotalsProps, 'balanceAccountId' | 'minAmount' | 'maxAmount'>) => {\n        const { getTransactionTotals } = useConfigContext().endpoints;\n\n        const fetchCallback = useCallback(async () => {\n            return getTransactionTotals?.(EMPTY_OBJECT, {\n                query: {\n                    createdSince,\n                    createdUntil,\n                    categories,\n                    statuses,\n                    maxAmount,\n                    minAmount,\n                    currencies,\n                    balanceAccountId: balanceAccountId!,\n                },\n            });\n        }, [balanceAccountId, categories, createdSince, createdUntil, currencies, getTransactionTotals, maxAmount, minAmount, statuses]);\n\n        const { data, isFetching } = useFetch({\n            fetchOptions: useMemo(() => ({ enabled: !!balanceAccountId && !!getTransactionTotals }), [balanceAccountId, getTransactionTotals]),\n            queryFn: fetchCallback,\n        });\n        const isLoading = !balanceAccountId || isFetching || isAvailableCurrenciesFetching;\n\n        const getTotals = useCallback(() => {\n            if (!availableCurrencies || !data) {\n                return data?.data;\n            }\n\n            const partialTotals = availableCurrencies.map(currency => {\n                const totalOfCurrency = data.data.find(total => total.currency === currency);\n                return totalOfCurrency || { currency, incomings: 0, expenses: 0 };\n            });\n\n            return partialTotals.concat(data.data.filter(total => !partialTotals.includes(total)));\n        }, [availableCurrencies, data]);\n\n        const totals = getTotals() ?? [];\n        const isXsContainer = useResponsiveContainer(containerQueries.only.xs);\n\n        return (\n            <div className={BASE_CLASS}>\n                {isXsContainer ? (\n                    <>\n                        <div className={ITEM_CLASS}>\n                            <TotalsCard totals={totals} isLoading={isLoading} hiddenField=\"expenses\" fullWidth={fullWidth} />\n                        </div>\n                        <div className={ITEM_CLASS}>\n                            <TotalsCard totals={totals} isLoading={isLoading} hiddenField=\"incomings\" fullWidth={fullWidth} />\n                        </div>\n                    </>\n                ) : (\n                    <TotalsCard totals={totals} isLoading={isLoading} fullWidth={fullWidth} />\n                )}\n            </div>\n        );\n    }\n);\n\nexport default TransactionTotals;\n","export const BASE_CLASS = 'adyen-pe-balances';\n","import useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { useMemo, useRef } from 'preact/hooks';\nimport { BalanceItemProps } from './types';\nimport { SummaryItemColumnConfig } from '../SummaryItem/types';\nimport { SummaryItem } from '../SummaryItem/SummaryItem';\n\nexport const BalanceItem = ({ balance, isHeader = false, isSkeleton = false, isLoading = false, widths, onWidthsSet, isEmpty }: BalanceItemProps) => {\n    const { i18n } = useCoreContext();\n    const amountRef = useRef<HTMLDivElement>(null);\n    const currencyRef = useRef<HTMLDivElement>(null);\n    const columnConfigs: SummaryItemColumnConfig[] = useMemo(\n        () => [\n            {\n                labelKey: 'accountBalance',\n                ref: amountRef,\n                skeletonWidth: 80,\n                getValue: () => balance && i18n.amount(balance.value, balance.currency),\n            },\n            {\n                ref: currencyRef,\n                skeletonWidth: 40,\n                valueHasLabelStyle: true,\n                getValue: () => balance?.currency,\n            },\n        ],\n        [balance, amountRef, i18n]\n    );\n\n    return (\n        <SummaryItem\n            isEmpty={isEmpty}\n            columnConfigs={columnConfigs}\n            isHeader={isHeader}\n            isSkeletonVisible={isSkeleton}\n            isLoading={isLoading}\n            widths={widths}\n            onWidthsSet={onWidthsSet}\n        />\n    );\n};\n","import { useCallback, useEffect, useMemo } from 'preact/hooks';\nimport { EMPTY_OBJECT } from '../../../../../utils';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport { useFetch } from '../../../../../hooks/useFetch';\nimport { memo } from 'preact/compat';\nimport { BASE_CLASS } from './constants';\nimport ExpandableCard from '../../../../internal/ExpandableCard/ExpandableCard';\nimport { BaseList } from '../../../../internal/BaseList/BaseList';\nimport { BalanceItem } from '../BalanceItem/BalanceItem';\nimport { useMaxWidthsState } from '../../hooks/useMaxWidths';\nimport { BalancesProps, IBalanceWithKey } from './types';\n\nexport const Balances = memo(({ balanceAccountId, defaultCurrencyCode, onCurrenciesChange, fullWidth }: BalancesProps) => {\n    const { getBalances: getAccountsBalance } = useConfigContext().endpoints;\n\n    const fetchCallback = useCallback(async () => {\n        return getAccountsBalance?.(EMPTY_OBJECT, {\n            path: { balanceAccountId: balanceAccountId! },\n        });\n    }, [balanceAccountId, getAccountsBalance]);\n\n    const { data, error, isFetching } = useFetch({\n        fetchOptions: useMemo(() => ({ enabled: !!balanceAccountId && !!getAccountsBalance }), [balanceAccountId, getAccountsBalance]),\n        queryFn: fetchCallback,\n    });\n\n    const isLoading = !balanceAccountId || isFetching;\n    const isEmpty = !!error || !data?.data.length;\n\n    const balances = useMemo(() => {\n        return (\n            data?.data &&\n            [...data.data].sort(({ currency: firstCurrency }, { currency: secondCurrency }) => {\n                if (defaultCurrencyCode) {\n                    if (firstCurrency === defaultCurrencyCode) return -1;\n                    if (secondCurrency === defaultCurrencyCode) return 1;\n                }\n                return firstCurrency.localeCompare(secondCurrency);\n            })\n        );\n    }, [data?.data, defaultCurrencyCode]);\n\n    const [firstBalance, ...restOfBalances] = useMemo(() => {\n        return (\n            balances?.map((t: Partial<IBalanceWithKey>) => {\n                t['key'] = `${t.currency}-${Math.random()}`;\n                return t as IBalanceWithKey;\n            }) ?? []\n        );\n    }, [balances]);\n\n    const [maxWidths, setMaxWidths] = useMaxWidthsState();\n\n    useEffect(() => {\n        const currencies = new Set(balances?.map(({ currency }) => currency) || []);\n        onCurrenciesChange(Array.from(currencies), isFetching);\n    }, [balances, isFetching, onCurrenciesChange]);\n\n    return (\n        <div className={BASE_CLASS}>\n            <ExpandableCard\n                renderHeader={\n                    <BalanceItem\n                        isEmpty={isEmpty}\n                        balance={firstBalance}\n                        widths={maxWidths}\n                        isHeader\n                        isSkeleton={isLoading}\n                        isLoading={isLoading}\n                        onWidthsSet={setMaxWidths}\n                    />\n                }\n                filled\n                fullWidth={fullWidth}\n            >\n                {restOfBalances.length && (\n                    <BaseList>\n                        {restOfBalances.map(balance => (\n                            <li key={balance.key}>\n                                <BalanceItem balance={balance} widths={maxWidths} onWidthsSet={setMaxWidths} />\n                            </li>\n                        ))}\n                    </BaseList>\n                )}\n            </ExpandableCard>\n        </div>\n    );\n});\n","import { FilterParam } from '../../../types';\nimport { ITransaction } from '../../../../types';\nimport {\n    DEFAULT_TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTER_PARAMS as defaultFilters,\n    TRANSACTION_CATEGORIES,\n    TRANSACTION_STATUSES,\n    TransactionsOverviewMultiSelectionFilterParam,\n    useMultiSelectionFilter,\n    UseMultiSelectionFilterConfig,\n} from '../components/MultiSelectionFilter';\n\nconst useTransactionsOverviewMultiSelectionFilters = (\n    filtersConfig: Pick<UseMultiSelectionFilterConfig<TransactionsOverviewMultiSelectionFilterParam>, 'filters' | 'updateFilters'>,\n    currencies: ITransaction['amount']['currency'][] | undefined\n) => {\n    const categoriesFilter = useMultiSelectionFilter({\n        filterParam: FilterParam.CATEGORIES,\n        filterValues: TRANSACTION_CATEGORIES,\n        defaultFilters,\n        ...filtersConfig,\n    });\n    const statusesFilter = useMultiSelectionFilter({\n        filterParam: FilterParam.STATUSES,\n        filterValues: TRANSACTION_STATUSES,\n        defaultFilters,\n        ...filtersConfig,\n    });\n\n    const currenciesFilter = useMultiSelectionFilter({\n        filterParam: FilterParam.CURRENCIES,\n        filterValues: currencies,\n        defaultFilters,\n        ...filtersConfig,\n    });\n\n    return {\n        categoriesFilter,\n        currenciesFilter,\n        statusesFilter,\n    } as const;\n};\n\nexport default useTransactionsOverviewMultiSelectionFilters;\n","export const AMOUNT_MULTIPLIER = 100000;\n","import { FilterEditModalRenderProps } from '../BaseFilter/types';\nimport { RangeFilterBody } from './types';\nimport InputBase from '../../../FormFields/InputBase';\nimport './AmountFilter.scss';\nimport { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { CommitAction } from '../../../../../hooks/useCommitAction';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { AMOUNT_MULTIPLIER } from './constants';\nimport { isUndefined } from '../../../../../utils';\n\nexport const RangeSelection = ({\n    onChange,\n    editAction,\n    onValueUpdated,\n    selectedCurrencies,\n    availableCurrencies,\n    value,\n    ...props\n}: FilterEditModalRenderProps<RangeFilterBody>) => {\n    const { i18n } = useCoreContext();\n\n    const [minAmount, setMinAmount] = useState<number | undefined>(\n        !isUndefined(props.minAmount) ? parseFloat(props.minAmount) / AMOUNT_MULTIPLIER : undefined\n    );\n    const [maxAmount, setMaxAmount] = useState<number | undefined>(\n        !isUndefined(props.maxAmount) ? parseFloat(props.maxAmount) / AMOUNT_MULTIPLIER : undefined\n    );\n\n    const applyFilter = useCallback(() => {\n        onChange({ minAmount, maxAmount });\n    }, [maxAmount, minAmount, onChange]);\n\n    const clearFilter = useCallback(() => {\n        onChange({ minAmount: undefined, maxAmount: undefined });\n        setMaxAmount(undefined);\n        setMinAmount(undefined);\n    }, [onChange]);\n\n    useEffect(() => {\n        if (editAction === CommitAction.APPLY) applyFilter();\n        if (editAction === CommitAction.CLEAR) clearFilter();\n    }, [applyFilter, clearFilter, editAction]);\n\n    const filterValue = useMemo(() => ({ minAmount: Number(minAmount), maxAmount: Number(maxAmount) }), [maxAmount, minAmount]);\n\n    useEffect(() => {\n        const { maxAmount, minAmount } = filterValue;\n        if ((isUndefined(maxAmount) && isUndefined(minAmount)) || minAmount > maxAmount) {\n            onValueUpdated(null);\n        } else onValueUpdated(`${minAmount}-${maxAmount}`);\n    }, [filterValue, onValueUpdated]);\n\n    return (\n        <div className=\"adyen-pe-range-selection-filter\">\n            <div className=\"adyen-pe-range-selection-filter__input\">\n                <label htmlFor=\"minValue\">{`${i18n.get('from')}:`}</label>\n                <InputBase\n                    data-testid={'minValueFilter'}\n                    lang={i18n.locale}\n                    name={'minValue'}\n                    type=\"number\"\n                    value={minAmount}\n                    onInput={e => {\n                        e.currentTarget && setMinAmount(e.currentTarget.value !== '' ? (e.currentTarget.value as any) : undefined);\n                    }}\n                    min={0}\n                    isInvalid={minAmount ? minAmount < 0 : false}\n                    errorMessage={i18n.get('noNegativeNumbersAllowed')}\n                />\n            </div>\n            <div className=\"adyen-pe-range-selection-filter__input\">\n                <label htmlFor=\"maxValue\">{`${i18n.get('to')}:`}</label>\n                <InputBase\n                    data-testid={'maxValueFilter'}\n                    lang={i18n.locale}\n                    name={'maxValue'}\n                    type=\"number\"\n                    value={maxAmount}\n                    onInput={e => {\n                        e.currentTarget && setMaxAmount(e.currentTarget.value !== '' ? (e.currentTarget.value as any) : undefined);\n                    }}\n                    min={minAmount}\n                    isInvalid={!isUndefined(maxAmount) && !isUndefined(minAmount) && maxAmount < minAmount}\n                    errorMessage={i18n.get('toValueShouldBeGreaterThanTheFromValue')}\n                />\n            </div>\n        </div>\n    );\n};\n","import BaseFilter from '../BaseFilter';\nimport { FilterProps } from '../BaseFilter/types';\nimport { RangeFilterProps } from './types';\nimport { RangeSelection } from './RangeSelection';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport { EMPTY_OBJECT, isUndefined } from '../../../../../utils';\nimport { PopoverContainerSize } from '../../../Popover/types';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { AMOUNT_MULTIPLIER } from './constants';\n\nexport const AmountFilter = ({ updateFilters, selectedCurrencies, availableCurrencies, ...props }: FilterProps<RangeFilterProps>) => {\n    const { i18n } = useCoreContext();\n    const [value, setValue] = useState<{ minAmount: number | undefined; maxAmount: number | undefined } | undefined>();\n    const [formattedValue, setValueFormattedValue] = useState<string | undefined>();\n\n    const showCurrencySymbol = useMemo(() => {\n        return selectedCurrencies?.length === 1 || availableCurrencies?.length === 1;\n    }, [availableCurrencies?.length, selectedCurrencies?.length]);\n\n    const formatAmount = useCallback(\n        (amount: number, showSymbol: boolean) => {\n            const currencyCode = selectedCurrencies?.[0] || availableCurrencies?.[0];\n            const options =\n                showSymbol && currencyCode\n                    ? {\n                          style: 'currency',\n                          currency: currencyCode,\n                          currencyDisplay: 'symbol',\n                      }\n                    : undefined;\n            return amount.toLocaleString(i18n.locale, options);\n        },\n        [availableCurrencies, i18n, selectedCurrencies]\n    );\n\n    const onFilterChange = useCallback(\n        (params: { minAmount: number | undefined; maxAmount: number | undefined; filterValue: string | undefined }) => {\n            const { minAmount, maxAmount } = params ?? EMPTY_OBJECT;\n            setValue({ minAmount, maxAmount });\n\n            if (isUndefined(minAmount) && isUndefined(maxAmount)) setValueFormattedValue(undefined);\n            updateFilters({\n                minAmount: !isUndefined(minAmount) ? String(Math.round(minAmount * AMOUNT_MULTIPLIER)) : undefined,\n                maxAmount: !isUndefined(maxAmount) ? String(Math.round(maxAmount * AMOUNT_MULTIPLIER)) : undefined,\n            });\n        },\n        [updateFilters]\n    );\n    if (value && (value.minAmount || value.maxAmount)) {\n        const { minAmount, maxAmount } = value ?? {};\n        if (!isUndefined(minAmount) && !isUndefined(maxAmount) && minAmount <= maxAmount) {\n            setValueFormattedValue(\n                `${formatAmount(minAmount, showCurrencySymbol)} ${i18n.get('to').toLowerCase()} ${formatAmount(maxAmount, showCurrencySymbol)}`\n            );\n        } else if (!isUndefined(minAmount) && isUndefined(maxAmount) && minAmount >= 0) {\n            setValueFormattedValue(`${i18n.get('from')} ${formatAmount(minAmount, showCurrencySymbol)}`);\n        } else if (isUndefined(minAmount) && !isUndefined(maxAmount)) {\n            setValueFormattedValue(`${i18n.get('to')} ${formatAmount(maxAmount, showCurrencySymbol)}`);\n        } else {\n            setValueFormattedValue(undefined);\n        }\n    }\n\n    return (\n        <BaseFilter<RangeFilterProps>\n            {...props}\n            updateFilters={updateFilters}\n            minAmount={props.minAmount}\n            maxAmount={props.maxAmount}\n            onChange={onFilterChange}\n            value={formattedValue}\n            label={formattedValue ? formattedValue : props.label}\n            type={'text'}\n            containerSize={PopoverContainerSize.MEDIUM}\n            selectedCurrencies={selectedCurrencies}\n            availableCurrencies={availableCurrencies}\n            render={RangeSelection}\n        />\n    );\n};\n","const _BASE_CLASS = 'adyen-pe-transactions';\n\nexport const BASE_CLASS = `${_BASE_CLASS}-overview`;\nexport const BASE_CLASS_DETAILS = `${_BASE_CLASS}-details`;\nexport const SUMMARY_CLASS = `${BASE_CLASS}__summary`;\nexport const SUMMARY_ITEM_CLASS = `${SUMMARY_CLASS}-item`;\n\nexport const MAX_TRANSACTIONS_DATE_RANGE_MONTHS = 24;\n","import { DataDetailsModal } from '../../../../internal/DataOverviewDisplay/DataDetailsModal';\nimport { TransactionsTable, TRANSACTION_FIELDS } from '../TransactionsTable/TransactionsTable';\nimport useBalanceAccountSelection from '../../../../../hooks/useBalanceAccountSelection';\nimport BalanceAccountSelector from '../../../../internal/FormFields/Select/BalanceAccountSelector';\nimport DateFilter from '../../../../internal/FilterBar/filters/DateFilter/DateFilter';\nimport FilterBar, { FilterBarMobileSwitch, useFilterBarState } from '../../../../internal/FilterBar';\nimport { TransactionOverviewComponentProps, ExternalUIComponentProps, FilterParam, CustomDataRetrieved } from '../../../../types';\nimport useModalDetails from '../../../../../hooks/useModalDetails/useModalDetails';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { useCursorPaginatedRecords } from '../../../../internal/Pagination/hooks';\nimport { Header } from '../../../../internal/Header';\nimport { IBalanceAccountBase, ITransaction } from '../../../../../types';\nimport { isFunction, isUndefined, listFrom } from '../../../../../utils';\nimport { DEFAULT_PAGE_LIMIT, LIMIT_OPTIONS } from '../../../../internal/Pagination/constants';\nimport TransactionTotals from '../TransactionTotals/TransactionTotals';\nimport { Balances } from '../Balances/Balances';\nimport MultiSelectionFilter from '../MultiSelectionFilter';\nimport useDefaultOverviewFilterParams from '../../../../../hooks/useDefaultOverviewFilterParams';\nimport useTransactionsOverviewMultiSelectionFilters from '../../hooks/useTransactionsOverviewMultiSelectionFilters';\nimport AdyenPlatformExperienceError from '../../../../../core/Errors/AdyenPlatformExperienceError';\nimport { AmountFilter } from '../../../../internal/FilterBar/filters/AmountFilter/AmountFilter';\nimport { BASE_CLASS, BASE_CLASS_DETAILS, MAX_TRANSACTIONS_DATE_RANGE_MONTHS, SUMMARY_CLASS, SUMMARY_ITEM_CLASS } from './constants';\nimport { containerQueries, useResponsiveContainer } from '../../../../../hooks/useResponsiveContainer';\nimport { useCustomColumnsData } from '../../../../../hooks/useCustomColumnsData';\nimport hasCustomField from '../../../../utils/customData/hasCustomField';\nimport mergeRecords from '../../../../utils/customData/mergeRecords';\nimport './TransactionsOverview.scss';\n\nexport const TransactionsOverview = ({\n    onFiltersChanged,\n    balanceAccounts,\n    allowLimitSelection,\n    preferredLimit = DEFAULT_PAGE_LIMIT,\n    onRecordSelection,\n    showDetails,\n    isLoadingBalanceAccount,\n    onContactSupport,\n    hideTitle,\n    dataCustomization,\n}: ExternalUIComponentProps<\n    TransactionOverviewComponentProps & { balanceAccounts: IBalanceAccountBase[] | undefined; isLoadingBalanceAccount: boolean }\n>) => {\n    const { i18n } = useCoreContext();\n    const { getTransactions: transactionsEndpointCall } = useConfigContext().endpoints;\n    const { activeBalanceAccount, balanceAccountSelectionOptions, onBalanceAccountSelection } = useBalanceAccountSelection(balanceAccounts);\n    const { defaultParams, nowTimestamp, refreshNowTimestamp } = useDefaultOverviewFilterParams('transactions', activeBalanceAccount);\n\n    const getTransactions = useCallback(\n        async ({ balanceAccount, ...pageRequestParams }: Record<FilterParam | 'cursor', string>, signal?: AbortSignal) => {\n            const requestOptions = { signal, errorLevel: 'error' } as const;\n\n            return transactionsEndpointCall!(requestOptions, {\n                query: {\n                    ...pageRequestParams,\n                    statuses: listFrom<ITransaction['status']>(pageRequestParams[FilterParam.STATUSES]),\n                    categories: listFrom<ITransaction['category']>(pageRequestParams[FilterParam.CATEGORIES]),\n                    currencies: listFrom<ITransaction['amount']['currency']>(pageRequestParams[FilterParam.CURRENCIES]),\n                    createdSince:\n                        pageRequestParams[FilterParam.CREATED_SINCE] ?? defaultParams.current.defaultFilterParams[FilterParam.CREATED_SINCE],\n                    createdUntil:\n                        pageRequestParams[FilterParam.CREATED_UNTIL] ?? defaultParams.current.defaultFilterParams[FilterParam.CREATED_UNTIL],\n                    sortDirection: 'desc' as const,\n                    balanceAccountId: activeBalanceAccount?.id ?? '',\n                    minAmount: !isUndefined(pageRequestParams.minAmount) ? parseFloat(pageRequestParams.minAmount) : undefined,\n                    maxAmount: !isUndefined(pageRequestParams.maxAmount) ? parseFloat(pageRequestParams.maxAmount) : undefined,\n                },\n            });\n        },\n        [activeBalanceAccount?.id, defaultParams, transactionsEndpointCall]\n    );\n\n    // FILTERS\n    const filterBarState = useFilterBarState();\n    const _onFiltersChanged = useMemo(() => (isFunction(onFiltersChanged) ? onFiltersChanged : void 0), [onFiltersChanged]);\n    const preferredLimitOptions = useMemo(() => (allowLimitSelection ? LIMIT_OPTIONS : undefined), [allowLimitSelection]);\n\n    //TODO - Infer the return type of getTransactions instead of having to specify it\n    const { canResetFilters, error, fetching, filters, limit, limitOptions, records, resetFilters, updateFilters, updateLimit, ...paginationProps } =\n        useCursorPaginatedRecords<ITransaction, 'data', string, FilterParam>({\n            fetchRecords: getTransactions,\n            dataField: 'data',\n            filterParams: defaultParams.current.defaultFilterParams,\n            initialFiltersSameAsDefault: true,\n            onFiltersChanged: _onFiltersChanged,\n            preferredLimit,\n            preferredLimitOptions,\n            enabled: !!activeBalanceAccount?.id && !!transactionsEndpointCall,\n        });\n\n    const [availableCurrencies, setAvailableCurrencies] = useState<ITransaction['amount']['currency'][] | undefined>([]);\n    const [isAvailableCurrenciesFetching, setIsAvailableCurrenciesFetching] = useState(false);\n    const handleCurrenciesChange = useCallback((currencies: ITransaction['amount']['currency'][] | undefined, isFetching: boolean) => {\n        setAvailableCurrencies(currencies);\n        setIsAvailableCurrenciesFetching(isFetching);\n    }, []);\n    const { categoriesFilter, currenciesFilter, statusesFilter } = useTransactionsOverviewMultiSelectionFilters(\n        {\n            filters,\n            updateFilters,\n        },\n        availableCurrencies\n    );\n\n    useEffect(() => {\n        setAvailableCurrencies(undefined);\n        updateFilters({\n            [FilterParam.BALANCE_ACCOUNT]: activeBalanceAccount?.id,\n            [FilterParam.CURRENCIES]: undefined,\n        });\n    }, [updateFilters, activeBalanceAccount?.id]);\n\n    useEffect(() => {\n        refreshNowTimestamp();\n    }, [filters, refreshNowTimestamp]);\n\n    // Set status filter's value fixed as \"Booked\" temporarily\n    useEffect(() => {\n        statusesFilter.updateSelection({ target: { value: 'Booked', name: 'status' } });\n    }, [statusesFilter]);\n\n    const isNarrowContainer = useResponsiveContainer(containerQueries.down.sm);\n\n    const hasMultipleCurrencies = !!availableCurrencies && availableCurrencies.length > 1;\n\n    const transactionDetails = useMemo(\n        () => ({\n            showDetails: showDetails ?? true,\n            callback: onRecordSelection,\n        }),\n        [showDetails, onRecordSelection]\n    );\n\n    const modalOptions = useMemo(() => ({ transaction: transactionDetails }), [transactionDetails]);\n\n    const mergeCustomData = useCallback(\n        ({ records, retrievedData }: { records: ITransaction[]; retrievedData: CustomDataRetrieved[] }) =>\n            mergeRecords(records, retrievedData, (modifiedRecord, record) => modifiedRecord.id === record.id),\n        []\n    );\n\n    const hasCustomColumn = useMemo(() => hasCustomField(dataCustomization?.list?.fields, TRANSACTION_FIELDS), [dataCustomization?.list?.fields]);\n\n    const { customRecords: transactions, loadingCustomRecords } = useCustomColumnsData<ITransaction>({\n        records,\n        hasCustomColumn,\n        onDataRetrieve: dataCustomization?.list?.onDataRetrieve,\n        mergeCustomData,\n    });\n    const { updateDetails, resetDetails, selectedDetail } = useModalDetails(modalOptions);\n\n    const onRowClick = useCallback(\n        ({ id }: ITransaction) => {\n            updateDetails({\n                selection: {\n                    type: 'transaction',\n                    data: id,\n                    balanceAccount: activeBalanceAccount || '',\n                },\n                modalSize: 'small',\n            }).callback({ id });\n        },\n        [activeBalanceAccount, updateDetails]\n    );\n\n    const sinceDate = useMemo(() => {\n        const date = new Date(nowTimestamp);\n        date.setMonth(date.getMonth() - MAX_TRANSACTIONS_DATE_RANGE_MONTHS);\n        return date.toString();\n    }, [nowTimestamp]);\n\n    return (\n        <div className={BASE_CLASS}>\n            <Header hideTitle={hideTitle} titleKey=\"transactionsOverviewTitle\">\n                <FilterBarMobileSwitch {...filterBarState} />\n            </Header>\n            <FilterBar {...filterBarState}>\n                <BalanceAccountSelector\n                    activeBalanceAccount={activeBalanceAccount}\n                    balanceAccountSelectionOptions={balanceAccountSelectionOptions}\n                    onBalanceAccountSelection={onBalanceAccountSelection}\n                />\n                <DateFilter\n                    canResetFilters={canResetFilters}\n                    defaultParams={defaultParams}\n                    filters={filters}\n                    nowTimestamp={nowTimestamp}\n                    refreshNowTimestamp={refreshNowTimestamp}\n                    sinceDate={sinceDate}\n                    timezone={activeBalanceAccount?.timeZone}\n                    updateFilters={updateFilters}\n                />\n                {/* Remove status filter temporarily */}\n                {/* <MultiSelectionFilter {...statusesFilter} placeholder={i18n.get('filterPlaceholder.status')} /> */}\n                <MultiSelectionFilter {...categoriesFilter} placeholder={i18n.get('filterPlaceholder.category')} />\n                <AmountFilter\n                    availableCurrencies={availableCurrencies}\n                    selectedCurrencies={listFrom(filters[FilterParam.CURRENCIES])}\n                    name={'range'}\n                    label={i18n.get('amount')}\n                    minAmount={filters[FilterParam.MIN_AMOUNT]}\n                    maxAmount={filters[FilterParam.MAX_AMOUNT]}\n                    updateFilters={updateFilters}\n                    onChange={updateFilters}\n                />\n                <MultiSelectionFilter {...currenciesFilter} placeholder={i18n.get('filterPlaceholder.currency')} />\n            </FilterBar>\n            <div className={SUMMARY_CLASS}>\n                <div className={SUMMARY_ITEM_CLASS}>\n                    <TransactionTotals\n                        availableCurrencies={availableCurrencies}\n                        isAvailableCurrenciesFetching={isAvailableCurrenciesFetching}\n                        balanceAccountId={activeBalanceAccount?.id}\n                        statuses={statusesFilter.selection}\n                        categories={categoriesFilter.selection}\n                        createdUntil={filters[FilterParam.CREATED_UNTIL]!}\n                        createdSince={filters[FilterParam.CREATED_SINCE]!}\n                        currencies={currenciesFilter.selection}\n                        minAmount={filters[FilterParam.MIN_AMOUNT] ? parseFloat(filters[FilterParam.MIN_AMOUNT]) : undefined}\n                        maxAmount={filters[FilterParam.MAX_AMOUNT] ? parseFloat(filters[FilterParam.MAX_AMOUNT]) : undefined}\n                        fullWidth={isNarrowContainer}\n                    />\n                </div>\n                <div className={SUMMARY_ITEM_CLASS}>\n                    <Balances\n                        balanceAccountId={activeBalanceAccount?.id}\n                        onCurrenciesChange={handleCurrenciesChange}\n                        defaultCurrencyCode={activeBalanceAccount?.defaultCurrencyCode}\n                        fullWidth={isNarrowContainer}\n                    />\n                </div>\n            </div>\n\n            <DataDetailsModal\n                dataCustomization={dataCustomization?.details}\n                selectedDetail={selectedDetail as ReturnType<typeof useModalDetails>['selectedDetail']}\n                resetDetails={resetDetails}\n                className={BASE_CLASS_DETAILS}\n            >\n                <TransactionsTable\n                    activeBalanceAccount={activeBalanceAccount}\n                    availableCurrencies={availableCurrencies}\n                    error={error as AdyenPlatformExperienceError}\n                    hasMultipleCurrencies={hasMultipleCurrencies}\n                    limit={limit}\n                    limitOptions={limitOptions}\n                    loading={fetching || isLoadingBalanceAccount || !balanceAccounts || loadingCustomRecords}\n                    onContactSupport={onContactSupport}\n                    onLimitSelection={updateLimit}\n                    onRowClick={onRowClick}\n                    showPagination={true}\n                    transactions={dataCustomization?.list?.onDataRetrieve ? transactions : records}\n                    customColumns={dataCustomization?.list?.fields}\n                    {...paginationProps}\n                />\n            </DataDetailsModal>\n        </div>\n    );\n};\n","export const BASE_CLASS = 'adyen-pe-transactions-overview-container';\n","import useBalanceAccounts from '../../../../../hooks/useBalanceAccounts';\nimport DataOverviewContainer from '../../../../internal/DataOverviewContainer/DataOverviewContainer';\nimport type { TransactionOverviewComponentProps, ExternalUIComponentProps } from '../../../../types';\nimport { TransactionsOverview } from '../TransactionsOverview/TransactionsOverview';\nimport { BASE_CLASS } from './constants';\n\nfunction TransactionsOverviewContainer({ ...props }: ExternalUIComponentProps<TransactionOverviewComponentProps>) {\n    const { balanceAccounts, isBalanceAccountIdWrong, isFetching, error } = useBalanceAccounts(props.balanceAccountId);\n\n    return (\n        <DataOverviewContainer\n            balanceAccountsError={error}\n            className={BASE_CLASS}\n            errorMessage={'weCouldNotLoadTheTransactionsOverview'}\n            isBalanceAccountIdWrong={isBalanceAccountIdWrong}\n            onContactSupport={props.onContactSupport}\n        >\n            <TransactionsOverview {...props} balanceAccounts={balanceAccounts} isLoadingBalanceAccount={isFetching} />\n        </DataOverviewContainer>\n    );\n}\n\nexport default TransactionsOverviewContainer;\n","import { _UIComponentProps, ExternalComponentType, TransactionOverviewComponentProps } from '../../types';\nimport Transactions from './components/TransactionsOverviewContainer/TransactionsOverviewContainer';\nimport UIElement from '../UIElement/UIElement';\n\nexport class TransactionsElement extends UIElement<TransactionOverviewComponentProps> {\n    public static type: ExternalComponentType = 'transactions';\n\n    constructor(props: _UIComponentProps<TransactionOverviewComponentProps>) {\n        super(props);\n        this.componentToRender = this.componentToRender.bind(this);\n    }\n\n    public componentToRender = () => {\n        return (\n            <Transactions\n                {...this.props}\n                balanceAccountId={this.props.balanceAccountId}\n                ref={(ref: UIElement<TransactionOverviewComponentProps>) => void (this.componentRef = ref)}\n            ></Transactions>\n        );\n    };\n}\n\nexport default TransactionsElement;\n","export const enum SupportedLocation {\n    'AU' = 'AU',\n    'EU' = 'EU',\n    'GB' = 'GB',\n    'US' = 'US',\n}\n\nexport const supportedCountries: string[] = ['AU', 'GB', 'US'];\n\nexport const supportedRegions: string[] = ['EU'];\n","import { TranslationKey } from '../../../translations';\nimport { ILegalEntity } from '../../../types';\nimport { supportedCountries, SupportedLocation, supportedRegions } from './constants';\n\nconst getCapitalRegion = (legalEntity?: ILegalEntity) => {\n    const capitalRegion = legalEntity?.regions?.find(region => region.type === 'capital');\n    return capitalRegion?.value ?? '';\n};\n\nconst getSubtitleByRegion = (region?: string) => {\n    switch (region) {\n        case SupportedLocation.EU:\n            return 'capital.legalSubtitleEU';\n        default:\n            return null;\n    }\n};\n\nconst getSubtitleByCountry = (countryCode?: string) => {\n    switch (countryCode) {\n        case SupportedLocation.AU:\n            return 'capital.legalSubtitleAU';\n        case SupportedLocation.GB:\n            return 'capital.legalSubtitleGB';\n        case SupportedLocation.US:\n            return 'capital.legalSubtitleUS';\n        default:\n            return null;\n    }\n};\n\nexport const getCapitalHeaderSubtitleByLegalEntity = (legalEntity?: ILegalEntity): TranslationKey | null => {\n    const region = getCapitalRegion(legalEntity);\n    const countryCode = legalEntity?.countryCode;\n\n    // Check the country first because it is more specific and first handle the one with a narrow scope\n    return getSubtitleByCountry(countryCode) ?? getSubtitleByRegion(region);\n};\n\nexport const isCapitalRegionSupported = (legalEntity?: ILegalEntity) => {\n    const region = getCapitalRegion(legalEntity);\n    const countryCode = legalEntity?.countryCode ?? '';\n\n    return supportedCountries.includes(countryCode) || supportedRegions.includes(region);\n};\n","import AdyenPlatformExperienceError from '../../../core/Errors/AdyenPlatformExperienceError';\nimport { ErrorMessage, getCommonErrorMessage } from '../getCommonErrorCode';\nimport CopyText from '../../internal/CopyText/CopyText';\n\nexport const COMMON_CAPITAL_ERROR_MESSAGE = {\n    contactSupportForHelp: 'contactSupportForHelp',\n    couldNotLoadOffers: 'capital.weCouldNotLoadFinancialOffers',\n    tryRefreshingThePage: 'tryRefreshingThePageOrComeBackLater',\n    somethingWentWrong: 'somethingWentWrong',\n} as const;\n\nconst UNKNOWN_ERROR = {\n    title: COMMON_CAPITAL_ERROR_MESSAGE.somethingWentWrong,\n    message: [COMMON_CAPITAL_ERROR_MESSAGE.couldNotLoadOffers, COMMON_CAPITAL_ERROR_MESSAGE.tryRefreshingThePage],\n    refreshComponent: true,\n};\n\nexport const getCapitalErrorMessage = (error: AdyenPlatformExperienceError | undefined, onContactSupport?: () => void): ErrorMessage => {\n    if (!error) return UNKNOWN_ERROR;\n    const commonError = getCommonErrorMessage(error, onContactSupport);\n    if (commonError) return commonError;\n\n    const errorCodeMessage = onContactSupport ? 'theErrorCodeIs' : 'contactSupportForHelpAndShareErrorCode';\n\n    switch (error.errorCode) {\n        case undefined:\n            return { ...UNKNOWN_ERROR, ...(onContactSupport ? { onContactSupport } : {}) };\n        case '30_016': {\n            return {\n                title: COMMON_CAPITAL_ERROR_MESSAGE.somethingWentWrong,\n                message: [COMMON_CAPITAL_ERROR_MESSAGE.couldNotLoadOffers, errorCodeMessage],\n                translationValues: {\n                    [errorCodeMessage]: error.requestId ? <CopyText textToCopy={error.requestId} /> : null,\n                },\n                onContactSupport,\n            };\n        }\n        case '30_011': {\n            return {\n                title: 'capital.accountIsInactive',\n                message: [COMMON_CAPITAL_ERROR_MESSAGE.couldNotLoadOffers, errorCodeMessage],\n                translationValues: {\n                    [errorCodeMessage]: error.requestId ? <CopyText textToCopy={error.requestId} /> : null,\n                },\n                onContactSupport,\n            };\n        }\n        case '30_600': {\n            return {\n                title: COMMON_CAPITAL_ERROR_MESSAGE.somethingWentWrong,\n                message: ['capital.weCouldNotContinueWithTheOffer', errorCodeMessage],\n                translationValues: {\n                    [errorCodeMessage]: error.requestId ? <CopyText textToCopy={error.requestId} /> : null,\n                },\n                onContactSupport,\n            };\n        }\n        case 'EMPTY_CONFIG': {\n            return {\n                title: COMMON_CAPITAL_ERROR_MESSAGE.somethingWentWrong,\n                message: ['capital.weCouldNotContinueWithTheOffer', COMMON_CAPITAL_ERROR_MESSAGE.contactSupportForHelp],\n            };\n        }\n        case 'UNSUPPORTED_REGION': {\n            return {\n                title: 'capital.unsupportedRegionTitle',\n                message: 'capital.unsupportedRegionDescription',\n            };\n        }\n        default:\n            return { ...UNKNOWN_ERROR, refreshComponent: true };\n    }\n};\n","import { getCapitalErrorMessage } from '../../../../utils/capital/getCapitalErrorMessage';\nimport AdyenPlatformExperienceError from '../../../../../core/Errors/AdyenPlatformExperienceError';\nimport { ErrorMessageDisplay } from '../../../../internal/ErrorMessageDisplay/ErrorMessageDisplay';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport Button from '../../../../internal/Button/Button';\nimport { ButtonVariant } from '../../../../internal/Button/types';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { AdyenErrorResponse } from '../../../../../core/Http/types';\nimport { ErrorTypes } from '../../../../../core/Http/utils';\n\nexport const CapitalErrorMessageDisplay = ({\n    emptyGrantOffer,\n    error,\n    onContactSupport,\n    onBack,\n    unsupportedRegion,\n}: {\n    emptyGrantOffer?: boolean;\n    error?: Error | AdyenErrorResponse;\n    onBack?: () => void;\n    onContactSupport?: () => void;\n    unsupportedRegion?: boolean;\n}) => {\n    const { i18n } = useCoreContext();\n\n    const renderSecondaryButton = useCallback(\n        () => (\n            <>\n                {onBack && (\n                    <Button variant={ButtonVariant.SECONDARY} onClick={onBack}>\n                        {i18n.get('back')}\n                    </Button>\n                )}\n            </>\n        ),\n        [i18n, onBack]\n    );\n\n    const capitalError = useMemo(() => {\n        if (unsupportedRegion) {\n            return new AdyenPlatformExperienceError(ErrorTypes.ERROR, 'UnsupportedRegion', 'Unsupported Region Configuration', 'UNSUPPORTED_REGION');\n        }\n        if (emptyGrantOffer) {\n            return new AdyenPlatformExperienceError(ErrorTypes.ERROR, 'EmptyConfig', 'Empty Configuration', 'EMPTY_CONFIG');\n        }\n        return error;\n    }, [emptyGrantOffer, unsupportedRegion, error]);\n    return (\n        <ErrorMessageDisplay\n            absolutePosition={false}\n            withImage\n            onContactSupport={onContactSupport}\n            renderSecondaryButton={renderSecondaryButton}\n            outlined={false}\n            {...getCapitalErrorMessage(capitalError as AdyenPlatformExperienceError, onContactSupport)}\n        />\n    );\n};\n","export const CAPITAL_OFFER_CLASS_NAMES = {\n    base: 'adyen-pe-capital-offer',\n    errorContainer: 'adyen-pe-capital-offer__error-container',\n};\n","import { FunctionalComponent } from 'preact';\nimport { useMemo } from 'preact/hooks';\nimport { useConfigContext } from '../../../core/ConfigContext';\nimport { Header, HeaderProps } from '../Header';\nimport { TypographyVariant } from '../Typography/types';\nimport './CapitalHeader.scss';\nimport { getCapitalHeaderSubtitleByLegalEntity } from './helpers';\n\nexport type CapitalHeaderProps = Omit<HeaderProps, 'subtitleKey'>;\n\nexport const CapitalHeader: FunctionalComponent<CapitalHeaderProps> = props => {\n    const legalEntity = useConfigContext().extraConfig?.legalEntity;\n    const subtitle = useMemo(() => {\n        const subtitleKey = getCapitalHeaderSubtitleByLegalEntity(legalEntity);\n        return subtitleKey ? { subtitleKey } : {};\n    }, [legalEntity]);\n\n    return (\n        <Header {...props} {...subtitle} subtitleConfig={{ variant: TypographyVariant.CAPTION, classNames: 'adyen-pe-capital-header__subtitle' }} />\n    );\n};\n","import cx from 'classnames';\nimport './InfoBox.scss';\nimport { ComponentChildren, JSX } from 'preact';\n\ninterface InfoBoxProps {\n    /**\n     * Optional custom class name to apply additional styles to the InfoBox component.\n     */\n    className?: string;\n    /**\n     * The HTML tag to be used for rendering the InfoBox.\n     *\n     * @default 'div'\n     */\n    el?: JSX.ElementType;\n    /**\n     * Children elements to be rendered inside the InfoBox.\n     */\n    children?: ComponentChildren;\n}\n\nconst InfoBox = ({ className, el: InfoBoxTag = 'div', children }: InfoBoxProps) => (\n    <InfoBoxTag className={cx('adyen-pe-info-box', className)}>{children}</InfoBoxTag>\n);\n\nexport default InfoBox;\n","import { DAY_MS } from '../../../../internal/Calendar/calendar/constants';\nimport { parseDate } from '../../../../../utils';\n\nconst dateStartUTCTimestampOffset = (date: Date | number | string, numberOfDays = 0) => {\n    return new Date(new Date(date).setUTCHours(0, 0, 0, 0) + Math.floor(numberOfDays) * DAY_MS);\n};\n\nexport const getExpectedRepaymentDate = (expectedRepaymentPeriodDays: number) => {\n    return parseDate(dateStartUTCTimestampOffset(new Date(), expectedRepaymentPeriodDays));\n};\n\nexport const calculateMaximumRepaymentPeriodInMonths = (days?: number) => (days ? Math.ceil(days / 30) : null);\n\ninterface DebouncedFunction<T extends (...args: any[]) => any> {\n    (...args: Parameters<T>): void;\n    cancel: () => void;\n}\n\nexport const debounce = <T extends (...args: any[]) => any>(func: T, delay: number): DebouncedFunction<T> => {\n    let timeoutId: ReturnType<typeof setTimeout> | undefined;\n    let lastArgs: Parameters<T> | undefined;\n\n    function debounced(...args: Parameters<T>): void {\n        clearTimeout(timeoutId);\n        lastArgs = args;\n\n        timeoutId = setTimeout(() => {\n            func(lastArgs);\n            lastArgs = undefined;\n        }, delay);\n    }\n\n    debounced.cancel = () => {\n        if (timeoutId) {\n            clearTimeout(timeoutId);\n            timeoutId = undefined;\n            lastArgs = undefined;\n        }\n    };\n\n    return debounced;\n};\n\nexport const getPaymentRatePercentage = (rate: number) => {\n    return rate / 100;\n};\n","import { clamp } from '../../../utils';\n\n/**\n * Calculates the progress percentage of a slider based on the current value, min/max range, and step size.\n * This method ensures the value snaps to the nearest step,\n * handles invalid ranges, and clamps the progress between 0% and 100%.\n *\n * @param currentValue - The current value of the slider.\n * @param min - The minimum allowed value of the slider.\n * @param max - The maximum allowed value of the slider.\n * @param step - The step size that defines the increment/decrement of the slider value.\n * @returns The progress percentage (from 0% to 100%) based on the snapped value.\n */\n\nexport function calculateProgress(currentValue: number, min: number, max: number, step: number): number {\n    // If the min is greater than max, return 0% progress as it's an invalid range.\n    if (min >= max) return 0;\n\n    // Handle zero step size\n    const effectiveStep = step > 0 ? step : 1;\n\n    // Check for cases where step cannot be accommodated in the range\n    if (effectiveStep > max - min) return 0;\n\n    // Snap the current value to the nearest step\n    const snappedValue = Math.round((currentValue - min) / effectiveStep) * effectiveStep + min;\n\n    // Calculate the raw progress percentage by checking how far the snapped value is between min and max.\n    const percentage = ((snappedValue - min) * 100) / (max - min);\n\n    // Clamp the percentage between 0% and 100% to handle out-of-bounds values.\n    return Number(clamp(0, percentage, 100).toFixed(2));\n}\n","import { useMemo } from 'preact/hooks';\nimport './Slider.scss';\nimport { JSX } from 'preact';\nimport { calculateProgress } from './calculateProgress';\nimport cx from 'classnames';\n\nexport function calculateSliderAdjustedMidValue(minValue: number, maxValue: number, step: number) {\n    const mid = maxValue / 2;\n    let adjustedMid = Math.round(mid / step) * step;\n\n    if (adjustedMid < minValue) {\n        adjustedMid = minValue;\n    } else if (adjustedMid > maxValue) {\n        adjustedMid = maxValue;\n    }\n\n    return adjustedMid;\n}\n\n/**\n * Props for the Slider component.\n */\ninterface SliderProps {\n    /**\n     * Minimum value of the slider.\n     * @default 0\n     */\n    min?: number;\n\n    /**\n     * Maximum value of the slider.\n     * @default 100\n     */\n    max?: number;\n\n    /**\n     * Step value for the slider.\n     * Defines the increment/decrement amount when the slider is moved.\n     * @default 1\n     */\n    step?: number;\n\n    /**\n     * The current value of the slider.\n     * @default min\n     */\n    value?: number;\n\n    /**\n     * Callback function that is called when the slider value changes.\n     * @param value - The new value of the slider.\n     */\n    onChange?: (event: JSX.TargetedEvent<HTMLInputElement, Event>) => void;\n\n    /**\n     * Optional class name(s) for styling the Slider.\n     */\n    className?: string;\n\n    /**\n     * Any additional attributes or properties that can be passed to the Slider element\n     */\n    [key: string]: any;\n}\n\nconst Slider = ({ min = 0, max = 100, step = 1, value = min, onChange, className, ...restOfProps }: SliderProps) => {\n    const progress = useMemo(() => {\n        return calculateProgress(value, min, max, step);\n    }, [value, min, max, step]);\n\n    return (\n        <input\n            type=\"range\"\n            className={cx('adyen-pe-slider', className)}\n            min={min}\n            max={max}\n            step={step}\n            value={value}\n            onChange={onChange}\n            style={{ backgroundSize: `${progress}% 100%` }}\n            {...restOfProps}\n        />\n    );\n};\n\nexport default Slider;\n","import './CapitalSlider.scss';\nimport Slider from '../Slider';\nimport { JSX } from 'preact';\nimport uniqueId from '../../../utils/random/uniqueId';\nimport Typography from '../Typography/Typography';\nimport { TypographyVariant } from '../Typography/types';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport { IDynamicOffersConfig } from '../../../types';\nimport cx from 'classnames';\n\n/**\n * Props for the CapitalSlider component.\n */\ninterface CapitalSliderProps {\n    /**\n     * The dynamic Capital offer\n     */\n    dynamicOffersConfig: IDynamicOffersConfig;\n\n    /**\n     * The current value of the CapitalSlider.\n     * @default dynamicCapitalOffer.minAmount.value\n     */\n    value?: number;\n\n    /**\n     * Callback function that is called when the slider value changes.\n     * @param value - The new value of the slider.\n     */\n    onValueChange?: (value: number) => void;\n\n    /**\n     * Called when the user releases the slider after changing its value.\n     * @param value - The final value of the slider when released.\n     */\n    onRelease?: (value: number) => void;\n\n    /**\n     * Optional class name(s) for styling the Slider.\n     */\n    className?: string;\n}\n\nconst CapitalSlider = ({\n    dynamicOffersConfig,\n    value = dynamicOffersConfig.minAmount.value,\n    onValueChange,\n    onRelease,\n    className,\n}: CapitalSliderProps) => {\n    const id = uniqueId();\n    const { i18n } = useCoreContext();\n\n    const handleValueChange = (event: JSX.TargetedEvent<HTMLInputElement, Event>) => {\n        const value = Number((event.target as HTMLInputElement).value);\n        onValueChange?.(value);\n    };\n\n    const handleRelease = (event: JSX.TargetedKeyboardEvent<HTMLInputElement>) => {\n        const value = Number((event.target as HTMLInputElement).value);\n        onRelease?.(value);\n    };\n\n    return (\n        <div className={cx('adyen-pe-capital-slider', className)}>\n            <label htmlFor={id} className=\"adyen-pe-capital-slider__label\">\n                <Typography variant={TypographyVariant.BODY} stronger>\n                    {i18n.get('capital.howMuchMoneyDoYouNeed')}\n                </Typography>\n            </label>\n            <div>\n                <output htmlFor={id} className=\"adyen-pe-capital-slider__value\" aria-live=\"polite\">\n                    <Typography variant={TypographyVariant.TITLE} strongest>\n                        {i18n.amount(value, dynamicOffersConfig.minAmount.currency, { maximumFractionDigits: 0 })}\n                    </Typography>\n                </output>\n                <Slider\n                    id={id}\n                    value={value}\n                    min={dynamicOffersConfig.minAmount.value}\n                    max={dynamicOffersConfig.maxAmount.value}\n                    step={dynamicOffersConfig.step}\n                    onChange={handleValueChange}\n                    onMouseUp={handleRelease}\n                    onTouchEnd={handleRelease}\n                    onKeyUp={handleRelease}\n                    className=\"adyen-pe-capital-slider__input\"\n                />\n            </div>\n            <div className=\"adyen-pe-capital-slider__labels\">\n                <label>\n                    <Typography variant={TypographyVariant.CAPTION}>{i18n.get('min')}</Typography>\n                    <Typography variant={TypographyVariant.BODY}>\n                        {i18n.amount(dynamicOffersConfig.minAmount.value, dynamicOffersConfig.minAmount.currency, { maximumFractionDigits: 0 })}\n                    </Typography>\n                </label>\n                <label>\n                    <Typography variant={TypographyVariant.CAPTION}>{i18n.get('max')}</Typography>\n                    <Typography variant={TypographyVariant.BODY}>\n                        {i18n.amount(dynamicOffersConfig.maxAmount.value, dynamicOffersConfig.maxAmount.currency, { maximumFractionDigits: 0 })}\n                    </Typography>\n                </label>\n            </div>\n        </div>\n    );\n};\n\nexport default CapitalSlider;\n","export const CAPITAL_REPAYMENT_FREQUENCY = 30;\n","import InfoBox from '../../../../internal/InfoBox';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../../../../internal/Typography/types';\nimport StructuredList from '../../../../internal/StructuredList';\nimport Button from '../../../../internal/Button/Button';\nimport { ButtonVariant } from '../../../../internal/Button/types';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport { useEffect } from 'preact/compat';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport useMutation from '../../../../../hooks/useMutation/useMutation';\nimport { IDynamicOffersConfig, IGrantOfferResponseDTO } from '../../../../../types';\nimport './CapitalOfferSelection.scss';\nimport { debounce, getExpectedRepaymentDate, getPaymentRatePercentage } from '../utils/utils';\nimport CapitalSlider from '../../../../internal/CapitalSlider';\nimport { CapitalErrorMessageDisplay } from '../utils/CapitalErrorMessageDisplay';\nimport { calculateSliderAdjustedMidValue } from '../../../../internal/Slider/Slider';\nimport { CAPITAL_REPAYMENT_FREQUENCY } from '../../../../constants';\n\ntype CapitalOfferSelectionProps = {\n    dynamicOffersConfig: IDynamicOffersConfig | undefined;\n    dynamicOffersConfigError?: Error;\n    emptyGrantOffer: boolean;\n    onContactSupport?: () => void;\n    onOfferDismiss?: () => void;\n    onOfferSelect: (data: IGrantOfferResponseDTO) => void;\n    requestedAmount: number | undefined;\n};\n\nconst LoadingSkeleton = () => (\n    <div className=\"adyen-pe-capital-offer-selection__loading-container\">\n        {[...Array(4)].map((_, index) => (\n            <div key={index} className=\"adyen-pe-capital-offer-selection__loading-skeleton\"></div>\n        ))}\n    </div>\n);\n\nconst InformationDisplay = ({ data }: { data: IGrantOfferResponseDTO }) => {\n    const { i18n } = useCoreContext();\n    const expectedRepaymentDate = useMemo(() => {\n        const date = data.expectedRepaymentPeriodDays && getExpectedRepaymentDate(data.expectedRepaymentPeriodDays);\n        if (date) return i18n.date(date, { month: 'long' });\n        return null;\n    }, [data, i18n]);\n    return (\n        <div className=\"adyen-pe-capital-offer-selection__information\">\n            <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY} wide={true}>\n                {expectedRepaymentDate &&\n                    i18n.get('capital.youWillNeedToRepayAMinimumOfXEveryXDaysToPayOffTheFunds', {\n                        values: {\n                            amount: i18n.amount(data.thresholdAmount.value, data.thresholdAmount.currency),\n                            days: CAPITAL_REPAYMENT_FREQUENCY,\n                            date: expectedRepaymentDate,\n                        },\n                    })}\n            </Typography>\n            <StructuredList\n                renderValue={val => (\n                    <Typography el={TypographyElement.SPAN} stronger variant={TypographyVariant.CAPTION}>\n                        {val}\n                    </Typography>\n                )}\n                renderLabel={val => (\n                    <Typography el={TypographyElement.SPAN} variant={TypographyVariant.CAPTION}>\n                        {val}\n                    </Typography>\n                )}\n                items={[\n                    { key: 'capital.fees', value: i18n.amount(data.feesAmount.value, data.feesAmount.currency) },\n                    {\n                        key: 'capital.dailyRepaymentRate',\n                        value: `${i18n.get('capital.xPercent', {\n                            values: { percentage: getPaymentRatePercentage(data.repaymentRate) },\n                        })}`,\n                    },\n                    {\n                        key: 'capital.expectedRepaymentPeriod',\n                        value: i18n.get('capital.xDays', { values: { days: data.expectedRepaymentPeriodDays } }),\n                    },\n                ]}\n            />\n        </div>\n    );\n};\n\nexport const CapitalOfferSelection = ({\n    dynamicOffersConfig,\n    dynamicOffersConfigError,\n    emptyGrantOffer,\n    onContactSupport,\n    onOfferDismiss,\n    onOfferSelect,\n    requestedAmount,\n}: CapitalOfferSelectionProps) => {\n    const { i18n } = useCoreContext();\n\n    const initialValue = useMemo(() => {\n        if (dynamicOffersConfig)\n            return calculateSliderAdjustedMidValue(\n                dynamicOffersConfig.minAmount.value,\n                dynamicOffersConfig.maxAmount.value,\n                dynamicOffersConfig.step\n            );\n        return undefined;\n    }, [dynamicOffersConfig]);\n\n    const [requestedValue, setRequestedValue] = useState<number | undefined>(undefined);\n\n    const currency = useMemo(() => dynamicOffersConfig?.minAmount.currency, [dynamicOffersConfig?.minAmount.currency]);\n\n    const { createGrantOffer, getDynamicGrantOffer } = useConfigContext().endpoints;\n    const getDynamicGrantOfferMutation = useMutation({\n        queryFn: getDynamicGrantOffer,\n        options: {\n            retry: 1,\n            shouldRetry: useCallback((error: any) => {\n                return error.status === 500;\n            }, []),\n            onSettled: useCallback(() => {\n                setIsLoading(false);\n            }, []),\n        },\n    });\n\n    const reviewOfferMutation = useMutation({\n        queryFn: createGrantOffer,\n        options: {\n            onSuccess: data => onOfferSelect(data),\n        },\n    });\n\n    const onReview = useCallback(() => {\n        void reviewOfferMutation.mutate({\n            body: {\n                amount: getDynamicGrantOfferMutation.data?.grantAmount.value || requestedValue!,\n                currency: getDynamicGrantOfferMutation.data?.grantAmount.currency || currency!,\n            },\n            contentType: 'application/json',\n        });\n    }, [currency, getDynamicGrantOfferMutation.data, requestedValue, reviewOfferMutation]);\n\n    const getOffer = useCallback(\n        (amount: number) => getDynamicGrantOfferMutation.mutate({}, { query: { amount, currency: currency! } }),\n        [currency, getDynamicGrantOfferMutation]\n    );\n\n    const [isLoading, setIsLoading] = useState(false);\n\n    const debouncedGetOfferCall = debounce(getOffer, 300);\n\n    const onChangeHandler = useCallback(\n        (val: number) => {\n            debouncedGetOfferCall.cancel();\n            setIsLoading(true);\n            setRequestedValue(val);\n        },\n        [debouncedGetOfferCall]\n    );\n\n    const handleSliderRelease = (val: number) => debouncedGetOfferCall(val);\n\n    useEffect(() => {\n        if (dynamicOffersConfig && !getDynamicGrantOfferMutation.data && !requestedValue) {\n            setRequestedValue(prev =>\n                !prev ? (requestedAmount ? Number(requestedAmount) : initialValue || dynamicOffersConfig.minAmount.value) : prev\n            );\n            void getOffer(requestedValue || initialValue || dynamicOffersConfig.minAmount.value);\n        }\n    }, [dynamicOffersConfig, getDynamicGrantOfferMutation.data, getOffer, initialValue, requestedAmount, requestedValue]);\n\n    const loadingButtonState = useMemo(\n        () => reviewOfferMutation.isLoading || getDynamicGrantOfferMutation.isLoading || isLoading,\n        [getDynamicGrantOfferMutation.isLoading, isLoading, reviewOfferMutation.isLoading]\n    );\n\n    return (\n        <div className=\"adyen-pe-capital-offer-selection\">\n            {reviewOfferMutation.error || getDynamicGrantOfferMutation.error || emptyGrantOffer || dynamicOffersConfigError ? (\n                <CapitalErrorMessageDisplay\n                    error={reviewOfferMutation.error || getDynamicGrantOfferMutation.error || dynamicOffersConfigError}\n                    onBack={onOfferDismiss}\n                    onContactSupport={onContactSupport}\n                    emptyGrantOffer={emptyGrantOffer}\n                />\n            ) : (\n                <>\n                    {dynamicOffersConfig && (\n                        <CapitalSlider\n                            value={requestedValue}\n                            dynamicOffersConfig={dynamicOffersConfig}\n                            onValueChange={onChangeHandler}\n                            onRelease={handleSliderRelease}\n                        />\n                    )}\n                    <InfoBox className=\"adyen-pe-capital-offer-selection__details\">\n                        {!getDynamicGrantOfferMutation.data || getDynamicGrantOfferMutation.isLoading || isLoading ? (\n                            <LoadingSkeleton />\n                        ) : getDynamicGrantOfferMutation.data ? (\n                            <InformationDisplay data={getDynamicGrantOfferMutation.data} />\n                        ) : null}\n                    </InfoBox>\n                    <div className=\"adyen-pe-capital-offer-selection__buttons\">\n                        {onOfferDismiss && (\n                            <Button variant={ButtonVariant.SECONDARY} onClick={onOfferDismiss}>\n                                {i18n.get('back')}\n                            </Button>\n                        )}\n                        <Button\n                            variant={ButtonVariant.PRIMARY}\n                            state={loadingButtonState ? 'loading' : undefined}\n                            onClick={onReview}\n                            disabled={reviewOfferMutation.isLoading || !dynamicOffersConfig?.minAmount}\n                        >\n                            {i18n.get(loadingButtonState ? 'loading' : 'capital.reviewOffer')}\n                        </Button>\n                    </div>\n                </>\n            )}\n        </div>\n    );\n};\n","import { Ref } from 'preact';\nimport useButton from '../Button/hooks/useButton';\nimport { DEFAULT_BUTTON_CLASSNAME, BUTTON_ANCHOR_CLASSNAME } from '../Button/constants';\nimport { AnchorButtonProps, BaseButtonProps, ButtonVariant } from '../Button/types';\nimport { useMemo } from 'preact/hooks';\nimport { fixedForwardRef, parseBooleanProp, parseClassName } from '../../../utils/preact';\n\nconst AnchorButton = (props: AnchorButtonProps & BaseButtonProps, ref: Ref<HTMLAnchorElement>) => {\n    const { variant = ButtonVariant.PRIMARY, disabled = false, onClick, classNameModifiers = [], className } = props;\n    const classNameValue = useMemo(() => parseClassName('', className) || '', [className]);\n    const disabledValue = useMemo(() => parseBooleanProp(disabled), [disabled]);\n\n    const { click, allChildren, allProps } = useButton(\n        classNameValue,\n        [...classNameModifiers, variant],\n        `${DEFAULT_BUTTON_CLASSNAME} ${BUTTON_ANCHOR_CLASSNAME}`,\n        disabledValue,\n        props,\n        onClick\n    );\n\n    const restProps = useMemo(() => ({ ...allProps, ...(props.onClick && click ? { onClick: click } : {}) }), [click, allProps, props.onClick]);\n\n    return (\n        <a {...restProps} href={props.href} ref={ref as Ref<HTMLAnchorElement>}>\n            {allChildren}\n        </a>\n    );\n};\n\nexport default fixedForwardRef(AnchorButton);\n","import useCoreContext from '../../../core/Context/useCoreContext';\nimport { ComponentChildren, Fragment, FunctionalComponent } from 'preact';\nimport { TranslationFill, TranslationFillFunc, TranslationProps } from './types';\nimport { isFunction, uniqueId } from '../../../utils';\nimport { useMemo } from 'preact/hooks';\n\nconst normalizeFill = (fill: TranslationFill): TranslationFillFunc => {\n    return isFunction(fill) ? fill : () => fill;\n};\n\nexport const Translation: FunctionalComponent<TranslationProps> = ({ count, defaultFill, fills, translationKey }) => {\n    const { i18n } = useCoreContext();\n\n    const getFill = useMemo<TranslationFillFunc>(() => {\n        const _defaultFill = normalizeFill(defaultFill);\n\n        if (fills !== undefined) {\n            return (...args) => {\n                const [placeholder, index] = args;\n\n                for (const lookupProperty of [placeholder, index]) {\n                    const fill = normalizeFill((fills as any)[lookupProperty])(...args);\n                    if (fill != undefined) return fill;\n                }\n\n                return _defaultFill(...args);\n            };\n        }\n\n        return _defaultFill;\n    }, [fills, defaultFill]);\n\n    return useMemo(() => {\n        const fills: ComponentChildren[] = [];\n        const placeholderFill = uniqueId('translation');\n\n        const values = (...args: Parameters<TranslationFillFunc>) => {\n            fills.push(getFill(...args) ?? null);\n            return placeholderFill;\n        };\n\n        const [firstFragment, ...restFragments] = i18n.get(translationKey, { count, values }).split(placeholderFill);\n\n        return (\n            <>\n                {firstFragment}\n                {restFragments.map((fragment, index) => (\n                    <Fragment key={`${placeholderFill}__${index}`}>\n                        {fills[index]}\n                        {fragment}\n                    </Fragment>\n                ))}\n            </>\n        );\n    }, [i18n, count, getFill, translationKey]);\n};\n\nexport default Translation;\n","export const SUMMARY_TEXT_EMAIL = 'capital-support@adyen.com';\n","import { useConfigContext } from '../../../../../core/ConfigContext';\nimport AnchorButton from '../../../../internal/AnchorButton/AnchorButton';\nimport { ButtonVariant } from '../../../../internal/Button/types';\nimport { SupportedLocation } from '../../../../internal/CapitalHeader/constants';\nimport Card from '../../../../internal/Card/Card';\nimport { Translation } from '../../../../internal/Translation';\nimport { TypographyVariant } from '../../../../internal/Typography/types';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { SUMMARY_TEXT_EMAIL } from '../CapitalOfferSummary/constants';\nimport './CapitalOfferLegalNotice.scss';\n\nexport const CapitalOfferLegalNotice = () => {\n    const countryCode = useConfigContext()?.extraConfig?.legalEntity?.countryCode;\n\n    return countryCode === SupportedLocation.US ? (\n        <Card filled noOutline>\n            <Typography variant={TypographyVariant.CAPTION} className={'adyen-pe-capital-offer-legal-notice--title'}>\n                <Translation translationKey={'capital.offerLegalNoticeTitleUS'} fills={{ break: <br /> }} />\n            </Typography>\n            <br />\n            <Typography variant={TypographyVariant.CAPTION} className={'adyen-pe-capital-offer-legal-notice--description'}>\n                {\n                    <Translation\n                        translationKey={'capital.offerLegalNoticeDescriptionUS'}\n                        fills={{\n                            email: (\n                                <AnchorButton\n                                    href={`mailto:${SUMMARY_TEXT_EMAIL}`}\n                                    variant={ButtonVariant.TERTIARY}\n                                    className={'adyen-pe-capital-offer-summary__info--email'}\n                                >\n                                    {SUMMARY_TEXT_EMAIL}\n                                </AnchorButton>\n                            ),\n                            break: (\n                                <>\n                                    <br />\n                                    <br />\n                                </>\n                            ),\n                        }}\n                    />\n                }\n            </Typography>\n        </Card>\n    ) : null;\n};\n","import InfoBox from '../../../../internal/InfoBox';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { IGrant, IGrantOfferResponseDTO } from '../../../../../types';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport { calculateMaximumRepaymentPeriodInMonths, getExpectedRepaymentDate, getPaymentRatePercentage } from '../utils/utils';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../../../../internal/Typography/types';\nimport StructuredList from '../../../../internal/StructuredList';\nimport './CapitalOfferSummary.scss';\nimport Button from '../../../../internal/Button/Button';\nimport { ButtonVariant } from '../../../../internal/Button/types';\nimport useMutation from '../../../../../hooks/useMutation/useMutation';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport { Tooltip } from '../../../../internal/Tooltip/Tooltip';\nimport { EMPTY_OBJECT } from '../../../../../utils';\nimport { AdyenErrorResponse } from '../../../../../core/Http/types';\nimport { AlertTypeOption } from '../../../../internal/Alert/types';\nimport Alert from '../../../../internal/Alert/Alert';\nimport Icon from '../../../../internal/Icon';\nimport { CapitalErrorMessageDisplay } from '../utils/CapitalErrorMessageDisplay';\nimport cx from 'classnames';\nimport { StructuredListItem } from '../../../../internal/StructuredList/types';\nimport { CAPITAL_REPAYMENT_FREQUENCY } from '../../../../constants';\nimport { CapitalOfferLegalNotice } from '../CapitalOfferLegalNotice/CapitalOfferLegalNotice';\n\nconst errorMessageWithAlert = ['30_013'];\n\nexport const CapitalOfferSummary = ({\n    grantOffer,\n    onBack,\n    onFundsRequest,\n    onContactSupport,\n}: {\n    grantOffer: IGrantOfferResponseDTO;\n    onBack: () => void;\n    onFundsRequest?: (data: IGrant) => void;\n    onContactSupport?: () => void;\n}) => {\n    const { i18n } = useCoreContext();\n    const expectedRepaymentDate = useMemo(() => {\n        const date = getExpectedRepaymentDate(grantOffer.expectedRepaymentPeriodDays);\n        return date ? i18n.date(date, { month: 'long' }) : null;\n    }, [grantOffer, i18n]);\n\n    const { requestFunds } = useConfigContext().endpoints;\n\n    const requestFundsMutation = useMutation({\n        queryFn: requestFunds,\n        options: {\n            onSuccess: data => onFundsRequest?.(data),\n        },\n    });\n\n    const requestFundsCallback = useCallback(\n        (id: string) => {\n            void requestFundsMutation.mutate(EMPTY_OBJECT, { path: { grantOfferId: id } });\n        },\n        [requestFundsMutation]\n    );\n\n    const onRequestFundsHandler = useCallback(() => {\n        grantOffer.id && requestFundsCallback(grantOffer.id);\n    }, [grantOffer.id, requestFundsCallback]);\n\n    const maximumRepaymentPeriod = useMemo(\n        () => calculateMaximumRepaymentPeriodInMonths(grantOffer.maximumRepaymentPeriodDays),\n        [grantOffer.maximumRepaymentPeriodDays]\n    );\n\n    const requestErrorAlert = useMemo<{ title: string; message: string; errorCode?: string } | null>(() => {\n        const err = requestFundsMutation.error ? (requestFundsMutation.error as AdyenErrorResponse) : null;\n\n        if (err && errorMessageWithAlert.includes(err.errorCode)) {\n            switch (err.errorCode) {\n                case '30_013':\n                    return {\n                        title: i18n.get('capital.thereIsNoPrimaryAccountConfigured'),\n                        message: i18n.get('capital.weCouldNotContinueWithTheOfferContactSupportForHelp'),\n                        errorCode: '30_013',\n                    };\n                default:\n                    return {\n                        title: i18n.get('somethingWentWrong'),\n                        message: i18n.get('capital.weCouldNotLoadFinancialOffers'),\n                    };\n            }\n        }\n\n        return null;\n    }, [i18n, requestFundsMutation.error]);\n\n    const structuredListItems = useMemo(() => {\n        const summaryItems: StructuredListItem[] = [\n            {\n                key: 'capital.fees',\n                value: i18n.amount(grantOffer.feesAmount.value, grantOffer.feesAmount.currency),\n            },\n            {\n                key: 'capital.totalRepaymentAmount',\n                value: i18n.amount(grantOffer.totalAmount.value, grantOffer.totalAmount.currency),\n            },\n            {\n                key: 'capital.repaymentThreshold',\n                value: i18n.amount(grantOffer.thresholdAmount.value, grantOffer.thresholdAmount.currency),\n            },\n            {\n                key: 'capital.dailyRepaymentRate',\n                value: i18n.get('capital.xPercent', { values: { percentage: getPaymentRatePercentage(grantOffer.repaymentRate) } }),\n            },\n            {\n                key: 'capital.expectedRepaymentPeriod',\n                value: i18n.get('capital.xDays', { values: { days: grantOffer.expectedRepaymentPeriodDays } }),\n            },\n            { key: 'account', value: i18n.get('capital.primaryAccount') },\n        ];\n\n        if (maximumRepaymentPeriod)\n            summaryItems.splice(4, 0, {\n                key: 'capital.maximumRepaymentPeriod',\n                value:\n                    maximumRepaymentPeriod === 1\n                        ? i18n.get('capital.oneMonth')\n                        : i18n.get('capital.xMonths', { values: { months: maximumRepaymentPeriod } }),\n            });\n        return summaryItems;\n    }, [grantOffer, i18n, maximumRepaymentPeriod]);\n\n    return !requestErrorAlert && requestFundsMutation.error ? (\n        <CapitalErrorMessageDisplay error={requestFundsMutation.error} onBack={onBack} onContactSupport={onContactSupport} />\n    ) : (\n        <div className=\"adyen-pe-capital-offer-summary\">\n            <InfoBox className=\"adyen-pe-capital-offer-summary__grant-summary\">\n                <Typography el={TypographyElement.PARAGRAPH} variant={TypographyVariant.BODY}>\n                    {i18n.get('capital.youAreRequestingFundingOf')}{' '}\n                    <strong>{`${i18n.amount(grantOffer.grantAmount.value, grantOffer.grantAmount.currency, { minimumFractionDigits: 0 })}.`}</strong>\n                </Typography>\n                <Typography el={TypographyElement.PARAGRAPH} variant={TypographyVariant.CAPTION}>\n                    {i18n.get('capital.youWillNeedToRepayAMinimumOfXEveryXDaysToPayOffTheFunds', {\n                        values: {\n                            amount: i18n.amount(grantOffer.thresholdAmount.value, grantOffer.thresholdAmount.currency),\n                            days: CAPITAL_REPAYMENT_FREQUENCY,\n                            date: expectedRepaymentDate ?? '',\n                        },\n                    })}\n                </Typography>\n            </InfoBox>\n            <StructuredList\n                classNames=\"adyen-pe-capital-offer-summary__details\"\n                renderLabel={(val, key) => {\n                    if (key === 'capital.repaymentThreshold') {\n                        return (\n                            <Tooltip\n                                isContainerHovered\n                                content={i18n.get('capital.minimumRepaymentToRepayTheFinancingOnTime', {\n                                    values: { days: CAPITAL_REPAYMENT_FREQUENCY },\n                                })}\n                            >\n                                <span>\n                                    <Typography\n                                        className={'adyen-pe-capital-offer-summary__list-label'}\n                                        el={TypographyElement.SPAN}\n                                        variant={TypographyVariant.CAPTION}\n                                    >\n                                        {val}\n                                    </Typography>\n                                </span>\n                            </Tooltip>\n                        );\n                    }\n                    return (\n                        <Typography\n                            className={'adyen-pe-capital-offer-summary__list-label'}\n                            el={TypographyElement.SPAN}\n                            variant={TypographyVariant.CAPTION}\n                        >\n                            {val}\n                        </Typography>\n                    );\n                }}\n                renderValue={(val, key) => {\n                    const showWarningIcon =\n                        key === 'account' && requestFundsMutation.error && requestErrorAlert && requestErrorAlert.errorCode === '30_013';\n\n                    return (\n                        <Typography\n                            className={cx({\n                                ['adyen-pe-capital-offer-summary__details--error']: showWarningIcon,\n                            })}\n                            el={TypographyElement.SPAN}\n                            variant={TypographyVariant.CAPTION}\n                            stronger\n                        >\n                            {showWarningIcon ? <Icon name={'warning-filled'} data-testid={'primary-account-warning-icon'} /> : null}\n                            {val}\n                        </Typography>\n                    );\n                }}\n                items={structuredListItems}\n            />\n            {requestErrorAlert && (\n                <Alert\n                    className={'adyen-pe-capital-offer-summary__error-alert'}\n                    type={AlertTypeOption.WARNING}\n                    title={requestErrorAlert.title}\n                    description={requestErrorAlert.message}\n                >\n                    {onContactSupport ? (\n                        <Button className={'adyen-pe-capital-offer-summary__error-alert-button'} onClick={onContactSupport}>\n                            {i18n.get('contactSupport')}\n                        </Button>\n                    ) : null}\n                </Alert>\n            )}\n            <CapitalOfferLegalNotice />\n            <div className=\"adyen-pe-capital-offer-summary__buttons\">\n                {requestFundsMutation.error && !requestErrorAlert ? null : (\n                    <Button variant={ButtonVariant.SECONDARY} onClick={onBack}>\n                        {i18n.get('back')}\n                    </Button>\n                )}\n                <Button\n                    variant={ButtonVariant.PRIMARY}\n                    state={requestFundsMutation.isLoading ? 'loading' : undefined}\n                    onClick={onRequestFundsHandler}\n                    disabled={requestFundsMutation.isLoading || !!requestFundsMutation.error || !!requestFundsMutation.data}\n                >\n                    {i18n.get(requestFundsMutation.isLoading ? 'capital.requesting' : 'capital.requestFunds')}\n                </Button>\n            </div>\n        </div>\n    );\n};\n","import { FunctionalComponent } from 'preact';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport { isCapitalRegionSupported } from '../../../../internal/CapitalHeader/helpers';\nimport { ExternalUIComponentProps } from '../../../../types';\nimport { CapitalOfferProps } from '../../types';\nimport { CapitalErrorMessageDisplay } from '../utils/CapitalErrorMessageDisplay';\nimport { CAPITAL_OFFER_CLASS_NAMES } from './constants';\nimport { CapitalHeader } from '../../../../internal/CapitalHeader';\nimport { CapitalOfferSelection } from '../CapitalOfferSelection/CapitalOfferSelection';\nimport { IDynamicOffersConfig, IGrantOfferResponseDTO } from '../../../../../types';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport { useFetch } from '../../../../../hooks/useFetch';\nimport { EMPTY_OBJECT } from '../../../../../utils';\nimport { CapitalOfferSummary } from '../CapitalOfferSummary/CapitalOfferSummary';\nimport './CapitalOffer.scss';\n\ntype CapitalOfferState = 'OfferSelection' | 'OfferSummary';\n\nexport const CapitalOffer: FunctionalComponent<ExternalUIComponentProps<CapitalOfferProps>> = ({\n    externalDynamicOffersConfig,\n    hideTitle,\n    onContactSupport,\n    onFundsRequest,\n    onOfferDismiss,\n    onOfferSelect,\n}) => {\n    const { getDynamicGrantOffersConfiguration } = useConfigContext().endpoints;\n    const legalEntity = useConfigContext()?.extraConfig?.legalEntity;\n\n    const isRegionSupported = useMemo(() => isCapitalRegionSupported(legalEntity), [legalEntity]);\n\n    const [emptyGrantOffer, setEmptyGrantOffer] = useState(false);\n    const onSuccess = useCallback((data: IDynamicOffersConfig | undefined) => {\n        if (data) {\n            setEmptyGrantOffer(false);\n        } else setEmptyGrantOffer(true);\n    }, []);\n\n    const { data: internalDynamicOffersConfig, error: dynamicOffersConfigError } = useFetch({\n        fetchOptions: {\n            enabled: !externalDynamicOffersConfig && !!getDynamicGrantOffersConfiguration && isRegionSupported,\n            onSuccess: onSuccess,\n        },\n        queryFn: useCallback(async () => {\n            return getDynamicGrantOffersConfiguration?.(EMPTY_OBJECT);\n        }, [getDynamicGrantOffersConfiguration]),\n    });\n\n    const config = externalDynamicOffersConfig || internalDynamicOffersConfig;\n\n    const [selectedOffer, setSelectedOffer] = useState<IGrantOfferResponseDTO>();\n\n    const [requestedAmount, setRequestedAmount] = useState<number>();\n\n    const onOfferSelectHandler = useCallback(\n        (data: IGrantOfferResponseDTO) => {\n            if (onOfferSelect) {\n                onOfferSelect(data);\n            } else {\n                setRequestedAmount(data?.grantAmount.value);\n                setSelectedOffer(data);\n            }\n        },\n        [onOfferSelect]\n    );\n\n    const capitalOfferState = useMemo<CapitalOfferState>(() => {\n        if (selectedOffer) {\n            return 'OfferSummary';\n        }\n        return 'OfferSelection';\n    }, [selectedOffer]);\n\n    if (!isRegionSupported) {\n        return (\n            <div className={CAPITAL_OFFER_CLASS_NAMES.errorContainer}>\n                <CapitalHeader hideTitle={hideTitle} titleKey={'capital.businessFinancing'} />\n                <CapitalErrorMessageDisplay unsupportedRegion />\n            </div>\n        );\n    }\n\n    return (\n        <div className={CAPITAL_OFFER_CLASS_NAMES.base}>\n            <CapitalHeader\n                hasDivider\n                hideTitle={hideTitle}\n                titleKey={capitalOfferState === 'OfferSummary' ? 'capital.businessFinancingSummary' : 'capital.businessFinancingOffer'}\n            />\n            {capitalOfferState === 'OfferSelection' && (\n                <CapitalOfferSelection\n                    requestedAmount={requestedAmount}\n                    dynamicOffersConfig={config}\n                    dynamicOffersConfigError={dynamicOffersConfigError}\n                    onOfferDismiss={onOfferDismiss}\n                    onOfferSelect={onOfferSelectHandler}\n                    emptyGrantOffer={emptyGrantOffer}\n                    onContactSupport={onContactSupport}\n                />\n            )}\n            {capitalOfferState === 'OfferSummary' && (\n                <CapitalOfferSummary\n                    grantOffer={selectedOffer!}\n                    onBack={() => setSelectedOffer(undefined)}\n                    onFundsRequest={onFundsRequest}\n                    onContactSupport={onContactSupport}\n                />\n            )}\n        </div>\n    );\n};\n","import { _UIComponentProps, ExternalComponentType } from '../../types';\nimport UIElement from '../UIElement/UIElement';\nimport { CapitalOfferElementProps } from './types';\nimport { CapitalOffer } from './components/CapitalOffer/CapitalOffer';\n\nexport class CapitalOfferElement extends UIElement<CapitalOfferElementProps> {\n    public static type: ExternalComponentType = 'capitalOffer';\n\n    constructor(props: _UIComponentProps<CapitalOfferElementProps>) {\n        super(props);\n        this.componentToRender = this.componentToRender.bind(this);\n        this.customClassNames = 'adyen-pe-capital-offer-component';\n    }\n\n    public componentToRender = () => {\n        return <CapitalOffer {...this.props} />;\n    };\n}\n\nexport default CapitalOfferElement;\n","import { useCallback, useEffect, useRef, useState } from 'preact/hooks';\n\nexport const useFreezePeriod = (timeout = 1000, initialState = false) => {\n    const [frozen, setFrozen] = useState(initialState);\n    const rafId = useRef<ReturnType<typeof requestAnimationFrame>>();\n    const timeoutId = useRef<ReturnType<typeof setTimeout>>();\n\n    const freeze = useCallback(() => {\n        if (frozen) return;\n\n        timeoutId.current = setTimeout(() => {\n            rafId.current = requestAnimationFrame(() => setFrozen(false));\n        }, timeout);\n\n        setFrozen(true);\n    }, [frozen, timeout]);\n\n    useEffect(() => {\n        return () => {\n            cancelAnimationFrame(rafId.current!);\n            clearTimeout(timeoutId.current!);\n            rafId.current = timeoutId.current = null!;\n        };\n    }, [timeout]);\n\n    return { freeze, frozen } as const;\n};\n\nexport default useFreezePeriod;\n","import { SVGProps } from 'preact/compat';\n\n/**\n * @deprecated This component is deprecated. Use <Icon name=\"download\"/> instead.\n */\nconst Download = ({ ...props }: Omit<SVGProps<SVGElement>, 'ref'>) => (\n    <svg width=\"15\" height=\"14\" viewBox=\"0 0 15 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n        <path\n            d=\"M8.25 0.25V8.18957L10.5001 5.93945L11.5608 7.00011L7.50011 11.0608L3.43945 7.00011L4.50011 5.93945L6.75 8.18934V0.25H8.25Z\"\n            fill=\"currentColor\"\n        />\n        <path\n            d=\"M2.25 11.5V9.25H0.75V11.5C0.75 12.0967 0.987053 12.669 1.40901 13.091C1.83097 13.5129 2.40326 13.75 3 13.75H12C12.5967 13.75 13.169 13.5129 13.591 13.091C14.0129 12.669 14.25 12.0967 14.25 11.5V9.25H12.75V11.5C12.75 11.6989 12.671 11.8897 12.5303 12.0303C12.3897 12.171 12.1989 12.25 12 12.25H3C2.80109 12.25 2.61032 12.171 2.46967 12.0303C2.32902 11.8897 2.25 11.6989 2.25 11.5Z\"\n            fill=\"currentColor\"\n        />\n    </svg>\n);\n\nexport default Download;\n","import { useConfigContext } from '../../../../core/ConfigContext';\nimport { useFetch } from '../../../../hooks/useFetch';\nimport { EndpointName } from '../../../../types/api/endpoints';\nimport { EMPTY_OBJECT } from '../../../../utils';\n\nconst useDownload = (endpointName: EndpointName, queryParam?: any, enabled?: boolean) => {\n    const downloadEndpoint = useConfigContext().endpoints[endpointName];\n\n    return useFetch({\n        fetchOptions: { enabled: !!downloadEndpoint && enabled, keepPrevData: true },\n        queryFn: async () => {\n            return downloadEndpoint!(EMPTY_OBJECT as any, { ...queryParam });\n        },\n    });\n};\n\nexport default useDownload;\n","import classNames from 'classnames';\nimport { VNode } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport useCoreContext from '../../../../core/Context/useCoreContext';\nimport AdyenPlatformExperienceError from '../../../../core/Errors/AdyenPlatformExperienceError';\nimport { EndpointName } from '../../../../types/api/endpoints';\nimport { containerQueries, useResponsiveContainer } from '../../../../hooks/useResponsiveContainer';\nimport Spinner from '../../Spinner';\nimport Download from '../../SVGIcons/Download';\nimport Button from '../Button';\nimport { ButtonVariant } from '../types';\nimport useDownload from './useDownload';\nimport './DownloadButton.scss';\n\ninterface DownloadButtonProps {\n    params: any;\n    endpointName: EndpointName;\n    className?: string;\n    disabled?: boolean;\n    onDownloadRequested?: () => void;\n    setError?: (error?: AdyenPlatformExperienceError) => any;\n    errorDisplay?: VNode<any>;\n}\n\nfunction downloadBlob({ blob, filename }: { blob: Blob; filename: string }) {\n    const a = document.createElement('a');\n    const url = URL.createObjectURL(blob);\n\n    a.href = url;\n    a.download = filename || 'download';\n\n    const clickHandler = () => {\n        setTimeout(() => {\n            URL.revokeObjectURL(url);\n        }, 150);\n    };\n\n    a.addEventListener('click', clickHandler, { once: true });\n    a.click();\n}\n\nfunction DownloadButton({ className, disabled, endpointName, params, setError, errorDisplay, onDownloadRequested }: DownloadButtonProps) {\n    const { i18n } = useCoreContext();\n    const [fetchData, setFetchData] = useState(false);\n    const isSmContainer = useResponsiveContainer(containerQueries.down.xs);\n    const { data, error, isFetching } = useDownload(endpointName, params, fetchData);\n\n    useEffect(() => {\n        if (fetchData) {\n            setFetchData(false);\n        }\n    }, [fetchData]);\n\n    useEffect(() => {\n        if (data) {\n            // TODO: Fix the types to use type inference here\n            downloadBlob(data as { blob: Blob; filename: string });\n        }\n    }, [data]);\n\n    useEffect(() => {\n        if (setError && error) {\n            setError(error as AdyenPlatformExperienceError);\n        }\n    }, [error, setError]);\n\n    const onClick = () => {\n        setFetchData(true);\n        onDownloadRequested?.();\n    };\n\n    return (\n        <div className=\"adyen-pe-download\">\n            {isSmContainer ? (\n                <Button iconButton={true} variant={ButtonVariant.TERTIARY} onClick={onClick}>\n                    {isFetching ? <Spinner size={'small'} /> : <Download />}\n                </Button>\n            ) : (\n                <Button\n                    className={classNames('adyen-pe-download__button', { 'adyen-pe-download__button--loading': isFetching }, className)}\n                    disabled={disabled || isFetching}\n                    variant={ButtonVariant.SECONDARY}\n                    onClick={onClick}\n                    iconLeft={isFetching ? <Spinner size={'small'} /> : <Download />}\n                >\n                    {isFetching ? `${i18n.get('downloading')}..` : i18n.get('download')}\n                </Button>\n            )}\n            {error && errorDisplay && <div className={'adyen-pe-download__error'}>{errorDisplay}</div>}\n        </div>\n    );\n}\n\nexport default DownloadButton;\n","import { SVGProps } from 'preact/compat';\n\n/**\n * @deprecated This component is deprecated. Use <Icon name=\"warning\"/> instead.\n */\nconst Warning = ({ ...props }: Omit<SVGProps<SVGElement>, 'ref'>) => (\n    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M8.75 4.58008H7.25V9.08008H8.75V4.58008Z\" fill=\"currentColor\" />\n        <path\n            d=\"M8.71 10.6201C8.57 10.4801 8.39 10.3801 8.2 10.3501C8.01 10.3101 7.8 10.3301 7.62 10.4101C7.44 10.4901 7.28 10.6101 7.17 10.7801C7.06 10.9401 7 11.1401 7 11.3401C7 11.6101 7.11 11.8601 7.29 12.0501C7.48 12.2401 7.73 12.3401 8 12.3401C8.2 12.3401 8.39 12.2801 8.56 12.1701C8.72 12.0601 8.85 11.9001 8.93 11.7201C9.01 11.5401 9.03 11.3401 8.99 11.1401C8.95 10.9501 8.86 10.7701 8.72 10.6301L8.71 10.6201Z\"\n            fill=\"currentColor\"\n        />\n        <path\n            d=\"M9.9501 2.21008L15.3501 11.5301V11.5201C15.5501 11.8601 15.6501 12.2501 15.6501 12.6501C15.6501 13.0501 15.5501 13.4401 15.3501 13.7801C15.1501 14.1201 14.8601 14.4001 14.5201 14.6001C14.1801 14.8001 13.7901 14.9001 13.4001 14.9001H2.6001C2.2001 14.9001 1.8101 14.8001 1.4701 14.6001C1.1301 14.4101 0.850097 14.1201 0.650097 13.7801C0.450097 13.4501 0.350098 13.0601 0.350098 12.6601C0.350098 12.2601 0.450097 11.8701 0.650097 11.5301L6.0601 2.20008C6.2501 1.86008 6.5401 1.58008 6.8801 1.38008C7.5601 0.980078 8.4401 0.980078 9.1301 1.38008C9.4701 1.58008 9.7501 1.87008 9.9501 2.21008ZM13.7701 13.3001C13.8901 13.2401 13.9801 13.1401 14.0501 13.0301L14.0601 13.0401C14.1301 12.9201 14.1601 12.7901 14.1601 12.6601C14.1601 12.5301 14.1301 12.4001 14.0601 12.2901L8.6601 2.96008C8.5901 2.84008 8.5001 2.74008 8.3801 2.68008C8.2601 2.62008 8.1401 2.58008 8.0001 2.58008C7.8601 2.58008 7.7301 2.61008 7.6201 2.68008C7.5101 2.74008 7.4201 2.84008 7.3501 2.95008L1.9501 12.2901C1.8801 12.4001 1.8501 12.5301 1.8501 12.6601C1.8501 12.7901 1.8801 12.9201 1.9501 13.0301C2.0101 13.1401 2.1101 13.2401 2.2201 13.3001C2.3401 13.3601 2.4701 13.4001 2.6001 13.4001H13.3901C13.5301 13.4001 13.6601 13.3701 13.7701 13.3001Z\"\n            fill=\"currentColor\"\n        />\n    </svg>\n);\n\nexport default Warning;\n","export const DISABLED_BUTTONS_TIMEOUT = 1000; // 1 second\n\nexport const BASE_CLASS = 'adyen-pe-reports-table';\nexport const DATE_TYPE_CLASS = `${BASE_CLASS}-date-report-type`;\nexport const DATE_TYPE_DATE_SECTION_CLASS = `${DATE_TYPE_CLASS}--date`;\n","import { FC } from 'preact/compat';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport AdyenPlatformExperienceError from '../../../../../core/Errors/AdyenPlatformExperienceError';\nimport { TranslationKey } from '../../../../../translations';\nimport { IReport } from '../../../../../types';\nimport useFreezePeriod from '../../../../../hooks/useFreezePeriod';\nimport useTimezoneAwareDateFormatting from '../../../../../hooks/useTimezoneAwareDateFormatting';\nimport Alert from '../../../../internal/Alert/Alert';\nimport { AlertTypeOption } from '../../../../internal/Alert/types';\nimport DownloadButton from '../../../../internal/Button/DownloadButton/DownloadButton';\nimport DataGrid from '../../../../internal/DataGrid';\nimport { DATE_FORMAT_REPORTS } from '../../../../../constants';\nimport DataOverviewError from '../../../../internal/DataOverviewError/DataOverviewError';\nimport Pagination from '../../../../internal/Pagination';\nimport { PaginationProps, WithPaginationLimitSelection } from '../../../../internal/Pagination/types';\nimport Warning from '../../../../internal/SVGIcons/Warning';\nimport { TypographyVariant } from '../../../../internal/Typography/types';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { getLabel } from '../../../../utils/getLabel';\nimport { containerQueries, useResponsiveContainer } from '../../../../../hooks/useResponsiveContainer';\nimport { BASE_CLASS, DATE_TYPE_CLASS, DATE_TYPE_DATE_SECTION_CLASS, DISABLED_BUTTONS_TIMEOUT } from './constants';\nimport './ReportsTable.scss';\nimport { CustomColumn } from '../../../../types';\nimport { StringWithAutocompleteOptions } from '../../../../../utils/types';\nimport { useTableColumns } from '../../../../../hooks/useTableColumns';\n\nexport const FIELDS = ['createdAt', 'dateAndReportType', 'reportType', 'reportFile'] as const;\nexport type ReportsTableFields = (typeof FIELDS)[number];\n\nexport interface ReportsTableProps extends WithPaginationLimitSelection<PaginationProps> {\n    balanceAccountId: string | undefined;\n    loading: boolean;\n    error?: AdyenPlatformExperienceError;\n    onContactSupport?: () => void;\n    showPagination: boolean;\n    data: IReport[] | undefined;\n    customColumns?: CustomColumn<StringWithAutocompleteOptions<ReportsTableFields>>[];\n}\n\nexport const ReportsTable: FC<ReportsTableProps> = ({\n    error,\n    loading,\n    balanceAccountId,\n    onContactSupport,\n    showPagination,\n    data,\n    customColumns,\n    ...paginationProps\n}) => {\n    const { i18n } = useCoreContext();\n    const { dateFormat } = useTimezoneAwareDateFormatting('UTC');\n    const { freeze, frozen } = useFreezePeriod(DISABLED_BUTTONS_TIMEOUT);\n    const [alert, setAlert] = useState<null | { title: string; description: string }>(null);\n    const { refreshing } = useConfigContext();\n    const isLoading = useMemo(() => loading || refreshing, [loading, refreshing]);\n    const isSmAndUpContainer = useResponsiveContainer(containerQueries.up.sm);\n    const isXsAndDownContainer = useResponsiveContainer(containerQueries.down.xs);\n\n    const columns = useTableColumns({\n        fields: FIELDS,\n        customColumns,\n        columnConfig: useMemo(\n            () => ({\n                dateAndReportType: { visible: isXsAndDownContainer },\n                createdAt: { visible: isSmAndUpContainer },\n                reportType: { visible: isSmAndUpContainer },\n                reportFile: { visible: true, position: isXsAndDownContainer ? 'right' : undefined },\n            }),\n            [isSmAndUpContainer, isXsAndDownContainer]\n        ),\n    });\n\n    const removeAlert = useCallback(() => {\n        setAlert(null);\n    }, []);\n\n    const EMPTY_TABLE_MESSAGE = {\n        title: 'noReportsFound',\n        message: ['tryDifferentSearchOrResetYourFiltersAndWeWillTryAgain'],\n    } satisfies { title: TranslationKey; message: TranslationKey | TranslationKey[] };\n\n    const errorDisplay = useMemo(\n        () => () => <DataOverviewError error={error} errorMessage={'weCouldNotLoadYourReports'} onContactSupport={onContactSupport} />,\n        [error, onContactSupport]\n    );\n\n    const errorIcon = useMemo(() => <Warning />, []);\n\n    const onDownloadErrorAlert = useMemo(\n        () => (error?: AdyenPlatformExperienceError) => {\n            const alertDetails: Partial<{ key: number; description: string; title: string }> = {};\n            switch (error?.errorCode) {\n                case '999_429_001':\n                    alertDetails.title = i18n.get('error.somethingWentWrongWithDownload');\n                    alertDetails.description = i18n.get('reportsError.tooManyDownloads');\n                    break;\n                case '00_500':\n                default:\n                    alertDetails.title = i18n.get('error.somethingWentWrongWithDownload');\n                    alertDetails.description = i18n.get('error.pleaseTryAgainLater');\n                    break;\n            }\n            setAlert(alertDetails as { title: string; description: string });\n        },\n        [i18n]\n    );\n\n    if (loading) setAlert(null);\n\n    return (\n        <div className={BASE_CLASS}>\n            {alert && <Alert onClose={removeAlert} type={AlertTypeOption.WARNING} className={'adyen-pe-reports-table-alert'} {...alert} />}\n            <DataGrid\n                errorDisplay={errorDisplay}\n                error={error}\n                columns={columns}\n                data={data}\n                loading={isLoading}\n                outline={false}\n                emptyTableMessage={EMPTY_TABLE_MESSAGE}\n                customCells={{\n                    createdAt: ({ value }) => {\n                        if (!value) return null;\n                        return value && <Typography variant={TypographyVariant.BODY}>{dateFormat(value, DATE_FORMAT_REPORTS)}</Typography>;\n                    },\n                    dateAndReportType: ({ item }) => {\n                        return (\n                            <div className={DATE_TYPE_CLASS}>\n                                <Typography variant={TypographyVariant.BODY} stronger>\n                                    {i18n.get(`reportType.${item?.['type']}`)}\n                                </Typography>\n                                <Typography className={DATE_TYPE_DATE_SECTION_CLASS} variant={TypographyVariant.BODY}>\n                                    {dateFormat(item.createdAt, DATE_FORMAT_REPORTS)}\n                                </Typography>\n                            </div>\n                        );\n                    },\n                    reportType: ({ item }) => {\n                        return item?.['type'] && <Typography variant={TypographyVariant.BODY}>{i18n.get(`reportType.${item?.['type']}`)}</Typography>;\n                    },\n                    reportFile: ({ item }) => {\n                        const queryParam = {\n                            query: { balanceAccountId: balanceAccountId, createdAt: item.createdAt, type: item.type },\n                        };\n                        return (\n                            <DownloadButton\n                                className={'adyen-pe-reports-table--download'}\n                                endpointName={'downloadReport'}\n                                disabled={frozen}\n                                params={queryParam}\n                                onDownloadRequested={freeze}\n                                setError={onDownloadErrorAlert}\n                                errorDisplay={errorIcon}\n                            />\n                        );\n                    },\n                }}\n            >\n                {showPagination && (\n                    <DataGrid.Footer>\n                        <Pagination {...paginationProps} />\n                    </DataGrid.Footer>\n                )}\n            </DataGrid>\n        </div>\n    );\n};\n","export const BASE_CLASS = 'adyen-pe-reports-overview';\nexport const EARLIEST_PAYOUT_SINCE_DATE = new Date('2024-04-16T00:00:00.000Z').toString();\n","import { useCallback, useEffect, useMemo } from 'preact/hooks';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport AdyenPlatformExperienceError from '../../../../../core/Errors/AdyenPlatformExperienceError';\nimport { IBalanceAccountBase, IReport } from '../../../../../types';\nimport { isFunction } from '../../../../../utils';\nimport useBalanceAccountSelection from '../../../../../hooks/useBalanceAccountSelection';\nimport useDefaultOverviewFilterParams from '../../../../../hooks/useDefaultOverviewFilterParams';\nimport FilterBar, { FilterBarMobileSwitch, useFilterBarState } from '../../../../internal/FilterBar';\nimport DateFilter from '../../../../internal/FilterBar/filters/DateFilter/DateFilter';\nimport BalanceAccountSelector from '../../../../internal/FormFields/Select/BalanceAccountSelector';\nimport { DEFAULT_PAGE_LIMIT, LIMIT_OPTIONS } from '../../../../internal/Pagination/constants';\nimport { useCursorPaginatedRecords } from '../../../../internal/Pagination/hooks';\nimport { Header } from '../../../../internal/Header';\nimport { CustomDataRetrieved, ExternalUIComponentProps, FilterParam, ReportsOverviewComponentProps } from '../../../../types';\nimport { FIELDS, ReportsTable } from '../ReportsTable/ReportsTable';\nimport { BASE_CLASS, EARLIEST_PAYOUT_SINCE_DATE } from './constants';\nimport './ReportsOverview.scss';\nimport { useCustomColumnsData } from '../../../../../hooks/useCustomColumnsData';\nimport hasCustomField from '../../../../utils/customData/hasCustomField';\nimport mergeRecords from '../../../../utils/customData/mergeRecords';\n\nexport const ReportsOverview = ({\n    onFiltersChanged,\n    balanceAccounts,\n    allowLimitSelection,\n    preferredLimit = DEFAULT_PAGE_LIMIT,\n    isLoadingBalanceAccount,\n    onContactSupport,\n    hideTitle,\n    dataCustomization,\n}: ExternalUIComponentProps<\n    ReportsOverviewComponentProps & { balanceAccounts: IBalanceAccountBase[] | undefined; isLoadingBalanceAccount: boolean }\n>) => {\n    const { getReports: reportsEndpointCall } = useConfigContext().endpoints;\n    const { activeBalanceAccount, balanceAccountSelectionOptions, onBalanceAccountSelection } = useBalanceAccountSelection(balanceAccounts);\n    const { defaultParams, nowTimestamp, refreshNowTimestamp } = useDefaultOverviewFilterParams('reports', activeBalanceAccount);\n\n    const getReports = useCallback(\n        async (pageRequestParams: Record<FilterParam | 'cursor', string>, signal?: AbortSignal) => {\n            const requestOptions = { signal, errorLevel: 'error' } as const;\n\n            return reportsEndpointCall!(requestOptions, {\n                query: {\n                    ...pageRequestParams,\n                    type: 'payout',\n                    createdSince:\n                        pageRequestParams[FilterParam.CREATED_SINCE] ?? defaultParams.current.defaultFilterParams[FilterParam.CREATED_SINCE],\n                    createdUntil:\n                        pageRequestParams[FilterParam.CREATED_UNTIL] ?? defaultParams.current.defaultFilterParams[FilterParam.CREATED_UNTIL],\n                    balanceAccountId: activeBalanceAccount?.id ?? '',\n                },\n            });\n        },\n        [activeBalanceAccount?.id, defaultParams, reportsEndpointCall]\n    );\n\n    // FILTERS\n    const filterBarState = useFilterBarState();\n    const _onFiltersChanged = useMemo(() => (isFunction(onFiltersChanged) ? onFiltersChanged : void 0), [onFiltersChanged]);\n    const preferredLimitOptions = useMemo(() => (allowLimitSelection ? LIMIT_OPTIONS : undefined), [allowLimitSelection]);\n\n    const { canResetFilters, error, fetching, filters, limit, limitOptions, records, resetFilters, updateFilters, updateLimit, ...paginationProps } =\n        useCursorPaginatedRecords<IReport, 'data', string, FilterParam>({\n            fetchRecords: getReports,\n            dataField: 'data',\n            filterParams: defaultParams.current.defaultFilterParams,\n            initialFiltersSameAsDefault: true,\n            onFiltersChanged: _onFiltersChanged,\n            preferredLimit,\n            preferredLimitOptions,\n            enabled: !!activeBalanceAccount?.id && !!reportsEndpointCall,\n        });\n\n    const mergeCustomData = useCallback(\n        ({ records, retrievedData }: { records: IReport[]; retrievedData: CustomDataRetrieved[] }) =>\n            mergeRecords(records, retrievedData, (modifiedRecord, record) => modifiedRecord.createdAt === record.createdAt),\n        []\n    );\n\n    const hasCustomColumn = useMemo(() => hasCustomField(dataCustomization?.list?.fields, FIELDS), [dataCustomization?.list?.fields]);\n    const { customRecords: reports, loadingCustomRecords } = useCustomColumnsData<IReport>({\n        records,\n        hasCustomColumn,\n        onDataRetrieve: dataCustomization?.list?.onDataRetrieve,\n        mergeCustomData,\n    });\n\n    useEffect(() => {\n        refreshNowTimestamp();\n    }, [filters, refreshNowTimestamp]);\n\n    return (\n        <div className={BASE_CLASS}>\n            <Header hideTitle={hideTitle} titleKey=\"reportsTitle\" subtitleKey=\"reportsNotice\">\n                <FilterBarMobileSwitch {...filterBarState} />\n            </Header>\n            <FilterBar {...filterBarState}>\n                <BalanceAccountSelector\n                    activeBalanceAccount={activeBalanceAccount}\n                    balanceAccountSelectionOptions={balanceAccountSelectionOptions}\n                    onBalanceAccountSelection={onBalanceAccountSelection}\n                />\n                <DateFilter\n                    canResetFilters={canResetFilters}\n                    defaultParams={defaultParams}\n                    filters={filters}\n                    nowTimestamp={nowTimestamp}\n                    refreshNowTimestamp={refreshNowTimestamp}\n                    sinceDate={EARLIEST_PAYOUT_SINCE_DATE}\n                    timezone={'UTC'}\n                    updateFilters={updateFilters}\n                />\n            </FilterBar>\n            <ReportsTable\n                balanceAccountId={activeBalanceAccount?.id}\n                loading={fetching || isLoadingBalanceAccount || !balanceAccounts || !activeBalanceAccount || loadingCustomRecords}\n                data={dataCustomization?.list?.onDataRetrieve ? reports : records}\n                showPagination={true}\n                limit={limit}\n                limitOptions={limitOptions}\n                onContactSupport={onContactSupport}\n                onLimitSelection={updateLimit}\n                error={error as AdyenPlatformExperienceError}\n                customColumns={dataCustomization?.list?.fields}\n                {...paginationProps}\n            />\n        </div>\n    );\n};\n","export const BASE_CLASS = 'adyen-pe-reports-overview-container';\n","import useBalanceAccounts from '../../../../../hooks/useBalanceAccounts';\nimport DataOverviewContainer from '../../../../internal/DataOverviewContainer/DataOverviewContainer';\nimport type { ExternalUIComponentProps, ReportsOverviewComponentProps } from '../../../../types';\nimport { ReportsOverview } from '../ReportsOverview/ReportsOverview';\nimport { BASE_CLASS } from './constants';\n\nfunction ReportsOverviewContainer({ ...props }: ExternalUIComponentProps<ReportsOverviewComponentProps>) {\n    const { balanceAccounts, isBalanceAccountIdWrong, isFetching, error } = useBalanceAccounts(props.balanceAccountId);\n\n    return (\n        <DataOverviewContainer\n            balanceAccountsError={error}\n            className={BASE_CLASS}\n            errorMessage={'weCouldNotLoadTheReportsOverview'}\n            isBalanceAccountIdWrong={isBalanceAccountIdWrong}\n            onContactSupport={props.onContactSupport}\n        >\n            <ReportsOverview {...props} balanceAccounts={balanceAccounts} isLoadingBalanceAccount={isFetching} />\n        </DataOverviewContainer>\n    );\n}\nexport default ReportsOverviewContainer;\n","import { _UIComponentProps, ExternalComponentType, ReportsOverviewComponentProps } from '../../types';\nimport Reports from './components/ReportsOverviewContainer/ReportsOverviewContainer';\nimport UIElement from '../UIElement/UIElement';\n\nexport class ReportsElement extends UIElement<ReportsOverviewComponentProps> {\n    public static type: ExternalComponentType = 'reports';\n\n    constructor(props: _UIComponentProps<ReportsOverviewComponentProps>) {\n        super(props);\n        this.componentToRender = this.componentToRender.bind(this);\n    }\n\n    public componentToRender = () => {\n        return (\n            <Reports\n                {...this.props}\n                balanceAccountId={this.props.balanceAccountId}\n                ref={(ref: UIElement<ReportsOverviewComponentProps>) => {\n                    this.componentRef = ref;\n                }}\n            ></Reports>\n        );\n    };\n}\n\nexport default ReportsElement;\n","export const CAPITAL_OVERVIEW_CLASS_NAMES = {\n    base: 'adyen-pe-capital-overview',\n    title: 'adyen-pe-capital-overview__title',\n    skeleton: 'adyen-pe-capital-overview__skeleton',\n    headerSkeleton: 'adyen-pe-capital-overview__header-skeleton',\n    skeletonContainer: 'adyen-pe-capital-overview__header-skeleton-container',\n    preQualifiedGrant: 'adyen-pe-capital-overview__pre-qualified-grant',\n    preQualifiedGrantButton: 'adyen-pe-capital-overview__pre-qualified-grant-review-button',\n    errorContainer: 'adyen-pe-capital-overview__error-container',\n};\n","export default \"data:image/svg+xml,%3csvg%20width='254'%20height='132'%20viewBox='0%200%20254%20132'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M68.0772%2069.5256C68.0287%2069.3932%2066.6957%2058.4056%2066.6957%2058.4056C66.576%2057.682%2064.6702%2055.0296%2064.4049%2054.5676L53.5013%2036.8958C52.618%2035.639%2051.1199%2036.0946%2050.4728%2036.6244C49.9325%2037.0379%2049.4601%2037.7293%2050.3272%2039.3769C51.7832%2042.1489%2057.4842%2052.9393%2057.4842%2052.9393L55.7144%2056.3348L52.7927%2058.9872C52.9836%2059.3231%2048.6124%2058.4993%2048.6124%2058.4993C48.4798%2058.3313%2050.9776%2071.0117%2057.4421%2074.7529C57.4421%2074.7529%2065.2591%2087.724%2065.0294%2087.8274L73.1635%2078.8397L68.0772%2069.5289V69.5256Z'%20fill='%23B34B36'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M51.534%2055.2108C51.534%2055.2108%2047.6805%2054.975%2048.6155%2058.4932C49.5506%2062.0146%2053.6079%2068.3984%2055.4069%2066.838C57.2058%2065.2776%2053.2844%2059.5238%2053.2844%2059.5238'%20fill='%23B34B36'/%3e%3cpath%20d='M51.534%2055.2108C51.534%2055.2108%2047.6805%2054.975%2048.6155%2058.4932C49.5506%2062.0146%2053.6079%2068.3984%2055.4069%2066.838C57.2058%2065.2776%2053.2844%2059.5238%2053.2844%2059.5238'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M53.6048%2052.245C53.6048%2052.245%2049.7513%2052.0092%2050.6863%2055.5274C51.6214%2059.0488%2055.6787%2065.4326%2057.4777%2063.8722C59.2766%2062.3118%2055.3552%2056.558%2055.3552%2056.558'%20fill='%23B34B36'/%3e%3cpath%20d='M53.6048%2052.245C53.6048%2052.245%2049.7513%2052.0092%2050.6863%2055.5274C51.6214%2059.0488%2055.6787%2065.4326%2057.4777%2063.8722C59.2766%2062.3118%2055.3552%2056.558%2055.3552%2056.558'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M56.1903%2050.5459C56.1903%2050.5459%2051.8191%2049.0404%2052.7542%2052.5619C53.6893%2056.0833%2057.7466%2062.4671%2059.5455%2060.9067C61.3445%2059.3463%2056.1903%2050.5459%2056.1903%2050.5459Z'%20fill='%23B34B36'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M66.6955%2058.4029C66.6955%2058.4029%2065.5081%2049.147%2063.7253%2048.0615C61.9425%2046.9759%2057.8852%2043.3641%2056.8142%2044.091C55.7433%2044.8146%2056.1186%2046.4849%2056.8369%2047.4024C57.5552%2048.3199%2061.2469%2051.8381%2061.2469%2051.8381C61.2469%2051.8381%2056.3677%2059.3365%2058.872%2064.8481'%20fill='%23B34B36'/%3e%3cpath%20d='M66.6955%2058.4029C66.6955%2058.4029%2065.5081%2049.147%2063.7253%2048.0615C61.9425%2046.9759%2057.8852%2043.3641%2056.8142%2044.091C55.7433%2044.8146%2056.1186%2046.4849%2056.8369%2047.4024C57.5552%2048.3199%2061.2469%2051.8381%2061.2469%2051.8381C61.2469%2051.8381%2056.3677%2059.3365%2058.872%2064.8481'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M118.833%2023.1365C116.105%2020.3161%20116.157%2017.247%20116.856%2014.7691C116.862%2014.7432%20116.869%2014.7206%20116.879%2014.6948C117.869%2011.3155%20121.479%209.48044%20124.89%2010.3721C127.465%2011.0473%20130.222%2011.1572%20132.907%2011.1442C136.748%2011.1281%20140.66%2010.9116%20144.364%2011.9261C148.069%2012.9373%20150.829%2014.5397%20151.867%2018.2291C163.078%2023.0557%20156.41%2033.3325%20156.41%2033.3325L150.822%2042.3364L127.381%2038.8182C121.855%2038.1236%20117.882%2033.171%20118.406%2027.6368L118.833%2023.1365Z'%20fill='%230ABF53'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M123.178%2023.6825C121.062%2022.3709%20120.467%2019.2629%20121.677%2017.0887C122.887%2014.9145%20125.56%2013.774%20128.035%2014.0389C129.484%2014.194%20130.853%2014.7658%20132.257%2015.1568C133.661%2015.5477%20135.205%2015.7512%20136.551%2015.1858C137.893%2014.6205%20138.903%2013.0633%20138.424%2011.687'%20stroke='%2385DFA9'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M150.725%2040.7211C150.783%2039.2382%20152.158%2037.9847%20153.64%2037.8813C155.122%2037.778%20156.574%2038.7116%20157.273%2040.0201C157.972%2041.3285%20157.975%2042.9438%20157.474%2044.3395C157.115%2045.3377%20156.487%2046.265%20155.594%2046.84C154.384%2047.6154%20152.792%2047.6541%20151.449%2047.1405C150.107%2046.6268%20149.003%2045.6091%20148.172%2044.4396'%20fill='%23B34B36'/%3e%3cpath%20d='M150.725%2040.7211C150.783%2039.2382%20152.158%2037.9847%20153.64%2037.8813C155.122%2037.778%20156.574%2038.7116%20157.273%2040.0201C157.972%2041.3285%20157.975%2042.9438%20157.474%2044.3395C157.115%2045.3377%20156.487%2046.265%20155.594%2046.84C154.384%2047.6154%20152.792%2047.6541%20151.449%2047.1405C150.107%2046.6268%20149.003%2045.6091%20148.172%2044.4396'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M120.641%2036.9443C120.951%2035.4937%20119.932%2033.9365%20118.521%2033.4713C117.111%2033.0061%20115.474%2033.5489%20114.471%2034.6441C113.468%2035.7393%20113.066%2037.3029%20113.205%2038.7793C113.306%2039.8358%20113.684%2040.889%20114.406%2041.6643C115.386%2042.7143%20116.92%2043.1472%20118.347%2042.9792C119.774%2042.8112%20121.097%2042.1005%20122.194%2041.1733'%20fill='%23B34B36'/%3e%3cpath%20d='M120.641%2036.9443C120.951%2035.4937%20119.932%2033.9365%20118.521%2033.4713C117.111%2033.0061%20115.474%2033.5489%20114.471%2034.6441C113.468%2035.7393%20113.066%2037.3029%20113.205%2038.7793C113.306%2039.8358%20113.684%2040.889%20114.406%2041.6643C115.386%2042.7143%20116.92%2043.1472%20118.347%2042.9792C119.774%2042.8112%20121.097%2042.1005%20122.194%2041.1733'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M153.317%2064.6669H152.567C148.937%2064.6669%20145.995%2061.727%20145.995%2058.1054V49.3535H125.097V58.1054C125.097%2061.7302%20122.153%2064.6669%20118.526%2064.6669H117.775L135.516%2080.7977L153.324%2064.6669H153.317Z'%20fill='%23B34B36'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M118.293%2043.2381L122.273%2052.6361C122.668%2053.5666%20121.982%2054.5971%20120.972%2054.5971H113.013C112%2054.5971%20111.317%2053.5666%20111.712%2052.6361L115.692%2043.2381C116.177%2042.088%20117.808%2042.088%20118.296%2043.2381H118.293Z'%20fill='%2385DFA9'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M155.138%2047.7447L159.535%2056.9553C159.972%2057.8664%20159.334%2058.926%20158.322%2058.9713L150.372%2059.3266C149.362%2059.3719%20148.631%2058.3736%20148.984%2057.427L152.537%2047.861C152.97%2046.6914%20154.601%2046.6171%20155.138%2047.7447Z'%20fill='%2385DFA9'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M125.543%2056.5576L125.096%2056.1828V53.0781H145.926V56.1828L145.574%2056.48C143.063%2058.609%20139.918%2059.8658%20136.628%2060.0079C135.741%2060.0467%20134.851%2060.0402%20133.968%2059.9853C130.868%2059.7947%20127.924%2058.5477%20125.543%2056.5543V56.5576Z'%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M147.713%2022.2967C141.423%2025.2624%20134.202%2026.2381%20127.355%2024.9911C126.158%2024.7746%20124.919%2024.4354%20123.777%2023.9379C121.457%2026.923%20119.833%2030.7158%20119.296%2034.9674C117.921%2045.9%20124.24%2055.6954%20133.416%2056.8456C142.588%2057.9957%20151.143%2050.0676%20152.518%2039.135C153.346%2032.567%20151.392%2026.4126%20147.71%2022.2935L147.713%2022.2967Z'%20fill='%23B34B36'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M119.625%2020.3711C120.754%2022.2158%20122.595%2023.5275%20124.653%2024.2802'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M132.249%2035.6243C132.444%2034.0771%20131.084%2032.6321%20129.212%2032.397C127.34%2032.1618%20125.664%2033.2254%20125.469%2034.7727C125.274%2036.3199%20126.634%2037.7649%20128.506%2038C130.378%2038.2352%20132.054%2037.1716%20132.249%2035.6243Z'%20fill='white'/%3e%3cpath%20d='M130.497%2041.3389C130.497%2041.3389%20128.646%2044.9152%20133.943%2045.5775C139.239%2046.243%20138.084%2042.2887%20138.084%2042.2887'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M125.459%2034.7669C125.459%2034.7669%20125.812%2031.9659%20129.199%2032.3923C132.587%2032.8188%20132.234%2035.6198%20132.234%2035.6198'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M127.726%2036.9931C128.968%2036.9931%20129.975%2035.9878%20129.975%2034.7478C129.975%2033.5077%20128.968%2032.5024%20127.726%2032.5024C126.484%2032.5024%20125.478%2033.5077%20125.478%2034.7478C125.478%2035.9878%20126.484%2036.9931%20127.726%2036.9931Z'%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M123.944%2033.5752C123.944%2033.5752%20125.048%2034.9256%20126.161%2034.7609L123.944%2033.5752Z'%20fill='%2300112C'/%3e%3cpath%20d='M123.944%2033.5752C123.944%2033.5752%20125.048%2034.9256%20126.161%2034.7609'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M146.765%2036.4375C146.765%2036.4375%20145.361%2037.4713%20144.325%2037.0384L146.765%2036.4375Z'%20fill='%2300112C'/%3e%3cpath%20d='M146.765%2036.4375C146.765%2036.4375%20145.361%2037.4713%20144.325%2037.0384'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M144.949%2037.2181C145.144%2035.6708%20143.785%2034.2259%20141.912%2033.9907C140.04%2033.7555%20138.364%2034.8192%20138.169%2036.3664C137.974%2037.9137%20139.334%2039.3586%20141.206%2039.5938C143.079%2039.829%20144.754%2038.7653%20144.949%2037.2181Z'%20fill='white'/%3e%3cpath%20d='M138.158%2036.3631C138.158%2036.3631%20138.511%2033.5621%20141.898%2033.9885C145.286%2034.415%20144.933%2037.216%20144.933%2037.216'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M133.784%2046.9853C130.581%2046.5847%20129.06%2048.1031%20129.06%2048.1031C129.06%2048.1031%20128.801%2051.6859%20133.263%2052.2448C137.725%2052.8037%20138.013%2049.3437%20138.013%2049.3437C138.013%2049.3437%20137.223%2047.415%20133.787%2046.982L133.784%2046.9853Z'%20fill='%2389382B'/%3e%3cpath%20d='M128.361%2047.7129C131.526%2049.6093%20135.334%2050.123%20138.89%2049.1344L139.136%2049.0665'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M125.485%2029.0653C126.695%2028.4838%20128.089%2028.2996%20129.41%2028.5419C130.73%2028.7842%20131.966%2029.453%20132.891%2030.4254'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M145.984%2030.8031C145.114%2029.7854%20143.913%2029.052%20142.606%2028.7419C141.302%2028.4318%20139.898%2028.5448%20138.662%2029.0585'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M140.583%2038.6054C141.825%2038.6054%20142.831%2037.6001%20142.831%2036.3601C142.831%2035.12%20141.825%2034.1147%20140.583%2034.1147C139.341%2034.1147%20138.334%2035.12%20138.334%2036.3601C138.334%2037.6001%20139.341%2038.6054%20140.583%2038.6054Z'%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M154.285%2023.02C154.285%2023.02%20156.686%2025.33%20155.223%2030.8027'%20stroke='%2385DFA9'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M124.708%2064.8447C123.245%2064.1016%20121.679%2063.6009%20120.055%2063.3586C115.723%2062.7124%20107.294%2066.8121%20100.011%2070.9603C89.8645%2076.74%2080.3262%2090.0019%2080.3262%2090.0019L69.607%2069.8328C69.2187%2069.1059%2068.2222%2068.9929%2067.6851%2069.6164C64.3784%2073.4447%2054.9081%2084.5744%2055.1475%2086.2447C55.4355%2088.2671%2067.3033%20128.437%2081.1966%20120.348C95.0899%20112.258%20106.087%20102.718%20106.087%20102.718L107.951%20131.494H138.119C138.119%20131.494%20138.216%2078.9821%20138.216%2077.538C138.216%2076.4137%20128.843%2066.9414%20124.704%2064.8414L124.708%2064.8447Z'%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M152.566%2064.6665L138.217%2077.5408L138.12%20131.496H169.899V104.359L185.84%20131.496H211.297C211.297%20131.496%20193.473%2089.0323%20179.767%2074.2487C172.503%2066.4111%20152.566%2064.6665%20152.566%2064.6665Z'%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M15.9987%201H13.3003V49.1274H15.9987V1Z'%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13%2024.6216L1%2024.6216'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20opacity='0.75'%20d='M80.2651%201.22607H16.0015V49.3535H80.2651V1.22607Z'%20fill='white'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M80.2651%201H16.0015V49.1274H80.2651V1Z'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M29.8433%2025.0622C29.8433%2023.8378%2030.8398%2022.8428%2032.0661%2022.8428C33.2923%2022.8428%2034.2889%2023.8378%2034.2889%2025.0622C34.2889%2026.2867%2033.2923%2027.2817%2032.0661%2027.2817C30.8398%2027.2817%2029.8433%2026.2867%2029.8433%2025.0622Z'%20fill='%23F7F8F9'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M64.1984%2027.2817C65.426%2027.2817%2066.4212%2026.288%2066.4212%2025.0622C66.4212%2023.8365%2065.426%2022.8428%2064.1984%2022.8428C62.9708%2022.8428%2061.9756%2023.8365%2061.9756%2025.0622C61.9756%2026.288%2062.9708%2027.2817%2064.1984%2027.2817Z'%20fill='%23F7F8F9'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M48.1344%2027.2817C49.362%2027.2817%2050.3572%2026.288%2050.3572%2025.0622C50.3572%2023.8365%2049.362%2022.8428%2048.1344%2022.8428C46.9068%2022.8428%2045.9116%2023.8365%2045.9116%2025.0622C45.9116%2026.288%2046.9068%2027.2817%2048.1344%2027.2817Z'%20fill='%23F7F8F9'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20opacity='0.75'%20d='M226.125%20106.581V46.6392H181.1V106.581H226.125Z'%20fill='white'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M180.99%2046.6392H178.469V106.581H180.99V46.6392Z'%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M253%2076.6216H226'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M225.866%2046.6392H212.345V60.1402H225.866V46.6392Z'%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M244.779%2027.5757H214.763V57.5467H244.779V27.5757Z'%20fill='%230ABF53'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M225.499%2043.4868L228.443%2046.4235L236.176%2038.7021'%20stroke='white'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M220.919%20116.949L216.163%2096.2178L234.832%20106.113L220.919%20116.949Z'%20fill='%2300112C'%20stroke='%2300112C'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","import useCoreContext from '../../../../core/Context/useCoreContext';\nimport unqualifiedImage from '../../../../images/generic-use-first-touch.svg';\nimport Typography from '../../../internal/Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../../../internal/Typography/types';\nimport { CapitalHeader } from '../../../internal/CapitalHeader';\n\nconst Unqualified = ({ hideTitle }: { hideTitle?: boolean }) => {\n    const { i18n } = useCoreContext();\n\n    return (\n        <>\n            <CapitalHeader hideTitle={hideTitle} titleKey={'capital.needSomeExtraMoney'} />\n            <div className={'adyen-pe-capital-overview__unqualified-state'}>\n                <div className=\"adyen-pe-capital-overview__unqualified-state-img\">\n                    <img srcSet={unqualifiedImage} alt=\"\" />\n                </div>\n                <Typography el={TypographyElement.PARAGRAPH} variant={TypographyVariant.BODY} large>\n                    {i18n.get('capital.youWillSoonQualifyForAFinancialOffer')}\n                </Typography>\n            </div>\n        </>\n    );\n};\n\nexport default Unqualified;\n","import { CAPITAL_OVERVIEW_CLASS_NAMES } from '../constants';\nimport InfoBox from '../../../internal/InfoBox';\nimport Button from '../../../internal/Button/Button';\nimport useCoreContext from '../../../../core/Context/useCoreContext';\nimport { IDynamicOffersConfig } from '../../../../types';\nimport { CapitalHeader } from '../../../internal/CapitalHeader';\nimport Typography from '../../../internal/Typography/Typography';\nimport { TypographyVariant } from '../../../internal/Typography/types';\n\nconst PreQualifiedIntro = ({\n    dynamicOfferConfig,\n    hideTitle,\n    onOfferOptionsRequest,\n}: {\n    dynamicOfferConfig: Required<IDynamicOffersConfig>;\n    hideTitle?: boolean;\n    onOfferOptionsRequest: () => void;\n}) => {\n    const { i18n } = useCoreContext();\n\n    return (\n        <>\n            <CapitalHeader hideTitle={hideTitle} titleKey={'capital.needSomeExtraMoney'} />\n            <div className={CAPITAL_OVERVIEW_CLASS_NAMES.preQualifiedGrant}>\n                <InfoBox>\n                    <Typography variant={TypographyVariant.BODY}>\n                        {i18n.get('capital.youHaveBeenPrequalifiedForBusinessFinancingUpToX.part1')}\n                        <strong>\n                            {i18n.get('capital.youHaveBeenPrequalifiedForBusinessFinancingUpToX.part2', {\n                                values: {\n                                    amount: i18n.amount(dynamicOfferConfig.maxAmount.value, dynamicOfferConfig.maxAmount.currency, {\n                                        minimumFractionDigits: 0,\n                                    }),\n                                },\n                            })}\n                        </strong>\n                    </Typography>\n                </InfoBox>\n                <Button className={CAPITAL_OVERVIEW_CLASS_NAMES.preQualifiedGrantButton} onClick={onOfferOptionsRequest}>\n                    {i18n.get('capital.seeOptions')}\n                </Button>\n            </div>\n        </>\n    );\n};\n\nexport default PreQualifiedIntro;\n","import { IDynamicOffersConfig, IGrant } from '../../../../../types';\nimport PreQualifiedIntro from '../PreQualifiedIntro';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport { CapitalOffer } from '../../../CapitalOffer/components/CapitalOffer/CapitalOffer';\n\ntype PreQualifiedProps = {\n    dynamicOffer: Required<IDynamicOffersConfig>;\n    hideTitle: boolean | undefined;\n    onFundsRequest: (data: IGrant) => void;\n    onOfferDismiss?: () => void;\n    onOfferOptionsRequest?: () => void;\n    skipPreQualifiedIntro?: boolean;\n};\n\nexport const PreQualified = ({\n    hideTitle,\n    dynamicOffer,\n    skipPreQualifiedIntro,\n    onOfferOptionsRequest,\n    onFundsRequest,\n    onOfferDismiss,\n}: PreQualifiedProps) => {\n    const [state, setState] = useState<'intro' | 'capitalOffer'>(skipPreQualifiedIntro ? 'capitalOffer' : 'intro');\n\n    const handleOfferOptionsRequest = useCallback(() => {\n        onOfferOptionsRequest ? onOfferOptionsRequest() : setState('capitalOffer');\n    }, [onOfferOptionsRequest]);\n\n    const isOfferDismissButtonVisible = useMemo(() => !skipPreQualifiedIntro || !!onOfferDismiss, [onOfferDismiss, skipPreQualifiedIntro]);\n    const handleOfferDismiss = useCallback(() => {\n        onOfferDismiss ? onOfferDismiss() : setState('intro');\n    }, [onOfferDismiss]);\n\n    return (\n        <>\n            {state === 'intro' ? (\n                <PreQualifiedIntro hideTitle={hideTitle} dynamicOfferConfig={dynamicOffer} onOfferOptionsRequest={handleOfferOptionsRequest} />\n            ) : (\n                <CapitalOffer\n                    onFundsRequest={onFundsRequest}\n                    onOfferDismiss={isOfferDismissButtonVisible ? handleOfferDismiss : undefined}\n                    externalDynamicOffersConfig={dynamicOffer}\n                />\n            )}\n        </>\n    );\n};\n","import { useMemo } from 'preact/hooks';\nimport cx from 'classnames';\nimport './ProgressBar.scss';\nimport Typography from '../Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../Typography/types';\nimport { clamp } from '../../../utils';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\ninterface ProgressBarProps {\n    /**\n     * Maximum value for the progress bar.\n     *\n     * @default 1\n     */\n    max?: number;\n\n    /**\n     * Current value of the progress bar.\n     */\n    value: number;\n\n    /**\n     * Labels for the progress bar\n     */\n    labels?: {\n        /**\n         * The label that describes the current value of the progress bar.\n         */\n        current?: string;\n\n        /**\n         * The label that describes the maximum value of the progress bar.\n         */\n        max?: string;\n\n        /**\n         * Accessible label for the progress bar (optional).\n         */\n        ariaLabel?: string;\n    };\n\n    /**\n     * Tooltips for the progress bar segments.\n     */\n    tooltips?: {\n        /**\n         * Tooltip content to describe the filled portion of the progress bar (progress).\n         */\n        progress?: string;\n\n        /**\n         * Tooltip content to describe the remaining portion of the progress bar.\n         */\n        remaining?: string;\n    };\n\n    /**\n     * Optional custom class name to apply additional styles to the progress bar component.\n     */\n    className?: string;\n}\n\n/**\n * Accessible custom ProgressBar component\n * @param props - ProgressBarProps\n */\nconst ProgressBar = ({ max = 1, value, labels, tooltips, className }: ProgressBarProps) => {\n    const percentage = useMemo(() => clamp(0, (value * 100) / max, 100), [value, max]);\n    const shouldDisplayLegend = !!(labels?.current || labels?.max);\n    const ariaLabel = labels?.ariaLabel ?? (labels?.current ? `${labels.current}: ${value}` : `${value}/${max}`);\n\n    return (\n        <div\n            role=\"progressbar\"\n            aria-valuenow={value}\n            aria-valuemin={0}\n            aria-valuemax={max}\n            aria-valuetext={`${percentage}%`}\n            aria-label={ariaLabel}\n            className={cx('adyen-pe-progress-bar', className)}\n        >\n            <div className=\"adyen-pe-progress-bar__track\">\n                <div className=\"adyen-pe-progress-bar__track-background\"></div>\n                <ProgressBarSegment\n                    tooltipContent={tooltips?.progress}\n                    title={labels?.current}\n                    percentage={percentage}\n                    className=\"adyen-pe-progress-bar__track-fill\"\n                />\n                <ProgressBarSegment\n                    tooltipContent={tooltips?.remaining}\n                    title={labels?.max}\n                    percentage={100 - percentage}\n                    className=\"adyen-pe-progress-bar__track-remaining\"\n                />\n            </div>\n\n            {shouldDisplayLegend && (\n                <div className=\"adyen-pe-progress-bar__legend\" aria-hidden=\"true\">\n                    {labels.current && (\n                        <Typography el={TypographyElement.SPAN} variant={TypographyVariant.CAPTION} className=\"adyen-pe-progress-bar__legend-label\">\n                            {labels.current}\n                        </Typography>\n                    )}\n                    {labels.max && (\n                        <Typography el={TypographyElement.SPAN} variant={TypographyVariant.CAPTION} className=\"adyen-pe-progress-bar__legend-label\">\n                            {labels.max}\n                        </Typography>\n                    )}\n                </div>\n            )}\n        </div>\n    );\n};\ninterface ProgressBarSegmentProps {\n    tooltipContent?: string;\n    title?: string;\n    percentage: number;\n    className: string;\n}\nconst ProgressBarSegment = ({ tooltipContent, title, percentage, className }: ProgressBarSegmentProps) => {\n    const getContent = (title?: string) => <div className={className} title={title} style={{ width: `${percentage}%` }} />;\n    return tooltipContent ? <Tooltip content={tooltipContent}>{getContent()}</Tooltip> : getContent(title);\n};\n\nexport default ProgressBar;\n","export const GRANT_ITEM_CLASS_NAMES = {\n    base: 'adyen-pe-grant-item',\n    actionsBar: 'adyen-pe-grant-item__actions-bar',\n    alert: 'adyen-pe-grant-item__alert',\n    cardContent: 'adyen-pe-grant-item__card-content',\n    grantID: 'adyen-pe-grant-item__grant-id',\n    mainActionBtn: 'adyen-pe-grant-item__main-action-button',\n    progressBar: 'adyen-pe-grant-item__progress-bar',\n    statusContainer: 'adyen-pe-grant-item__status-container',\n    textSecondary: 'adyen-pe-grant-item__text--secondary',\n};\n","import { IGrant, IGrantStatus } from '../../../../../types';\nimport { TranslationKey } from '../../../../../translations';\nimport { TagVariant } from '../../../../internal/Tag/types';\nimport { GrantConfig } from './types';\n\nconst getHasDetails = (status: IGrantStatus) => status === 'Active';\n\nconst getIsBackgroundFilled = (status: IGrantStatus) => status === 'Repaid';\n\nconst getAmountLabelKey = (status: IGrantStatus): TranslationKey => (status === 'Active' ? 'capital.remaining' : 'capital.requestedFunds');\n\nconst getAmount = (grant: IGrant) => (grant.status === 'Active' ? grant.remainingTotalAmount : grant.grantAmount);\n\nconst getStatusKey = ({ status, missingActions }: IGrant): TranslationKey | undefined => {\n    switch (status) {\n        case 'Active':\n            return undefined;\n        case 'Failed':\n            return 'capital.failed';\n        case 'Pending':\n            return missingActions && missingActions.length ? 'capital.actionNeeded' : 'capital.pending';\n        case 'Repaid':\n            return 'capital.fullyRepaid';\n        case 'Revoked':\n            return 'capital.revoked';\n        case 'WrittenOff':\n            return 'capital.writtenOff';\n    }\n};\n\nconst getStatusTagVariant = ({ status, missingActions }: IGrant): TagVariant => {\n    switch (status) {\n        case 'Failed':\n            return TagVariant.ERROR;\n        case 'Pending':\n            return missingActions?.length ? TagVariant.WARNING : TagVariant.DEFAULT;\n        case 'Repaid':\n            return TagVariant.LIGHT;\n        case 'Revoked':\n        case 'WrittenOff':\n            return TagVariant.WARNING;\n        default:\n            return TagVariant.DEFAULT;\n    }\n};\n\nconst getRepaymentPeriodEndDate = (repaymentPeriodLeft: number) => {\n    const today = new Date();\n    const endDate = new Date();\n    endDate.setDate(today.getDate() + repaymentPeriodLeft);\n    return endDate;\n};\n\nexport const getStatusTooltipKey = (grant: IGrant): TranslationKey | undefined => {\n    const pendingToS = grant.missingActions?.some(action => action.type === 'signToS') || false;\n\n    switch (grant.status) {\n        case 'Pending':\n            return grant.missingActions?.length\n                ? pendingToS\n                    ? 'capital.signTheTermsToReceiveYourFunds'\n                    : undefined\n                : 'capital.youShouldGetTheFundsWithinOneBusinessDay';\n        case 'Failed':\n            return 'capital.weCouldNotProcessThisRequestTryAgain';\n        case 'WrittenOff':\n            return 'capital.youAcceptedTheseFundsButDidNotRepayThem';\n        case 'Revoked':\n            return 'capital.youAcceptedButThenReturnedTheseFunds';\n        default:\n            return undefined;\n    }\n};\n\nexport const getGrantConfig = (grant: IGrant): GrantConfig => {\n    const isGrantActive = grant.status === 'Active';\n    const isGrantPending = grant.status === 'Pending';\n\n    return {\n        amount: getAmount(grant),\n        amountLabelKey: getAmountLabelKey(grant.status),\n        hasAlerts: isGrantPending,\n        hasDetails: getHasDetails(grant.status),\n        hasUnscheduledRepaymentDetails: isGrantActive && !!grant.unscheduledRepaymentAccounts?.length,\n        // The grant revocation account details is currently not ready to be rendered.\n        // A future iteration of this component might include revocation account details.\n        // Only then should the following line be uncommented.\n        //\n        // hasRevocationDetails: isGrantActive && grant.revocationAccount !== undefined,\n        isAmountColorSecondary: !isGrantActive,\n        isBackgroundFilled: getIsBackgroundFilled(grant.status),\n        isGrantIdVisible: !isGrantActive,\n        isLabelColorSecondary: isGrantActive,\n        isProgressBarVisible: isGrantActive,\n        repaymentPeriodEndDate: getRepaymentPeriodEndDate(grant.repaymentPeriodLeft),\n        statusKey: getStatusKey(grant),\n        statusTagVariant: getStatusTagVariant(grant),\n        statusTooltipKey: getStatusTooltipKey(grant),\n    };\n};\n","export const GRANT_DETAILS_CLASS_NAMES = {\n    base: 'adyen-pe-grant-details',\n    content: 'adyen-pe-grant-details__content',\n    header: 'adyen-pe-grant-details__header',\n    label: 'adyen-pe-grant-details__label',\n};\n","import { FunctionalComponent } from 'preact';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../../../../internal/Typography/types';\nimport { GRANT_DETAILS_CLASS_NAMES } from './constants';\nimport { GrantDetailsProps } from './types';\nimport './GrantDetails.scss';\nimport StructuredList from '../../../../internal/StructuredList';\nimport { StructuredListItem } from '../../../../internal/StructuredList/types';\nimport { getPaymentRatePercentage } from '../../../CapitalOffer/components/utils/utils';\nimport { Tooltip } from '../../../../internal/Tooltip/Tooltip';\nimport { CAPITAL_REPAYMENT_FREQUENCY } from '../../../../constants';\n\nexport const GrantDetails: FunctionalComponent<GrantDetailsProps> = ({ grant }) => {\n    const { i18n } = useCoreContext();\n    const formatAmount = useCallback((amount: { value: number; currency: string }) => i18n.amount(amount.value, amount.currency), [i18n]);\n    const structuredListItems = useMemo<StructuredListItem[]>(() => {\n        const maximumRepaymentPeriodMonths = grant.maximumRepaymentPeriodDays ? Math.ceil(grant.maximumRepaymentPeriodDays / 30) : null;\n        const items: StructuredListItem[] = [\n            {\n                key: 'capital.remainingAmount',\n                value: i18n.amount(grant.remainingGrantAmount.value, grant.remainingGrantAmount.currency),\n            },\n            { key: 'capital.remainingFees', value: formatAmount(grant.remainingFeesAmount) },\n            { key: 'capital.repaidAmount', value: formatAmount(grant.repaidGrantAmount) },\n            { key: 'capital.repaidFees', value: formatAmount(grant.repaidFeesAmount) },\n            {\n                key: 'capital.dailyRepaymentRate',\n                value: `${i18n.get('capital.xPercent', {\n                    values: { percentage: getPaymentRatePercentage(grant.repaymentRate) },\n                })}`,\n            },\n            {\n                key: 'capital.expectedRepaymentPeriod',\n                value: i18n.get('capital.daysAndDaysLeft', {\n                    values: {\n                        days: grant.expectedRepaymentPeriodDays,\n                        daysLeft: grant.repaymentPeriodLeft,\n                    },\n                }),\n            },\n            { key: 'capital.totalFees', value: formatAmount(grant.feesAmount) },\n            { key: 'capital.totalRepaymentAmount', value: formatAmount(grant.totalAmount) },\n            { key: 'capital.repaymentThreshold', value: formatAmount(grant.thresholdAmount) },\n            { key: 'capital.grantID', value: grant.id },\n            { key: 'accountDescription', value: grant.balanceAccountDescription },\n            { key: 'accountID', value: grant.balanceAccountCode },\n        ];\n\n        if (maximumRepaymentPeriodMonths) {\n            items.splice(5, 0, {\n                key: 'capital.maximumRepaymentPeriod',\n                value: i18n.get('capital.xMonths', { values: { months: maximumRepaymentPeriodMonths } }),\n            });\n        }\n\n        return items;\n    }, [grant, formatAmount, i18n]);\n\n    return (\n        <div className={GRANT_DETAILS_CLASS_NAMES.base}>\n            <div className={GRANT_DETAILS_CLASS_NAMES.content}>\n                <div className={GRANT_DETAILS_CLASS_NAMES.header}>\n                    <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY}>\n                        {i18n.get('capital.yourRequestedFundsWere')}\n                    </Typography>\n                    <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY} strongest>\n                        {i18n.amount(grant.grantAmount.value, grant.grantAmount.currency)}\n                    </Typography>\n                </div>\n                <StructuredList\n                    renderLabel={(val, key) =>\n                        key === 'capital.repaymentThreshold' ? (\n                            <Tooltip\n                                isContainerHovered\n                                content={i18n.get('capital.minimumRepaymentToRepayTheFinancingOnTime', {\n                                    values: { days: CAPITAL_REPAYMENT_FREQUENCY },\n                                })}\n                            >\n                                <span>\n                                    <Typography\n                                        className={GRANT_DETAILS_CLASS_NAMES.label}\n                                        el={TypographyElement.SPAN}\n                                        variant={TypographyVariant.CAPTION}\n                                    >\n                                        {val}\n                                    </Typography>\n                                </span>\n                            </Tooltip>\n                        ) : (\n                            <Typography className={GRANT_DETAILS_CLASS_NAMES.label} el={TypographyElement.SPAN} variant={TypographyVariant.CAPTION}>\n                                {val}\n                            </Typography>\n                        )\n                    }\n                    renderValue={val => (\n                        <Typography el={TypographyElement.SPAN} stronger variant={TypographyVariant.CAPTION}>\n                            {val}\n                        </Typography>\n                    )}\n                    items={structuredListItems}\n                />\n            </div>\n        </div>\n    );\n};\n","export const GRANT_ACTION_CLASS_NAMES = {\n    button: 'adyen-pe-grant-action__button',\n};\n","/**\n * Gets the href from the topmost window (useful when we're inside an iframe).\n *\n * @returns The href from the topmost window\n */\nexport const getTopWindowHref = () => {\n    // To get the top level href\n    return window.top?.location.href || window.location.href;\n};\n\n/**\n * Sets the href of the topmost window (useful when we're inside an iframe)\n *\n * @param href - The href value to be set\n */\nexport const setTopWindowHref = (href: string) => {\n    if (window.top) {\n        // To set the top level href (useful when component is rendered inside an iframe)\n        window.top.location.href = href;\n    } else {\n        window.location.href = href;\n    }\n};\n","import { FunctionalComponent } from 'preact';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport useTimezoneAwareDateFormatting from '../../../../../hooks/useTimezoneAwareDateFormatting';\nimport { DATE_FORMAT_CAPITAL_OVERVIEW } from '../../../../../constants';\nimport { GRANT_ACTION_CLASS_NAMES } from './constants';\nimport { GrantActionProps } from './types';\nimport './GrantAction.scss';\nimport Alert from '../../../../internal/Alert/Alert';\nimport { AlertTypeOption } from '../../../../internal/Alert/types';\nimport Button from '../../../../internal/Button';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport { EMPTY_OBJECT } from '../../../../../utils';\nimport { useFetch } from '../../../../../hooks/useFetch';\nimport { useEffect } from 'preact/compat';\nimport { getTopWindowHref, setTopWindowHref } from './utils';\n\nexport const GrantAction: FunctionalComponent<GrantActionProps> = ({ action, className, offerExpiresAt }) => {\n    const { i18n, updateCore } = useCoreContext();\n    const { dateFormat } = useTimezoneAwareDateFormatting();\n    const { signToSActionDetails } = useConfigContext().endpoints;\n    const [shouldRedirectToToS, setShouldRedirectToToS] = useState(false);\n\n    const fetchCallback = useCallback(async () => {\n        if (action.type === 'signToS') {\n            return signToSActionDetails?.(EMPTY_OBJECT, {\n                query: {\n                    redirectUrl: getTopWindowHref(),\n                    locale: i18n.locale,\n                },\n            });\n        }\n    }, [action, i18n.locale, signToSActionDetails]);\n\n    const { data, isFetching, error } = useFetch({\n        fetchOptions: useMemo(() => ({ enabled: !!signToSActionDetails && shouldRedirectToToS }), [signToSActionDetails, shouldRedirectToToS]),\n        queryFn: fetchCallback,\n    });\n\n    useEffect(() => {\n        const url = data?.url;\n        if (url) {\n            setTopWindowHref(url);\n        }\n    }, [data, shouldRedirectToToS]);\n\n    return error ? (\n        <Alert\n            className={className}\n            type={AlertTypeOption.CRITICAL}\n            title={i18n.get('somethingWentWrongTryRefreshingOrComeBackLater')}\n            description={\n                <Button className={GRANT_ACTION_CLASS_NAMES.button} onClick={updateCore}>\n                    {i18n.get('refresh')}\n                </Button>\n            }\n        />\n    ) : (\n        <Alert\n            className={className}\n            type={AlertTypeOption.WARNING}\n            title={`${i18n.get('capital.signTermsAndConditionsToReceiveFunds')}${\n                offerExpiresAt\n                    ? ` ${i18n.get('capital.thisOfferExpiresOn', {\n                          values: {\n                              date: dateFormat(offerExpiresAt, DATE_FORMAT_CAPITAL_OVERVIEW),\n                          },\n                      })}`\n                    : ''\n            }`}\n            description={\n                <Button\n                    className={GRANT_ACTION_CLASS_NAMES.button}\n                    onClick={() => setShouldRedirectToToS(true)}\n                    disabled={isFetching}\n                    state={isFetching ? 'loading' : undefined}\n                >\n                    {i18n.get('capital.goToTermsAndConditions')}\n                </Button>\n            }\n        />\n    );\n};\n","import { FunctionalComponent } from 'preact';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport cx from 'classnames';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport useTimezoneAwareDateFormatting from '../../../../../hooks/useTimezoneAwareDateFormatting';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../../../../internal/Typography/types';\nimport { Tag } from '../../../../internal/Tag/Tag';\nimport ProgressBar from '../../../../internal/ProgressBar';\nimport { DATE_FORMAT_CAPITAL_OVERVIEW } from '../../../../../constants';\nimport { GRANT_ITEM_CLASS_NAMES } from './constants';\nimport { getGrantConfig } from './utils';\nimport { GrantItemProps } from './types';\nimport './GrantItem.scss';\nimport { GrantDetails } from '../GrantDetails/GrantDetails';\nimport { GrantAction } from '../GrantAction/GrantAction';\nimport CopyText from '../../../../internal/CopyText/CopyText';\nimport { Tooltip } from '../../../../internal/Tooltip/Tooltip';\nimport Alert from '../../../../internal/Alert/Alert';\nimport Button from '../../../../internal/Button';\nimport { AlertTypeOption } from '../../../../internal/Alert/types';\nimport { ButtonVariant } from '../../../../internal/Button/types';\nimport ExpandableCard from '../../../../internal/ExpandableCard/ExpandableCard';\n\nexport const GrantItem: FunctionalComponent<GrantItemProps> = ({ grant, showDetails }) => {\n    const { i18n } = useCoreContext();\n    const { dateFormat } = useTimezoneAwareDateFormatting();\n    const grantConfig = useMemo(() => getGrantConfig(grant), [grant]);\n    const showUnscheduledRepaymentAccounts = useCallback(() => showDetails?.('unscheduledRepayment'), [showDetails]);\n\n    const grantOverview = useMemo(\n        () => (\n            <div className={GRANT_ITEM_CLASS_NAMES.cardContent}>\n                <div className={GRANT_ITEM_CLASS_NAMES.statusContainer}>\n                    <Typography\n                        variant={TypographyVariant.CAPTION}\n                        className={cx({ [GRANT_ITEM_CLASS_NAMES.textSecondary]: grantConfig.isLabelColorSecondary })}\n                        testId={'grant-amount-label'}\n                    >\n                        {i18n.get(grantConfig.amountLabelKey)}\n                    </Typography>\n                    <div>\n                        {grant.status === 'Active' ? (\n                            <>\n                                <Typography variant={TypographyVariant.CAPTION} el={TypographyElement.SPAN}>\n                                    {i18n.get('capital.termEnds')}\n                                </Typography>\n                                <Typography variant={TypographyVariant.CAPTION} stronger el={TypographyElement.SPAN}>\n                                    {dateFormat(grantConfig.repaymentPeriodEndDate, DATE_FORMAT_CAPITAL_OVERVIEW)}\n                                </Typography>\n                            </>\n                        ) : grantConfig.statusKey ? (\n                            grantConfig.statusTooltipKey ? (\n                                <Tooltip content={i18n.get(grantConfig.statusTooltipKey)}>\n                                    <div>\n                                        <Tag label={i18n.get(grantConfig.statusKey)} variant={grantConfig.statusTagVariant} />\n                                    </div>\n                                </Tooltip>\n                            ) : (\n                                <Tag label={i18n.get(grantConfig.statusKey)} variant={grantConfig.statusTagVariant} />\n                            )\n                        ) : null}\n                    </div>\n                </div>\n                <Typography\n                    variant={TypographyVariant.TITLE}\n                    medium\n                    className={cx({\n                        [GRANT_ITEM_CLASS_NAMES.textSecondary]: grantConfig.isAmountColorSecondary,\n                    })}\n                >\n                    {i18n.amount(grantConfig.amount.value, grantConfig.amount.currency)}\n                </Typography>\n                {grantConfig.isProgressBarVisible && (\n                    <ProgressBar\n                        className={GRANT_ITEM_CLASS_NAMES.progressBar}\n                        value={grant.repaidTotalAmount.value}\n                        max={grant.totalAmount.value}\n                        labels={{ current: i18n.get('capital.repaid'), max: i18n.get('capital.remaining') }}\n                        tooltips={{\n                            remaining: `${i18n.amount(grant.remainingTotalAmount.value, grant.remainingTotalAmount.currency)} ${i18n\n                                .get('capital.remaining')\n                                ?.toLowerCase()}`,\n                            progress: `${i18n.amount(grant.repaidTotalAmount.value, grant.repaidTotalAmount.currency)} ${i18n\n                                .get('capital.repaid')\n                                ?.toLowerCase()}`,\n                        }}\n                    />\n                )}\n                {grantConfig.isGrantIdVisible ? (\n                    <div className={GRANT_ITEM_CLASS_NAMES.grantID}>\n                        <CopyText\n                            textToCopy={grant.id}\n                            buttonLabel={i18n.get('capital.grantID')}\n                            isHovered\n                            type={'Text'}\n                            data-testid=\"grant-id-copy-text\"\n                        />\n                    </div>\n                ) : null}\n                {grantConfig.hasAlerts ? (\n                    <>\n                        {grant.missingActions && grant.missingActions.length ? (\n                            grant.missingActions.map(action => (\n                                <GrantAction\n                                    key={action.type}\n                                    action={action}\n                                    className={GRANT_ITEM_CLASS_NAMES.alert}\n                                    offerExpiresAt={grant.offerExpiresAt}\n                                />\n                            ))\n                        ) : (\n                            <Alert\n                                className={GRANT_ITEM_CLASS_NAMES.alert}\n                                type={AlertTypeOption.HIGHLIGHT}\n                                title={i18n.get('capital.weReceivedYourRequestAndWeAreWorkingOnItNowCheckBackSoon')}\n                            />\n                        )}\n                    </>\n                ) : (\n                    grantConfig.hasUnscheduledRepaymentDetails && (\n                        <div className={GRANT_ITEM_CLASS_NAMES.actionsBar}>\n                            <Button\n                                onClick={showUnscheduledRepaymentAccounts}\n                                className={GRANT_ITEM_CLASS_NAMES.mainActionBtn}\n                                variant={ButtonVariant.SECONDARY}\n                                fullWidth\n                            >\n                                {i18n.get('capital.sendRepayment')}\n                            </Button>\n                        </div>\n                    )\n                )}\n            </div>\n        ),\n        [i18n, dateFormat, grant, grantConfig, showUnscheduledRepaymentAccounts]\n    );\n\n    return (\n        <div className={GRANT_ITEM_CLASS_NAMES.base}>\n            <ExpandableCard renderHeader={grantOverview} filled={grantConfig.isBackgroundFilled} inFlow>\n                {grantConfig.hasDetails && <GrantDetails grant={grant} />}\n            </ExpandableCard>\n        </div>\n    );\n};\n","export const GRANT_ADJUSTMENT_DETAILS = {\n    revocation: 'revocation',\n    unscheduledRepayment: 'unscheduledRepayment',\n} as const;\n","import { FunctionalComponent, h } from 'preact';\nimport CopyText from '../../../../internal/CopyText/CopyText';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../../../../internal/Typography/types';\nimport { TranslationKey } from '../../../../../translations';\n\ntype _ClassNameProp = h.JSX.HTMLAttributes['className'];\n\nexport type AccountDetailProps = {\n    className?: _ClassNameProp;\n    content: string;\n    contentClassName?: _ClassNameProp;\n    textToCopy?: string;\n    label: TranslationKey;\n    labelClassName?: _ClassNameProp;\n};\n\nexport const AccountDetail: FunctionalComponent<AccountDetailProps> = ({\n    className,\n    content,\n    contentClassName,\n    textToCopy,\n    label,\n    labelClassName,\n}) => {\n    const { i18n } = useCoreContext();\n    return (\n        <div className={className}>\n            <dt className={labelClassName}>\n                <Typography el={TypographyElement.SPAN} variant={TypographyVariant.CAPTION}>\n                    {i18n.get(label)}\n                </Typography>\n            </dt>\n            <dd className={contentClassName}>\n                {textToCopy ? (\n                    <CopyText buttonLabel={content} textToCopy={textToCopy} showCopyTextTooltip={false} type=\"Text\" />\n                ) : (\n                    <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY}>\n                        {content}\n                    </Typography>\n                )}\n            </dd>\n        </div>\n    );\n};\n","import { TranslationKey } from '../../../../../translations';\n\nconst getHumanReadableIban = (iban: string, useNonBreakingSpaces = true) => {\n    const spaceSeparator = useNonBreakingSpaces ? ' ' : ' ';\n    const ibanWithoutSpaces = iban.replace(/\\s+/g, '');\n    return ibanWithoutSpaces.replace(/([A-Z\\d]{4}(?!$))/gi, `$1${spaceSeparator}`);\n};\n\nconst isCopyableAccountField = (field: string): boolean => {\n    switch (field) {\n        // Explicit list of copyable account fields\n        case 'iban':\n        case 'accountNumber':\n        case 'routingNumber':\n        case 'sortCode':\n            return true;\n\n        // Explicit list of non-copyable account fields\n        // Items can be moved from this list to the list of copyable fields if necessary\n        // The `region` field and other unknown fields (default case) are also considered non-copyable\n        case 'region':\n        default:\n            return false;\n    }\n};\n\nexport const getAccountFieldTextToCopy = (field: string, value?: string): string | undefined => {\n    return isCopyableAccountField(field) ? value : undefined;\n};\n\nexport const getAccountFieldFormattedValue = (field: string, value?: string) => {\n    switch (field) {\n        case 'iban':\n            return value && getHumanReadableIban(value);\n        default:\n            return value;\n    }\n};\n\nexport const getAccountFieldTranslationKey = (field: string): TranslationKey => {\n    switch (field) {\n        case 'region':\n            return 'capital.bankCountryOrRegion';\n        case 'iban':\n            return 'capital.bankAccountIban';\n        case 'accountNumber':\n            return 'capital.bankAccountNumber';\n        case 'routingNumber':\n            return 'capital.bankRoutingNumber';\n        case 'sortCode':\n            return 'capital.bankSortCode';\n        default:\n            return field as TranslationKey;\n    }\n};\n","import cx from 'classnames';\nimport { useMemo } from 'preact/hooks';\nimport { AccountDetail } from './AccountDetail';\nimport { Fragment, FunctionalComponent, h } from 'preact';\nimport { AccountDetailsProps, BankAccountField } from './types';\nimport { getAccountFieldFormattedValue, getAccountFieldTextToCopy, getAccountFieldTranslationKey } from './utils';\nimport './AccountDetails.scss';\n\nconst BASE_CLASS = 'adyen-pe-capital-account-details';\n\nconst CLASS_NAMES = {\n    detail: `${BASE_CLASS}__detail`,\n    detailContent: `${BASE_CLASS}__detail-content`,\n    detailLabel: `${BASE_CLASS}__detail-label`,\n};\n\nexport const AccountDetails: FunctionalComponent<AccountDetailsProps> = ({ bankAccount, className }) => {\n    const orderedBankAccountFields = useMemo(() => {\n        const { accountNumber, iban, order, region, ...accountDetails } = bankAccount;\n        const accountFields = Object.keys({ iban, accountNumber, ...accountDetails, region });\n        const orderedFields = Array.isArray(order) ? order.filter(field => accountFields.includes(field)) : accountFields;\n        return [...new Set(orderedFields)];\n    }, [bankAccount]);\n\n    return (\n        <dl className={cx(BASE_CLASS, className)}>\n            {orderedBankAccountFields.map(field => {\n                const fieldValue = bankAccount[field as BankAccountField];\n                return fieldValue ? (\n                    <Fragment key={field}>\n                        <AccountDetail\n                            className={CLASS_NAMES.detail}\n                            contentClassName={CLASS_NAMES.detailContent}\n                            labelClassName={CLASS_NAMES.detailLabel}\n                            label={getAccountFieldTranslationKey(field)}\n                            content={getAccountFieldFormattedValue(field, fieldValue)!}\n                            textToCopy={getAccountFieldTextToCopy(field, fieldValue)}\n                        />\n                    </Fragment>\n                ) : null;\n            })}\n        </dl>\n    );\n};\n","import cx from 'classnames';\nimport { FunctionalComponent, h } from 'preact';\nimport type { TranslationKey } from '../../../../../translations';\nimport type { GrantAdjustmentDetailsProps } from './types';\nimport './GrantAdjustmentDetails.scss';\nimport { Header } from '../../../../internal/Header';\nimport Button from '../../../../internal/Button/Button';\nimport { ButtonVariant } from '../../../../internal/Button/types';\nimport Icon from '../../../../internal/Icon';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\n\nexport interface GrantAdjustmentDetailsComponentProps\n    extends Pick<GrantAdjustmentDetailsProps, 'onDetailsClose'>,\n        Pick<h.JSX.HTMLAttributes, 'className'> {\n    headerTitleKey?: TranslationKey;\n    headerSubtitleKey?: TranslationKey;\n}\n\nexport const GrantAdjustmentDetails: FunctionalComponent<GrantAdjustmentDetailsComponentProps> = ({\n    children,\n    className,\n    headerTitleKey,\n    headerSubtitleKey,\n    onDetailsClose,\n}) => {\n    const { i18n } = useCoreContext();\n\n    return (\n        <div className={cx('adyen-pe-grant-adjustment-details', className)}>\n            <Header titleKey={headerTitleKey} subtitleKey={headerSubtitleKey}>\n                <Button\n                    onClick={onDetailsClose}\n                    variant={ButtonVariant.TERTIARY}\n                    iconButton\n                    classNameModifiers={['circle']}\n                    aria-label={i18n.get('dismiss')}\n                >\n                    <Icon name=\"cross\" />\n                </Button>\n            </Header>\n            {children}\n        </div>\n    );\n};\n","import { FunctionalComponent } from 'preact';\nimport { useMemo } from 'preact/hooks';\nimport { Translation } from '../../../../internal/Translation';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport InfoBox from '../../../../internal/InfoBox';\nimport type { GrantAdjustmentDetailsProps } from '../GrantAdjustmentDetails/types';\nimport Typography from '../../../../internal/Typography/Typography';\nimport { TypographyElement, TypographyVariant } from '../../../../internal/Typography/types';\nimport { AccountDetails } from '../AccountDetails/AccountDetails';\nimport { GrantAdjustmentDetails } from '../GrantAdjustmentDetails/GrantAdjustmentDetails';\nimport './GrantRepaymentDetails.scss';\n\nconst BASE_CLASS = 'adyen-pe-grant-repayment-details';\n\nconst CLASS_NAMES = {\n    balanceInfo: `${BASE_CLASS}__balance-info`,\n    repaymentInfo: `${BASE_CLASS}__repayment-info`,\n    repaymentAccount: `${BASE_CLASS}__repayment-account`,\n    repaymentNotice: `${BASE_CLASS}__repayment-notice`,\n};\n\nexport const GrantRepaymentDetails: FunctionalComponent<GrantAdjustmentDetailsProps> = ({ grant, onDetailsClose }) => {\n    const { i18n } = useCoreContext();\n\n    const bankAccount = useMemo(() => {\n        // There can be more than one unscheduled repayment account, however, we are only showing the first one.\n        // If there be any need to show the rest of them in the future, some updates will be required.\n        return grant.unscheduledRepaymentAccounts?.[0];\n    }, [grant.unscheduledRepaymentAccounts]);\n\n    const formattedRemainingAmount = useMemo(() => {\n        const { currency, value } = grant.remainingTotalAmount;\n        return i18n.amount(value, currency);\n    }, [i18n, grant.remainingTotalAmount]);\n\n    return bankAccount ? (\n        <GrantAdjustmentDetails\n            className={BASE_CLASS}\n            onDetailsClose={onDetailsClose}\n            headerTitleKey=\"capital.sendRepayment\"\n            headerSubtitleKey=\"capital.sendRepaymentSubtitle\"\n        >\n            <div className={CLASS_NAMES.repaymentInfo}>\n                <section className={CLASS_NAMES.repaymentAccount}>\n                    <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY} stronger>\n                        {i18n.get('capital.bankAccountDetails')}\n                    </Typography>\n                    <AccountDetails bankAccount={bankAccount} />\n                </section>\n                <section className={CLASS_NAMES.repaymentNotice}>\n                    <Typography el={TypographyElement.PARAGRAPH} variant={TypographyVariant.CAPTION}>\n                        {i18n.get('capital.sendRepaymentNotice')}\n                    </Typography>\n                </section>\n            </div>\n            <InfoBox className={CLASS_NAMES.balanceInfo}>\n                <Typography variant={TypographyVariant.BODY}>\n                    <Translation\n                        translationKey=\"capital.repaymentBalanceInfo\"\n                        fills={{\n                            amount: (\n                                <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY} strongest>\n                                    {formattedRemainingAmount}\n                                </Typography>\n                            ),\n                        }}\n                    />\n                </Typography>\n            </InfoBox>\n        </GrantAdjustmentDetails>\n    ) : null;\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { InteractionKeyCode } from '../components/types';\nimport { uniqueId as _uniqueId } from '../utils';\n\nexport type TabbedControlOptions = readonly { id: string }[];\nexport type TabbedControlOptionId<T extends TabbedControlOptions> = T[number] extends { id: infer U } ? U : never;\n\nexport interface TabbedControlConfig<T extends TabbedControlOptions> {\n    defaultOption?: TabbedControlOptionId<T>;\n    options: T;\n}\n\nconst enum TabDirection {\n    BACKWARD = -1,\n    FORWARD = 1,\n}\n\nconst findDefaultOptionIndex = <T extends TabbedControlOptions>(\n    options: TabbedControlConfig<T>['options'],\n    defaultOption?: TabbedControlConfig<T>['defaultOption']\n) => {\n    if (!defaultOption) return 0;\n    const defaultOptionIndex = options.findIndex(option => option.id === defaultOption);\n    return defaultOptionIndex === -1 ? 0 : defaultOptionIndex;\n};\n\nexport const useTabbedControl = <T extends TabbedControlOptions>(\n    options: TabbedControlConfig<T>['options'],\n    defaultOption?: TabbedControlConfig<T>['defaultOption']\n) => {\n    const [focusPending, setFocusPending] = useState(false);\n    const [activeIndex, setActiveIndex] = useState(findDefaultOptionIndex(options, defaultOption));\n    const optionElementsRef = useRef<(HTMLButtonElement | null)[]>([]);\n    const uniqueId = useRef(_uniqueId().replace(/.*?(?=\\d+$)/, '')).current;\n\n    const numberOfOptions = options.length;\n\n    const refs = useMemo(() => {\n        const refs = [] as ((el: HTMLButtonElement | null) => any)[];\n        for (let i = 0; i < numberOfOptions; i++) {\n            refs[i] = el => (optionElementsRef.current[i] = el);\n        }\n        return refs;\n    }, [numberOfOptions]);\n\n    const getNearestActiveIndex = useCallback(\n        (index: number, direction: TabDirection) => {\n            let currentIndex = index;\n            do {\n                if (currentIndex < 0) currentIndex += numberOfOptions;\n                if (currentIndex >= numberOfOptions) currentIndex %= numberOfOptions;\n                if (optionElementsRef.current[currentIndex]?.disabled === false) break;\n            } while ((currentIndex += direction) !== index);\n\n            return currentIndex;\n        },\n        [numberOfOptions]\n    );\n\n    const onClick = useCallback((event: MouseEvent) => {\n        const clickedOptionIndex = optionElementsRef.current.findIndex(elem => elem === event.currentTarget);\n\n        if (optionElementsRef.current[clickedOptionIndex]?.disabled === false) {\n            event.preventDefault();\n            setActiveIndex(clickedOptionIndex);\n        }\n    }, []);\n\n    const onKeyDown = useMemo(() => {\n        const keyMap: Record<KeyboardEvent['key'], () => void> = {\n            [InteractionKeyCode.ARROW_LEFT]: () => setActiveIndex(activeIndex => getNearestActiveIndex(activeIndex - 1, TabDirection.BACKWARD)),\n            [InteractionKeyCode.ARROW_RIGHT]: () => setActiveIndex(activeIndex => getNearestActiveIndex(activeIndex + 1, TabDirection.FORWARD)),\n            [InteractionKeyCode.HOME]: () => setActiveIndex(getNearestActiveIndex(0, TabDirection.FORWARD)),\n            [InteractionKeyCode.END]: () => setActiveIndex(getNearestActiveIndex(numberOfOptions - 1, TabDirection.BACKWARD)),\n        };\n\n        return (event: KeyboardEvent) => {\n            if (keyMap[event.key]) {\n                event.preventDefault();\n                keyMap[event.key]?.();\n                setFocusPending(true);\n            }\n        };\n    }, [numberOfOptions]);\n\n    useEffect(() => {\n        if (focusPending) {\n            const optionElement = optionElementsRef.current[activeIndex];\n            if (optionElement?.disabled === false) optionElement?.focus();\n            setFocusPending(false);\n        }\n    }, [activeIndex, focusPending]);\n\n    return { activeIndex, onClick, onKeyDown, refs, uniqueId } as const;\n};\n\nexport default useTabbedControl;\n","import { SegmentedControlItem, SegmentedControlProps } from './types';\nimport { TypographyElement, TypographyVariant } from '../Typography/types';\nimport useCoreContext from '../../../core/Context/useCoreContext';\nimport useTabbedControl from '../../../hooks/useTabbedControl';\nimport Typography from '../Typography/Typography';\nimport './SegmentedControl.scss';\n\nfunction SegmentedControl<T extends SegmentedControlItem[]>({ defaultItem, items }: SegmentedControlProps<T>) {\n    const { activeIndex, onClick, onKeyDown, refs, uniqueId } = useTabbedControl(items, defaultItem);\n    const { i18n } = useCoreContext();\n    return (\n        <div>\n            <div role=\"radiogroup\" className=\"adyen-fp-segmented-control\">\n                {items.map((item, index) => {\n                    const isActive = activeIndex === index;\n                    return (\n                        <button\n                            role=\"radio\"\n                            name={item.id}\n                            ref={refs[index]}\n                            key={`item:${uniqueId}-${item.id}`}\n                            id={`item:${uniqueId}-${item.id}`}\n                            className=\"adyen-fp-segmented-control__item\"\n                            aria-checked={isActive}\n                            aria-controls={`segment:${uniqueId}-${item.id}`}\n                            onClick={isActive ? undefined : onClick}\n                            onKeyDown={onKeyDown}\n                            disabled={item.disabled}\n                            tabIndex={isActive ? 0 : -1}\n                        >\n                            <Typography\n                                el={TypographyElement.SPAN}\n                                variant={TypographyVariant.BODY}\n                                className=\"adyen-fp-segmented-control__item-label\"\n                                stronger\n                            >\n                                {i18n.get(item.label)}\n                            </Typography>\n                        </button>\n                    );\n                })}\n            </div>\n            <div className=\"adyen-fp-segmented-content-container\">\n                {items.map((item, index) => (\n                    <section\n                        key={`segment:${uniqueId}-${item.id}`}\n                        id={`segment:${uniqueId}-${item.id}`}\n                        className=\"adyen-fp-segmented-content\"\n                        aria-labelledby={`item:${uniqueId}-${item.id}`}\n                        hidden={activeIndex !== index}\n                    >\n                        {item.content}\n                    </section>\n                ))}\n            </div>\n        </div>\n    );\n}\n\nexport default SegmentedControl;\n","import { IGrant } from '../../../../../types';\nimport { BaseList } from '../../../../internal/BaseList/BaseList';\nimport { GrantItem } from '../GrantItem/GrantItem';\nimport { getGrantConfig } from '../GrantItem/utils';\nimport { FunctionalComponent } from 'preact';\nimport { GrantsProps } from './types';\nimport { GRANT_ADJUSTMENT_DETAILS } from '../GrantAdjustmentDetails/constants';\nimport { GrantAdjustmentDetail, GrantAdjustmentDetailCallback } from '../GrantAdjustmentDetails/types';\nimport { GrantRepaymentDetails } from '../GrantRepaymentDetails/GrantRepaymentDetails';\nimport SegmentedControl from '../../../../internal/SegmentedControl/SegmentedControl';\nimport useCoreContext from '../../../../../core/Context/useCoreContext';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport { CapitalHeader } from '../../../../internal/CapitalHeader';\nimport Button from '../../../../internal/Button/Button';\nimport { ButtonVariant } from '../../../../internal/Button/types';\n\nconst List = ({ grants, showDetails }: { grants: IGrant[]; showDetails: GrantAdjustmentDetailCallback }) => {\n    return (\n        <BaseList classNames={'adyen-pe-grant-list__items'}>\n            {grants.map(grant => (\n                <li key={grant.id}>\n                    <GrantItem grant={grant} showDetails={showDetails.bind(null, grant)} />\n                </li>\n            ))}\n        </BaseList>\n    );\n};\n\nexport const GrantsDisplay: FunctionalComponent<GrantsProps> = ({ grantList, hideTitle, newOfferAvailable, onNewOfferRequest }) => {\n    const [selectedGrantDetail, setSelectedGrantDetail] = useState<GrantAdjustmentDetail>();\n    const [selectedGrant, setSelectedGrant] = useState<IGrant>();\n    const { i18n } = useCoreContext();\n\n    const [activeGrants, inactiveGrants] = useMemo(() => {\n        const active: IGrant[] = [];\n        const inactive: IGrant[] = [];\n\n        grantList?.forEach(grant => {\n            if (grant.status === 'Active' || grant.status === 'Pending') {\n                active.push(grant);\n            } else {\n                inactive.push(grant);\n            }\n        });\n\n        return [active, inactive];\n    }, [grantList]);\n\n    const displayMode = useMemo<'UnifiedGrants' | 'SegmentedGrants'>(() => {\n        if (grantList.length > 1 && activeGrants.length && inactiveGrants.length) return 'SegmentedGrants';\n        return 'UnifiedGrants';\n    }, [activeGrants.length, grantList.length, inactiveGrants.length]);\n\n    const showNewOfferButton = useMemo(() => {\n        return newOfferAvailable && !activeGrants.some(grant => grant.status === 'Pending');\n    }, [activeGrants, newOfferAvailable]);\n\n    const selectedGrantConfig = useMemo(() => selectedGrant && getGrantConfig(selectedGrant), [selectedGrant]);\n\n    const hideGrantDetails = useCallback(() => setSelectedGrantDetail(undefined), []);\n\n    const showGrantDetails = useCallback<GrantAdjustmentDetailCallback>((grant, detail) => {\n        setSelectedGrantDetail(detail);\n        setSelectedGrant(grant);\n    }, []);\n\n    if (selectedGrant) {\n        switch (selectedGrantDetail) {\n            case GRANT_ADJUSTMENT_DETAILS.unscheduledRepayment: {\n                if (selectedGrantConfig?.hasUnscheduledRepaymentDetails) {\n                    return <GrantRepaymentDetails grant={selectedGrant} onDetailsClose={hideGrantDetails} />;\n                }\n                break;\n            }\n\n            // The grant revocation account details is currently not ready to be rendered.\n            // A future iteration of this component might include revocation account details.\n            // Only then should the following lines be uncommented.\n            //\n            // case GRANT_DETAILS_VIEWS.revocation:\n            //     if (selectedGrantConfig?.hasRevocationDetails) {\n            //         return <GrantRevocationDetails grant={selectedGrant} onDetailsClose={hideGrantDetailsView} />;\n            //     }\n            //     break;\n        }\n    }\n\n    return (\n        <div className=\"adyen-pe-grant-list\">\n            <div className=\"adyen-pe-grant-list__header-container\">\n                <CapitalHeader hideTitle={hideTitle} titleKey={'capital.businessFinancing'} />\n                {showNewOfferButton ? (\n                    <Button onClick={onNewOfferRequest} className={'adyen-pe-grant-list__offer-button'} variant={ButtonVariant.SECONDARY}>\n                        {i18n.get('capital.seeNewOffer')}\n                    </Button>\n                ) : null}\n            </div>\n\n            {displayMode === 'UnifiedGrants' && <List grants={grantList} showDetails={showGrantDetails} />}\n            {displayMode === 'SegmentedGrants' && (\n                <SegmentedControl\n                    items={[\n                        {\n                            label: 'capital.inProgress',\n                            content: <List grants={activeGrants} showDetails={showGrantDetails} />,\n                            id: 'active',\n                        },\n                        {\n                            label: 'capital.closed',\n                            content: <List grants={inactiveGrants} showDetails={showGrantDetails} />,\n                            id: 'inactive',\n                        },\n                    ]}\n                    defaultItem={'active'}\n                />\n            )}\n        </div>\n    );\n};\n","import { FunctionalComponent } from 'preact';\nimport { GrantListProps } from './types';\nimport './GrantList.scss';\nimport { useCallback, useState } from 'preact/hooks';\nimport { CapitalOffer } from '../../../CapitalOffer/components/CapitalOffer/CapitalOffer';\nimport { GrantsDisplay } from './GrantsDisplay';\nimport { IGrant } from '../../../../../types';\n\nexport const GrantList: FunctionalComponent<GrantListProps> = ({\n    externalDynamicOffersConfig,\n    grantList,\n    newOfferAvailable,\n    onFundsRequest,\n    onGrantListUpdateRequest,\n    onOfferDismiss,\n}) => {\n    const [isCapitalOfferVisible, setIsCapitalOfferVisible] = useState<boolean>(false);\n\n    const goBackToPreviousStep = useCallback(() => setIsCapitalOfferVisible(false), []);\n    const goToNextStep = useCallback(() => setIsCapitalOfferVisible(true), []);\n\n    const goBackToList = useCallback(() => {\n        onOfferDismiss ? onOfferDismiss(goBackToPreviousStep) : goBackToPreviousStep();\n    }, [goBackToPreviousStep, onOfferDismiss]);\n\n    const handleFundsRequest = useCallback(\n        (data: IGrant) => {\n            if (onFundsRequest) {\n                onFundsRequest(data);\n            } else {\n                onGrantListUpdateRequest(data);\n                setIsCapitalOfferVisible(false);\n            }\n        },\n        [onFundsRequest, onGrantListUpdateRequest]\n    );\n\n    return (\n        <>\n            {isCapitalOfferVisible ? (\n                <CapitalOffer\n                    externalDynamicOffersConfig={externalDynamicOffersConfig}\n                    onFundsRequest={handleFundsRequest}\n                    onOfferDismiss={goBackToList}\n                />\n            ) : (\n                <GrantsDisplay grantList={grantList} newOfferAvailable={newOfferAvailable} onNewOfferRequest={goToNextStep} />\n            )}\n        </>\n    );\n};\n","import { useCallback, useMemo, useState } from 'preact/hooks';\nimport { isCapitalRegionSupported } from '../../../../internal/CapitalHeader/helpers';\nimport { ExternalUIComponentProps } from '../../../../types';\nimport { CapitalErrorMessageDisplay } from '../../../CapitalOffer/components/utils/CapitalErrorMessageDisplay';\nimport { CapitalOverviewProps } from '../../types';\nimport { CAPITAL_OVERVIEW_CLASS_NAMES } from '../../constants';\nimport { FunctionalComponent } from 'preact';\nimport { useConfigContext } from '../../../../../core/ConfigContext';\nimport { useFetch } from '../../../../../hooks/useFetch';\nimport { EMPTY_OBJECT } from '../../../../../utils';\nimport { CapitalHeader } from '../../../../internal/CapitalHeader';\nimport { IGrant } from '../../../../../types';\nimport './CapitalOverview.scss';\nimport Unqualified from '../Unqualified';\nimport { PreQualified } from '../PreQualified/PreQualified';\nimport { GrantList } from '../GrantList/GrantList';\nimport { ErrorMessageDisplay } from '../../../../internal/ErrorMessageDisplay/ErrorMessageDisplay';\nimport { getCapitalErrorMessage } from '../../../../utils/capital/getCapitalErrorMessage';\nimport AdyenPlatformExperienceError from '../../../../../core/Errors/AdyenPlatformExperienceError';\n\ntype CapitalOverviewState = 'Loading' | 'Error' | 'Unqualified' | 'PreQualified' | 'GrantList' | 'UnsupportedRegion';\n\nexport const CapitalOverview: FunctionalComponent<ExternalUIComponentProps<CapitalOverviewProps>> = ({\n    hideTitle,\n    onContactSupport,\n    onFundsRequest,\n    onOfferDismiss,\n    onOfferOptionsRequest,\n    skipPreQualifiedIntro,\n}) => {\n    const legalEntity = useConfigContext()?.extraConfig?.legalEntity;\n    const isRegionSupported = useMemo(() => isCapitalRegionSupported(legalEntity), [legalEntity]);\n\n    const { getGrants: grantsEndpointCall, getDynamicGrantOffersConfiguration: dynamicConfigurationEndpointCall } = useConfigContext().endpoints;\n\n    const grantsQuery = useFetch({\n        fetchOptions: { enabled: !!grantsEndpointCall && isRegionSupported },\n        queryFn: useCallback(async () => {\n            return grantsEndpointCall?.(EMPTY_OBJECT);\n        }, [grantsEndpointCall]),\n    });\n\n    const dynamicOfferQuery = useFetch({\n        fetchOptions: { enabled: !!dynamicConfigurationEndpointCall && isRegionSupported },\n        queryFn: useCallback(async () => {\n            return dynamicConfigurationEndpointCall?.(EMPTY_OBJECT);\n        }, [dynamicConfigurationEndpointCall]),\n    });\n\n    const dynamicOffer = dynamicOfferQuery.data;\n\n    const [requestedGrant, setRequestedGrant] = useState<IGrant>();\n    const grantList = useMemo(\n        () => (requestedGrant ? [requestedGrant, ...(grantsQuery.data?.data || [])] : grantsQuery.data?.data),\n        [grantsQuery.data?.data, requestedGrant]\n    );\n\n    const handlePreQualifiedFundsRequest = useCallback(\n        (data: IGrant) => {\n            onFundsRequest ? onFundsRequest(data) : setRequestedGrant(data);\n        },\n        [onFundsRequest]\n    );\n\n    const showError = useMemo(() => {\n        if (dynamicOfferQuery.error && grantsQuery.error) return true;\n        if (dynamicOfferQuery.error && !grantList?.length) return true;\n        return false;\n    }, [dynamicOfferQuery.error, grantList?.length, grantsQuery.error]);\n\n    const state = useMemo<CapitalOverviewState>(() => {\n        if (!isRegionSupported) {\n            return 'UnsupportedRegion';\n        } else if (showError) {\n            return 'Error';\n        } else if (\n            (!grantsEndpointCall && !dynamicConfigurationEndpointCall) ||\n            (!dynamicOffer && !grantList) ||\n            grantsQuery.isFetching ||\n            dynamicOfferQuery.isFetching\n        ) {\n            return 'Loading';\n        } else if (grantList?.length) {\n            return 'GrantList';\n        } else if (dynamicOffer?.maxAmount && dynamicOffer?.minAmount) {\n            return 'PreQualified';\n        }\n        return 'Unqualified';\n    }, [\n        dynamicConfigurationEndpointCall,\n        dynamicOffer,\n        dynamicOfferQuery.isFetching,\n        grantList,\n        grantsEndpointCall,\n        grantsQuery.isFetching,\n        showError,\n        isRegionSupported,\n    ]);\n\n    const newOfferAvailable = useMemo(() => !!(dynamicOffer && dynamicOffer.minAmount && dynamicOffer.maxAmount), [dynamicOffer]);\n\n    return (\n        <div className={CAPITAL_OVERVIEW_CLASS_NAMES.base}>\n            {(() => {\n                switch (state) {\n                    case 'Loading':\n                        return (\n                            <div className={CAPITAL_OVERVIEW_CLASS_NAMES.skeletonContainer}>\n                                <div className={CAPITAL_OVERVIEW_CLASS_NAMES.headerSkeleton}></div>\n                                <div className={CAPITAL_OVERVIEW_CLASS_NAMES.skeleton}></div>\n                            </div>\n                        );\n                    case 'Error':\n                        return (\n                            <div className={CAPITAL_OVERVIEW_CLASS_NAMES.errorContainer}>\n                                <CapitalHeader hideTitle={hideTitle} titleKey={'capital.businessFinancing'} />\n                                <ErrorMessageDisplay\n                                    absolutePosition={false}\n                                    outlined={false}\n                                    withImage\n                                    onContactSupport={onContactSupport}\n                                    {...getCapitalErrorMessage(dynamicOfferQuery.error as AdyenPlatformExperienceError, onContactSupport)}\n                                />\n                            </div>\n                        );\n                    case 'GrantList':\n                        return (\n                            grantList && (\n                                <GrantList\n                                    externalDynamicOffersConfig={dynamicOffer}\n                                    grantList={grantList}\n                                    hideTitle={hideTitle}\n                                    newOfferAvailable={newOfferAvailable}\n                                    onFundsRequest={onFundsRequest}\n                                    onGrantListUpdateRequest={setRequestedGrant}\n                                    onOfferDismiss={onOfferDismiss}\n                                />\n                            )\n                        );\n                    case 'PreQualified':\n                        return (\n                            <PreQualified\n                                onOfferDismiss={onOfferDismiss}\n                                onOfferOptionsRequest={onOfferOptionsRequest}\n                                skipPreQualifiedIntro={skipPreQualifiedIntro}\n                                hideTitle={hideTitle}\n                                dynamicOffer={dynamicOffer!}\n                                onFundsRequest={handlePreQualifiedFundsRequest}\n                            />\n                        );\n                    case 'Unqualified':\n                        return <Unqualified hideTitle={hideTitle} />;\n                    case 'UnsupportedRegion':\n                        return (\n                            <div className={CAPITAL_OVERVIEW_CLASS_NAMES.errorContainer}>\n                                <CapitalHeader hideTitle={hideTitle} titleKey={'capital.businessFinancing'} />\n                                <CapitalErrorMessageDisplay unsupportedRegion />\n                            </div>\n                        );\n                    default:\n                        return null;\n                }\n            })()}\n        </div>\n    );\n};\n","import { isCapitalRegionSupported } from '../../internal/CapitalHeader/helpers';\nimport { _UIComponentProps, ExternalComponentType } from '../../types';\nimport UIElement from '../UIElement/UIElement';\nimport { CapitalComponentState, CapitalOverviewProps } from './types';\nimport { CapitalOverview } from './components/CapitalOverview/CapitalOverview';\nimport { EMPTY_OBJECT, noop } from '../../../utils';\nimport sessionReady from '../../../core/ConfigContext/session/utils/sessionReady';\n\nexport class CapitalOverviewElement extends UIElement<CapitalOverviewProps> {\n    public static type: ExternalComponentType = 'capitalOverview';\n\n    constructor(props: _UIComponentProps<CapitalOverviewProps>) {\n        super(props);\n\n        this.customClassNames = 'adyen-pe-capital-overview-component';\n        this.componentToRender = this.componentToRender.bind(this);\n    }\n\n    public componentToRender = () => {\n        return <CapitalOverview {...this.props} ref={(ref: UIElement<CapitalOverviewProps>) => void (this.componentRef = ref)} />;\n    };\n\n    public async getState(): Promise<CapitalComponentState> {\n        const { session } = this.props.core;\n        await sessionReady(session);\n\n        const { getDynamicGrantOffersConfiguration, getGrants } = session.context.endpoints;\n        const legalEntity = session.context.extraConfig?.legalEntity;\n\n        if (!isCapitalRegionSupported(legalEntity)) {\n            return { state: 'isInUnsupportedRegion' };\n        }\n\n        const [config, grants] = await Promise.all([\n            getDynamicGrantOffersConfiguration?.(EMPTY_OBJECT).catch(noop as () => undefined),\n            getGrants?.(EMPTY_OBJECT).catch(noop as () => undefined),\n        ]);\n\n        let state: CapitalComponentState['state'] = 'isUnqualified';\n\n        if (grants && grants.data?.length > 0) {\n            state = 'hasRequestedGrants';\n        } else if (config && config.minAmount) {\n            state = 'isPreQualified';\n        }\n\n        return { state };\n    }\n}\n\nexport default CapitalOverviewElement;\n","import { Core, CoreOptions, TranslationSourceRecord } from './core';\nimport './components/shared.scss';\nimport './style/index.scss';\n\nexport * from './core';\nexport * from './components';\nexport * from './types';\n\nexport async function AdyenPlatformExperience<AvailableTranslations extends TranslationSourceRecord[] = [], CustomTranslations extends {} = {}>(\n    props: CoreOptions<AvailableTranslations, CustomTranslations>\n) {\n    const core = new Core(props);\n    return await core.initialize();\n}\n"],"names":["FALLBACK_ENV","normalizeLoadingContext","loadingContext","_a","normalizeUrl","url","resolveEnvironment","envs","env","fn","asyncNoop","identity","value","noop","_toString","toStringTag","deepFreeze","obj","prop","isBoolean","isFunction","isNull","isNullish","isNumber","isPlainObject","isString","isSymbol","isUndefined","clamp","min","max","isBitSafeInteger","isInfinity","mid","low","high","mod","modulo","ABORT_EVENT","DEFAULT_ABORT_ERROR_MESSAGE","boolify","fallbackBoolean","boolOrFalse","boolOrTrue","falsify","_","truthify","enumerable","writable","getter","get","hasOwnProperty","sameValue","a","b","abortError","message","augmentSignalReason","signal","reason","abortedSignal","_controller","_reason","abortSignalForAny","signals","_sourceSignals","abort","setup","NIL_EXCEPTION","_exception","filter","maybeSignal","isAbortSignal","ex","EMPTY_ARRAY","EMPTY_OBJECT","ALREADY_RESOLVED_PROMISE","tryResolve","args","resolve","getMappedValue","key","map","factory","listFrom","fallbackList","stringedValue","stringedList","pickFrom","list","option","defaultOption","some","_uniqueFlatten","reversed","items","uniqueItems","item","parseDate","timestamp","uniqueId","counter","prefix","uuid","_UUID_V4_FILLER_STRING","xy","randomNibble","asPlainObject","fallback","structFrom","struct","withFreezeProxyHandlers","handler","capitalize","str","isEmptyString","SETUP_ENDPOINT_PATH","AUTO_REFRESH","MAX_AGE_MS","maxAgeMs","AdyenPlatformExperienceError","type","requestId","errorCode","__publicField","FILENAME_EXTRACTION_REGEX","ErrorTypes","getErrorType","getResponseContentType","response","getResponseDownloadFilename","filename","getRequestObject","options","headers","method","handleFetchError","level","isAdyenErrorResponse","data","parseSearchParams","parameters","params","param","createAbortable","abortReason","_abortController","_abortSignal","_abortPromise","_abort","_getAbortPromise","reject","_refreshIfNecessary","abortable","createDeferred","_promise","_reject","_resolve","_refresh","previousResolve","currentPromise","deferred","createPromisor","_abortable","_deferred","isLatestPromise","SetupContext","_session","promisorSignal","abortSignal","_refreshPromise","endpoints","rest","availableEndpoints","sessionAwareEndpoints","target","endpoint","receiver","httpOptions","path","request","requestParams","pathParams","searchParams","pathParamKey","ERR_SESSION_EXPIRED","ERR_SESSION_FACTORY_UNAVAILABLE","ERR_SESSION_HTTP_UNAVAILABLE","ERR_SESSION_INVALID","ERR_SESSION_REFRESH_ABORTED","EVT_SESSION_EXPIRED","EVT_SESSION_READY","EVT_SESSION_REFRESHED","EVT_SESSION_REFRESHING_END","EVT_SESSION_REFRESHING_START","INTERNAL_EVT_SESSION_DEADLINE","INTERNAL_EVT_SESSION_READY","INTERNAL_EVT_SESSION_REFRESHING_END","INTERNAL_EVT_SESSION_REFRESHING_START","_canAutofresh","refresher","specification","canAutofresh","_autoRefresh","createSessionAutofresher","_unlistenExpired","_autofresh","_autofreshSignal","_autofreshPromisor","skipCanAutofreshCheck","_destruct","DEFAULT_INTERVAL_MS","MAX_INTERVAL_MS","createInterval","callback","ms","runCallbackAsap","_intervalDelay","_shouldRunCallbackAsap","_startTime","_cancel","_frame","time","_scheduleFrame","delay","elapsed","roundedElapsed","createWatchListCurrentStateRecord","entries","statePropertyDescriptors","entriesPropertyDescriptors","createWatchListSubscriptionEventCallbacks","callbacks","descriptors","UNSUBSCRIBE_TOKEN","isWatchlistUnsubscribeToken","currentStateSnapshotOrUnsubscribeToken","createWatchlist","lastStateSnapshot","currentState","subscriptionEventCallbacks","subscriptionCallbacksWithReferenceCounting","unsubscribeCallbacks","_getCurrentStateSnapshot","_isWithoutSubscriptionCallbacks","_notifySubscriptions","unsubscribeToken","subscriptionCallbacks","referenceCount","unsubscribeCallback","currentStateSnapshot","subscribe","subscriptionCallback","unsubscribe","subscriptionCallbackReferenceCount","willResumeSubscriptions","clock","interval","cancelSubscriptions","requestNotification","on","createEventEmitter","_eventTarget","_emitEvent","restArgs","detail","event","_onEvent","listener","_listener","evt","createSessionDeadline","emitter","_deadlineSignal","_deadlineTimestamp","_refreshPromisorSignal","_stopDeadlineClock","_deadlineAbortable","_deadlineEmitter","_clearDeadline","_refreshPromisor","session","deadline","_deadline","_deadlines","_deadlineElapsed","_signals","_startDeadlineClock","unsubscribeClock","snapshotOrSignal","createSessionRefresher","_refreshPending","_refreshingPromise","_refreshingSignal","_waitForRefreshingPromise","_sessionPlaceholder","_refresherEmitter","_assertSession","_assertSessionFactory","_refreshSession","nextSession","SessionContext","_specification","beforeHttp","API_VERSION","errorHandlerHelper","errorHandler","error","http","errorLevel","decodedValue","errorPassThrough","res","blob","AuthSessionSpecification","onSessionCreate","maybeSession","id","token","deadlines","issuedAt","expiresAt","issuedAtDate","sessionSignal","restOptions","sessionHttpOptions","_http","_NO_ERR","_assertError","createErrorContainer","_error","_resetError","_setError","AuthSession","skipSessionRefreshIfPossible","authStateChanged","isLatestRefresh","onlySetupRefresh","unlisteners","unlisten","_en_US","EN_US","_getTranslations","translationsPromise","translations","da_DK","de_DE","es_ES","fi_FI","fr_FR","it_IT","nl_NL","no_NO","pt_BR","sv_SE","en_US","all_locales","FALLBACK_LOCALE","DEFAULT_TRANSLATIONS","DEFAULT_DATETIME_FORMAT","EXCLUDE_PROPS","getLocalesFromTranslationSourcesRecord","sources","locale","SUPPORTED_LOCALES","CURRENCY_CODES","CURRENCY_DECIMALS","getDivider","currencyCode","isValidCurrencyCode","getCurrencyCode","getDecimalAmount","amount","divider","getLocalisedAmount","hideCurrency","stringAmount","decimalAmount","formatterLocale","formatterOptions","formatAmountWithoutCurrency","p","s","REGEX_TZ_OFFSET","BASE_FORMAT_OPTIONS","BASE_LOCALE","SYSTEM_TIMEZONE","SYSTEM_TIMEZONE_FORMATTER","DIGITS_2","NUMERIC","REGEX_GMT_OFFSET_UNWANTED_SUBSTRINGS","REGEX_TZ_SINGLE_DIGIT_OFFSET","computeTimezoneOffsetInMinutes","offsetHours","offsetMinutes","computeTimezoneOffsetsFromMinutes","timezoneOffsetInMinutes","parseTimezoneOffset","offset","getGMTSuffixForTimezoneOffset","timezoneOffset","getTimezoneOffsetFromFormattedDateString","date","offsets","getTimezoneOffsetForTimestamp","timezoneFormatter","systemOffset","restamp","restamper","direction","systemToTimezone","timezoneToSystem","getTimeZone","setTimeZone","timeZone","nextFormatter","nextTimeZone","formatter","context","set","tz","DEFAULT_TRANSLATION_OPTIONS","LOCALE_FORMAT_REGEX","toTwoLetterCode","matchLocale","supportedLocales","twoLetterCode","supportedLocale","formatLocale","localeString","languageCode","countryCode","fullLocale","parseLocale","trimmedLocale","formattedLocale","formatCustomTranslations","customTranslations","replaceTranslationValues","translation","values","repetitions","placeholderIndex","placeholder","repetitionIndex","replacementValue","getTranslation","count","countKey","pluralKey","loadTranslations","localeToLoad","loadedLocale","createTranslationsLoader","_locale","_preferredLocale","_supportedLocales","getLocalizationProxyDescriptors","descriptor","Localization","availableTranslations","__privateAdd","_Localization_instances","_languageCode","__privateGet","_availableLocales","_customTranslations","_translations","_translationsLoader","_ready","_currentRefresh","_markRefreshAsDone","_refreshWatchlist","_restamp","records","curr","__privateSet","localesFromCustomTranslations","index","locales","__privateMethod","refreshTranslations_fn","timezone","restOfOptions","localisedAmount","dateOptions","currentRefreshDone","currentRefresh","Core","component","c","_b","n","l","u","t","i","r","o","e","f","h","v","y","d","w","g","m","k","x","C","S","M","P","j","z","$","I","V","A","L","q","H","T","F","O","B","N","D","G","J","DEFAULT_TYPOGRAPHY_CLASSNAME","TypographyVariant","TypographyModifier","TypographyElement","E","U","W","Z","Y","K","Q","X","en","rn","un","ln","an","sn","Typography","el","className","stronger","strongest","variant","medium","large","testId","wide","children","Tag","conditionalClasses","useMemo","jsx","cx","memo","CoreContext","createContext","useCoreContext","useContext","noResults","fixedForwardRef","render","forwardRef","memoComparator","_comparedProps","_propHasChanged","prev","next","getters","EXCESS_WHITESPACE_CHAR","parseClassName","fallbackClassName","getClassName","requiredClassName","classnames","getModifierClasses","modifiers","baseClasses","parseBooleanProp","DEFAULT_BUTTON_CLASSNAME","BUTTON_ANCHOR_CLASSNAME","BUTTON_ACTION_CLASSNAME","ICON_BUTTON_CLASSNAME","ICON_BUTTON_CONTENT_CLASSNAME","BUTTON_ACTION_CONTAINER_CLASSNAME","BUTTON_LABEL_CLASSNAME","BUTTON_ICON_RIGHT_CLASSNAME","BUTTON_ICON_LEFT_CLASSNAME","BUTTON_CONDENSED_CLASSNAME","BUTTON_FULL_WIDTH_CLASSNAME","BUTTON_LOADING_CLASSNAME","Spinner","inline","size","useButton","classNameModifiers","defaultClassName","disabled","props","onClick","iconLeft","iconRight","iconButton","fullWidth","condensed","state","click","useCallback","classes","allProps","allChildren","jsxs","Fragment","ButtonVariant","Button","ref","classNameValue","disabledValue","restOfAllProps","Button$1","IMAGE_BREAKPOINT_SIZES","ErrorMessageDisplay","title","imageDesktop","imageMobile","withImage","centered","refreshComponent","onContactSupport","translationValues","absolutePosition","outlined","renderSecondaryButton","i18n","updateCore","renderMessage","errorMessage","getComponentAvailabilityFromEndpoint","componentAvailabilityRegistry","sessionReady","ready","readyPromise","refreshInProgress","didTriggerRefresh","canRefreshSession","sessionUnsubscribe","maybeUnsubscribeToken","sessionAwareComponentAvailability","componentAvailabilityErrors","ConfigContext","ConfigProvider","refresh","setContextCounter","useState","unsubscribeCounter","setUnsubscribeCounter","hasPermission","setHasPermission","useEffect","maybeContext","toChildArray","useConfigContext","useBooleanState","initialState","setState","updateState","toggleState","CoreProvider","_commonProps","_loadingContext","externalErrorHandler","componentRef","setReady","commonProps","BaseElement","newState","domNode","node","newComponent","UIElement","createRef","status","core","useFetch","keepPrevData","onSuccess","enabled","queryFn","cancelRequest","useRef","fetchReducer","action","dispatch","useReducer","fetchData","ChevronDown","ChevronUp","ACCORDION_BASE_CLASS","ACCORDION_HEADER_CLASS","ACCORDION_HEADER_CONTAINER_CLASS","ACCORDION_HEADER_CONTROLLER_CLASS","ACCORDION_CONTENT_CLASS","Accordion","classNames","header","headerInformation","isExpanded","setIsExpanded","accordionContentRef","toggle","CARD_BASE_CLASS","CARD_BODY","CARD_HEADER","CARD_TITLE","CARD_SUBTITLE","CARD_HEADER_CONTENT","CARD_BODY_WITH_TITLE","CARD_NO_OUTLINE","CARD_NO_PADDING","CARD_FILLED","CARD_FOOTER","Card","subTitle","footer","renderHeader","renderFooter","filled","noOutline","noPadding","LONG","SHORT","SHORT_OFFSET","BASE_DATE_FORMAT","BASE_TIME_FORMAT","BASE_DATE_TIME_FORMAT","BASE_DATE_TIME_MOBILE_FORMAT","DATE_FORMAT_CAPITAL_OVERVIEW","DATE_FORMAT_PAYOUTS","DATE_FORMAT_PAYOUTS_MOBILE","DATE_FORMAT_PAYOUT_DETAILS","DATE_FORMAT_REPORTS","DATE_FORMAT_TRANSACTIONS","DATE_FORMAT_TRANSACTIONS_MOBILE","DATE_FORMAT_TRANSACTION_DETAILS","BREAKPOINTS","SL_BASE_CLASS","SL_ALIGN_END","SL_ITEM_CLASS","SL_GRID_CLASS","SL_CONTENT_CLASS","SL_LABEL_CLASS","SL_ITEM_WITH_HIGHLIGHT_CLASS","useStructuredListItems","DEFAULT_LAYOUT","StructuredList","highlightable","renderValue","renderLabel","layout","grid","align","LABEL_COL_CLASS","VALUE_COL_CLASS","formattedItems","BASE_CLASS","SKELETON_CLASS","SKELETON_CONTAINER","SKELETON_LOADING","STATUS_SKELETON","DataOverviewDetailsSkeleton","skeletonRowNumber","skeletonRows","statusSkeletonRows","_useAtomicTimezoneOperation","operation","timezoneToRestore","_useActiveTimezone","getActiveTimezone","useTimezoneAwareDateFormatting","activeTimezone","dateFormat","fullDateFormat","PD_BASE_CLASS","PD_TITLE_CONTAINER_CLASS","PD_TITLE_CLASS","PD_TITLE_CLASS_WITH_EXTRA_DETAILS","PD_TITLE_BA_CLASS","PD_CONTENT_CLASS","PD_EXTRA_DETAILS_CLASS","PD_EXTRA_DETAILS_LABEL","PD_EXTRA_DETAILS_ICON","PD_BUTTON_ACTIONS","PD_SECTION_CLASS","PD_CARD_CLASS","PD_CARD_TITLE_CLASS","PD_SECTION_AMOUNT_CLASS","PD_SECTION_GROSS_AMOUNT_CLASS","PD_SECTION_NET_AMOUNT_CLASS","PD_UNPAID_AMOUNT","TagVariant","label","icons","Icon","name","IconComponent","setIconComponent","LoadedIcon","Link","href","truncate","withIcon","alt","DataGridContext","useDataGridContext","DataGridCell","column","position","registerCells","isValidElement","cloneElement","isCustomDataObject","_isIconType","_isButtonType","_isLinkType","TableCells","columns","customCells","rowIndex","icon","_c","_d","buttonCallback","_e","_f","_g","ButtonActionsLayoutBasic","ButtonActionsLayoutExtended","ButtonActionsLayout","ButtonActions","actions","generateButtonVariantByIndex","actionIndex","lastActionIndex","reversedActions","button","PayoutData","balanceAccountId","balanceAccountDescription","payoutData","extraFields","payout","adjustments","accumulator","currentValue","payoutValue","translationKey","categoryTranslation","categoryLabel","fundsCaptured","breakdown","creationDate","extraDetails","field","buttonActions","val","config","AlertTypeOption","AlertVariantOption","AlertIcon","Alert","description","onClose","ActiveView","ActiveView2","RefundedState","RefundedState2","RefundMode","RefundStatus","RefundType","TransactionDetailsContext","TransactionDetailsProvider","lineItems","primaryActionAvailable","refundDisabled","setActiveView","setPrimaryAction","setSecondaryAction","transaction","transactionNavigator","dataCustomization","currentTransaction","canNavigateBackward","canNavigateForward","backward","forward","primaryActionLabel","primaryActionDisabled","primaryAction","_secondaryAction","secondaryAction","secondaryActionLabel","useTransactionDetailsContext","REFUND_REASONS","useRefundAction","refundReason","refundInProgress","refundTransaction","transactionId","refundAmountLabel","formattedAmount","refundPaymentLabel","refundingPaymentLabel","refundParams","refundPayload","refundAction","refundActionLabel","useRefundContextActions","interactionsDisabled","refundAmount","refundActionProps","secondaryActionDisabled","useRefundContextAmount","availableAmount","currency","refundMode","setRefundAmount","_amount","canSetRefundAmount","setAmount","_updateRefundItemQuantity","refundableItems","nextRefundItems","refundItem","refundQuantity","refundableItem","quantity","updateRefundItems","currentRefundItems","refundItemUpdates","refundQuantities","useRefundContextLineItems","setItems","qty","availableItems","clearItems","ids","itemUpdates","updateItems","useRefundContextReason","setReason","canSetRefundReason","setRefundReason","catchCallback","useMutation","retry","retryDelay","onError","onSettled","shouldRetry","setData","setError","setStatus","mountedRef","retryCountRef","reset","resetRetries","mutate","variables","result","maxRetries","TransactionRefundContext","TransactionRefundProvider","refreshTransaction","useTransactionRefundContext","createDuplexTransactionNavigator","currentTransactionId","previousTransactionId","fromTransactionId","toTransactionId","onNavigation","triggerNavigationCallback","_fromTransactionId","_toTransactionId","cachedCurrentTransactionId","setNavigationCallback","from","to","useTransaction","initialTransaction","setTransaction","fetchTransactionId","setFetchTransactionId","lastFetchTimestamp","setLastFetchTimestamp","getTransaction","_transactionNavigator","navigationAction","cachedIsFetching","cachedInitialTransaction","lastFetchTransactionId","fetchEnabled","fetchingTransaction","navigator","checkRefundStatusCollection","predicate","refundStatusCollection","every","passesCheck","allStatuses","useTransactionRefundMetadata","details","refundLocked","refundable","originalAmount","refundableAmount","refundAuthorization","refundAvailable","refundCurrency","statuses","statusDetails","currentStatus","firstStatus","secondStatus","currentStatusValue","refundedAmount","totalCompleted","sum","someRefunded","allRefunded","refundStatuses","currentIndex","amountsLength","totalAmount","refundableAmountLabel","refundedState","DEFAULT_POPOVER_CLASSNAME","DEFAULT_TOOLTIP_CLASSNAME","POPOVER_CONTAINER_CLASSNAME","POPOVER_HEADER_CLASSNAME","POPOVER_HEADER_TITLE_CLASSNAME","POPOVER_CONTENT_CLASSNAME","TOOLTIP_CONTENT_CLASSNAME","POPOVER_FOOTER_CLASSNAME","PopoverDismissButton","image","PopoverTitle","isImageTitle","PopoverContainerVariant","PopoverContainerPosition","PopoverContainerSize","InteractionKeyCode","FilterParam","popoverUtil","popoverRefs","closePopoversOutsideOfClick","eventPath","pathMatchIndex","popoverRef","popoverRefId","pathId","closeNestedPopovers","remove","currentRef","refs","add","fromIndex","popoverLength","REF","ReflexError","UnknownRefError","MissingReflexActionError","assertReflexAction","isReflex","notDefined","unwrap","reflexable","isRefObject","createReflexRegister","_getRecordForRef","register","record","_bindReflexAction","_ref","isCallbackRef","_updateCurrentInstance","instance","_current","reflex","previous","_unbindReflexAction","bindings","_register","$globalReflexRegister","createIsolatedFauxReflex","$actions","createReflexContainer","_reflex","_reflexable","_reflexAction","_released","_refreshContainer","_releaseContainer","currentReflexable","useReflex","container","useLayoutEffect","CONTROL_ELEMENT_PROPERTY","ClickOutsideVariant","onFocusoutCapture","useClickOutside","rootElementRef","disableClickOutside","handleClickOutside","eventPathIndex","samePath","currentElement","clickOutsideHandlerRef","current","SELECTORS","ATTRIBUTES","CHECKED_RADIOS","isInput","element","isRadio","isCheckedRadio","form","checkedRadiosForForm","checkedRadio","shouldRefresh","tabbables","isTabbable","focusIsWithin","rootElement","elementWithFocus","parentElement","isFocusable","withTabbableRoot","observer","getTabbables","root","focusAt","tabbableIndex","constrainedIndex","maybeTabbable","tabbableRoot","maybeTabbableOrOffset","maybeElement","useFocusTrap","onEscape","escapedFocus","focusElement","interactionKeyPressed","onClickCapture","lastFocusableElement","raf","onFocusInCapture","onFocusOutCapture","onKeyDownCapture","getIntersectionObserver","observerCallbackMap","withIntersectionObserver","findObserver","callbackFn","observerInstance","entry","currentObserver","calculateOffset","popover","targetElement","currentTarget","dimensionX","dimensionY","targetPosition","bodyPosition","popoverContent","toCenterFullWidth","toCenterX","toCenterY","acc","currentVal","usePopoverPositioner","arrowRef","setToTargetWidth","showOverlay","fitPosition","initialPosition","setInitialPosition","showPopover","setShowPopover","currentPosition","setCurrentPosition","checkedPositions","setCheckedPosition","observerCallback","bestPos","pos","observerCallbackRef","popoverStyle","style","styleWithWidth","useUniqueIdentifier","findFirstFocusableElement","focusable","elements","elem","getGapByVariant","Popover","disableFocusTrap","actionsLayout","open","dismissible","fitContent","withoutSpace","containerSize","dismiss","withContentPadding","uncontrolledProps","isDismissible","popoverOpen","onCloseFocusTrap","onKeyDown","cachedOnKeyDown","autoFocusAnimFrame","popoverPositionAnchorElement","popoverFocusTrapElement","popoverElement","popoverElementWithId","classNamesByVariant","classNamesContentByVariant","createPortal","useTooltipListeners","isVisible","setIsVisible","showTooltip","hideTooltip","content","isTouchDevice","hasTouchStart","hasTouchPoints","hasCoarsePointer","Tooltip","triggerRef","isContainerHovered","controllerRef","listeners","Category","tooltipKey","UNDEFINED_ERROR","getCommonErrorMessage","CopyText","textToCopy","isHovered","buttonLabel","showCopyTextTooltip","restProps","tooltipLabel","setTooltipLabel","resetTooltipLabel","getErrorMessage","commonError","secondaryErrorMessage","DataOverviewError","ContactSupport","TableBody","onRowHover","useInteractiveDataGrid","totalRows","total","nextIndex","INITIAL_STATE","optionIndex","onFocusCapture","InteractiveBody","onRowClick","onClickCallBack","SkeletonBody","columnsNumber","loading","emptyMessageDisplay","rows","emptyTableIcon","DataGridProvider","minWidthByColumn","width","existingWidth","getMinWidthByColumn","TableHeaderCell","cellKey","DataGrid","errorDisplay","DataGridTable","child","DataGridFooter","emptyBody","showMessage","visibleCols","cellWidths","col","DataGridBody","showSkeleton","ARIA_ERROR_SUFFIX","CommitAction","useCommitAction","applyDisabled","applyTitle","resetDisabled","resetTitle","commitAction","setCommitAction","committing","setCommitting","applyAction","resetAction","resetCommitAction","applyButtonAction","resetButtonAction","commitActionButtons","Img","backgroundUrl","src","showOnError","loaded","setLoaded","imageRef","handleLoad","handleError","modifier","DROPDOWN_BASE_CLASS","DROPDOWN_BUTTON_CLASSNAME","DROPDOWN_BUTTON_CLASS","DROPDOWN_BUTTON_ACTIVE_CLASS","DROPDOWN_BUTTON_COLLAPSE_INDICATOR_CLASS","DROPDOWN_BUTTON_HAS_SELECTION_CLASS","DROPDOWN_BUTTON_ICON_CLASS","DROPDOWN_BUTTON_MULTI_SELECT_COUNTER_CLASS","DROPDOWN_BUTTON_READONLY_CLASS","DROPDOWN_BUTTON_TEXT_CLASS","DROPDOWN_BUTTON_VALID_CLASS","DROPDOWN_BUTTON_INVALID_CLASS","DROPDOWN_ELEMENT_CLASS","DROPDOWN_ELEMENT_ACTIVE_CLASS","DROPDOWN_ELEMENT_CHECKBOX_CLASS","DROPDOWN_ELEMENT_CHECKMARK_CLASS","DROPDOWN_ELEMENT_CONTENT_CLASS","DROPDOWN_ELEMENT_DISABLED_CLASS","DROPDOWN_ELEMENT_ICON_CLASS","DROPDOWN_ELEMENT_NO_OPTION_CLASS","DROPDOWN_LIST_CLASS","DROPDOWN_LIST_ACTIVE_CLASS","DROPDOWN_MULTI_SELECT_CLASS","SelectButtonElement","active","filterable","toggleButtonRef","baseClassName","SelectButton","multiSelect","readonly","showList","withoutCollapseIndicator","placeholderText","buttonActiveItem","buttonTitleText","useContainerQuery","query","setWidth","breakpoint","minMax","queryMatch","containerElement","resizeObserver","containerQueries","useResponsiveContainer","CheckedBox","UncheckedBox","Checkmark","renderDefaultMultiSelectionCheckedness","renderDefaultSingleSelectionCheckedness","renderListItemDefault","SelectListItem","onSelect","renderListItem","selected","dataDisabled","itemClassName","SelectList","commitActions","selectListId","textFilter","dismissPopover","popoverClassNameModifiers","isSmContainer","filteredItems","listClassName","noOptionsClassName","renderSelectOption","multipleSelection","useSelect","getSelectedItems","selectedItems","_selected","_selectedItems","selection","setSelection","resetSelection","nextSelection","select","currentSelection","Select","onChange","isInvalid","isValid","isCollatingErrors","setShowList","setTextFilter","filterInputRef","selectListRef","appliedFilterNumber","setAppliedFilterNumber","pendingClickOutsideTriggeredHideList","clearSelectionInProgress","cachedSelectedItems","dropdownClassName","closeList","commitSelection","handleSelect","handleButtonKeyDown","focus","firstAvailableItem","handleListKeyDown","handleTextFilter","toggleList","ChevronLeft","ChevronRight","Pagination","hasNext","hasPrev","limit","limitOptions","onLimitSelection","_limitOptions","_onLimitChanged","AMOUNT_CLASS","PAYMENT_METHOD_CLASS","PAYMENT_METHOD_LOGO_CONTAINER_CLASS","PAYMENT_METHOD_LOGO_CLASS","DATE_AND_PAYMENT_METHOD_CLASS","DATE_METHOD_CLASS","FALLBACK_CDN_CONTEXT","returnImage","resourceContext","imageFolder","parentFolder","extension","subFolder","useImageUrl","Image","folder","imageUrl","PAYMENT_METHODS","parsePaymentMethodType","paymentMethod","format","PaymentMethodCell","bankAccount","labels","getLabel","removeUndefinedProperties","useTableColumns","fields","customColumns","columnConfig","tableColumns","isSmAndUpContainer","newFields","cc","colum","mergedColumns","customColumnsMap","columnMap","hiddenColumn","existing","flex","TRANSACTION_FIELDS","TransactionsTable","activeBalanceAccount","availableCurrencies","hasMultipleCurrencies","showDetails","showPagination","transactions","paginationProps","hoveredRow","setHoveredRow","isMdAndUpContainer","isXsAndDownContainer","amountLabel","EMPTY_TABLE_MESSAGE","onHover","TX_DATA_CLASS","TX_DATA_AMOUNT","TX_DATA_ACTION_BAR","TX_DATA_CONTAINER","TX_DATA_HEAD_CONTAINER","TX_DATA_INPUT","TX_DATA_INPUT_CONTAINER","TX_DATA_INPUT_CONTAINER_SHORT","TX_DATA_INPUT_CONTAINER_TEXT","TX_DATA_INPUT_CONTAINER_WITH_ERROR","TX_DATA_INPUT_HEAD","TX_DATA_LABEL","TX_DATA_LIST","TX_DATA_PAY_METHOD","TX_DATA_PAY_METHOD_DETAIL","TX_DATA_PAY_METHOD_LOGO","TX_DATA_PAY_METHOD_LOGO_CONTAINER","TX_DATA_TAGS","TX_STATUS_BOX","TX_REFUND_RESPONSE","TX_REFUND_RESPONSE_ICON","TX_REFUND_RESPONSE_SUCCESS_ICON","TX_REFUND_RESPONSE_ERROR_ICON","TX_REFUND_STATUSES_CONTAINER","TX_DETAILS_RESERVED_FIELDS_SET","TransactionDataProperties","balanceAccount","category","paymentPspReference","refundMetadata","isRefundTransaction","SKIP_ITEM","getFormattedAmount","deductedAmount","deductedAmountKey","originalAmountKey","paymentReferenceKey","itemsWithExtraFields","TransactionDetailsDataContainer","getAmountStyleForTransaction","getPaymentMethodTypeForTransaction","getDisplayablePaymentMethodForTransaction","getRefundTypeForTransaction","refundType","TransactionStatusBox","createdAt","paymentMethodType","CloseCircle","InputBase","onInput","onKeyUp","trimOnBlur","onBlurHandler","onBlur","onFocusHandler","autoCorrect","spellCheck","handleInput","handleKeyUp","handleBlur","handleFocus","inputClassNames","cnm","uid","iiv","iv","ce","newProps","formatAmount","getCurrencyExponent","_BaseRefundAmountInput","errorMessageArg","inputIdentifier","labelIdentifier","TransactionRefundFullAmountInput","TransactionRefundPartialAmountInput","setErrorMessage","computeRefundAmount","exponent","decimalSeparator","parts","integerPart","decimalPart","TransactionRefundNotice","TransactionRefundReason","refundReasons","onReasonChanged","_TransactionDataContentViewWrapper","renderViewActionButtons","renderViewMessageBox","_RefundResponseViewWrapper","renderIcon","subtitle","TransactionDataContent","activeView","_setActiveView","_setPrimaryAction","_setSecondaryAction","locked","setLocked","refundDisabledMetaData","shouldPreventActiveViewIfRefund","balanceAccountEndpointCall","balanceAccounts","extraActions","onRefundSuccess","renderMessages","balanceAccountData","account","commonContextProviderProps","TransactionData","isFetching","useBalanceAccounts","isBalanceAccountIdWrong","ModalContext","useModalContext","Modal","isOpen","headerWithBorder","handleEscKey","TITLES_BY_TYPE","useDataOverviewDetailsTitle","_hideTitle","withinModal","forcedHideTitle","setForcedHideTitle","hideTitle","NET_PAYOUT_CLASS","AMOUNT_FIELDS","PAYOUT_TABLE_FIELDS","_isAmountFieldKey","PayoutsTable","refreshing","isLoading","getAmountFieldConfig","ENDPOINTS_BY_TYPE","isDetailsWithId","DataOverviewDetails","dataId","getDetail","queryParam","hasBalanceAccountDetail","errorProps","detailsData","setExtraFields","getExtraFields","PayoutElement","WITH_ERROR_CLASS","DataOverviewContainer","balanceAccountsError","hasError","BASE_CLASS_DETAILS","EARLIEST_PAYOUT_SINCE_DATE","MOBILE_SWITCH_CLASS","useFilterBarState","isMobileContainer","showingFilters","setShowingFilters","FilterBarMobileSwitch","FilterBar","BA_SELECTOR_CLASS","BA_SELECTOR_ACCOUNT_ID_CLASS","BA_SELECTOR_ACCOUNT_LABEL_CLASS","BalanceAccountSelector","balanceAccountSelectionOptions","onBalanceAccountSelection","LIMIT_OPTIONS","MAX_PAGE_LIMIT","DEFAULT_PAGE_LIMIT","getClampedPageLimit","pageLimit","getNearestFromSortedUniqueNums","nums","lastindex","lo","hi","usePageLimit","preferredLimit","preferredLimitOptions","cachedLimitOptions","cachedLimit","uniqueOptions","parsing","useMounted","beforeUnmount","$mounted","unmount","usePagination","paginationSetupConfig","requestPageCallback","$controller","$maxVisitedPage","$maxVisitedPageSize","$page","page","setCurrentPage","paginationChanged","updatePaginationChanged","getPageCount","getPageParams","resetPageCount","updatePagination","goto","PAGES","requestedPage","paginationData","pages","pageSize","resetPagination","hasNextPage","hasPrevPage","useCursorPagination","cursors","updateCursor","cursor","currentCursor","useOffsetPagination","currentPage","useReactiveState","initialStateSameAsDefault","$hasDefaultState","$defaultState","$stateParams","$changedParams","resetState","requestStateUpdate","stateUpdateRequest","stateUpdate","stateUpdateFlags","defaultValue","updateValue","flagIndex","updateFlag","STATE","flag","canResetState","usePaginatedRecordsFilters","filterParams","initialFiltersSameAsDefault","canResetFilters","defaultFilters","resetFilters","filters","updateFilters","PageNeighbour","PaginationType","offsetPaginatedResponseFields","isCursorPaginatedResponseData","dataProperties","parseCursorPaginatedResponseData","dataField","parseOffsetPaginatedResponseData","hasPrevious","usePaginatedRecords","fetchRecords","initialize","onFiltersChanged","pagination","setRecords","fetching","updateFetching","preferredPageLimit","setPreferredPageLimit","$initialFetchInProgress","$lastRequestedPage","$recordsFilters","filtersProps","parsePaginatedResponseData","updateLimit","pageRequestParams","err","useCursorPaginatedRecords","initOptions","useBalanceAccountSelection","selectedBalanceAccountIndex","setSelectedBalanceAccountIndex","resetBalanceAccountSelection","getTimezoneTime","getUsedTimezone","REGEX_CLOCK_TIME_MATCHER","$restamper","formatted","meridian","clockTime","GMTOffsetString","useTimezone","withClock","shouldWatchClock","unwatchClock","setTimestamp","GMTOffset","snapshot","createRangeTimestampsConfigRestampingContext","getRangeTimestampsContextIntegerPropertyFactory","minInteger","maxInteger","defaultInteger","_getNormalizedValue","fallbackValue","normalizedValue","clampedValue","initialValue","valueGetter","getRangeTimestampsConfigParameterUnwrapper","isRangeTimestampsConfigWithoutOffsets","isRangeTimestampsConfigWithFromOffsets","nowTimestamp","now","offsetsForNDays","_cache","numberOfDays","parseRangeTimestamp","normalizedTimestamp","parsedTimestamp","createRangeTimestampsFactory","additionalContext","_config","_additionalContext","_restamper","nowDescriptor","NOW","tzDescriptor","configContext","nowSetter","withRangeFrom","years","months","days","hours","minutes","seconds","tzSetter","currentTimezone","DATE_PARTS_REGEX","_startTimestamp","adjustDate","withTimezone","restampedDate","startOfDay","startOfMonth","startOfYear","startOfWeek","firstWeekDay","dateOffset","getWeekDayIndex","isLeapYear","year","getMonthDays","month","nextMonth","monthIndex","nextYear","weekDay","computeTimestampOffset","getDateObjectFromTimestamp","getTimezoneDateString","getTimezoneDateParts","dateString","day","getEdgesDistance","fromTime","toTime","fromYear","fromMonth","toYear","toMonth","DEFAULT_FIRST_WEEK_DAY","ONE_WEEK_OFFSETS","_getFirstWeekDayContext","offsetWeek","weekCount","weeks","restConfig","firstWeekDayContext","ONE_MONTH_OFFSETS","offsetMonth","monthCount","lastMonth","MAX_NUM_DAYS","MIN_NUM_DAYS","DEFAULT_NUM_DAYS","_getNumberOfDaysContext","lastNDays","numberOfDaysContext","lastWeek","thisMonth","thisWeek","yearToDate","getTimeRangeSelectionDefaultPresetOptions","RangePreset.lastNDays","RangePreset.thisWeek","RangePreset.lastWeek","RangePreset.thisMonth","RangePreset.lastMonth","RangePreset.yearToDate","useTimeRangeSelection","presetOptions","selectedPresetOption","setFrom","setTo","selectedOption","setSelectedOption","TZ","customOption","getRangesForOption","selectionOptions","optionKeys","currentOption","isCustomSelection","setIsCustomSelection","selectionOptionsWithCustomOption","onSelection","ranges","customSelection","TimeRangeSelector","calendarRef","onTimeRangeSelected","useTimeRangeSelectionConfig","selectOptions","onSelectedOptionChanged","rangeSelectionInProgress","cachedTimestamp","property","isPropDescriptor","setter","propsProperty","deepImmutable","$props","maybeDescriptor","isDescriptor","CalendarGridRenderToken","CalendarGridRenderToken2","DEFAULT_DATE_CELL_CLASSNAME","DEFAULT_DATE_TIME_CLASSNAME","getGridDateRenderProps","computedProps","prepare","renderProps","CalendarGridDate","datetime","flags","onlyCellsWithin","cursorElementRef","withinMonth","withinRange","extendedProps","CalendarGridDate$1","DEFAULT_CELL_CLASSNAME","DEFAULT_CELL_ABBR_CLASSNAME","getGridDayOfWeekRenderProps","CalendarGridDayOfWeek","longLabel","shortLabel","__","childClassName","extendedChildProps","childClasses","CalendarGridDayOfWeek$1","CalendarGrid","cursorRootProps","block","row","rowindex","DAY_MS","DAY_OF_WEEK_FORMATS","FIRST_WEEK_DAYS","FRAME_SIZES","MAXIMUM_MONTH_UNITS","WEEKEND_DAYS_SEED","CONTROLS_ALL","CONTROLS_MINIMAL","CONTROLS_NONE","CALENDAR_CONTROLS","SELECT_MANY","SELECT_NONE","SELECT_ONE","CALENDAR_SELECTIONS","CURSOR_BACKWARD","CURSOR_BLOCK_END","CURSOR_BLOCK_START","CURSOR_DOWNWARD","CURSOR_FORWARD","CURSOR_LINE_END","CURSOR_LINE_START","CURSOR_NEXT_BLOCK","CURSOR_PREV_BLOCK","CURSOR_UPWARD","RANGE_FROM","RANGE_TO","SELECTION_COLLAPSE","SELECTION_FARTHEST","SELECTION_FROM","SELECTION_NEAREST","SELECTION_TO","SHIFT_BLOCK","SHIFT_FRAME","SHIFT_PERIOD","downsizeTimeFrame","maxsize","resolveTimeFrameBlockSize","getWeekendDays","seed","__TimeSlice__","_numberOfMonths","_endTimestamp","_endTimestampOffset","_startTimestampOffset","__privateWrapper","slice","UNBOUNDED_SLICE","sinceNow","untilNow","timeslice","TimeFlag","CalendarShiftControlFlag","CalendarShiftControlsFlag","createFlagsRecord","CACHE","FLAG_PROPS","isFlagProp","flagsTruncated","indexedProxyGetTrap","mapIteratorFactory","thisArg","__INDEXED_PROTO__","createIndexed","iterablePropertyDescriptorsOrSize","iteratorValueGetter","today","timezones","getTimestampWithTomorrowOffset","withTimestamp","currentTimestamp","nextTimestamp","tomorrowOffset","getTimestamp","refreshTimestamps","_TimeFrame","_TimeFrame_instances","_cursorBlockIndex","_cursorBlockStartIndex","_cursorBlockEndIndex","_cursorStartIndex","_cursorEndIndex","_cursorIndex","_cursorOffset","_cursorTimestamp","_dynamicBlockHeight","_effect","_firstWeekDay","_frameBlocksCached","_DEFAULT_LOCALE","_maxFrameSize","_selectionStartTimestamp","_selectionEndTimestamp","_size","__timeslice","_timeslice","_timezone","_today","_unwatchCurrentDay","_fromTimestamp","_toTimestamp","_fromBlockOffsetFromOrigin","_toBlockOffsetFromOrigin","_numberOfBlocks","_numberOfUnits","_daysOfWeek","_frameBlocks","getFrameBlockAtIndex_fn","bool","effect","currentLocale","nextFrameSize","shiftOriginIfNecessary_fn","$timeslice","applyTimeSliceUpdate_fn","skipCursorRefresh","cursorBlock","startIndex","endIndex","nextCursorTimestamp","getContainedTimestamp_fn","nextCursorOffset","clampedNextCursorOffset","firstBlock","lastBlock","offsetType","shiftOrigin_fn","nextCursorPosition","shiftFrameCursorByOffset_fn","currentStart","currentEnd","startDistance","endDistance","span","selectionStartTimestamp","selectionEndTimestamp","getClampedFrameOffset_fn","frameOffset","withMidRangeFallback","clampedTimestamp","blockStartIndex","indexOffset","clampedOffset","size_1","TimeFrame","MonthFrame","_MonthFrame_instances","_daysInWeek","_daysOfWeekCached","_daysOfWeekend","_currentDayTimestamp","_originMonthStartOffset","_originMonthStartTimestamp","_originYear","_selectionFromTimestamp","_selectionToTimestamp","labelDescriptors","getBlockTimestampOffsetFromOrigin_fn","monthDays","innerStartIndex","innerEndIndex","outerStartIndex","outerEndAfterIndex","numberOfUnits","proxyForIndexPropertyAccess","startTimestamp","originYear","originMonth","weekStartTimestamp","getDayOffsetTimestamp_fn","updateSelectionTimestamps_fn","getStartForTimestamp_fn","offsetYear","originTimestamp","fromTimestamp","dayOffset","restampedTimestamp","hrs","mins","timeOffset","_NO_EXCEPTION","createEffectStack","_stack","exception","Calendar$2","_Calendar_instances","_destructed","_highlightFrom","_highlightTo","_highlightInProgress","_highlightSelection","_pendingWatchNotification","_rangeOffsets","_lastHighlightRange","_cursorIndexFromEvent","_shiftFactorFromEvent","_watchCallback","_watchableEffect","_unwatch","_shiftControlsHandles","_shiftControlsList","_shiftControls","getShiftControlRecordAtIndex_fn","_watchlist","_lastWatchableSnapshot","_chainedNotifyEffectStack","_chainedWatchEffectStack","currentConfig_get","_grid","configure_fn","watchCallback","_watchableEffectCallback","_Calendar_static","withNotifyEffect_fn","cursorHandle_fn","blank","clearHighlight_fn","rangeHighlight_fn","_DAYS_OF_WEEK_FALLBACK","destruct_fn","_RANGE_OFFSETS_FORMAT_REGEX","_CURSOR_POINTER_INTERACTION_EVENTS","_SHIFT_ACTIVATION_KEYS","_SHIFT_ALL_CONTROLS","_SHIFT_MINIMAL_CONTROLS","getOffsetsFromRange_fn","range","getShiftOffsetType_fn","getShiftOffsetUnit_fn","timeframe_get","canShiftInDirection_fn","shiftDirection","highlight","minified","reframe_fn","refreshShiftControls_fn","refreshHighlighting_fn","highlight_fn","cursorIndex","isClick","control","shiftOffsetType","shiftOffsetUnit","canShift","shiftFactor","getShiftFactorFromEvent_fn","factor","secretFauxHighlightingHint","toTimestamp","selectionDirection","isFauxHighlighting","selectionStartDay","selectionStartDayEndTimestamp","selectionEndDay","selectionEndDayStartTimestamp","rangeOffsets","restoreHighlight_fn","controlsChanged","highlightChanged","selectionChanged","highlightRange","calendar","init","kill","Calendar","CalendarControls","controls","renderer","handle","useFocusCursor","finallyCallback","useCalendar","blocks","dynamicBlockRows","onHighlight","originDate","renderControl","sinceDate","trackCurrentDay","untilDate","useYearView","lastMutationTimestamp","setLastMutationTimestamp","activeControls","activeHighlight","highlightStart","highlightEnd","pointerHandle","useImperativeHandle","origins","useDetachedRender","targetRef","setRender","renderTarget","useCalendarControlsRendering","directionModifier","labelModifier","Chevron","shouldRenderControl","DatePicker","controlsRenderer","controlsContainerRef","lastUpdatedTimestamp","setLastUpdatedTimestamp","datePickerClassName","timezoneI18nOptions","DEFAULT_FILTER_BUTTON_CLASSNAME","FilterButton","restAttributes","FilterButton$1","isValueEmptyFallback","renderFallback","DefaultEditModalBody","editAction","onValueUpdated","setCurrentValue","InputText","BaseFilter","editMode","_updateEditMode","editModalMounting","updateEditModalMounting","isValueEmpty","hasEmptyValue","updateHasEmptyValue","hasInitialValue","updateHasInitialValue","valueChanged","updateValueChanged","disabledApply","updateDisabledApply","renderModalBody","closeEditDialog","openEditDialog","updateEditMode","mode","isOnlySmContainer","isOnlyMdContainer","DateRangeFilterParam","formattingOptions","computeDateFilterValue","fromDate","toDate","resolveDate","renderDateFilterModalBody","DateFilterEditModalBody","showTimezoneInfo","timeRangePresetOptions","presetOption","setPresetOption","datePickerRef","customDateRangeFormat","DateFilterCore","selectedPresetOptionValue","setSelectedPresetOption","fromValue","toValue","dateTimeFormatter","_formattingOptions","DateFilter","defaultParams","refreshNowTimestamp","defaultTimeRangePreset","selectedTimeRangePreset","setSelectedTimeRangePreset","updateCreatedDateFilter","hasCallback","useModalDetails","selectedDetail","setSelectedDetail","updateDetails","resetDetails","detailsToShow","MultiSelectionFilter","updateSelection","selectionOptionsFor","useMultiSelectionFilter","filterParam","filterValues","TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTERS","DEFAULT_TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTER_PARAMS","TRANSACTION_CATEGORIES","TRANSACTION_STATUSES","getDefaultFilterParams","timeRangeOptions","defaultTimeRange","useDefaultOverviewFilterParams","filterType","setNowTimestamp","DataOverviewHeader","titleKey","descriptionKey","CLASSNAMES","ModalContent","restData","detailProps","DataDetailsModal","isModalOpen","useCustomColumnsData","hasCustomColumn","onDataRetrieve","mergeCustomData","customRecords","setCustomRecords","loadingCustomRecords","setLoadingCustomRecords","mergedRecords","retrievedData","hasCustomField","preferredFields","standardFields","fieldName","mergeRecords","originalRecords","modifiedRecords","matchRecordCallback","originalRecord","modifiedRecord","PayoutsOverview","allowLimitSelection","onRecordSelection","isLoadingBalanceAccount","payoutsEndpointCall","getPayouts","filterBarState","_onFiltersChanged","payoutDetails","modalOptions","PayoutsOverviewContainer","PayoutsElement","Payouts","TransactionElement","DIVIDER_CLASS_NAMES","Divider","Header","hasDivider","subtitleKey","subtitleConfig","ITEM_CLASS","DEFAULT_BASE_BUTTON_CLASSNAME","BaseButton","BaseButton$1","NAMESPACE","CONTAINER_CLASS","CONTENT_CLASS","CHEVRON_CLASS","CONTAINER_BUTTON_CLASS","CONTAINER_FILLED_CLASS","CONTAINER_HIDDEN_CLASS","CONTAINER_IN_FLOW_CLASS","CONTAINER_OVERLAY_CLASS","CONTENT_EXPANDABLE_CLASS","CARD_HEIGHT_PROPERTY","CONTAINER_OVERLAY_ID","ExpandableCard","inFlow","setIsOpen","collapsedCardHeight","setCollapsedCardHeight","inNormalFlow","toggleIsOpen","expandButtonRef","expandableCardRef","isClosedFromOutside","isOpenRef","clickOutsideRef","cardElement","MARGIN_CLASS","LOADING_CLASS","AmountSkeleton","hasMargin","LABEL_CONTAINER_CLASS","LABEL_CONTAINER_CLASS_LOADING","BODY_CLASS","LABEL_CLASS","PLACEHOLDER_CLASS","SummaryItemLabel","isSkeletonVisible","SummaryItem","columnConfigs","isHeader","widths","onWidthsSet","isEmpty","newWidths","getColumnStyle","isXsContainer","typographyVariant","isLongValue","TransactionTotalItem","hiddenField","isSkeleton","incomingRef","expenseRef","currencyRef","incomingsConfig","expensesConfig","BaseList","useMaxWidthsState","maxWidths","setMaxWidths","setMaxWidthsConditionally","currentMaxWidths","currentMaxWidth","TotalsCard","totals","setIsHovered","firstTotal","restOfTotals","TransactionTotals","isAvailableCurrenciesFetching","createdSince","createdUntil","categories","maxAmount","minAmount","currencies","getTransactionTotals","fetchCallback","partialTotals","BalanceItem","balance","amountRef","Balances","defaultCurrencyCode","onCurrenciesChange","getAccountsBalance","balances","firstCurrency","secondCurrency","firstBalance","restOfBalances","useTransactionsOverviewMultiSelectionFilters","filtersConfig","categoriesFilter","statusesFilter","currenciesFilter","AMOUNT_MULTIPLIER","RangeSelection","selectedCurrencies","setMinAmount","setMaxAmount","applyFilter","clearFilter","filterValue","AmountFilter","setValue","formattedValue","setValueFormattedValue","showCurrencySymbol","showSymbol","onFilterChange","_BASE_CLASS","SUMMARY_CLASS","SUMMARY_ITEM_CLASS","MAX_TRANSACTIONS_DATE_RANGE_MONTHS","TransactionsOverview","transactionsEndpointCall","getTransactions","setAvailableCurrencies","setIsAvailableCurrenciesFetching","handleCurrenciesChange","isNarrowContainer","transactionDetails","TransactionsOverviewContainer","TransactionsElement","Transactions","SupportedLocation","supportedCountries","supportedRegions","getCapitalRegion","legalEntity","capitalRegion","region","getSubtitleByRegion","getSubtitleByCountry","getCapitalHeaderSubtitleByLegalEntity","isCapitalRegionSupported","COMMON_CAPITAL_ERROR_MESSAGE","UNKNOWN_ERROR","getCapitalErrorMessage","errorCodeMessage","CapitalErrorMessageDisplay","emptyGrantOffer","onBack","unsupportedRegion","capitalError","CAPITAL_OFFER_CLASS_NAMES","CapitalHeader","InfoBox","InfoBoxTag","dateStartUTCTimestampOffset","getExpectedRepaymentDate","expectedRepaymentPeriodDays","calculateMaximumRepaymentPeriodInMonths","debounce","func","timeoutId","lastArgs","debounced","getPaymentRatePercentage","rate","calculateProgress","step","effectiveStep","percentage","calculateSliderAdjustedMidValue","minValue","maxValue","adjustedMid","Slider","restOfProps","progress","CapitalSlider","dynamicOffersConfig","onValueChange","onRelease","handleValueChange","handleRelease","CAPITAL_REPAYMENT_FREQUENCY","LoadingSkeleton","InformationDisplay","expectedRepaymentDate","CapitalOfferSelection","dynamicOffersConfigError","onOfferDismiss","onOfferSelect","requestedAmount","requestedValue","setRequestedValue","createGrantOffer","getDynamicGrantOffer","getDynamicGrantOfferMutation","setIsLoading","reviewOfferMutation","onReview","getOffer","debouncedGetOfferCall","onChangeHandler","handleSliderRelease","loadingButtonState","AnchorButton","AnchorButton$1","normalizeFill","fill","Translation","defaultFill","fills","getFill","_defaultFill","lookupProperty","placeholderFill","firstFragment","restFragments","fragment","SUMMARY_TEXT_EMAIL","CapitalOfferLegalNotice","errorMessageWithAlert","CapitalOfferSummary","grantOffer","onFundsRequest","requestFunds","requestFundsMutation","requestFundsCallback","onRequestFundsHandler","maximumRepaymentPeriod","requestErrorAlert","structuredListItems","summaryItems","showWarningIcon","CapitalOffer","externalDynamicOffersConfig","getDynamicGrantOffersConfiguration","isRegionSupported","setEmptyGrantOffer","internalDynamicOffersConfig","selectedOffer","setSelectedOffer","setRequestedAmount","onOfferSelectHandler","capitalOfferState","CapitalOfferElement","useFreezePeriod","timeout","frozen","setFrozen","rafId","freeze","Download","useDownload","endpointName","downloadEndpoint","downloadBlob","clickHandler","DownloadButton","onDownloadRequested","setFetchData","Warning","DISABLED_BUTTONS_TIMEOUT","DATE_TYPE_CLASS","DATE_TYPE_DATE_SECTION_CLASS","FIELDS","ReportsTable","alert","setAlert","removeAlert","errorIcon","onDownloadErrorAlert","alertDetails","ReportsOverview","reportsEndpointCall","getReports","reports","ReportsOverviewContainer","ReportsElement","Reports","CAPITAL_OVERVIEW_CLASS_NAMES","unqualifiedImage","Unqualified","PreQualifiedIntro","dynamicOfferConfig","onOfferOptionsRequest","PreQualified","dynamicOffer","skipPreQualifiedIntro","handleOfferOptionsRequest","isOfferDismissButtonVisible","handleOfferDismiss","ProgressBar","tooltips","shouldDisplayLegend","ariaLabel","ProgressBarSegment","tooltipContent","getContent","GRANT_ITEM_CLASS_NAMES","getHasDetails","getIsBackgroundFilled","getAmountLabelKey","getAmount","grant","getStatusKey","missingActions","getStatusTagVariant","getRepaymentPeriodEndDate","repaymentPeriodLeft","endDate","getStatusTooltipKey","pendingToS","getGrantConfig","isGrantActive","isGrantPending","GRANT_DETAILS_CLASS_NAMES","GrantDetails","maximumRepaymentPeriodMonths","GRANT_ACTION_CLASS_NAMES","getTopWindowHref","setTopWindowHref","GrantAction","offerExpiresAt","signToSActionDetails","shouldRedirectToToS","setShouldRedirectToToS","GrantItem","grantConfig","showUnscheduledRepaymentAccounts","grantOverview","GRANT_ADJUSTMENT_DETAILS","AccountDetail","contentClassName","labelClassName","getHumanReadableIban","iban","useNonBreakingSpaces","spaceSeparator","isCopyableAccountField","getAccountFieldTextToCopy","getAccountFieldFormattedValue","getAccountFieldTranslationKey","CLASS_NAMES","AccountDetails","orderedBankAccountFields","accountNumber","order","accountDetails","accountFields","orderedFields","fieldValue","GrantAdjustmentDetails","headerTitleKey","headerSubtitleKey","onDetailsClose","GrantRepaymentDetails","formattedRemainingAmount","findDefaultOptionIndex","defaultOptionIndex","useTabbedControl","focusPending","setFocusPending","activeIndex","setActiveIndex","optionElementsRef","_uniqueId","numberOfOptions","getNearestActiveIndex","clickedOptionIndex","keyMap","optionElement","SegmentedControl","defaultItem","isActive","List","grants","GrantsDisplay","grantList","newOfferAvailable","onNewOfferRequest","selectedGrantDetail","setSelectedGrantDetail","selectedGrant","setSelectedGrant","activeGrants","inactiveGrants","inactive","displayMode","showNewOfferButton","selectedGrantConfig","hideGrantDetails","showGrantDetails","GrantList","onGrantListUpdateRequest","isCapitalOfferVisible","setIsCapitalOfferVisible","goBackToPreviousStep","goToNextStep","goBackToList","handleFundsRequest","CapitalOverview","grantsEndpointCall","dynamicConfigurationEndpointCall","grantsQuery","dynamicOfferQuery","requestedGrant","setRequestedGrant","handlePreQualifiedFundsRequest","showError","CapitalOverviewElement","getGrants","AdyenPlatformExperience"],"mappings":"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,CACnB,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,OACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,MACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,MACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,MACL,IAAK,KACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,OACL,IAA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","x_google_ignoreList":[56,57,58,61]}