{"version":3,"file":"static/js/5976.164f7625.chunk.js","mappings":"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,CACnB,MACA,MAED,mBAAoB,CACnB,KACA,MAED,mBAAoB,CACnB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,uBAAwB,CACvB,MACA,KACA,MAED,gBAAiB,CAChB,MACA,KACA,KAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,KAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,mBAAoB,CACnB,MACA,KAED,mBAAoB,CACnB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,mBAAoB,CACnB,KACA,MAED,mBAAoB,CACnB,MACA,MAED,mBAAoB,CACnB,MACA,KAED,mBAAoB,CACnB,MACA,KAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,KACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,gBAAiB,CAChB,MACA,KAED,mBAAoB,CACnB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,KACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,mBAAoB,CACnB,MACA,KACA,MAED,gBAAiB,CAChB,MACA,KACA,KAED,qBAAsB,CACrB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,KAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,IAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,KACA,KAED,qBAAsB,CACrB,KACA,MAED,gBAAiB,CAChB,KACA,MAED,gBAAiB,CAChB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,mBAAoB,CACnB,MACA,OAGF,SAASwnB,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAE3nB,EAAKynB,GAC9B,OAAOG,QAAQC,UAAUjc,MAAK,WAC7B,IAAIkc,EAAI,IAAIrc,MAAM,uBAAyBgc,EAAM,KAEjD,MADAK,EAAE3nB,KAAO,mBACH2nB,CACP,IAGD,IAAIC,EAAM/nB,EAAIynB,GAAMlmB,EAAKwmB,EAAI,GAC7B,OAAOH,QAAQI,IAAID,EAAIE,MAAM,GAAGjoB,IAAI0nB,EAAoBI,IAAIlc,MAAK,WAChE,OAAO8b,EAAoBQ,EAAE3mB,EAAI,GAClC,GACD,CACAimB,EAAoBve,KAAO,WAAa,OAAOD,OAAOC,KAAKjJ,EAAM,EACjEwnB,EAAoBjmB,GAAK,MACzBuM,EAAOqa,QAAUX,C","sources":["actions/depositApplicationActions.ts","components/notice-accounts-table/filters/styles.ts","components/notice-accounts-table/types.ts","components/notice-accounts-table/view-more-button/ViewMoreButton.styles.ts","components/notice-accounts-table/OfferedNoticeAccountsTableUtils.tsx","components/notice-account-add-funds/types.ts","components/notice-account-withdrawal/types.ts","reducers/depositApplicationReducer.ts","components/notice-account-transactions/constants.ts","components/notice-account-transactions/messages.ts","actions/depositTransactionsActions.ts","selectors/depositTransactionsSelectors.ts","components/notice-account-transactions/styles.ts","components/notice-account-transactions/utils.tsx","reducers/depositTransactionsReducer.ts","store.ts","shared/utils/reduxLoopMutable.ts","reducers/constants.ts","reducers/index.ts","shared/i18n/I18nContainer.tsx","shared/utils/Logger.ts","shared/i18n/I18nErrorBoundary.tsx","components/dashboard-promo-box/styles.ts","components/dashboard-promo-box/messages.ts","components/dashboard-promo-box/DashboardPromoBox.tsx","pages/Home.tsx","routes.tsx","Wrapper.tsx","shared/components/FederatedModuleInitializer.tsx","bootstrap.tsx","components/notice-account-details/components/AccountSummary.styles.tsx","components/notice-account-details/utils.tsx","components/notice-account-transactions/types.ts","components/notice-accounts/components/styles.ts","components/notice-accounts/messages.ts","components/notice-accounts/styles.ts","components/styles.ts","constants.ts","helpers/index.ts","selectors/createSelector.ts","selectors/depositApplicationSelectors.ts","selectors/userSelectors.ts","shared/api/index.ts","shared/api/types.ts","shared/components/FormattedSignedNumber.styles.ts","shared/components/FormattedSignedNumber.tsx","shared/constants.ts","shared/i18n/constants.ts","shared/i18n/localeUtils.tsx","shared/integration-testing/test-elements-ids/index.ts","shared/integration-testing/test-elements-ids/failPageTestIds.ts","shared/integration-testing/test-elements-ids/dashboard.ts","shared/integration-testing/test-elements-ids/product.ts","shared/integration-testing/test-elements-ids/notice-account-details.ts","shared/integration-testing/test-elements-ids/notice-accounts-table-filters.ts","shared/integration-testing/test-elements-ids/notice-accounts.ts","shared/integration-testing/test-elements-ids/notice-account-transactions.ts","shared/integration-testing/test-elements-ids/add-funds.ts","shared/integration-testing/test-elements-ids/withdrawal.ts","shared/integration-testing/test-elements-ids/closure.ts","shared/integration-testing/test-elements-ids/shared.ts","shared/messages.ts","shared/types.ts","shared/utils/index.ts","styles.tsx","../node_modules/date-fns/locale|/work/node_modules/date-fns/locale|lazy|/^/.//.*//index/.js$/|exclude: /_lib/|groupOptions: {}|namespace object"],"sourcesContent":["// UTILS\nimport { ExtractActions } from 'src/shared/utils/reduxAction'\n\n// TYPES\nimport { FilterCategory } from 'src/components/notice-accounts-table/types'\nimport {\n NoticeAccountDetails,\n NoticeAccountItem,\n ProductDefinitionsResponse\n} from 'src/shared/api/types'\nimport { NoticeAccountAddFundsStep } from 'src/components/notice-account-add-funds/types'\nimport { NoticeAccountWithdrawalStep } from 'src/components/notice-account-withdrawal/types'\n\nexport const DepositApplicationReducerActionTypes = {\n SetProductDefinitions: 'noticeAccounts/SET_PRODUCT_DEFINITIONS',\n ToggleHasAgreedToDisclosureStatement:\n 'noticeAccounts/TOGGLE_HAS_AGREED_TO_DISCLOSURE_STATEMENT',\n ToggleHasAgreedToTerms: 'noticeAccounts/TOGGLE_HAS_AGREED_TO_TERMS',\n ResetConsentCheckboxesState: 'noticeAccounts/RESET_CONSENT_CHECKBOXES_STATE',\n UpdateCheckboxFilters: 'noticeAccounts/UPDATE_CHECKBOX_FILTERS',\n SetOpenNoticeAccounts: 'noticeAccounts/SET_OPEN_NOTICE_ACCOUNTS',\n SetAddFundsStep: 'noticeAccounts/SET_ADD_FUNDS_STEP',\n SetNoticeAccountDetails: 'noticeAccounts/SET_NOTICE_ACCOUNT_DETAILS',\n SetAddFundsAmount: 'noticeAccounts/SET_ADD_FUNDS_AMOUNT',\n ClearAddFundsState: 'noticeAccounts/CLEAR_ADD_FUNDS_STATE',\n SetAddFundsErrorMessage: 'noticeAccounts/SET_ADD_FUNDS_ERROR_MESSAGE',\n SetWithdrawalStep: 'noticeAccounts/SET_WITHDRAWAL_STEP',\n SetWithdrawalAmount: 'noticeAccounts/SET_WITHDRAWAL_AMOUNT',\n ClearWithdrawalState: 'noticeAccounts/CLEAR_WITHDRAWAL_STATE',\n SetWithdrawalErrorMessage: 'noticeAccounts/SET_WITHDRAWAL_ERROR_MESSAGE'\n} as const\n\nconst setProductDefinitions = (response: ProductDefinitionsResponse) =>\n ({\n type: DepositApplicationReducerActionTypes.SetProductDefinitions,\n payload: { response }\n } as const)\n\nconst toggleHasAgreedToDisclosureStatement = () => ({\n type: DepositApplicationReducerActionTypes.ToggleHasAgreedToDisclosureStatement\n})\n\nconst toggleHasAgreedToTerms = () => ({\n type: DepositApplicationReducerActionTypes.ToggleHasAgreedToTerms\n})\n\nconst resetConsentCheckboxesState = () => ({\n type: DepositApplicationReducerActionTypes.ResetConsentCheckboxesState\n})\n\nconst updateCheckboxFilters = (\n category: FilterCategory,\n selectedFilters: string[]\n) => ({\n type: DepositApplicationReducerActionTypes.UpdateCheckboxFilters,\n payload: { category, selectedFilters }\n})\n\nconst setOpenNoticeAccounts = (response: NoticeAccountItem[]) =>\n ({\n type: DepositApplicationReducerActionTypes.SetOpenNoticeAccounts,\n payload: { response }\n } as const)\n\nconst setNoticeAccountDetails = (noticeAccountDetails: NoticeAccountDetails) =>\n ({\n type: DepositApplicationReducerActionTypes.SetNoticeAccountDetails,\n payload: { noticeAccountDetails }\n } as const)\n\nconst setAddFundsStep = (activeStep: NoticeAccountAddFundsStep) =>\n ({\n type: DepositApplicationReducerActionTypes.SetAddFundsStep,\n payload: { activeStep }\n } as const)\n\nconst setAddFundsAmount = (amount: string) =>\n ({\n type: DepositApplicationReducerActionTypes.SetAddFundsAmount,\n payload: { amount }\n } as const)\n\nconst setAddFundsErrorMessage = (errorMessage: string) =>\n ({\n type: DepositApplicationReducerActionTypes.SetAddFundsErrorMessage,\n payload: { errorMessage }\n } as const)\n\nconst clearAddFundsState = () => ({\n type: DepositApplicationReducerActionTypes.ClearAddFundsState\n})\n\nconst setWithdrawalStep = (activeStep: NoticeAccountWithdrawalStep) =>\n ({\n type: DepositApplicationReducerActionTypes.SetWithdrawalStep,\n payload: { activeStep }\n } as const)\n\nconst setWithdrawalAmount = (amount: string) =>\n ({\n type: DepositApplicationReducerActionTypes.SetWithdrawalAmount,\n payload: { amount }\n } as const)\n\nconst setWithdrawalErrorMessage = (errorMessage: string) =>\n ({\n type: DepositApplicationReducerActionTypes.SetWithdrawalErrorMessage,\n payload: { errorMessage }\n } as const)\n\nconst clearWithdrawalState = () => ({\n type: DepositApplicationReducerActionTypes.ClearWithdrawalState\n})\n\nexport const actions = {\n setProductDefinitions,\n toggleHasAgreedToDisclosureStatement,\n toggleHasAgreedToTerms,\n resetConsentCheckboxesState,\n updateCheckboxFilters,\n setOpenNoticeAccounts,\n setAddFundsStep,\n setNoticeAccountDetails,\n setAddFundsAmount,\n setAddFundsErrorMessage,\n clearAddFundsState,\n setWithdrawalStep,\n setWithdrawalAmount,\n setWithdrawalErrorMessage,\n clearWithdrawalState\n}\n\nexport type DepositApplicationReducerAction = ExtractActions\n","import styled from 'styled-components'\nimport { FlexContainerWrapper, gridSettings } from 'wabelane'\n\nexport const StyledFilterDropdownWithMargin = styled.div`\n margin-right: 16px;\n\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n width: 100%;\n margin: 0;\n }\n`\nexport const StyledClearAllButtonWrapper = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n justify-content: flex-end;\n width: 100%;\n }\n`\n","import {\n CurrencyFilters,\n FilterColumn,\n FiltersWithSelectedStatus\n} from 'wabelane'\n\nexport enum FilterCategory {\n Currency = 'currencyFilter',\n PeriodDays = 'periodDaysFilter'\n}\n\nexport type NoticeAccountsTableItem = Record<\n NoticeAccountsTableColumnKeys,\n React.ReactNode\n>\n\nexport interface TableFilterDefinitions {\n columnId: FilterColumn\n values: T\n}\n\nexport interface NoticeAccountsFilterValues {\n value: string\n}\n\nexport type NoticeAccountsFilter =\n FiltersWithSelectedStatus[]\n\nexport interface NoticeAccountsFilters {\n [FilterCategory.Currency]: CurrencyFilters\n [FilterCategory.PeriodDays]: NoticeAccountsFilter\n}\n\nexport type NoticeAccountsCurrencyFilters =\n TableFilterDefinitions\n\nexport type NoticeAccountsStringFilters =\n TableFilterDefinitions\n\nexport enum NoticeAccountsTableColumnKeys {\n RateOverThreshold = 'RateOverThreshold',\n NoticeAccountName = 'NoticeAccountName',\n NoticeAccountPeriodDays = 'NoticeAccountPeriodDays',\n MinimumInitialDepositAmount = 'MinimumInitialDepositAmount',\n CurrencyCode = 'CurrencyCode',\n ViewDetails = 'ViewDetails'\n}\n\nexport interface NoticeAccountsTableFiltersProps extends NoticeAccountsFilters {\n setFilter: (columnId: string, filterValue: string[]) => void\n}\n\nexport interface DisabledColumnsSorting {\n shouldDisablePeriodSorting: boolean\n shouldDisableCurrencySorting: boolean\n}\n","import styled from 'styled-components'\nimport { SmallSecondaryButton } from 'wabelane'\n\nexport const StyledViewMoreButton = styled(SmallSecondaryButton)`\n margin-bottom: 0;\n`\n","import { Filters, IdType, Row } from 'react-table'\nimport { IntlShape } from 'react-intl'\nimport startsWith from 'lodash-es/startsWith'\n\n// UTILS\nimport { IntegrationTestIds } from 'src/shared/integration-testing'\n\n// STYLES & COMPONENTS\nimport { NoticeAccountsTableFilters } from 'src/components/notice-accounts-table/filters/NoticeAccountsTableFilters'\nimport { ViewMoreButton } from 'src/components/notice-accounts-table/view-more-button/ViewMoreButton'\n\n// TYPES & CONSTANTS\nimport {\n CurrencyFilterValues,\n CustomFilterFunction,\n FilterValue,\n FiltersWithSelectedStatus\n} from 'wabelane'\nimport * as messages from 'src/components/notice-accounts-table/messages'\nimport {\n DisabledColumnsSorting,\n NoticeAccountsFilters,\n NoticeAccountsCurrencyFilters,\n NoticeAccountsFilterValues,\n NoticeAccountsStringFilters,\n NoticeAccountsTableColumnKeys,\n NoticeAccountsTableItem\n} from 'src/components/notice-accounts-table/types'\nimport {\n ProductDefinition,\n ProductDefinitionFiltersDataResponse\n} from 'src/shared/api/types'\nimport { DEFAULT_PRECISION } from 'src/shared/constants'\n\nexport const renderNoticeAccountsFilters =\n ({ currencyFilter, periodDaysFilter }: NoticeAccountsFilters) =>\n >(\n _searchFilterValue: string,\n _filters: Filters,\n _setGlobalFilter: (filterValue: string) => void,\n setFilter: (columnId: string, filterValue: string[]) => void\n ) =>\n (\n \n )\n\nexport const buildFilterInitialValues = (\n currencyFilters: NoticeAccountsCurrencyFilters,\n periodDaysFilters: NoticeAccountsStringFilters\n) => [\n {\n id: NoticeAccountsTableColumnKeys.CurrencyCode,\n value: currencyFilters.values\n .filter(({ isSelected }) => isSelected)\n .map(({ value }) => value)\n },\n {\n id: NoticeAccountsTableColumnKeys.NoticeAccountPeriodDays,\n value: periodDaysFilters.values\n .filter(({ isSelected }) => isSelected)\n .map(({ value }) => value)\n }\n]\nexport const buildNoticeAccountsTableData = (\n intl: IntlShape,\n productList: ProductDefinition[]\n): NoticeAccountsTableItem[] =>\n productList.map(product => {\n const {\n id,\n precision,\n productName,\n currencyCode,\n rateOverThreshold,\n productPeriodDays,\n minimumInitialDepositAmount\n } = product\n\n const rateOverThresholdPercentage = `${intl.formatNumber(\n rateOverThreshold,\n { minimumFractionDigits: DEFAULT_PRECISION }\n )}%`\n const tableValueNoticeLengthFormatted = intl.formatMessage(\n messages.tableValueNoticeAccountDays,\n { days: productPeriodDays }\n )\n const minimumInitialDepositAmountFormatted = intl.formatNumber(\n minimumInitialDepositAmount,\n { minimumFractionDigits: precision }\n )\n const viewMoreButton = (\n \n )\n\n return {\n [NoticeAccountsTableColumnKeys.RateOverThreshold]:\n rateOverThresholdPercentage,\n [NoticeAccountsTableColumnKeys.NoticeAccountName]: productName,\n [NoticeAccountsTableColumnKeys.NoticeAccountPeriodDays]:\n tableValueNoticeLengthFormatted,\n [NoticeAccountsTableColumnKeys.MinimumInitialDepositAmount]:\n minimumInitialDepositAmountFormatted,\n [NoticeAccountsTableColumnKeys.CurrencyCode]: currencyCode,\n [NoticeAccountsTableColumnKeys.ViewDetails]: viewMoreButton\n }\n })\n\nexport const buildFilters = ({\n currencyFilters,\n productPeriodDayFilters\n}: ProductDefinitionFiltersDataResponse): NoticeAccountsFilters => ({\n currencyFilter: buildCurrencyFilters(currencyFilters),\n periodDaysFilter: buildPeriodDaysFilters(productPeriodDayFilters)\n})\n\nconst buildCurrencyFilters = (\n currencyFilter: CurrencyFilterValues[]\n): FiltersWithSelectedStatus[] =>\n currencyFilter.map(filter => ({\n ...filter,\n value: filter.code,\n isSelected: true\n }))\n\nconst buildPeriodDaysFilters = (\n periodDaysFilter: number[]\n): FiltersWithSelectedStatus[] =>\n periodDaysFilter.map(filter => ({\n value: filter.toString(),\n isSelected: true,\n Item: [filter]\n }))\n\nexport const customNoticeAccountsTableFilterFunction: CustomFilterFunction<\n NoticeAccountsTableItem,\n FilterValue[]\n> = (rows, idx, filterValue) =>\n rows.filter(row => {\n const [columnId] = idx\n const rowValue = row.values[columnId]\n\n if (columnId === NoticeAccountsTableColumnKeys.NoticeAccountPeriodDays) {\n return filterValue.some(value => startsWith(rowValue, value))\n }\n\n return filterValue.includes(rowValue)\n })\n\n/**\n * А function to override the amounts sorting for the minimum initial deposit column.\n * React table is applying sorting upon the formatted numbers, not upon\n * the actual number values, which means that the lexicographic order\n * will lead to results like: 300 > 1000. Because of the formatting,\n * using the constructor Number(a) return NaN, and this leaves the option\n * to first check the length of the string, and afterwards resort to\n * the lexicographic sorting.\n */\nexport const minimumDepositSortingOverride = (\n rowA: Row,\n rowB: Row,\n id: IdType\n) => {\n const rowAValue: string = rowA.values[id]\n const rowBValue: string = rowB.values[id]\n\n if (rowAValue.length > rowBValue.length) {\n return 1\n }\n\n if (rowAValue.length < rowBValue.length) {\n return -1\n }\n\n if (rowAValue > rowBValue) {\n return 1\n }\n\n if (rowAValue < rowBValue) {\n return -1\n }\n\n return 0\n}\n\nexport const updateFilters = (\n filters: NoticeAccountsFilterValues[],\n selectedFilters: string[]\n) =>\n filters.map(filter => {\n const isSelected = selectedFilters.includes(filter.value)\n\n return {\n ...filter,\n isSelected\n }\n })\n\nexport const getDisabledColumnsSorting = ({\n currencyFilter,\n periodDaysFilter\n}: NoticeAccountsFilters): DisabledColumnsSorting => ({\n shouldDisableCurrencySorting: currencyFilter.length === 1,\n shouldDisablePeriodSorting: periodDaysFilter.length === 1\n})\n","import { NoticeAccountDetails } from 'src/shared/api/types'\n\nexport const enum NoticeAccountAddFundsStep {\n Details = 'Details',\n Review = 'Review'\n}\n\nexport interface NoticeAccountAddFundsStepModel {\n id: NoticeAccountAddFundsStep\n}\n\nexport interface AddFundsDetailsProps {\n noticeAccountDetails: NoticeAccountDetails\n}\n\nexport interface AddFundsDetailsTitleProps {\n shouldRenderEditLink: boolean\n onChangeSelectedStep: (step: NoticeAccountAddFundsStep) => void\n noticeAccountDetails: NoticeAccountDetails\n}\n\nexport interface AddFundsReviewProps {\n noticeAccountDetails: NoticeAccountDetails\n}\n","import { NoticeAccountDetails } from 'src/shared/api/types'\n\nexport const enum NoticeAccountWithdrawalStep {\n Details = 'Details',\n Review = 'Review'\n}\n\nexport interface NoticeAccountWithdrawalStepModel {\n id: NoticeAccountWithdrawalStep\n}\n\nexport interface WithdrawalDetailsProps {\n noticeAccountDetails: NoticeAccountDetails\n}\n\nexport interface WithdrawalDetailsTitleProps {\n shouldRenderEditLink: boolean\n onChangeSelectedStep: (step: NoticeAccountWithdrawalStep) => void\n noticeAccountDetails: NoticeAccountDetails\n}\n\nexport interface WithdrawalReviewProps {\n noticeAccountDetails: NoticeAccountDetails\n}\n","import { Loop } from 'redux-loop'\nimport isEmpty from 'lodash-es/isEmpty'\n\n// UTILS\nimport { neverReached } from 'src/shared/utils/neverReachedReducerCase'\nimport {\n buildFilters,\n updateFilters\n} from 'src/components/notice-accounts-table/OfferedNoticeAccountsTableUtils'\nimport { Utils } from 'wabelane'\n\n// ACTIONS\nimport {\n DepositApplicationReducerAction,\n DepositApplicationReducerActionTypes,\n actions\n} from 'src/actions/depositApplicationActions'\n\n// TYPES & CONSTANTS\nimport {\n NoticeAccountDetails,\n NoticeAccountItem,\n ProductDefinition,\n WithdrawalState,\n AddFundsState\n} from 'src/shared/api/types'\n\n// TYPES & CONSTANTS\nimport { NoticeAccountsFilters } from 'src/components/notice-accounts-table/types'\nimport { NoticeAccountAddFundsStep } from 'src/components/notice-account-add-funds/types'\nimport { DEFAULT_PRECISION } from 'src/shared/constants'\nimport { NoticeAccountWithdrawalStep } from 'src/components/notice-account-withdrawal/types'\n\ntype SetProductDefinitionsAction = ReturnType<\n typeof actions.setProductDefinitions\n>\n\ntype UpdateCheckboxFiltersTableAction = ReturnType<\n typeof actions.updateCheckboxFilters\n>\n\ntype SetOpenNoticeAccountsAction = ReturnType<\n typeof actions.setOpenNoticeAccounts\n>\n\ntype SetNoticeAccountDetailsAction = ReturnType<\n typeof actions.setNoticeAccountDetails\n>\n\ntype SetAddFundsStepAction = ReturnType\n\ntype SetAddFundsAmountAction = ReturnType\n\ntype SetAddFundsErrorMessageAction = ReturnType<\n typeof actions.setAddFundsErrorMessage\n>\n\ntype SetWithdrawalStepAction = ReturnType\n\ntype SetWithdrawalAmountAction = ReturnType\n\ntype SetWithdrawalErrorMessageAction = ReturnType<\n typeof actions.setWithdrawalErrorMessage\n>\n\nexport interface DepositApplicationReducerState {\n products: ProductDefinition[]\n tableFilters: NoticeAccountsFilters\n hasAgreedToDisclosureStatement: boolean\n hasAgreedToTerms: boolean\n openNoticeAccounts: NoticeAccountItem[]\n hasFetchedOpenNoticeAccounts: boolean\n hasFetchedProductDefinitions: boolean\n noticeAccountDetails: NoticeAccountDetails\n addFundsState: AddFundsState\n withdrawalState: WithdrawalState\n}\n\nexport const initialState: DepositApplicationReducerState = {\n products: [],\n tableFilters: {\n periodDaysFilter: [],\n currencyFilter: []\n },\n hasAgreedToDisclosureStatement: false,\n hasAgreedToTerms: false,\n openNoticeAccounts: [],\n hasFetchedOpenNoticeAccounts: false,\n hasFetchedProductDefinitions: false,\n addFundsState: {\n activeStep: NoticeAccountAddFundsStep.Details,\n amount: '',\n errorMessage: ''\n },\n withdrawalState: {\n activeStep: NoticeAccountWithdrawalStep.Details,\n amount: '',\n errorMessage: ''\n },\n noticeAccountDetails: {\n id: 0,\n currencyCode: '',\n totalBalance: 0,\n threshold: 0,\n productName: '',\n maximumBalance: 0,\n minimumInitialDepositAmount: 0,\n productPeriodDays: 0,\n multiCurrencyAvailableBalance: 0,\n availableBalance: 0,\n precision: DEFAULT_PRECISION,\n withdrawalDate: null,\n hasPendingRateDecrease: false\n }\n}\n\ntype ReturnValue =\n | DepositApplicationReducerState\n | Loop\n\nexport function depositApplicationReducer(\n state = initialState,\n action: DepositApplicationReducerAction\n): ReturnValue {\n switch (action.type) {\n case DepositApplicationReducerActionTypes.SetProductDefinitions:\n return setDefinitionsTransformer(state, action)\n\n case DepositApplicationReducerActionTypes.ToggleHasAgreedToDisclosureStatement:\n return toggleHasAgreedToDisclosureStatementTransformer(state)\n\n case DepositApplicationReducerActionTypes.ToggleHasAgreedToTerms:\n return toggleHasAgreedToTermsTransformer(state)\n\n case DepositApplicationReducerActionTypes.ResetConsentCheckboxesState:\n return resetConsentCheckboxesStateTransformer(state)\n\n case DepositApplicationReducerActionTypes.UpdateCheckboxFilters:\n return updateCheckboxFiltersTransformer(state, action)\n\n case DepositApplicationReducerActionTypes.SetOpenNoticeAccounts:\n return setOpenNoticeAccountsTransformer(state, action)\n\n case DepositApplicationReducerActionTypes.SetNoticeAccountDetails:\n return setNoticeAccountDetailsTransformer(state, action)\n\n case DepositApplicationReducerActionTypes.SetAddFundsStep:\n return setAddFundsStepTransformer(state, action)\n\n case DepositApplicationReducerActionTypes.ClearAddFundsState:\n return clearAddFundsStateTransformer(state)\n\n case DepositApplicationReducerActionTypes.SetAddFundsAmount:\n return setAddFundsAmountTransformer(state, action)\n\n case DepositApplicationReducerActionTypes.SetAddFundsErrorMessage:\n return setAddFundsErrorMessageTransformer(state, action)\n\n case DepositApplicationReducerActionTypes.SetWithdrawalStep:\n return setWithdrawalStepTransformer(state, action)\n\n case DepositApplicationReducerActionTypes.ClearWithdrawalState:\n return clearWithdrawalStateTransformer(state)\n\n case DepositApplicationReducerActionTypes.SetWithdrawalAmount:\n return setWithdrawalAmountTransformer(state, action)\n\n case DepositApplicationReducerActionTypes.SetWithdrawalErrorMessage:\n return setWithdrawalErrorMessageTransformer(state, action)\n\n default: {\n neverReached(action)\n }\n }\n\n return state\n}\n\nfunction setDefinitionsTransformer(\n state: DepositApplicationReducerState,\n action: SetProductDefinitionsAction\n): ReturnValue {\n const {\n response: { productDefinitions, filtersData }\n } = action.payload\n\n const { currencyFilter, periodDaysFilter } = buildFilters(filtersData)\n\n const tableFilters: NoticeAccountsFilters = {\n currencyFilter,\n periodDaysFilter\n }\n\n return {\n ...state,\n products: productDefinitions,\n tableFilters,\n hasFetchedProductDefinitions: true\n }\n}\n\nfunction toggleHasAgreedToDisclosureStatementTransformer(\n state: DepositApplicationReducerState\n): ReturnValue {\n const { hasAgreedToDisclosureStatement } = state\n\n return {\n ...state,\n hasAgreedToDisclosureStatement: !hasAgreedToDisclosureStatement\n }\n}\n\nfunction toggleHasAgreedToTermsTransformer(\n state: DepositApplicationReducerState\n): ReturnValue {\n const { hasAgreedToTerms } = state\n\n return {\n ...state,\n hasAgreedToTerms: !hasAgreedToTerms\n }\n}\n\nfunction resetConsentCheckboxesStateTransformer(\n state: DepositApplicationReducerState\n): ReturnValue {\n return {\n ...state,\n hasAgreedToDisclosureStatement: initialState.hasAgreedToDisclosureStatement,\n hasAgreedToTerms: initialState.hasAgreedToTerms\n }\n}\n\nfunction updateCheckboxFiltersTransformer(\n state: DepositApplicationReducerState,\n action: UpdateCheckboxFiltersTableAction\n): ReturnValue {\n const { selectedFilters, category } = action.payload\n const { tableFilters } = state\n\n const updatedFilters = updateFilters(tableFilters[category], selectedFilters)\n\n return {\n ...state,\n tableFilters: {\n ...tableFilters,\n [category]: updatedFilters\n }\n }\n}\n\nfunction setOpenNoticeAccountsTransformer(\n state: DepositApplicationReducerState,\n action: SetOpenNoticeAccountsAction\n): ReturnValue {\n const { response } = action.payload\n\n // This value is set in the session storage and retrieved\n // by imali-app in order to determine whether\n // the user has access to notice accounts features\n sessionStorage.setItem(\n Utils.IS_DEPOSIT_APP_ACTIVE_SESSION_STORAGE_KEY,\n (!isEmpty(response)).toString()\n )\n\n return {\n ...state,\n openNoticeAccounts: response,\n hasFetchedOpenNoticeAccounts: true\n }\n}\n\nfunction setNoticeAccountDetailsTransformer(\n state: DepositApplicationReducerState,\n action: SetNoticeAccountDetailsAction\n): ReturnValue {\n const { noticeAccountDetails } = action.payload\n\n return {\n ...state,\n noticeAccountDetails: {\n ...noticeAccountDetails,\n withdrawalDate: noticeAccountDetails.withdrawalDate\n ? new Date(noticeAccountDetails.withdrawalDate)\n : null\n }\n }\n}\n\nfunction setAddFundsStepTransformer(\n state: DepositApplicationReducerState,\n action: SetAddFundsStepAction\n): ReturnValue {\n const { activeStep } = action.payload\n\n return { ...state, addFundsState: { ...state.addFundsState, activeStep } }\n}\n\nfunction setAddFundsAmountTransformer(\n state: DepositApplicationReducerState,\n action: SetAddFundsAmountAction\n): ReturnValue {\n const { amount } = action.payload\n\n return { ...state, addFundsState: { ...state.addFundsState, amount } }\n}\n\nfunction setAddFundsErrorMessageTransformer(\n state: DepositApplicationReducerState,\n action: SetAddFundsErrorMessageAction\n): ReturnValue {\n const { errorMessage } = action.payload\n\n return { ...state, addFundsState: { ...state.addFundsState, errorMessage } }\n}\n\nfunction clearAddFundsStateTransformer(\n state: DepositApplicationReducerState\n): ReturnValue {\n return {\n ...state,\n addFundsState: initialState.addFundsState\n }\n}\n\nfunction setWithdrawalStepTransformer(\n state: DepositApplicationReducerState,\n action: SetWithdrawalStepAction\n): ReturnValue {\n const { activeStep } = action.payload\n\n return { ...state, withdrawalState: { ...state.withdrawalState, activeStep } }\n}\n\nfunction setWithdrawalAmountTransformer(\n state: DepositApplicationReducerState,\n action: SetWithdrawalAmountAction\n): ReturnValue {\n const { amount } = action.payload\n\n return { ...state, withdrawalState: { ...state.withdrawalState, amount } }\n}\n\nfunction setWithdrawalErrorMessageTransformer(\n state: DepositApplicationReducerState,\n action: SetWithdrawalErrorMessageAction\n): ReturnValue {\n const { errorMessage } = action.payload\n\n return {\n ...state,\n withdrawalState: { ...state.withdrawalState, errorMessage }\n }\n}\n\nfunction clearWithdrawalStateTransformer(\n state: DepositApplicationReducerState\n): ReturnValue {\n return {\n ...state,\n withdrawalState: initialState.withdrawalState\n }\n}\n","import { MessageDescriptor } from 'react-intl'\n\n// TYPES & CONSTANTS\nimport { TransactionType } from 'src/components/notice-account-transactions/types'\nimport {\n adjustmentTransactionTypeText,\n fundsAddedTransactionTypeText,\n interestTransactionTypeText,\n openingBalanceTransactionTypeText,\n withdrawalTransactionTypeText,\n refundTransactionTypeText,\n closureOfAccountBalanceTransactionTypeText,\n pendingTransactionDescription,\n systemMigrationTransactionTypeText\n} from 'src/components/notice-account-transactions/messages'\n\nexport const TRANSACTION_TYPE_TEXT_MAP: Record<\n TransactionType,\n MessageDescriptor\n> = {\n [TransactionType.FundsAdded]: fundsAddedTransactionTypeText,\n [TransactionType.Interest]: interestTransactionTypeText,\n [TransactionType.Adjustment]: adjustmentTransactionTypeText,\n [TransactionType.Withdrawal]: withdrawalTransactionTypeText,\n [TransactionType.OpeningBalance]: openingBalanceTransactionTypeText,\n [TransactionType.Refund]: refundTransactionTypeText,\n [TransactionType.ClosureOfAccount]:\n closureOfAccountBalanceTransactionTypeText,\n [TransactionType.PendingWithdrawal]: pendingTransactionDescription,\n [TransactionType.SystemMigrated]: systemMigrationTransactionTypeText\n}\n\nexport const TRANSACTION_TYPE_FILTER_INITIAL_VALUES = [\n { value: TransactionType.Withdrawal, isSelected: true },\n { value: TransactionType.FundsAdded, isSelected: true },\n { value: TransactionType.Interest, isSelected: true }\n]\n\nexport const INITIAL_TABLE_FILTERS = {\n transactionTypeFilter: TRANSACTION_TYPE_FILTER_INITIAL_VALUES,\n endDateValue: null,\n startDateValue: null\n}\n\nexport const TRANSACTION_TYPES_FILTERS = [\n TransactionType.Interest,\n TransactionType.Withdrawal,\n TransactionType.FundsAdded\n]\n","import { MessageDescriptor } from 'react-intl'\n\nexport const transactionDateHeader: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.transactionDateHeader',\n defaultMessage: 'Date',\n description:\n 'The header for the date column in the notice account transactions table'\n}\n\nexport const transactionHeader: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.transactionHeader',\n defaultMessage: 'Transaction',\n description:\n 'The header for the transaction column in the notice account transactions table'\n}\n\nexport const creditHeader: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.creditHeader',\n defaultMessage: 'Credit',\n description:\n 'The header for the credit column in the notice account transactions table'\n}\n\nexport const debitHeader: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.debitHeader',\n defaultMessage: 'Debit',\n description:\n 'The header for the debit column in the notice account transactions table'\n}\n\nexport const closingBalanceHeader: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.closingBalanceHeader',\n defaultMessage: 'Closing balance',\n description:\n 'The header for the closing balance column in the notice account transactions table'\n}\n\nexport const displayingNumberOfNoticeAccountTransactionsText: MessageDescriptor =\n {\n id: 'deposit.displayingNumberOfNoticeAccountTransactionsText',\n defaultMessage:\n 'Displaying {displayedItemsCount} of {totalItemsCount} {totalItemsCount, plural, one {transaction} other {transactions}}',\n description:\n 'The text showing how much out of all the notice account transactions are currently displayed'\n }\n\nexport const fundsAddedTransactionTypeText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.fundsAddedTransactionTypeText',\n defaultMessage: 'Funds added',\n description:\n 'The text displayed as transaction type for the funds added transactions'\n}\n\nexport const interestTransactionTypeText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.interestTransactionTypeText',\n defaultMessage: 'Interest',\n description:\n 'The text displayed as transaction type for the interest transactions'\n}\n\nexport const adjustmentTransactionTypeText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.adjustmentTransactionTypeText',\n defaultMessage: 'Adjustment',\n description:\n 'The text displayed as transaction type for the adjustment transactions'\n}\n\nexport const withdrawalTransactionTypeText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.withdrawalTransactionTypeText',\n defaultMessage: 'Withdrawal',\n description:\n 'The text displayed as transaction type for the withdrawal transactions'\n}\n\nexport const openingBalanceTransactionTypeText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.openingBalanceTransactionTypeText',\n defaultMessage: 'Opening balance',\n description:\n 'The text displayed as transaction type for the opening balance transactions'\n}\n\nexport const refundTransactionTypeText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.refundTransactionTypeText',\n defaultMessage: 'Refund',\n description:\n 'The text displayed as transaction type for the refund transactions'\n}\n\nexport const closureOfAccountBalanceTransactionTypeText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.closureOfAccountTransactionTypeText',\n defaultMessage: 'Closure of account',\n description:\n 'The text displayed as transaction type for the closure of account transactions'\n}\n\nexport const systemMigrationTransactionTypeText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.systemMigrationTransactionTypeText',\n defaultMessage: 'System migration',\n description:\n 'The text displayed as transaction type for the system migration transactions'\n}\n\nexport const applyFilterText: MessageDescriptor = {\n id: 'deposit.noticeAccount.applyButtonFilterText',\n defaultMessage: 'Apply filters',\n description: 'Apply button text for the filters'\n}\n\nexport const transactionTypeFilterText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.transactionTypeFilterText',\n defaultMessage: 'Transactions',\n description: 'Description for transaction type filter dropdown'\n}\n\nexport const transactionDateFilterText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.transactionDateFilterText',\n defaultMessage: 'Date range',\n description: 'Description for transaction date filter'\n}\n\nexport const transactionTableClearAllFiltersButtonText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.clearAllFiltersButtonText',\n defaultMessage: 'Clear',\n description: 'The text to be shown in the table clear all filters button'\n}\n\nexport const completedTransactionsTabTitle: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.completedTabTitle',\n defaultMessage: 'Completed',\n description: 'The title of the completed notice account transactions tab'\n}\n\nexport const pendingTransactionsTabTitle: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.pendingTabTitle',\n defaultMessage: 'Pending withdrawals',\n description: 'The title of the pending notice account transactions tab'\n}\n\nexport const displayingNumberOfNoticeAccountPendingTransactionsText: MessageDescriptor =\n {\n id: 'deposit.noticeAccountTransactions.displayingNumberOfPendingTransactionsText',\n defaultMessage:\n 'Displaying {displayedItemsCount} of {totalItemsCount} pending {totalItemsCount, plural, one {withdrawal} other {withdrawals}}',\n description:\n 'The text showing how much out of all the notice account pending transactions are currently displayed'\n }\n\nexport const pendingTransactionsClearDateHeader: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.clearDateHeader',\n defaultMessage: 'Clear date',\n description:\n 'The header text for the pending notice account transactions date header'\n}\n\nexport const pendingTransactionsDescriptionHeader: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.descriptionHeader',\n defaultMessage: 'Description',\n description:\n 'The header text for the pending notice account transactions description header'\n}\n\nexport const pendingTransactionsWithdrawalAmountHeader: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.withdrawalAmountHeader',\n defaultMessage: 'Withdrawal amount',\n description:\n 'The header text for the pending notice account transactions withdrawal amount header'\n}\n\nexport const pendingTransactionDescription: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.pendingTransactionDescription',\n defaultMessage: 'Pending withdrawal to multi-currency account',\n description:\n 'The text for the pending notice account transactions description column'\n}\n\nexport const fetchTransactionsErrorMessage: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.fetchTransactionsErrorMessage',\n defaultMessage:\n 'Sorry, there was problem getting your data. Please try a different filter, or call us on {contactNumber}.',\n description: 'Text shown when transactions request fails'\n}\n\nexport const fetchTransactionsFileErrorMessage: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.fetchTransactionsFileErrorMessage',\n defaultMessage:\n 'Sorry, we are unable to download this document at the moment. If the problem persists, please contact our customer service team {customerServicePhoneNumber}.',\n description: 'Text shown when transactions file download request fails'\n}\n\nexport const pendingTransactionsNoResultsText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.pendingTransactionsNoResultsText',\n defaultMessage: 'No pending transactions to be displayed.',\n description: 'Text shown for no pending transaction'\n}\n\nexport const closedAccountNotificationMessage: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.closedAccountTransactionsNotification',\n defaultMessage: 'Notice account closed on {closureDate}.',\n description: 'Closed account transaction notification'\n}\n\nexport const migratedAccountNotificationMessage: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.migratedAccountNotification',\n defaultMessage: 'You are viewing transactions before {migrationDate}.',\n description: 'Migrated account transaction notification'\n}\n\nexport const beforeMigratedDateText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.beforeMigrationDateText',\n defaultMessage: 'Before {migratedDate}',\n description: 'Migrated account before migration date text'\n}\n\nexport const afterMigratedDateText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.afterMigrationDateText',\n defaultMessage: 'After {migratedDate}',\n description: 'Migrated account after migration date text'\n}\n\nexport const selectTitleText: MessageDescriptor = {\n id: 'deposit.noticeAccountTransactions.selectTitleText',\n defaultMessage: 'Display transactions',\n description: 'Migrated account select title text'\n}\n","// UTILS\nimport { ExtractActions } from 'src/shared/utils/reduxAction'\n\n// TYPES\nimport { NoticeAccountTransactions } from 'src/shared/api/types'\nimport {\n FilterCategory,\n MigrationOptions,\n TransactionTab,\n TransactionType\n} from 'src/components/notice-account-transactions/types'\nimport { FilterColumn, FilterValue } from 'wabelane'\n\nexport const DepositTransactionsActionTypes = {\n SetNoticeAccountTransactions: 'deposit/SET_NOTICE_ACCOUNT_TRANSACTIONS',\n SetCurrentPage: 'deposit/SET_CURRENT_PAGE',\n SetPageSize: 'deposit/SET_PAGE_SIZE',\n UpdateCheckboxFilters: 'deposit/UPDATE_CHECKBOX_FILTERS',\n FilterCompletedTransactions: 'deposit/FILTER_COMPLETED_TRANSACTIONS',\n SetSelectedTransactionsTab: 'deposit/SET_SELECTED_TRANSACTIONS_TAB',\n ResetTableState: 'deposit/RESET_TABLE_STATE',\n SetMigrationOption: 'deposit/SET_MIGRATION_OPTION',\n SetDateFilters: 'deposit/SET_DATE_FILTERS'\n} as const\n\nconst setNoticeAccountTransactions = (\n transactionsData: NoticeAccountTransactions\n) =>\n ({\n type: DepositTransactionsActionTypes.SetNoticeAccountTransactions,\n payload: { transactionsData }\n } as const)\n\nconst setCurrentPage = (currentPage: number) =>\n ({\n type: DepositTransactionsActionTypes.SetCurrentPage,\n payload: {\n currentPage\n }\n } as const)\n\nconst setPageSize = (pageSize: number) =>\n ({\n type: DepositTransactionsActionTypes.SetPageSize,\n payload: { pageSize }\n } as const)\n\nconst updateCheckboxFilters = (\n category: FilterCategory.TransactionType,\n selectedFilters: TransactionType[]\n) =>\n ({\n type: DepositTransactionsActionTypes.UpdateCheckboxFilters,\n payload: { category, selectedFilters }\n } as const)\n\nconst filterCompletedTransactions = (\n filterValues: Record\n) =>\n ({\n type: DepositTransactionsActionTypes.FilterCompletedTransactions,\n payload: { filterValues }\n } as const)\n\nconst setSelectedTransactionsTab = (selectedTransactionsTab: TransactionTab) =>\n ({\n type: DepositTransactionsActionTypes.SetSelectedTransactionsTab,\n payload: { selectedTransactionsTab }\n } as const)\n\nconst resetTableState = () => ({\n type: DepositTransactionsActionTypes.ResetTableState\n})\n\nconst setMigrationOption = (\n migratedDate: Date | null,\n selectedMigrationOption: MigrationOptions\n) => ({\n type: DepositTransactionsActionTypes.SetMigrationOption,\n payload: { migratedDate, selectedMigrationOption }\n})\n\nconst setDateFilters = (\n startDateValue: Date | null,\n endDateValue: Date | null\n) => ({\n type: DepositTransactionsActionTypes.SetDateFilters,\n payload: { startDateValue, endDateValue }\n})\n\nexport const actions = {\n setNoticeAccountTransactions,\n setCurrentPage,\n setPageSize,\n updateCheckboxFilters,\n filterCompletedTransactions,\n setSelectedTransactionsTab,\n resetTableState,\n setMigrationOption,\n setDateFilters\n}\n\nexport type DepositTransactionsAction = ExtractActions\n","// UTILS\nimport { createSelector } from 'src/selectors/createSelector'\n\n// TYPES\nimport { StoreState } from 'src/shared/types'\n\nconst getDepositTransactionsState = (state: StoreState) =>\n state.depositTransactions\n\nexport const getNoticeAccountTransactions = createSelector(\n getDepositTransactionsState,\n depositTransactionsState => depositTransactionsState.transactions\n)\n\nexport const getSelectedTransactionTypes = createSelector(\n getDepositTransactionsState,\n depositTransactionsState =>\n depositTransactionsState.tableFilters.transactionTypeFilter\n .filter(type => type.isSelected)\n .map(type => type.value)\n)\n\nexport const getNoticeAccountTransactionsFilters = createSelector(\n getDepositTransactionsState,\n depositTransactionsState => depositTransactionsState.tableFilters\n)\n\nexport const getSelectedTransactionsTab = createSelector(\n getDepositTransactionsState,\n depositTransactionsState => depositTransactionsState.selectedTransactionsTab\n)\n\nexport const getNoticeAccountTransactionsPaginationInfo = createSelector(\n getDepositTransactionsState,\n getSelectedTransactionsTab,\n (depositTransactionsState, selectedTransactionsTab) =>\n depositTransactionsState.paginationInfoMap[selectedTransactionsTab]\n)\n\nexport const getSelectedMigrationOption = createSelector(\n getDepositTransactionsState,\n depositTransactionState => depositTransactionState.selectedMigrationOption\n)\n","import { ViewTitle } from 'src/styles'\nimport styled from 'styled-components'\nimport {\n FlexContainerWrapper,\n SecondaryTextV2,\n TextV2,\n colours,\n gridSettings,\n largeFontStyle,\n defaultFontStyle,\n ToastNotification\n} from 'wabelane'\n\nexport const DropdownButtonStyle = {\n fontSize: '10px',\n fontWeight: 700,\n justifyContent: 'space-between',\n color: colours.primary_text\n}\n\nexport const StyledClearAllButtonWrapper = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n margin: 0;\n justify-content: flex-end;\n width: 100%;\n }\n`\n\nexport const StyledViewTitle = styled(ViewTitle)`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: flex-end;\n\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n flex-direction: column;\n align-items: flex-start;\n }\n`\n\nexport const SelectContainer = styled.div`\n ${largeFontStyle}\n display: flex;\n flex-direction: row;\n align-items: flex-end;\n text-transform: uppercase;\n line-height: 18px;\n font-size: 10px;\n`\n\nexport const SelectTitleContainer = styled.div`\n display: flex;\n flex-shrink: 0;\n line-height: 18px;\n font-size: 10px;\n`\n\nexport const DatePickerWrapper = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n width: 100%;\n }\n`\n\nexport const SelectionTabWrapper = styled(FlexContainerWrapper)<{\n isSelected: boolean\n}>`\n cursor: pointer;\n ${({ isSelected }) =>\n isSelected\n ? `border-bottom: 2px solid ${colours.box_item_border_selected_color};`\n : ''}\n`\n\nexport const SelectionTabText = styled(SecondaryTextV2)`\n font-size: 10px;\n ${largeFontStyle}\n text-transform: uppercase;\n`\n\nexport const StyledText = styled(TextV2)`\n ${defaultFontStyle}\n`\n\nexport const StyledToastNotification = styled(ToastNotification)`\n margin: 0 0 32px;\n padding: 0;\n`\n\nexport const StyledNotificationMessage = styled(TextV2)`\n text-align: left;\n line-height: 24px;\n margin: 12px 16px;\n`\n","import { IntlShape } from 'react-intl'\nimport { Filters } from 'react-table'\nimport subDays from 'date-fns/esm/subDays'\n\n// UTILS\nimport { getDateOneYearBack } from 'src/shared/utils'\n\n// COMPONENTS\nimport { TransactionsTableFilters } from 'src/components/notice-account-transactions/components/TransactionsTableFilters'\nimport { NeutralFormattedDate } from 'wabelane'\nimport { FormattedSignedNumber } from 'src/shared/components/FormattedSignedNumber'\n\n// TYPES & CONSTANTS\nimport {\n InitialTransactionTypeFilterValues,\n NoticeAccountPendingTransactionsColumnKeys,\n NoticeAccountPendingTransactionsTableItem,\n NoticeAccountTransaction,\n RenderTransactionFiltersProps,\n NoticeAccountTransactionsColumnKeys,\n NoticeAccountTransactionsTableItem,\n TransactionDirection,\n TransactionTypeFilters\n} from 'src/components/notice-account-transactions/types'\nimport { NumberDirection } from 'src/shared/types'\nimport { TRANSACTION_TYPE_TEXT_MAP } from 'src/components/notice-account-transactions/constants'\nimport { pendingTransactionDescription } from 'src/components/notice-account-transactions/messages'\n\nexport const buildNoticeAccountTransactionsTableData = (\n intl: IntlShape,\n transactions: NoticeAccountTransaction[]\n): NoticeAccountTransactionsTableItem[] =>\n transactions.map(\n ({\n date,\n amount,\n direction,\n precision,\n closingBalance,\n transactionType\n }) => {\n const formattedAmount = (\n \n )\n const creditAmount =\n direction === TransactionDirection.Credit ? formattedAmount : '-'\n const debitAmount =\n direction === TransactionDirection.Debit ? formattedAmount : '-'\n const transactionTypeText = intl.formatMessage(\n TRANSACTION_TYPE_TEXT_MAP[transactionType]\n )\n const formattedClosingBalance = intl.formatNumber(closingBalance, {\n minimumFractionDigits: precision\n })\n\n return {\n [NoticeAccountTransactionsColumnKeys.TransactionDate]: (\n \n ),\n [NoticeAccountTransactionsColumnKeys.Transaction]: transactionTypeText,\n [NoticeAccountTransactionsColumnKeys.Credit]: creditAmount,\n [NoticeAccountTransactionsColumnKeys.Debit]: debitAmount,\n [NoticeAccountTransactionsColumnKeys.ClosingBalance]:\n formattedClosingBalance\n }\n }\n )\n\nexport const renderTransactionFilters =\n ({\n transactionTypeFilter,\n startDateValue,\n endDateValue,\n closureDate,\n noticeAccountId\n }: RenderTransactionFiltersProps) =>\n >(\n _searchFilterValue: string,\n filters: Filters,\n _setGlobalFilter: (filterValue: string) => void,\n setFilter: (columnId: string, filterValue: string[]) => void\n ) =>\n (\n \n )\n\nexport const buildFilterInitialValues = (\n transactionTypeFilter: InitialTransactionTypeFilterValues,\n startDateValue: Date | null,\n endDateValue: Date | null\n) => [\n {\n id: NoticeAccountTransactionsColumnKeys.Transaction,\n value: transactionTypeFilter.values\n .filter(({ isSelected }) => isSelected)\n .map(({ value }) => value)\n },\n {\n id: NoticeAccountTransactionsColumnKeys.TransactionDate,\n value: { startDateValue, endDateValue }\n }\n]\n\nexport const updateFilters = (\n filters: TransactionTypeFilters,\n selectedFilters: string[]\n) =>\n filters.map(filter => {\n const isSelected = selectedFilters.includes(filter.value)\n\n return {\n ...filter,\n isSelected\n }\n })\n\nexport const buildNoticeAccountPendingTransactionsTableData = (\n intl: IntlShape,\n transactions: NoticeAccountTransaction[]\n): NoticeAccountPendingTransactionsTableItem[] =>\n transactions.map(({ date, amount, precision }) => {\n const withdrawalAmount = (\n \n )\n const transactionTypeText = intl.formatMessage(\n pendingTransactionDescription\n )\n\n return {\n [NoticeAccountPendingTransactionsColumnKeys.ClearDate]: (\n \n ),\n [NoticeAccountPendingTransactionsColumnKeys.Description]:\n transactionTypeText,\n [NoticeAccountPendingTransactionsColumnKeys.WithdrawalAmount]:\n withdrawalAmount\n }\n })\n\nexport const getDatesValues = (\n isBeforeMigrationOptionSelected: boolean,\n migratedDate: Date | null\n) => {\n const startDateValue =\n isBeforeMigrationOptionSelected && migratedDate !== null\n ? getDateOneYearBack(migratedDate)\n : new Date(subDays(new Date(), 30))\n\n const endDateValue =\n isBeforeMigrationOptionSelected && migratedDate !== null\n ? new Date(migratedDate)\n : new Date()\n\n return { startDateValue, endDateValue }\n}\n","// UTILS\nimport { neverReached } from 'src/shared/utils/neverReachedReducerCase'\nimport {\n getDatesValues,\n updateFilters\n} from 'src/components/notice-account-transactions/utils'\n\n// ACTIONS\nimport {\n DepositTransactionsAction,\n DepositTransactionsActionTypes,\n actions\n} from 'src/actions/depositTransactionsActions'\n\n// TYPES & CONSTANTS\nimport {\n DatesFilterSelectedValues,\n MigrationOptions,\n NoticeAccountTransaction,\n NoticeAccountTransactionTableFilters,\n NoticeAccountTransactionsColumnKeys,\n PaginationInfoMap,\n TransactionTab,\n TransactionType\n} from 'src/components/notice-account-transactions/types'\nimport {\n DEFAULT_PAGINATION_INFO,\n DEFAULT_PAGINATION_INFO_MAP\n} from 'src/shared/constants'\nimport { INITIAL_TABLE_FILTERS } from 'src/components/notice-account-transactions/constants'\n\ntype SetNoticeAccountTransactionsAction = ReturnType<\n typeof actions.setNoticeAccountTransactions\n>\n\ntype UpdateCheckboxFiltersAction = ReturnType<\n typeof actions.updateCheckboxFilters\n>\n\ntype SetMigrationOptionAction = ReturnType\n\ntype SetDateFilters = ReturnType\n\ntype SetCurrentPageAction = ReturnType\n\ntype FilterCompletedTransactionsAction = ReturnType<\n typeof actions.filterCompletedTransactions\n>\n\ntype SetPageSizeAction = ReturnType\n\ntype SetSelectedTransactionsTabAction = ReturnType<\n typeof actions.setSelectedTransactionsTab\n>\n\nexport interface DepositTransactionsState {\n transactions: NoticeAccountTransaction[]\n tableFilters: NoticeAccountTransactionTableFilters\n paginationInfoMap: PaginationInfoMap\n selectedTransactionsTab: TransactionTab\n selectedMigrationOption: MigrationOptions\n}\n\nexport const initialState: DepositTransactionsState = {\n transactions: [],\n paginationInfoMap: DEFAULT_PAGINATION_INFO_MAP,\n tableFilters: INITIAL_TABLE_FILTERS,\n selectedTransactionsTab: TransactionTab.Completed,\n selectedMigrationOption: MigrationOptions.AfterMigrationDate\n}\n\ntype ReturnValue = DepositTransactionsState\n\nexport function depositTransactionsReducer(\n state = initialState,\n action: DepositTransactionsAction\n): ReturnValue {\n switch (action.type) {\n case DepositTransactionsActionTypes.SetNoticeAccountTransactions: {\n return setNoticeAccountTransactionsTransformer(state, action)\n }\n\n case DepositTransactionsActionTypes.FilterCompletedTransactions: {\n return filterCompletedTransactionsTransformer(state, action)\n }\n\n case DepositTransactionsActionTypes.SetMigrationOption: {\n return setMigrationOptionTransformer(state, action)\n }\n\n case DepositTransactionsActionTypes.SetCurrentPage: {\n return setCurrentPageTransformer(state, action)\n }\n\n case DepositTransactionsActionTypes.SetPageSize: {\n return setPageSizeTransformer(state, action)\n }\n\n case DepositTransactionsActionTypes.UpdateCheckboxFilters: {\n return updateCheckboxFiltersTransformer(state, action)\n }\n\n case DepositTransactionsActionTypes.SetSelectedTransactionsTab: {\n return setSelectedTransactionsTabTransformer(state, action)\n }\n\n case DepositTransactionsActionTypes.ResetTableState: {\n return resetTableStateTransformer(state)\n }\n\n case DepositTransactionsActionTypes.SetDateFilters: {\n return setDateFiltersTransformer(state, action)\n }\n\n default: {\n neverReached(action)\n }\n }\n\n return state\n}\n\nfunction setNoticeAccountTransactionsTransformer(\n state: DepositTransactionsState,\n action: SetNoticeAccountTransactionsAction\n): ReturnValue {\n const {\n transactionsData: { items: transactions, paginationInfo }\n } = action.payload\n const { paginationInfoMap, selectedTransactionsTab } = state\n const currentPaginationInfoForTab = paginationInfoMap[selectedTransactionsTab]\n\n const { resultsPerPage, ...paginationInfoProps } = paginationInfo\n const newPaginationInfoForTab = {\n ...currentPaginationInfoForTab,\n ...paginationInfoProps\n }\n\n return {\n ...state,\n transactions,\n paginationInfoMap: {\n ...paginationInfoMap,\n [selectedTransactionsTab]: newPaginationInfoForTab\n }\n }\n}\n\nfunction setCurrentPageTransformer(\n state: DepositTransactionsState,\n action: SetCurrentPageAction\n): ReturnValue {\n const { currentPage } = action.payload\n const { paginationInfoMap, selectedTransactionsTab } = state\n const currentPaginationInfoForTab = paginationInfoMap[selectedTransactionsTab]\n\n return {\n ...state,\n paginationInfoMap: {\n ...paginationInfoMap,\n [selectedTransactionsTab]: { ...currentPaginationInfoForTab, currentPage }\n }\n }\n}\n\nfunction setPageSizeTransformer(\n state: DepositTransactionsState,\n action: SetPageSizeAction\n): ReturnValue {\n const { pageSize } = action.payload\n const { paginationInfoMap, selectedTransactionsTab } = state\n const currentPaginationInfoForTab = paginationInfoMap[selectedTransactionsTab]\n\n return {\n ...state,\n paginationInfoMap: {\n ...paginationInfoMap,\n [selectedTransactionsTab]: {\n ...currentPaginationInfoForTab,\n resultsPerPage: pageSize\n }\n }\n }\n}\n\nfunction updateCheckboxFiltersTransformer(\n state: DepositTransactionsState,\n action: UpdateCheckboxFiltersAction\n): ReturnValue {\n const { selectedFilters, category } = action.payload\n const { tableFilters, paginationInfoMap } = state\n const paginationInfo = paginationInfoMap[TransactionTab.Completed]\n\n const updatedFilters = updateFilters(tableFilters[category], selectedFilters)\n\n return {\n ...state,\n tableFilters: {\n ...tableFilters,\n [category]: updatedFilters\n },\n paginationInfoMap: {\n ...paginationInfoMap,\n [TransactionTab.Completed]: {\n ...paginationInfo,\n currentPage: DEFAULT_PAGINATION_INFO.currentPage\n }\n }\n }\n}\n\nfunction filterCompletedTransactionsTransformer(\n state: DepositTransactionsState,\n action: FilterCompletedTransactionsAction\n): ReturnValue {\n const { filterValues } = action.payload\n const { tableFilters, paginationInfoMap, selectedTransactionsTab } = state\n const { transactionTypeFilter } = tableFilters\n const selectedTabPaginationInfo = paginationInfoMap[selectedTransactionsTab]\n\n const transactionTypeValues = filterValues[\n NoticeAccountTransactionsColumnKeys.Transaction\n ] as TransactionType[]\n const selectedDatesValues =\n filterValues[NoticeAccountTransactionsColumnKeys.TransactionDate]\n const startDateSelectedValue =\n selectedDatesValues[DatesFilterSelectedValues.StartDate]\n const endDateSelectedValue =\n selectedDatesValues[DatesFilterSelectedValues.EndDate]\n\n const selectedTransactionTypes = transactionTypeFilter.map(filter => ({\n ...filter,\n isSelected: transactionTypeValues.includes(filter.value)\n }))\n\n const updatedPaginationInfoMap: PaginationInfoMap = {\n ...paginationInfoMap,\n [selectedTransactionsTab]: {\n ...selectedTabPaginationInfo,\n currentPage: 1\n }\n }\n\n return {\n ...state,\n paginationInfoMap: updatedPaginationInfoMap,\n tableFilters: {\n ...tableFilters,\n startDateValue: startDateSelectedValue,\n endDateValue: endDateSelectedValue,\n transactionTypeFilter: selectedTransactionTypes\n }\n }\n}\n\nfunction setMigrationOptionTransformer(\n state: DepositTransactionsState,\n action: SetMigrationOptionAction\n): ReturnValue {\n const { migratedDate, selectedMigrationOption } = action.payload\n\n const isBeforeMigrationOptionSelected =\n selectedMigrationOption === MigrationOptions.BeforeMigrationDate\n\n const { startDateValue, endDateValue } = getDatesValues(\n isBeforeMigrationOptionSelected,\n migratedDate\n )\n\n return {\n ...state,\n selectedMigrationOption: selectedMigrationOption,\n selectedTransactionsTab: isBeforeMigrationOptionSelected\n ? TransactionTab.Completed\n : state.selectedTransactionsTab,\n tableFilters: {\n ...state.tableFilters,\n startDateValue: startDateValue,\n endDateValue: endDateValue\n }\n }\n}\n\nfunction resetTableStateTransformer(\n state: DepositTransactionsState\n): ReturnValue {\n return {\n ...state,\n tableFilters: INITIAL_TABLE_FILTERS,\n selectedTransactionsTab: initialState.selectedTransactionsTab,\n paginationInfoMap: DEFAULT_PAGINATION_INFO_MAP,\n selectedMigrationOption: MigrationOptions.AfterMigrationDate\n }\n}\n\nfunction setDateFiltersTransformer(\n state: DepositTransactionsState,\n action: SetDateFilters\n): ReturnValue {\n const { startDateValue, endDateValue } = action.payload\n\n return {\n ...state,\n tableFilters: {\n ...state.tableFilters,\n startDateValue,\n endDateValue\n }\n }\n}\n\nfunction setSelectedTransactionsTabTransformer(\n state: DepositTransactionsState,\n action: SetSelectedTransactionsTabAction\n): ReturnValue {\n const { selectedTransactionsTab } = action.payload\n\n return {\n ...state,\n selectedTransactionsTab,\n transactions: initialState.transactions\n }\n}\n","import noop from 'lodash-es/noop'\nimport { createStore } from 'redux'\nimport { install } from 'redux-loop'\nimport { composeWithDevTools } from 'redux-devtools-extension/logOnlyInProduction'\n\n// UTILS\nimport { getAvailableLanguages } from 'src/shared/i18n/localeUtils'\nimport { combineReducers } from 'src/shared/utils/reduxLoopMutable'\n\n// REDUCERS\nimport createI18nReducer from 'babel-cms/src/I18nProvider/reducer'\nimport { depositApplicationReducer } from 'src/reducers/depositApplicationReducer'\nimport { depositTransactionsReducer } from 'src/reducers/depositTransactionsReducer'\n\n// TYPES & CONSTANTS\nimport { config as cmsConfig } from 'babel-cms'\nimport { StoreState, StoreWithInjection } from 'src/shared/types'\nimport { APP_NAME } from 'src/shared/i18n/constants'\n\nconst composeEnhancers = composeWithDevTools({\n serialize: true,\n trace: true\n})\n\nexport const enhancer = composeEnhancers(\n install({ DONT_LOG_ERRORS_ON_HANDLED_FAILURES: true })\n)\n\nexport const reducers = combineReducers({\n depositI18n: createI18nReducer(\n cmsConfig.availableLanguages.filter(lang =>\n getAvailableLanguages().includes(lang.locale)\n ),\n APP_NAME\n ),\n depositApplication: depositApplicationReducer,\n depositTransactions: depositTransactionsReducer\n})\n\nexport const store = createStore(\n reducers,\n {},\n enhancer\n) as StoreWithInjection\n\nstore.injectReducers = _ => noop\n","import { loop, liftState, Cmd, getModel, getCmd } from 'redux-loop'\nimport {\n combineReducers as loopCombineReducers,\n Store,\n Action,\n Reducer\n} from 'redux'\n\nexport const combineReducers =\n (reducers: Record) => (state: Store, action: Action) => {\n const filteredState = Object.keys(reducers).reduce(\n (filteredReducers, key) => ({ ...filteredReducers, [key]: state[key] }),\n {}\n )\n\n const combinedFilteredReducers = loopCombineReducers(reducers)(\n filteredState,\n action as never\n )\n\n const resultLoop = Object.keys(reducers).reduce((currentLoop, key) => {\n const result = liftState(combinedFilteredReducers[key])\n const newState = {\n ...getModel(currentLoop),\n [key]: getModel(result)\n }\n const newCommand = Cmd.list([\n getCmd(currentLoop) || Cmd.none,\n getCmd(result) || Cmd.none\n ])\n\n return loop(newState, newCommand)\n }, loop(state, Cmd.none))\n\n return resultLoop\n }\n","import { AppName } from 'babel-cms/src/I18nProvider/types/i18n'\n\nexport const APP_NAME: AppName = 'deposit'\n","// UTILS\nimport { getAvailableLanguages } from 'src/shared/i18n/localeUtils'\n\n// REDUCERS\nimport createI18nReducer from 'babel-cms/src/I18nProvider/reducer'\nimport { depositApplicationReducer } from 'src/reducers/depositApplicationReducer'\nimport { depositTransactionsReducer } from 'src/reducers/depositTransactionsReducer'\n\n// TYPES & CONSTANTS\nimport { Reducer } from 'redux'\nimport { config as cmsConfig } from 'babel-cms'\nimport { APP_NAME } from 'src/reducers/constants'\n\nexport const reducers: Record = {\n depositI18n: createI18nReducer(\n cmsConfig.availableLanguages.filter(lang =>\n getAvailableLanguages().includes(lang.locale)\n ),\n APP_NAME\n ),\n depositApplication: depositApplicationReducer,\n depositTransactions: depositTransactionsReducer\n}\n","import * as React from 'react'\nimport isEmpty from 'lodash-es/isEmpty'\nimport enGB from 'date-fns/esm/locale/en-GB'\nimport { connect } from 'react-redux'\n\n// UTILS\nimport {\n getLocaleObject,\n registerLocale,\n setDefaultLocale\n} from 'src/shared/i18n/localeUtils'\n\n// ACTIONS\nimport {\n toggleMessageIds,\n getContent as getContentAction\n} from 'babel-cms/src/I18nProvider/actions'\n\n// SELECTORS\nimport {\n isPreview,\n isMessageIdsVisible,\n getLocale,\n getAppName,\n getMessages,\n getContentIsReady\n} from 'babel-cms/src/I18nProvider/selectors'\n\n// COMPONENTS\nimport I18nProvider from 'babel-cms/src/I18nProvider'\n\n// TYPES & CONSTANTS\nimport { AppName } from 'babel-cms/src/I18nProvider/types/i18n'\nimport { APP_NAME, MISSING_LOCALE_ERROR_TEXT } from 'src/shared/i18n/constants'\n\ninterface I18nContainerOwnProps {\n defaultLocale?: string\n children?: React.ReactNode\n}\n\ninterface I18nContainerStateProps {\n locale: string\n appName: AppName\n messages: Record\n externalMessages: Record\n isPreview: boolean\n isMessageIdsVisible: boolean\n isContentReady: boolean\n}\n\ninterface I18nContainerDispatchProps {\n getMessages: () => any\n toggleMessageIds: () => any\n}\n\nexport type LocaleInitialiserProps = I18nContainerStateProps &\n I18nContainerDispatchProps &\n I18nContainerOwnProps\n\nconst mapStateToProps = (state): I18nContainerStateProps => ({\n locale: getLocale(state, APP_NAME),\n messages: getMessages(state, APP_NAME),\n externalMessages: getMessages(state), // dashboard app messages (needed for shared components)\n appName: getAppName(state, APP_NAME),\n isPreview: isPreview(state, APP_NAME),\n isMessageIdsVisible: isMessageIdsVisible(state, APP_NAME),\n isContentReady: getContentIsReady(state, APP_NAME)\n})\n\nconst mapDispatchToProps: I18nContainerDispatchProps = {\n getMessages: getContentAction,\n toggleMessageIds\n}\n\nexport class LocaleInitialiser extends React.Component {\n componentDidMount() {\n this.preloadLocale()\n }\n\n componentDidUpdate(prevProps: LocaleInitialiserProps) {\n const { locale } = this.props\n const { locale: prevLocale } = prevProps\n\n if (locale !== prevLocale) {\n this.preloadLocale()\n }\n }\n\n preloadLocale = () => {\n const { locale, defaultLocale = 'en-GB' } = this.props\n\n if (!locale) {\n throw new Error(MISSING_LOCALE_ERROR_TEXT)\n }\n\n if (!getLocaleObject(locale)) {\n import(\n /* webpackMode: \"lazy\", webpackExclude: /_lib/ */ `date-fns/locale/${locale}/index.js`\n )\n .then(({ default: localeData }) => {\n if (!isEmpty(localeData)) {\n registerLocale(locale, localeData)\n setDefaultLocale(locale)\n }\n })\n .catch(() => {\n const localeShortCode = locale.substring(0, 2)\n\n import(\n /* webpackMode: \"lazy\", webpackExclude: /_lib/ */ `date-fns/locale/${localeShortCode}/index.js`\n )\n .then(({ default: localeData }) => {\n if (!isEmpty(localeData)) {\n registerLocale(locale, localeData)\n setDefaultLocale(locale)\n }\n })\n .catch(() => {\n registerLocale(defaultLocale, enGB)\n setDefaultLocale(defaultLocale)\n })\n })\n }\n }\n\n render() {\n return \n }\n}\n\nexport const I18nContainer = connect<\n I18nContainerStateProps,\n I18nContainerDispatchProps,\n I18nContainerOwnProps\n>(\n mapStateToProps,\n mapDispatchToProps\n)(LocaleInitialiser)\n","// UTILS\nimport { importRemote } from '@module-federation/utilities'\n\n// TYPES & CONSTANTS\nimport { Logger as LoggerType, LogRawData } from 'imali/Logger'\n\nconst loggerImporter = (isCorporate = false) =>\n importRemote<{ fetcher: LoggerType }>({\n url: isCorporate\n ? process.env.REACT_APP_CORP_HOST_CDN_URL!\n : process.env.REACT_APP_PRIVATE_HOST_CDN_URL!,\n scope: 'imali',\n module: 'logger'\n })\n .then(({ fetcher }) => fetcher)\n .catch(() => null)\n\nexport const Logger = {\n log: async (data: LogRawData, isCorporate = false) => {\n const logger = await loggerImporter(isCorporate)\n\n if (logger) {\n return logger.log(data)\n }\n\n // eslint-disable-next-line no-console\n console.log(data.message)\n },\n logError: async (data: LogRawData, isCorporate = false) => {\n const logger = await loggerImporter(isCorporate)\n\n if (logger) {\n return logger.logError(data)\n }\n\n // eslint-disable-next-line no-console\n console.error(data.message)\n }\n}\n","import * as React from 'react'\nimport { Logger } from 'src/shared/utils/Logger'\n\ninterface Props {\n isCorporate: boolean\n}\n\ninterface State {\n errorMessage: string\n}\n\nexport class I18nErrorBoundary extends React.Component<\n React.PropsWithChildren,\n State\n> {\n state: State = { errorMessage: '' }\n\n static getDerivedStateFromError(error: Error) {\n return { errorMessage: error.toString() }\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo) {\n this.logErrorToServices(error.toString(), info.componentStack)\n }\n\n logErrorToServices = (\n errorMessage: string,\n stack: string | null | undefined\n ) => {\n const { isCorporate } = this.props\n\n Logger.logError(\n { message: errorMessage, otherParams: { stack } },\n isCorporate\n )\n }\n\n render() {\n if (this.state.errorMessage) {\n return

{this.state.errorMessage}

\n }\n\n return this.props.children\n }\n}\n","import styled from 'styled-components'\nimport {\n Link,\n gridSettings,\n Text,\n largeFontStyle,\n FlexContainerWrapper\n} from 'wabelane'\n\nexport const ViewNoticeAccountLink = styled(Link)`\n margin-left: 8px;\n\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n margin-left: 0;\n }\n`\n\nexport const NotificationMessage = styled(Text)`\n text-align: left;\n ${largeFontStyle}\n`\n\nexport const ViewLinkWrapper = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n flex-direction: column;\n }\n`\n","import { MessageDescriptor } from 'react-intl'\n\nexport const dashboardNotificationTitle: MessageDescriptor = {\n id: 'deposit.dashboard.notificationTitle',\n defaultMessage:\n 'Earn interest on your balances with one of our notice accounts.',\n description: 'Dashboard notification title text'\n}\n\nexport const dashboardNotificationDescription: MessageDescriptor = {\n id: 'deposit.dashboard.notificationDescription',\n defaultMessage: 'Terms and conditions apply.',\n description: 'Dashboard notification description text'\n}\n\nexport const dashboardNotificationLink: MessageDescriptor = {\n id: 'deposit.dashboard.notificationLink',\n defaultMessage: 'View notice accounts',\n description: 'Dashboard notification link to view notice accounts'\n}\n","import * as React from 'react'\nimport isEmpty from 'lodash-es/isEmpty'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { useIntl } from 'react-intl'\n\n// UTILS\nimport { IntegrationTestIds } from 'src/shared/integration-testing'\nimport { useProductDefinitions } from 'src/helpers'\n\n// SELECTORS\nimport {\n getActiveClientId,\n getIsCorporateUser\n} from 'src/selectors/userSelectors'\nimport { getProductDefinitions } from 'src/selectors/depositApplicationSelectors'\n\n// ACTIONS\nimport { actions } from 'src/actions/depositApplicationActions'\n\n// COMPONENTS & STYLES\nimport { colours, FlexContainerWrapper, Icons } from 'wabelane'\nimport {\n ViewNoticeAccountLink,\n NotificationMessage,\n ViewLinkWrapper\n} from 'src/components/dashboard-promo-box/styles'\nimport { StyledToastNotification } from 'src/components/styles'\n\n// TYPES & CONSTANTS\nimport * as messages from 'src/components/dashboard-promo-box/messages'\nimport { NotificationType } from 'wabelane/src/ui-components/common/ToastNotification/types'\n\nexport interface DashboardPromoBoxProps {\n pageLinkUrl: string\n}\n\nexport const DashboardPromoBox: React.FC = ({\n pageLinkUrl\n}) => {\n const intl = useIntl()\n const dispatch = useDispatch()\n\n const activeClientId = useSelector(getActiveClientId)\n const productDefinitions = useSelector(getProductDefinitions)\n const isCorporate = useSelector(getIsCorporateUser)\n\n const { data: products, isSuccess } = useProductDefinitions(\n activeClientId,\n isCorporate\n )\n\n React.useEffect(() => {\n if (isSuccess) {\n dispatch(actions.setProductDefinitions(products))\n }\n }, [isSuccess])\n\n if (isEmpty(productDefinitions)) {\n return null\n }\n\n return (\n \n \n \n \n\n \n \n {intl.formatMessage(messages.dashboardNotificationTitle)}\n \n\n \n {intl.formatMessage(messages.dashboardNotificationDescription)}\n\n \n {intl.formatMessage(messages.dashboardNotificationLink)}\n \n \n \n \n )\n}\n","import * as React from 'react'\n\n// COMPONENTS\nimport { DashboardPromoBox } from 'src/components/dashboard-promo-box'\nimport { NoticeAccounts } from 'src/components/notice-accounts/NoticeAccounts'\n\n// TYPES & CONSTANTS\nimport { APPLICATION_OVERVIEW_ROUTE } from 'src/constants'\n\nexport const Home: React.FC = () => (\n <>\n \n\n \n \n)\n","import { RouteObject } from 'react-router-dom'\n\n// COMPONENTS\nimport { Home } from 'src/pages/Home'\n\n// CONSTANTS\nimport { HOME_ROUTE } from 'src/constants'\n\nexport const routes: RouteObject[] = [\n {\n path: HOME_ROUTE,\n element: \n }\n]\n","import * as React from 'react'\nimport { createBrowserRouter, RouterProvider } from 'react-router-dom'\n\n// STYLES & COMPONENTS\nimport { withFederatedModuleInit } from 'src/shared/components/FederatedModuleInitializer'\nimport { FlexContainerWrapper, GlobalStyles } from 'wabelane'\n\n// TYPES & CONSTANTS\nimport { StoreState, StoreWithInjection } from 'src/shared/types'\nimport { routes } from 'src/routes'\n\nconst router = createBrowserRouter(routes)\n\ninterface DepositAppProps {\n store: StoreWithInjection\n}\n\nexport const App: React.FC = () => (\n \n \n\n \n \n)\n\nexport const Wrapper = withFederatedModuleInit(App)\n","import * as React from 'react'\nimport { Provider } from 'react-redux'\nimport { StyleSheetManager } from 'styled-components'\nimport { QueryClientProvider } from '@tanstack/react-query'\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools'\n\n// UTILS\nimport { queryClient } from 'src/shared/api'\n\n// SELECTORS\nimport { getIsCorporateUser } from 'src/selectors/userSelectors'\n\n// REDUCERS\nimport { reducers } from 'src/reducers'\n\n// COMPONENTS\nimport { I18nContainer } from 'src/shared/i18n/I18nContainer'\nimport { I18nErrorBoundary } from 'src/shared/i18n/I18nErrorBoundary'\n\n// TYPES & CONSTANTS\nimport { StoreState, StoreWithInjection } from 'src/shared/types'\n\nexport interface BaseProps {\n store: StoreWithInjection\n}\n\nexport const withFederatedModuleInit =\n (Component: React.ComponentType) =>\n (props: TProps) => {\n const { store } = props\n\n const [isStoreReady, setIsStoreReady] = React.useState(false)\n\n React.useLayoutEffect(() => {\n if (!store.getState().depositI18n) {\n store.injectReducers(reducers)\n }\n setIsStoreReady(true)\n }, [])\n\n if (!isStoreReady) {\n return null\n }\n\n const isCorporate = getIsCorporateUser(store?.getState())\n\n return (\n \n \n \n \n \n \n \n \n \n \n\n \n \n )\n }\n","import 'normalize.css/normalize.css'\nimport ReactDOM from 'react-dom/client'\n\n// UTILS\nimport { store } from 'src/store'\nimport { appIsInStandaloneMode } from 'src/shared/utils'\n\n// SELECTORS\nimport { getIsCorporateUser } from 'src/selectors/userSelectors'\n\n// COMPONENTS\nimport { Wrapper } from 'src/Wrapper'\n\n// Redirect to host app homepage (imali-app overview page) if app is opened standalone on production env\nif (process.env.NODE_ENV === 'production' && appIsInStandaloneMode()) {\n const isCorporate = getIsCorporateUser(store?.getState())\n\n window.location.href = isCorporate\n ? process.env.REACT_APP_CORP_HOST_PUBLIC_URL!\n : process.env.REACT_APP_PRIVATE_HOST_PUBLIC_URL!\n}\n\nwindow.partnerName = 'moneycorpbankbabel'\n\nconst container = ReactDOM.createRoot(document.getElementById('root')!)\n\n// ADD API MOCKS\nif (process.env.NODE_ENV === 'development' && appIsInStandaloneMode()) {\n const { worker } = require('src/mocks/browser')\n\n worker.start()\n}\n\ncontainer.render()\n","import styled from 'styled-components'\nimport {\n FlexContainerWrapper,\n TextV2,\n colours,\n gridSettings,\n largeFontStyle,\n defaultFontStyle\n} from 'wabelane'\n\nexport const AccountSummaryRow = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n flex-direction: column;\n }\n`\n\nexport const AccountSummaryHeader = styled(FlexContainerWrapper)`\n min-width: 272px;\n background: ${colours.grey_50};\n box-shadow: -1px 1px 0px ${colours.grey}, inset 0px 1px 0px ${colours.grey};\n\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n box-shadow: inset -1px 0px 0px ${colours.grey},\n inset 0px 1px 0px ${colours.grey}, inset 1px 0px 0px ${colours.grey};\n }\n`\n\nexport const AccountSummaryHeaderText = styled(TextV2)`\n ${largeFontStyle}\n text-align: left;\n`\n\nexport const AccountSummaryDetailInfoWrapper = styled(FlexContainerWrapper)`\n box-shadow: 0px 1px 0px ${colours.grey}, inset -1px 1px 0px ${colours.grey};\n\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n padding: 16px;\n box-shadow: inset -1px 0px 0px ${colours.grey},\n inset 0px 1px 0px ${colours.grey}, inset 1px 0px 0px ${colours.grey},\n 0px 1px 0px ${colours.grey};\n }\n`\n\nexport const AccountSummaryDetailInfoText = styled(TextV2)`\n ${defaultFontStyle}\n width: 100%;\n text-align: left;\n`\n\nexport const List = styled.ul`\n margin: 0 0 0 16px;\n padding: 0 0 0 8px;\n`\n\nexport const WithdrawalInfoWrapper = styled(FlexContainerWrapper)`\n white-space: pre-line;\n`\n","import * as React from 'react'\nimport { IntlShape } from 'react-intl'\n\n// UTILS\nimport { handleFloatingPointPrecision } from 'src/shared/utils/handleFloatingPointPrecision'\nimport { IntegrationTestIds } from 'src/shared/integration-testing'\n\n// COMPONENTS & STYLES\nimport {\n AccountSummaryDetailInfoText,\n WithdrawalInfoWrapper\n} from 'src/components/notice-account-details/components/AccountSummary.styles'\nimport { FlexContainerWrapper } from 'wabelane'\nimport { UnorderedList } from 'src/components/notice-account-details/components/UnorderedList'\n\n// TYPES & CONSTANTS\nimport { FileResponse, ProductDefinition } from 'src/shared/api/types'\nimport {\n AccountSummaryDetail,\n SuccessPageMessages\n} from 'src/components/notice-account-details/types'\nimport {\n accountSummaryBalance,\n accountSummaryBalanceValue,\n accountSummaryBalancesBelow,\n accountSummaryBalancesOver,\n accountSummaryEstimatedBalanceAtMaturity,\n accountSummaryClosure,\n accountSummaryClosureValue,\n accountSummaryEstimatedBalance,\n accountSummaryEstimatedBalanceAfterAYear,\n accountSummaryEstimatedBalanceInterestEarned,\n accountSummaryEstimatedBalanceOpening,\n accountSummaryHowToManageAccount,\n accountSummaryHowToManageAccountDesc,\n accountSummaryInterestAdvantageFirstValue,\n accountSummaryInterestAdvantageRateChange,\n accountSummaryInterestDisadvantageFirstValue,\n accountSummaryInterestDisadvantageRateChange,\n accountSummaryInterestRate,\n accountSummaryInterestTerms,\n accountSummaryManagingHowToOpenAccount,\n accountSummaryManagingHowToOpenAccountDesc,\n accountSummaryManagingNoticeAccount,\n accountSummaryName,\n accountSummaryWithdrawal,\n accountSummaryWithdrawalValue,\n noticeDetailsConfirmationInfoText,\n noticeDetailsConfirmationPageContentTitle,\n confirmationPageBackButton\n} from 'src/components/notice-account-details/messages'\nimport { DEFAULT_PRECISION } from 'src/shared/constants'\nimport { OPENING_BALANCE_AMOUNT } from 'src/components/notice-account-details/constants'\n\nexport const buildAccountSummaryDetails = (\n intl: IntlShape,\n productDefinition: ProductDefinition\n): AccountSummaryDetail[] => {\n const {\n threshold,\n precision,\n productName,\n currencyCode,\n maximumBalance,\n rateOverThreshold,\n rateUnderThreshold,\n annualEquivalentRate,\n minimumInitialDepositAmount\n } = productDefinition\n\n const grossAnnualRate = intl.formatNumber(rateOverThreshold, {\n minimumFractionDigits: DEFAULT_PRECISION\n })\n const formattedRateUnderThreshold = intl.formatNumber(rateUnderThreshold, {\n minimumFractionDigits: DEFAULT_PRECISION\n })\n const maximumBalanceValue = `${intl.formatNumber(maximumBalance, {\n minimumFractionDigits: precision\n })} ${currencyCode}`\n const minimumInitialDeposit = `${intl.formatNumber(\n minimumInitialDepositAmount,\n { minimumFractionDigits: precision }\n )} ${currencyCode}`\n const disadvantageListItems = [\n intl.formatMessage(accountSummaryInterestDisadvantageFirstValue),\n intl.formatMessage(accountSummaryInterestTerms)\n ]\n const advantageListItems = [\n intl.formatMessage(accountSummaryInterestAdvantageFirstValue),\n intl.formatMessage(accountSummaryInterestTerms)\n ]\n\n const interestEarned = handleFloatingPointPrecision(\n OPENING_BALANCE_AMOUNT * (annualEquivalentRate / 100)\n )\n const balanceAfterTwelveMonths = handleFloatingPointPrecision(\n OPENING_BALANCE_AMOUNT + interestEarned\n )\n\n const openingBalanceAmountValue = `${intl.formatNumber(\n OPENING_BALANCE_AMOUNT,\n { minimumFractionDigits: precision }\n )} ${currencyCode}`\n const balanceAfterTwelveMonthsValue = `${intl.formatNumber(\n balanceAfterTwelveMonths,\n { minimumFractionDigits: precision }\n )} ${currencyCode}`\n const interestEarnedValue = `${intl.formatNumber(interestEarned, {\n minimumFractionDigits: precision\n })} ${currencyCode}`\n const formattedThreshold = `${intl.formatNumber(threshold, {\n minimumFractionDigits: precision\n })} ${currencyCode}`\n\n const result: AccountSummaryDetail[] = [\n {\n headerText: accountSummaryName,\n infoComponent: (\n \n {productName}\n \n )\n },\n {\n headerText: accountSummaryInterestRate,\n infoComponent: (\n \n \n {intl.formatMessage(accountSummaryBalancesOver, {\n boldedBalance: (\n \n {grossAnnualRate}\n \n ),\n threshold: formattedThreshold\n })}\n \n\n \n {intl.formatMessage(accountSummaryBalancesBelow, {\n boldedBalance: (\n \n {formattedRateUnderThreshold}\n \n ),\n threshold: formattedThreshold\n })}\n \n \n )\n },\n {\n headerText: accountSummaryEstimatedBalance,\n infoComponent: (\n \n \n\n \n \n )\n },\n {\n headerText: accountSummaryEstimatedBalanceAtMaturity,\n infoComponent: (\n \n \n {intl.formatMessage(accountSummaryEstimatedBalanceOpening, {\n openingDepositBalance: (\n \n {openingBalanceAmountValue}\n \n )\n })}\n \n\n \n {intl.formatMessage(accountSummaryEstimatedBalanceAfterAYear, {\n balanceAfterAYear: (\n \n {balanceAfterTwelveMonthsValue}\n \n )\n })}\n \n\n \n {intl.formatMessage(accountSummaryEstimatedBalanceInterestEarned, {\n interestEarned: (\n \n {interestEarnedValue}\n \n )\n })}\n \n \n )\n },\n {\n headerText: accountSummaryManagingNoticeAccount,\n infoComponent: (\n \n \n \n {intl.formatMessage(accountSummaryManagingHowToOpenAccount)}\n \n\n \n {intl.formatMessage(accountSummaryManagingHowToOpenAccountDesc)}\n \n \n\n \n \n {intl.formatMessage(accountSummaryHowToManageAccount)}\n \n\n \n {intl.formatMessage(accountSummaryHowToManageAccountDesc)}\n \n \n \n )\n },\n {\n headerText: accountSummaryBalance,\n infoComponent: (\n \n {intl.formatMessage(accountSummaryBalanceValue, {\n maximumBalanceValue: (\n \n {maximumBalanceValue}\n \n ),\n minimumInitialDeposit: (\n \n {minimumInitialDeposit}\n \n )\n })}\n \n )\n },\n {\n headerText: accountSummaryWithdrawal,\n infoComponent: (\n \n \n {intl.formatMessage(accountSummaryWithdrawalValue, {\n rateUnderThreshold,\n threshold: (\n \n {formattedThreshold}\n \n ),\n currencyCode\n })}\n \n \n )\n },\n {\n headerText: accountSummaryClosure,\n infoComponent: (\n \n {intl.formatMessage(accountSummaryClosureValue)}\n \n )\n }\n ]\n\n return result\n}\n\nexport const openPdfFile = (file: FileResponse, targetWindow: Window) => {\n const fileUrl = URL.createObjectURL(file)\n\n targetWindow.document.location.href = fileUrl\n}\n\nexport const getSuccessPageMessages = (): SuccessPageMessages => ({\n confirmationInfoText: noticeDetailsConfirmationInfoText,\n confirmationContentTitle: noticeDetailsConfirmationPageContentTitle,\n confirmationPageButton: confirmationPageBackButton\n})\n","import { MessageDescriptor } from 'react-intl'\nimport { Filters } from 'react-table'\n\n// TYPES\nimport {\n FiltersWithSelectedStatus,\n FilterValue,\n PaginationInfo\n} from 'wabelane'\n\nexport enum FilterCategory {\n TransactionType = 'transactionTypeFilter',\n startDateValue = 'startDateValue',\n endDateValue = 'endDateValue'\n}\n\nexport enum TransactionType {\n FundsAdded = 'FundsAdded',\n Adjustment = 'Adjustment',\n Interest = 'Interest',\n Withdrawal = 'Withdrawal',\n OpeningBalance = 'OpeningBalance',\n Refund = 'Refund',\n ClosureOfAccount = 'ClosureOfAccount',\n PendingWithdrawal = 'PendingWithdrawal',\n SystemMigrated = 'SystemMigrated'\n}\n\nexport type NoticeAccountTransactionsTableItem = Record<\n NoticeAccountTransactionsColumnKeys,\n React.ReactNode\n>\n\nexport type NoticeAccountPendingTransactionsTableItem = Record<\n NoticeAccountPendingTransactionsColumnKeys,\n React.ReactNode\n>\n\nexport enum NoticeAccountTransactionsColumnKeys {\n TransactionDate = 'TransactionDate',\n Transaction = 'Transaction',\n Credit = 'Credit',\n Debit = 'Debit',\n ClosingBalance = 'ClosingBalance'\n}\n\nexport enum NoticeAccountPendingTransactionsColumnKeys {\n ClearDate = 'ClearDate',\n Description = 'Description',\n WithdrawalAmount = 'WithdrawalAmount'\n}\n\nexport enum TransactionDirection {\n Credit = 'Credit',\n Debit = 'Debit'\n}\n\nexport enum DatesFilterSelectedValues {\n StartDate = 'startDateValue',\n EndDate = 'endDateValue'\n}\n\nexport interface NoticeAccountTransaction {\n date: Date\n direction: TransactionDirection\n transactionType: TransactionType\n amount: number\n closingBalance: number\n precision: number\n}\n\nexport interface TransactionTypeFilterValues {\n value: TransactionType\n isSelected: boolean\n}\n\nexport type TransactionTypeFilters =\n FiltersWithSelectedStatus[]\n\nexport interface NoticeAccountTransactionTableFilters {\n [FilterCategory.TransactionType]: TransactionTypeFilters\n [FilterCategory.startDateValue]: Date | null\n [FilterCategory.endDateValue]: Date | null\n}\n\nexport interface RenderTransactionFiltersProps\n extends NoticeAccountTransactionTableFilters {\n closureDate: Date | null\n noticeAccountId: string\n}\n\nexport interface TransactionTableFiltersProps>\n extends NoticeAccountTransactionTableFilters {\n filters: Filters\n closureDate: Date | null\n noticeAccountId: string\n setFilter: (columnId: string, filterValue: FilterValue) => void\n}\n\nexport interface InitialTransactionTypeFilterValues {\n columnId: NoticeAccountTransactionsColumnKeys\n values: TransactionTypeFilters\n}\n\nexport type TransactionsTableItem = Record<\n NoticeAccountTransactionsColumnKeys,\n React.ReactNode\n>\n\nexport interface DatesFilterValues {\n startDateValue: Date | null\n endDateValue: Date | null\n}\n\nexport enum TransactionTab {\n Completed = 'Completed',\n Pending = 'Pending'\n}\n\nexport enum MigrationOptions {\n BeforeMigrationDate = 'BeforeMigrationDate',\n AfterMigrationDate = 'AfterMigrationDate'\n}\n\nexport interface SelectionTabProps {\n id: string\n title: MessageDescriptor\n isSelected: boolean\n onClick: () => void\n}\n\nexport type PaginationInfoMap = Record\n","import styled from 'styled-components'\n\n// STYLES & COMPONENTS\nimport { Divider } from 'src/styles'\nimport {\n Link,\n colours,\n defaultFontStyle,\n TextV2,\n largeFontStyle,\n FlexContainerWrapper,\n gridSettings,\n BoxContentDivider,\n defaultBoxShadow\n} from 'wabelane'\n\nexport const NoticeAccountActionsWrapper = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n flex-direction: column;\n }\n`\n\nexport const NoticeAccountActionButtonsWrapper = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n flex-direction: column;\n width: 100%;\n }\n`\n\nexport const NoticeAccountLinkButton = styled(Link)`\n font-size: 14px;\n\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n margin-bottom: 24px;\n }\n`\n\nexport const StyledLink = styled(Link)<{ margin: string }>`\n margin: ${({ margin }) => margin};\n font-size: 14px;\n`\n\nexport const PendingWithdrawalsTitle = styled(TextV2)`\n ${largeFontStyle}\n font-size: 10px;\n text-transform: uppercase;\n`\n\nexport const PendingWithdrawalHeaderItemWrapper = styled(FlexContainerWrapper)<{\n isAlignedRight?: boolean\n}>`\n flex-basis: ${props => (props.isAlignedRight ? '604px' : '128px')};\n justify-content: ${props =>\n props.isAlignedRight ? 'flex-end' : 'flex-start'};\n`\n\nexport const PendingWithdrawalHeaderItem = styled(TextV2)`\n ${largeFontStyle}\n text-transform: uppercase;\n font-size: 10px;\n line-height: 18px;\n`\n\nexport const WithdrawalItemDivider = styled(Divider)`\n width: auto;\n border-bottom: 1px solid ${colours.box_text_divider};\n`\n\nexport const NoPendingWithdrawalsMessage = styled(TextV2)`\n ${defaultFontStyle}\n`\n\nexport const NegativeSign = styled.span`\n color: ${colours.error};\n margin-right: 2px;\n`\n\nexport const PendingWithdrawalsCellItem = styled(TextV2)`\n ${defaultFontStyle}\n text-align: left;\n\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n flex-grow: 1;\n min-width: 50%;\n }\n`\n\nexport const PendingWithdrawalsCellDateItem = styled(\n PendingWithdrawalsCellItem\n)`\n width: 122px;\n`\n\nexport const MobilePendingItemWrapper = styled(FlexContainerWrapper)`\n background: ${colours.white};\n`\n\nexport const WithdrawalsTableHeaderWrapper = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n margin: 24px 0 8px;\n }\n`\n\nexport const WithdrawalsTableItemWrapper = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n margin: 0 0 8px;\n }\n`\n\nexport const WithdrawalsTableList = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n margin: 0 0 48px;\n }\n`\n\nexport const NoticeAccountTitle = styled(TextV2)`\n ${largeFontStyle}\n text-align: left;\n display: flex;\n margin: 0 0 6px;\n`\n\nexport const NoticeAccountName = styled(TextV2)`\n ${defaultFontStyle}\n padding: 0 0 0 4px;\n text-align: left;\n`\n\nexport const StyledDivider = styled(BoxContentDivider)`\n display: block;\n width: 100%;\n max-width: 432px;\n margin-bottom: 0;\n`\n\nexport const NoticeAccountNameText = styled(TextV2)`\n ${largeFontStyle}\n line-height: 24px;\n text-align: start;\n`\n\nexport const NoticeAccountsLinksHeaderText = styled(TextV2)`\n ${defaultFontStyle}\n`\n\nexport const NoticeAccountsHeaderDivider = styled(Divider)`\n margin-bottom: 8px;\n max-width: 432px;\n border-bottom: 1px solid ${colours.items_separator_color};\n`\n\nexport const FlagIconWrapper = styled(FlexContainerWrapper)`\n min-width: 40px;\n`\n\nexport const NoticeAccountTransactionsListItemLink = styled(Link)`\n width: 100%;\n max-width: 432px;\n text-decoration: none;\n\n &:hover {\n ${defaultBoxShadow}\n }\n`\n\nexport const StyledNoticeAccountsListHeader = styled(FlexContainerWrapper)`\n max-width: 432px;\n`\n\nexport const NoticeAccountItemInfoText = styled(TextV2)`\n ${defaultFontStyle}\n line-height: 24px;\n font-size: 12px;\n text-align: start;\n color: ${colours.secondary_text};\n`\n\nexport const StyledNoticeAccountItemInfoText = styled(\n NoticeAccountItemInfoText\n)`\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n max-width: 108px;\n }\n`\n\nexport const NotificationMessage = styled(TextV2)`\n text-align: left;\n`\n","import { MessageDescriptor } from 'react-intl'\n\nexport const noticeAccountsListTitle: MessageDescriptor = {\n id: 'deposit.noticeAccountsListTitle',\n defaultMessage: 'Notice accounts',\n description: 'Notice accounts list title text'\n}\n\nexport const currencyColumnTitle: MessageDescriptor = {\n id: 'deposit.currencyColumnTitle',\n defaultMessage: 'Currency',\n description: 'Currency column title in balance list'\n}\n\nexport const totalBalanceColumnTitle: MessageDescriptor = {\n id: 'deposit.totalBalanceColumnTitle',\n defaultMessage: 'Total balance',\n description: 'Total balance column title in balance list'\n}\n\nexport const availableBalanceColumnTitle: MessageDescriptor = {\n id: 'deposit.availableBalanceColumnTitle',\n defaultMessage: 'Available balance',\n description: 'Available balance column title in balance list'\n}\n\nexport const grossInterestColumnTitle: MessageDescriptor = {\n id: 'deposit.grossInterestColumnTitle',\n defaultMessage: 'Gross interest',\n description: 'Gross interest column title in balance list'\n}\n\nexport const addFundsButton: MessageDescriptor = {\n id: 'deposit.noticeAccounts.addFundsButton',\n defaultMessage: 'Add funds',\n description: 'The add funds button text'\n}\n\nexport const withdrawButton: MessageDescriptor = {\n id: 'deposit.noticeAccounts.withdrawButton',\n defaultMessage: 'Withdraw',\n description: 'The withdraw button text'\n}\n\nexport const closeNoticeAccountButton: MessageDescriptor = {\n id: 'deposit.noticeAccounts.closeNoticeAccountButton',\n defaultMessage: 'Close notice account',\n description: 'The close notice account button text'\n}\n\nexport const viewTransactionsButton: MessageDescriptor = {\n id: 'deposit.noticeAccounts.viewTransactionsButton',\n defaultMessage: 'View transactions',\n description: 'The view transactions button text'\n}\n\nexport const pendingWithdrawalsTitle: MessageDescriptor = {\n id: 'deposit.noticeAccounts.pendingWithdrawalsTitle',\n defaultMessage: 'displaying pending withdrawals',\n description: 'Displaying pending withdrawals'\n}\n\nexport const pendingWithdrawalsNotification: MessageDescriptor = {\n id: 'deposit.noticeAccounts.pendingWithdrawalsNotification',\n defaultMessage: 'Pending Withdrawals',\n description: 'Pending withdrawals notification text'\n}\n\nexport const pendingClosureNotification: MessageDescriptor = {\n id: 'deposit.noticeAccounts.pendingClosureNotification',\n defaultMessage: 'Pending Closure',\n description: 'Pending closure notification text'\n}\n\nexport const pendingWithdrawalClearDateInfo: MessageDescriptor = {\n id: 'deposit.noticeAccounts.pendingWithdrawalClearDateInfo',\n defaultMessage: 'Clear date',\n description: 'Pending withdrawal clear date info'\n}\n\nexport const pendingWithdrawalAmount: MessageDescriptor = {\n id: 'deposit.noticeAccounts.pendingWithdrawalAmount',\n defaultMessage: 'Withdrawal amount',\n description: 'Pending withdrawal amount'\n}\n\nexport const pendingWithdrawalDescription: MessageDescriptor = {\n id: 'deposit.noticeAccounts.pendingWithdrawalDescription',\n defaultMessage: 'Pending withdrawal to multi-currency account',\n description: 'Pending withdrawal description'\n}\n\nexport const pendingWithdrawalsDescriptionHeader: MessageDescriptor = {\n id: 'deposit.noticeAccounts.pendingWithdrawalDescriptionHeader',\n defaultMessage: 'Description',\n description: 'Pending withdrawal description header column'\n}\n\nexport const noPendingTransactions: MessageDescriptor = {\n id: 'deposit.noticeAccounts.noPendingTransactions',\n defaultMessage: 'No pending transactions to be displayed',\n description: 'no Pending Transactions message'\n}\n\nexport const noticeAccountPdsButton: MessageDescriptor = {\n id: 'deposit.noticeAccounts.pdsButton',\n defaultMessage: 'Product disclosure statement',\n description: 'The product disclosure statement button text'\n}\n\nexport const noticeAccountDisclosureStatementButton: MessageDescriptor = {\n id: 'deposit.noticeAccounts.pdsButton',\n defaultMessage: 'Product disclosure statement',\n description: 'The product disclosure statement button text'\n}\n\nexport const noticeAccountNameTitle: MessageDescriptor = {\n id: 'deposit.noticeAccounts.nameTitle',\n defaultMessage: 'Account: {productName}',\n description: 'The notice account name title'\n}\n\nexport const noticeAccountTransactionBalance: MessageDescriptor = {\n id: 'deposit.noticeAccounts.balance',\n defaultMessage: 'Total Balance: ',\n description: 'The notice account balance'\n}\n\nexport const noticeAccountTransactionGrossInterest: MessageDescriptor = {\n id: 'deposit.noticeAccounts.grossInterest',\n defaultMessage: 'Gross interest: {interestRate}',\n description: 'The notice account gross interest'\n}\n\nexport const pendingClosurePeriodNotificationText: MessageDescriptor = {\n id: 'deposit.noticeAccount.pendingClosure.notification',\n defaultMessage:\n 'This account will be closed on {closureDate}. You can no longer add or withdraw funds.',\n description: 'pending closure period notification text'\n}\n\nexport const closedNoticeAccountListItemText: MessageDescriptor = {\n id: 'deposit.noticeAccount.closedListItemText',\n defaultMessage: 'Account closed on {closureDate}',\n description: 'closed notice account list item text'\n}\n\nexport const pendingRateChangeNotificationText: MessageDescriptor = {\n id: 'deposit.noticeAccount.pendingRateChange.notification',\n defaultMessage:\n 'We have notified you of changes to this account. You can no longer add funds until the new rate is applied.',\n description: 'Pending rate change notification text'\n}\n","import styled from 'styled-components'\nimport {\n FlexContainerWrapper,\n Link,\n SmallSecondaryButton,\n gridSettings\n} from 'wabelane'\n\nexport const StyledLink = styled(Link)`\n flex-basis: 184px;\n margin: 0 16px 0 0;\n\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n flex-basis: auto;\n margin: 0 0 16px;\n }\n`\n\nexport const StyledWidgetActionButton = styled(SmallSecondaryButton)`\n margin-bottom: 0;\n`\n\nexport const CollapsibleHeader = styled(FlexContainerWrapper)`\n cursor: pointer;\n line-height: 24px;\n`\n","import styled from 'styled-components'\nimport {\n FlexContainerWrapper,\n colours,\n gridSettings,\n CurrencyInputV2,\n InputError,\n Link,\n Subtitle,\n TextV2,\n ToastNotification,\n defaultFontStyle,\n largeFontStyle\n} from 'wabelane'\n\nexport const StyledSubtitle = styled(Subtitle)`\n margin-bottom: 16px;\n line-height: 32px;\n\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n margin: 0 0 16px 0;\n }\n`\n\nexport const BalanceLabel = styled(TextV2)`\n ${defaultFontStyle}\n`\n\nexport const LeftAlignedLabel = styled(BalanceLabel)`\n text-align: left;\n padding-top: 4px;\n line-height: 24px;\n`\n\nexport const StyledCurrencyInput = styled(CurrencyInputV2)`\n padding-bottom: 4px;\n\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n max-width: 100%;\n }\n`\n\nexport const MinimumBalanceNotification = styled(ToastNotification)`\n padding: 16px;\n line-height: 24px;\n`\n\nexport const EditLink = styled(Link)`\n margin-left: auto;\n text-transform: none;\n`\n\nexport const StyledInputError = styled(InputError)`\n margin-bottom: 4px;\n font-size: 14px;\n`\n\nexport const CancelLink = styled(Link)`\n text-align: center;\n`\n\nexport const StepTitleWrapper = styled(FlexContainerWrapper)`\n background-color: ${colours.collapsible_body};\n`\n\nexport const DetailsWrapper = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n width: 100%;\n }\n`\n\nexport const StyledCard = styled(FlexContainerWrapper)`\n ${defaultFontStyle}\n background: ${colours.card_icon_background};\n`\n\nexport const BoldText = styled(TextV2)`\n ${defaultFontStyle}\n`\n\ninterface ReviewRowLabelProps {\n width?: string\n}\n\nexport const ReviewRowLabel = styled(TextV2)`\n min-width: ${({ width }) => width || '128px'};\n line-height: 24px;\n ${largeFontStyle}\n margin-right: 8px;\n text-align: start;\n`\n\nexport const ReviewRowText = styled(TextV2)`\n line-height: 24px;\n ${defaultFontStyle}\n text-align: start;\n\n @media (min-width: ${gridSettings.breakpoints.md}px) {\n white-space: nowrap;\n }\n`\n\nexport const ResultContent = styled(FlexContainerWrapper)`\n background-color: ${colours.white};\n\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n padding-left: 16px;\n padding-right: 16px;\n }\n`\n\nexport const ResultContentTitle = styled(TextV2)`\n font-size: 20px;\n line-height: 32px;\n width: 100%;\n`\n\nexport const ResultInfoText = styled(TextV2)`\n ${defaultFontStyle}\n line-height: 24px;\n`\n\nexport const ActionsWrapper = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n max-width: 100%;\n }\n`\n\nexport const StyledToastNotification = styled(ToastNotification)`\n margin: 0 auto 16px;\n padding: 16px;\n font-size: 14px;\n line-height: 20px;\n\n @media (max-width: ${gridSettings.breakpoints.md}px) {\n width: auto;\n margin: 0 0 16px;\n }\n`\n\nexport const ResultContentBody = styled(FlexContainerWrapper)`\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n padding: 24px 8px;\n }\n`\n","export const HOME_ROUTE = '/'\nexport const APPLICATION_HOME_ROUTE = '/deposits/apply'\nexport const APPLICATION_OVERVIEW_ROUTE = '/application-overview'\nexport const GLOBAL_404_ROUTE = '/not-found'\n\n// Product Details Routes\nexport const NOTICE_ACCOUNT_DETAILS_ROUTE = '/product-details'\nexport const NOTICE_ACCOUNT_DETAILS_ROUTE_WITH_PARAM = `${NOTICE_ACCOUNT_DETAILS_ROUTE}/:noticeAccountId`\nexport const NOTICE_ACCOUNT_DETAILS_APPLICATION_SUCCESS_ROUTE_WITH_PARAM = `${NOTICE_ACCOUNT_DETAILS_ROUTE_WITH_PARAM}/success`\nexport const NOTICE_ACCOUNT_DETAILS_APPLICATION_FAILED_ROUTE_WITH_PARAM = `${NOTICE_ACCOUNT_DETAILS_ROUTE_WITH_PARAM}/fail`\nexport const NOTICE_ACCOUNT_APPLICATION_SUCCESS_ROUTE = (\n noticeAccountId: number\n) => `${NOTICE_ACCOUNT_DETAILS_ROUTE}/${noticeAccountId}/success`\nexport const NOTICE_ACCOUNT_APPLICATION_FAILED_ROUTE = (\n noticeAccountId: number\n) => `${NOTICE_ACCOUNT_DETAILS_ROUTE}/${noticeAccountId}/fail`\nexport const NOTICE_ACCOUNT_APPLICATION_UPLOAD_DOCUMENTS_ROUTE_WITH_PARAM = `${NOTICE_ACCOUNT_DETAILS_ROUTE_WITH_PARAM}/upload-documents`\nexport const NOTICE_ACCOUNT_APPLICATION_UPLOAD_DOCUMENTS_ROUTE = (\n noticeAccountId: number\n) => `${NOTICE_ACCOUNT_DETAILS_ROUTE}/${noticeAccountId}/upload-documents`\nexport const NOTICE_ACCOUNT_DETAILS_ADD_FUNDS_ROUTE = `${NOTICE_ACCOUNT_DETAILS_ROUTE_WITH_PARAM}/add-funds`\n\nexport const ADD_FUNDS_ROUTE = '/deposits/add-funds'\nexport const ADD_FUNDS_ROUTE_WITH_PARAM = `${ADD_FUNDS_ROUTE}/:noticeAccountId`\nexport const ADD_FUNDS_SUCCESS_ROUTE = `${ADD_FUNDS_ROUTE_WITH_PARAM}/success`\nexport const ADD_FUNDS_FAIL_ROUTE = `${ADD_FUNDS_ROUTE_WITH_PARAM}/fail`\n\nexport const WITHDRAWAL_ROUTE = '/deposits/withdraw'\nexport const WITHDRAWAL_ROUTE_WITH_PARAM = `${WITHDRAWAL_ROUTE}/:noticeAccountId`\nexport const WITHDRAWAL_SUCCESS_ROUTE = `${WITHDRAWAL_ROUTE_WITH_PARAM}/success`\nexport const WITHDRAWAL_FAIL_ROUTE = `${WITHDRAWAL_ROUTE}/fail`\n\nexport const CLOSURE_ROUTE = '/deposits/close-account'\nexport const CLOSURE_ROUTE_WITH_PARAM = `${CLOSURE_ROUTE}/:noticeAccountId`\nexport const CLOSURE_SUCCESS_ROUTE = `${CLOSURE_ROUTE_WITH_PARAM}/success`\nexport const CLOSURE_ERROR_ROUTE = `${CLOSURE_ROUTE_WITH_PARAM}/error`\n\n// Transactions Routes\nexport const TRANSACTIONS_ROUTE = '/deposits/transactions'\nexport const TRANSACTIONS_ROUTE_WITH_PARAM = `${TRANSACTIONS_ROUTE}/:noticeAccountId`\n\n// Add Funds Account select\nexport const ADD_FUNDS_ACCOUNT_SELECT_ROUTE = '/add-funds-select'\n","import { useQuery, useMutation } from '@tanstack/react-query'\n\n// UTILS\nimport {\n applyForNoticeAccountAfterDocumentUpload,\n applyForNoticeAccountCorporate,\n applyForNoticeAccountPrivate,\n getProductDefinitions,\n withdrawFunds,\n getProductDisclosureStatementPdf,\n getTermsAndConditionsPdf,\n getNoticeAccountDisclosureStatementFile,\n uploadFile,\n fetchNoticeAccounts,\n fetchNoticeAccountTransactions,\n fetchNoticeAccountTransactionsFile,\n fetchNoticeAccountDetails,\n addFundsToNoticeAccount,\n closeNoticeAccount\n} from 'src/shared/api'\nimport { getAcceptContentTypeHeader } from 'src/shared/utils/getAcceptContentTypeHeader'\n\n// TYPES & CONSTANTS\nimport { ApiError } from 'imali/fetcher'\nimport { ExportFileTypes } from 'wabelane'\nimport {\n ApplyForNoticeAccountRequest,\n FileResponse,\n ProductDefinitionsResponse,\n UploadFileRequest,\n NoticeAccountItem,\n NoticeAccountTransactions,\n NoticeAccountTransactionsRequestParams,\n TransactionsFileResponse,\n NoticeAccountDetails,\n AddFundsRequest,\n WithdrawFundsRequest,\n CloseNoticeAccountRequest\n} from 'src/shared/api/types'\nimport { GLOBAL_404_ROUTE } from 'src/constants'\n\nexport const useProductDefinitions = (\n activeClientId: number,\n isCorporate = false\n) =>\n useQuery({\n queryKey: ['productDefinitions', activeClientId, isCorporate],\n queryFn: () => getProductDefinitions(activeClientId, {}, isCorporate),\n refetchOnMount: 'always'\n })\n\nexport const useProductDisclosureStatementPdf = (\n activeClientId: number,\n productId: string,\n locale = 'en-GB',\n isCorporate = false\n) =>\n useQuery({\n queryKey: ['productDisclosureStatementPdf', activeClientId, isCorporate],\n queryFn: () =>\n getProductDisclosureStatementPdf(\n activeClientId,\n productId,\n locale,\n { Accept: 'application/pdf' },\n isCorporate\n ),\n enabled: false\n })\n\nexport const useTermsAndConditionsPdf = (\n activeClientId: number,\n isCorporate = false\n) =>\n useQuery({\n queryKey: ['termsAndConditionsPdf', activeClientId, isCorporate],\n queryFn: () =>\n getTermsAndConditionsPdf(\n activeClientId,\n { Accept: 'application/pdf' },\n isCorporate\n ),\n enabled: false\n })\n\nexport const useApplyForNoticeAccountMutation = (\n activeClientId: number,\n isCorporate: boolean\n) =>\n useMutation({\n mutationKey: ['applyForNoticeAccount'],\n mutationFn: (request: ApplyForNoticeAccountRequest) =>\n isCorporate\n ? applyForNoticeAccountCorporate(activeClientId, request)\n : applyForNoticeAccountPrivate(activeClientId, request)\n })\n\nexport const useUploadProofOfIdFileMutation = (activeClientId: number) =>\n useMutation({\n mutationKey: ['uploadProofOfIdFile'],\n mutationFn: (request: UploadFileRequest) =>\n uploadFile(activeClientId, request)\n })\n\nexport const useUploadProofOfAddressFileMutation = (activeClientId: number) =>\n useMutation({\n mutationKey: ['uploadProofOfAddressFile'],\n mutationFn: (request: UploadFileRequest) =>\n uploadFile(activeClientId, request)\n })\n\nexport const useApplyForNoticeAccountAfterDocumentUploadMutation = (\n activeClientId: number\n) =>\n useMutation({\n mutationKey: ['applyForNoticeAccountAfterDocumentUpload'],\n mutationFn: (request: ApplyForNoticeAccountRequest) =>\n applyForNoticeAccountAfterDocumentUpload(activeClientId, request)\n })\n\nexport const useNoticeAccounts = (\n activeClientId: number,\n isCorporate = false,\n enabled = true\n) =>\n useQuery({\n queryKey: ['noticeAccounts', activeClientId, isCorporate],\n queryFn: () => fetchNoticeAccounts(activeClientId, isCorporate),\n refetchOnMount: 'always',\n enabled\n })\n\nexport const useNoticeAccountTransactions = (\n activeClientId: number,\n requestParams: NoticeAccountTransactionsRequestParams,\n isCorporate = false\n) =>\n useQuery({\n queryKey: [\n 'noticeAccountTransactions',\n activeClientId,\n requestParams,\n isCorporate\n ],\n queryFn: () =>\n fetchNoticeAccountTransactions(\n activeClientId,\n requestParams,\n isCorporate\n ),\n refetchOnMount: 'always',\n onError: () => window.open(GLOBAL_404_ROUTE, '_self')\n })\n\nexport const useNoticeAccountTransactionsFile = (\n activeClientId: number,\n requestParams: NoticeAccountTransactionsRequestParams,\n fileType: ExportFileTypes | null,\n onFailedTransactionFileDownload: () => void,\n isCorporate = false\n) =>\n useQuery({\n queryKey: [\n 'noticeAccountTransactionsFile',\n activeClientId,\n requestParams,\n isCorporate,\n fileType\n ],\n queryFn: () =>\n fetchNoticeAccountTransactionsFile(\n activeClientId,\n requestParams,\n isCorporate,\n getAcceptContentTypeHeader(fileType, 2)\n ),\n onError: onFailedTransactionFileDownload,\n enabled: !!fileType,\n cacheTime: 0\n })\n\nexport const useNoticeAccountDisclosureStatement = (\n activeClientId: number,\n productDefinitionId: number,\n isCorporate = false\n) =>\n useQuery({\n queryKey: ['noticePrivateAccountPds', activeClientId, isCorporate],\n queryFn: () =>\n getNoticeAccountDisclosureStatementFile(\n activeClientId,\n productDefinitionId,\n { Accept: 'application/pdf' },\n isCorporate\n ),\n enabled: false\n })\n\nexport const useNoticeAccountDetails = (\n activeClientId: number,\n noticeAccountId: string,\n isCorporate = false\n) =>\n useQuery({\n queryKey: [\n 'noticeAccountDetails',\n activeClientId,\n noticeAccountId,\n isCorporate\n ],\n queryFn: () =>\n fetchNoticeAccountDetails(activeClientId, noticeAccountId, isCorporate),\n refetchOnMount: 'always',\n onError: () => window.open(GLOBAL_404_ROUTE, '_self')\n })\n\nexport const useAddFundsMutation = (\n activeClientId: number,\n isCorporate: boolean\n) =>\n useMutation({\n mutationKey: ['addFunds'],\n mutationFn: (request: AddFundsRequest) =>\n addFundsToNoticeAccount(activeClientId, request, isCorporate)\n })\n\nexport const useWithdrawFundsMutation = (\n activeClientId: number,\n isCorporate: boolean\n) =>\n useMutation({\n mutationKey: ['withdrawFunds'],\n mutationFn: (request: WithdrawFundsRequest) =>\n withdrawFunds(activeClientId, request, isCorporate)\n })\n\nexport const useCloseNoticeAccountMutation = (\n activeClientId: number,\n isCorporate: boolean\n) =>\n useMutation({\n mutationKey: ['closeNoticeAccount'],\n mutationFn: (request: CloseNoticeAccountRequest) =>\n closeNoticeAccount(activeClientId, request, isCorporate)\n })\n","import { createSelector as baseCreateSelector } from 'reselect'\n\nexport const createSelector: typeof baseCreateSelector = baseCreateSelector\n","// UTILS\nimport { createSelector } from 'src/selectors/createSelector'\n\n// SELECTORS\nimport { getIsCorporateUser } from 'src/selectors/userSelectors'\n\n// TYPES & CONSTANTS\nimport { StoreState } from 'src/shared/types'\nimport {\n corporateCustomerServicePhoneNumber,\n customerServicePhoneNumber\n} from 'src/shared/messages'\n\nconst getDepositApplicationState = (state: StoreState) =>\n state.depositApplication\n\nexport const getProductDefinitions = createSelector(\n getDepositApplicationState,\n depositApplicationState => depositApplicationState.products\n)\n\nexport const getNoticeAccountsTableFiltersData = createSelector(\n getDepositApplicationState,\n depositApplicationState => depositApplicationState.tableFilters\n)\n\nexport const getProductDefinitionItem = createSelector(\n [getProductDefinitions, (_: StoreState, productId: number) => productId],\n (productDefinitions, productId) =>\n productDefinitions.find(definition => definition.id === productId)\n)\n\nexport const getHasAgreedToDisclosureStatement = createSelector(\n getDepositApplicationState,\n depositApplicationState =>\n depositApplicationState.hasAgreedToDisclosureStatement\n)\n\nexport const getHasAgreedToTerms = createSelector(\n getDepositApplicationState,\n depositApplicationState => depositApplicationState.hasAgreedToTerms\n)\n\nexport const getCustomerServicePhoneNumber = createSelector(\n getIsCorporateUser,\n isCorporateUser =>\n isCorporateUser\n ? corporateCustomerServicePhoneNumber\n : customerServicePhoneNumber\n)\n\nexport const getProductDefinitionName = createSelector(\n [getProductDefinitionItem, (_: StoreState, productId: number) => productId],\n productDefinition => productDefinition?.productName || ''\n)\n\nexport const getOpenNoticeAccounts = createSelector(\n getDepositApplicationState,\n depositApplicationState => depositApplicationState.openNoticeAccounts\n)\n\nconst getOpenNoticeAccount = createSelector(\n [\n getOpenNoticeAccounts,\n (_: StoreState, noticeAccountId: number) => noticeAccountId\n ],\n (openNoticeAccounts, noticeAccountId) =>\n openNoticeAccounts.find(account => account.id === noticeAccountId)\n)\n\nexport const getOpenNoticeAccountName = createSelector(\n [\n getOpenNoticeAccount,\n (_: StoreState, noticeAccountId: number) => noticeAccountId\n ],\n openNoticeAccount => openNoticeAccount?.productName\n)\n\nexport const getOpenNoticeAccountClosureDate = createSelector(\n [\n getOpenNoticeAccount,\n (_: StoreState, noticeAccountId: number) => noticeAccountId\n ],\n openNoticeAccount => openNoticeAccount?.closureDate || null\n)\n\nexport const getOpenNoticeAccountMigratedDate = createSelector(\n [\n getOpenNoticeAccount,\n (_: StoreState, noticeAccountId: number) => noticeAccountId\n ],\n openNoticeAccount => openNoticeAccount?.migratedDate || null\n)\n\nexport const getOpenNoticeAccountStatus = createSelector(\n [\n getOpenNoticeAccount,\n (_: StoreState, noticeAccountId: number) => noticeAccountId\n ],\n openNoticeAccount => openNoticeAccount?.interestAccountSummaryStatus\n)\n\nexport const getHasFetchedProductDefinitions = createSelector(\n getDepositApplicationState,\n depositApplicationState =>\n depositApplicationState.hasFetchedProductDefinitions\n)\n\nexport const getNoticeAccountDetails = createSelector(\n getDepositApplicationState,\n depositApplicationState => depositApplicationState.noticeAccountDetails\n)\n\nconst getAddFundsState = createSelector(\n getDepositApplicationState,\n depositApplicationState => depositApplicationState.addFundsState\n)\n\nexport const getAddFundsActiveStep = createSelector(\n getAddFundsState,\n addFundsState => addFundsState.activeStep\n)\n\nexport const getNoticeAccountCurrencyCode = createSelector(\n getDepositApplicationState,\n depositApplicationState =>\n depositApplicationState.noticeAccountDetails.currencyCode\n)\n\nexport const getAddFundsAmount = createSelector(\n getAddFundsState,\n addFundsState => addFundsState.amount\n)\n\nexport const getAddFundsErrorMessage = createSelector(\n getAddFundsState,\n addFundsState => addFundsState.errorMessage\n)\n\nconst getWithdrawalState = createSelector(\n getDepositApplicationState,\n depositApplicationState => depositApplicationState.withdrawalState\n)\n\nexport const getWithdrawalActiveStep = createSelector(\n getWithdrawalState,\n withdrawalState => withdrawalState.activeStep\n)\n\nexport const getWithdrawalAmount = createSelector(\n getWithdrawalState,\n withdrawalState => withdrawalState.amount\n)\n\nexport const getWithdrawalErrorMessage = createSelector(\n getWithdrawalState,\n withdrawalState => withdrawalState.errorMessage\n)\n\nexport const getWithdrawalDate = createSelector(\n getDepositApplicationState,\n depositApplicationState =>\n depositApplicationState.noticeAccountDetails.withdrawalDate\n)\n","// UTILS\nimport { createSelector } from 'src/selectors/createSelector'\n\n// TYPES & CONSTANTS\nimport { ClientType, StoreState } from 'src/shared/types'\n\nconst getUserState = (state: StoreState) => state.user\n\nconst getUserSwitchClient = createSelector(\n getUserState,\n userState => userState?.switchClient\n)\n\nconst getUserProfileData = createSelector(\n getUserState,\n userState => userState?.profile\n)\n\nexport const getUserProfile = createSelector(\n getUserProfileData,\n profile => profile\n)\n\nexport const getActiveClientId = createSelector(\n getUserSwitchClient,\n userSwitchClient =>\n userSwitchClient?.activeClientId ?? userSwitchClient?.parentClientId ?? 0\n)\n\nconst getClientType = createSelector(\n getUserProfile,\n userProfile => userProfile?.clientType || ClientType.Corporate\n)\n\nexport const getIsCorporateUser = createSelector(\n getClientType,\n clientType => clientType === ClientType.Corporate\n)\n","// UTILS\nimport { QueryClient } from '@tanstack/react-query'\nimport { importRemote } from '@module-federation/utilities'\nimport { createQueryString } from 'src/shared/utils/createQueryString'\n\n// TYPES & CONSTANTS\nimport { Fetcher, Params } from 'imali/fetcher'\nimport {\n ApplyForNoticeAccountRequest,\n ApplyForNoticeAccountResponse,\n FileResponse,\n isFetchResponse,\n ProductDefinitionsResponse,\n UploadFileRequest,\n UploadFileResponse,\n NoticeAccountItem,\n NoticeAccountTransactions,\n NoticeAccountTransactionsRequestParams,\n TransactionsFileResponse,\n NoticeAccountDetails,\n AddFundsRequest,\n AddFundsResponse,\n WithdrawFundsResponse,\n WithdrawFundsRequest,\n CloseNoticeAccountRequest,\n CloseNoticeAccountResponse\n} from 'src/shared/api/types'\n\nconst fetcherImporter = (isCorporate: boolean) =>\n importRemote<{ fetcher: Fetcher }>({\n url: isCorporate\n ? process.env.REACT_APP_CORP_HOST_CDN_URL!\n : process.env.REACT_APP_PRIVATE_HOST_CDN_URL!,\n scope: 'imali',\n module: 'fetcher'\n })\n .then(({ fetcher }) => fetcher)\n .catch(() => null)\n\nconst getEndpointUrlPrefix = (isCorporate: boolean) =>\n isCorporate ? 'corporate/' : ''\n\nexport const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n retry: 1,\n staleTime: 8 * 1000\n }\n }\n})\n\nconst apiCall = async (params: Params, isCorporate = false, version = 1) => {\n const fetcher = await fetcherImporter(isCorporate)\n\n if (fetcher) {\n return fetcher.call(params, false, version)\n }\n\n const request = {\n headers: params?.headers ?? {},\n method: params?.method ?? 'GET'\n }\n\n if (!params?.data) {\n return fetch(params.url, request)\n }\n\n return fetch(params.url, {\n ...request,\n body: JSON.stringify(params?.data)\n })\n}\n\nconst getResponseData = async (\n response: Awaited>>\n) => {\n if (isFetchResponse(response)) {\n const data: T = await response.json()\n\n return data\n }\n\n return response?.data\n}\n\nconst getContentDisposition = (\n response: Awaited>>\n) => response?.headers?.['content-disposition']\n\nexport const getProductDefinitions = async (\n activeClientId: number,\n headers: HeadersInit = {},\n isCorporate = false\n) => {\n const response = await apiCall(\n {\n url: `${process.env.REACT_APP_BEKA_API_URL}product-definitions`,\n method: 'GET',\n activeClientId,\n headers\n },\n isCorporate\n )\n\n return getResponseData(response)\n}\n\nexport const getProductDisclosureStatementPdf = async (\n activeClientId: number,\n noticeAccountId: string,\n locale: string,\n headers: HeadersInit = {},\n isCorporate = false\n) => {\n const response = await apiCall(\n {\n url: `${\n process.env.REACT_APP_BEKA_API_URL\n }product-definition/${noticeAccountId}${createQueryString({ locale })}`,\n method: 'GET',\n activeClientId,\n responseType: 'blob',\n headers\n },\n isCorporate\n )\n\n return getResponseData(response)\n}\n\nexport const getTermsAndConditionsPdf = async (\n activeClientId: number,\n headers: HeadersInit = {},\n isCorporate = false\n) => {\n const response = await apiCall(\n {\n url: `${process.env.REACT_APP_BEKA_API_URL}terms-and-conditions`,\n method: 'GET',\n activeClientId,\n responseType: 'blob',\n headers\n },\n isCorporate\n )\n\n return getResponseData(response)\n}\n\nexport const applyForNoticeAccountCorporate = async (\n activeClientId: number,\n request: ApplyForNoticeAccountRequest,\n headers: HeadersInit = {}\n) => {\n const response = await apiCall(\n {\n url: `${process.env.REACT_APP_BEKA_API_URL}corporate/open-noticeaccount`,\n method: 'POST',\n activeClientId,\n headers,\n data: request\n },\n true\n )\n\n return getResponseData(response)\n}\n\nexport const applyForNoticeAccountPrivate = async (\n activeClientId: number,\n request: ApplyForNoticeAccountRequest,\n headers: HeadersInit = {}\n) => {\n const response = await apiCall(\n {\n url: `${process.env.REACT_APP_BEKA_API_URL}open-noticeaccount`,\n method: 'POST',\n activeClientId,\n headers,\n data: request\n },\n false\n )\n\n return getResponseData(response)\n}\n\nexport const uploadFile = async (\n activeClientId: number,\n request: UploadFileRequest,\n headers: HeadersInit = { 'Content-Type': 'multipart/form-data' }\n) => {\n const { documentType, file } = request\n\n const formData = new FormData()\n formData.append('document', file)\n formData.append('documentType', documentType)\n\n const response = await apiCall(\n {\n url: `${process.env.REACT_APP_BEKA_API_URL}notice-account/document`,\n method: 'POST',\n activeClientId,\n headers,\n data: formData\n },\n false\n )\n\n return getResponseData(response)\n}\n\nexport const applyForNoticeAccountAfterDocumentUpload = async (\n activeClientId: number,\n request: ApplyForNoticeAccountRequest,\n headers: HeadersInit = {}\n) => {\n const response = await apiCall(\n {\n url: `${process.env.REACT_APP_BEKA_API_URL}notice-account/document/submission`,\n method: 'POST',\n activeClientId,\n headers,\n data: request\n },\n false\n )\n\n return getResponseData(response)\n}\n\nexport const fetchNoticeAccounts = async (\n activeClientId: number,\n isCorporate: boolean,\n headers: HeadersInit = {}\n): Promise => {\n const endpointUrlPrefix = getEndpointUrlPrefix(isCorporate)\n\n const response = await apiCall(\n {\n url: `${process.env.REACT_APP_BEKA_API_URL}${endpointUrlPrefix}notice-accounts`,\n method: 'GET',\n activeClientId,\n headers\n },\n isCorporate\n )\n\n return getResponseData(response)\n}\n\nexport const fetchNoticeAccountTransactions = async (\n activeClientId: number,\n requestParams: NoticeAccountTransactionsRequestParams,\n isCorporate: boolean,\n headers: HeadersInit = {}\n): Promise => {\n const endpointUrlPrefix = getEndpointUrlPrefix(isCorporate)\n\n const response = await apiCall(\n {\n url: `${\n process.env.REACT_APP_BEKA_API_URL\n }${endpointUrlPrefix}notice-account/transactions${createQueryString(\n requestParams\n )}`,\n method: 'GET',\n activeClientId,\n headers\n },\n isCorporate,\n 2\n )\n\n return getResponseData(response)\n}\n\nexport const fetchNoticeAccountTransactionsFile = async (\n activeClientId: number,\n paginationInfoParams: NoticeAccountTransactionsRequestParams,\n isCorporate: boolean,\n headers: HeadersInit = {}\n): Promise => {\n const endpointUrlPrefix = getEndpointUrlPrefix(isCorporate)\n\n const response = await apiCall(\n {\n url: `${\n process.env.REACT_APP_BEKA_API_URL\n }${endpointUrlPrefix}notice-account/transactions${createQueryString(\n paginationInfoParams\n )}`,\n method: 'GET',\n activeClientId,\n responseType: 'blob',\n headers\n },\n isCorporate\n )\n\n return {\n file: await getResponseData(response),\n contentDisposition: getContentDisposition(response)\n }\n}\n\nexport const getNoticeAccountDisclosureStatementFile = async (\n activeClientId: number,\n productDefinitionId: number,\n headers: HeadersInit = {},\n isCorporate = false\n) => {\n const endpointUrlPrefix = getEndpointUrlPrefix(isCorporate)\n\n const response = await apiCall(\n {\n url: `${process.env.REACT_APP_BEKA_API_URL}${endpointUrlPrefix}notice-account/product-disclosure/${productDefinitionId}`,\n method: 'GET',\n activeClientId,\n responseType: 'blob',\n headers\n },\n isCorporate\n )\n\n return getResponseData(response)\n}\n\nexport const fetchNoticeAccountDetails = async (\n activeClientId: number,\n noticeAccountId: string,\n isCorporate: boolean,\n headers: HeadersInit = {}\n): Promise => {\n const endpointUrlPrefix = getEndpointUrlPrefix(isCorporate)\n\n const response = await apiCall(\n {\n url: `${\n process.env.REACT_APP_BEKA_API_URL\n }${endpointUrlPrefix}notice-account/details${createQueryString({\n noticeAccountId\n })}`,\n method: 'GET',\n activeClientId,\n headers\n },\n isCorporate\n )\n\n return getResponseData(response)\n}\n\nexport const addFundsToNoticeAccount = async (\n activeClientId: number,\n request: AddFundsRequest,\n isCorporate: boolean,\n headers: HeadersInit = {}\n): Promise => {\n const endpointUrlPrefix = getEndpointUrlPrefix(isCorporate)\n\n const response = await apiCall(\n {\n url: `${process.env.REACT_APP_BEKA_API_URL}${endpointUrlPrefix}add-funds`,\n method: 'POST',\n activeClientId,\n headers,\n data: request\n },\n isCorporate,\n 2\n )\n\n return getResponseData(response)\n}\n\nexport const withdrawFunds = async (\n activeClientId: number,\n request: WithdrawFundsRequest,\n isCorporate: boolean,\n headers: HeadersInit = {}\n): Promise => {\n const endpointUrlPrefix = getEndpointUrlPrefix(isCorporate)\n\n const response = await apiCall(\n {\n url: `${process.env.REACT_APP_BEKA_API_URL}${endpointUrlPrefix}withdrawals`,\n method: 'POST',\n activeClientId,\n headers,\n data: request\n },\n isCorporate\n )\n\n return getResponseData(response)\n}\n\nexport const closeNoticeAccount = async (\n activeClientId: number,\n request: CloseNoticeAccountRequest,\n isCorporate: boolean,\n headers: HeadersInit = {}\n): Promise => {\n const endpointUrlPrefix = getEndpointUrlPrefix(isCorporate)\n\n const response = await apiCall(\n {\n url: `${process.env.REACT_APP_BEKA_API_URL}${endpointUrlPrefix}close-notice-account`,\n method: 'PUT',\n activeClientId,\n headers,\n data: request\n },\n isCorporate\n )\n\n return getResponseData(response)\n}\n","// TYPES\nimport {\n NoticeAccountTransaction,\n TransactionType\n} from 'src/components/notice-account-transactions/types'\nimport { CurrencyFilterValues, DocumentType, PaginationInfo } from 'wabelane'\nimport { PendingWithdrawals } from 'src/components/notice-accounts/types'\nimport { NoticeAccountWithdrawalStep } from 'src/components/notice-account-withdrawal/types'\nimport { NoticeAccountAddFundsStep } from 'src/components/notice-account-add-funds/types'\n\ntype CurrencyCode = string\n\nexport enum ProductType {\n None = 'None',\n Fixed = 'Fixed'\n}\n\nexport enum FileContentType {\n PDF = 'application/pdf',\n CSV = 'text/csv',\n EXCEL = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n JSON = 'application/json'\n}\n\nexport interface ProductDefinitionsResponse {\n productDefinitions: ProductDefinition[]\n filtersData: ProductDefinitionFiltersDataResponse\n}\n\nexport interface ProductDefinition {\n id: number\n productName: string\n productType: ProductType\n currencyCode: CurrencyCode\n currencyName: string\n currencyDescription: string\n maximumBalance: number\n minimumInitialDepositAmount: number\n minimumAdditionalDepositAmount: number\n productPeriodDays: number\n annualEquivalentRate: number\n rateUnderThreshold: number\n rateOverThreshold: number\n threshold: number\n precision: number\n}\n\nexport interface ProductDefinitionFiltersDataResponse {\n productPeriodDayFilters: number[]\n currencyFilters: CurrencyFilterValues[]\n}\n\nexport const isFetchResponse = (response: any): response is Response =>\n !!response.json\n\nexport interface ApiValidationError {\n code?: string\n error?: string\n message?: string\n}\n\nexport interface ApiMultiValidationError>\n extends ApiValidationError {\n errors?: T\n}\n\nexport interface ApiErrorWithReasonCode\n extends ApiMultiValidationError {\n Reason?: string\n}\n\nexport type FileResponse = Blob\n\nexport interface ApplyForNoticeAccountResponse {\n interestAccountSummaryId: number\n clientProfileId: number\n isAwaitingDocuments?: boolean\n}\n\nexport interface ApplyForNoticeAccountRequest {\n productDefinitionId: number\n}\n\nexport interface UploadFileResponse {\n documentType: DocumentType\n documentId: string\n}\n\nexport interface UploadFileRequest {\n documentType: DocumentType\n file: File\n}\n\nexport const enum AccountStatus {\n Active = 'Active',\n PendingClosure = 'PendingClosure',\n Closed = 'Closed'\n}\n\nexport interface NoticeAccountItem {\n id: number\n precision: number\n currencyCode: string\n totalBalance: number\n closureDate: Date | null\n availableBalance: number\n interestRate: number\n pendingWithdrawals: PendingWithdrawals[]\n productName: string\n interestProductDefinitionId: number\n interestAccountSummaryStatus: AccountStatus\n hasPendingRateDecrease: boolean\n migratedDate: Date | null\n}\n\nexport interface NoticeAccountTransactions {\n items: NoticeAccountTransaction[]\n paginationInfo: PaginationInfo\n}\n\nexport interface NoticeAccountTransactionsRequestParams\n extends Record {\n page: number\n resultsPerPage: number\n noticeAccountId: string\n types: TransactionType[]\n startDate: string | null\n endDate: string | null\n shouldShowPending: boolean\n beforeMigration: boolean\n}\n\nexport interface TransactionsFileResponse {\n file: FileResponse\n contentDisposition: string\n}\n\nexport interface NoticeAccountDetails {\n id: number\n currencyCode: CurrencyCode\n totalBalance: number\n threshold: number\n productName: string\n maximumBalance: number\n minimumInitialDepositAmount: number\n productPeriodDays: number\n multiCurrencyAvailableBalance: number\n precision: number\n withdrawalDate: Date | null\n availableBalance: number\n hasPendingRateDecrease: boolean\n}\n\nexport interface AddFundsRequest {\n noticeAccountId: number\n amount: number\n}\n\nexport interface WithdrawFundsRequest {\n noticeAccountId: number\n withdrawalDate: string\n amount: number\n}\n\nexport interface CloseNoticeAccountRequest {\n noticeAccountId: number\n closureDate: string\n}\n\nexport interface AddFundsResponse {\n interestFundLineId: number\n interestFundId: number\n interestFundEventId: number\n clientFundId: number\n clientFundLineId: number\n}\n\nexport interface WithdrawFundsResponse {\n interestFundLineId: number\n}\n\nexport interface CloseNoticeAccountResponse {\n interestAccountSummaryId: number\n}\n\nexport interface AddFundsState {\n activeStep: NoticeAccountAddFundsStep\n amount: string\n errorMessage: string\n}\n\nexport interface WithdrawalState {\n activeStep: NoticeAccountWithdrawalStep\n amount: string\n errorMessage: string\n}\n","import styled from 'styled-components'\n\n// STYLES\nimport { TextV2, defaultFontStyle } from 'wabelane'\n\nexport const FormattedSignedNumberText = styled(TextV2)`\n ${defaultFontStyle}\n`\n\nexport const NumberSignWrapper = styled(FormattedSignedNumberText)<{\n signColor: string\n}>`\n ${({ signColor }) => `color: ${signColor};`}\n`\n","import * as React from 'react'\nimport { useIntl } from 'react-intl'\n\n// COMPONENTS & STYLES\nimport { colours, FlexContainerWrapper } from 'wabelane'\nimport {\n FormattedSignedNumberText,\n NumberSignWrapper\n} from 'src/shared/components/FormattedSignedNumber.styles'\n\n// TYPES & CONSTANTS\nimport { FormattedSignedNumberProps, NumberDirection } from 'src/shared/types'\n\nexport const FormattedSignedNumber: React.FC = ({\n direction,\n value,\n currency,\n precision\n}) => {\n const intl = useIntl()\n\n const formattedAmount = intl.formatNumber(value, {\n minimumFractionDigits: precision\n })\n let amountSign = '+'\n let signColor = colours.notification_success\n\n if (direction === NumberDirection.Negative) {\n amountSign = '-'\n signColor = colours.error\n }\n\n return (\n \n {amountSign}\n\n {formattedAmount}\n\n {!!currency && (\n  {currency}\n )}\n \n )\n}\n","import {\n PaginationInfoMap,\n TransactionTab\n} from 'src/components/notice-account-transactions/types'\nimport { INITIAL_PAGE_SIZE, PaginationInfo } from 'wabelane'\n\nexport const DEFAULT_PRECISION = 2\n\nexport const DEFAULT_FILE_NAME = 'Moneycorp'\n\nexport const CONTENT_DISPOSITION_REGEX =\n /filename=['\"]?(?:UTF-\\d['\"]*)?([^;\\r\\n\"'.]*)['\"]?;?/\n\nexport const NOTICE_ACCOUNT_TRANSACTIONS_CONTENT_DISPOSITION_FALLBACK =\n 'Notice Account Transaction Statement'\n\nexport const DEFAULT_PAGINATION_INFO: PaginationInfo = {\n currentPage: 1,\n resultsPerPage: INITIAL_PAGE_SIZE,\n totalPages: 1,\n totalItems: 0,\n totalFilteredItems: 0\n}\n\nexport const DEFAULT_PAGINATION_INFO_MAP: PaginationInfoMap = {\n [TransactionTab.Completed]: DEFAULT_PAGINATION_INFO,\n [TransactionTab.Pending]: DEFAULT_PAGINATION_INFO\n}\n\nexport const SHOW_PAGINATION_ITEMS_COUNT_THRESHOLD = 25\n\nexport const DATE_FORMAT = 'yyyy-MM-dd'\n\nexport const NOTICE_ACCOUNT_NAME_SESSION_STORAGE_KEY = 'notice_account_name'\n","// TYPES & CONSTANTS\nimport { AppName } from 'babel-cms/src/I18nProvider/types/i18n'\n\nexport enum Locales {\n FR = 'fr-FR',\n GB = 'en-GB',\n US = 'en-US',\n RO = 'ro-RO',\n ES = 'es-ES'\n}\n\nexport const AVAILABLE_US_LANGUAGES: Locales[] = [\n Locales.GB,\n Locales.US,\n Locales.RO,\n Locales.ES\n]\n\nexport const APP_NAME: AppName = 'deposit'\n\nexport const MISSING_LOCALE_ERROR_TEXT = 'No locale found in store!!!'\n","import { Locale } from 'date-fns'\nimport { AVAILABLE_US_LANGUAGES, Locales } from 'src/shared/i18n/constants'\n\nexport const registerLocale = (localeName: string, localeData: Locale) => {\n const scope = typeof window !== 'undefined' ? window : global\n\n if (!scope.__localeData__) {\n scope.__localeData__ = {}\n }\n\n if (!scope.__localeData__[localeName]) {\n scope.__localeData__[localeName] = localeData\n }\n}\n\nexport const setDefaultLocale = (localeName: string) => {\n const scope = typeof window !== 'undefined' ? window : global\n\n scope.__localeId__ = localeName\n}\n\nexport const getDefaultLocale = () => {\n const scope = typeof window !== 'undefined' ? window : global\n\n return scope.__localeId__\n}\n\nexport const getLocaleObject = (\n localeSpec: string | Record\n): Locale | null => {\n if (typeof localeSpec === 'string') {\n // Treat it as a locale name registered by registerLocale\n const scope = typeof window !== 'undefined' ? window : global\n\n return scope.__localeData__\n ? (scope.__localeData__[localeSpec] as Locale)\n : null\n }\n\n // Treat it as a raw date-fns locale object\n return localeSpec as Locale\n}\n\nexport const getDefaultLocaleObject = (): Locale | undefined => {\n const defaultLocaleName = getDefaultLocale()\n\n return defaultLocaleName\n ? getLocaleObject(defaultLocaleName) ?? undefined\n : undefined\n}\n\nexport const getAvailableLanguages = (): string[] => [\n ...AVAILABLE_US_LANGUAGES,\n Locales.FR\n]\n","import { DashboardTestIds } from 'src/shared/integration-testing/test-elements-ids/dashboard'\nimport { ProductTestIds } from 'src/shared/integration-testing/test-elements-ids/product'\nimport { ProductDetailsTestIds } from 'src/shared/integration-testing/test-elements-ids/notice-account-details'\nimport { ProductTableFiltersTestIds } from 'src/shared/integration-testing/test-elements-ids/notice-accounts-table-filters'\nimport { NoticeAccountsTestIds } from 'src/shared/integration-testing/test-elements-ids/notice-accounts'\nimport { NoticeAccountTransactionsTestIds } from 'src/shared/integration-testing/test-elements-ids/notice-account-transactions'\nimport { AddFundsTestIds } from 'src/shared/integration-testing/test-elements-ids/add-funds'\nimport { WithdrawalTestIds } from 'src/shared/integration-testing/test-elements-ids/withdrawal'\nimport { ClosureTestIds } from 'src/shared/integration-testing/test-elements-ids/closure'\nimport { FailPageTestIds } from 'src/shared/integration-testing/test-elements-ids/failPageTestIds'\nimport { SharedTestIds } from 'src/shared/integration-testing/test-elements-ids/shared'\n\nexport const IntegrationTestIds = {\n ...FailPageTestIds,\n ...DashboardTestIds,\n ...ProductTestIds,\n ...ProductDetailsTestIds,\n ...ProductTableFiltersTestIds,\n ...NoticeAccountsTestIds,\n ...NoticeAccountTransactionsTestIds,\n ...AddFundsTestIds,\n ...WithdrawalTestIds,\n ...ClosureTestIds,\n ...SharedTestIds\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type IntegrationTestIds = typeof IntegrationTestIds\n","export const FailPageTestIds = {\n FailTryAgainButton: 'fail_try_again_button',\n FailCancelButton: 'fail_cancel_button',\n FailTitle: 'fail_title',\n FailResultContentTitle: 'fail_result_content_title'\n}\n","export const DashboardTestIds = {\n DashboardPromoBoxToastNotification: 'dashboard_promo_box_toast_notification',\n DashboardViewProductLink: 'dashboard_view_product_link',\n DashboardPromoBoxToastNotificationTitle:\n 'dashboard_promo_box_toast_notification_title'\n}\n","export const ProductTestIds = {\n ProductToastNotification: 'product_toast_notification',\n ProductLearnMoreNotificationLink: 'product_learn_more_notification_link',\n ProductTableViewButton: 'product_table_view_button'\n}\n","export const ProductDetailsTestIds = {\n BackToProductAccountsLink: 'back_to_product_accounts_link',\n ProductAccountContainerTitleId: 'product_account_container_title_id',\n ProductDetailsConsentSectionId: 'product_details_consent_section_id',\n BackToProductsLink: 'back_to_products_link',\n ProductContainerTitleId: 'product_container_title_id',\n ProductDetailsCancelButton: 'product_details_cancel_button',\n ProductDetailsApplyButton: 'product_details_apply_button',\n GrossAnnualInterestValue: 'gross_annual_interest_value',\n ProductDetailsTypeValue: 'product_details_type_value',\n ProductDetailsLengthValue: 'product_details_length_value',\n ProductDetailsCurrencyValue: 'product_details_currency_value',\n AnnualEquivalentRateValue: 'annual_equivalent_rate_value',\n MaximumDepositValue: 'maximum_deposit_value',\n MinimumInitialDepositValue: 'minimum_initial_deposit_value',\n MinimumAdditionalDepositValue: 'minimum_additional_deposit_value',\n ProductDisclosureStatementCheckbox: 'product_disclosure_statement_checkbox',\n ProductDisclosureStatementLink: 'product_disclosure_statement_link',\n TermsAndConditionsCheckbox: 'terms_and_conditions_checkbox',\n TermsAndConditionsLink: 'terms_and_conditions_link',\n ConfirmationPageSuccessButton: 'confirmation_page_success_button',\n ConfirmationPageAddFundsButton: 'confirmation_page_add_funds_button',\n ConfirmationPageBackToOverviewButtonLink:\n 'confirmation_page_back_to_overview_button',\n AccountSummary: 'account_summary',\n AccountSummaryDetailInfoText: 'account_summary_detail_info',\n AccountSummaryBalancesOver: 'account_summary_balances_over',\n AccountSummaryBalancesBelow: 'account_summary_balances_below',\n AccountSummaryOpeningDepositBalance:\n 'account_summary_opening_deposit_balance',\n AccountSummaryBalanceAfterAYear: 'account_summary_balance_after_a_year',\n AccountSummaryInterestEarned: 'account_summary_interest_earned',\n AccountSummaryMaximumBalanceValue: 'account_summary_maximum_balance',\n AccountSummaryMinimumAdditionalDeposit:\n 'account_summary_minimum_additional_deposit',\n AccountSummaryMinimumAdditionalDepositWithdraw:\n 'account_summary_minimum_additional_deposit_withdraw',\n ApplicationFailedTryAgainButton: 'application_failed_try_again_button',\n ApplicationFailedBackToOverviewLink:\n 'application_failed_back_to_overview_link',\n ProductApplicationConfirmationPageTitle:\n 'product_application_confirmation_page_title',\n ProductApplicationConfirmationPagePhoneNumber:\n 'product_application_confirmation_page_phone_number'\n}\n","export const ProductTableFiltersTestIds = {\n ProductTableTypeFilter: 'product_table_type_filter',\n NoticeAccountsTablePeriodFilter: 'product_table_period_filter',\n NoticeAccountsTableCurrencyFilter: 'product_table_currency_filter',\n NoticeAccountsTableClearFilterButton: 'product_table_clear_filter_button'\n}\n","// TYPES\nimport { IntegrationTestIdParam } from 'src/shared/integration-testing/types'\n\nexport const NoticeAccountsTestIds = {\n NoticeAccountsList: 'notice_accounts_list',\n NoticeAccountsBalanceItem: ({ id }: IntegrationTestIdParam) =>\n `notice_accounts_balance_item_${id}`,\n CurrencyNoticeAccountsListColumn: 'notice_accounts_currency_column',\n TotalBalanceNoticeAccountsListColumn: 'notice_accounts_total_balance_column',\n AvailableBalanceNoticeAccountsListColumn:\n 'notice_accounts_available_balance_column',\n GrossInterestNoticeAccountsListColumn:\n 'notice_accounts_gross_interest_column',\n CloseNoticeAccountButton: 'notice_accounts_close_notice_account_button',\n ViewTransactionsButton: 'notice_accounts_view_transactions_button',\n WithdrawNoticeAccountButton: 'notice_account_withdraw_button',\n AddFundsNoticeAccountButton: 'notice_account_add_funds_button',\n PendingWithdrawalsTableItem: ({ id }: IntegrationTestIdParam) =>\n `notice_account_pending_withdrawals_table_item_${id}`,\n NoticeAccountProductDisclosureStatementButton:\n 'notice_account_product_disclosure_statement_button',\n NoticeAccountTransactionsListItem: ({ id }: IntegrationTestIdParam) =>\n `notice_account_transactions_list_item_${id}`,\n PendingClosurePeriodNotification: 'pending_closure_period_notification',\n PendingRateChangeNotification: 'pending_rate_change_notification',\n BalanceItemCurrencyLabel: ({ id }: IntegrationTestIdParam) =>\n `balance_item_currency_label_${id}`,\n BalanceItemTotalBalance: ({ id }: IntegrationTestIdParam) =>\n `balance_item_total_balance_${id}`,\n BalanceItemAvailableBalance: ({ id }: IntegrationTestIdParam) =>\n `balance_item_available_balance_${id}`,\n BalanceItemGrossInterest: ({ id }: IntegrationTestIdParam) =>\n `balance_item_gross_interest_${id}`,\n BalanceItemHeaderNotificationText: ({ id }: IntegrationTestIdParam) =>\n `balance_item_header_notification_${id}`,\n PendingWithdrawalDescription: ({ id }: IntegrationTestIdParam) =>\n `pending_withdrawal_description_${id}`,\n PendingWithdrawalClearDate: ({ id }: IntegrationTestIdParam) =>\n `pending_withdrawal_clear_date_${id}`,\n PendingWithdrawalAmount: ({ id }: IntegrationTestIdParam) =>\n `pending_withdrawal_amount_${id}`,\n NoticeAccountNameTitle: 'notice_account_name_title'\n}\n","// TYPES\nimport { IntegrationTestIdParam } from 'src/shared/integration-testing/types'\n\nexport const NoticeAccountTransactionsTestIds = {\n NoticeAccountTransactionTypeFilter: 'notice_account_transaction_type_filter',\n CompletedTransactionsTableDateFilter:\n 'completed_transactions_table_date_filter',\n CompletedTransactionsTableDateFilterEndDate:\n 'completed_transactions_table_date_filter_end_date',\n CompletedTransactionsTableDateFilterStartDate:\n 'completed_transactions_table_date_filter_start_date',\n NoticeAccountTransactionsClearFiltersButton:\n 'completed_transactions_table_clear_filter_button',\n TransactionsTab: ({ id }: IntegrationTestIdParam) => `transactions_tab_${id}`,\n NoticeAccountTransactionsFetchErrorText:\n 'notice_account_transactions_fetch_error_text',\n NoticeAccountPendingTransactionsNoResultsText:\n 'notice_account_pending_transactions_no_results_text',\n ClosedNoticeAccountNotification: 'closed_notice_account_notification',\n MigratedNoticeAccountNotification: 'migrated_notice_account_notification',\n MigratedNoticeAccountDropdown: 'migrated_notice_account_dropdown'\n}\n","export const AddFundsTestIds = {\n AddFundsContinueButton: 'add_funds_continue_button',\n AddFundsConfirmButton: 'add_funds_confirm_button',\n AddFundsTotalBalance: 'add_funds_total_balance',\n AddFundsAvailableBalance: 'add_funds_available_balance',\n AddFundsMinimumBalanceNotification: 'add_funds_minimum_balance_notification',\n AddFundsNoticePeriodNotification: 'add_funds_notice_period_notification',\n AddFundsError: 'add_funds_error',\n AddFundsCurrencyInput: 'add_funds_currency',\n AddFundsCancelLink: 'add_funds_cancel_link',\n AddFundsDetailsTitle: 'add_funds_details_title',\n AddFundsReviewTitle: 'add_funds_review_title',\n AddFundsSuccessTitle: 'add_funds_success_title',\n AddFundsErrorTitle: 'add_funds_error_title',\n AddFundsAddMoreFundsButton: 'add_funds_add_more_funds_button',\n AddFundsTryAgainButton: 'add_funds_try_again_button'\n}\n","export const WithdrawalTestIds = {\n WithdrawalContinueButton: 'withdrawal_continue_button',\n WithdrawalConfirmButton: 'withdrawal_confirm_button',\n WithdrawalAvailableBalance: 'withdrawal_available_balance',\n WithdrawalMinimumBalanceNotification:\n 'withdrawal_minimum_balance_notification',\n WithdrawalError: 'withdrawal_error',\n WithdrawalCurrencyInput: 'withdrawal_currency_input_error',\n WithdrawalCancelLink: 'withdrawal_cancel_link',\n WithdrawalDetailsTitle: 'withdrawal_details_title',\n WithdrawalReviewTitle: 'withdrawal_review_title',\n WithdrawalSuccessTitle: 'withdrawal_success_title',\n WithdrawalSuccessResultContentTitle:\n 'withdrawal_success_result_content_title',\n WithdrawalSuccessResultContentText: 'withdrawal_success_result_content_text',\n WithdrawalSuccessBackToOverviewButton:\n 'withdrawal_success_back_to_overview_button'\n}\n","export const ClosureTestIds = {\n ClosureContentTitle: 'closure_content_title',\n ClosureNoticePeriodDescription: 'closure_notice_period_description',\n ClosureConfirmModal: 'closure_confirm_modal',\n ClosureModalConfirmButton: 'closure_modal_confirm_button',\n ClosureModalCancelButton: 'closure_modal_cancel_button',\n ClosureModalWithdrawalInfo: 'closure_modal_withdrawal_info',\n ClosureSuccessPageTitle: 'closure_success_page_title',\n ClosureSuccessContentTitle: 'closure_success_content_title',\n ClosureSuccessContentText: 'closure_success_content_text',\n ClosureSuccessBackToOverviewButton: 'closure_success_back_to_overview_button'\n}\n","// TYPES\nimport { IntegrationTestIdParam } from 'src/shared/integration-testing/types'\n\nexport const SharedTestIds = {\n detailsRow: ({ id }: IntegrationTestIdParam) => `details_row_${id}`\n}\n","import { MessageDescriptor } from 'react-intl'\n\nexport const corporateCustomerServicePhoneNumber: MessageDescriptor = {\n id: 'corporate.siteMenu.customerServiceContactBoxPhoneNumber',\n defaultMessage: '+44(0)20 7823 7400',\n description: 'The PhoneNumber of the contact box in the site menu'\n}\n\nexport const customerServicePhoneNumber: MessageDescriptor = {\n id: 'siteMenu.contactBoxPhoneNumber',\n defaultMessage: '+44(0)20 7589 3000',\n description: 'The PhoneNumber of the contact box in the site menu'\n}\n\nexport const failPageContentTitle: MessageDescriptor = {\n id: 'deposit.withdrawals.failPageTitle',\n defaultMessage: 'There was a problem processing your request',\n description: 'Text for FNDA withdrawal fail page title'\n}\n\nexport const failPageInfo: MessageDescriptor = {\n id: 'deposit.withdrawals.failPageInfoText',\n defaultMessage:\n 'Please try again. If the problem persists, please call us on:{lineBreakHtml}{phoneNumber}',\n description: 'Text for FNDA withdrawals fail page info text'\n}\n\nexport const failPageTryAgainButtonText: MessageDescriptor = {\n id: 'deposit.withdrawals.failPageTryAgainButtonText',\n defaultMessage: 'Try again',\n description: 'text for try again button on fail page'\n}\n\nexport const failPageCancelButtonText: MessageDescriptor = {\n id: 'deposit.withdrawals.failPageCancelButtonText',\n defaultMessage: 'Cancel',\n description: 'text for cancel button on fail page'\n}\n","// TYPES\nimport { Store, Reducer } from 'redux'\nimport { MessageDescriptor } from 'react-intl'\nimport { I18nState } from 'babel-cms/src/I18nProvider/reducer'\nimport { DepositApplicationReducerState } from 'src/reducers/depositApplicationReducer'\nimport { DepositTransactionsState } from 'src/reducers/depositTransactionsReducer'\n\nexport const enum UserProfileRoles {\n CanCreateRecipient = 'CanCreateRecipient',\n CanCreateDeal = 'CanCreateDeal',\n CanCreatePayment = 'CanCreatePayment',\n CanPayByDebitCard = 'CanPayByDebitCard',\n CanViewLiveRates = 'CanViewLiveRates',\n CanViewAdvancedLiveRates = 'CanViewAdvancedLiveRates',\n CanValidateRecipient = 'CanValidateRecipient',\n CanCreateDraftPayment = 'CanCreateDraftPayment',\n CanCreateDealForOwnPayment = 'CanCreateDealForOwnPayment',\n CanBulkUpload = 'CanBulkUpload',\n CanClientBulkUpload = 'CanClientBulkUpload',\n CanClientSendPayment = 'CanClientSendPayment',\n CanClientExchangeCurrency = 'CanClientExchangeCurrency',\n CanCreateCollectionMethod = 'CanCreateCollectionMethod(DD/ACH)',\n CloudElementsEnabled = 'CloudElementsEnabled',\n CanCreateInterNetworkTransfer = 'CanCreateInterNetworkTransfer',\n CanManageLineOfCredit = 'CanManageLineOfCredit',\n CanApplyLineOfCredit = 'CanApplyLineOfCredit'\n}\n\nexport const enum UserApplicationSource {\n Moneycorp = 'Moneycorp',\n MoneycorpUS = 'MoneycorpInc',\n MoneycorpBank = 'MoneycorpBank',\n MoneycorpRomania = 'MoneycorpRomania',\n MoneycorpSpain = 'MoneycorpSpain',\n MoneycorpEuropeIreland = 'MoneycorpEuropeIreland',\n MoneycorpEuropeSpain = 'MoneycorpEuropeSpain',\n MoneycorpEuropeRomania = 'MoneycorpEuropeRomania',\n MoneycorpEurope = 'MoneycorpEurope',\n MoneycorpEuropeFrance = 'MoneycorpEuropeFrance'\n}\n\nexport enum UserDetailsRequiredVerification {\n None = 'None',\n Email = 'Email',\n Phone = 'Phone'\n}\n\nexport enum ClientType {\n Private = 'Private',\n Corporate = 'Corporate'\n}\n\nexport enum ErrorCode {\n Unknown = 'UNK',\n ApiFailure = 'API',\n DatabaseFailure = 'DB',\n InvalidCredentials = 'USER',\n UserIsLockedOut = 'LOCK',\n NotAuthorized = 'AUTH',\n KycStoreFailed = 'KYC',\n DataInput = 'DATA',\n Duplicate = 'DUP',\n ProcessFailed = 'FAIL',\n NoValue = 'NULL',\n UnexpectedValue = 'UNEX',\n IncorrectFormat = 'FORM',\n ViolatesMcPolicy = 'POL',\n InvalidOperationState = 'INVOPSTATE',\n InvalidOperationRequest = 'INVOPREQ',\n DuplicateOperation = 'DUPOP',\n InvalidOperationSequence = 'INVOPSEQ',\n NegativeBalances = 'NEGBAL',\n InvalidHmac = 'HMAC',\n BelowMinimum = 'LOWAMT',\n CannotSend = 'CANNOTSEND',\n MarketingPreferencesRequired = 'GDPR',\n NewTermsAndConditions = 'TCNOTACCEPTED',\n Timeout = 'TIME',\n Overflow = 'OVER',\n UserNotPrivate = 'NOTPRIVATE',\n UserNotCorporate = 'NOTCORPORATE',\n Value = 'VAL'\n}\n\nexport const enum FetchDataState {\n NoData = 'NO_DATA',\n Loading = 'LOADING',\n Failed = 'FAILED',\n Ready = 'READY'\n}\n\nexport interface FetchData {\n data: A | null\n state: FetchDataState\n error: ErrorCode | null\n}\n\nexport interface BaseUserProfileResponse {\n userName: string\n clientName?: string\n firstName: string\n lastName: string\n crmAccountGuid: string\n applicationSource: UserApplicationSource\n referringPartner: number\n ckReference: string\n clientId: number\n isNewCustomer: boolean\n hasClientFndaTransactions: boolean\n verifyDetails: UserDetailsRequiredVerification\n isMfaEnabled: boolean\n clientType: ClientType\n roles: UserProfileRoles[]\n}\n\nexport interface BaseUserDetailsState {\n profile: BaseUserProfileResponse\n threatMetrixToken: string | null\n threatMetrixDomain: string | null\n threatMetrixOrgId: string | null\n}\n\nexport const enum SwitchClientState {\n NoAccount = 'NO_ACCOUNT',\n AccountSelected = 'ACCOUNT_SELECTED',\n Switching = 'SWITCHING',\n Failed = 'FAILED'\n}\n\nexport interface SwitchClient {\n parentClientId: number\n activeClientId: number\n switchClientState: SwitchClientState\n}\n\nexport interface UserDetailsState extends BaseUserDetailsState {\n switchClient?: SwitchClient\n}\n\nexport interface AuthState {\n loginStatus: string\n name: string\n subjectId: string\n referringPartner: string\n applicationSource: number\n}\n\nexport const enum AccessTokenState {\n Expiring = 'ACCESS_TOKEN_EXPIRING',\n Expired = 'ACCESS_TOKEN_EXPIRED',\n None = 'ACCESS_TOKEN_NONE',\n Valid = 'ACCESS_TOKEN_VALID'\n}\n\nexport interface OidcReducerState {\n accessTokenState: AccessTokenState\n userSignInSilentExecuting: boolean\n}\n\nexport interface StoreStateShared {\n user: UserDetailsState\n auth: AuthState\n oidc: OidcReducerState\n i18n: I18nState\n}\n\nexport interface StoreState extends StoreStateShared {\n depositI18n: I18nState\n depositApplication: DepositApplicationReducerState\n depositTransactions: DepositTransactionsState\n}\n\nexport interface StoreWithInjection extends Store {\n injectReducers: (reducers: Record) => void\n}\n\nexport enum ToastMessageType {\n Error = 'Error',\n Success = 'Success',\n Info = 'Info'\n}\n\nexport enum LinkType {\n Phone = 'Phone',\n Email = 'Email'\n}\n\nexport enum AutoCloseType {\n Default = 'Default',\n Close = 'Close',\n DontClose = 'DontClose'\n}\n\nexport interface Link {\n linkType: LinkType\n message: MessageDescriptor\n}\n\nexport interface ToastConfig {\n message: MessageDescriptor\n messageType: ToastMessageType\n messageParams: any\n name: string\n links: Link[]\n shouldExcludeIcon: boolean\n autoCloseType: AutoCloseType\n autoCloseTimeInMilliSeconds: number\n}\n\nexport enum NumberDirection {\n Positive = 'Positive',\n Negative = 'Negative'\n}\n\nexport interface FormattedSignedNumberProps {\n direction: NumberDirection\n value: number\n precision: number\n currency?: string\n}\n","import format from 'date-fns/esm/format'\n\n// UTILS\nimport { getDefaultLocaleObject } from 'src/shared/i18n/localeUtils'\n\n// CONSTANTS\nimport { DATE_FORMAT } from 'src/shared/constants'\n\nexport const appIsInStandaloneMode = () =>\n window.location.origin ===\n (process.env.PUBLIC_URL || process.env.REACT_APP_SELF_ORIGIN_URL)\n\nexport const getTwoLetterCountryCode = (currencyCode: string) =>\n currencyCode.substring(0, 2).toLowerCase()\n\nexport const parseAmount = (amount: string) => Number(amount.replace(/,/g, ''))\n\nexport const formatDate = (date: Date | null) => {\n if (!date) {\n return null\n }\n\n return format(date, DATE_FORMAT, {\n locale: getDefaultLocaleObject()\n })\n}\n\nexport const formatDateWithFullMonth = (date: Date) => {\n const dayFromDate = date.getDate()\n const day = dayFromDate < 10 ? `0${dayFromDate}` : dayFromDate\n const month = date.toLocaleString('default', { month: 'long' })\n const year = date.getFullYear()\n\n return `${day} ${month} ${year}`\n}\n\nexport const getDateOneYearBack = (date: Date) => {\n const previousYear = new Date(date).getFullYear() - 1\n const newDate = new Date(date).setFullYear(previousYear)\n\n return new Date(newDate)\n}\n","import styled from 'styled-components'\nimport {\n DividingHeader,\n FlexContainerWrapper,\n colours,\n gridSettings\n} from 'wabelane'\n\nexport const ViewTitle = styled(DividingHeader)`\n font-size: 24px;\n margin: 0 0 32px;\n padding-bottom: 8px;\n`\n\nexport const StyledDepositApplicationWrapper = styled(FlexContainerWrapper)`\n background: ${colours.white};\n\n @media (max-width: ${gridSettings.breakpoints.sm}px) {\n padding: 16px;\n }\n`\n\nexport const Divider = styled.div`\n width: 100%;\n height: 0;\n border-bottom: 1px solid ${colours.divider_border_color};\n`\n","var map = {\n\t\"./af/index.js\": [\n\t\t74682,\n\t\t4682\n\t],\n\t\"./ar-DZ/index.js\": [\n\t\t80779,\n\t\t779\n\t],\n\t\"./ar-EG/index.js\": [\n\t\t47232,\n\t\t7232\n\t],\n\t\"./ar-MA/index.js\": [\n\t\t99530,\n\t\t9530\n\t],\n\t\"./ar-SA/index.js\": [\n\t\t6114,\n\t\t6114\n\t],\n\t\"./ar-TN/index.js\": [\n\t\t93417,\n\t\t3417\n\t],\n\t\"./ar/index.js\": [\n\t\t74896,\n\t\t4896\n\t],\n\t\"./az/index.js\": [\n\t\t95123,\n\t\t5123\n\t],\n\t\"./be-tarask/index.js\": [\n\t\t83350,\n\t\t2982,\n\t\t3350\n\t],\n\t\"./be/index.js\": [\n\t\t20379,\n\t\t2982,\n\t\t379\n\t],\n\t\"./bg/index.js\": [\n\t\t21614,\n\t\t1614\n\t],\n\t\"./bn/index.js\": [\n\t\t96893,\n\t\t6893\n\t],\n\t\"./bs/index.js\": [\n\t\t90904,\n\t\t904\n\t],\n\t\"./ca/index.js\": [\n\t\t52606,\n\t\t2606\n\t],\n\t\"./cs/index.js\": [\n\t\t95726,\n\t\t5726\n\t],\n\t\"./cy/index.js\": [\n\t\t97792,\n\t\t7792\n\t],\n\t\"./da/index.js\": [\n\t\t22616,\n\t\t2616\n\t],\n\t\"./de-AT/index.js\": [\n\t\t15219,\n\t\t5219\n\t],\n\t\"./de/index.js\": [\n\t\t15407,\n\t\t5407\n\t],\n\t\"./el/index.js\": [\n\t\t66986,\n\t\t6986\n\t],\n\t\"./en-AU/index.js\": [\n\t\t70238,\n\t\t238\n\t],\n\t\"./en-CA/index.js\": [\n\t\t52326,\n\t\t2326\n\t],\n\t\"./en-GB/index.js\": [\n\t\t97302,\n\t\t7302\n\t],\n\t\"./en-IE/index.js\": [\n\t\t38059,\n\t\t8059\n\t],\n\t\"./en-IN/index.js\": [\n\t\t2392,\n\t\t2392\n\t],\n\t\"./en-NZ/index.js\": [\n\t\t23893,\n\t\t3893\n\t],\n\t\"./en-US/index.js\": [\n\t\t30609,\n\t\t609\n\t],\n\t\"./en-ZA/index.js\": [\n\t\t80583,\n\t\t583\n\t],\n\t\"./eo/index.js\": [\n\t\t56546,\n\t\t8199\n\t],\n\t\"./es/index.js\": [\n\t\t1259,\n\t\t1259\n\t],\n\t\"./et/index.js\": [\n\t\t22052,\n\t\t2052\n\t],\n\t\"./eu/index.js\": [\n\t\t48734,\n\t\t8734\n\t],\n\t\"./fa-IR/index.js\": [\n\t\t17432,\n\t\t7432\n\t],\n\t\"./fi/index.js\": [\n\t\t80925,\n\t\t925\n\t],\n\t\"./fr-CA/index.js\": [\n\t\t26364,\n\t\t6364\n\t],\n\t\"./fr-CH/index.js\": [\n\t\t96546,\n\t\t6546\n\t],\n\t\"./fr/index.js\": [\n\t\t31790,\n\t\t1790\n\t],\n\t\"./fy/index.js\": [\n\t\t2617,\n\t\t2617\n\t],\n\t\"./gd/index.js\": [\n\t\t56382,\n\t\t6382\n\t],\n\t\"./gl/index.js\": [\n\t\t83103,\n\t\t3103\n\t],\n\t\"./gu/index.js\": [\n\t\t99567,\n\t\t9567\n\t],\n\t\"./he/index.js\": [\n\t\t89661,\n\t\t9661\n\t],\n\t\"./hi/index.js\": [\n\t\t35598,\n\t\t5598\n\t],\n\t\"./hr/index.js\": [\n\t\t36774,\n\t\t6774\n\t],\n\t\"./ht/index.js\": [\n\t\t77243,\n\t\t7243\n\t],\n\t\"./hu/index.js\": [\n\t\t94101,\n\t\t4101\n\t],\n\t\"./hy/index.js\": [\n\t\t64085,\n\t\t4085\n\t],\n\t\"./id/index.js\": [\n\t\t54473,\n\t\t4473\n\t],\n\t\"./is/index.js\": [\n\t\t69787,\n\t\t9787\n\t],\n\t\"./it-CH/index.js\": [\n\t\t56374,\n\t\t6567,\n\t\t6374\n\t],\n\t\"./it/index.js\": [\n\t\t70556,\n\t\t6567,\n\t\t556\n\t],\n\t\"./ja-Hira/index.js\": [\n\t\t84460,\n\t\t4460\n\t],\n\t\"./ja/index.js\": [\n\t\t88116,\n\t\t8116\n\t],\n\t\"./ka/index.js\": [\n\t\t32436,\n\t\t2436\n\t],\n\t\"./kk/index.js\": [\n\t\t70905,\n\t\t905\n\t],\n\t\"./km/index.js\": [\n\t\t85122,\n\t\t5122\n\t],\n\t\"./kn/index.js\": [\n\t\t23479,\n\t\t3479\n\t],\n\t\"./ko/index.js\": [\n\t\t51772,\n\t\t1772\n\t],\n\t\"./lb/index.js\": [\n\t\t71555,\n\t\t1555\n\t],\n\t\"./lt/index.js\": [\n\t\t54677,\n\t\t4677\n\t],\n\t\"./lv/index.js\": [\n\t\t30037,\n\t\t37\n\t],\n\t\"./mk/index.js\": [\n\t\t76751,\n\t\t6751\n\t],\n\t\"./mn/index.js\": [\n\t\t37157,\n\t\t7157\n\t],\n\t\"./ms/index.js\": [\n\t\t44344,\n\t\t4344\n\t],\n\t\"./mt/index.js\": [\n\t\t15671,\n\t\t5671\n\t],\n\t\"./nb/index.js\": [\n\t\t52545,\n\t\t2545\n\t],\n\t\"./nl-BE/index.js\": [\n\t\t94289,\n\t\t4289\n\t],\n\t\"./nl/index.js\": [\n\t\t47650,\n\t\t7650\n\t],\n\t\"./nn/index.js\": [\n\t\t85411,\n\t\t5411\n\t],\n\t\"./oc/index.js\": [\n\t\t28898,\n\t\t8898\n\t],\n\t\"./pl/index.js\": [\n\t\t57237,\n\t\t7237\n\t],\n\t\"./pt-BR/index.js\": [\n\t\t25835,\n\t\t5835\n\t],\n\t\"./pt/index.js\": [\n\t\t46439,\n\t\t6439\n\t],\n\t\"./ro/index.js\": [\n\t\t42473,\n\t\t2473\n\t],\n\t\"./ru/index.js\": [\n\t\t27773,\n\t\t7773\n\t],\n\t\"./sk/index.js\": [\n\t\t29604,\n\t\t9604\n\t],\n\t\"./sl/index.js\": [\n\t\t52792,\n\t\t2792\n\t],\n\t\"./sq/index.js\": [\n\t\t42870,\n\t\t2870\n\t],\n\t\"./sr-Latn/index.js\": [\n\t\t46732,\n\t\t6732\n\t],\n\t\"./sr/index.js\": [\n\t\t76600,\n\t\t6600\n\t],\n\t\"./sv/index.js\": [\n\t\t88573,\n\t\t8573\n\t],\n\t\"./ta/index.js\": [\n\t\t84588,\n\t\t4588\n\t],\n\t\"./te/index.js\": [\n\t\t17631,\n\t\t7631\n\t],\n\t\"./th/index.js\": [\n\t\t88002,\n\t\t8002\n\t],\n\t\"./tr/index.js\": [\n\t\t34848,\n\t\t4848\n\t],\n\t\"./ug/index.js\": [\n\t\t41296,\n\t\t1296\n\t],\n\t\"./uk/index.js\": [\n\t\t75099,\n\t\t2982,\n\t\t511\n\t],\n\t\"./uz-Cyrl/index.js\": [\n\t\t2051,\n\t\t2051\n\t],\n\t\"./uz/index.js\": [\n\t\t1039,\n\t\t1039\n\t],\n\t\"./vi/index.js\": [\n\t\t67392,\n\t\t7392\n\t],\n\t\"./zh-CN/index.js\": [\n\t\t58479,\n\t\t8479\n\t],\n\t\"./zh-HK/index.js\": [\n\t\t26241,\n\t\t6241\n\t],\n\t\"./zh-TW/index.js\": [\n\t\t47370,\n\t\t7370\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, 7 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 23702;\nmodule.exports = webpackAsyncContext;"],"names":["DepositApplicationReducerActionTypes","SetProductDefinitions","ToggleHasAgreedToDisclosureStatement","ToggleHasAgreedToTerms","ResetConsentCheckboxesState","UpdateCheckboxFilters","SetOpenNoticeAccounts","SetAddFundsStep","SetNoticeAccountDetails","SetAddFundsAmount","ClearAddFundsState","SetAddFundsErrorMessage","SetWithdrawalStep","SetWithdrawalAmount","ClearWithdrawalState","SetWithdrawalErrorMessage","actions","setProductDefinitions","response","type","payload","toggleHasAgreedToDisclosureStatement","toggleHasAgreedToTerms","resetConsentCheckboxesState","updateCheckboxFilters","category","selectedFilters","setOpenNoticeAccounts","setAddFundsStep","activeStep","setNoticeAccountDetails","noticeAccountDetails","setAddFundsAmount","amount","setAddFundsErrorMessage","errorMessage","clearAddFundsState","setWithdrawalStep","setWithdrawalAmount","setWithdrawalErrorMessage","clearWithdrawalState","styled","gridSettings","FlexContainerWrapper","FilterCategory","NoticeAccountsTableColumnKeys","SmallSecondaryButton","buildFilters","_ref6","currencyFilters","productPeriodDayFilters","currencyFilter","buildCurrencyFilters","periodDaysFilter","buildPeriodDaysFilters","map","filter","value","code","isSelected","toString","Item","updateFilters","filters","includes","NoticeAccountAddFundsStep","NoticeAccountWithdrawalStep","initialState","products","tableFilters","hasAgreedToDisclosureStatement","hasAgreedToTerms","openNoticeAccounts","hasFetchedOpenNoticeAccounts","hasFetchedProductDefinitions","addFundsState","Details","withdrawalState","id","currencyCode","totalBalance","threshold","productName","maximumBalance","minimumInitialDepositAmount","productPeriodDays","multiCurrencyAvailableBalance","availableBalance","precision","DEFAULT_PRECISION","withdrawalDate","hasPendingRateDecrease","depositApplicationReducer","state","arguments","length","undefined","action","productDefinitions","filtersData","setDefinitionsTransformer","toggleHasAgreedToDisclosureStatementTransformer","toggleHasAgreedToTermsTransformer","resetConsentCheckboxesStateTransformer","updatedFilters","updateCheckboxFiltersTransformer","sessionStorage","setItem","Utils","isEmpty","setOpenNoticeAccountsTransformer","Date","setNoticeAccountDetailsTransformer","setAddFundsStepTransformer","clearAddFundsStateTransformer","setAddFundsAmountTransformer","setAddFundsErrorMessageTransformer","setWithdrawalStepTransformer","clearWithdrawalStateTransformer","setWithdrawalAmountTransformer","setWithdrawalErrorMessageTransformer","TransactionType","INITIAL_TABLE_FILTERS","transactionTypeFilter","endDateValue","startDateValue","DepositTransactionsActionTypes","SetNoticeAccountTransactions","SetCurrentPage","SetPageSize","FilterCompletedTransactions","SetSelectedTransactionsTab","ResetTableState","SetMigrationOption","SetDateFilters","getDepositTransactionsState","depositTransactions","getSelectedTransactionsTab","createSelector","depositTransactionsState","transactions","selectedTransactionsTab","paginationInfoMap","depositTransactionState","selectedMigrationOption","colours","ViewTitle","largeFontStyle","_ref","SecondaryTextV2","TextV2","defaultFontStyle","ToastNotification","getDatesValues","isBeforeMigrationOptionSelected","migratedDate","getDateOneYearBack","subDays","DEFAULT_PAGINATION_INFO_MAP","TransactionTab","MigrationOptions","depositTransactionsReducer","transactionsData","items","paginationInfo","currentPaginationInfoForTab","resultsPerPage","paginationInfoProps","newPaginationInfoForTab","setNoticeAccountTransactionsTransformer","filterValues","selectedTabPaginationInfo","transactionTypeValues","NoticeAccountTransactionsColumnKeys","selectedDatesValues","startDateSelectedValue","DatesFilterSelectedValues","endDateSelectedValue","selectedTransactionTypes","updatedPaginationInfoMap","currentPage","filterCompletedTransactionsTransformer","setMigrationOptionTransformer","setCurrentPageTransformer","pageSize","setPageSizeTransformer","DEFAULT_PAGINATION_INFO","setSelectedTransactionsTabTransformer","resetTableStateTransformer","setDateFiltersTransformer","enhancer","composeWithDevTools","serialize","trace","composeEnhancers","install","DONT_LOG_ERRORS_ON_HANDLED_FAILURES","reducers","filteredState","Object","keys","reduce","filteredReducers","key","combinedFilteredReducers","loopCombineReducers","currentLoop","result","liftState","newState","getModel","newCommand","Cmd","getCmd","loop","combineReducers","depositI18n","createI18nReducer","cmsConfig","lang","getAvailableLanguages","locale","APP_NAME","depositApplication","store","createStore","injectReducers","_","noop","mapDispatchToProps","getMessages","getContentAction","toggleMessageIds","LocaleInitialiser","React","constructor","preloadLocale","defaultLocale","this","props","Error","MISSING_LOCALE_ERROR_TEXT","getLocaleObject","then","default","localeData","registerLocale","setDefaultLocale","catch","localeShortCode","substring","_ref2","enGB","componentDidMount","componentDidUpdate","prevProps","prevLocale","render","_jsx","I18nProvider","I18nContainer","connect","getLocale","messages","externalMessages","appName","getAppName","isPreview","isMessageIdsVisible","isContentReady","getContentIsReady","loggerImporter","isCorporate","importRemote","url","process","scope","module","fetcher","Logger","async","data","logger","logError","console","error","message","I18nErrorBoundary","logErrorToServices","stack","otherParams","static","componentDidCatch","info","componentStack","children","ViewNoticeAccountLink","Link","NotificationMessage","Text","ViewLinkWrapper","dashboardNotificationTitle","defaultMessage","description","dashboardNotificationDescription","dashboardNotificationLink","DashboardPromoBox","pageLinkUrl","intl","useIntl","dispatch","useDispatch","activeClientId","useSelector","getActiveClientId","getProductDefinitions","getIsCorporateUser","isSuccess","useProductDefinitions","_jsxs","StyledToastNotification","notificationType","NotificationType","backgroundColor","IntegrationTestIds","container","padding","Icons","flexDirection","formatMessage","isRoute","isUnderlined","href","Home","_Fragment","APPLICATION_OVERVIEW_ROUTE","NoticeAccounts","pageLinkUrls","addFunds","closeAccount","withdraw","routes","path","HOME_ROUTE","element","router","createBrowserRouter","Wrapper","Component","App","margin","GlobalStyles","RouterProvider","isStoreReady","setIsStoreReady","getState","QueryClientProvider","client","queryClient","Provider","StyleSheetManager","disableVendorPrefixes","ReactQueryDevtools","initialIsOpen","position","appIsInStandaloneMode","window","location","partnerName","ReactDOM","document","getElementById","openPdfFile","file","targetWindow","fileUrl","URL","createObjectURL","NoticeAccountPendingTransactionsColumnKeys","TransactionDirection","NoticeAccountActionsWrapper","NoticeAccountActionButtonsWrapper","NoticeAccountLinkButton","StyledLink","PendingWithdrawalsTitle","PendingWithdrawalHeaderItemWrapper","isAlignedRight","PendingWithdrawalHeaderItem","WithdrawalItemDivider","Divider","NoPendingWithdrawalsMessage","PendingWithdrawalsCellItem","PendingWithdrawalsCellDateItem","MobilePendingItemWrapper","WithdrawalsTableHeaderWrapper","WithdrawalsTableItemWrapper","WithdrawalsTableList","NoticeAccountTitle","NoticeAccountName","NoticeAccountItemInfoText","BoxContentDivider","defaultBoxShadow","noticeAccountsListTitle","currencyColumnTitle","totalBalanceColumnTitle","availableBalanceColumnTitle","grossInterestColumnTitle","addFundsButton","withdrawButton","closeNoticeAccountButton","viewTransactionsButton","pendingWithdrawalsTitle","pendingWithdrawalsNotification","pendingClosureNotification","pendingWithdrawalClearDateInfo","pendingWithdrawalAmount","pendingWithdrawalDescription","pendingWithdrawalsDescriptionHeader","noPendingTransactions","noticeAccountDisclosureStatementButton","noticeAccountNameTitle","pendingClosurePeriodNotificationText","pendingRateChangeNotificationText","StyledWidgetActionButton","Subtitle","BalanceLabel","CurrencyInputV2","InputError","width","useQuery","queryKey","queryFn","refetchOnMount","useNoticeAccounts","enabled","fetchNoticeAccounts","useNoticeAccountDisclosureStatement","productDefinitionId","getNoticeAccountDisclosureStatementFile","Accept","baseCreateSelector","getDepositApplicationState","depositApplicationState","getProductDefinitionItem","productId","find","definition","getOpenNoticeAccounts","isCorporateUser","corporateCustomerServicePhoneNumber","customerServicePhoneNumber","productDefinition","getOpenNoticeAccount","noticeAccountId","account","getAddFundsState","openNoticeAccount","closureDate","interestAccountSummaryStatus","getWithdrawalState","getUserState","user","getUserSwitchClient","userState","switchClient","getUserProfileData","profile","getUserProfile","userSwitchClient","_userSwitchClient$act","parentClientId","getClientType","userProfile","clientType","ClientType","fetcherImporter","getEndpointUrlPrefix","QueryClient","defaultOptions","queries","refetchOnWindowFocus","refetchOnReconnect","retry","staleTime","apiCall","params","_params$headers","_params$method","version","call","request","headers","method","fetch","body","JSON","stringify","getResponseData","isFetchResponse","json","endpointUrlPrefix","responseType","ProductType","FileContentType","AccountStatus","FormattedSignedNumberText","NumberSignWrapper","signColor","FormattedSignedNumber","direction","currency","formattedAmount","formatNumber","minimumFractionDigits","amountSign","NumberDirection","gap","INITIAL_PAGE_SIZE","totalPages","totalItems","totalFilteredItems","Locales","AVAILABLE_US_LANGUAGES","GB","US","RO","ES","localeName","global","__localeData__","__localeId__","localeSpec","FailTryAgainButton","FailCancelButton","FailTitle","FailResultContentTitle","DashboardPromoBoxToastNotification","DashboardViewProductLink","DashboardPromoBoxToastNotificationTitle","ProductToastNotification","ProductLearnMoreNotificationLink","ProductTableViewButton","BackToProductAccountsLink","ProductAccountContainerTitleId","ProductDetailsConsentSectionId","BackToProductsLink","ProductContainerTitleId","ProductDetailsCancelButton","ProductDetailsApplyButton","GrossAnnualInterestValue","ProductDetailsTypeValue","ProductDetailsLengthValue","ProductDetailsCurrencyValue","AnnualEquivalentRateValue","MaximumDepositValue","MinimumInitialDepositValue","MinimumAdditionalDepositValue","ProductDisclosureStatementCheckbox","ProductDisclosureStatementLink","TermsAndConditionsCheckbox","TermsAndConditionsLink","ConfirmationPageSuccessButton","ConfirmationPageAddFundsButton","ConfirmationPageBackToOverviewButtonLink","AccountSummary","AccountSummaryDetailInfoText","AccountSummaryBalancesOver","AccountSummaryBalancesBelow","AccountSummaryOpeningDepositBalance","AccountSummaryBalanceAfterAYear","AccountSummaryInterestEarned","AccountSummaryMaximumBalanceValue","AccountSummaryMinimumAdditionalDeposit","AccountSummaryMinimumAdditionalDepositWithdraw","ApplicationFailedTryAgainButton","ApplicationFailedBackToOverviewLink","ProductApplicationConfirmationPageTitle","ProductApplicationConfirmationPagePhoneNumber","ProductTableTypeFilter","NoticeAccountsTablePeriodFilter","NoticeAccountsTableCurrencyFilter","NoticeAccountsTableClearFilterButton","NoticeAccountsList","NoticeAccountsBalanceItem","CurrencyNoticeAccountsListColumn","TotalBalanceNoticeAccountsListColumn","AvailableBalanceNoticeAccountsListColumn","GrossInterestNoticeAccountsListColumn","CloseNoticeAccountButton","ViewTransactionsButton","WithdrawNoticeAccountButton","AddFundsNoticeAccountButton","PendingWithdrawalsTableItem","NoticeAccountProductDisclosureStatementButton","NoticeAccountTransactionsListItem","_ref3","PendingClosurePeriodNotification","PendingRateChangeNotification","BalanceItemCurrencyLabel","_ref4","BalanceItemTotalBalance","_ref5","BalanceItemAvailableBalance","BalanceItemGrossInterest","_ref7","BalanceItemHeaderNotificationText","_ref8","PendingWithdrawalDescription","_ref9","PendingWithdrawalClearDate","_ref10","PendingWithdrawalAmount","_ref11","NoticeAccountNameTitle","NoticeAccountTransactionTypeFilter","CompletedTransactionsTableDateFilter","CompletedTransactionsTableDateFilterEndDate","CompletedTransactionsTableDateFilterStartDate","NoticeAccountTransactionsClearFiltersButton","TransactionsTab","NoticeAccountTransactionsFetchErrorText","NoticeAccountPendingTransactionsNoResultsText","ClosedNoticeAccountNotification","MigratedNoticeAccountNotification","MigratedNoticeAccountDropdown","AddFundsContinueButton","AddFundsConfirmButton","AddFundsTotalBalance","AddFundsAvailableBalance","AddFundsMinimumBalanceNotification","AddFundsNoticePeriodNotification","AddFundsError","AddFundsCurrencyInput","AddFundsCancelLink","AddFundsDetailsTitle","AddFundsReviewTitle","AddFundsSuccessTitle","AddFundsErrorTitle","AddFundsAddMoreFundsButton","AddFundsTryAgainButton","WithdrawalContinueButton","WithdrawalConfirmButton","WithdrawalAvailableBalance","WithdrawalMinimumBalanceNotification","WithdrawalError","WithdrawalCurrencyInput","WithdrawalCancelLink","WithdrawalDetailsTitle","WithdrawalReviewTitle","WithdrawalSuccessTitle","WithdrawalSuccessResultContentTitle","WithdrawalSuccessResultContentText","WithdrawalSuccessBackToOverviewButton","ClosureContentTitle","ClosureNoticePeriodDescription","ClosureConfirmModal","ClosureModalConfirmButton","ClosureModalCancelButton","ClosureModalWithdrawalInfo","ClosureSuccessPageTitle","ClosureSuccessContentTitle","ClosureSuccessContentText","ClosureSuccessBackToOverviewButton","SharedTestIds","detailsRow","UserProfileRoles","UserApplicationSource","UserDetailsRequiredVerification","ErrorCode","FetchDataState","SwitchClientState","AccessTokenState","ToastMessageType","LinkType","AutoCloseType","origin","formatDateWithFullMonth","date","dayFromDate","getDate","toLocaleString","month","getFullYear","previousYear","newDate","setFullYear","DividingHeader","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","e","ids","all","slice","t","exports"],"sourceRoot":""}