@mx-cartographer/experiences 4.0.14-alpha.JB1 → 4.0.14-alpha.JB2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AccountStore-B23-oV1B.mjs +244 -0
- package/dist/AccountStore-B23-oV1B.mjs.map +1 -0
- package/dist/BeatApi-BxXgbSJY.mjs +99 -0
- package/dist/BeatApi-BxXgbSJY.mjs.map +1 -0
- package/dist/BudgetUtil-BSn9Zr71.mjs +208 -0
- package/dist/BudgetUtil-BSn9Zr71.mjs.map +1 -0
- package/dist/CashflowApi-zcebgnO1.mjs +103 -0
- package/dist/CashflowApi-zcebgnO1.mjs.map +1 -0
- package/dist/CashflowStore-gPEEBiXo.mjs +53 -0
- package/dist/CashflowStore-gPEEBiXo.mjs.map +1 -0
- package/dist/Categories-XVFviD23.mjs +117 -0
- package/dist/Categories-XVFviD23.mjs.map +1 -0
- package/dist/CategoryStore-CSNSMNA6.mjs +298 -0
- package/dist/CategoryStore-CSNSMNA6.mjs.map +1 -0
- package/dist/ConnectMiniWidget-Ep65CtHH.mjs +10854 -0
- package/dist/ConnectMiniWidget-Ep65CtHH.mjs.map +1 -0
- package/dist/DebtsStore-Duf3n1vZ.mjs +127 -0
- package/dist/DebtsStore-Duf3n1vZ.mjs.map +1 -0
- package/dist/Donut-DgMeKScZ.mjs +53 -0
- package/dist/Donut-DgMeKScZ.mjs.map +1 -0
- package/dist/Fetch-DpUi1_Dx.mjs +99 -0
- package/dist/Fetch-DpUi1_Dx.mjs.map +1 -0
- package/dist/GoalStore-BYoRLx99.mjs +128 -0
- package/dist/GoalStore-BYoRLx99.mjs.map +1 -0
- package/dist/MerchantStore-RhLvDvX-.mjs +118 -0
- package/dist/MerchantStore-RhLvDvX-.mjs.map +1 -0
- package/dist/NetWorthStore-syD1VnxE.mjs +66 -0
- package/dist/NetWorthStore-syD1VnxE.mjs.map +1 -0
- package/dist/NotificationStore-CqTYHfJC.mjs +141 -0
- package/dist/NotificationStore-CqTYHfJC.mjs.map +1 -0
- package/dist/RecurringActivityStore-B_COvGWG.mjs +304 -0
- package/dist/RecurringActivityStore-B_COvGWG.mjs.map +1 -0
- package/dist/StackedLineChart-CCqGRwvs.mjs +342 -0
- package/dist/StackedLineChart-CCqGRwvs.mjs.map +1 -0
- package/dist/TransactionStore-BUrjBWkk.mjs +478 -0
- package/dist/TransactionStore-BUrjBWkk.mjs.map +1 -0
- package/dist/index.es.js +12 -17869
- package/dist/index.es.js.map +1 -1
- package/dist/index.es10.js +107 -0
- package/dist/index.es10.js.map +1 -0
- package/dist/index.es11.js +159 -0
- package/dist/index.es11.js.map +1 -0
- package/dist/index.es12.js +483 -0
- package/dist/index.es12.js.map +1 -0
- package/dist/index.es13.js +620 -0
- package/dist/index.es13.js.map +1 -0
- package/dist/index.es14.js +788 -0
- package/dist/index.es14.js.map +1 -0
- package/dist/index.es15.js +891 -0
- package/dist/index.es15.js.map +1 -0
- package/dist/index.es16.js +962 -0
- package/dist/index.es16.js.map +1 -0
- package/dist/index.es17.js +1904 -0
- package/dist/index.es17.js.map +1 -0
- package/dist/index.es2.js +11 -0
- package/dist/index.es2.js.map +1 -0
- package/dist/index.es3.js +10 -0
- package/dist/index.es3.js.map +1 -0
- package/dist/index.es4.js +9 -0
- package/dist/index.es4.js.map +1 -0
- package/dist/index.es5.js +7 -0
- package/dist/index.es5.js.map +1 -0
- package/dist/index.es6.js +7 -0
- package/dist/index.es6.js.map +1 -0
- package/dist/index.es7.js +10 -0
- package/dist/index.es7.js.map +1 -0
- package/dist/index.es8.js +10 -0
- package/dist/index.es8.js.map +1 -0
- package/dist/index.es9.js +18 -0
- package/dist/index.es9.js.map +1 -0
- package/dist/useCombineEvents-CZUDHE96.mjs +170 -0
- package/dist/useCombineEvents-CZUDHE96.mjs.map +1 -0
- package/dist/usePrevious-BLb3umpI.mjs +11 -0
- package/dist/usePrevious-BLb3umpI.mjs.map +1 -0
- package/package.json +2 -3
- package/src/accounts/AccountsMiniWidget.tsx +0 -62
- package/src/accounts/AccountsWidget.tsx +0 -93
- package/src/accounts/ConnectMiniWidget.tsx +0 -36
- package/src/accounts/__tests__/Accounts.test.tsx +0 -561
- package/src/accounts/api/AccountApi.ts +0 -74
- package/src/accounts/api/__mocks__/AccountApi.ts +0 -46
- package/src/accounts/components/AccountListItem.tsx +0 -102
- package/src/accounts/components/AccountsList.tsx +0 -133
- package/src/accounts/components/ConnectImage.tsx +0 -314
- package/src/accounts/components/ConnectMiniWidgetCard.tsx +0 -41
- package/src/accounts/components/ConnectStatus.tsx +0 -44
- package/src/accounts/components/ConnectionStatusIcons.tsx +0 -26
- package/src/accounts/components/ConnectionsDrawer.tsx +0 -84
- package/src/accounts/components/detailsdrawer/Accounts/AccountActions.tsx +0 -177
- package/src/accounts/components/detailsdrawer/Accounts/AccountActionsRow.tsx +0 -33
- package/src/accounts/components/detailsdrawer/Accounts/AccountConnection.tsx +0 -139
- package/src/accounts/components/detailsdrawer/Accounts/AccountDetailEdit.tsx +0 -162
- package/src/accounts/components/detailsdrawer/Accounts/AccountDetails.tsx +0 -98
- package/src/accounts/components/detailsdrawer/Accounts/AccountDetailsChart.tsx +0 -63
- package/src/accounts/components/detailsdrawer/Accounts/AccountDetailsContent.tsx +0 -52
- package/src/accounts/components/detailsdrawer/Accounts/AccountDetailsHeader.tsx +0 -71
- package/src/accounts/components/detailsdrawer/Accounts/AccountDetailsTab.tsx +0 -25
- package/src/accounts/components/detailsdrawer/Accounts/ConnectionErrorMessage.tsx +0 -99
- package/src/accounts/components/detailsdrawer/Transactions/TransactionsTab.tsx +0 -51
- package/src/accounts/constants/Accounts.ts +0 -11
- package/src/accounts/hooks/useGetMergeableAccounts.tsx +0 -13
- package/src/accounts/hooks/useUiStore.ts +0 -12
- package/src/accounts/index.ts +0 -8
- package/src/accounts/stores/AccountStore.ts +0 -220
- package/src/accounts/stores/UiStore.ts +0 -18
- package/src/accounts/stores/__tests__/AccountStore.test.ts +0 -204
- package/src/accounts/utils/AccountFields.tsx +0 -248
- package/src/accounts/utils/Accounts.ts +0 -28
- package/src/accounts/utils/__tests__/AccountFieldsUtils.test.tsx +0 -215
- package/src/accounts/utils/__tests__/AccountsUtils.test.tsx +0 -104
- package/src/accounts/utils/getConnectionMessages.tsx +0 -198
- package/src/accounts/utils/index.ts +0 -1
- package/src/budgets/BubbleBudgetsMiniWidget.tsx +0 -57
- package/src/budgets/BubbleBudgetsWidget.tsx +0 -154
- package/src/budgets/__tests__/BubbleBudgetsWidget.test.tsx +0 -40
- package/src/budgets/__tests__/BudgetList.test.tsx +0 -38
- package/src/budgets/__tests__/BudgetsStore.test.tsx +0 -48
- package/src/budgets/__tests__/Overview.test.tsx +0 -38
- package/src/budgets/api/BudgetsApi.ts +0 -43
- package/src/budgets/api/__mocks__/BudgetsApi.ts +0 -7
- package/src/budgets/components/AddBudgets.tsx +0 -50
- package/src/budgets/components/BubbleBudgets.tsx +0 -73
- package/src/budgets/components/BubbleChart.tsx +0 -50
- package/src/budgets/components/BudgetDetailsDrawer.tsx +0 -134
- package/src/budgets/components/BudgetList.tsx +0 -50
- package/src/budgets/components/Overview.tsx +0 -156
- package/src/budgets/components/ZeroState.tsx +0 -23
- package/src/budgets/components/addbudget/Header.tsx +0 -59
- package/src/budgets/components/addbudget/RecalculateBudgetRow.tsx +0 -53
- package/src/budgets/components/addbudget/RecalculateBudgets.tsx +0 -69
- package/src/budgets/components/addbudget/UnbudgetedRow.tsx +0 -57
- package/src/budgets/components/bubblechart/Bubble.tsx +0 -148
- package/src/budgets/components/bubblechart/Mercury.tsx +0 -57
- package/src/budgets/components/budgetdetails/AddSubBudget.tsx +0 -111
- package/src/budgets/components/budgetdetails/BudgetDetails.tsx +0 -93
- package/src/budgets/components/budgetdetails/Header.tsx +0 -48
- package/src/budgets/components/budgetdetails/SubBudgetList.tsx +0 -148
- package/src/budgets/components/budgetlist/BudgetRow.tsx +0 -63
- package/src/budgets/components/budgetlist/SubBudgetRow.tsx +0 -64
- package/src/budgets/components/budgetlist/SubBudgetZeroState.tsx +0 -22
- package/src/budgets/components/shared/BudgetAmount.tsx +0 -54
- package/src/budgets/index.ts +0 -2
- package/src/budgets/store/BudgetsStore.ts +0 -183
- package/src/budgets/utils/BubblesSVG.ts +0 -142
- package/src/budgets/utils/BudgetUtil.ts +0 -140
- package/src/cashflow/CashflowMiniWidget.tsx +0 -25
- package/src/cashflow/CashflowOnboarding.tsx +0 -298
- package/src/cashflow/CashflowWidget.tsx +0 -111
- package/src/cashflow/api/CashflowApi.ts +0 -62
- package/src/cashflow/api/__mocks__/CashflowApi.ts +0 -15
- package/src/cashflow/components/CashflowAmountHeading.tsx +0 -46
- package/src/cashflow/components/CashflowContent.tsx +0 -63
- package/src/cashflow/components/CashflowHeading.tsx +0 -172
- package/src/cashflow/components/CashflowWidgetContent.tsx +0 -225
- package/src/cashflow/components/DetailsExpenseHeader.tsx +0 -47
- package/src/cashflow/components/DetailsExpenseRow.tsx +0 -46
- package/src/cashflow/components/DetailsFooter.tsx +0 -28
- package/src/cashflow/components/DetailsTab.tsx +0 -128
- package/src/cashflow/components/RemainingCash.tsx +0 -44
- package/src/cashflow/components/SummaryTab.tsx +0 -247
- package/src/cashflow/components/onboarding/StepOne.tsx +0 -90
- package/src/cashflow/components/onboarding/StepTwo.tsx +0 -23
- package/src/cashflow/context/hooks.tsx +0 -12
- package/src/cashflow/images/cashflow-onboarding.png +0 -0
- package/src/cashflow/images/loading-animation.gif +0 -0
- package/src/cashflow/index.ts +0 -5
- package/src/cashflow/stores/CashflowStore.ts +0 -26
- package/src/cashflow/stores/UiStore.ts +0 -48
- package/src/cashflow/stores/__tests__/CashflowStore.test.ts +0 -16
- package/src/cashflow/util/Filters.ts +0 -15
- package/src/categories/components/CategoryList.tsx +0 -64
- package/src/categories/components/CategoryRow.tsx +0 -68
- package/src/categories/components/CategorySelector.tsx +0 -80
- package/src/categories/components/CategorySelectorDrawer.tsx +0 -41
- package/src/categories/components/CustomCategories/AddSubcategory.tsx +0 -65
- package/src/categories/components/CustomCategories/CustomCategoryModal.tsx +0 -99
- package/src/categories/components/CustomCategories/DeleteSubcategory.tsx +0 -49
- package/src/categories/components/CustomCategories/RenameSubcategory.tsx +0 -48
- package/src/categories/components/CustomCategories/index.ts +0 -4
- package/src/categories/components/SubcategoryList.tsx +0 -47
- package/src/categories/components/SubcategoryRow.tsx +0 -123
- package/src/categories/constants/Analytics.ts +0 -89
- package/src/categories/constants/OnClickEvents.ts +0 -13
- package/src/categories/context/hooks.ts +0 -12
- package/src/categories/index.ts +0 -5
- package/src/categories/stores/CategoryStore.ts +0 -184
- package/src/categories/stores/UiStore.ts +0 -36
- package/src/categories/stores/__tests__/CategoryStore.test.ts +0 -54
- package/src/categories/util/CategoryUtil.ts +0 -136
- package/src/common/api/AnalyticsApi.ts +0 -49
- package/src/common/api/BeatApi.ts +0 -32
- package/src/common/api/CategoryApi.ts +0 -52
- package/src/common/api/GlobalCopyApi.ts +0 -17
- package/src/common/api/LocalizedCopyApi.ts +0 -21
- package/src/common/api/NotificationApi.ts +0 -40
- package/src/common/api/ScheduledPaymentsApi.ts +0 -37
- package/src/common/api/UserApi.ts +0 -23
- package/src/common/api/WidgetApi.ts +0 -15
- package/src/common/api/__mocks__/BeatApi.ts +0 -8
- package/src/common/api/__mocks__/CategoryApi.ts +0 -15
- package/src/common/api/__mocks__/GlobalCopyApi.ts +0 -7
- package/src/common/api/__mocks__/NotificationApi.ts +0 -11
- package/src/common/api/__mocks__/ScheduledPaymentsApi.ts +0 -7
- package/src/common/api/__mocks__/UserApi.ts +0 -9
- package/src/common/api/__mocks__/WidgetApi.ts +0 -11
- package/src/common/api/index.ts +0 -9
- package/src/common/components/ConnectDrawer.tsx +0 -87
- package/src/common/components/CurrencyInput.tsx +0 -147
- package/src/common/components/CurrencyText.tsx +0 -44
- package/src/common/components/DataRow.tsx +0 -52
- package/src/common/components/IconBacking.tsx +0 -41
- package/src/common/components/InformationTooltip.tsx +0 -52
- package/src/common/components/ListItemWrapper.tsx +0 -49
- package/src/common/components/Loader.tsx +0 -24
- package/src/common/components/MiniWidgetContainer.tsx +0 -64
- package/src/common/components/ResponsiveButton.tsx +0 -65
- package/src/common/components/SearchBox.tsx +0 -64
- package/src/common/components/SelectionBox.tsx +0 -64
- package/src/common/components/SubheaderRow.tsx +0 -22
- package/src/common/components/TabContentContainer.tsx +0 -28
- package/src/common/components/WidgetContainer.tsx +0 -239
- package/src/common/components/accountfilter/AccountFilter.tsx +0 -133
- package/src/common/components/accountfilter/AccountFilterOptions.tsx +0 -263
- package/src/common/components/accountfilter/index.ts +0 -1
- package/src/common/components/barchart/Bar.tsx +0 -123
- package/src/common/components/barchart/BarChart.tsx +0 -136
- package/src/common/components/barchart/BarColumn.tsx +0 -150
- package/src/common/components/barchart/Legend.tsx +0 -60
- package/src/common/components/barchart/Util.ts +0 -54
- package/src/common/components/barchart/__tests__/BarChart.test.tsx +0 -46
- package/src/common/components/barchart/index.ts +0 -1
- package/src/common/components/calendar/Calendar.tsx +0 -223
- package/src/common/components/calendar/Day.tsx +0 -127
- package/src/common/components/calendar/Header.tsx +0 -58
- package/src/common/components/calendar/__tests__/Calendar.test.tsx +0 -50
- package/src/common/components/calendar/index.ts +0 -1
- package/src/common/components/calendar/upcomingActivity/CalendarIcons.tsx +0 -40
- package/src/common/components/charts/Donut.tsx +0 -82
- package/src/common/components/charts/LineChart.tsx +0 -204
- package/src/common/components/charts/StackedLineChart.tsx +0 -292
- package/src/common/components/charts/StatusBar.tsx +0 -41
- package/src/common/components/charts/index.ts +0 -4
- package/src/common/components/charts/linechart/CustomLegend.tsx +0 -49
- package/src/common/components/charts/linechart/CustomLine.tsx +0 -31
- package/src/common/components/charts/linechart/CustomMark.tsx +0 -68
- package/src/common/components/charts/stackedlinechart/CategoryIconLabel.tsx +0 -29
- package/src/common/components/charts/stackedlinechart/CustomAreaTooltip.tsx +0 -115
- package/src/common/components/charts/stackedlinechart/CustomLegend.tsx +0 -73
- package/src/common/components/charts/stackedlinechart/CustomPointTooltip.tsx +0 -41
- package/src/common/components/charts/stackedlinechart/utils.ts +0 -13
- package/src/common/components/daterangeselector/DateRangeSelector.tsx +0 -383
- package/src/common/components/daterangeselector/index.ts +0 -1
- package/src/common/components/dialog/Dialog.tsx +0 -92
- package/src/common/components/dialog/index.ts +0 -1
- package/src/common/components/donuts/MultiSegmentDonut.tsx +0 -89
- package/src/common/components/donuts/SingleSegmentDonut.tsx +0 -75
- package/src/common/components/donuts/index.ts +0 -2
- package/src/common/components/drawer/Drawer.tsx +0 -97
- package/src/common/components/drawer/Header.tsx +0 -64
- package/src/common/components/drawer/index.ts +0 -1
- package/src/common/components/index.ts +0 -22
- package/src/common/constants/Account.ts +0 -30
- package/src/common/constants/Analytics.ts +0 -70
- package/src/common/constants/ApiEndpoints.ts +0 -30
- package/src/common/constants/Category.ts +0 -302
- package/src/common/constants/Connect.ts +0 -2
- package/src/common/constants/DateFormats.ts +0 -122
- package/src/common/constants/Donut.ts +0 -2
- package/src/common/constants/Numbers.ts +0 -6
- package/src/common/constants/ScheduledPayment.ts +0 -21
- package/src/common/constants/Sizes.ts +0 -7
- package/src/common/constants/SpendingPlan.ts +0 -17
- package/src/common/constants/Table.ts +0 -13
- package/src/common/constants/index.ts +0 -21
- package/src/common/context/GlobalDataProvider.tsx +0 -31
- package/src/common/context/WidgetContainerProvider.tsx +0 -24
- package/src/common/context/__mocks__/GlobalDataProvider.tsx +0 -25
- package/src/common/context/hooks.tsx +0 -57
- package/src/common/context/index.ts +0 -22
- package/src/common/hooks/__tests__/useDimensions.test.tsx +0 -190
- package/src/common/hooks/index.ts +0 -3
- package/src/common/hooks/useCombineEvents.tsx +0 -53
- package/src/common/hooks/useDimensions.tsx +0 -78
- package/src/common/hooks/usePrevious.tsx +0 -10
- package/src/common/hooks/useScreenSize.tsx +0 -15
- package/src/common/index.ts +0 -23
- package/src/common/stores/ConnectStore.ts +0 -26
- package/src/common/stores/GlobalCopyStore.ts +0 -36
- package/src/common/stores/GlobalStore.ts +0 -83
- package/src/common/stores/GlobalUiStore.ts +0 -66
- package/src/common/stores/UserStore.ts +0 -45
- package/src/common/stores/__tests__/GlobalCopyStore.test.ts +0 -23
- package/src/common/stores/__tests__/GlobalStore.test.ts +0 -24
- package/src/common/stores/index.ts +0 -3
- package/src/common/types/Account.ts +0 -406
- package/src/common/types/Activity.ts +0 -31
- package/src/common/types/Analytics.ts +0 -70
- package/src/common/types/Beat.ts +0 -71
- package/src/common/types/Budget.ts +0 -29
- package/src/common/types/Cashflow.ts +0 -110
- package/src/common/types/Category.ts +0 -68
- package/src/common/types/Date.ts +0 -2
- package/src/common/types/Debt.ts +0 -19
- package/src/common/types/Expense.ts +0 -20
- package/src/common/types/Global.ts +0 -13
- package/src/common/types/GlobalCopy.ts +0 -37
- package/src/common/types/Goal.ts +0 -59
- package/src/common/types/Institution.ts +0 -11
- package/src/common/types/LocalizedContent.ts +0 -9
- package/src/common/types/Merchant.ts +0 -6
- package/src/common/types/Notification.ts +0 -15
- package/src/common/types/ScheduledPayment.ts +0 -15
- package/src/common/types/ScreenSize.tsx +0 -4
- package/src/common/types/SpendingPlan.ts +0 -48
- package/src/common/types/Transaction.ts +0 -91
- package/src/common/types/User.ts +0 -20
- package/src/common/types/Widgets.ts +0 -11
- package/src/common/types/index.ts +0 -93
- package/src/common/types/localization/AccountFilterCopy.ts +0 -12
- package/src/common/types/localization/AccountTypeCopy.ts +0 -16
- package/src/common/types/localization/AccountsCopy.ts +0 -113
- package/src/common/types/localization/BudgetsCopy.ts +0 -52
- package/src/common/types/localization/CashflowCopy.ts +0 -77
- package/src/common/types/localization/CategoryCopy.ts +0 -18
- package/src/common/types/localization/CommonCopy.ts +0 -30
- package/src/common/types/localization/ConnectCopy.ts +0 -74
- package/src/common/types/localization/CurrencyInputCopy.ts +0 -6
- package/src/common/types/localization/DateRangePickerCopy.ts +0 -23
- package/src/common/types/localization/GoalsCopy.ts +0 -37
- package/src/common/types/localization/InsightsFeedCopy.ts +0 -26
- package/src/common/types/localization/MicroInsightsCopy.ts +0 -28
- package/src/common/types/localization/NetWorthCopy.ts +0 -14
- package/src/common/types/localization/NotificationsCopy.ts +0 -7
- package/src/common/types/localization/RecurringCopy.ts +0 -76
- package/src/common/types/localization/SpendingCopy.ts +0 -16
- package/src/common/types/localization/TransactionsCopy.ts +0 -81
- package/src/common/types/localization/TrendsCopy.ts +0 -10
- package/src/common/types/localization/index.ts +0 -19
- package/src/common/utils/AccountFilter.ts +0 -45
- package/src/common/utils/Analytics.ts +0 -51
- package/src/common/utils/Categories.ts +0 -75
- package/src/common/utils/DateUtil.ts +0 -67
- package/src/common/utils/Fetch.ts +0 -115
- package/src/common/utils/Localization.ts +0 -67
- package/src/common/utils/NumberFormatting.ts +0 -65
- package/src/common/utils/__tests__/Fetch.test.tsx +0 -34
- package/src/common/utils/index.ts +0 -18
- package/src/dashboard/Dashboard.tsx +0 -92
- package/src/dashboard/Greeting.tsx +0 -75
- package/src/dashboard/__tests__/Dashboard.test.tsx +0 -84
- package/src/dashboard/constants/Dashboard.ts +0 -4
- package/src/dashboard/index.ts +0 -3
- package/src/dashboard/types/DashboardTypes.ts +0 -9
- package/src/debts/DebtsWidget.tsx +0 -90
- package/src/debts/components/DebtsChart.tsx +0 -190
- package/src/debts/components/DebtsTable.tsx +0 -209
- package/src/debts/components/SnowballCard.tsx +0 -70
- package/src/debts/components/SnowballDrawer.tsx +0 -384
- package/src/debts/components/debtstable/AccountCell.tsx +0 -25
- package/src/debts/components/debtstable/PriorityCell.tsx +0 -46
- package/src/debts/index.ts +0 -4
- package/src/debts/store/DebtsStore.ts +0 -20
- package/src/debts/utils/DebtStore.ts +0 -75
- package/src/debts/utils/DebtsWidget.ts +0 -32
- package/src/debts/utils/SnowballCard.tsx +0 -48
- package/src/goals/GoalsWidget.tsx +0 -128
- package/src/goals/api/GoalApi.ts +0 -29
- package/src/goals/components/GoalDetails.tsx +0 -240
- package/src/goals/components/GoalList.tsx +0 -101
- package/src/goals/components/GoalStatusCard.tsx +0 -87
- package/src/goals/components/TabTitle.tsx +0 -21
- package/src/goals/constants/CopyKeys.ts +0 -29
- package/src/goals/index.ts +0 -2
- package/src/goals/stores/GoalStore.ts +0 -47
- package/src/goals/util/GoalsUtil.ts +0 -61
- package/src/index.ts +0 -17
- package/src/insights/README.md +0 -16
- package/src/insights/contexts/ToastContext.tsx +0 -62
- package/src/insights/index.ts +0 -5
- package/src/insights/settings/SettingsDrawer.tsx +0 -40
- package/src/insights/settings/__tests__/SettingsDrawer.test.tsx +0 -50
- package/src/insights/settings/components/PulseSubheaderRow.tsx +0 -34
- package/src/insights/settings/components/SettingsItem.tsx +0 -55
- package/src/insights/settings/components/Toast.tsx +0 -69
- package/src/insights/settings/hiddeninsights/__tests__/HiddenInsightsDrawer.test.tsx +0 -108
- package/src/insights/settings/hiddeninsights/__tests__/SubCategoryDrawer.test.tsx +0 -150
- package/src/insights/settings/hiddeninsights/components/CategoryEmptyState.tsx +0 -50
- package/src/insights/settings/hiddeninsights/components/HiddenInsightsDrawer.tsx +0 -222
- package/src/insights/settings/hiddeninsights/components/HiddenInsightsDrawerWrapper.tsx +0 -24
- package/src/insights/settings/hiddeninsights/components/SubCategoryDrawer.tsx +0 -256
- package/src/insights/settings/hiddeninsights/images/no-insights.png +0 -0
- package/src/insights/settings/hiddeninsights/types/index.ts +0 -74
- package/src/insights/settings/manageaccounts/__tests__/AccountGroup.test.tsx +0 -92
- package/src/insights/settings/manageaccounts/__tests__/ManageAccountsDrawer.test.tsx +0 -83
- package/src/insights/settings/manageaccounts/components/AccountGroup.tsx +0 -109
- package/src/insights/settings/manageaccounts/components/ManageAccountsDrawer.tsx +0 -63
- package/src/insights/settings/manageaccounts/types/index.ts +0 -13
- package/src/insights/settings/types/index.ts +0 -4
- package/src/insights/store/BeatStore.ts +0 -25
- package/src/insights/utils/beatTemplateCategories.ts +0 -103
- package/src/merchants/api/MerchantApi.ts +0 -33
- package/src/merchants/components/MerchantLookup.tsx +0 -117
- package/src/merchants/index.ts +0 -2
- package/src/merchants/stores/MerchantStore.ts +0 -42
- package/src/microinsights/analytics.ts +0 -31
- package/src/microinsights/components/beatCard/BeatCard.tsx +0 -124
- package/src/microinsights/components/beaticons/BeatCategoryIcon.tsx +0 -20
- package/src/microinsights/components/beaticons/BeatIcon.tsx +0 -45
- package/src/microinsights/components/beaticons/BeatMerchantLogo.tsx +0 -33
- package/src/microinsights/components/beaticons/ChartFilledIcon.tsx +0 -37
- package/src/microinsights/components/beaticons/MonthlySpendComparisonIcon.tsx +0 -30
- package/src/microinsights/components/beaticons/ZeroStateIcon.tsx +0 -558
- package/src/microinsights/components/beaticons/index.tsx +0 -7
- package/src/microinsights/components/carouselheader/CarouselHeader.tsx +0 -111
- package/src/microinsights/components/insightsmicrowidget/InsightsMicroWidget.tsx +0 -163
- package/src/microinsights/components/microBeatCarousel/CarouselControls.tsx +0 -99
- package/src/microinsights/components/microBeatCarousel/MicroBeatCarousel.tsx +0 -207
- package/src/microinsights/components/microInsightCard/MicroInsightCard.tsx +0 -173
- package/src/microinsights/components/noRelevantInsightsCard/NoRelevantInsightsCard.tsx +0 -89
- package/src/microinsights/components/spinner/Spinner.tsx +0 -21
- package/src/microinsights/components/viewMoreMicroCard/ViewMoreMicroCard.tsx +0 -101
- package/src/microinsights/components/zeroStateCard/ZeroStateCard.tsx +0 -62
- package/src/microinsights/constants/Analytics.ts +0 -192
- package/src/microinsights/constants/App.ts +0 -53
- package/src/microinsights/constants/Insights.tsx +0 -3
- package/src/microinsights/constants/OnClickEvents.ts +0 -3
- package/src/microinsights/context/InsightsMicroWidgetDataProvider.tsx +0 -24
- package/src/microinsights/context/hooks.tsx +0 -65
- package/src/microinsights/index.ts +0 -16
- package/src/microinsights/interfaces.ts +0 -28
- package/src/microinsights/stores/AppStore.ts +0 -34
- package/src/microinsights/stores/CopyStore.ts +0 -38
- package/src/microinsights/stores/InsightsMicroWidgetStore.ts +0 -61
- package/src/microinsights/types/BeatUIComponent.ts +0 -5
- package/src/microinsights/utils/DataSeries.ts +0 -20
- package/src/networth/NetWorthWidget.tsx +0 -171
- package/src/networth/__tests__/AssetsLiabilitiesDetail.test.tsx +0 -94
- package/src/networth/__tests__/NetWorthChart.test.tsx +0 -31
- package/src/networth/__tests__/NetWorthList.test.tsx +0 -33
- package/src/networth/components/AssetsLiabilitiesDetail.tsx +0 -146
- package/src/networth/components/GainsLossesDetail.tsx +0 -110
- package/src/networth/components/NetWorthChange.tsx +0 -51
- package/src/networth/components/NetWorthChart.tsx +0 -71
- package/src/networth/components/NetWorthList.tsx +0 -91
- package/src/networth/components/NetWorthListItem.tsx +0 -72
- package/src/networth/components/NetWorthSummary.tsx +0 -36
- package/src/networth/index.ts +0 -5
- package/src/networth/stores/NetWorthStore.ts +0 -99
- package/src/networth/stores/__tests__/NetWorthStore.test.ts +0 -32
- package/src/networth/types/NetWorth.ts +0 -59
- package/src/networth/utils/NetWorthUtils.ts +0 -177
- package/src/networth/utils/__tests__/NetWorthUtils.test.ts +0 -198
- package/src/notifications/__tests__/NotificationList.test.tsx +0 -67
- package/src/notifications/components/DateRow.tsx +0 -21
- package/src/notifications/components/NotificationBadge.tsx +0 -51
- package/src/notifications/components/NotificationCard.tsx +0 -63
- package/src/notifications/components/NotificationList.tsx +0 -65
- package/src/notifications/constants/NotificationConstants.ts +0 -104
- package/src/notifications/index.ts +0 -3
- package/src/notifications/stores/NotificationStore.ts +0 -62
- package/src/notifications/utils/NotificationUtils.ts +0 -21
- package/src/recurringactivity/RecurringActivityMiniWidget.tsx +0 -45
- package/src/recurringactivity/RecurringActivityWidget.tsx +0 -89
- package/src/recurringactivity/__tests__/BuildActivities.test.ts +0 -30
- package/src/recurringactivity/__tests__/BuildNewActivity.test.ts +0 -59
- package/src/recurringactivity/__tests__/RecurringActivityWidget.test.tsx +0 -33
- package/src/recurringactivity/components/ActivityBadges.tsx +0 -40
- package/src/recurringactivity/components/ActivityDetails.tsx +0 -196
- package/src/recurringactivity/components/ActivityList.tsx +0 -141
- package/src/recurringactivity/components/ActivityRow.tsx +0 -161
- package/src/recurringactivity/components/ActivityStatus.tsx +0 -82
- package/src/recurringactivity/components/MiniWidgetContent.tsx +0 -61
- package/src/recurringactivity/components/RecurringActivity.tsx +0 -165
- package/src/recurringactivity/components/actions/FrequencyAction.tsx +0 -130
- package/src/recurringactivity/components/actions/PaymentDateAction.tsx +0 -99
- package/src/recurringactivity/components/activitycalendar/ActivityCalendar.tsx +0 -100
- package/src/recurringactivity/components/activitycalendar/ActivityDay.tsx +0 -88
- package/src/recurringactivity/components/activitycalendar/Legend.tsx +0 -42
- package/src/recurringactivity/components/shared/ActivitySettings.tsx +0 -43
- package/src/recurringactivity/components/shared/activitysettings/AddActivity.tsx +0 -175
- package/src/recurringactivity/components/shared/activitysettings/AddActivityDetails.tsx +0 -148
- package/src/recurringactivity/components/shared/activitysettings/ManageExpenses.tsx +0 -84
- package/src/recurringactivity/components/shared/activitysettings/ManageIncome.tsx +0 -102
- package/src/recurringactivity/components/shared/activitysettings/SelectTransaction.tsx +0 -45
- package/src/recurringactivity/index.ts +0 -5
- package/src/recurringactivity/stores/RecurringActivityStore.ts +0 -312
- package/src/recurringactivity/util/RecurringActivityUtils.ts +0 -40
- package/src/recurringactivity/util/buildActivities.ts +0 -334
- package/src/recurringactivity/util/buildNewActivity.ts +0 -111
- package/src/recurringactivity/util/getRecurrence.ts +0 -50
- package/src/recurringactivity/util/getStatus.ts +0 -32
- package/src/recurringactivity/util/updateActivity.ts +0 -66
- package/src/spending/SpendingMiniWidget.tsx +0 -23
- package/src/spending/SpendingWidget.tsx +0 -71
- package/src/spending/__tests__/MiniSpendingChart.test.tsx +0 -43
- package/src/spending/__tests__/SpendingData.test.ts +0 -38
- package/src/spending/__tests__/SpendingMiniWidget.test.tsx +0 -49
- package/src/spending/__tests__/SpendingWidget.test.tsx +0 -49
- package/src/spending/components/MiniSpendingChart.tsx +0 -125
- package/src/spending/components/Spending.tsx +0 -175
- package/src/spending/components/SpendingChart.tsx +0 -74
- package/src/spending/components/SpendingDonut.tsx +0 -125
- package/src/spending/components/SpendingLegend.tsx +0 -41
- package/src/spending/components/SpendingList.tsx +0 -112
- package/src/spending/components/SpendingTabLabel.tsx +0 -25
- package/src/spending/index.ts +0 -2
- package/src/spending/utils/SpendingData.ts +0 -196
- package/src/transactions/TransactionWidget.tsx +0 -319
- package/src/transactions/analytics.ts +0 -12
- package/src/transactions/api/TransactionApi.ts +0 -204
- package/src/transactions/api/__mocks__/TransactionApi.ts +0 -20
- package/src/transactions/components/shared/TransactionDetails.tsx +0 -140
- package/src/transactions/components/shared/TransactionList.tsx +0 -124
- package/src/transactions/components/shared/TransactionTable.tsx +0 -123
- package/src/transactions/components/shared/transactiondetails/Description.tsx +0 -97
- package/src/transactions/components/shared/transactiondetails/FlagTransaction.tsx +0 -63
- package/src/transactions/components/shared/transactiondetails/ManualTransactionDetails.tsx +0 -148
- package/src/transactions/components/shared/transactiondetails/TransactionAmountHeader.tsx +0 -39
- package/src/transactions/components/shared/transactiondetails/actions/CategoryAction.tsx +0 -149
- package/src/transactions/components/shared/transactiondetails/actions/DateAction.tsx +0 -119
- package/src/transactions/components/shared/transactiondetails/actions/DeleteAction.tsx +0 -85
- package/src/transactions/components/shared/transactiondetails/actions/DeleteLogoAction.tsx +0 -88
- package/src/transactions/components/shared/transactiondetails/actions/HideAction.tsx +0 -126
- package/src/transactions/components/shared/transactiondetails/actions/MemoAction.tsx +0 -112
- package/src/transactions/components/shared/transactiondetails/actions/SplitAction.tsx +0 -234
- package/src/transactions/components/shared/transactiondetails/actions/TagsAction.tsx +0 -119
- package/src/transactions/components/shared/transactiondetails/actions/index.ts +0 -8
- package/src/transactions/components/shared/transactionlist/DateRow.tsx +0 -33
- package/src/transactions/components/shared/transactionlist/TransactionRow.tsx +0 -92
- package/src/transactions/components/shared/transactionlist/ZeroState.tsx +0 -36
- package/src/transactions/components/shared/transactiontable/cells/AccountCell.tsx +0 -12
- package/src/transactions/components/shared/transactiontable/cells/AmountCell.tsx +0 -35
- package/src/transactions/components/shared/transactiontable/cells/CategoryCell.tsx +0 -37
- package/src/transactions/components/shared/transactiontable/cells/DateCell.tsx +0 -17
- package/src/transactions/components/shared/transactiontable/cells/FlagCell.tsx +0 -43
- package/src/transactions/components/shared/transactiontable/cells/HeaderCell.tsx +0 -11
- package/src/transactions/components/shared/transactiontable/cells/PayeeCell.tsx +0 -21
- package/src/transactions/components/shared/transactiontable/cells/index.ts +0 -7
- package/src/transactions/components/splitmanager/SplitManager.tsx +0 -93
- package/src/transactions/components/splitmanager/SplitRow.tsx +0 -149
- package/src/transactions/components/splitmanager/index.ts +0 -1
- package/src/transactions/components/tagmanager/Header.tsx +0 -100
- package/src/transactions/components/tagmanager/SearchBox.tsx +0 -60
- package/src/transactions/components/tagmanager/TagManager.tsx +0 -51
- package/src/transactions/components/tagmanager/TagRow.tsx +0 -145
- package/src/transactions/components/tagmanager/index.ts +0 -1
- package/src/transactions/components/transactionwidget/AddAccountModal.tsx +0 -30
- package/src/transactions/components/transactionwidget/actions/AddTransactionAction.tsx +0 -74
- package/src/transactions/components/transactionwidget/actions/EditCategoryAction.tsx +0 -80
- package/src/transactions/components/transactionwidget/actions/ExportCsvAction.tsx +0 -32
- package/src/transactions/constants/Actions.ts +0 -28
- package/src/transactions/constants/Analytics.ts +0 -272
- package/src/transactions/constants/OnClickEvents.ts +0 -45
- package/src/transactions/constants/Transaction.ts +0 -32
- package/src/transactions/constants/TransactionsTable.ts +0 -26
- package/src/transactions/context/hooks.tsx +0 -12
- package/src/transactions/index.ts +0 -12
- package/src/transactions/stores/TransactionStore.ts +0 -327
- package/src/transactions/stores/UiStore.ts +0 -72
- package/src/transactions/stores/__tests__/TransactionStore.test.ts +0 -80
- package/src/transactions/utils/Filters.ts +0 -35
- package/src/transactions/utils/Transactions.ts +0 -22
- package/src/transactions/utils/buildDetailedTransactions.ts +0 -66
- package/src/transactions/utils/exportTransactionsToCSV.ts +0 -85
- package/src/transactions/utils/sortAndFilterTransactions.ts +0 -127
- package/src/trends/TrendsFullWidget.tsx +0 -286
- package/src/trends/TrendsMiniWidget.tsx +0 -49
- package/src/trends/__tests__/TrendsFullWidget.test.tsx +0 -45
- package/src/trends/__tests__/TrendsMiniWidget.test.tsx +0 -35
- package/src/trends/components/SpendingChart.tsx +0 -29
- package/src/trends/components/TrendsChart.tsx +0 -75
- package/src/trends/components/TrendsDrawer.tsx +0 -74
- package/src/trends/components/TrendsTable.tsx +0 -161
- package/src/trends/components/__tests__/SpendingChart.test.tsx +0 -37
- package/src/trends/components/trendstable/AmountCell.tsx +0 -14
- package/src/trends/components/trendstable/CategoryCell.tsx +0 -39
- package/src/trends/components/trendstable/HeaderCell.tsx +0 -8
- package/src/trends/index.ts +0 -2
- package/src/trends/mocks.ts +0 -423
- package/src/trends/utils/SpendingData.ts +0 -76
- package/src/trends/utils/TrendsData.ts +0 -127
- package/src/trends/utils/shared.ts +0 -39
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
import { makeAutoObservable as R, runInAction as u } from "mobx";
|
|
2
|
+
import { getUnixTime as A } from "date-fns/getUnixTime";
|
|
3
|
+
import { endOfToday as f } from "date-fns/endOfToday";
|
|
4
|
+
import { formatISO as N } from "date-fns/formatISO";
|
|
5
|
+
import { fromUnixTime as y } from "date-fns/fromUnixTime";
|
|
6
|
+
import { isBefore as b } from "date-fns/isBefore";
|
|
7
|
+
import { startOfMonth as I } from "date-fns/startOfMonth";
|
|
8
|
+
import { startOfToday as C } from "date-fns/startOfToday";
|
|
9
|
+
import { subDays as O } from "date-fns/subDays";
|
|
10
|
+
import "bowser";
|
|
11
|
+
import "date-fns/intlFormat";
|
|
12
|
+
import { V as v, an as x, ao as _, af as T, ag as m, ap as B, aq as L } from "./ConnectMiniWidget-Ep65CtHH.mjs";
|
|
13
|
+
import "react";
|
|
14
|
+
import "@honeybadger-io/react";
|
|
15
|
+
import "numeral";
|
|
16
|
+
import "date-fns/addMonths";
|
|
17
|
+
import "date-fns/addQuarters";
|
|
18
|
+
import "date-fns/addWeeks";
|
|
19
|
+
import "date-fns/addYears";
|
|
20
|
+
import "date-fns/getDay";
|
|
21
|
+
import "date-fns/nextDay";
|
|
22
|
+
import "date-fns/setDate";
|
|
23
|
+
import { B as D } from "./BeatApi-BxXgbSJY.mjs";
|
|
24
|
+
import "react/jsx-runtime";
|
|
25
|
+
import "@mui/material/Button";
|
|
26
|
+
import "@kyper/mui";
|
|
27
|
+
import "@mui/material/Tooltip";
|
|
28
|
+
import "@mui/material/Box";
|
|
29
|
+
import "@mui/material/IconButton";
|
|
30
|
+
import "@mui/material/styles/useTheme";
|
|
31
|
+
import "@mui/material/useMediaQuery";
|
|
32
|
+
import "@mxenabled/cssinjs";
|
|
33
|
+
import "date-fns/addDays";
|
|
34
|
+
import "date-fns/eachDayOfInterval";
|
|
35
|
+
import "date-fns/eachWeekOfInterval";
|
|
36
|
+
import { endOfMonth as M } from "date-fns/endOfMonth";
|
|
37
|
+
import { format as G } from "date-fns/format";
|
|
38
|
+
import "date-fns/isSameMonth";
|
|
39
|
+
import "date-fns/subMonths";
|
|
40
|
+
import "@mui/material/Paper";
|
|
41
|
+
import "@mui/icons-material/KeyboardArrowLeftRounded";
|
|
42
|
+
import "@mui/icons-material/KeyboardArrowRightRounded";
|
|
43
|
+
import "date-fns/isSameDay";
|
|
44
|
+
import "date-fns/isWithinInterval";
|
|
45
|
+
import "d3";
|
|
46
|
+
import "@mui/material/styles";
|
|
47
|
+
import "@mui/x-charts";
|
|
48
|
+
import "@mui/material/Stack";
|
|
49
|
+
import "@mui/material";
|
|
50
|
+
import "date-fns/differenceInCalendarDays";
|
|
51
|
+
import "date-fns/endOfYear";
|
|
52
|
+
import "date-fns/startOfYear";
|
|
53
|
+
import "date-fns/subYears";
|
|
54
|
+
import "@mui/material/ButtonGroup";
|
|
55
|
+
import "@mui/material/Tab";
|
|
56
|
+
import "@mui/material/Tabs";
|
|
57
|
+
import "@mui/material/ToggleButton";
|
|
58
|
+
import "@mui/material/ToggleButtonGroup";
|
|
59
|
+
import "@mui/material/Dialog";
|
|
60
|
+
import "@mui/material/DialogContent";
|
|
61
|
+
import "@mui/icons-material/ArrowBackOutlined";
|
|
62
|
+
import "@mui/material/Card";
|
|
63
|
+
import "@mui/material/CardHeader";
|
|
64
|
+
import "@mui/material/CardContent";
|
|
65
|
+
import "uuid";
|
|
66
|
+
import "@mui/material/CircularProgress";
|
|
67
|
+
import "@mui/material/FormControlLabel";
|
|
68
|
+
import "@mui/material/Radio";
|
|
69
|
+
import "@mui/material/Avatar";
|
|
70
|
+
import "@mui/material/ListItem";
|
|
71
|
+
import "@mui/material/ListItemAvatar";
|
|
72
|
+
import "@mui/material/ListItemButton";
|
|
73
|
+
import "@mui/material/ListItemText";
|
|
74
|
+
import "@mui/material/ListItemIcon";
|
|
75
|
+
import "date-fns/differenceInDays";
|
|
76
|
+
import "@mui/x-data-grid-pro";
|
|
77
|
+
import "date-fns";
|
|
78
|
+
import "date-fns/getMonth";
|
|
79
|
+
import "date-fns/isAfter";
|
|
80
|
+
import "date-fns/parseISO";
|
|
81
|
+
import "date-fns/subWeeks";
|
|
82
|
+
import { F as U, A as c } from "./Fetch-DpUi1_Dx.mjs";
|
|
83
|
+
class w {
|
|
84
|
+
fetchInstance;
|
|
85
|
+
constructor(t, a) {
|
|
86
|
+
this.fetchInstance = new U(t, a);
|
|
87
|
+
}
|
|
88
|
+
addTag = async (t) => this.fetchInstance.post(c.TAGS, t).then((a) => a.tag);
|
|
89
|
+
addTagging = async (t) => this.fetchInstance.post(c.TAGGINGS, t).then((a) => a.tagging);
|
|
90
|
+
addTransaction = async (t) => this.fetchInstance.post(c.TRANSACTIONS, t).then((a) => a.transaction);
|
|
91
|
+
addTransactionRule = async (t) => this.fetchInstance.post(c.TRANSACTION_RULES, t).then((a) => a);
|
|
92
|
+
getTaggings = async () => this.fetchInstance.get(c.TAGGINGS).then((t) => t.map((a) => a.tagging));
|
|
93
|
+
getTags = async () => this.fetchInstance.get(c.TAGS).then((t) => t.map((a) => a.tag));
|
|
94
|
+
getTransactionRules = async () => this.fetchInstance.get(c.TRANSACTION_RULES).then((t) => t.transaction_rules);
|
|
95
|
+
getTransactionsByDateRange = async (t, a) => this.fetchInstance.get(`${c.TRANSACTIONS}/by_date/${t}/${a}`).then((e) => e.map((i) => i.transaction));
|
|
96
|
+
// DEPRECATED
|
|
97
|
+
getTransactionsByAccountsAndDateRange = async (t, a, e) => {
|
|
98
|
+
console.warn("DEPRECATED: getTransactionsByAccountsAndDateRange will be removed");
|
|
99
|
+
const i = t.reduce(
|
|
100
|
+
(o, n, s) => `${o}account_guids[]=${n}${s !== t.length - 1 ? "&" : ""}`,
|
|
101
|
+
""
|
|
102
|
+
);
|
|
103
|
+
return this.fetchInstance.get(`${c.TRANSACTIONS}/by_date/${a}/${e}?${i}`).then((o) => o.map((n) => n.transaction));
|
|
104
|
+
};
|
|
105
|
+
// DEPRECATED
|
|
106
|
+
getTransactionsByGuids = async (t) => (console.warn("DEPRECATED: getTransactionsByGuids will be removed"), this.fetchInstance.post(`${c.TRANSACTIONS}/by_guids`, { guids: t.join("+") }).then((a) => a.map((e) => e.transaction)));
|
|
107
|
+
// DEPRECATED
|
|
108
|
+
getTransactionsByCategoryAndDate = async (t, a, e) => (console.warn("DEPRECATED: getTransactionsByCategoryAndDate will be removed"), this.fetchInstance.get(
|
|
109
|
+
`${c.TRANSACTIONS}/by_category_guid/${t}/by_date/${a}/${e}`
|
|
110
|
+
).then((i) => i.map((o) => o.transaction)));
|
|
111
|
+
// DEPRECATED
|
|
112
|
+
getTransactionsByCategoryDateAndAccounts = async (t, a, e, i) => {
|
|
113
|
+
console.warn("DEPRECATED: getTransactionsByCategoryDateAndAccounts will be removed");
|
|
114
|
+
const o = i.reduce(
|
|
115
|
+
(n, s, r) => `${n}account_guids[]=${s}${r !== i.length - 1 ? "&" : ""}`,
|
|
116
|
+
""
|
|
117
|
+
);
|
|
118
|
+
return this.fetchInstance.get(
|
|
119
|
+
`${c.TRANSACTIONS}/by_category_guid/${t}/by_date/${a}/${e}?${o}`
|
|
120
|
+
).then((n) => n.map((s) => s.transaction));
|
|
121
|
+
};
|
|
122
|
+
// DEPRECATED
|
|
123
|
+
getTransactionsByCategoriesDateAndAccounts = async (t, a, e, i) => {
|
|
124
|
+
console.warn("DEPRECATED: getTransactionsByCategoriesDateAndAccounts will be removed");
|
|
125
|
+
const o = i.reduce(
|
|
126
|
+
(n, s, r) => `${n}account_guids[]=${s}${r !== i.length - 1 ? "&" : ""}`,
|
|
127
|
+
""
|
|
128
|
+
);
|
|
129
|
+
return this.fetchInstance.get(
|
|
130
|
+
`${c.TRANSACTIONS}/by_category_guids/${t.join(
|
|
131
|
+
"+"
|
|
132
|
+
)}/by_date/${a}/${e}?${o}`
|
|
133
|
+
).then((n) => n.map((s) => s.transaction));
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* DEPRECATED
|
|
137
|
+
* Get all transactions by the top level category, between begin date and end date, and optionally
|
|
138
|
+
* filtered by accounts
|
|
139
|
+
* @param categoryGuid The top level category guid
|
|
140
|
+
* @param beginDate the start date
|
|
141
|
+
* @param endDate the end date
|
|
142
|
+
* @param accountGuids an optional list of account guids
|
|
143
|
+
*/
|
|
144
|
+
getTransactionsByTopLevelCategoryAndDate = async (t, a, e, i = []) => {
|
|
145
|
+
console.warn("DEPRECATED: getTransactionsByTopLevelCategoryAndDate will be removed");
|
|
146
|
+
let o = `${c.TRANSACTIONS}/by_top_level_category_guid/${t}/by_date/${a}/${e}`;
|
|
147
|
+
if (i.length > 0) {
|
|
148
|
+
const n = i.reduce(
|
|
149
|
+
(s, r, g) => `${s}account_guids[]=${r}${g !== i.length - 1 ? "&" : ""}`,
|
|
150
|
+
""
|
|
151
|
+
);
|
|
152
|
+
o += `?${n}`;
|
|
153
|
+
}
|
|
154
|
+
return this.fetchInstance.get(o).then((n) => n.map((s) => s.transaction));
|
|
155
|
+
};
|
|
156
|
+
removeTag = async (t) => this.fetchInstance.delete(`${c.TAGS}/${t}`).then((a) => a);
|
|
157
|
+
removeTagging = async (t) => this.fetchInstance.delete(`${c.TAGGINGS}/${t}`).then((a) => a);
|
|
158
|
+
removeTransaction = async (t) => this.fetchInstance.delete(`${c.TRANSACTIONS}/${t}`).then((a) => a);
|
|
159
|
+
removeTransactionSplit = async (t) => this.fetchInstance.delete(`${c.TRANSACTIONS}/${t}/unsplit`).then((a) => a);
|
|
160
|
+
updateTransactionRule = async (t) => this.fetchInstance.put(`${c.TRANSACTION_RULES}/${t.guid}`, t).then((a) => a);
|
|
161
|
+
updateTag = async (t) => this.fetchInstance.put(`${c.TAGS}/${t.guid}`, t).then((a) => a.tag);
|
|
162
|
+
updateTransaction = async (t) => this.fetchInstance.put(`${c.TRANSACTIONS}/${t.guid}`, t).then((a) => a.transaction);
|
|
163
|
+
}
|
|
164
|
+
const E = {
|
|
165
|
+
ASC: "ASC",
|
|
166
|
+
DESC: "DESC",
|
|
167
|
+
DIRECTION: {
|
|
168
|
+
ASC: "ascending",
|
|
169
|
+
DESC: "descending"
|
|
170
|
+
},
|
|
171
|
+
ALIGN: {
|
|
172
|
+
center: "center",
|
|
173
|
+
left: "flex-start",
|
|
174
|
+
right: "flex-end"
|
|
175
|
+
}
|
|
176
|
+
}, P = (d, t, a, e = []) => {
|
|
177
|
+
const i = t.reduce((s, r) => ({ ...s, [r.guid]: r }), {}), o = a.reduce((s, r) => ({ ...s, [r.guid]: r }), {}), n = e.reduce((s, r) => {
|
|
178
|
+
const { transaction_guid: g, tag_guid: h } = r;
|
|
179
|
+
if (!s[g])
|
|
180
|
+
return {
|
|
181
|
+
...s,
|
|
182
|
+
[g]: [h]
|
|
183
|
+
};
|
|
184
|
+
const p = [...s[g], h];
|
|
185
|
+
return {
|
|
186
|
+
...s,
|
|
187
|
+
[g]: p
|
|
188
|
+
};
|
|
189
|
+
}, {});
|
|
190
|
+
return d.map((s) => {
|
|
191
|
+
const r = i[s.account_guid], g = s.category_guid ? o[s.category_guid] : null, h = n[s.guid] ?? [];
|
|
192
|
+
return {
|
|
193
|
+
...s,
|
|
194
|
+
account: r?.user_name || "Unknown",
|
|
195
|
+
accountIsClosed: r?.is_closed,
|
|
196
|
+
accountIsHidden: r?.is_hidden,
|
|
197
|
+
category: g?.name || "Uncategorized",
|
|
198
|
+
isIncome: s.top_level_category_guid === v.INCOME,
|
|
199
|
+
isPending: s.feed_status === x.PENDING,
|
|
200
|
+
number: r?.account_number || "",
|
|
201
|
+
payee: s.description,
|
|
202
|
+
tags: h
|
|
203
|
+
};
|
|
204
|
+
});
|
|
205
|
+
}, F = async (d, t) => !t || !_[d] ? null : t.sendAnalyticEvent(_[d]), S = {
|
|
206
|
+
FLAG: "flag",
|
|
207
|
+
DATE: "date",
|
|
208
|
+
PAYEE: "payee",
|
|
209
|
+
CATEGORY: "category",
|
|
210
|
+
ACCOUNT: "account",
|
|
211
|
+
AMOUNT: "amount"
|
|
212
|
+
}, V = "uncategorized", z = (d, t, a, e, i, o) => {
|
|
213
|
+
const n = Y(d, i, o), s = H(n, a, e);
|
|
214
|
+
return t.forEach((r) => {
|
|
215
|
+
const g = s.findIndex((p) => p.guid === r), h = o.filter((p) => p.parent_guid === r);
|
|
216
|
+
s.splice(g + 1, 0, ...h);
|
|
217
|
+
}), s;
|
|
218
|
+
}, Y = (d, t, a) => {
|
|
219
|
+
const {
|
|
220
|
+
accounts: e = [],
|
|
221
|
+
dateRange: i = { start: I(C()), end: f() },
|
|
222
|
+
custom: o = () => !0,
|
|
223
|
+
searchTerm: n = ""
|
|
224
|
+
} = d;
|
|
225
|
+
return a.filter((s) => !s.parent_guid).filter((s) => !!e.find((r) => r === s.account_guid)).filter((s) => s.date > A(i.start) && s.date < A(i.end)).filter(o).filter((s) => {
|
|
226
|
+
if (n === V && s.has_been_split)
|
|
227
|
+
return !1;
|
|
228
|
+
if (/^spl/i.test(n) && (s.has_been_split || s.parent_guid))
|
|
229
|
+
return !0;
|
|
230
|
+
const g = s.tags.some(
|
|
231
|
+
(p) => l(n, t.find(($) => $.guid === p)?.name)
|
|
232
|
+
), h = y(s.date);
|
|
233
|
+
return l(n, s.payee) || l(n, s.feed_description) || l(n, s.category) || l(n, T(h, m.MONTH)) || l(n, T(h, m.DAY)) || l(n, T(h, m.FULL_MONTH_DAY)) || l(n, T(h, m.MONTH_DAY_YEAR)) || l(n, G(h, B)) || l(n, s.account) || l(n, `${s.amount}`) || l(n, s.memo) || g;
|
|
234
|
+
});
|
|
235
|
+
}, H = (d, t, a) => [...d].sort((e, i) => {
|
|
236
|
+
const o = t, n = (e[o] || "") > (i[o] || "");
|
|
237
|
+
let s = n ? -1 : 1, r = n ? 1 : -1;
|
|
238
|
+
return (t === S.DATE || t === S.AMOUNT) && (s = n ? 1 : -1, r = n ? -1 : 1), a === E.ASC ? s : r;
|
|
239
|
+
}), l = (d, t) => {
|
|
240
|
+
const a = d.toLowerCase().split(" "), e = t?.toString().toLowerCase() ?? "";
|
|
241
|
+
return a.every((i) => e.indexOf(i) > -1);
|
|
242
|
+
};
|
|
243
|
+
class j {
|
|
244
|
+
beginDate = I(/* @__PURE__ */ new Date());
|
|
245
|
+
endDate = M(/* @__PURE__ */ new Date());
|
|
246
|
+
expandedSplits = [];
|
|
247
|
+
isInitialized = !1;
|
|
248
|
+
height = 550;
|
|
249
|
+
width = 1e3;
|
|
250
|
+
shouldDisableDrawerScroll = !1;
|
|
251
|
+
searchValue = "";
|
|
252
|
+
selectedAccountGuids = [];
|
|
253
|
+
manualTransaction = L;
|
|
254
|
+
isAmountValid = !1;
|
|
255
|
+
showInsights = !1;
|
|
256
|
+
constructor() {
|
|
257
|
+
R(this);
|
|
258
|
+
}
|
|
259
|
+
setDateRange = (t, a) => {
|
|
260
|
+
this.beginDate = t, this.endDate = a;
|
|
261
|
+
};
|
|
262
|
+
setIsInitialized = (t) => this.isInitialized = t;
|
|
263
|
+
setIsAmountValid = (t) => this.isAmountValid = t;
|
|
264
|
+
setSearchValue = (t) => this.searchValue = t;
|
|
265
|
+
setSelectedAccountGuids = (t) => this.selectedAccountGuids = t;
|
|
266
|
+
setShouldDisableDrawerScroll = (t) => this.shouldDisableDrawerScroll = t;
|
|
267
|
+
setShowInsights = (t) => {
|
|
268
|
+
this.showInsights = t;
|
|
269
|
+
};
|
|
270
|
+
setSize = (t, a) => {
|
|
271
|
+
this.height = t, this.width = a;
|
|
272
|
+
};
|
|
273
|
+
toggleSplit = (t) => {
|
|
274
|
+
const a = [...this.expandedSplits], e = this.expandedSplits.findIndex((i) => i === t);
|
|
275
|
+
e >= 0 ? a.splice(e, 1) : a.push(t), this.expandedSplits = a;
|
|
276
|
+
};
|
|
277
|
+
updateManualTransaction = (t) => {
|
|
278
|
+
this.manualTransaction = t;
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
class Sa {
|
|
282
|
+
api = new w("/", "");
|
|
283
|
+
beatApi = new D("/", "");
|
|
284
|
+
globalStore;
|
|
285
|
+
uiStore;
|
|
286
|
+
isLoading = !0;
|
|
287
|
+
taggings = [];
|
|
288
|
+
tags = [];
|
|
289
|
+
transactionRules = [];
|
|
290
|
+
transactions = [];
|
|
291
|
+
associatedBeats = [];
|
|
292
|
+
cachedStartDate = O(C(), 90);
|
|
293
|
+
onAnalyticEvent = F;
|
|
294
|
+
sortColumn = S.DATE;
|
|
295
|
+
sortDirection = E.DESC;
|
|
296
|
+
filter = {};
|
|
297
|
+
constructor(t) {
|
|
298
|
+
this.globalStore = t, this.uiStore = new j(), R(this);
|
|
299
|
+
}
|
|
300
|
+
initialize = async (t, a) => {
|
|
301
|
+
this.api = new w(t, a), this.beatApi = new D(t, a), Promise.all([
|
|
302
|
+
this.loadAssociatedBeats(I(/* @__PURE__ */ new Date())),
|
|
303
|
+
this.loadTags(),
|
|
304
|
+
this.loadTaggings(),
|
|
305
|
+
this.loadTransactionRules(),
|
|
306
|
+
// By default loads 90 days of transactions
|
|
307
|
+
this.loadTransactions()
|
|
308
|
+
]).then(() => this.uiStore.setIsInitialized(!0));
|
|
309
|
+
};
|
|
310
|
+
get sortedTransactions() {
|
|
311
|
+
return z(
|
|
312
|
+
this.filter,
|
|
313
|
+
this.uiStore.expandedSplits,
|
|
314
|
+
this.sortColumn,
|
|
315
|
+
this.sortDirection,
|
|
316
|
+
this.tags,
|
|
317
|
+
this.transactions
|
|
318
|
+
);
|
|
319
|
+
}
|
|
320
|
+
addTag = async (t) => {
|
|
321
|
+
await this.api.addTag({ name: t }), await this.loadTags();
|
|
322
|
+
};
|
|
323
|
+
addTagging = async (t, a) => {
|
|
324
|
+
await this.api.addTagging({
|
|
325
|
+
tag_guid: t,
|
|
326
|
+
transaction_guid: a
|
|
327
|
+
});
|
|
328
|
+
};
|
|
329
|
+
addOrUpdateTransactionRule = async (t, a) => {
|
|
330
|
+
const e = this.transactionRules.find(
|
|
331
|
+
(i) => i.guid === a.user_transaction_rule_guid
|
|
332
|
+
);
|
|
333
|
+
e ? await this.api.updateTransactionRule({
|
|
334
|
+
...e,
|
|
335
|
+
category_guid: t,
|
|
336
|
+
description: a.description
|
|
337
|
+
}) : await this.api.addTransactionRule({
|
|
338
|
+
category_guid: t,
|
|
339
|
+
description: a.description,
|
|
340
|
+
match_description: a.description
|
|
341
|
+
}), await this.loadTransactionRules();
|
|
342
|
+
};
|
|
343
|
+
addTransaction = async (t) => {
|
|
344
|
+
const a = await this.api.addTransaction(t);
|
|
345
|
+
a && u(
|
|
346
|
+
() => this.transactions = this.augmentTransactions([a, ...this.transactions])
|
|
347
|
+
);
|
|
348
|
+
};
|
|
349
|
+
augmentTransactions = (t) => P(
|
|
350
|
+
t,
|
|
351
|
+
this.globalStore.accountStore.accounts,
|
|
352
|
+
this.globalStore.categoryStore.categories,
|
|
353
|
+
this.taggings
|
|
354
|
+
);
|
|
355
|
+
loadAssociatedBeats = async (t) => {
|
|
356
|
+
const a = t ? N(t, { representation: "date" }) : void 0, e = await this.beatApi.getBeatsWithAssociatedTransaction(a);
|
|
357
|
+
u(() => this.associatedBeats = e);
|
|
358
|
+
};
|
|
359
|
+
loadTags = async () => {
|
|
360
|
+
const t = await this.api.getTags();
|
|
361
|
+
u(() => this.tags = t);
|
|
362
|
+
};
|
|
363
|
+
loadTaggings = async () => {
|
|
364
|
+
const t = await this.api.getTaggings();
|
|
365
|
+
u(() => this.taggings = t);
|
|
366
|
+
};
|
|
367
|
+
loadTransactionRules = async () => {
|
|
368
|
+
const t = await this.api.getTransactionRules();
|
|
369
|
+
u(() => this.transactionRules = t);
|
|
370
|
+
};
|
|
371
|
+
loadTransactions = async (t = this.cachedStartDate, a = f()) => {
|
|
372
|
+
this.setIsLoading(!0), this.transactions = [];
|
|
373
|
+
try {
|
|
374
|
+
const e = await this.api.getTransactionsByDateRange(
|
|
375
|
+
A(t),
|
|
376
|
+
A(a)
|
|
377
|
+
);
|
|
378
|
+
u(() => {
|
|
379
|
+
this.transactions = this.augmentTransactions(e);
|
|
380
|
+
});
|
|
381
|
+
} catch (e) {
|
|
382
|
+
console.error(`Error occurred while loading transactions: ${e}`);
|
|
383
|
+
}
|
|
384
|
+
this.setIsLoading(!1);
|
|
385
|
+
};
|
|
386
|
+
// DEPRECATED
|
|
387
|
+
loadTransactionsByDateRange = async (t, a) => {
|
|
388
|
+
console.warn("DEPRECATED: loadTransactionsByDateRange will be removed"), this.setFilter({
|
|
389
|
+
...this.filter,
|
|
390
|
+
dateRange: { start: y(a), end: y(t) }
|
|
391
|
+
});
|
|
392
|
+
};
|
|
393
|
+
removeTag = async (t) => {
|
|
394
|
+
await this.api.removeTag(t), await this.loadTags();
|
|
395
|
+
};
|
|
396
|
+
removeTagging = async (t) => {
|
|
397
|
+
await this.api.removeTagging(t);
|
|
398
|
+
};
|
|
399
|
+
removeTransaction = async (t) => {
|
|
400
|
+
await this.api.removeTransaction(t);
|
|
401
|
+
const a = this.transactions.findIndex((e) => e.guid === t);
|
|
402
|
+
if (a >= 0) {
|
|
403
|
+
const e = [...this.transactions];
|
|
404
|
+
e.splice(a, 1), u(() => this.transactions = e);
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
setFilter = (t) => {
|
|
408
|
+
this.filter = t, t.dateRange && b(t.dateRange.start, this.cachedStartDate) && this.loadTransactions(t.dateRange.start, f()).then(() => {
|
|
409
|
+
t.dateRange && (this.cachedStartDate = t.dateRange.start);
|
|
410
|
+
});
|
|
411
|
+
};
|
|
412
|
+
setIsLoading = (t) => this.isLoading = t;
|
|
413
|
+
setSortData = (t, a) => {
|
|
414
|
+
this.sortColumn = t, this.sortDirection = a;
|
|
415
|
+
};
|
|
416
|
+
splitTransaction = async (t, a) => {
|
|
417
|
+
const e = await this.api.updateTransaction(t), i = [];
|
|
418
|
+
for (let n = 0; n < a.length; n++) {
|
|
419
|
+
const s = await this.api.addTransaction(a[n]);
|
|
420
|
+
i.push(s);
|
|
421
|
+
}
|
|
422
|
+
const o = this.transactions.findIndex((n) => n.guid === t.guid);
|
|
423
|
+
o >= 0 && u(
|
|
424
|
+
() => this.transactions = this.augmentTransactions([
|
|
425
|
+
...this.transactions.slice(0, o),
|
|
426
|
+
e,
|
|
427
|
+
...this.transactions.slice(o + 1),
|
|
428
|
+
...i
|
|
429
|
+
])
|
|
430
|
+
);
|
|
431
|
+
};
|
|
432
|
+
unSplitTransaction = async (t) => {
|
|
433
|
+
const a = this.transactions.filter((n) => n.parent_guid === t);
|
|
434
|
+
await this.api.removeTransactionSplit(t);
|
|
435
|
+
const e = [...this.transactions];
|
|
436
|
+
a.forEach((n) => {
|
|
437
|
+
const s = e.findIndex((r) => r.guid === n.guid);
|
|
438
|
+
s >= 0 && e.splice(s, 1);
|
|
439
|
+
});
|
|
440
|
+
const i = e.findIndex((n) => n.guid === t), o = e[i];
|
|
441
|
+
o.has_been_split = !1, i >= 0 && u(
|
|
442
|
+
() => this.transactions = [
|
|
443
|
+
...e.slice(0, i),
|
|
444
|
+
o,
|
|
445
|
+
...e.slice(i + 1)
|
|
446
|
+
]
|
|
447
|
+
);
|
|
448
|
+
};
|
|
449
|
+
updateTaggings = async (t, a) => {
|
|
450
|
+
for (let e = 0; e < t.length; e++) {
|
|
451
|
+
const i = t[e];
|
|
452
|
+
this.taggings.some((o) => o.tag_guid === i) || await this.addTagging(i, a);
|
|
453
|
+
}
|
|
454
|
+
for (let e = 0; e < this.taggings.length; e++) {
|
|
455
|
+
const i = this.taggings[e];
|
|
456
|
+
t.includes(i.tag_guid) || await this.removeTagging(i.guid);
|
|
457
|
+
}
|
|
458
|
+
await this.loadTaggings();
|
|
459
|
+
};
|
|
460
|
+
updateTag = async (t) => {
|
|
461
|
+
await this.api.updateTag(t), await this.loadTags();
|
|
462
|
+
};
|
|
463
|
+
updateTransaction = async (t) => {
|
|
464
|
+
const a = await this.api.updateTransaction(t), e = this.transactions.findIndex((i) => i.guid === t.guid);
|
|
465
|
+
e >= 0 && u(
|
|
466
|
+
() => this.transactions = this.augmentTransactions([
|
|
467
|
+
...this.transactions.slice(0, e),
|
|
468
|
+
a,
|
|
469
|
+
...this.transactions.slice(e + 1)
|
|
470
|
+
])
|
|
471
|
+
);
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
export {
|
|
475
|
+
w as T,
|
|
476
|
+
Sa as a
|
|
477
|
+
};
|
|
478
|
+
//# sourceMappingURL=TransactionStore-BUrjBWkk.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionStore-BUrjBWkk.mjs","sources":["../src/transactions/api/TransactionApi.ts","../src/common/constants/Table.ts","../src/transactions/utils/buildDetailedTransactions.ts","../src/transactions/analytics.ts","../src/transactions/constants/TransactionsTable.ts","../src/transactions/utils/sortAndFilterTransactions.ts","../src/transactions/stores/UiStore.ts","../src/transactions/stores/TransactionStore.ts"],"sourcesContent":["import { Fetch } from '../../common'\nimport { ApiEndpoints } from '../../common'\n\nimport type { Tag, Tagging, Transaction, TransactionRule } from '../../common'\n\nexport class TransactionApi {\n fetchInstance: Fetch\n\n constructor(endpoint: string, token: string) {\n this.fetchInstance = new Fetch(endpoint, token)\n }\n\n addTag = async (tag: Tag) => {\n return this.fetchInstance.post(ApiEndpoints.TAGS, tag).then((data) => data.tag)\n }\n\n addTagging = async (tagging: Tagging) => {\n return this.fetchInstance.post(ApiEndpoints.TAGGINGS, tagging).then((data) => data.tagging)\n }\n\n addTransaction = async (transaction: Transaction) => {\n return this.fetchInstance\n .post(ApiEndpoints.TRANSACTIONS, transaction)\n .then((data) => data.transaction)\n }\n\n addTransactionRule = async (rule: TransactionRule) => {\n return this.fetchInstance.post(ApiEndpoints.TRANSACTION_RULES, rule).then((data) => data)\n }\n\n getTaggings = async () => {\n return this.fetchInstance\n .get(ApiEndpoints.TAGGINGS)\n .then((data) => data.map((item: { tagging: Tagging }) => item.tagging))\n }\n\n getTags = async () => {\n return this.fetchInstance\n .get(ApiEndpoints.TAGS)\n .then((data) => data.map((item: { tag: Tag }) => item.tag))\n }\n\n getTransactionRules = async () => {\n return this.fetchInstance\n .get(ApiEndpoints.TRANSACTION_RULES)\n .then((data) => data.transaction_rules)\n }\n\n getTransactionsByDateRange = async (startDate: number, endDate: number) => {\n return this.fetchInstance\n .get(`${ApiEndpoints.TRANSACTIONS}/by_date/${startDate}/${endDate}`)\n .then((data) => data.map((item: { transaction: Transaction }) => item.transaction))\n }\n\n // DEPRECATED\n getTransactionsByAccountsAndDateRange = async (\n accountGuids: string[],\n beginDate: number,\n endDate: number,\n ) => {\n console.warn('DEPRECATED: getTransactionsByAccountsAndDateRange will be removed')\n const accountsList = accountGuids.reduce(\n (acc: string, guid: string, i: number) =>\n `${acc}account_guids[]=${guid}${i !== accountGuids.length - 1 ? '&' : ''}`,\n '',\n )\n\n return this.fetchInstance\n .get(`${ApiEndpoints.TRANSACTIONS}/by_date/${beginDate}/${endDate}?${accountsList}`)\n .then((data) => data.map((item: { transaction: Transaction }) => item.transaction))\n }\n\n // DEPRECATED\n getTransactionsByGuids = async (guids: string[]) => {\n console.warn('DEPRECATED: getTransactionsByGuids will be removed')\n return this.fetchInstance\n .post(`${ApiEndpoints.TRANSACTIONS}/by_guids`, { guids: guids.join('+') })\n .then((data) => data.map((item: { transaction: Transaction }) => item.transaction))\n }\n\n // DEPRECATED\n getTransactionsByCategoryAndDate = async (\n categoryGuid: string,\n beginDate: number,\n endDate: number,\n ) => {\n console.warn('DEPRECATED: getTransactionsByCategoryAndDate will be removed')\n return this.fetchInstance\n .get(\n `${ApiEndpoints.TRANSACTIONS}/by_category_guid/${categoryGuid}/by_date/${beginDate}/${endDate}`,\n )\n .then((data) => data.map((item: { transaction: Transaction }) => item.transaction))\n }\n\n // DEPRECATED\n getTransactionsByCategoryDateAndAccounts = async (\n categoryGuid: string,\n beginDate: number,\n endDate: number,\n accountGuids: string[],\n ) => {\n console.warn('DEPRECATED: getTransactionsByCategoryDateAndAccounts will be removed')\n const accountsList = accountGuids.reduce(\n (acc: string, guid: string, i: number) =>\n `${acc}account_guids[]=${guid}${i !== accountGuids.length - 1 ? '&' : ''}`,\n '',\n )\n\n return this.fetchInstance\n .get(\n `${ApiEndpoints.TRANSACTIONS}/by_category_guid/${categoryGuid}/by_date/${beginDate}/${endDate}?${accountsList}`,\n )\n .then((data) => data.map((item: { transaction: Transaction }) => item.transaction))\n }\n\n // DEPRECATED\n getTransactionsByCategoriesDateAndAccounts = async (\n categoryGuids: string[],\n beginDate: number,\n endDate: number,\n accountGuids: string[],\n ) => {\n console.warn('DEPRECATED: getTransactionsByCategoriesDateAndAccounts will be removed')\n const accountsList = accountGuids.reduce(\n (acc: string, guid: string, i: number) =>\n `${acc}account_guids[]=${guid}${i !== accountGuids.length - 1 ? '&' : ''}`,\n '',\n )\n\n return this.fetchInstance\n .get(\n `${ApiEndpoints.TRANSACTIONS}/by_category_guids/${categoryGuids.join(\n '+',\n )}/by_date/${beginDate}/${endDate}?${accountsList}`,\n )\n .then((data) => data.map((item: { transaction: Transaction }) => item.transaction))\n }\n\n /**\n * DEPRECATED\n * Get all transactions by the top level category, between begin date and end date, and optionally\n * filtered by accounts\n * @param categoryGuid The top level category guid\n * @param beginDate the start date\n * @param endDate the end date\n * @param accountGuids an optional list of account guids\n */\n getTransactionsByTopLevelCategoryAndDate = async (\n categoryGuid: string,\n beginDate: number,\n endDate: number,\n accountGuids: string[] = [],\n ) => {\n console.warn('DEPRECATED: getTransactionsByTopLevelCategoryAndDate will be removed')\n let url = `${ApiEndpoints.TRANSACTIONS}/by_top_level_category_guid/${categoryGuid}/by_date/${beginDate}/${endDate}`\n\n if (accountGuids.length > 0) {\n const accountsList = accountGuids.reduce(\n (acc: string, guid: string, i: number) =>\n `${acc}account_guids[]=${guid}${i !== accountGuids.length - 1 ? '&' : ''}`,\n '',\n )\n url += `?${accountsList}`\n }\n\n return this.fetchInstance\n .get(url)\n .then((data) => data.map((item: { transaction: Transaction }) => item.transaction))\n }\n\n removeTag = async (guid: string) => {\n return this.fetchInstance.delete(`${ApiEndpoints.TAGS}/${guid}`).then((data) => data)\n }\n\n removeTagging = async (guid: string) => {\n return this.fetchInstance.delete(`${ApiEndpoints.TAGGINGS}/${guid}`).then((data) => data)\n }\n\n removeTransaction = async (guid: string) => {\n return this.fetchInstance.delete(`${ApiEndpoints.TRANSACTIONS}/${guid}`).then((data) => data)\n }\n\n removeTransactionSplit = async (guid: string) => {\n return this.fetchInstance\n .delete(`${ApiEndpoints.TRANSACTIONS}/${guid}/unsplit`)\n .then((data) => data)\n }\n\n updateTransactionRule = async (rule: TransactionRule) => {\n return this.fetchInstance\n .put(`${ApiEndpoints.TRANSACTION_RULES}/${rule.guid}`, rule)\n .then((data) => data)\n }\n\n updateTag = async (tag: Tag) => {\n return this.fetchInstance.put(`${ApiEndpoints.TAGS}/${tag.guid}`, tag).then((data) => data.tag)\n }\n\n updateTransaction = async (transaction: Transaction) => {\n return this.fetchInstance\n .put(`${ApiEndpoints.TRANSACTIONS}/${transaction.guid}`, transaction)\n .then((data) => data.transaction)\n }\n}\n","export const TABLE_CONST = {\n ASC: 'ASC',\n DESC: 'DESC',\n DIRECTION: {\n ASC: 'ascending',\n DESC: 'descending',\n },\n ALIGN: {\n center: 'center',\n left: 'flex-start',\n right: 'flex-end',\n },\n}\n","import { CategoryGuids, TransactionStatus } from '../../common'\n\nimport type { Account, Category, Tagging, Transaction } from '../../common'\n\ninterface AccountsMap {\n [key: string]: Account\n}\n\ninterface CategoriesMap {\n [key: string]: Category\n}\n\ninterface TaggingsMap {\n [key: string]: string[]\n}\n\nexport const buildDetailedTransactions = (\n transactions: Transaction[],\n accounts: Account[],\n categories: Category[],\n taggings: Tagging[] = [],\n) => {\n const accountsMap = accounts.reduce((acc: AccountsMap, account: Account) => {\n return { ...acc, [account.guid]: account }\n }, {})\n\n const categoriesMap = categories.reduce((acc: CategoriesMap, category: Category) => {\n return { ...acc, [category.guid]: category }\n }, {})\n\n const taggingsMap = taggings.reduce((acc: TaggingsMap, tagging: Tagging) => {\n const { transaction_guid, tag_guid } = tagging\n\n if (!acc[transaction_guid]) {\n return {\n ...acc,\n [transaction_guid]: [tag_guid],\n }\n }\n const tags = [...acc[transaction_guid], tag_guid] as string[]\n\n return {\n ...acc,\n [transaction_guid]: tags,\n }\n }, {})\n\n return transactions.map((transaction: Transaction) => {\n const account = accountsMap[transaction.account_guid]\n const category = transaction.category_guid ? categoriesMap[transaction.category_guid] : null\n const tags = taggingsMap[transaction.guid] ?? []\n\n return {\n ...transaction,\n account: account?.user_name || 'Unknown',\n accountIsClosed: account?.is_closed,\n accountIsHidden: account?.is_hidden,\n category: category?.name || 'Uncategorized',\n isIncome: transaction.top_level_category_guid === CategoryGuids.INCOME,\n isPending: transaction.feed_status === TransactionStatus.PENDING,\n number: account?.account_number || '',\n payee: transaction.description,\n tags,\n }\n })\n}\n","import { analyticsSession } from '../common'\nimport { AnalyticsEventsObjectType } from '../common/types/Analytics'\n\nimport { ANALYTICS_EVENTS } from './constants/Analytics'\n\nexport type AnalyticSession = Awaited<ReturnType<typeof analyticsSession>>\n\nexport const onAnalyticEvent = async (event: string, session: AnalyticSession | null) => {\n if (!session || !ANALYTICS_EVENTS[event]) return null\n\n return session.sendAnalyticEvent(ANALYTICS_EVENTS[event] as AnalyticsEventsObjectType)\n}\n","export const ROW_HEIGHT = 48\n\nconst FLAG_COLUMN_WIDTH = 24\nconst DATE_COLUMN_WIDTH = 64\nconst AMOUNT_COLUMN_WIDTH = 112\nconst VARIABLE_COLUMN_WIDTH = `calc((100% - ${\n FLAG_COLUMN_WIDTH + DATE_COLUMN_WIDTH + AMOUNT_COLUMN_WIDTH\n}px) / 3)`\n\nexport const COLUMN_WIDTH = {\n FLAG: FLAG_COLUMN_WIDTH, // Fixed width\n DATE: DATE_COLUMN_WIDTH, // Fixed width\n PAYEE: VARIABLE_COLUMN_WIDTH, // 1/3 of remaining width\n CATEGORY: VARIABLE_COLUMN_WIDTH, // 1/3 of remaining width\n ACCOUNT: VARIABLE_COLUMN_WIDTH, // 1/3 of remaining width\n AMOUNT: AMOUNT_COLUMN_WIDTH, // Fixed width\n}\n\nexport const COLUMN_NAMES = {\n FLAG: 'flag',\n DATE: 'date',\n PAYEE: 'payee',\n CATEGORY: 'category',\n ACCOUNT: 'account',\n AMOUNT: 'amount',\n}\n","import { endOfToday } from 'date-fns/endOfToday'\nimport { format } from 'date-fns/format'\nimport { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { getUnixTime } from 'date-fns/getUnixTime'\nimport { startOfMonth } from 'date-fns/startOfMonth'\nimport { startOfToday } from 'date-fns/startOfToday'\n\nimport { TABLE_CONST } from '../../common/constants/Table'\nimport { DATE_FORMATS_INTL, formatDate, ORDINAL_DATE_FORMAT, Tag, Transaction } from '../../common'\n\nimport { COLUMN_NAMES } from '../constants/TransactionsTable'\nimport { type TransactionFilter } from '../stores/TransactionStore'\n\nconst UNCATEGORIZED_TERM = 'uncategorized'\n\nexport const sortAndFilterTransactions = (\n filter: TransactionFilter,\n expandedSplits: string[],\n sortColumn: string,\n sortDirection: string,\n tags: Tag[],\n transactions: Transaction[],\n) => {\n const filteredTransactions = filterTransactions(filter, tags, transactions)\n\n const sortedTransactions = sortTransactions(filteredTransactions, sortColumn, sortDirection)\n\n expandedSplits.forEach((guid) => {\n const index = sortedTransactions.findIndex((t) => t.guid === guid)\n const children = transactions.filter((t) => t.parent_guid === guid)\n sortedTransactions.splice(index + 1, 0, ...children)\n })\n return sortedTransactions\n}\n\nconst filterTransactions = (\n filter: TransactionFilter,\n tags: Tag[],\n transactions: Transaction[],\n) => {\n const {\n accounts = [],\n dateRange = { start: startOfMonth(startOfToday()), end: endOfToday() },\n custom = () => true,\n searchTerm: searchFilter = '',\n } = filter\n\n return (\n transactions\n // Filters out Split transaction children\n .filter((t) => !t.parent_guid)\n // Filter for selected accounts\n .filter((t) => Boolean(accounts.find((guid) => guid === t.account_guid)))\n // Filter for Date Range\n .filter((t) => t.date > getUnixTime(dateRange.start) && t.date < getUnixTime(dateRange.end))\n // Custom filter\n .filter(custom)\n // Search filter\n .filter((transaction) => {\n // Don't return uncategorized split transactions\n if (searchFilter === UNCATEGORIZED_TERM && transaction.has_been_split) {\n return false\n }\n\n // Split check - When searching for \"Splits\" and transaction is a split or is a parent of a split(s)\n const splitPattern = /^spl/i\n if (\n splitPattern.test(searchFilter) &&\n (transaction.has_been_split || Boolean(transaction.parent_guid))\n ) {\n return true\n }\n\n // Check transactions tags\n const isTagIncludedInSearch = transaction.tags.some((guid) =>\n isIncludedInSearch(searchFilter, tags.find((tag) => tag.guid === guid)?.name),\n )\n\n const date = fromUnixTime(transaction.date)\n return (\n isIncludedInSearch(searchFilter, transaction.payee) ||\n isIncludedInSearch(searchFilter, transaction.feed_description) ||\n isIncludedInSearch(searchFilter, transaction.category) ||\n isIncludedInSearch(searchFilter, formatDate(date, DATE_FORMATS_INTL.MONTH)) ||\n isIncludedInSearch(searchFilter, formatDate(date, DATE_FORMATS_INTL.DAY)) ||\n isIncludedInSearch(searchFilter, formatDate(date, DATE_FORMATS_INTL.FULL_MONTH_DAY)) ||\n isIncludedInSearch(searchFilter, formatDate(date, DATE_FORMATS_INTL.MONTH_DAY_YEAR)) ||\n isIncludedInSearch(searchFilter, format(date, ORDINAL_DATE_FORMAT)) ||\n isIncludedInSearch(searchFilter, transaction.account) ||\n isIncludedInSearch(searchFilter, `${transaction.amount}`) ||\n isIncludedInSearch(searchFilter, transaction.memo) ||\n isTagIncludedInSearch\n )\n })\n )\n}\n\nconst sortTransactions = (\n transactions: Transaction[],\n sortColumn: string,\n sortDirection: string,\n) => {\n return [...transactions].sort((a: Transaction, b: Transaction) => {\n const column = sortColumn as keyof Transaction\n const sortCompare = (a[column] || '') > (b[column] || '')\n\n let sortASC = sortCompare ? -1 : 1\n let sortDESC = sortCompare ? 1 : -1\n\n if (sortColumn === COLUMN_NAMES.DATE || sortColumn === COLUMN_NAMES.AMOUNT) {\n sortASC = sortCompare ? 1 : -1\n sortDESC = sortCompare ? -1 : 1\n }\n\n return sortDirection === TABLE_CONST.ASC ? sortASC : sortDESC\n })\n}\n\n/**\n * Determines if a value is included within the terms set in the search bar\n */\nconst isIncludedInSearch = (searchFilter: string, value: string | null | undefined) => {\n const lowerCasedTerms = searchFilter.toLowerCase().split(' ')\n const lowerCasedValue = value?.toString().toLowerCase() ?? ''\n\n return lowerCasedTerms.every((filter) => lowerCasedValue.indexOf(filter) > -1)\n}\n","import { makeAutoObservable } from 'mobx'\nimport { startOfMonth } from 'date-fns/startOfMonth'\nimport { endOfMonth } from 'date-fns/endOfMonth'\n\nimport type { Transaction } from '../../common'\n\nimport { DEFAULT_TRANSACTION } from '../constants/Transaction'\n\nexport class UiStore {\n beginDate = startOfMonth(new Date())\n endDate = endOfMonth(new Date())\n\n expandedSplits = [] as string[]\n isInitialized = false\n height = 550\n width = 1000\n shouldDisableDrawerScroll = false\n\n searchValue = ''\n selectedAccountGuids = [] as string[]\n\n manualTransaction: Transaction = DEFAULT_TRANSACTION\n isAmountValid = false\n\n showInsights = false\n\n constructor() {\n makeAutoObservable(this)\n }\n\n setDateRange = (beginDate: Date, endDate: Date) => {\n this.beginDate = beginDate\n this.endDate = endDate\n }\n\n setIsInitialized = (isInitialized: boolean) => (this.isInitialized = isInitialized)\n\n setIsAmountValid = (valid: boolean) => (this.isAmountValid = valid)\n\n setSearchValue = (searchValue: string) => (this.searchValue = searchValue)\n\n setSelectedAccountGuids = (accountGuids: string[]) => (this.selectedAccountGuids = accountGuids)\n\n setShouldDisableDrawerScroll = (shouldDisable: boolean) =>\n (this.shouldDisableDrawerScroll = shouldDisable)\n\n setShowInsights = (showInsights: boolean) => {\n this.showInsights = showInsights\n }\n\n setSize = (height: number, width: number) => {\n this.height = height\n this.width = width\n }\n\n toggleSplit = (guid: string) => {\n const expandedSplits = [...this.expandedSplits]\n const index = this.expandedSplits.findIndex((splitGuid) => splitGuid === guid)\n\n if (index >= 0) {\n expandedSplits.splice(index, 1)\n } else {\n expandedSplits.push(guid)\n }\n\n this.expandedSplits = expandedSplits\n }\n\n updateManualTransaction = (manualTransaction: Transaction) => {\n this.manualTransaction = manualTransaction\n }\n}\n","import { makeAutoObservable, runInAction } from 'mobx'\nimport { getUnixTime } from 'date-fns/getUnixTime'\nimport { endOfToday } from 'date-fns/endOfToday'\nimport { formatISO } from 'date-fns/formatISO'\nimport { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { isBefore } from 'date-fns/isBefore'\nimport { startOfMonth } from 'date-fns/startOfMonth'\nimport { startOfToday } from 'date-fns/startOfToday'\nimport { subDays } from 'date-fns/subDays'\n\nimport { TABLE_CONST } from '../../common/constants/Table'\n\nimport { BeatApi } from '../../common'\nimport type { Beat, GlobalStore, Tag, Tagging, Transaction, TransactionRule } from '../../common'\n\nimport { buildDetailedTransactions } from '../utils/buildDetailedTransactions'\nimport { onAnalyticEvent } from '../analytics'\nimport { TransactionApi } from '../api/TransactionApi'\nimport { COLUMN_NAMES } from '../constants/TransactionsTable'\nimport { sortAndFilterTransactions } from '../utils/sortAndFilterTransactions'\nimport { UiStore } from './UiStore'\n\nexport type TransactionFilter = {\n accounts?: string[]\n dateRange?: { start: Date; end: Date }\n custom?: (value: Transaction) => boolean\n searchTerm?: string\n}\n\nexport class TransactionStore {\n api = new TransactionApi('/', '')\n beatApi = new BeatApi('/', '')\n\n globalStore: GlobalStore\n uiStore: UiStore\n\n isLoading = true\n taggings: Tagging[] = []\n tags: Tag[] = []\n transactionRules: TransactionRule[] = []\n transactions: Transaction[] = []\n\n associatedBeats: Beat[] = []\n\n cachedStartDate: Date = subDays(startOfToday(), 90)\n\n onAnalyticEvent = onAnalyticEvent\n sortColumn = COLUMN_NAMES.DATE\n sortDirection = TABLE_CONST.DESC\n\n filter: TransactionFilter = {}\n\n constructor(globalStore: GlobalStore) {\n this.globalStore = globalStore\n this.uiStore = new UiStore()\n\n makeAutoObservable(this)\n }\n\n initialize = async (endpoint: string, token: string) => {\n this.api = new TransactionApi(endpoint, token)\n this.beatApi = new BeatApi(endpoint, token)\n\n Promise.all([\n this.loadAssociatedBeats(startOfMonth(new Date())),\n this.loadTags(),\n this.loadTaggings(),\n this.loadTransactionRules(),\n // By default loads 90 days of transactions\n this.loadTransactions(),\n ]).then(() => this.uiStore.setIsInitialized(true))\n }\n\n get sortedTransactions(): Transaction[] {\n return sortAndFilterTransactions(\n this.filter,\n this.uiStore.expandedSplits,\n this.sortColumn,\n this.sortDirection,\n this.tags,\n this.transactions,\n )\n }\n\n addTag = async (name: string) => {\n await this.api.addTag({ name } as Tag)\n await this.loadTags()\n }\n\n addTagging = async (tagGuid: string, transactionGuid: string) => {\n await this.api.addTagging({\n tag_guid: tagGuid,\n transaction_guid: transactionGuid,\n } as Tagging)\n }\n\n addOrUpdateTransactionRule = async (categoryGuid: string, transaction: Transaction) => {\n const existingRule = this.transactionRules.find(\n (rule: TransactionRule) => rule.guid === transaction.user_transaction_rule_guid,\n ) as TransactionRule | undefined\n\n if (existingRule) {\n await this.api.updateTransactionRule({\n ...existingRule,\n category_guid: categoryGuid,\n description: transaction.description,\n } as TransactionRule)\n } else {\n await this.api.addTransactionRule({\n category_guid: categoryGuid,\n description: transaction.description,\n match_description: transaction.description,\n } as TransactionRule)\n }\n await this.loadTransactionRules()\n }\n\n addTransaction = async (transaction: Transaction) => {\n const newTransaction = await this.api.addTransaction(transaction)\n\n if (newTransaction) {\n runInAction(\n () =>\n (this.transactions = this.augmentTransactions([newTransaction, ...this.transactions])),\n )\n }\n }\n\n augmentTransactions = (transactions: Transaction[]) => {\n return buildDetailedTransactions(\n transactions,\n this.globalStore.accountStore.accounts,\n this.globalStore.categoryStore.categories,\n this.taggings,\n )\n }\n\n loadAssociatedBeats = async (fromDate?: Date) => {\n const fromDateISO = fromDate ? formatISO(fromDate, { representation: 'date' }) : undefined\n const beats = await this.beatApi.getBeatsWithAssociatedTransaction(fromDateISO)\n runInAction(() => (this.associatedBeats = beats))\n }\n\n loadTags = async () => {\n const tags = await this.api.getTags()\n runInAction(() => (this.tags = tags))\n }\n\n loadTaggings = async () => {\n const taggings = await this.api.getTaggings()\n runInAction(() => (this.taggings = taggings))\n }\n\n loadTransactionRules = async () => {\n const transactionRules = await this.api.getTransactionRules()\n runInAction(() => (this.transactionRules = transactionRules))\n }\n\n loadTransactions = async (\n startDate: Date = this.cachedStartDate,\n endDate: Date = endOfToday(),\n ) => {\n this.setIsLoading(true)\n this.transactions = []\n\n try {\n const transactions = await this.api.getTransactionsByDateRange(\n getUnixTime(startDate),\n getUnixTime(endDate),\n )\n runInAction(() => {\n this.transactions = this.augmentTransactions(transactions)\n })\n } catch (error) {\n console.error(`Error occurred while loading transactions: ${error}`)\n }\n this.setIsLoading(false)\n }\n\n // DEPRECATED\n loadTransactionsByDateRange = async (endDate: number, startDate: number) => {\n console.warn('DEPRECATED: loadTransactionsByDateRange will be removed')\n this.setFilter({\n ...this.filter,\n dateRange: { start: fromUnixTime(startDate), end: fromUnixTime(endDate) },\n })\n }\n\n removeTag = async (tagGuid: string) => {\n await this.api.removeTag(tagGuid)\n await this.loadTags()\n }\n\n removeTagging = async (taggingGuid: string) => {\n await this.api.removeTagging(taggingGuid)\n }\n\n removeTransaction = async (transactionGuid: string) => {\n await this.api.removeTransaction(transactionGuid)\n\n const index = this.transactions.findIndex((t: Transaction) => t.guid === transactionGuid)\n\n if (index >= 0) {\n const updatedTransactions = [...this.transactions]\n updatedTransactions.splice(index, 1)\n runInAction(() => (this.transactions = updatedTransactions))\n }\n }\n\n setFilter = (filter: TransactionFilter) => {\n this.filter = filter\n\n // Only reload transactions if new start date is prior to the current cached start date\n // Cached date range end date is always today\n if (filter.dateRange && isBefore(filter.dateRange.start, this.cachedStartDate)) {\n this.loadTransactions(filter.dateRange.start, endOfToday()).then(() => {\n if (filter.dateRange) {\n this.cachedStartDate = filter.dateRange.start\n }\n })\n }\n }\n\n setIsLoading = (isLoading: boolean) => (this.isLoading = isLoading)\n\n setSortData = (sortColumn: string, sortDirection: string) => {\n this.sortColumn = sortColumn\n this.sortDirection = sortDirection\n }\n\n splitTransaction = async (transaction: Transaction, splits: Transaction[]) => {\n const updatedTransaction = await this.api.updateTransaction(transaction)\n const children = [] as Transaction[]\n\n for (let i = 0; i < splits.length; i++) {\n const child = await this.api.addTransaction(splits[i])\n children.push(child)\n }\n\n const index = this.transactions.findIndex((t: Transaction) => t.guid === transaction.guid)\n\n if (index >= 0) {\n runInAction(\n () =>\n (this.transactions = this.augmentTransactions([\n ...this.transactions.slice(0, index),\n updatedTransaction,\n ...this.transactions.slice(index + 1),\n ...children,\n ])),\n )\n }\n }\n\n unSplitTransaction = async (guid: string) => {\n const children = this.transactions.filter((t) => t.parent_guid === guid)\n\n await this.api.removeTransactionSplit(guid)\n\n // Remove children\n const transactions = [...this.transactions]\n children.forEach((child) => {\n const index = transactions.findIndex((t) => t.guid === child.guid)\n\n if (index >= 0) {\n transactions.splice(index, 1)\n }\n })\n\n // Update parent\n const index = transactions.findIndex((t) => t.guid === guid)\n const transaction = transactions[index]\n transaction.has_been_split = false\n if (index >= 0) {\n runInAction(\n () =>\n (this.transactions = [\n ...transactions.slice(0, index),\n transaction,\n ...transactions.slice(index + 1),\n ]),\n )\n }\n }\n\n updateTaggings = async (tagGuids: string[], transactionGuid: string) => {\n // Add tags that don't current exist in taggings\n for (let i = 0; i < tagGuids.length; i++) {\n const tagGuid = tagGuids[i]\n if (!this.taggings.some((tagging: Tagging) => tagging.tag_guid === tagGuid)) {\n await this.addTagging(tagGuid, transactionGuid)\n }\n }\n\n // Remove tags that are in taggings but not in tagGuids\n for (let i = 0; i < this.taggings.length; i++) {\n const tagging = this.taggings[i]\n if (!tagGuids.includes(tagging.tag_guid)) {\n await this.removeTagging(tagging.guid)\n }\n }\n\n await this.loadTaggings()\n }\n\n updateTag = async (tag: Tag) => {\n await this.api.updateTag(tag)\n await this.loadTags()\n }\n\n updateTransaction = async (transaction: Transaction) => {\n const updatedTransaction = await this.api.updateTransaction(transaction)\n\n const index = this.transactions.findIndex((t: Transaction) => t.guid === transaction.guid)\n\n if (index >= 0) {\n runInAction(\n () =>\n (this.transactions = this.augmentTransactions([\n ...this.transactions.slice(0, index),\n updatedTransaction,\n ...this.transactions.slice(index + 1),\n ])),\n )\n }\n }\n}\n"],"names":["TransactionApi","endpoint","token","Fetch","tag","ApiEndpoints","data","tagging","transaction","rule","item","startDate","endDate","accountGuids","beginDate","accountsList","acc","guid","i","guids","categoryGuid","categoryGuids","url","TABLE_CONST","buildDetailedTransactions","transactions","accounts","categories","taggings","accountsMap","account","categoriesMap","category","taggingsMap","transaction_guid","tag_guid","tags","CategoryGuids","TransactionStatus","onAnalyticEvent","event","session","ANALYTICS_EVENTS","COLUMN_NAMES","UNCATEGORIZED_TERM","sortAndFilterTransactions","filter","expandedSplits","sortColumn","sortDirection","filteredTransactions","filterTransactions","sortedTransactions","sortTransactions","index","t","children","dateRange","startOfMonth","startOfToday","endOfToday","custom","searchFilter","getUnixTime","isTagIncludedInSearch","isIncludedInSearch","date","fromUnixTime","formatDate","DATE_FORMATS_INTL","format","ORDINAL_DATE_FORMAT","a","b","column","sortCompare","sortASC","sortDESC","value","lowerCasedTerms","lowerCasedValue","UiStore","endOfMonth","DEFAULT_TRANSACTION","makeAutoObservable","isInitialized","valid","searchValue","shouldDisable","showInsights","height","width","splitGuid","manualTransaction","TransactionStore","BeatApi","subDays","globalStore","name","tagGuid","transactionGuid","existingRule","newTransaction","runInAction","fromDate","fromDateISO","formatISO","beats","transactionRules","error","taggingGuid","updatedTransactions","isBefore","isLoading","splits","updatedTransaction","child","tagGuids"],"mappings":"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"}
|