@mx-cartographer/experiences 9.0.16 → 9.0.17-alpha

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.
Files changed (213) hide show
  1. package/CHANGELOG.md +4 -5
  2. package/dist/Account-DR7Plrqy.mjs +1 -0
  3. package/dist/Account-DR7Plrqy.mjs.map +1 -0
  4. package/dist/{AccountDetailsDrawer-BuxLfuIm.mjs → AccountDetailsDrawer-CZPeLsCq.mjs} +4 -3
  5. package/dist/AccountDetailsDrawer-CZPeLsCq.mjs.map +1 -0
  6. package/dist/{AccountDetailsHeader-ByGNPZpO.mjs → AccountDetailsHeader-BvbCUQSS.mjs} +3 -0
  7. package/dist/AccountDetailsHeader-BvbCUQSS.mjs.map +1 -0
  8. package/dist/AccountUtils-B8ZzWI-d.mjs +1 -0
  9. package/dist/AccountUtils-B8ZzWI-d.mjs.map +1 -0
  10. package/dist/Analytics-CkYXKvco.mjs +1 -0
  11. package/dist/Analytics-CkYXKvco.mjs.map +1 -0
  12. package/dist/Analytics-WeZYytR0.mjs +1 -0
  13. package/dist/Analytics-WeZYytR0.mjs.map +1 -0
  14. package/dist/ApiEndpoints-DXwIYNUV.mjs +1 -0
  15. package/dist/ApiEndpoints-DXwIYNUV.mjs.map +1 -0
  16. package/dist/BeatMaterialIcon-1KOfRZrA.mjs +1 -0
  17. package/dist/BeatMaterialIcon-1KOfRZrA.mjs.map +1 -0
  18. package/dist/BudgetUtil-Bg2AQJpQ.mjs +1 -0
  19. package/dist/BudgetUtil-Bg2AQJpQ.mjs.map +1 -0
  20. package/dist/Category-DEKZGLYe.mjs +1 -0
  21. package/dist/Category-DEKZGLYe.mjs.map +1 -0
  22. package/dist/CategorySelectorDrawer-NJsFsKP1.mjs +1 -0
  23. package/dist/CategorySelectorDrawer-NJsFsKP1.mjs.map +1 -0
  24. package/dist/Connect-BH0Pt6zc.mjs +1 -0
  25. package/dist/Connect-BH0Pt6zc.mjs.map +1 -0
  26. package/dist/ConnectCard-D7uxoH5Y.mjs +1 -0
  27. package/dist/ConnectCard-D7uxoH5Y.mjs.map +1 -0
  28. package/dist/ConnectDrawer-CW4LA3H3.mjs +1 -0
  29. package/dist/ConnectDrawer-CW4LA3H3.mjs.map +1 -0
  30. package/dist/ConnectionsDrawer-CZU9ku-k.mjs +1 -0
  31. package/dist/ConnectionsDrawer-CZU9ku-k.mjs.map +1 -0
  32. package/dist/CurrencyDialog-DumQCTPO.mjs +1 -0
  33. package/dist/CurrencyDialog-DumQCTPO.mjs.map +1 -0
  34. package/dist/CurrencyInput-DaGEQaLW.mjs +1 -0
  35. package/dist/CurrencyInput-DaGEQaLW.mjs.map +1 -0
  36. package/dist/CurrencyText-CCbE6MmF.mjs +1 -0
  37. package/dist/CurrencyText-CCbE6MmF.mjs.map +1 -0
  38. package/dist/DateFormats-HudZ3Bjs.mjs +1 -0
  39. package/dist/DateFormats-HudZ3Bjs.mjs.map +1 -0
  40. package/dist/DateUtil-CzBmbjmA.mjs +1 -0
  41. package/dist/DateUtil-CzBmbjmA.mjs.map +1 -0
  42. package/dist/DebtUtils-i4pI2Uoe.mjs +1 -0
  43. package/dist/DebtUtils-i4pI2Uoe.mjs.map +1 -0
  44. package/dist/Dialog-Bvd2n8hz.mjs +1 -0
  45. package/dist/Dialog-Bvd2n8hz.mjs.map +1 -0
  46. package/dist/Donut-SzzfZDHF.mjs +1 -0
  47. package/dist/Donut-SzzfZDHF.mjs.map +1 -0
  48. package/dist/Drawer-DsnW2o0v.mjs +1 -0
  49. package/dist/Drawer-DsnW2o0v.mjs.map +1 -0
  50. package/dist/{EmbeddedCard-BxgB26dd.mjs → EmbeddedCard-DH8vQ3qN.mjs} +184 -181
  51. package/dist/EmbeddedCard-DH8vQ3qN.mjs.map +1 -0
  52. package/dist/EmptyState-CJUDc3kD.mjs +1 -0
  53. package/dist/EmptyState-CJUDc3kD.mjs.map +1 -0
  54. package/dist/Error-Dtw6yxkf.mjs +1 -0
  55. package/dist/Error-Dtw6yxkf.mjs.map +1 -0
  56. package/dist/ErrorBoundary-CsdOcnJ9.mjs +1 -0
  57. package/dist/ErrorBoundary-CsdOcnJ9.mjs.map +1 -0
  58. package/dist/{ExportCsvAction-BV69DnpC.mjs → ExportCsvAction-C9KWH3Az.mjs} +2 -1
  59. package/dist/ExportCsvAction-C9KWH3Az.mjs.map +1 -0
  60. package/dist/GlobalAccountFilter-BhzR5Vb1.mjs +1 -0
  61. package/dist/GlobalAccountFilter-BhzR5Vb1.mjs.map +1 -0
  62. package/dist/GlobalCopyApi-wcnDUzMV.mjs +1 -0
  63. package/dist/GlobalCopyApi-wcnDUzMV.mjs.map +1 -0
  64. package/dist/GoalsUtil-C9EnLWvC.mjs +1 -0
  65. package/dist/GoalsUtil-C9EnLWvC.mjs.map +1 -0
  66. package/dist/HeaderCell-P8w6CmfO.mjs +1 -0
  67. package/dist/HeaderCell-P8w6CmfO.mjs.map +1 -0
  68. package/dist/Help-CkQTjORd.mjs +1 -0
  69. package/dist/Help-CkQTjORd.mjs.map +1 -0
  70. package/dist/{Help-BMCejaQr.mjs → Help-aERwhajy.mjs} +3 -2
  71. package/dist/Help-aERwhajy.mjs.map +1 -0
  72. package/dist/IconBacking-DgT8DCeh.mjs +1 -0
  73. package/dist/IconBacking-DgT8DCeh.mjs.map +1 -0
  74. package/dist/InformationTooltip-4su8bn1e.mjs +1 -0
  75. package/dist/InformationTooltip-4su8bn1e.mjs.map +1 -0
  76. package/dist/InvestmentUtil-BItV7uEs.mjs +1 -0
  77. package/dist/InvestmentUtil-BItV7uEs.mjs.map +1 -0
  78. package/dist/LineChart-CUfiH86G.mjs +1 -0
  79. package/dist/LineChart-CUfiH86G.mjs.map +1 -0
  80. package/dist/ListItemAction-BqUCLj_w.mjs +1 -0
  81. package/dist/ListItemAction-BqUCLj_w.mjs.map +1 -0
  82. package/dist/ListItemRow-kH1rn8Xu.mjs +1 -0
  83. package/dist/ListItemRow-kH1rn8Xu.mjs.map +1 -0
  84. package/dist/ListItemWrapper-DRse79Iu.mjs +44 -0
  85. package/dist/ListItemWrapper-DRse79Iu.mjs.map +1 -0
  86. package/dist/Loader-CxeBwuPG.mjs +1 -0
  87. package/dist/Loader-CxeBwuPG.mjs.map +1 -0
  88. package/dist/Localization-DnoVyBNK.mjs +1 -0
  89. package/dist/Localization-DnoVyBNK.mjs.map +1 -0
  90. package/dist/{ManageIncome-BadwsHRL.mjs → ManageIncome-Dcsnnz86.mjs} +9 -8
  91. package/dist/ManageIncome-Dcsnnz86.mjs.map +1 -0
  92. package/dist/MicroWidgetContainer-B2NnKBgW.mjs +1 -0
  93. package/dist/MicroWidgetContainer-B2NnKBgW.mjs.map +1 -0
  94. package/dist/MiniWidgetContainer-Bmv_WeUd.mjs +1 -0
  95. package/dist/MiniWidgetContainer-Bmv_WeUd.mjs.map +1 -0
  96. package/dist/NetWorthUtils-DfSH3z70.mjs +1 -0
  97. package/dist/NetWorthUtils-DfSH3z70.mjs.map +1 -0
  98. package/dist/Notification-DTNYSd8P.mjs +1 -0
  99. package/dist/Notification-DTNYSd8P.mjs.map +1 -0
  100. package/dist/NotificationSettings-CW7okUrk.mjs +1 -0
  101. package/dist/NotificationSettings-CW7okUrk.mjs.map +1 -0
  102. package/dist/NotificationUtils-BRGFTePr.mjs +1 -0
  103. package/dist/NotificationUtils-BRGFTePr.mjs.map +1 -0
  104. package/dist/NumberFormatting--XMeeBfr.mjs +1 -0
  105. package/dist/NumberFormatting--XMeeBfr.mjs.map +1 -0
  106. package/dist/OriginalBalanceAction-YrvxBYAl.mjs +1 -0
  107. package/dist/OriginalBalanceAction-YrvxBYAl.mjs.map +1 -0
  108. package/dist/{RecurringSettings-CGZiV-Ie.mjs → RecurringSettings-D8hBbXV_.mjs} +2 -1
  109. package/dist/RecurringSettings-D8hBbXV_.mjs.map +1 -0
  110. package/dist/RecurringTransactionsUtil-CHWmqvW5.mjs +1 -0
  111. package/dist/RecurringTransactionsUtil-CHWmqvW5.mjs.map +1 -0
  112. package/dist/ResponsiveButton-CC9F_Ezk.mjs +1 -0
  113. package/dist/ResponsiveButton-CC9F_Ezk.mjs.map +1 -0
  114. package/dist/SearchBox-Cpgu_gdO.mjs +1 -0
  115. package/dist/SearchBox-Cpgu_gdO.mjs.map +1 -0
  116. package/dist/Select-CSpkK5cR.mjs +1 -0
  117. package/dist/Select-CSpkK5cR.mjs.map +1 -0
  118. package/dist/SelectionBox-B4xELRgp.mjs +1 -0
  119. package/dist/SelectionBox-B4xELRgp.mjs.map +1 -0
  120. package/dist/SingleSegmentDonut-7Uy6VEld.mjs +1 -0
  121. package/dist/SingleSegmentDonut-7Uy6VEld.mjs.map +1 -0
  122. package/dist/Sizes-DISGrlUg.mjs +1 -0
  123. package/dist/Sizes-DISGrlUg.mjs.map +1 -0
  124. package/dist/SkeletonLoader-BaNboJjD.mjs +1 -0
  125. package/dist/SkeletonLoader-BaNboJjD.mjs.map +1 -0
  126. package/dist/SpendingData-Fii_xATx.mjs +1 -0
  127. package/dist/SpendingData-Fii_xATx.mjs.map +1 -0
  128. package/dist/SpendingLegend-CxvNOg3c.mjs +1 -0
  129. package/dist/SpendingLegend-CxvNOg3c.mjs.map +1 -0
  130. package/dist/StatusBar-CPfSXe80.mjs +1 -0
  131. package/dist/StatusBar-CPfSXe80.mjs.map +1 -0
  132. package/dist/TabContentContainer-B0eYJP5p.mjs +1 -0
  133. package/dist/TabContentContainer-B0eYJP5p.mjs.map +1 -0
  134. package/dist/ToggleListItem-Dl1lXNwj.mjs +1 -0
  135. package/dist/ToggleListItem-Dl1lXNwj.mjs.map +1 -0
  136. package/dist/{TransactionDetails-DQ_eE7M4.mjs → TransactionDetails-roZ5xLq8.mjs} +2 -1
  137. package/dist/TransactionDetails-roZ5xLq8.mjs.map +1 -0
  138. package/dist/TransactionUtils-BphBJBbU.mjs +1 -0
  139. package/dist/TransactionUtils-BphBJBbU.mjs.map +1 -0
  140. package/dist/TrendsUtil-D9z3kIj_.mjs +1 -0
  141. package/dist/TrendsUtil-D9z3kIj_.mjs.map +1 -0
  142. package/dist/UserStore-C1fdL3Iu.mjs +1 -0
  143. package/dist/UserStore-C1fdL3Iu.mjs.map +1 -0
  144. package/dist/{ViewMoreMicroCard-fnwE0hqd.mjs → ViewMoreMicroCard-Dxghxphh.mjs} +352 -355
  145. package/dist/ViewMoreMicroCard-Dxghxphh.mjs.map +1 -0
  146. package/dist/WidgetContainer-DJnp6t6c.mjs +1 -0
  147. package/dist/WidgetContainer-DJnp6t6c.mjs.map +1 -0
  148. package/dist/accounts/index.es.js +5 -4
  149. package/dist/accounts/index.es.js.map +1 -0
  150. package/dist/analytics/index.es.js +1 -0
  151. package/dist/analytics/index.es.js.map +1 -0
  152. package/dist/budgets/index.es.js +4 -3
  153. package/dist/budgets/index.es.js.map +1 -0
  154. package/dist/cashflow/index.es.js +5 -4
  155. package/dist/cashflow/index.es.js.map +1 -0
  156. package/dist/categories/index.es.js +1 -0
  157. package/dist/categories/index.es.js.map +1 -0
  158. package/dist/common/components/ListItemWrapper.d.ts +2 -1
  159. package/dist/common/index.es.js +2 -1
  160. package/dist/common/index.es.js.map +1 -0
  161. package/dist/core/index.es.js +1 -0
  162. package/dist/core/index.es.js.map +1 -0
  163. package/dist/dashboard/index.es.js +1 -0
  164. package/dist/dashboard/index.es.js.map +1 -0
  165. package/dist/debts/index.es.js +64 -63
  166. package/dist/debts/index.es.js.map +1 -0
  167. package/dist/finstrong/index.es.js +6 -5
  168. package/dist/finstrong/index.es.js.map +1 -0
  169. package/dist/goals/index.es.js +1 -0
  170. package/dist/goals/index.es.js.map +1 -0
  171. package/dist/help/index.es.js +2 -1
  172. package/dist/help/index.es.js.map +1 -0
  173. package/dist/hooks-97sNJ_lf.mjs +1 -0
  174. package/dist/hooks-97sNJ_lf.mjs.map +1 -0
  175. package/dist/insights/index.es.js +3 -2
  176. package/dist/insights/index.es.js.map +1 -0
  177. package/dist/investments/index.es.js +1 -0
  178. package/dist/investments/index.es.js.map +1 -0
  179. package/dist/merchants/index.es.js +1 -0
  180. package/dist/merchants/index.es.js.map +1 -0
  181. package/dist/microinsights/index.es.js +2 -1
  182. package/dist/microinsights/index.es.js.map +1 -0
  183. package/dist/networth/index.es.js +1 -0
  184. package/dist/networth/index.es.js.map +1 -0
  185. package/dist/notifications/index.es.js +1 -0
  186. package/dist/notifications/index.es.js.map +1 -0
  187. package/dist/recurringtransactions/index.es.js +152 -138
  188. package/dist/recurringtransactions/index.es.js.map +1 -0
  189. package/dist/settings/index.es.js +2 -1
  190. package/dist/settings/index.es.js.map +1 -0
  191. package/dist/spending/index.es.js +3 -2
  192. package/dist/spending/index.es.js.map +1 -0
  193. package/dist/transactions/components/shared/transactionlist/TransactionRow.d.ts +1 -0
  194. package/dist/transactions/index.es.js +6 -5
  195. package/dist/transactions/index.es.js.map +1 -0
  196. package/dist/trends/index.es.js +5 -4
  197. package/dist/trends/index.es.js.map +1 -0
  198. package/dist/useAccountDisplayName-BsiXA0qf.mjs +1 -0
  199. package/dist/useAccountDisplayName-BsiXA0qf.mjs.map +1 -0
  200. package/dist/useAriaLive-MkYebyUR.mjs +1 -0
  201. package/dist/useAriaLive-MkYebyUR.mjs.map +1 -0
  202. package/dist/useDimensions-CeDR9V8N.mjs +1 -0
  203. package/dist/useDimensions-CeDR9V8N.mjs.map +1 -0
  204. package/dist/useInsightsEnabled-D5Sdm0TJ.mjs +1 -0
  205. package/dist/useInsightsEnabled-D5Sdm0TJ.mjs.map +1 -0
  206. package/dist/useScreenSize-mWpmnh5w.mjs +1 -0
  207. package/dist/useScreenSize-mWpmnh5w.mjs.map +1 -0
  208. package/dist/useWidgetLoadTimer-B0tB-yzL.mjs +1 -0
  209. package/dist/useWidgetLoadTimer-B0tB-yzL.mjs.map +1 -0
  210. package/package.json +6 -6
  211. package/dist/ListItemWrapper-BHIbqx7E.mjs +0 -42
  212. package/dist/insights/components/insights/P2pCategorization/_tests_/P2pCategorizationMultipleTransaction.test.d.ts +0 -0
  213. package/dist/insights/components/insights/P2pCategorization/_tests_/P2pCategorizationSingleTransaction.test.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategorySelectorDrawer-NJsFsKP1.mjs","sources":["../src/categories/context/hooks.ts","../src/categories/constants/OnClickEvents.ts","../src/categories/components/CustomCategories/CustomCategoryModal.tsx","../src/categories/components/CustomCategories/AddSubcategory.tsx","../src/categories/components/CustomCategories/RenameSubcategory.tsx","../src/categories/components/CustomCategories/DeleteSubcategory.tsx","../src/categories/components/SubcategoryRow.tsx","../src/categories/components/SubcategoryList.tsx","../src/categories/components/CategoryRow.tsx","../src/categories/components/CategoryList.tsx","../src/categories/components/CategorySelector.tsx","../src/categories/components/CategorySelectorDrawer.tsx"],"sourcesContent":["import React from 'react'\nimport { GlobalDataContext, useCategoryStore } from '../../common'\n\nexport const useCategoryUiStore = () => {\n const context = React.useContext(GlobalDataContext)\n\n if (!context) {\n throw new Error('useCategoryUiStore() must be used within the GlobalDataContext')\n }\n\n return useCategoryStore().uiStore\n}\n","export const ON_CLICK_EVENTS = {\n ON_CATEGORY_EXPANDED: 'onCategoryExpanded',\n ON_CATEGORY_COLLAPSED: 'onCategoryCollapsed',\n ON_CATEGORY_SELECTED: 'onCategorySelected',\n ON_SUBCATEGORY_ADD_CLICK: 'onSubcategoryAddClick',\n ON_SUBCATEGORY_ADD_CANCEL_CLICK: 'onSubcategoryAddCancelClick',\n ON_SUBCATEGORY_ADDED: 'onSubcategoryAdded',\n ON_SUBCATEGORY_EDIT_CLICK: 'onSubcategoryEditClick',\n ON_SUBCATEGORY_EDIT_CANCEL_CLICK: 'onSubcategoryEditCancelClick',\n ON_SUBCATEGORY_DELETE_CLICK: 'onSubcategoryDeleteClick',\n ON_SUBCATEGORY_DELETED: 'onSubcategoryDeleted',\n ON_SUBCATEGORY_SAVED: 'onSubcategorySaved',\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { Text } from '@mxenabled/mxui'\nimport { TextField } from '@mxenabled/mxui'\n\nimport { Dialog, useGlobalCopyStore } from '../../../common'\nimport type { DynamicCopyElement } from '../../../core'\nimport DialogContent from '@mui/material/DialogContent'\n\nimport { useCategoryUiStore } from '../../context/hooks'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\nexport enum CustomCategoryModalType {\n ADD = 'add',\n EDIT = 'edit',\n DELETE = 'delete',\n}\n\ninterface CustomCategoryModalProps {\n categoryName?: string\n onClose: () => void\n onSave: (name: string) => void\n isOpen: boolean\n type: CustomCategoryModalType\n}\n\nconst CustomCategoryModal: React.FC<CustomCategoryModalProps> = ({\n categoryName = '',\n onClose,\n onSave,\n isOpen,\n type,\n}) => {\n const [name, setName] = React.useState(categoryName)\n const { categories: copy } = useGlobalCopyStore()\n const { setShouldDisableDrawerScroll } = useCategoryUiStore()\n\n let headingText = ''\n let primaryText: DynamicCopyElement = []\n\n const isDeleteType = type === CustomCategoryModalType.DELETE\n const displayName = categoryName.length > 50 ? `${categoryName.slice(0, 50)}...` : categoryName\n const inputAriaLabel =\n type === CustomCategoryModalType.EDIT\n ? (buildDynamicCopy(copy.edit_subcategory_aria, displayName) as string)\n : copy.add_subcategory_aria\n\n switch (type) {\n case CustomCategoryModalType.ADD:\n headingText = copy.add_subcategory_title\n break\n case CustomCategoryModalType.EDIT:\n headingText = buildDynamicCopy(copy.edit_subcategory_title, displayName) as string\n break\n case CustomCategoryModalType.DELETE:\n headingText = copy.delete_subcategory_heading\n primaryText = buildDynamicCopy(\n copy.all_transactions_in_this_subcategory,\n <Text bold={true} component=\"span\">\n {buildDynamicCopy(copy.all_parent_category, displayName) as string}\n </Text>,\n ) as DynamicCopyElement\n break\n }\n\n return (\n <Dialog\n copy={{\n title: headingText,\n }}\n disablePrimaryButton={!name}\n isOpen={isOpen}\n onClose={() => {\n setShouldDisableDrawerScroll(false)\n onClose()\n }}\n onPrimaryAction={() => {\n setShouldDisableDrawerScroll(false)\n onSave(name)\n }}\n >\n <DialogContent>\n {isDeleteType ? (\n (primaryText as React.ReactNode)\n ) : (\n <TextField\n label={inputAriaLabel}\n name=\"modify-subcategory\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setName(e.target.value)}\n placeholder={copy.input_placeholder}\n slotProps={{\n htmlInput: {\n 'aria-label': inputAriaLabel,\n maxLength: 50,\n },\n }}\n sx={{ width: '100%' }}\n truncate={true}\n value={name}\n />\n )}\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(CustomCategoryModal)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport type { Category } from '../../../core'\n\nimport CustomCategoryModal, { CustomCategoryModalType } from './CustomCategoryModal'\n\nimport { ON_CLICK_EVENTS } from '../../constants/OnClickEvents'\nimport { useCategoryStore, useEvent, useGlobalCopyStore } from '../../../common'\nimport { useCategoryUiStore } from '../../context/hooks'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface AddSubcategoryProps {\n announce: (message: string) => void\n parentCategory: Category\n}\n\nconst AddSubcategory: React.FC<AddSubcategoryProps> = ({ announce, parentCategory }) => {\n const [showAdd, setShowAdd] = React.useState(false)\n const { addCategory } = useCategoryStore()\n const { categories: copy } = useGlobalCopyStore()\n const { onEvent } = useEvent()\n const { setShouldDisableDrawerScroll } = useCategoryUiStore()\n\n const handleAdd = async (name: string) => {\n await addCategory(name.trim(), parentCategory.guid)\n announce(buildDynamicCopy(copy.add_subcategory_announcement, name) as string)\n onEvent(ON_CLICK_EVENTS.ON_SUBCATEGORY_ADDED)\n setShowAdd(false)\n }\n\n const handleAdding = async () => {\n onEvent(ON_CLICK_EVENTS.ON_SUBCATEGORY_ADD_CLICK)\n setShouldDisableDrawerScroll(true)\n setShowAdd(true)\n }\n\n const handleModalClose = () => {\n setShowAdd(false)\n onEvent(ON_CLICK_EVENTS.ON_SUBCATEGORY_ADD_CANCEL_CLICK)\n }\n\n return (\n <ListItem disableGutters={true} disablePadding={true}>\n <ListItemButton onClick={handleAdding} sx={{ ml: 60 }}>\n <ListItemText\n primary={copy.add_subcategory_button}\n slotProps={{ primary: { color: 'primary', fontWeight: 'normal', variant: 'body1' } }}\n />\n </ListItemButton>\n\n {showAdd && (\n <CustomCategoryModal\n isOpen={showAdd}\n onClose={handleModalClose}\n onSave={handleAdd}\n type={CustomCategoryModalType.ADD}\n />\n )}\n </ListItem>\n )\n}\n\nexport default observer(AddSubcategory)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport type { Category } from '../../../core'\n\nimport CustomCategoryModal from './CustomCategoryModal'\n\nimport { CustomCategoryModalType } from './CustomCategoryModal'\nimport { ON_CLICK_EVENTS } from '../../constants/OnClickEvents'\nimport { useCategoryStore, useEvent, useGlobalCopyStore } from '../../../common'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\ninterface RenameSubcategoryProps {\n announce: (message: string) => void\n setShowRename: (show: boolean) => void\n subCategory: Category\n showRename: boolean\n}\n\nconst RenameSubcategory: React.FC<RenameSubcategoryProps> = ({\n announce,\n setShowRename,\n subCategory,\n showRename,\n}) => {\n const { onEvent } = useEvent()\n const { updateCategory } = useCategoryStore()\n const { categories: copy } = useGlobalCopyStore()\n\n const handleRename = async (name: string) => {\n await updateCategory({ ...subCategory, name })\n announce(buildDynamicCopy(copy.edit_subcategory_announcement, subCategory.name, name) as string)\n onEvent(ON_CLICK_EVENTS.ON_SUBCATEGORY_SAVED)\n setShowRename(false)\n }\n\n const handleModalClose = () => {\n setShowRename(false)\n onEvent(ON_CLICK_EVENTS.ON_SUBCATEGORY_EDIT_CANCEL_CLICK)\n }\n\n return (\n <CustomCategoryModal\n categoryName={subCategory.name}\n isOpen={showRename}\n onClose={handleModalClose}\n onSave={handleRename}\n type={CustomCategoryModalType.EDIT}\n />\n )\n}\n\nexport default observer(RenameSubcategory)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport CustomCategoryModal, { CustomCategoryModalType } from './CustomCategoryModal'\n\nimport { useCategoryStore, useEvent, useGlobalCopyStore } from '../../../common'\nimport type { Category } from '../../../core'\n\nimport { ON_CLICK_EVENTS } from '../../constants/OnClickEvents'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface DeleteSubcategoryProps {\n announce: (message: string) => void\n parentCategory: Category\n showDelete: boolean\n setShowDelete: (isOpen: boolean) => void\n subCategory: Category\n}\n\nconst DeleteSubcategory: React.FC<DeleteSubcategoryProps> = ({\n announce,\n parentCategory,\n showDelete,\n setShowDelete,\n subCategory,\n}) => {\n const { onEvent } = useEvent()\n const { removeCategory } = useCategoryStore()\n const { categories: copy } = useGlobalCopyStore()\n\n const handleClose = () => {\n setShowDelete(false)\n onEvent(ON_CLICK_EVENTS.ON_SUBCATEGORY_DELETE_CLICK)\n }\n\n const handleDelete = async () => {\n await removeCategory(subCategory.guid)\n announce(buildDynamicCopy(copy.delete_subcategory_announcement, subCategory.name) as string)\n onEvent(ON_CLICK_EVENTS.ON_SUBCATEGORY_DELETED)\n setShowDelete(false)\n }\n\n return (\n <CustomCategoryModal\n categoryName={parentCategory.name}\n isOpen={showDelete}\n onClose={handleClose}\n onSave={handleDelete}\n type={CustomCategoryModalType.DELETE}\n />\n )\n}\n\nexport default observer(DeleteSubcategory)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Chip from '@mui/material/Chip'\nimport IconButton from '@mui/material/IconButton'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { CheckCircle, Delete, Edit } from '@mxenabled/mx-icons'\n\nimport type { Category } from '../../core'\n\nimport RenameSubcategory from './CustomCategories/RenameSubcategory'\nimport DeleteSubcategory from './CustomCategories/DeleteSubcategory'\n\nimport { useEvent, useGlobalCopyStore } from '../../common'\nimport { useCategoryUiStore } from '../context/hooks'\nimport { ON_CLICK_EVENTS } from '../constants/OnClickEvents'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\ninterface SubcategoryRowProps {\n announce: (message: string) => void\n parentCategory: Category\n subCategory: Category\n}\n\nconst SubcategoryRow: React.FC<SubcategoryRowProps> = ({\n announce,\n parentCategory,\n subCategory,\n}) => {\n const {\n onSelect,\n selectedGuid,\n setSelectedGuid,\n setShouldDisableDrawerScroll,\n showSelected,\n unselectable,\n unselectableText,\n } = useCategoryUiStore()\n const { categories: copy } = useGlobalCopyStore()\n const { onEvent } = useEvent()\n\n const [showRename, setShowRename] = React.useState(false)\n const [showDelete, setShowDelete] = React.useState(false)\n\n const isCustom = Boolean(subCategory.revision)\n const isSelected = subCategory.guid === selectedGuid\n const isSelectable = !unselectable.some((item) => item === subCategory.guid)\n const handleClick = () => {\n if (isSelectable) {\n // Internal state\n setSelectedGuid(subCategory.guid)\n // External notification\n onSelect(subCategory.guid)\n onEvent(ON_CLICK_EVENTS.ON_CATEGORY_SELECTED)\n }\n }\n\n return (\n <ListItem\n className=\"mx-cat-subcategory-row\"\n disableGutters={true}\n disablePadding={true}\n sx={{ pl: 58 }}\n >\n <ListItemButton\n aria-pressed={isSelected}\n color=\"secondary\"\n onClick={handleClick}\n sx={{ height: 44, minWidth: 0, overflow: 'hidden' }}\n >\n <ListItemText\n primary={subCategory.name}\n slotProps={{ primary: { fontWeight: 'normal', variant: 'body1', noWrap: true } }}\n />\n {showSelected && isSelected && <CheckCircle fontSize=\"small\" />}\n {!isSelectable && <Chip label={unselectableText} />}\n </ListItemButton>\n {isCustom && (\n <Box\n className={`mx-cat-subcategory-edit-container`}\n sx={{ marginRight: 24, flexShrink: 0 }}\n >\n <IconButton\n aria-label={buildDynamicCopy(copy.edit_subcategory_title, subCategory.name) as string}\n onClick={() => {\n setShowRename(true)\n setShouldDisableDrawerScroll(true)\n onEvent(ON_CLICK_EVENTS.ON_SUBCATEGORY_EDIT_CLICK)\n }}\n >\n <Edit color=\"secondary\" />\n </IconButton>\n <IconButton\n aria-label={buildDynamicCopy(copy.delete_subcategory_aria, subCategory.name) as string}\n edge=\"end\"\n onClick={() => {\n setShowDelete(true)\n setShouldDisableDrawerScroll(true)\n onEvent(ON_CLICK_EVENTS.ON_SUBCATEGORY_DELETE_CLICK)\n }}\n >\n <Delete color=\"secondary\" />\n </IconButton>\n </Box>\n )}\n {showDelete && (\n <DeleteSubcategory\n announce={announce}\n parentCategory={parentCategory}\n setShowDelete={setShowDelete}\n showDelete={showDelete}\n subCategory={subCategory}\n />\n )}\n {showRename && (\n <RenameSubcategory\n announce={announce}\n setShowRename={setShowRename}\n showRename={showRename}\n subCategory={subCategory}\n />\n )}\n </ListItem>\n )\n}\n\nexport default observer(SubcategoryRow)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Collapse from '@mui/material/Collapse'\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\n\nimport type { Category } from '../../core'\nimport AddSubcategory from './CustomCategories/AddSubcategory'\nimport SubcategoryRow from './SubcategoryRow'\nimport { useCategoryUiStore } from '../context/hooks'\nimport { useAriaLive } from '../../common/hooks/useAriaLive'\n\ninterface SubcategoryListProps {\n categories: Category[]\n parentCategory: Category\n}\n\nconst SubcategoryList: React.FC<SubcategoryListProps> = ({ categories, parentCategory }) => {\n const { expandedGuid, searchValue } = useCategoryUiStore()\n const { announce, ariaLive } = useAriaLive()\n const isExpanded = parentCategory.guid === expandedGuid\n const isFiltered = Boolean(searchValue)\n\n return (\n <Collapse\n in={isExpanded || isFiltered}\n sx={{ backgroundColor: 'background.default' }}\n timeout=\"auto\"\n unmountOnExit={true}\n >\n {ariaLive}\n <List\n aria-labelledby={`category-${parentCategory.guid}`}\n className=\"mx-cat-subcategory-list\"\n id={`subcategories-${parentCategory.guid}`}\n >\n {categories.map((category) => (\n <React.Fragment key={category.guid}>\n <SubcategoryRow\n announce={announce}\n parentCategory={parentCategory}\n subCategory={category}\n />\n <Divider aria-hidden=\"true\" component=\"li\" sx={{ ml: 58 }} />\n </React.Fragment>\n ))}\n {!isFiltered && <AddSubcategory announce={announce} parentCategory={parentCategory} />}\n </List>\n </Collapse>\n )\n}\n\nexport default observer(SubcategoryList)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemIcon from '@mui/material/ListItemIcon'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { ExpandMore } from '@mxenabled/mx-icons'\n\nimport { CategoryIcon } from '@mxenabled/mxui'\n\nimport { useEvent } from '../../common'\nimport type { Category } from '../../core'\n\nimport { useCategoryUiStore } from '../context/hooks'\nimport { ON_CLICK_EVENTS } from '../constants/OnClickEvents'\nimport SubcategoryList from './SubcategoryList'\n\ninterface CategoryRowProps {\n category: Category\n subCategories: Category[]\n}\n\nconst CategoryRow: React.FC<CategoryRowProps> = ({ category, subCategories }) => {\n const { expandedGuid, searchValue, setExpandedGuid } = useCategoryUiStore()\n const { onEvent } = useEvent()\n const isExpanded = category.guid === expandedGuid\n\n const handleExpanderClick = () => {\n const guid = category.guid !== expandedGuid ? category.guid : null\n setExpandedGuid(guid)\n onEvent(guid ? ON_CLICK_EVENTS.ON_CATEGORY_EXPANDED : ON_CLICK_EVENTS.ON_CATEGORY_COLLAPSED)\n }\n\n return (\n <React.Fragment>\n <ListItem disableGutters={true} disablePadding={true}>\n <ListItemButton\n aria-controls={`subcategories-${category.guid}`}\n aria-expanded={category.guid === expandedGuid}\n aria-label={category.name}\n id={`category-${category.guid}`}\n key={category.guid}\n onClick={handleExpanderClick}\n >\n <ListItemAvatar>\n <CategoryIcon categoryGuid={category.guid} />\n </ListItemAvatar>\n <ListItemText\n primary={category.name}\n slotProps={{ primary: { fontWeight: 'normal', variant: 'body1' } }}\n />\n <ListItemIcon>\n <ExpandMore\n sx={{\n transition: 'transform 0.3s ease-in-out',\n transform: isExpanded || searchValue ? 'rotate(180deg)' : 'rotate(0deg)',\n }}\n />\n </ListItemIcon>\n </ListItemButton>\n </ListItem>\n <Divider aria-hidden=\"true\" component=\"li\" sx={{ ml: 58 }} />\n <li style={{ listStyle: 'none' }}>\n <SubcategoryList categories={subCategories} parentCategory={category} />\n </li>\n </React.Fragment>\n )\n}\n\nexport default observer(CategoryRow)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport List from '@mui/material/List'\nimport Paper from '@mui/material/Paper'\n\nimport { useCategoryStore, useGlobalCopyStore } from '../../common'\nimport type { Category } from '../../core'\n\nimport { useCategoryUiStore } from '../context/hooks'\nimport CategoryRow from './CategoryRow'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\ninterface NestedCategory {\n category: Category\n children: Category[]\n}\n\nconst CategoryList: React.FC = () => {\n const { categories } = useCategoryStore()\n const { searchValue } = useCategoryUiStore()\n const { categories: copy } = useGlobalCopyStore()\n\n const buildNestedCategories = (categories: Category[], filter = ''): NestedCategory[] => {\n return categories.reduce((acc, currCategory) => {\n if (currCategory.parent_guid === null) {\n const categoriesWithParent = [\n {\n ...currCategory,\n name: buildDynamicCopy(copy.all_parent_category, currCategory.name) as string,\n parent_guid: currCategory.guid,\n },\n ...categories,\n ]\n const children = categoriesWithParent.filter(\n (category) =>\n category.parent_guid === currCategory.guid &&\n category.name.toLowerCase().includes(filter.toLowerCase()),\n )\n\n if (currCategory.name.toLowerCase().includes(filter.toLowerCase()) || children.length > 0) {\n return [...acc, { category: { ...currCategory }, children }]\n }\n }\n return acc\n }, [] as NestedCategory[])\n }\n\n const nestedCategories = buildNestedCategories(categories, searchValue)\n\n return (\n <Paper className=\"mx-cat-category-list\" sx={{ boxShadow: 'none' }}>\n <List>\n {nestedCategories.map((nested: NestedCategory) => (\n <CategoryRow\n category={nested.category}\n key={nested.category.guid}\n subCategories={nested.children}\n />\n ))}\n </List>\n </Paper>\n )\n}\n\nexport default observer(CategoryList)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport {\n Loader,\n SearchBox,\n useCategoryStore,\n useGlobalCopyStore,\n useGlobalUiStore,\n} from '../../common'\n\nimport { useCategoryUiStore } from '../context/hooks'\n\nimport CategoryList from './CategoryList'\n\nexport interface CategorySelectorProps {\n initialSelected?: string\n onSelect: (guid: string) => void\n showSelected?: boolean\n unselectable?: string[]\n unselectableText?: string\n}\n\nconst CategorySelector: React.FC<CategorySelectorProps> = ({\n initialSelected,\n onSelect = undefined,\n showSelected = true,\n unselectable = [],\n unselectableText = 'Unselectable',\n}) => {\n const { categories, loadCategories } = useCategoryStore()\n const { common: copy } = useGlobalCopyStore()\n const { isCopyLoaded } = useGlobalUiStore()\n\n const {\n searchValue,\n setOnSelect,\n setSearchValue,\n setSelectedGuid,\n setShowSelected,\n setUnselectable,\n setUnselectableText,\n } = useCategoryUiStore()\n\n React.useEffect(() => {\n if (onSelect) {\n setOnSelect(onSelect)\n }\n })\n\n React.useEffect(() => {\n if (!categories.length) {\n loadCategories()\n }\n }, [])\n\n React.useEffect(() => {\n if (initialSelected) {\n setSelectedGuid(initialSelected)\n }\n setShowSelected(showSelected)\n setUnselectable(unselectable)\n setUnselectableText(unselectableText)\n }, [initialSelected, showSelected, unselectable, unselectableText])\n\n if (!isCopyLoaded) {\n return <Loader />\n }\n\n return (\n <Stack className=\"mx-cat-category-selector\" sx={{ width: '100%' }}>\n <SearchBox\n ariaLabel={copy.search_aria}\n cancelAriaLabel={copy.cancel_search_aria}\n onChange={(value) => setSearchValue(value)}\n placeholder={copy.search_placeholder}\n searchValue={searchValue}\n />\n <CategoryList />\n </Stack>\n )\n}\n\nexport default observer(CategorySelector)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { Drawer, Loader, useGlobalCopyStore, useGlobalUiStore } from '../../common'\n\nimport CategorySelector from './CategorySelector'\n\nimport type { CategorySelectorProps } from './CategorySelector'\n\nexport interface CategorySelectorDrawerProps extends CategorySelectorProps {\n disableScroll?: boolean\n id?: string\n onClose: () => void\n title: string\n showDrawer: boolean\n}\n\nconst CategorySelectorDrawer: React.FC<CategorySelectorDrawerProps> = ({\n id,\n onClose,\n title,\n showDrawer,\n ...categorySelectorProps\n}) => {\n const { common: commonCopy } = useGlobalCopyStore()\n const { isCopyLoaded } = useGlobalUiStore()\n\n if (!isCopyLoaded) {\n return <Loader />\n }\n\n return (\n <Drawer\n ariaLabelClose={commonCopy.close_aria}\n className=\"mx-cat-category-selector-drawer\"\n id={id}\n isOpen={showDrawer}\n onClose={onClose}\n title={title}\n >\n <CategorySelector {...categorySelectorProps} />\n </Drawer>\n )\n}\n\nexport default observer(CategorySelectorDrawer)\n"],"names":["useCategoryUiStore","React","GlobalDataContext","useCategoryStore","ON_CLICK_EVENTS","CustomCategoryModalType","CustomCategoryModal","categoryName","onClose","onSave","isOpen","type","name","setName","copy","useGlobalCopyStore","setShouldDisableDrawerScroll","headingText","primaryText","isDeleteType","displayName","inputAriaLabel","buildDynamicCopy","jsx","Text","Dialog","DialogContent","TextField","e","CustomCategoryModal$1","observer","AddSubcategory","announce","parentCategory","showAdd","setShowAdd","addCategory","onEvent","useEvent","handleAdd","handleAdding","handleModalClose","jsxs","ListItem","ListItemButton","ListItemText","AddSubcategory$1","RenameSubcategory","setShowRename","subCategory","showRename","updateCategory","handleRename","RenameSubcategory$1","DeleteSubcategory","showDelete","setShowDelete","removeCategory","handleClose","handleDelete","DeleteSubcategory$1","SubcategoryRow","onSelect","selectedGuid","setSelectedGuid","showSelected","unselectable","unselectableText","isCustom","isSelected","isSelectable","item","CheckCircle","Chip","Box","IconButton","Edit","Delete","SubcategoryRow$1","SubcategoryList","categories","expandedGuid","searchValue","ariaLive","useAriaLive","isExpanded","isFiltered","Collapse","List","category","Divider","SubcategoryList$1","CategoryRow","subCategories","setExpandedGuid","handleExpanderClick","guid","ListItemAvatar","CategoryIcon","ListItemIcon","ExpandMore","CategoryRow$1","CategoryList","nestedCategories","filter","acc","currCategory","children","Paper","nested","CategoryList$1","CategorySelector","initialSelected","loadCategories","isCopyLoaded","useGlobalUiStore","setOnSelect","setSearchValue","setShowSelected","setUnselectable","setUnselectableText","Stack","SearchBox","value","Loader","CategorySelector$1","CategorySelectorDrawer","id","title","showDrawer","categorySelectorProps","commonCopy","Drawer","CategorySelectorDrawer$1"],"mappings":"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"}
@@ -40,3 +40,4 @@ export {
40
40
  E as a,
41
41
  _ as b
42
42
  };
43
+ //# sourceMappingURL=Connect-BH0Pt6zc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Connect-BH0Pt6zc.mjs","sources":["../src/accounts/components/ConnectStatus.tsx","../src/accounts/constants/Accounts.ts","../src/common/constants/Connect.ts"],"sourcesContent":["import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { MemberConnectionStatus } from '../../accounts'\nimport { useGlobalCopyStore } from '../../common'\n\ninterface ConnectStatus {\n status?: MemberConnectionStatus\n}\n\nconst ConnectStatus: React.FC<ConnectStatus> = ({ status = MemberConnectionStatus.Loading }) => {\n const { connect: connectCopy } = useGlobalCopyStore()\n\n return (\n <Box\n sx={{\n height: 'calc(100% - 62px)',\n position: 'absolute',\n width: '100%',\n }}\n >\n <Stack alignItems=\"center\" direction=\"column\" justifyContent=\"center\" sx={{ height: '100%' }}>\n {status === MemberConnectionStatus.Loading && (\n <CircularProgress color=\"primary\" size={48} />\n )}\n <Text\n sx={{\n color: 'grey.600',\n marginTop: '16px',\n }}\n >\n {status === MemberConnectionStatus.Error ? connectCopy.oops : connectCopy.loading}\n </Text>\n </Stack>\n </Box>\n )\n}\n\nexport default observer(ConnectStatus)\n","export enum MemberConnectionStatus {\n Loading = 'loading',\n Error = 'error',\n}\n\nexport enum FieldType {\n Currency = 'currency',\n Date = 'date',\n Input = 'input',\n Select = 'select',\n}\n","export const CONNECT_WIDGET_ID = 'connect_widget'\nexport const CONNECTIONS_WIDGET_ID = 'connections_widget'\n"],"names":["ConnectStatus","status","MemberConnectionStatus","connectCopy","useGlobalCopyStore","jsx","Box","jsxs","Stack","CircularProgress","Text","ConnectStatus$1","observer","FieldType","CONNECT_WIDGET_ID","CONNECTIONS_WIDGET_ID"],"mappings":";;;;;;;AAeA,MAAMA,IAAyC,CAAC,EAAE,QAAAC,IAASC,EAAuB,cAAc;AAC9F,QAAM,EAAE,SAASC,EAAA,IAAgBC,EAAA;AAEjC,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,OAAO;AAAA,MAAA;AAAA,MAGT,UAAA,gBAAAC,EAACC,GAAA,EAAM,YAAW,UAAS,WAAU,UAAS,gBAAe,UAAS,IAAI,EAAE,QAAQ,OAAA,GACjF,UAAA;AAAA,QAAAP,MAAWC,EAAuB,WACjC,gBAAAG,EAACI,KAAiB,OAAM,WAAU,MAAM,IAAI;AAAA,QAE9C,gBAAAJ;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,OAAO;AAAA,cACP,WAAW;AAAA,YAAA;AAAA,YAGZ,UAAAT,MAAWC,EAAuB,QAAQC,EAAY,OAAOA,EAAY;AAAA,UAAA;AAAA,QAAA;AAAA,MAC5E,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN,GAEAQ,IAAeC,EAASZ,CAAa;AC3C9B,IAAKE,sBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,QAAQ,SAFEA,IAAAA,KAAA,CAAA,CAAA,GAKAW,sBAAAA,OACVA,EAAA,WAAW,YACXA,EAAA,OAAO,QACPA,EAAA,QAAQ,SACRA,EAAA,SAAS,UAJCA,IAAAA,KAAA,CAAA,CAAA;ACLL,MAAMC,IAAoB,kBACpBC,IAAwB;"}
@@ -52,3 +52,4 @@ const H = ({ description: i, label: e, title: c }) => {
52
52
  export {
53
53
  H as C
54
54
  };
55
+ //# sourceMappingURL=ConnectCard-D7uxoH5Y.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectCard-D7uxoH5Y.mjs","sources":["../src/common/components/ConnectCard.tsx"],"sourcesContent":["import React from 'react'\n\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport CardContent from '@mui/material/CardContent'\nimport CardHeader from '@mui/material/CardHeader'\nimport Stack from '@mui/material/Stack'\n\nimport { AccountBalance, ChevronRight } from '@mxenabled/mx-icons'\nimport { Text } from '@mxenabled/mxui'\n\nimport ConnectDrawer from './ConnectDrawer'\n\ninterface ConnectCardProps {\n description: string\n label: string\n title: string\n}\n\nexport const ConnectCard = ({ description, label, title }: ConnectCardProps) => {\n const [isConnectOpen, setIsConnectOpen] = React.useState(false)\n\n return (\n <React.Fragment>\n <Card sx={{ m: 24 }}>\n <CardHeader\n avatar={<AccountBalance />}\n sx={{ '.MuiCardHeader-avatar': { mr: 8 } }}\n title={\n <Text bold={true} variant=\"body1\">\n {title}\n </Text>\n }\n />\n <CardContent sx={{ ':last-child': { pb: 4 }, ml: 28, py: 0 }}>\n <Stack alignItems=\"flex-start\" spacing={2}>\n <Text color=\"text.secondary\" variant=\"subtitle2\">\n {description}\n </Text>\n <Button\n endIcon={<ChevronRight />}\n onClick={() => setIsConnectOpen(true)}\n sx={{\n pl: 0,\n ':hover': {\n bgcolor: 'unset',\n },\n }}\n variant=\"text\"\n >\n {label}\n </Button>\n </Stack>\n </CardContent>\n </Card>\n\n <ConnectDrawer\n onClose={() => setIsConnectOpen(false)}\n showConnectWidget={isConnectOpen}\n title={label}\n />\n </React.Fragment>\n )\n}\n"],"names":["ConnectCard","description","label","title","isConnectOpen","setIsConnectOpen","React","jsxs","Card","jsx","CardHeader","AccountBalance","Text","CardContent","Stack","Button","ChevronRight","ConnectDrawer"],"mappings":";;;;;;;;;;AAmBO,MAAMA,IAAc,CAAC,EAAE,aAAAC,GAAa,OAAAC,GAAO,OAAAC,QAA8B;AAC9E,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAAM,SAAS,EAAK;AAE9D,SACE,gBAAAC,EAACD,EAAM,UAAN,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAK,IAAI,EAAE,GAAG,MACb,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,0BAASC,GAAA,EAAe;AAAA,UACxB,IAAI,EAAE,yBAAyB,EAAE,IAAI,IAAE;AAAA,UACvC,OACE,gBAAAF,EAACG,GAAA,EAAK,MAAM,IAAM,SAAQ,SACvB,UAAAT,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,wBAGHU,GAAA,EAAY,IAAI,EAAE,eAAe,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,KACvD,UAAA,gBAAAN,EAACO,KAAM,YAAW,cAAa,SAAS,GACtC,UAAA;AAAA,QAAA,gBAAAL,EAACG,GAAA,EAAK,OAAM,kBAAiB,SAAQ,aAClC,UAAAX,GACH;AAAA,QACA,gBAAAQ;AAAA,UAACM;AAAA,UAAA;AAAA,YACC,2BAAUC,GAAA,EAAa;AAAA,YACvB,SAAS,MAAMX,EAAiB,EAAI;AAAA,YACpC,IAAI;AAAA,cACF,IAAI;AAAA,cACJ,UAAU;AAAA,gBACR,SAAS;AAAA,cAAA;AAAA,YACX;AAAA,YAEF,SAAQ;AAAA,YAEP,UAAAH;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CACF,EAAA,CACF;AAAA,IAAA,GACF;AAAA,IAEA,gBAAAO;AAAA,MAACQ;AAAA,MAAA;AAAA,QACC,SAAS,MAAMZ,EAAiB,EAAK;AAAA,QACrC,mBAAmBD;AAAA,QACnB,OAAOF;AAAA,MAAA;AAAA,IAAA;AAAA,EACT,GACF;AAEJ;"}
@@ -55,3 +55,4 @@ const I = ({
55
55
  export {
56
56
  O as C
57
57
  };
58
+ //# sourceMappingURL=ConnectDrawer-CW4LA3H3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectDrawer-CW4LA3H3.mjs","sources":["../src/common/components/ConnectDrawer.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { useTheme } from '@mui/material/styles'\nimport { ConnectWidget } from '@mxenabled/web-widget-sdk'\n\nimport ConnectStatus from '../../accounts/components/ConnectStatus'\nimport { Drawer, useAccountStore, useGlobalCopyStore } from '../../common'\nimport { MemberConnectionStatus } from '../../accounts/constants/Accounts'\nimport { CONNECT_WIDGET_ID } from '../constants/Connect'\nimport { useConnectStore } from '../context/hooks'\n\ninterface ConnectDrawerProps {\n loadWidgetProps?: object\n onClose: () => void\n showConnectWidget: boolean\n title: string\n}\n\nconst ConnectDrawer: React.FC<ConnectDrawerProps> = ({\n loadWidgetProps,\n onClose,\n showConnectWidget,\n title,\n}) => {\n let connectWidget: ConnectWidget\n\n const { refreshAccounts } = useAccountStore()\n const { loadWidget } = useConnectStore()\n const { connect: connectCopy } = useGlobalCopyStore()\n const [isLoading, setIsLoading] = React.useState(false)\n const [hasError, setHasError] = React.useState(false)\n const {\n palette: { mode },\n } = useTheme()\n\n React.useEffect(() => {\n if (showConnectWidget) {\n setIsLoading(true)\n loadWidget({ mode: mode, ...loadWidgetProps }).then((res) => {\n connectWidget = new ConnectWidget({\n container: `#${CONNECT_WIDGET_ID}`,\n style: {\n border: 'none',\n height: 'calc(100% - 62px)',\n maxWidth: '450px',\n position: 'absolute',\n width: '100%',\n },\n url: res.url,\n onSsoUrlLoadError: () => {\n setIsLoading(false)\n setHasError(true)\n },\n onLoad: () => {\n setIsLoading(false)\n setHasError(false)\n },\n })\n })\n } else {\n setIsLoading(false)\n setHasError(false)\n }\n\n return () => {\n connectWidget?.unmount()\n }\n }, [showConnectWidget])\n\n return (\n <Drawer\n ariaLabelClose={connectCopy.close_manage_connection_aria}\n isOpen={showConnectWidget}\n onClose={() => {\n onClose()\n refreshAccounts()\n }}\n title={title}\n >\n <div id={CONNECT_WIDGET_ID}>\n {hasError && <ConnectStatus status={MemberConnectionStatus.Error} />}\n {isLoading && <ConnectStatus status={MemberConnectionStatus.Loading} />}\n </div>\n </Drawer>\n )\n}\n\nexport default observer(ConnectDrawer)\n"],"names":["ConnectDrawer","loadWidgetProps","onClose","showConnectWidget","title","connectWidget","refreshAccounts","useAccountStore","loadWidget","useConnectStore","connectCopy","useGlobalCopyStore","isLoading","setIsLoading","React","hasError","setHasError","mode","useTheme","res","ConnectWidget","CONNECT_WIDGET_ID","jsx","Drawer","jsxs","ConnectStatus","MemberConnectionStatus","ConnectDrawer$1","observer"],"mappings":";;;;;;;;AAkBA,MAAMA,IAA8C,CAAC;AAAA,EACnD,iBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,OAAAC;AACF,MAAM;AACJ,MAAIC;AAEJ,QAAM,EAAE,iBAAAC,EAAA,IAAoBC,EAAA,GACtB,EAAE,YAAAC,EAAA,IAAeC,EAAA,GACjB,EAAE,SAASC,EAAA,IAAgBC,EAAA,GAC3B,CAACC,GAAWC,CAAY,IAAIC,EAAM,SAAS,EAAK,GAChD,CAACC,GAAUC,CAAW,IAAIF,EAAM,SAAS,EAAK,GAC9C;AAAA,IACJ,SAAS,EAAE,MAAAG,EAAA;AAAA,EAAK,IACdC,EAAA;AAEJJ,SAAAA,EAAM,UAAU,OACVX,KACFU,EAAa,EAAI,GACjBL,EAAW,EAAE,MAAAS,GAAY,GAAGhB,EAAA,CAAiB,EAAE,KAAK,CAACkB,MAAQ;AAC3D,IAAAd,IAAgB,IAAIe,EAAc;AAAA,MAChC,WAAW,IAAIC,CAAiB;AAAA,MAChC,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,MAAA;AAAA,MAET,KAAKF,EAAI;AAAA,MACT,mBAAmB,MAAM;AACvB,QAAAN,EAAa,EAAK,GAClBG,EAAY,EAAI;AAAA,MAClB;AAAA,MACA,QAAQ,MAAM;AACZ,QAAAH,EAAa,EAAK,GAClBG,EAAY,EAAK;AAAA,MACnB;AAAA,IAAA,CACD;AAAA,EACH,CAAC,MAEDH,EAAa,EAAK,GAClBG,EAAY,EAAK,IAGZ,MAAM;AACX,IAAAX,GAAe,QAAA;AAAA,EACjB,IACC,CAACF,CAAiB,CAAC,GAGpB,gBAAAmB;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,gBAAgBb,EAAY;AAAA,MAC5B,QAAQP;AAAA,MACR,SAAS,MAAM;AACb,QAAAD,EAAA,GACAI,EAAA;AAAA,MACF;AAAA,MACA,OAAAF;AAAA,MAEA,UAAA,gBAAAoB,EAAC,OAAA,EAAI,IAAIH,GACN,UAAA;AAAA,QAAAN,KAAY,gBAAAO,EAACG,GAAA,EAAc,QAAQC,EAAuB,OAAO;AAAA,QACjEd,KAAa,gBAAAU,EAACG,GAAA,EAAc,QAAQC,EAAuB,QAAA,CAAS;AAAA,MAAA,EAAA,CACvE;AAAA,IAAA;AAAA,EAAA;AAGN,GAEAC,IAAeC,EAAS5B,CAAa;"}
@@ -51,3 +51,4 @@ const I = ({
51
51
  export {
52
52
  M as C
53
53
  };
54
+ //# sourceMappingURL=ConnectionsDrawer-CZU9ku-k.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionsDrawer-CZU9ku-k.mjs","sources":["../src/accounts/components/ConnectionsDrawer.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { useTheme } from '@mui/material/styles'\n\nimport { ConnectionsWidget } from '@mxenabled/web-widget-sdk'\n\nimport ConnectStatus from './ConnectStatus'\nimport { Drawer, useAccountStore, useGlobalCopyStore } from '../../common'\nimport { MemberConnectionStatus } from '../constants/Accounts'\nimport { CONNECTIONS_WIDGET_ID } from '../../common/constants/Connect'\nimport { useConnectStore } from '../../common/context/hooks'\n\ninterface ConnectionsDrawerProps {\n onClose: () => void\n showConnectionsWidget: boolean\n title: string\n}\n\nconst ConnectionsDrawer: React.FC<ConnectionsDrawerProps> = ({\n onClose,\n showConnectionsWidget,\n title,\n}) => {\n let connectionsWidget: ConnectionsWidget\n const { refreshAccounts } = useAccountStore()\n const { loadWidget } = useConnectStore()\n const { connect: connectCopy } = useGlobalCopyStore()\n const theme = useTheme()\n\n const [isLoading, setIsLoading] = React.useState(false)\n const [hasError, setHasError] = React.useState(false)\n\n React.useEffect(() => {\n if (showConnectionsWidget) {\n setIsLoading(true)\n loadWidget({ widget: 'connections_widget', mode: theme.palette.mode }).then((res) => {\n connectionsWidget = new ConnectionsWidget({\n container: `#${CONNECTIONS_WIDGET_ID}`,\n style: {\n border: 'none',\n height: 'calc(100% - 62px)',\n width: '100%',\n position: 'absolute',\n },\n url: res.url,\n onSsoUrlLoadError: () => {\n setIsLoading(false)\n setHasError(true)\n },\n onLoad: () => {\n setIsLoading(false)\n setHasError(false)\n },\n })\n })\n } else {\n setIsLoading(false)\n setHasError(false)\n }\n\n return () => {\n connectionsWidget?.unmount()\n }\n }, [showConnectionsWidget])\n\n return (\n <Drawer\n ariaLabelClose={connectCopy.close_connections_aria}\n isOpen={showConnectionsWidget}\n onClose={() => {\n onClose()\n refreshAccounts()\n }}\n title={title}\n >\n <div id={CONNECTIONS_WIDGET_ID}>\n {hasError && <ConnectStatus status={MemberConnectionStatus.Error} />}\n {isLoading && <ConnectStatus status={MemberConnectionStatus.Loading} />}\n </div>\n </Drawer>\n )\n}\n\nexport default observer(ConnectionsDrawer)\n"],"names":["ConnectionsDrawer","onClose","showConnectionsWidget","title","connectionsWidget","refreshAccounts","useAccountStore","loadWidget","useConnectStore","connectCopy","useGlobalCopyStore","theme","useTheme","isLoading","setIsLoading","React","hasError","setHasError","res","ConnectionsWidget","CONNECTIONS_WIDGET_ID","jsx","Drawer","jsxs","ConnectStatus","MemberConnectionStatus","ConnectionsDrawer$1","observer"],"mappings":";;;;;;;;AAmBA,MAAMA,IAAsD,CAAC;AAAA,EAC3D,SAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,OAAAC;AACF,MAAM;AACJ,MAAIC;AACJ,QAAM,EAAE,iBAAAC,EAAA,IAAoBC,EAAA,GACtB,EAAE,YAAAC,EAAA,IAAeC,EAAA,GACjB,EAAE,SAASC,EAAA,IAAgBC,EAAA,GAC3BC,IAAQC,EAAA,GAER,CAACC,GAAWC,CAAY,IAAIC,EAAM,SAAS,EAAK,GAChD,CAACC,GAAUC,CAAW,IAAIF,EAAM,SAAS,EAAK;AAEpDA,SAAAA,EAAM,UAAU,OACVb,KACFY,EAAa,EAAI,GACjBP,EAAW,EAAE,QAAQ,sBAAsB,MAAMI,EAAM,QAAQ,KAAA,CAAM,EAAE,KAAK,CAACO,MAAQ;AACnF,IAAAd,IAAoB,IAAIe,EAAkB;AAAA,MACxC,WAAW,IAAIC,CAAqB;AAAA,MACpC,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,MAEZ,KAAKF,EAAI;AAAA,MACT,mBAAmB,MAAM;AACvB,QAAAJ,EAAa,EAAK,GAClBG,EAAY,EAAI;AAAA,MAClB;AAAA,MACA,QAAQ,MAAM;AACZ,QAAAH,EAAa,EAAK,GAClBG,EAAY,EAAK;AAAA,MACnB;AAAA,IAAA,CACD;AAAA,EACH,CAAC,MAEDH,EAAa,EAAK,GAClBG,EAAY,EAAK,IAGZ,MAAM;AACX,IAAAb,GAAmB,QAAA;AAAA,EACrB,IACC,CAACF,CAAqB,CAAC,GAGxB,gBAAAmB;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,gBAAgBb,EAAY;AAAA,MAC5B,QAAQP;AAAA,MACR,SAAS,MAAM;AACb,QAAAD,EAAA,GACAI,EAAA;AAAA,MACF;AAAA,MACA,OAAAF;AAAA,MAEA,UAAA,gBAAAoB,EAAC,OAAA,EAAI,IAAIH,GACN,UAAA;AAAA,QAAAJ,KAAY,gBAAAK,EAACG,GAAA,EAAc,QAAQC,EAAuB,OAAO;AAAA,QACjEZ,KAAa,gBAAAQ,EAACG,GAAA,EAAc,QAAQC,EAAuB,QAAA,CAAS;AAAA,MAAA,EAAA,CACvE;AAAA,IAAA;AAAA,EAAA;AAGN,GAEAC,IAAeC,EAAS3B,CAAiB;"}
@@ -371,3 +371,4 @@ export {
371
371
  pt as a,
372
372
  Jt as b
373
373
  };
374
+ //# sourceMappingURL=CurrencyDialog-DumQCTPO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrencyDialog-DumQCTPO.mjs","sources":["../src/common/components/calendar/Header.tsx","../src/common/components/calendar/Day.tsx","../src/common/components/calendar/Calendar.tsx","../src/common/components/CurrencyDialog.tsx"],"sourcesContent":["import React from 'react'\nimport { css } from '@mxenabled/cssinjs'\n\nimport { ChevronLeft, ChevronRight } from '@mxenabled/mx-icons'\n\nimport Button from '@mui/material/Button'\n\nimport { H2 } from '@mxenabled/mxui'\n\nimport { DATE_FORMATS_INTL, formatDate } from '../../../core/constants'\n\nimport type { CalendarCopy } from './Calendar'\n\ninterface HeaderProps {\n copy: CalendarCopy\n date: Date\n onNextClick: () => void\n onPreviousClick: () => void\n}\n\nconst Header: React.FC<HeaderProps> = ({ copy, date, onNextClick, onPreviousClick }) => {\n const styles = getStyles()\n\n return (\n <div className={`mx-cmn-calendar-header ${styles}`}>\n <H2 className=\"mx-cmn-calendar-header-title\" variant=\"h3\">\n {formatDate(date, DATE_FORMATS_INTL.MONTH_YEAR)}\n </H2>\n <div className=\"mx-cmn-calendar-header-button-container\">\n <Button aria-label={copy.prevAria} onClick={onPreviousClick}>\n <ChevronLeft size={24} />\n </Button>\n <Button aria-label={copy.nextAria} onClick={onNextClick}>\n <ChevronRight size={24} />\n </Button>\n </div>\n </div>\n )\n}\n\nconst getStyles = () =>\n css({\n alignItems: 'center',\n display: 'flex',\n marginBottom: 16,\n marginRight: -16,\n paddingLeft: 8,\n '& .mx-cmn-calendar-header-title': {\n flexGrow: 1,\n },\n '& .mx-cmn-calendar-header-button-container': {\n display: 'flex',\n gap: 4,\n },\n })\n\nexport default Header\n","import React from 'react'\nimport { css } from '@mxenabled/cssinjs'\nimport { format } from 'date-fns/format'\nimport { isSameDay } from 'date-fns/isSameDay'\nimport { isWithinInterval } from 'date-fns/isWithinInterval'\nimport { startOfToday } from 'date-fns/startOfToday'\n\nimport Button from '@mui/material/Button'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { DATE_SIZE } from './Calendar'\n\ninterface DayProps {\n beginDate: Date | undefined\n date: Date\n endDate: Date | undefined\n isInMonth: boolean\n onClick: (date: Date) => void\n}\n\nconst Day: React.FC<DayProps> = ({ beginDate, date, endDate, isInMonth, onClick }) => {\n const theme = useTheme()\n const styles = getStyles(theme)\n\n const isInRange =\n beginDate &&\n endDate &&\n isWithinInterval(date, { start: beginDate, end: endDate }) &&\n !isSameDay(date, beginDate) &&\n !isSameDay(date, endDate)\n\n const isRangeStart =\n beginDate && endDate && isSameDay(beginDate, date) && !isSameDay(beginDate, endDate)\n\n const isRangeEnd =\n endDate && beginDate && isSameDay(endDate, date) && !isSameDay(beginDate, endDate)\n\n const isSelected =\n (beginDate && isSameDay(beginDate, date)) || (endDate && isSameDay(endDate, date))\n\n const isToday = isSameDay(date, startOfToday())\n\n return (\n <div\n className={`\n mx-cmn-calendar-day\n ${styles}\n ${!isInMonth ? 'mx-cmn-out-of-month' : ''}\n ${isInRange ? 'mx-cmn-date-interval' : ''}\n `}\n >\n <Button\n className={`\n mx-cmn-calendar-day-button\n ${isRangeStart ? 'mx-cmn-range-start' : ''}\n ${isRangeEnd ? 'mx-cmn-range-end' : ''}\n `}\n color={isSelected ? 'primary' : 'secondary'}\n onClick={() => onClick(date)}\n variant={isSelected ? 'contained' : 'text'}\n >\n <Text\n className={`\n mx-cmn-calendar-day-text\n ${isSelected ? 'mx-cmn-day-selected' : ''}\n ${isToday ? 'mx-cmn-today' : ''}`}\n variant=\"body2\"\n >\n {format(date, 'd')}\n </Text>\n </Button>\n </div>\n )\n}\n\nconst getStyles = (theme: any) =>\n css({\n height: DATE_SIZE,\n width: DATE_SIZE,\n display: 'flex',\n justifyContent: 'center',\n '&.mx-cmn-out-of-month': {\n backgroundColor: theme.palette.background.default,\n },\n '&.mx-cmn-date-interval': {\n backgroundColor: theme.palette.secondary.light,\n },\n '& .MuiButton-root': {\n maxWidth: 44,\n minWidth: 44,\n height: 44,\n padding: 0,\n width: 44,\n '&.mx-cmn-range-start': {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n '&:focus': {\n boxShadow: 'none',\n },\n },\n '&.mx-cmn-range-end': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n '&:focus': {\n boxShadow: 'none',\n },\n },\n },\n '& .mx-cmn-calendar-day-text': {\n '&.mx-cmn-day-selected': {\n color: theme.palette.primary,\n '&.mx-cmn-day-selected': {\n borderColor: theme.palette.common.white,\n },\n },\n '&.mx-cmn-today': {\n borderBottom: `solid 2px ${theme.palette.primary.main}`,\n marginBottom: -6,\n paddingBottom: 5,\n },\n },\n })\n\nexport default Day\n","import React from 'react'\nimport { css } from '@mxenabled/cssinjs'\nimport { addDays } from 'date-fns/addDays'\nimport { addMonths } from 'date-fns/addMonths'\nimport { eachDayOfInterval } from 'date-fns/eachDayOfInterval'\nimport { eachWeekOfInterval } from 'date-fns/eachWeekOfInterval'\nimport { endOfMonth } from 'date-fns/endOfMonth'\nimport { format } from 'date-fns/format'\nimport { isBefore } from 'date-fns/isBefore'\nimport { isSameMonth } from 'date-fns/isSameMonth'\nimport { startOfMonth } from 'date-fns/startOfMonth'\nimport { startOfToday } from 'date-fns/startOfToday'\nimport { subMonths } from 'date-fns/subMonths'\n\nimport Button from '@mui/material/Button'\nimport Paper from '@mui/material/Paper'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport Header from './Header'\nimport Day from './Day'\n\nexport const CALENDAR_WIDTH = 340\nexport const DATE_SIZE = 44\nexport const enum CalendarSelectionTypes {\n None = 'None',\n Single = 'Single',\n Range = 'Range',\n}\n\nexport type CalendarCopy = {\n nextAria: string\n prevAria: string\n today: string\n}\n\nexport interface CalendarProps {\n copy: CalendarCopy\n beginDate?: Date\n endDate?: Date\n onDateSelected?: (date: Date) => void\n onRangeSelected?: (beginDate: Date, endDate: Date) => void\n selectionType?: CalendarSelectionTypes\n}\n\nconst Calendar: React.FC<CalendarProps> = ({\n copy,\n beginDate: beginDateProp = undefined,\n endDate: endDateProp = undefined,\n onDateSelected,\n onRangeSelected,\n selectionType = CalendarSelectionTypes.Single,\n}) => {\n const styles = getStyles()\n\n const [date, setDate] = React.useState(startOfToday)\n\n const [beginDate, setBeginDate] = React.useState<Date | undefined>(beginDateProp)\n const [endDate, setEndDate] = React.useState<Date | undefined>(endDateProp)\n\n React.useEffect(() => {\n setBeginDate(beginDateProp)\n setEndDate(endDateProp)\n if (beginDateProp) {\n setDate(beginDateProp)\n }\n }, [beginDateProp, endDateProp])\n\n const weeks = React.useMemo(() => {\n const weeksInInterval = eachWeekOfInterval({ start: startOfMonth(date), end: endOfMonth(date) })\n\n const weeks = [] as Date[][]\n for (let i = 0; i < weeksInInterval.length; i++) {\n const weekStart = weeksInInterval[i]\n const days = eachDayOfInterval({ start: weekStart, end: addDays(weekStart, 6) })\n\n const week = [] as Date[]\n for (let j = 0; j < days.length; j++) {\n week.push(days[j])\n }\n weeks.push(week)\n }\n\n return weeks\n }, [date])\n\n const handleSelection = (date: Date) => {\n if (selectionType === CalendarSelectionTypes.None) return\n\n if (selectionType === CalendarSelectionTypes.Single) {\n setBeginDate(date)\n onDateSelected?.(date)\n return\n }\n\n if (!beginDate || endDate) {\n setBeginDate(date)\n setEndDate(undefined)\n } else if (isBefore(date, beginDate)) {\n setEndDate(beginDate)\n setBeginDate(date)\n onRangeSelected?.(date, beginDate)\n } else {\n setEndDate(date)\n onRangeSelected?.(beginDate, date)\n }\n }\n\n const handleTodayClick = () => {\n const today = startOfToday()\n setDate(today)\n\n if (selectionType === CalendarSelectionTypes.None) return\n\n setBeginDate(today)\n\n if (selectionType === CalendarSelectionTypes.Single) {\n onDateSelected?.(today)\n } else {\n setEndDate(today)\n onRangeSelected?.(today, today)\n }\n }\n\n const handleNextMonthClick = () => {\n setDate(addMonths(date, 1))\n }\n\n const handlePreviousMonthClick = () => {\n setDate(subMonths(date, 1))\n }\n\n return (\n <div className={`mx-cmn-calendar ${styles}`}>\n <Paper sx={{ boxShadow: 'none' }}>\n <Header\n copy={copy}\n date={date}\n onNextClick={handleNextMonthClick}\n onPreviousClick={handlePreviousMonthClick}\n />\n\n <div className=\"mx-cmn-calendar-header-row\">\n {weeks[0].map((day, index) => (\n <div className=\"mx-cmn-calendar-header-cell\" key={index}>\n <Text bold={true} variant=\"body2\">\n {format(day, 'EEEEE')}\n </Text>\n </div>\n ))}\n </div>\n\n {weeks.map((week, index) => (\n <div className=\"mx-cmn-calendar-week\" key={`w-${index}`}>\n {week.map((day, index) => (\n <Day\n beginDate={beginDate}\n date={day}\n endDate={endDate}\n isInMonth={isSameMonth(day, date)}\n key={index}\n onClick={handleSelection}\n />\n ))}\n </div>\n ))}\n\n <div className=\"mx-cmn-calendar-today-container\">\n <Button onClick={handleTodayClick} size=\"small\" variant=\"text\">\n {copy.today}\n </Button>\n </div>\n </Paper>\n </div>\n )\n}\n\nconst getStyles = () =>\n css({\n width: CALENDAR_WIDTH,\n '& .MuiPaper-root': {\n paddingLeft: 24,\n paddingRight: 24,\n paddingTop: 4,\n paddingBottom: 4,\n },\n '& .mx-cmn-calendar-header-row': {\n display: 'flex',\n justifyContent: 'center',\n textAlign: 'center',\n '& .mx-cmn-calendar-header-cell': {\n height: DATE_SIZE,\n width: DATE_SIZE,\n minWidth: DATE_SIZE,\n '& .kmui-text': {\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n },\n },\n '& .mx-cmn-calendar-week': {\n display: 'flex',\n justifyContent: 'center',\n textAlign: 'center',\n },\n '& .mx-cmn-calendar-today-container': {\n display: 'block',\n marginTop: 16,\n textAlign: 'center',\n width: '100%',\n '& > .MuiButton-root': {\n display: 'inline-block',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },\n })\n\nexport default Calendar\n","import { Icon } from '@mxenabled/mx-icons'\nimport { H3, P } from '@mxenabled/mxui'\n\nimport Button, { type ButtonProps } from '@mui/material/Button'\nimport Dialog from '@mui/material/Dialog'\nimport DialogActions from '@mui/material/DialogActions'\nimport DialogContent from '@mui/material/DialogContent'\nimport IconButton from '@mui/material/IconButton'\nimport InputAdornment from '@mui/material/InputAdornment'\nimport Stack from '@mui/material/Stack'\nimport TextField from '@mui/material/TextField'\n\nimport { useScreenSize } from '../hooks'\n\ninterface CurrencyDialogProps {\n closeAriaLabel: string\n content?: string\n inputLabel?: string\n inputValue?: string\n isOpen: boolean\n handleInputChange?: (value: string) => void\n handleModalClose: () => void\n handlePrimaryAction: () => void\n handleSecondaryAction?: () => void\n primaryColor?: ButtonProps['color']\n primaryText: string\n secondaryColor?: ButtonProps['color']\n secondaryText?: string\n title: string\n}\n\n// Created for V2 of BudgetDetailsDrawer.\n// The previous design will be replaced once the new design is finalized.\n// Also needs to be updated to use the mxui library\n// with the updated Dialog components.\n\nconst CurrencyDialog = ({\n closeAriaLabel,\n content,\n inputLabel,\n inputValue,\n isOpen,\n handleInputChange,\n handleModalClose,\n handlePrimaryAction,\n handleSecondaryAction,\n primaryColor = 'primary',\n primaryText,\n secondaryColor = 'primary',\n secondaryText,\n title,\n}: CurrencyDialogProps) => {\n const numericValue = parseFloat(inputValue ?? '0')\n const isValid = inputValue !== '' && inputValue !== '0' && !isNaN(numericValue)\n\n const { isSmallMobile } = useScreenSize()\n\n return (\n <Dialog\n aria-label={title}\n aria-labelledby=\"modal-title\"\n maxWidth=\"xs\"\n onClose={handleModalClose}\n open={isOpen}\n role=\"dialog\"\n sx={{\n '& .MuiDialogContent-root': { p: 0 },\n ...(isSmallMobile && { '& .MuiDialog-paper': { minWidth: '100%' } }),\n }}\n >\n <DialogContent>\n <form\n onSubmit={(e) => {\n e.preventDefault()\n handlePrimaryAction()\n }}\n >\n <Stack\n sx={{\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between',\n pb: 12,\n pl: 24,\n position: 'relative',\n pr: 16,\n pt: 24,\n }}\n >\n <H3 id=\"modal-title\">{title}</H3>\n <IconButton\n aria-label={closeAriaLabel}\n onClick={handleModalClose}\n sx={{ minHeight: 24, position: 'absolute', right: 8, top: 18 }}\n >\n <Icon name=\"close\" sx={{ color: 'action.active' }} />\n </IconButton>\n </Stack>\n <Stack sx={{ gap: 24, px: 24 }}>\n <P variant=\"subtitle1\">{content}</P>\n {inputLabel && (\n <TextField\n autoFocus={true}\n inputMode=\"decimal\"\n label={inputLabel}\n onChange={({ target: { value } }) => {\n if (!/^\\d*\\.?\\d*$/.test(value)) return\n\n handleInputChange?.(value)\n }}\n slotProps={{\n input: {\n startAdornment: <InputAdornment position=\"start\">$</InputAdornment>,\n },\n htmlInput: {\n 'aria-label': inputLabel,\n noValidate: true,\n pattern: '[0-9]*\\\\.?[0-9]*',\n },\n }}\n type=\"text\"\n value={inputValue}\n />\n )}\n </Stack>\n <DialogActions\n sx={{\n justifyContent: 'flex-end',\n gap: 16,\n p: 24,\n '>:not(style)~:not(style)': { ml: 0 },\n }}\n >\n {secondaryText && (\n <Button\n aria-label={secondaryText}\n color={secondaryColor}\n onClick={handleSecondaryAction}\n >\n {secondaryText}\n </Button>\n )}\n <Button\n aria-label={primaryText}\n color={primaryColor}\n disabled={inputLabel ? !isValid : false}\n onClick={handlePrimaryAction}\n variant=\"contained\"\n >\n {primaryText}\n </Button>\n </DialogActions>\n </form>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default CurrencyDialog\n"],"names":["Header","copy","date","onNextClick","onPreviousClick","styles","getStyles","jsxs","jsx","H2","formatDate","DATE_FORMATS_INTL","Button","ChevronLeft","ChevronRight","css","Day","beginDate","endDate","isInMonth","onClick","theme","useTheme","isInRange","isWithinInterval","isSameDay","isRangeStart","isRangeEnd","isSelected","isToday","startOfToday","Text","format","DATE_SIZE","CALENDAR_WIDTH","CalendarSelectionTypes","Calendar","beginDateProp","endDateProp","onDateSelected","onRangeSelected","selectionType","setDate","React","setBeginDate","setEndDate","weeks","weeksInInterval","eachWeekOfInterval","startOfMonth","endOfMonth","i","weekStart","days","eachDayOfInterval","addDays","week","j","handleSelection","isBefore","handleTodayClick","today","handleNextMonthClick","addMonths","handlePreviousMonthClick","subMonths","Paper","day","index","isSameMonth","CurrencyDialog","closeAriaLabel","content","inputLabel","inputValue","isOpen","handleInputChange","handleModalClose","handlePrimaryAction","handleSecondaryAction","primaryColor","primaryText","secondaryColor","secondaryText","title","numericValue","isValid","isSmallMobile","useScreenSize","Dialog","DialogContent","e","Stack","H3","IconButton","Icon","P","TextField","value","InputAdornment","DialogActions"],"mappings":"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"}
@@ -85,3 +85,4 @@ const J = ({
85
85
  export {
86
86
  J as C
87
87
  };
88
+ //# sourceMappingURL=CurrencyInput-DaGEQaLW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrencyInput-DaGEQaLW.mjs","sources":["../src/common/components/CurrencyInput.tsx"],"sourcesContent":["import React from 'react'\nimport { css } from '@mxenabled/cssinjs'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport type { TextFieldProps as MuiTextFieldProps } from '@mui/material/TextField'\n\nimport { P, TextField } from '@mxenabled/mxui'\n\nimport { getLocale } from '../../core'\nimport { CurrencyCodes, MAX_MONEY_INPUT } from '../../core/constants/Numbers'\nimport { formatCurrency, getCurrencyCodes } from '../../core/utils/NumberFormatting'\nimport { CurrencyInputCopy } from '../../core'\nimport { useGlobalCopyStore } from '../context'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\ntype CurrencyInputProps = {\n allowDecimals?: boolean\n amountIsRequired?: boolean\n ariaLabel?: string\n amount: string | number\n copy?: CurrencyInputCopy\n customValidate?: () => boolean\n errorText?: string\n label?: string\n minAmount?: number\n setAmount: (s: string) => void\n setHasValidInput?: (b: boolean) => void\n} & MuiTextFieldProps\n\nconst CurrencyInput: React.FC<CurrencyInputProps> = ({\n allowDecimals = true,\n ariaLabel,\n amount,\n amountIsRequired = true,\n copy,\n customValidate = () => true,\n errorText = '',\n label,\n minAmount = 1,\n setAmount,\n setHasValidInput,\n ...rest\n}) => {\n const [errorMsg, setErrorMsg] = React.useState('')\n const { common: commonCopy } = useGlobalCopyStore()\n const customCopy = copy ? copy : commonCopy.currency_input\n\n const styles = getStyles()\n\n const numbersOnly = /^[0-9]*$/\n // disabling this lint rule because this \"useless\" escape is not useless and breaks functionality if removed\n // eslint-disable-next-line no-useless-escape\n const numbersWithComma = /^(\\d)*(\\,)?([0-9]{1,2})?$/\n const numbersWithDecimal = /^(\\d)*(\\.)?([0-9]{1,2})?$/\n let pattern: RegExp\n\n const nameRef = React.useRef(uuidv4())\n\n if (allowDecimals) {\n switch (getCurrencyCodes()) {\n case CurrencyCodes.CAD:\n pattern = numbersWithComma\n break\n default:\n pattern = numbersWithDecimal\n break\n }\n } else {\n pattern = numbersOnly\n }\n\n React.useEffect(() => {\n handleValidation(amount)\n }, [amount])\n\n const handleValidation = (value: string | number) => {\n if (!amountIsRequired && (value === '' || value === '.' || value === ',')) {\n // don't display error in these instances, but indicate the input isn't valid\n setErrorMsg('')\n setHasValidInput?.(false)\n } else if (Number(value) < minAmount) {\n // display error if number is negative\n setErrorMsg(\n buildDynamicCopy(\n customCopy.error_amount_must_be_equal_to,\n formatCurrency(minAmount, '0'),\n ) as string,\n )\n setHasValidInput?.(false)\n } else if (Number(value) > MAX_MONEY_INPUT) {\n // display error if number is greater than max amount allowed\n setErrorMsg(\n buildDynamicCopy(\n customCopy.error_amount_must_be_less_than_or_equal_to,\n formatCurrency(MAX_MONEY_INPUT, allowDecimals ? '0,0.00' : '0,0', Math.floor),\n ) as string,\n )\n setHasValidInput?.(false)\n } else if (!value.toString().match(pattern)) {\n // check that input is valid and display error on special characters, etc\n setErrorMsg(customCopy.error_amount_is_invalid)\n setHasValidInput?.(false)\n } else if (!customValidate()) {\n // if custom error validation returns false, error passed in by parent is displayed\n setErrorMsg(errorText)\n setHasValidInput?.(false)\n } else {\n // input is valid!\n setErrorMsg('')\n setHasValidInput?.(true)\n }\n\n setAmount(value.toString())\n }\n\n return (\n <TextField\n className={`mx-cmn-currency-input ${styles}`}\n error={Boolean(errorMsg)}\n helperText={errorMsg}\n hiddenLabel={!label}\n id={`currency-input-${nameRef.current}`}\n inputMode={allowDecimals ? 'decimal' : 'numeric'}\n label={label}\n name={`currency-input-${nameRef.current}`}\n onChange={(e: any) => handleValidation(e.target.value)}\n slotProps={{\n input: {\n endAdornment: getLocale().includes('fr-ca') ? <P>$</P> : undefined,\n startAdornment: !getLocale().includes('fr-ca') ? <P>$</P> : undefined,\n },\n htmlInput: {\n 'aria-label': ariaLabel || customCopy.enter_amount,\n noValidate: true,\n pattern: allowDecimals ? '[0-9]*\\\\.?[0-9]*' : '[0-9]*',\n },\n }}\n value={amount}\n {...rest}\n />\n )\n}\n\nconst getStyles = () =>\n css({\n '& .MuiInputBase-adornedStart > .p': {\n marginRight: 4,\n },\n })\n\nexport default CurrencyInput\n"],"names":["CurrencyInput","allowDecimals","ariaLabel","amount","amountIsRequired","copy","customValidate","errorText","label","minAmount","setAmount","setHasValidInput","rest","errorMsg","setErrorMsg","React","commonCopy","useGlobalCopyStore","customCopy","styles","getStyles","numbersOnly","numbersWithComma","numbersWithDecimal","pattern","nameRef","uuidv4","getCurrencyCodes","CurrencyCodes","handleValidation","value","buildDynamicCopy","formatCurrency","MAX_MONEY_INPUT","jsx","TextField","getLocale","P","css"],"mappings":"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"}
@@ -18,3 +18,4 @@ const y = ({
18
18
  export {
19
19
  y as C
20
20
  };
21
+ //# sourceMappingURL=CurrencyText-CCbE6MmF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrencyText-CCbE6MmF.mjs","sources":["../src/common/components/CurrencyText.tsx"],"sourcesContent":["import React from 'react'\nimport { SxProps } from '@mui/material/styles'\nimport { P } from '@mxenabled/mxui'\nimport { TypographyProps } from '@mui/material/Typography'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface CurrencyTextProps extends TypographyProps {\n isIncome?: boolean\n amount: number | string\n bold?: boolean\n color?: string\n formatString?: string\n sx?: SxProps\n symbol?: string\n variant?: TypographyProps['variant']\n}\n\nexport const CurrencyText: React.FC<CurrencyTextProps> = ({\n isIncome = false,\n amount = 0,\n bold,\n color,\n formatString,\n sx,\n symbol,\n variant,\n ...rest\n}) => {\n const textColor = () => {\n if (color) {\n return color\n } else {\n return isIncome ? 'success.main' : 'text.primary'\n }\n }\n\n return (\n <P bold={bold} color={textColor()} sx={sx} variant={variant} {...rest}>\n {symbol && symbol}\n {formatCurrency(Number(amount), formatString ?? '0,0.00')}\n </P>\n )\n}\n"],"names":["CurrencyText","isIncome","amount","bold","color","formatString","sx","symbol","variant","rest","jsxs","P","formatCurrency"],"mappings":";;;AAiBO,MAAMA,IAA4C,CAAC;AAAA,EACxD,UAAAC,IAAW;AAAA,EACX,QAAAC,IAAS;AAAA,EACT,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,IAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,MAUI,gBAAAC,EAACC,KAAE,MAAAR,GAAY,OARXC,MAGKH,IAAW,iBAAiB,iBAKF,IAAAK,GAAQ,SAAAE,GAAmB,GAAGC,GAC9D,UAAA;AAAA,EAAAF,KAAUA;AAAA,EACVK,EAAe,OAAOV,CAAM,GAAGG,KAAgB,QAAQ;AAAA,GAC1D;"}
@@ -62,3 +62,4 @@ export {
62
62
  _ as O,
63
63
  i as f
64
64
  };
65
+ //# sourceMappingURL=DateFormats-HudZ3Bjs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateFormats-HudZ3Bjs.mjs","sources":["../src/core/constants/DateFormats.ts"],"sourcesContent":["import { intlFormat } from 'date-fns/intlFormat'\nimport { getLocale } from '../utils'\n\nexport const ORDINAL_DATE_FORMAT = 'do'\nexport const ORDINAL_MONTH_DAY_YEAR_FORMAT = 'MMM do, yyyy'\n\n// Documentation on the options for formatting int'l dates\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\nexport const DATE_FORMATS_INTL = {\n TIME_STAMP_HOUR_MINUTE: {\n hour: 'numeric',\n minute: 'numeric',\n },\n DAY: {\n day: 'numeric',\n },\n DAY_OF_WEEK: {\n weekday: 'long',\n },\n DAY_OF_WEEK_MONTH_DAY: {\n day: 'numeric',\n month: 'long',\n weekday: 'long',\n },\n FULL_MONTH_DAY: {\n day: 'numeric',\n month: 'long',\n },\n MONTH: {\n month: 'short',\n },\n MONTH_DAY: {\n day: 'numeric',\n month: 'short',\n },\n MONTH_LONG: {\n month: 'long',\n },\n MONTH_SHORT: {\n month: 'short',\n },\n MONTH_SHORT_YEAR: {\n month: 'short',\n year: 'numeric',\n },\n MONTH_YEAR: {\n month: 'long',\n year: 'numeric',\n },\n YEAR_MONTH_DAY: {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n },\n MONTH_DAY_YEAR: {\n month: 'short',\n day: '2-digit',\n year: 'numeric',\n },\n MED_MONTH_SHORT_DAY_FULL_YEAR: {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n },\n}\n\nexport interface Day {\n day: string\n}\n\nexport interface DayOfWeek {\n weekday: string\n}\n\nexport interface DayOfWeekMonthDay {\n day: string\n month: string\n weekday: string\n}\n\nexport interface MonthDay {\n day: string\n month: string\n}\n\nexport interface MonthLong {\n month: string\n}\n\nexport interface MonthShort {\n month: string\n}\n\nexport interface MonthYear {\n month: string\n year: string\n}\n\nexport interface TimeStamp {\n hour: string\n minute: string\n}\n\nexport interface YearMonthDay {\n day: string\n month: string\n year: string\n}\n\nexport const formatDate = (\n date: string | Date,\n dFormat:\n | Day\n | DayOfWeek\n | DayOfWeekMonthDay\n | MonthDay\n | MonthLong\n | MonthShort\n | MonthYear\n | TimeStamp\n | YearMonthDay,\n) => intlFormat(new Date(date), Object.assign(dFormat), { locale: getLocale() })\n"],"names":["ORDINAL_DATE_FORMAT","DATE_FORMATS_INTL","formatDate","date","dFormat","intlFormat","getLocale"],"mappings":";;AAGO,MAAMA,IAAsB,MAKtBC,IAAoB;AAAA,EAC/B,wBAAwB;AAAA,IACtB,MAAM;AAAA,IACN,QAAQ;AAAA,EAAA;AAAA,EAEV,KAAK;AAAA,IACH,KAAK;AAAA,EAAA;AAAA,EAEP,aAAa;AAAA,IACX,SAAS;AAAA,EAAA;AAAA,EAEX,uBAAuB;AAAA,IACrB,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAAA,EAEX,gBAAgB;AAAA,IACd,KAAK;AAAA,IACL,OAAO;AAAA,EAAA;AAAA,EAET,OAAO;AAAA,IACL,OAAO;AAAA,EAAA;AAAA,EAET,WAAW;AAAA,IACT,KAAK;AAAA,IACL,OAAO;AAAA,EAAA;AAAA,EAET,YAAY;AAAA,IACV,OAAO;AAAA,EAAA;AAAA,EAET,aAAa;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,kBAAkB;AAAA,IAChB,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,YAAY;AAAA,IACV,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,gBAAgB;AAAA,IACd,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,gBAAgB;AAAA,IACd,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER,+BAA+B;AAAA,IAC7B,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAEV,GA6CaC,IAAa,CACxBC,GACAC,MAUGC,EAAW,IAAI,KAAKF,CAAI,GAAG,OAAO,OAAOC,CAAO,GAAG,EAAE,QAAQE,EAAA,GAAa;"}
@@ -72,3 +72,4 @@ export {
72
72
  S as k,
73
73
  q as l
74
74
  };
75
+ //# sourceMappingURL=DateUtil-CzBmbjmA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateUtil-CzBmbjmA.mjs","sources":["../src/core/utils/DateUtil.ts"],"sourcesContent":["import { addMonths } from 'date-fns/addMonths'\nimport { addQuarters } from 'date-fns/addQuarters'\nimport { addWeeks } from 'date-fns/addWeeks'\nimport { addYears } from 'date-fns/addYears'\nimport { endOfMonth } from 'date-fns/endOfMonth'\nimport { getDay } from 'date-fns/getDay'\nimport { isBefore } from 'date-fns/isBefore'\nimport { nextDay } from 'date-fns/nextDay'\nimport { setDate } from 'date-fns/setDate'\nimport { startOfToday } from 'date-fns/startOfToday'\nimport { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { type Day } from 'date-fns/types'\n\nimport { DATE_FORMATS_INTL, formatDate } from '../constants'\n\nexport const getNextWeeklyDate = (date: Date): Date => {\n const dayOfWeek = getDay(date)\n let nextDate = nextDay(date, dayOfWeek as Day)\n while (isBefore(nextDate, startOfToday())) {\n nextDate = addWeeks(nextDate, 1)\n }\n return nextDate\n}\n\nexport const getNextBiWeeklyDate = (date: Date): Date => {\n let nextDate = date\n while (isBefore(nextDate, startOfToday())) {\n nextDate = addWeeks(nextDate, 2)\n }\n return nextDate\n}\n\nexport const getTwiceMonthlyDates = (day1: number, day2: number): Date[] => {\n const today = startOfToday()\n const [firstDay, secondDay] = [day1, day2].sort((a, b) => a - b)\n const makeDateForDay = (month: Date, day: number) =>\n day >= 28 ? endOfMonth(month) : setDate(month, day)\n\n return [\n makeDateForDay(today, firstDay),\n makeDateForDay(today, secondDay),\n makeDateForDay(addMonths(today, 1), firstDay),\n makeDateForDay(addMonths(today, 1), secondDay),\n makeDateForDay(addMonths(today, 2), firstDay),\n makeDateForDay(addMonths(today, 2), secondDay),\n ]\n}\n\nexport const getNextTwiceMonthlyDate = (day1: number, day2: number): Date => {\n const today = startOfToday()\n const candidates = getTwiceMonthlyDates(day1, day2)\n return candidates.find((c) => !isBefore(c, today)) ?? candidates[candidates.length - 1]\n}\n\nexport const getNextMonthlyDate = (date: Date): Date => {\n let nextDate = setDate(startOfToday(), date.getDate())\n while (isBefore(nextDate, startOfToday())) {\n nextDate = addMonths(nextDate, 1)\n }\n return nextDate\n}\n\nexport const getNextBiMonthlyDate = (date: Date): Date => {\n let nextDate = date\n while (isBefore(nextDate, startOfToday())) {\n nextDate = addMonths(nextDate, 2)\n }\n return nextDate\n}\n\nexport const getNextQuarterlyDate = (date: Date): Date => {\n let nextDate = addQuarters(date, 1)\n while (isBefore(nextDate, startOfToday())) {\n nextDate = addQuarters(nextDate, 1)\n }\n return nextDate\n}\n\nexport const getNextBiQuarterlyDate = (date: Date): Date => {\n let nextDate = date\n while (isBefore(nextDate, startOfToday())) {\n nextDate = addQuarters(nextDate, 2)\n }\n return nextDate\n}\n\nexport const getNextYearlyDate = (date: Date): Date => {\n return addYears(date, 1)\n}\n\nexport const fromUnixUTC = (utcTime: number) => {\n const date = fromUnixTime(utcTime)\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate())\n}\n\nexport const fromUnixToDayOfWeekAndDate = (date: number) =>\n formatDate(fromUnixTime(date), DATE_FORMATS_INTL.DAY_OF_WEEK_MONTH_DAY)\n\nexport const fromTimestampToMonthYear = (timestamp?: number) =>\n timestamp ? formatDate(fromUnixTime(timestamp), DATE_FORMATS_INTL.MONTH_YEAR) : ''\n"],"names":["getNextWeeklyDate","date","dayOfWeek","getDay","nextDate","nextDay","isBefore","startOfToday","addWeeks","getNextBiWeeklyDate","getTwiceMonthlyDates","day1","day2","today","firstDay","secondDay","a","b","makeDateForDay","month","day","endOfMonth","setDate","addMonths","getNextTwiceMonthlyDate","candidates","c","getNextMonthlyDate","getNextBiMonthlyDate","getNextQuarterlyDate","addQuarters","getNextBiQuarterlyDate","getNextYearlyDate","addYears","fromUnixUTC","utcTime","fromUnixTime","fromUnixToDayOfWeekAndDate","formatDate","DATE_FORMATS_INTL","fromTimestampToMonthYear","timestamp"],"mappings":";;;;;;;;;;;;AAeO,MAAMA,IAAoB,CAACC,MAAqB;AACrD,QAAMC,IAAYC,EAAOF,CAAI;AAC7B,MAAIG,IAAWC,EAAQJ,GAAMC,CAAgB;AAC7C,SAAOI,EAASF,GAAUG,EAAA,CAAc;AACtC,IAAAH,IAAWI,EAASJ,GAAU,CAAC;AAEjC,SAAOA;AACT,GAEaK,IAAsB,CAACR,MAAqB;AACvD,MAAIG,IAAWH;AACf,SAAOK,EAASF,GAAUG,EAAA,CAAc;AACtC,IAAAH,IAAWI,EAASJ,GAAU,CAAC;AAEjC,SAAOA;AACT,GAEaM,IAAuB,CAACC,GAAcC,MAAyB;AAC1E,QAAMC,IAAQN,EAAA,GACR,CAACO,GAAUC,CAAS,IAAI,CAACJ,GAAMC,CAAI,EAAE,KAAK,CAACI,GAAGC,MAAMD,IAAIC,CAAC,GACzDC,IAAiB,CAACC,GAAaC,MACnCA,KAAO,KAAKC,EAAWF,CAAK,IAAIG,EAAQH,GAAOC,CAAG;AAEpD,SAAO;AAAA,IACLF,EAAeL,GAAOC,CAAQ;AAAA,IAC9BI,EAAeL,GAAOE,CAAS;AAAA,IAC/BG,EAAeK,EAAUV,GAAO,CAAC,GAAGC,CAAQ;AAAA,IAC5CI,EAAeK,EAAUV,GAAO,CAAC,GAAGE,CAAS;AAAA,IAC7CG,EAAeK,EAAUV,GAAO,CAAC,GAAGC,CAAQ;AAAA,IAC5CI,EAAeK,EAAUV,GAAO,CAAC,GAAGE,CAAS;AAAA,EAAA;AAEjD,GAEaS,IAA0B,CAACb,GAAcC,MAAuB;AAC3E,QAAMC,IAAQN,EAAA,GACRkB,IAAaf,EAAqBC,GAAMC,CAAI;AAClD,SAAOa,EAAW,KAAK,CAACC,MAAM,CAACpB,EAASoB,GAAGb,CAAK,CAAC,KAAKY,EAAWA,EAAW,SAAS,CAAC;AACxF,GAEaE,IAAqB,CAAC1B,MAAqB;AACtD,MAAIG,IAAWkB,EAAQf,EAAA,GAAgBN,EAAK,SAAS;AACrD,SAAOK,EAASF,GAAUG,EAAA,CAAc;AACtC,IAAAH,IAAWmB,EAAUnB,GAAU,CAAC;AAElC,SAAOA;AACT,GAEawB,IAAuB,CAAC3B,MAAqB;AACxD,MAAIG,IAAWH;AACf,SAAOK,EAASF,GAAUG,EAAA,CAAc;AACtC,IAAAH,IAAWmB,EAAUnB,GAAU,CAAC;AAElC,SAAOA;AACT,GAEayB,IAAuB,CAAC5B,MAAqB;AACxD,MAAIG,IAAW0B,EAAY7B,GAAM,CAAC;AAClC,SAAOK,EAASF,GAAUG,EAAA,CAAc;AACtC,IAAAH,IAAW0B,EAAY1B,GAAU,CAAC;AAEpC,SAAOA;AACT,GAEa2B,IAAyB,CAAC9B,MAAqB;AAC1D,MAAIG,IAAWH;AACf,SAAOK,EAASF,GAAUG,EAAA,CAAc;AACtC,IAAAH,IAAW0B,EAAY1B,GAAU,CAAC;AAEpC,SAAOA;AACT,GAEa4B,IAAoB,CAAC/B,MACzBgC,EAAShC,GAAM,CAAC,GAGZiC,IAAc,CAACC,MAAoB;AAC9C,QAAMlC,IAAOmC,EAAaD,CAAO;AACjC,SAAO,IAAI,KAAKlC,EAAK,eAAA,GAAkBA,EAAK,YAAA,GAAeA,EAAK,YAAY;AAC9E,GAEaoC,IAA6B,CAACpC,MACzCqC,EAAWF,EAAanC,CAAI,GAAGsC,EAAkB,qBAAqB,GAE3DC,IAA2B,CAACC,MACvCA,IAAYH,EAAWF,EAAaK,CAAS,GAAGF,EAAkB,UAAU,IAAI;"}
@@ -151,3 +151,4 @@ export {
151
151
  L as s,
152
152
  W as t
153
153
  };
154
+ //# sourceMappingURL=DebtUtils-i4pI2Uoe.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebtUtils-i4pI2Uoe.mjs","sources":["../src/core/constants/Debts.ts","../src/core/utils/DebtUtils.ts"],"sourcesContent":["export const MONTHS = 12\nexport const INTEREST_TO_DECIMAL = 100\n\nexport enum DebtPriority {\n FASTEST_PAYOFF_FIRST = 1,\n HIGHEST_INTEREST = 2,\n LOWEST_BALANCE = 3,\n HIGHEST_BALANCE = 4,\n}\n","import { getDate } from 'date-fns/getDate'\nimport { addMonths } from 'date-fns/addMonths'\nimport { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { getUnixTime } from 'date-fns/getUnixTime'\nimport { startOfMonth } from 'date-fns/startOfMonth'\n\nimport { DebtPriority, INTEREST_TO_DECIMAL, MONTHS } from '../constants/Debts'\nimport { AccountType, type Account, type Debt, type DebtsCopy, type Goal } from '../types'\n\nconst copy = {\n unnamed_label: 'Unnamed Debt',\n}\n\ntype DataPoint = { x: Date; y: number; payment?: number; extra?: number }\ntype Dataset = DataPoint[]\n\nexport interface DebtChartData extends Debt {\n dataset: Dataset\n}\n\ninterface MonthlyPayment {\n balance: number\n interest: number\n payment: number\n principal: number\n timestamp: number\n}\n\ninterface DebtWithPayments extends Debt {\n minimumPayments: MonthlyPayment[]\n minimumFinalPayment?: number | undefined\n}\n\nexport const transformDebtsChartData = (\n debts: Debt[],\n debtPriority: DebtPriority,\n extraPaydown = 0,\n): DebtChartData[] => {\n // Copy debts to avoid overwiting balance during payoff calculation\n const sortedDebts = debts.map((d) => ({ ...d }))\n sortDebtsByPrioriy(sortedDebts, debtPriority)\n\n const currentDate = new Date()\n const chartData: DebtChartData[] = []\n let monthlyExtra = 0\n let priorityCounter = 1\n\n // Initialize chartData for each debt\n for (const debt of sortedDebts) {\n chartData.push({\n ...debt,\n // Start with the initial balance\n dataset: [{ x: new Date(currentDate), y: debt.balance }],\n })\n }\n\n // Process debts using the Snowball method\n while (sortedDebts.some((debt) => debt.balance >= 0.01 && !debt.is_impossible)) {\n let madePayment = false // Track if any payment was made this month\n let hasAppliedSnowballExtra = false // Track if snowball extra has been applied this month\n let hasAppliedExtraPaydown = false // Track if extraPaydown has been applied this month\n\n for (const [index, debt] of sortedDebts.entries()) {\n // Skip if debt is already paid off\n if (debt.balance <= 0.01) continue\n\n const dataset = chartData[index].dataset\n const interestRate = (debt.interest_rate ?? 0) / 100\n const monthlyRate = interestRate / 12\n const monthlyInterest = debt.balance * monthlyRate\n const baseMonthlyPayment = debt.monthly_payment ?? 0\n let monthlyPayment = baseMonthlyPayment\n let extraThisMonth = 0\n\n // Add extra payment to the highest priority unpaid debt (first unpaid debt in sorted order)\n if (!hasAppliedExtraPaydown && extraPaydown > 0) {\n monthlyPayment += extraPaydown\n hasAppliedExtraPaydown = true\n }\n\n // Add snowball extra payment to the highest priority unpaid debt\n if (!hasAppliedSnowballExtra && monthlyExtra > 0) {\n extraThisMonth = monthlyExtra\n hasAppliedSnowballExtra = true\n }\n\n // Apply interest before payment\n debt.balance += monthlyInterest\n // Apply monthly payment with any extra payment from snowball\n const appliedPayment = Math.min(debt.balance, monthlyPayment + extraThisMonth)\n\n // If payment doesn't reduce balance, mark as stagnant\n if (appliedPayment <= monthlyInterest) {\n debt.is_impossible = true\n chartData[index].is_impossible = true\n chartData[index].priority = undefined\n dataset.push({ x: new Date(currentDate), y: debt.balance })\n continue\n }\n\n debt.balance -= appliedPayment\n // Avoid floating-point precision issues\n debt.balance = debt.balance < 0.01 ? 0 : debt.balance\n // Add a data point for the current debt balance\n dataset.push({\n x: new Date(currentDate),\n y: Math.max(0, debt.balance),\n payment: appliedPayment,\n extra: extraThisMonth,\n })\n\n // Roll over payments when debt gets paid off (snowball effect)\n // Only roll over the base monthly payment to avoid double-counting extraPaydown\n if (debt.balance <= 0) {\n monthlyExtra += baseMonthlyPayment\n chartData[index].projected_payoff_date = new Date(currentDate)\n }\n\n if (appliedPayment > 0) madePayment = true\n }\n\n if (madePayment) currentDate.setMonth(currentDate.getMonth() + 1)\n }\n\n // Don't project a debt as paid off until missing info is provided\n chartData.forEach((d) => {\n if (d.interest_rate === undefined || d.monthly_payment === undefined) {\n d.projected_payoff_date = undefined\n }\n })\n\n // Set priorities after all calculations\n chartData.forEach((debt) => {\n debt.priority = !debt.is_paid_off && !debt.is_impossible ? priorityCounter++ : undefined\n })\n\n return chartData\n}\n\nexport const buildEmptyStateProps = (\n copy: DebtsCopy,\n hasAggregation: boolean,\n handler: () => void,\n) => ({\n description: hasAggregation\n ? copy.empty_state_description\n : copy.empty_state_description_no_aggregation,\n header: hasAggregation ? copy.empty_state_header : copy.empty_state_header_no_aggregation,\n onClickHandler: hasAggregation ? handler : undefined,\n primaryButton: hasAggregation ? copy.connect_accounts : undefined,\n})\n\nexport function loadDebts(accounts: Account[], goals: Goal[]): Debt[] {\n const debtAccounts = accounts.filter((acc) => {\n // Exclude checking line of credit accounts with positive balance\n // Q: Because CLOC spending is represented by negative? (this logic is from raja)\n if (acc.account_type === AccountType.CHECKING_LINE_OF_CREDIT) {\n return Number(acc.balance) <= 0\n }\n // Exclude explicity excluded acccounts\n return acc.is_excluded_from_debts !== true\n })\n\n // Creat debts with associated goals\n const goalDebts = goals\n .filter((goal) => debtAccounts.some((acc) => acc.guid === goal.account_guid))\n .map((goal) =>\n createDebt(debtAccounts.find((acc) => acc.guid === goal.account_guid) as Account, goal),\n )\n\n // Create debts without associated goals, but are based on liabity accounts\n const liabilityDebts = debtAccounts\n .filter((acc) => !goalDebts.some((debt) => debt.account.guid === acc.guid))\n .map((account) => createDebt(account))\n\n return [...goalDebts, ...liabilityDebts]\n}\n\nexport function createDebt(account: Account, goal?: Goal): Debt {\n const debt = { account, goal, guid: account.guid } as Debt\n\n if (goal) {\n // Derive next payment date; default to 1st of month\n const paymentDay = goal.payment_due_at ? getDate(fromUnixTime(goal.payment_due_at)) : 1\n const paymentDueDate = startOfMonth(new Date()).setDate(paymentDay)\n\n debt.balance = Math.abs(goal.amount - goal.current_amount)\n debt.interest_rate = goal.interest_rate\n debt.is_paid_off = goal.is_complete\n debt.monthly_payment = goal.monthly_payment\n debt.name = goal.name\n debt.original_balance = goal.initial_amount // TODO: Does a debt need this?\n debt.payment_due_date = paymentDueDate\n } else {\n // Derive next payment date; default to 1st of month\n const paymentDay = account.payment_due_at ? getDate(fromUnixTime(account.payment_due_at)) : 1\n const paymentDueDate = startOfMonth(new Date()).setDate(paymentDay)\n const balance = account.balance ?? 0\n const monthlyPayment = account.minimum_payment ?? undefined\n const rate = account.interest_rate ?? account.apr ?? account.apy\n\n debt.balance = Math.max(balance, 0) // Don't use overpaid/negative balances for debt calculations\n debt.interest_rate = rate\n debt.is_paid_off = balance === 0\n debt.monthly_payment = monthlyPayment\n debt.name = account?.name ?? copy.unnamed_label\n debt.original_balance = account.original_balance // TODO: Does a debt need this?\n debt.payment_due_date = paymentDueDate\n }\n\n debt.is_impossible = false\n debt.priority = undefined\n debt.projected_payoff_date = undefined\n\n return debt\n}\n\nexport const calculateFinalPayment = (monthlyPayments: MonthlyPayment[]) => {\n const lastPayment = monthlyPayments[monthlyPayments.length - 1] || {}\n\n return lastPayment.timestamp\n}\n\n// Sorts (in place) the passed debts array, according to the given priority\nexport const sortDebtsByPrioriy = (debts: Debt[], debtPriority: DebtPriority) => {\n // Separate valid debts that can be prioritized from those that can't be\n\n const [activeDebts, inactiveDebts] = debts.reduce<[DebtWithPayments[], DebtWithPayments[]]>(\n ([active, inactive], debt) => {\n if (debt.is_paid_off || debt.is_impossible) {\n inactive.push({ ...debt, minimumPayments: [] })\n } else {\n active.push(calculateMinimumPayments(debt))\n }\n return [active, inactive]\n },\n [[], []],\n )\n\n switch (debtPriority) {\n case DebtPriority.FASTEST_PAYOFF_FIRST:\n activeDebts.sort((a, b) => (a.minimumFinalPayment ?? 0) - (b.minimumFinalPayment ?? 0))\n break\n case DebtPriority.HIGHEST_INTEREST:\n activeDebts.sort((a, b) => (b.interest_rate ?? 0) - (a.interest_rate ?? 0))\n break\n case DebtPriority.LOWEST_BALANCE:\n activeDebts.sort((a, b) => a.balance - b.balance)\n break\n case DebtPriority.HIGHEST_BALANCE:\n activeDebts.sort((a, b) => b.balance - a.balance)\n break\n default:\n activeDebts.sort((a, b) => a.balance - b.balance) // Default to lowest balance\n }\n\n // Reorder debts to begin with sorted/active and end with paid/impossible\n debts.splice(0, debts.length, ...activeDebts, ...inactiveDebts)\n}\n\nconst calculateMinimumPayments = (debt: Debt): DebtWithPayments => {\n const { monthly_payment, interest_rate, balance, payment_due_date } = debt\n const paymentCount = getPaymentCount(balance, interest_rate ?? 0, monthly_payment ?? 0)\n\n const minimumPayments = getMonthlyPayments(\n paymentCount,\n balance,\n interest_rate ?? 0,\n monthly_payment ?? 0,\n payment_due_date,\n )\n\n const minimumFinalPayment = calculateFinalPayment(minimumPayments)\n\n return {\n ...debt,\n minimumFinalPayment,\n minimumPayments,\n }\n}\n\nconst getPaymentCount = (\n balance: number,\n interestRate: number | undefined = 0,\n minimumPayment: number | undefined = 0,\n) => {\n if (minimumPayment === 0) return 0\n\n const monthlyInterestRate = interestRate / (MONTHS * INTEREST_TO_DECIMAL)\n\n return Math.ceil(\n monthlyInterestRate === 0\n ? balance / minimumPayment\n : -Math.log(1 - (monthlyInterestRate * balance) / minimumPayment) /\n Math.log(1 + monthlyInterestRate),\n )\n}\n\nconst getMonthlyPayments = (\n paymentCount: number,\n startingBalance: number,\n interestRate: number,\n scheduledPayment: number,\n startingDate: number,\n) => {\n const monthlyPayments = []\n // If the interest rate is zero, getting the monthly payment is easier, so\n // keep its logic separate from actual interest rate calculations.\n\n if (interestRate === 0) {\n for (let i = 0; i < paymentCount; i++) {\n const newBalance = startingBalance - scheduledPayment * (i + 1)\n const prevBalance = startingBalance - scheduledPayment * i\n const payment = newBalance >= 0 ? scheduledPayment : prevBalance\n monthlyPayments.push({\n balance: newBalance >= 0 ? newBalance : 0,\n interest: interestRate,\n payment,\n principal: payment,\n timestamp: getUnixTime(\n addMonths(\n fromUnixTime(startingDate), // convert seconds → Date\n i + 1, // add (index + 1) months\n ),\n ),\n })\n }\n return monthlyPayments\n }\n const monthlyRate = interestRate / 1200\n\n for (let index = 0; index < paymentCount; index++) {\n const timestamp = getUnixTime(addMonths(fromUnixTime(startingDate), index + 1))\n\n const priorPow = Math.pow(1 + monthlyRate, index)\n const priorBalance =\n startingBalance * priorPow - scheduledPayment * ((priorPow - 1) / monthlyRate)\n\n const pow = Math.pow(1 + monthlyRate, index + 1)\n const balance = startingBalance * pow - scheduledPayment * ((pow - 1) / monthlyRate)\n\n const payment = scheduledPayment + Math.min(balance, 0)\n const interest = priorBalance * monthlyRate\n\n monthlyPayments.push({\n balance: Math.max(0, balance),\n interest,\n payment,\n principal: payment - interest,\n timestamp,\n })\n }\n\n return monthlyPayments\n}\n"],"names":["MONTHS","INTEREST_TO_DECIMAL","DebtPriority","copy","transformDebtsChartData","debts","debtPriority","extraPaydown","sortedDebts","d","sortDebtsByPrioriy","currentDate","chartData","monthlyExtra","priorityCounter","debt","madePayment","hasAppliedSnowballExtra","hasAppliedExtraPaydown","index","dataset","monthlyRate","monthlyInterest","baseMonthlyPayment","monthlyPayment","extraThisMonth","appliedPayment","buildEmptyStateProps","hasAggregation","handler","loadDebts","accounts","goals","debtAccounts","acc","AccountType","goalDebts","goal","createDebt","liabilityDebts","account","paymentDay","getDate","fromUnixTime","paymentDueDate","startOfMonth","balance","rate","calculateFinalPayment","monthlyPayments","activeDebts","inactiveDebts","active","inactive","calculateMinimumPayments","a","b","monthly_payment","interest_rate","payment_due_date","paymentCount","getPaymentCount","minimumPayments","getMonthlyPayments","minimumFinalPayment","interestRate","minimumPayment","monthlyInterestRate","startingBalance","scheduledPayment","startingDate","i","newBalance","prevBalance","payment","getUnixTime","addMonths","timestamp","priorPow","priorBalance","pow","interest"],"mappings":"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"}
@@ -64,3 +64,4 @@ const W = ({
64
64
  export {
65
65
  W as D
66
66
  };
67
+ //# sourceMappingURL=Dialog-Bvd2n8hz.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog-Bvd2n8hz.mjs","sources":["../src/common/components/dialog/Dialog.tsx"],"sourcesContent":["import React from 'react'\n\nimport MuiDialog from '@mui/material/Dialog'\nimport { DialogProps as MuiDialogProps } from '@mui/material/Dialog'\nimport DialogContent from '@mui/material/DialogContent'\n\nimport { DialogFooter, DialogHeader } from '@mxenabled/mxui'\nimport { useScreenSize } from '../../hooks'\n\nexport type CopyObject = {\n close_aria?: string\n title: string\n}\n\nexport interface DialogProps extends Omit<MuiDialogProps, 'open'> {\n className?: string\n copy: CopyObject\n disablePrimaryButton?: boolean\n isOpen: boolean\n onClose: () => void\n onPrimaryAction?: () => void\n onSecondaryAction?: () => void\n primaryColor?: 'primary' | 'inherit' | 'secondary' | 'success' | 'error' | 'info' | 'warning'\n primaryText?: string\n secondaryColor?: 'primary' | 'inherit' | 'secondary' | 'success' | 'error' | 'info' | 'warning'\n secondaryText?: string\n}\n\nconst Dialog: React.FC<React.PropsWithChildren<DialogProps>> = ({\n className,\n copy,\n disablePrimaryButton = false,\n isOpen = false,\n onClose,\n onPrimaryAction,\n primaryColor = 'primary',\n primaryText = 'Confirm',\n onSecondaryAction,\n secondaryColor = 'primary',\n secondaryText = 'Cancel',\n children,\n ...rest\n}) => {\n const title = copy?.title ?? ''\n const closeAria = copy?.close_aria ?? 'Close'\n\n const { isSmallMobile } = useScreenSize()\n\n const handlePrimaryAction = () => {\n onPrimaryAction?.()\n onClose()\n }\n\n const handleSecondaryAction = () => {\n if (onSecondaryAction) {\n onSecondaryAction()\n }\n onClose()\n }\n\n return (\n <div className={`mx-cmn-dialog ${className}`}>\n <MuiDialog\n aria-label={title}\n aria-labelledby={undefined}\n maxWidth=\"xs\"\n onClose={onClose}\n open={isOpen}\n slotProps={{\n paper: { 'aria-label': title },\n }}\n sx={{\n '& .MuiDialog-paperScrollPaper': {\n backgroundColor: 'background.default',\n },\n ...(isSmallMobile && { '& .MuiDialog-paper': { minWidth: '100%' } }),\n height: '100%',\n }}\n {...rest}\n >\n <DialogHeader copy={{ title, close_aria: closeAria }} onClose={onClose} truncate={true} />\n\n <DialogContent sx={{ lineHeight: 1.5 }}>{children}</DialogContent>\n\n <DialogFooter\n isPrimaryDisabled={disablePrimaryButton}\n onPrimaryAction={handlePrimaryAction}\n onSecondaryAction={handleSecondaryAction}\n primaryColor={primaryColor}\n primaryText={primaryText}\n secondaryColor={secondaryColor}\n secondaryText={secondaryText}\n />\n </MuiDialog>\n </div>\n )\n}\n\nexport default Dialog\n"],"names":["Dialog","className","copy","disablePrimaryButton","isOpen","onClose","onPrimaryAction","primaryColor","primaryText","onSecondaryAction","secondaryColor","secondaryText","children","rest","title","closeAria","isSmallMobile","useScreenSize","handlePrimaryAction","handleSecondaryAction","jsx","jsxs","MuiDialog","DialogHeader","DialogContent","DialogFooter"],"mappings":";;;;;AA4BA,MAAMA,IAAyD,CAAC;AAAA,EAC9D,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,sBAAAC,IAAuB;AAAA,EACvB,QAAAC,IAAS;AAAA,EACT,SAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,aAAAC,IAAc;AAAA,EACd,mBAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,eAAAC,IAAgB;AAAA,EAChB,UAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAQZ,GAAM,SAAS,IACvBa,IAAYb,GAAM,cAAc,SAEhC,EAAE,eAAAc,EAAA,IAAkBC,EAAA,GAEpBC,IAAsB,MAAM;AAChC,IAAAZ,IAAA,GACAD,EAAA;AAAA,EACF,GAEMc,IAAwB,MAAM;AAClC,IAAIV,KACFA,EAAA,GAEFJ,EAAA;AAAA,EACF;AAEA,SACE,gBAAAe,EAAC,OAAA,EAAI,WAAW,iBAAiBnB,CAAS,IACxC,UAAA,gBAAAoB;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,cAAYR;AAAA,MACZ,mBAAiB;AAAA,MACjB,UAAS;AAAA,MACT,SAAAT;AAAA,MACA,MAAMD;AAAA,MACN,WAAW;AAAA,QACT,OAAO,EAAE,cAAcU,EAAA;AAAA,MAAM;AAAA,MAE/B,IAAI;AAAA,QACF,iCAAiC;AAAA,UAC/B,iBAAiB;AAAA,QAAA;AAAA,QAEnB,GAAIE,KAAiB,EAAE,sBAAsB,EAAE,UAAU,SAAO;AAAA,QAChE,QAAQ;AAAA,MAAA;AAAA,MAET,GAAGH;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAO,EAACG,GAAA,EAAa,MAAM,EAAE,OAAAT,GAAO,YAAYC,KAAa,SAAAV,GAAkB,UAAU,GAAA,CAAM;AAAA,0BAEvFmB,GAAA,EAAc,IAAI,EAAE,YAAY,IAAA,GAAQ,UAAAZ,GAAS;AAAA,QAElD,gBAAAQ;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,mBAAmBtB;AAAA,YACnB,iBAAiBe;AAAA,YACjB,mBAAmBC;AAAA,YACnB,cAAAZ;AAAA,YACA,aAAAC;AAAA,YACA,gBAAAE;AAAA,YACA,eAAAC;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -86,3 +86,4 @@ const _ = 100, v = 140, B = 10, K = ({
86
86
  export {
87
87
  K as D
88
88
  };
89
+ //# sourceMappingURL=Donut-SzzfZDHF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Donut-SzzfZDHF.mjs","sources":["../src/common/components/charts/Donut.tsx"],"sourcesContent":["import React from 'react'\nimport { arc, selectAll, interpolateString } from 'd3'\n\nimport Box from '@mui/material/Box'\nimport { darken, lighten, useTheme } from '@mui/material/styles'\n\nconst INNER_RADIUS = 100\nconst OUT_RADIUS = 140\nconst SELECTION_RADIUS = 10\n\nexport interface DonutData {\n id: string\n label?: string\n color: string\n value: number\n}\n\nexport interface DonutProps {\n data: DonutData[]\n hoveredId?: string\n onClick?: (id: string) => void\n onMouseEnter?: (id: string) => void\n onMouseLeave?: (id: string) => void\n selectedId?: string\n size?: number\n}\n\nconst Donut: React.FC<React.PropsWithChildren<DonutProps>> = ({\n data,\n hoveredId,\n onClick,\n onMouseEnter,\n onMouseLeave,\n selectedId,\n size = 300,\n children,\n}) => {\n const theme = useTheme()\n let offset = 0\n\n const handleKeyDown = (event: React.KeyboardEvent, id: string) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n onClick?.(id)\n }\n }\n\n const handleFocus = (id: string) => {\n onMouseEnter?.(id)\n }\n\n const handleBlur = (id: string) => {\n onMouseLeave?.(id)\n }\n\n React.useEffect(() => {\n selectAll('.arc-outer')\n .transition('roll')\n .duration(500)\n .attrTween('transform', () => interpolateString('rotate(0)', 'rotate(360)'))\n }, [])\n\n return (\n <Box height={size} position=\"relative\" width={size}>\n <Box height=\"100%\" width=\"100%\">\n {children}\n </Box>\n <svg\n height={size}\n style={{ position: 'absolute', top: 0, left: 0, touchAction: 'manipulation' }}\n viewBox={`-150 -150 300 300`}\n width={size}\n >\n <style>\n {`\n .arc-outer:focus,\n .arc-outer:focus-visible {\n stroke: ${theme.palette.primary.main};\n stroke-width: 3;\n stroke-opacity: 0.8;\n }\n `}\n </style>\n <g>\n {data.map((item) => {\n const startAngle = offset\n offset = offset + 2 * Math.PI * (item.value / 100)\n const endAngle = offset\n\n const segment = arc().cornerRadius(4)({\n innerRadius: INNER_RADIUS,\n outerRadius:\n OUT_RADIUS +\n (item.id === selectedId || item.id === hoveredId ? SELECTION_RADIUS : 0),\n startAngle,\n endAngle,\n padAngle: 0.025,\n }) as string\n\n return (\n <path\n aria-label={item.label || `Segment ${item.id}`}\n aria-pressed={item.id === selectedId}\n className=\"arc-outer\"\n d={segment}\n fill={item.color}\n key={item.id}\n onBlur={() => handleBlur(item.id)}\n onClick={() => onClick?.(item.id)}\n onFocus={() => handleFocus(item.id)}\n onKeyDown={(e) => handleKeyDown(e, item.id)}\n onMouseEnter={() => onMouseEnter?.(item.id)}\n onMouseLeave={() => onMouseLeave?.(item.id)}\n role=\"button\"\n stroke={\n theme.palette.mode === 'light'\n ? darken(item.color, 0.3)\n : lighten(item.color, 0.3)\n }\n strokeWidth={2}\n style={{\n cursor: 'pointer',\n outline: 'none',\n }}\n tabIndex={0}\n />\n )\n })}\n </g>\n </svg>\n </Box>\n )\n}\n\nexport default Donut\n"],"names":["INNER_RADIUS","OUT_RADIUS","SELECTION_RADIUS","Donut","data","hoveredId","onClick","onMouseEnter","onMouseLeave","selectedId","size","children","theme","useTheme","offset","handleKeyDown","event","id","handleFocus","handleBlur","React","selectAll","interpolateString","Box","jsx","jsxs","item","startAngle","endAngle","segment","arc","e","darken","lighten"],"mappings":"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"}
@@ -172,3 +172,4 @@ const $ = ({
172
172
  export {
173
173
  R as D
174
174
  };
175
+ //# sourceMappingURL=Drawer-DsnW2o0v.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer-DsnW2o0v.mjs","sources":["../src/common/components/drawer/Footer.tsx","../src/common/components/drawer/Header.tsx","../src/common/components/drawer/Drawer.tsx"],"sourcesContent":["import Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport { type SxProps } from '@mui/material/styles'\n\ntype Color = 'primary' | 'inherit' | 'secondary' | 'success' | 'error' | 'info' | 'warning'\n\ntype FooterProps = {\n footerStyles?: SxProps\n hasSecondaryAction?: boolean\n isPrimaryDisabled?: boolean\n onPrimaryAction?: () => void\n onSecondaryAction?: () => void\n primaryButtonProps?: React.ComponentProps<typeof Button>\n primaryColor?: Color\n primaryText?: string\n secondaryColor?: Color\n secondaryText?: string\n}\n\nconst Footer = ({\n footerStyles = {},\n hasSecondaryAction = true,\n isPrimaryDisabled,\n onPrimaryAction,\n onSecondaryAction,\n primaryButtonProps = {},\n primaryColor = 'primary',\n primaryText = 'Save',\n secondaryColor = 'primary',\n secondaryText = 'Cancel',\n}: FooterProps) => {\n return (\n <Stack\n sx={{\n bgcolor: 'background.paper',\n flexDirection: 'row',\n gap: 16,\n justifyContent: 'flex-end',\n p: 24,\n ...footerStyles,\n }}\n >\n {hasSecondaryAction && (\n <Button\n color={secondaryColor}\n onClick={onSecondaryAction}\n variant={onPrimaryAction ? 'outlined' : 'contained'}\n >\n {secondaryText}\n </Button>\n )}\n\n {onPrimaryAction && (\n <Button\n {...primaryButtonProps}\n color={primaryColor}\n disabled={isPrimaryDisabled}\n onClick={onPrimaryAction}\n variant=\"contained\"\n >\n {primaryText}\n </Button>\n )}\n </Stack>\n )\n}\n\nexport default Footer\n","import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport IconButton from '@mui/material/IconButton'\n\nimport { ArrowBack } from '@mxenabled/mx-icons'\n\nimport { H2 } from '@mxenabled/mxui'\n\ninterface DrawerHeaderProps {\n ariaLabelClose: string\n onClose: () => void\n shouldShowBorders: boolean\n shouldShowShadow?: boolean\n title: string\n}\n\nconst DrawerHeader: React.FC<DrawerHeaderProps> = ({\n ariaLabelClose,\n onClose,\n shouldShowBorders,\n shouldShowShadow,\n title,\n}) => {\n return (\n <Stack\n aria-labelledby={`${title?.replace(/\\s+/g, '-').toLowerCase()}-header-title`}\n direction=\"row\"\n sx={{\n alignItems: 'center',\n backgroundColor: 'background.paper',\n ...(shouldShowBorders && {\n borderBottom: 1,\n borderColor: 'divider',\n }),\n ...(shouldShowShadow && {\n boxShadow: '0px 2px 8px 0px #6A73811F',\n }),\n padding: '8px 8px 8px 8px',\n }}\n >\n <IconButton aria-label={ariaLabelClose} autoFocus={true} color=\"primary\" onClick={onClose}>\n <ArrowBack color=\"primary\" sx={{ fontSize: 22 }} />\n </IconButton>\n <Box\n sx={{\n flexGrow: 1,\n margin: 'auto',\n textAlign: 'center',\n }}\n >\n <H2\n bold={true}\n id={`${title?.replace(/\\s+/g, '-').toLowerCase()}-header-title`}\n variant=\"body1\"\n >\n {title}\n </H2>\n </Box>\n {/* placeholder for when we add a button here, this also ensures the title text is centered */}\n <Box width=\"44px\" />\n </Stack>\n )\n}\n\nexport default DrawerHeader\n","import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport type { SxProps } from '@mui/material/styles'\n\nimport { Drawer as KMuiDrawer } from '@mxenabled/mxui'\n\nimport Footer from './Footer'\nimport Header from './Header'\n\nexport type CopyObject = {\n close_drawer_aria: string\n}\n\ninterface DrawerProps {\n ariaLabelClose?: string\n className?: string\n footerStyles?: SxProps\n hasSecondaryAction?: boolean\n id?: string\n isOpen: boolean\n isPrimaryDisabled?: boolean\n onClose: () => void\n onPrimaryAction?: () => void\n onSecondaryAction?: () => void\n primaryButtonProps?: React.ComponentProps<typeof Button>\n primaryColor?: 'primary' | 'inherit' | 'secondary' | 'success' | 'error' | 'info' | 'warning'\n primaryText?: string\n secondaryColor?: 'primary' | 'inherit' | 'secondary' | 'success' | 'error' | 'info' | 'warning'\n secondaryText?: string\n shouldShowHeaderBorders?: boolean\n shouldShowHeaderShadow?: boolean\n sx?: SxProps\n title: string\n}\n\nconst Drawer: React.FC<React.PropsWithChildren<DrawerProps>> = ({\n ariaLabelClose = 'Close',\n children,\n footerStyles = {},\n hasSecondaryAction = true,\n id,\n isOpen,\n isPrimaryDisabled,\n onClose,\n onPrimaryAction,\n onSecondaryAction,\n primaryButtonProps,\n primaryColor = 'primary',\n primaryText,\n secondaryColor = 'secondary',\n secondaryText,\n shouldShowHeaderBorders = true,\n shouldShowHeaderShadow = false,\n title,\n ...rest\n}) => {\n return (\n <KMuiDrawer\n id={id}\n isOpen={isOpen}\n onClose={onClose}\n slotProps={{\n paper: {\n 'aria-labelledby': `${title?.replace(/\\s+/g, '-').toLowerCase()}-header-title`,\n },\n }}\n sx={{\n '& .MuiDrawer-paper': {\n backgroundColor: 'background.default',\n borderRadius: 0,\n },\n height: '100%',\n '& .MuiToolbar-root': {\n backgroundColor: 'background.paper',\n },\n }}\n {...rest}\n >\n <Stack height=\"100%\" justifyContent=\"space-between\">\n <Header\n ariaLabelClose={ariaLabelClose}\n onClose={onClose}\n shouldShowBorders={shouldShowHeaderBorders}\n shouldShowShadow={shouldShowHeaderShadow}\n title={title}\n />\n\n <Box height=\"100%\" overflow=\"auto\">\n {children}\n </Box>\n\n {onPrimaryAction && (\n <Footer\n footerStyles={footerStyles}\n hasSecondaryAction={hasSecondaryAction}\n isPrimaryDisabled={isPrimaryDisabled}\n onPrimaryAction={onPrimaryAction}\n onSecondaryAction={onSecondaryAction ?? onClose}\n primaryButtonProps={primaryButtonProps}\n primaryColor={primaryColor}\n primaryText={primaryText}\n secondaryColor={secondaryColor}\n secondaryText={secondaryText}\n />\n )}\n </Stack>\n </KMuiDrawer>\n )\n}\n\nexport default Drawer\n"],"names":["Footer","footerStyles","hasSecondaryAction","isPrimaryDisabled","onPrimaryAction","onSecondaryAction","primaryButtonProps","primaryColor","primaryText","secondaryColor","secondaryText","jsxs","Stack","jsx","Button","DrawerHeader","ariaLabelClose","onClose","shouldShowBorders","shouldShowShadow","title","IconButton","ArrowBack","Box","H2","Drawer","children","id","isOpen","shouldShowHeaderBorders","shouldShowHeaderShadow","rest","KMuiDrawer","Header"],"mappings":"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"}