udp-react-enterprise-component-library 25.18.1-beta.64 → 25.18.1-beta.66

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 (86) hide show
  1. package/dist/AgTable-B2xTzAm2.js.map +1 -1
  2. package/dist/AmChart-CTixft8X.js.map +1 -1
  3. package/dist/{AmbientToggleButtonGroup-Bi9yW5gC.js → AmbientToggleButtonGroup-DgFod3VK.js} +1 -1
  4. package/dist/{AmbientToggleButtonGroup-Bi9yW5gC.js.map → AmbientToggleButtonGroup-DgFod3VK.js.map} +1 -1
  5. package/dist/{AmbientVisualizationCard-BmTQR121.js → AmbientVisualizationCard-CAxx4QWe.js} +2 -2
  6. package/dist/{AmbientVisualizationCard-BmTQR121.js.map → AmbientVisualizationCard-CAxx4QWe.js.map} +1 -1
  7. package/dist/AuthProvider-J79EBNDc.js.map +1 -1
  8. package/dist/DashboardWidget-CsOrr74H.js.map +1 -1
  9. package/dist/Field-Cda5rJe2.js.map +1 -1
  10. package/dist/Form-DbOA5j38.js.map +1 -1
  11. package/dist/FormButtons-BTCO-pzW.js.map +1 -1
  12. package/dist/LayoutUnit-D4jJvonh.js.map +1 -1
  13. package/dist/MenuProvider-BqEZve2y.js.map +1 -1
  14. package/dist/{Notes-YAF2dipI.js → Notes-BPaEmexk.js} +2 -2
  15. package/dist/{Notes-YAF2dipI.js.map → Notes-BPaEmexk.js.map} +1 -1
  16. package/dist/NumberOperator-p4HsHHx3.js.map +1 -1
  17. package/dist/PAHAdditionalRightComponent-DMOU9Mho.js.map +1 -1
  18. package/dist/PDFViewer-B4nJKbIy.js.map +1 -1
  19. package/dist/PageContext-BpOBJHpb.js.map +1 -1
  20. package/dist/{PaymentForm-DFJrSIy8.js → PaymentForm-Dum5p1mf.js} +2 -2
  21. package/dist/PaymentForm-Dum5p1mf.js.map +1 -0
  22. package/dist/PrimaryActionHeader-DBJpROPu.js.map +1 -1
  23. package/dist/SearchOperator-D9838PIe.js.map +1 -1
  24. package/dist/SearchUtilities-DUW0kaw_.js.map +1 -1
  25. package/dist/TenantProvider-BeFMHYP8.js.map +1 -1
  26. package/dist/{TrimForAvatar-BmM2bU6E.js → TrimForAvatar-BP1gZWd5.js} +1 -1
  27. package/dist/{TrimForAvatar-BmM2bU6E.js.map → TrimForAvatar-BP1gZWd5.js.map} +1 -1
  28. package/dist/UI/dataDisplay/notes/index.js +1 -1
  29. package/dist/UI/inputs/buttons/UdpActionCard/index.js +1 -1
  30. package/dist/UI/inputs/buttons/index.js +3 -3
  31. package/dist/UI/surfaces/cards/chartDisplayCards/index.js +1 -1
  32. package/dist/{UdpActionCard-D-YAYE-C.js → UdpActionCard-VtAacuCM.js} +1 -1
  33. package/dist/{UdpActionCard-D-YAYE-C.js.map → UdpActionCard-VtAacuCM.js.map} +1 -1
  34. package/dist/UdpAppProvider-DXgzyeHZ.js.map +1 -1
  35. package/dist/UdpBarChart-D2bfgm7n.js.map +1 -1
  36. package/dist/UdpMapToolbar-B410Zi_h.js.map +1 -1
  37. package/dist/{UdpTransactionTypesPage-CWA-n7y0.js → UdpTransactionTypesPage-DgFxT4pz.js} +138 -32
  38. package/dist/UdpTransactionTypesPage-DgFxT4pz.js.map +1 -0
  39. package/dist/{UdpTransactionsPage-CDyNjmyo.js → UdpTransactionsPage-KgkwaNGG.js} +28 -28
  40. package/dist/UdpTransactionsPage-KgkwaNGG.js.map +1 -0
  41. package/dist/UnityIconLibrary-CjIwzfjv.js.map +1 -1
  42. package/dist/actionSummary-D0CwyTXJ.js.map +1 -1
  43. package/dist/advancedSearchBuilder-7ixhIwLW.js.map +1 -1
  44. package/dist/aggridHelpers-BvrSzjdD.js.map +1 -1
  45. package/dist/apiHelpers-WIR8pqy0.js.map +1 -1
  46. package/dist/auth-BWJ4-JF-.js.map +1 -1
  47. package/dist/{buttons-CuLiERQe.js → buttons-DyKpA2qY.js} +1 -1
  48. package/dist/{buttons-CuLiERQe.js.map → buttons-DyKpA2qY.js.map} +1 -1
  49. package/dist/catalogStore-DP2GxpTJ.js.map +1 -1
  50. package/dist/charts-pX01x8rO.js.map +1 -1
  51. package/dist/form-Dj1zVw6K.js.map +1 -1
  52. package/dist/hooks-BNndjGer.js.map +1 -1
  53. package/dist/index.js +7 -7
  54. package/dist/lookupsStore-DPI8oD9R.js.map +1 -1
  55. package/dist/maps-BgmvNpkU.js.map +1 -1
  56. package/dist/newGrid-zmtQXU5G.js.map +1 -1
  57. package/dist/profile-7BieC5qc.js.map +1 -1
  58. package/dist/shellStore-C8zfPsZ-.js.map +1 -1
  59. package/dist/stepper-BaIo_Rol.js.map +1 -1
  60. package/dist/{stringUtils-B2JFmevx.js → stringUtils-CLVoXAz_.js} +1 -1
  61. package/dist/{stringUtils-B2JFmevx.js.map → stringUtils-CLVoXAz_.js.map} +1 -1
  62. package/dist/teleporterStore-CjUFtATo.js.map +1 -1
  63. package/dist/tenantStore-CFYu7ndZ.js.map +1 -1
  64. package/dist/types/src/udp/pages/UdpTransactionTypesPage/UdpTransactionTypesPage.d.ts.map +1 -1
  65. package/dist/types/src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeForm.d.ts.map +1 -1
  66. package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeSidesheet.d.ts.map +1 -1
  67. package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionGrid.d.ts.map +1 -1
  68. package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/AttachmentTransaction.d.ts.map +1 -1
  69. package/dist/types/src/utilities/transactions/useTransactionEngine.d.ts.map +1 -1
  70. package/dist/types/tsconfig.tsbuildinfo +1 -1
  71. package/dist/udp/pages/UdpPages/index.js +2 -2
  72. package/dist/udp/pages/UdpTransactionTypesPage/index.js +1 -1
  73. package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
  74. package/dist/useAuthedUser-Bhr7Yhlg.js.map +1 -1
  75. package/dist/useQueryExecutors-DuuHrj2M.js.map +1 -1
  76. package/dist/useUser-wpHGo6jU.js.map +1 -1
  77. package/dist/utilities/form/paymentForm/index.js +1 -1
  78. package/dist/utilities/index.js +2 -2
  79. package/dist/workflowStore-CCoN5uHd.js.map +1 -1
  80. package/export-map.json +1 -1
  81. package/package.json +1 -1
  82. package/dist/PaymentForm-DFJrSIy8.js.map +0 -1
  83. package/dist/UdpTransactionTypesPage-CWA-n7y0.js.map +0 -1
  84. package/dist/UdpTransactionsPage-CDyNjmyo.js.map +0 -1
  85. /package/dist/{iconLibrary-Bw7pnkIf.js → iconLibrary-CMA3TPMW.js} +0 -0
  86. /package/dist/{utilities-C1bpHZ4f.js → utilities-WN7twALD.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"newGrid-zmtQXU5G.js","names":["EntityMaintenanceUdpGrid: React.FC<any>","searchObject"],"sources":["../src/UI/templates/newGrid/EntityMaintenanceUdpGrid.tsx","../src/UI/templates/newGrid/BackwardsCompatibleGrid.jsx","../src/UI/templates/newGrid/ApiMethodInstanceUdpGrid.jsx","../src/UI/templates/newGrid/ServerSideUdpGrid.jsx"],"sourcesContent":["import React from 'react'\nimport { EntityMaintenanceGrid } from 'udp-react-stencil-component-library'\n\nexport const EntityMaintenanceUdpGrid: React.FC<any> = (props) => {\n\n return (\n <div >\n <EntityMaintenanceGrid {...props}/>\n </div>\n )\n}\n","import React, {\n useMemo,\n useState,\n useRef,\n forwardRef,\n useImperativeHandle\n} from 'react';\nimport { ApiMethodInstanceGrid } from 'udp-react-stencil-component-library';\nimport { useUdpExport } from '../../../udp/export/useUdpExport';\nimport { ExportSidesheet } from '../../../udp/export/ExportSidesheet';\n\n/*\n * This grid is intended to be a temporary drop in replacement for ambient-template-grid.\n * Do not use it unless you were using the old grid, this will not be further supported and is worse on performance than the other new grids.\n */\n\nexport const BackwardsCompatibleGrid = forwardRef((props, ref) => {\n const {\n gridBarTitle,\n queryId,\n gridId,\n primaryActionOnClick,\n primaryActionLabel,\n primaryActionIcon,\n defaultSearchObject,\n renderConfigs,\n disableGridPersistance,\n enableCheckboxOnColumns,\n gridHeight\n } = props;\n\n const [exportSidesheetOpen, setExportSidesheetOpen] = useState(false);\n const gridApiRef = useRef(null);\n\n //Convert the filter Elements passed in to a search object\n const fullDefaultSearchObject = useMemo(() => {\n return {\n filterElements: defaultSearchObject,\n logicalSearchOperator: 1\n };\n }, [defaultSearchObject]);\n\n //Convert renderConfigs to columnOverrides\n const columnOverrides = useMemo(() => {\n const initialColumns = renderConfigs;\n\n return initialColumns.map((col) => {\n // Use destructuring to separate 'rendererName' from the rest of the properties.\n const { rendererName, ...rest } = col;\n\n // Start building the new object, renaming rendererName if it exists.\n const newCol = {\n ...rest,\n ...(rendererName && { cellRenderer: rendererName })\n };\n\n return newCol;\n });\n }, [renderConfigs]);\n\n const sizedIcon = useMemo(() => {\n if (primaryActionIcon === 'add32') {\n return 'add';\n }\n }, [primaryActionIcon]);\n\n //export functions\n\n const {\n updateExportParameters,\n createExport,\n entity,\n searchObject,\n fileFormat,\n numRowsToExport,\n validSearch,\n errorList,\n activeExportJob,\n exportLoading,\n handleFileDownload,\n clearParameters\n } = useUdpExport();\n\n const exportFromGrid = (searchObject, entityName) => {\n if (searchObject && entityName) {\n updateExportParameters(entityName, searchObject);\n setExportSidesheetOpen(true);\n } else {\n console.error('Failed to retrieve searchObject or entityName from grid');\n }\n };\n\n const handleCloseExportSidesheet = () => {\n setExportSidesheetOpen(false);\n clearParameters();\n };\n\n useImperativeHandle(ref, () => ({\n //hooks for the parent to call these functions\n refreshOnNoResults: () => gridApiRef.current?.refreshServerSide(),\n getSelectedRows: () => gridApiRef.current?.getSelectedRows()\n }));\n\n const handleGridApiCallback = (api) => {\n gridApiRef.current = api;\n };\n\n return (\n <div>\n <ExportSidesheet\n entity={entity}\n searchObject={searchObject}\n fileFormat={fileFormat}\n numRowsToExport={numRowsToExport}\n errorList={errorList}\n activeExportJob={activeExportJob}\n handleFileDownload={handleFileDownload}\n exportSidesheetOpen={exportSidesheetOpen}\n handleCloseExportSidesheet={handleCloseExportSidesheet}\n createExport={createExport}\n exportLoading={exportLoading}\n validSearch={validSearch}\n />\n <ApiMethodInstanceGrid\n apiMethodInstanceId={queryId}\n gridId={gridId}\n defaultSearchObject={fullDefaultSearchObject}\n columnDefOverrides={columnOverrides}\n gridHeight={gridHeight}\n gridOptions={{\n pagination: true,\n rowSelection: enableCheckboxOnColumns && {\n mode: 'multiRow',\n enableClickSelection: true,\n headerCheckbox: false\n }\n }}\n gridHeaderConfig={{\n title: gridBarTitle,\n primaryActionButton: {\n label: primaryActionLabel,\n iconName: sizedIcon,\n onClick: primaryActionOnClick\n }\n }}\n gridFunctions={[\n { name: 'agGridExport' },\n { name: 'openSavedViews' },\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n !disableGridPersistance && { name: 'restoreGridState' },\n { name: 'agGridHideShowColumns' },\n { name: 'agGridResetColumns' },\n {\n name: 'udpExport',\n params: {\n callback: (searchObject, entityName) =>\n exportFromGrid(searchObject, entityName)\n }\n }\n ]}\n gridApiCallback={handleGridApiCallback}\n />\n </div>\n );\n});\n\nBackwardsCompatibleGrid.displayName = 'BackwardsCompatibleGrid';\n","import React from 'react'\nimport { ApiMethodInstanceGrid } from 'udp-react-stencil-component-library'\n\nexport const ApiMethodInstanceUdpGrid = (props) => {\n\n return (\n <div >\n <ApiMethodInstanceGrid {...props}/>\n </div>\n )\n}\n","import React from 'react'\nimport { ServerSideGrid } from 'udp-react-stencil-component-library'\n\nexport const ServerSideUdpGrid = (props) => {\n\n return (\n <div >\n <ServerSideGrid {...props}/>\n </div>\n )\n}\n"],"mappings":";;;;;AAGA,MAAaA,4BAA2C,UAAU;AAEhE,QACC,oCAAC,aACE,oCAAC,uBAA0B,MAAQ,CAChC;;;;;ACQT,MAAa,0BAA0B,YAAY,OAAO,QAAQ;CAChE,MAAM,EACJ,cACA,SACA,QACA,sBACA,oBACA,mBACA,qBACA,eACA,wBACA,yBACA,eACE;CAEJ,MAAM,CAAC,qBAAqB,0BAA0B,SAAS,MAAM;CACrE,MAAM,aAAa,OAAO,KAAK;CAG/B,MAAM,0BAA0B,cAAc;AAC5C,SAAO;GACL,gBAAgB;GAChB,uBAAuB;GACxB;IACA,CAAC,oBAAoB,CAAC;CAGzB,MAAM,kBAAkB,cAAc;AAGpC,SAFuB,cAED,KAAK,QAAQ;GAEjC,MAAM,EAAE,cAAc,GAAG,SAAS;AAQlC,UALe;IACb,GAAG;IACH,GAAI,gBAAgB,EAAE,cAAc,cAAc;IACnD;IAGD;IACD,CAAC,cAAc,CAAC;CAEnB,MAAM,YAAY,cAAc;AAC9B,MAAI,sBAAsB,QACxB,QAAO;IAER,CAAC,kBAAkB,CAAC;CAIvB,MAAM,EACJ,wBACA,cACA,QACA,cACA,YACA,iBACA,aACA,WACA,iBACA,eACA,oBACA,oBACE,cAAc;CAElB,MAAM,kBAAkB,gBAAc,eAAe;AACnD,MAAIC,kBAAgB,YAAY;AAC9B,0BAAuB,YAAYA,eAAa;AAChD,0BAAuB,KAAK;QAE5B,SAAQ,MAAM,0DAA0D;;CAI5E,MAAM,mCAAmC;AACvC,yBAAuB,MAAM;AAC7B,mBAAiB;;AAGnB,qBAAoB,YAAY;EAE9B,0BAA0B,WAAW,SAAS,mBAAmB;EACjE,uBAAuB,WAAW,SAAS,iBAAiB;EAC7D,EAAE;CAEH,MAAM,yBAAyB,QAAQ;AACrC,aAAW,UAAU;;AAGvB,QACE,oCAAC,aACC,oCAAC;EACS;EACM;EACF;EACK;EACN;EACM;EACG;EACC;EACO;EACd;EACC;EACF;GACb,EACF,oCAAC;EACC,qBAAqB;EACb;EACR,qBAAqB;EACrB,oBAAoB;EACR;EACZ,aAAa;GACX,YAAY;GACZ,cAAc,2BAA2B;IACvC,MAAM;IACN,sBAAsB;IACtB,gBAAgB;IACjB;GACF;EACD,kBAAkB;GAChB,OAAO;GACP,qBAAqB;IACnB,OAAO;IACP,UAAU;IACV,SAAS;IACV;GACF;EACD,eAAe;GACb,EAAE,MAAM,gBAAgB;GACxB,EAAE,MAAM,kBAAkB;GAC1B,EAAE,MAAM,0BAA0B;GAClC,EAAE,MAAM,yBAAyB;GACjC,CAAC,0BAA0B,EAAE,MAAM,oBAAoB;GACvD,EAAE,MAAM,yBAAyB;GACjC,EAAE,MAAM,sBAAsB;GAC9B;IACE,MAAM;IACN,QAAQ,EACN,WAAW,gBAAc,eACvB,eAAeA,gBAAc,WAAW,EAC3C;IACF;GACF;EACD,iBAAiB;GACjB,CACE;EAER;AAEF,wBAAwB,cAAc;;;;ACpKtC,MAAa,4BAA4B,UAAU;AAEjD,QACC,oCAAC,aACE,oCAAC,uBAA0B,MAAQ,CAChC;;;;;ACLT,MAAa,qBAAqB,UAAU;AAE1C,QACC,oCAAC,aACE,oCAAC,gBAAmB,MAAQ,CACzB"}
1
+ {"version":3,"file":"newGrid-zmtQXU5G.js","names":["searchObject"],"sources":["../src/UI/templates/newGrid/EntityMaintenanceUdpGrid.tsx","../src/UI/templates/newGrid/BackwardsCompatibleGrid.jsx","../src/UI/templates/newGrid/ApiMethodInstanceUdpGrid.jsx","../src/UI/templates/newGrid/ServerSideUdpGrid.jsx"],"sourcesContent":["import React from 'react'\nimport { EntityMaintenanceGrid } from 'udp-react-stencil-component-library'\n\nexport const EntityMaintenanceUdpGrid: React.FC<any> = (props) => {\n\n return (\n <div >\n <EntityMaintenanceGrid {...props}/>\n </div>\n )\n}\n","import React, {\n useMemo,\n useState,\n useRef,\n forwardRef,\n useImperativeHandle\n} from 'react';\nimport { ApiMethodInstanceGrid } from 'udp-react-stencil-component-library';\nimport { useUdpExport } from '../../../udp/export/useUdpExport';\nimport { ExportSidesheet } from '../../../udp/export/ExportSidesheet';\n\n/*\n * This grid is intended to be a temporary drop in replacement for ambient-template-grid.\n * Do not use it unless you were using the old grid, this will not be further supported and is worse on performance than the other new grids.\n */\n\nexport const BackwardsCompatibleGrid = forwardRef((props, ref) => {\n const {\n gridBarTitle,\n queryId,\n gridId,\n primaryActionOnClick,\n primaryActionLabel,\n primaryActionIcon,\n defaultSearchObject,\n renderConfigs,\n disableGridPersistance,\n enableCheckboxOnColumns,\n gridHeight\n } = props;\n\n const [exportSidesheetOpen, setExportSidesheetOpen] = useState(false);\n const gridApiRef = useRef(null);\n\n //Convert the filter Elements passed in to a search object\n const fullDefaultSearchObject = useMemo(() => {\n return {\n filterElements: defaultSearchObject,\n logicalSearchOperator: 1\n };\n }, [defaultSearchObject]);\n\n //Convert renderConfigs to columnOverrides\n const columnOverrides = useMemo(() => {\n const initialColumns = renderConfigs;\n\n return initialColumns.map((col) => {\n // Use destructuring to separate 'rendererName' from the rest of the properties.\n const { rendererName, ...rest } = col;\n\n // Start building the new object, renaming rendererName if it exists.\n const newCol = {\n ...rest,\n ...(rendererName && { cellRenderer: rendererName })\n };\n\n return newCol;\n });\n }, [renderConfigs]);\n\n const sizedIcon = useMemo(() => {\n if (primaryActionIcon === 'add32') {\n return 'add';\n }\n }, [primaryActionIcon]);\n\n //export functions\n\n const {\n updateExportParameters,\n createExport,\n entity,\n searchObject,\n fileFormat,\n numRowsToExport,\n validSearch,\n errorList,\n activeExportJob,\n exportLoading,\n handleFileDownload,\n clearParameters\n } = useUdpExport();\n\n const exportFromGrid = (searchObject, entityName) => {\n if (searchObject && entityName) {\n updateExportParameters(entityName, searchObject);\n setExportSidesheetOpen(true);\n } else {\n console.error('Failed to retrieve searchObject or entityName from grid');\n }\n };\n\n const handleCloseExportSidesheet = () => {\n setExportSidesheetOpen(false);\n clearParameters();\n };\n\n useImperativeHandle(ref, () => ({\n //hooks for the parent to call these functions\n refreshOnNoResults: () => gridApiRef.current?.refreshServerSide(),\n getSelectedRows: () => gridApiRef.current?.getSelectedRows()\n }));\n\n const handleGridApiCallback = (api) => {\n gridApiRef.current = api;\n };\n\n return (\n <div>\n <ExportSidesheet\n entity={entity}\n searchObject={searchObject}\n fileFormat={fileFormat}\n numRowsToExport={numRowsToExport}\n errorList={errorList}\n activeExportJob={activeExportJob}\n handleFileDownload={handleFileDownload}\n exportSidesheetOpen={exportSidesheetOpen}\n handleCloseExportSidesheet={handleCloseExportSidesheet}\n createExport={createExport}\n exportLoading={exportLoading}\n validSearch={validSearch}\n />\n <ApiMethodInstanceGrid\n apiMethodInstanceId={queryId}\n gridId={gridId}\n defaultSearchObject={fullDefaultSearchObject}\n columnDefOverrides={columnOverrides}\n gridHeight={gridHeight}\n gridOptions={{\n pagination: true,\n rowSelection: enableCheckboxOnColumns && {\n mode: 'multiRow',\n enableClickSelection: true,\n headerCheckbox: false\n }\n }}\n gridHeaderConfig={{\n title: gridBarTitle,\n primaryActionButton: {\n label: primaryActionLabel,\n iconName: sizedIcon,\n onClick: primaryActionOnClick\n }\n }}\n gridFunctions={[\n { name: 'agGridExport' },\n { name: 'openSavedViews' },\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n !disableGridPersistance && { name: 'restoreGridState' },\n { name: 'agGridHideShowColumns' },\n { name: 'agGridResetColumns' },\n {\n name: 'udpExport',\n params: {\n callback: (searchObject, entityName) =>\n exportFromGrid(searchObject, entityName)\n }\n }\n ]}\n gridApiCallback={handleGridApiCallback}\n />\n </div>\n );\n});\n\nBackwardsCompatibleGrid.displayName = 'BackwardsCompatibleGrid';\n","import React from 'react'\nimport { ApiMethodInstanceGrid } from 'udp-react-stencil-component-library'\n\nexport const ApiMethodInstanceUdpGrid = (props) => {\n\n return (\n <div >\n <ApiMethodInstanceGrid {...props}/>\n </div>\n )\n}\n","import React from 'react'\nimport { ServerSideGrid } from 'udp-react-stencil-component-library'\n\nexport const ServerSideUdpGrid = (props) => {\n\n return (\n <div >\n <ServerSideGrid {...props}/>\n </div>\n )\n}\n"],"mappings":";;;;;AAGA,MAAa,4BAA2C,UAAU;AAEhE,QACC,oCAAC,aACE,oCAAC,uBAA0B,MAAQ,CAChC;;;;;ACQT,MAAa,0BAA0B,YAAY,OAAO,QAAQ;CAChE,MAAM,EACJ,cACA,SACA,QACA,sBACA,oBACA,mBACA,qBACA,eACA,wBACA,yBACA,eACE;CAEJ,MAAM,CAAC,qBAAqB,0BAA0B,SAAS,MAAM;CACrE,MAAM,aAAa,OAAO,KAAK;CAG/B,MAAM,0BAA0B,cAAc;AAC5C,SAAO;GACL,gBAAgB;GAChB,uBAAuB;GACxB;IACA,CAAC,oBAAoB,CAAC;CAGzB,MAAM,kBAAkB,cAAc;AAGpC,SAFuB,cAED,KAAK,QAAQ;GAEjC,MAAM,EAAE,cAAc,GAAG,SAAS;AAQlC,UALe;IACb,GAAG;IACH,GAAI,gBAAgB,EAAE,cAAc,cAAc;IACnD;IAGD;IACD,CAAC,cAAc,CAAC;CAEnB,MAAM,YAAY,cAAc;AAC9B,MAAI,sBAAsB,QACxB,QAAO;IAER,CAAC,kBAAkB,CAAC;CAIvB,MAAM,EACJ,wBACA,cACA,QACA,cACA,YACA,iBACA,aACA,WACA,iBACA,eACA,oBACA,oBACE,cAAc;CAElB,MAAM,kBAAkB,gBAAc,eAAe;AACnD,MAAIA,kBAAgB,YAAY;AAC9B,0BAAuB,YAAYA,eAAa;AAChD,0BAAuB,KAAK;QAE5B,SAAQ,MAAM,0DAA0D;;CAI5E,MAAM,mCAAmC;AACvC,yBAAuB,MAAM;AAC7B,mBAAiB;;AAGnB,qBAAoB,YAAY;EAE9B,0BAA0B,WAAW,SAAS,mBAAmB;EACjE,uBAAuB,WAAW,SAAS,iBAAiB;EAC7D,EAAE;CAEH,MAAM,yBAAyB,QAAQ;AACrC,aAAW,UAAU;;AAGvB,QACE,oCAAC,aACC,oCAAC;EACS;EACM;EACF;EACK;EACN;EACM;EACG;EACC;EACO;EACd;EACC;EACF;GACb,EACF,oCAAC;EACC,qBAAqB;EACb;EACR,qBAAqB;EACrB,oBAAoB;EACR;EACZ,aAAa;GACX,YAAY;GACZ,cAAc,2BAA2B;IACvC,MAAM;IACN,sBAAsB;IACtB,gBAAgB;IACjB;GACF;EACD,kBAAkB;GAChB,OAAO;GACP,qBAAqB;IACnB,OAAO;IACP,UAAU;IACV,SAAS;IACV;GACF;EACD,eAAe;GACb,EAAE,MAAM,gBAAgB;GACxB,EAAE,MAAM,kBAAkB;GAC1B,EAAE,MAAM,0BAA0B;GAClC,EAAE,MAAM,yBAAyB;GACjC,CAAC,0BAA0B,EAAE,MAAM,oBAAoB;GACvD,EAAE,MAAM,yBAAyB;GACjC,EAAE,MAAM,sBAAsB;GAC9B;IACE,MAAM;IACN,QAAQ,EACN,WAAW,gBAAc,eACvB,eAAeA,gBAAc,WAAW,EAC3C;IACF;GACF;EACD,iBAAiB;GACjB,CACE;EAER;AAEF,wBAAwB,cAAc;;;;ACpKtC,MAAa,4BAA4B,UAAU;AAEjD,QACC,oCAAC,aACE,oCAAC,uBAA0B,MAAQ,CAChC;;;;;ACLT,MAAa,qBAAqB,UAAU;AAE1C,QACC,oCAAC,aACE,oCAAC,gBAAmB,MAAQ,CACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"profile-7BieC5qc.js","names":["useStyles","useHistory","useHistoryNoType","useStyles","UserAvatar","UserProfileMenuWrapper: FC<UserProfileMenuWrapperProps>","Link","MenuOpener","UserAvatar"],"sources":["../src/shell/ui/profile/MenuOpener.jsx","../src/shell/ui/profile/UserAvatar.jsx","../src/shell/ui/profile/FluentProfileMenuCard.tsx","../src/shell/ui/profile/UserProfileMenuWrapper.tsx"],"sourcesContent":["import { Menu } from '@material-ui/core';\nimport {\n bindMenu,\n bindTrigger,\n usePopupState,\n} from 'material-ui-popup-state/hooks';\nimport React, {\n cloneElement,\n ElementType,\n FC,\n ReactElement,\n ReactNode,\n useCallback,\n} from 'react';\n\n/**\n * Helper to handle open a menu when a button is clicked\n */\nexport const MenuOpener = ({\n MenuComponent = Menu,\n name,\n button,\n menuProps,\n children,\n}) => {\n /* @fixme useId as string to bypass error */\n const popupId = 'useId(name)';\n const popupState = usePopupState({ variant: 'popover', popupId });\n const { close } = popupState;\n\n const click = useCallback(\n e => {\n const isButton = e.target.matches(\n 'a, button, input[type=\"button\"], input[type=\"image\"], [role=\"button\"], [role=\"link\"], a *, button *, [role=\"button\"] *, [role=\"link\"] *'\n );\n const isDropdownButton = e.target.matches(\n '.MuiAutocomplete-endAdornment *'\n );\n\n const closePopup = isButton && !isDropdownButton;\n\n if (closePopup) {\n close();\n }\n },\n [close]\n );\n\n return (\n <>\n {cloneElement(button, bindTrigger(popupState))}\n <MenuComponent {...menuProps} {...bindMenu(popupState)} onClick={click}>\n {children}\n </MenuComponent>\n </>\n );\n};\n\nexport default MenuOpener;\n","import { Avatar, makeStyles } from '@material-ui/core'\nimport clsx from 'clsx'\nimport React from 'react'\nimport useDevicePixelRatio from '../../../utilities/useDevicePixelRatio.ts'\nimport useGravatar from '../../../utilities/useGravatar.ts'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {},\n default: {},\n toolbar: {\n width: 32,\n height: 32\n },\n large: {\n width: 80,\n height: 80\n }\n }),\n { name: 'UserAvatar' }\n)\n\n/**\n * Inteligent user Avatar element\n *\n * - Loads a Gravatar based on the email if one exists\n * - Falls back to a text avatar while loading and when a Gravatar does not exist\n * - Automatically chooses image size based on size prop and device pixel density (and updates if device pixel density changes)\n */\nconst UserAvatar = (props) => {\n const classes = useStyles(props)\n const { name, email, size = 'default', className, ...other } = props\n const dppx = useDevicePixelRatio()\n const dimension = { toolbar: 32, large: 80 }[size] || 40\n const avatar = useGravatar(email, { size: dimension * dppx })\n\n return (\n <Avatar\n alt={name}\n aria-label={`${name}'s avatar`}\n {...other}\n className={clsx(className, classes[size])}\n src={avatar}\n >\n {name?.trim()?.charAt(0) || '?'}\n </Avatar>\n )\n}\n\nexport default UserAvatar\n","import React, { forwardRef, useCallback } from 'react';\nimport { Button, CardContent, makeStyles, Typography } from '@material-ui/core';\nimport UserAvatar from './UserAvatar';\nimport { clearStoredPath } from '../../../utilities/redirect/LocalRedirectUrlStorage';\nimport { clearStoredExternalPath } from '../../../utilities/redirect/ExternalRedirectUrlStorage';\nimport {\n clearStoredTenant,\n storeTenant\n} from '../../../utilities/storage/UnitySessionStorage';\nimport { useTranslation } from 'react-i18next';\nimport { useUserActions } from '../../../utilities/auth/users';\nimport { User } from '../../../utilities/auth';\n// @ts-expect-error RRDv5 types are incompatible with react 18\nimport { useHistory as useHistoryNoType} from 'react-router-dom';\nimport { Tenant } from '../../../utilities';\nimport {History} from 'history';\nimport { TenantSelect } from '../../../utilities/tenant';\n\nconst useHistory = useHistoryNoType as () => History;\nconst useStyles = makeStyles((theme) => ({\n root: {\n '& > *': {\n margin: theme.spacing(1)\n },\n '&:last-child': {\n paddingBottom: theme.spacing(2)\n }\n },\n cardHeader: {\n display: 'flex',\n marginBottom: theme.spacing(3)\n },\n currentTenant: {\n margin: 'auto',\n width: '85%',\n marginBottom: theme.spacing(4)\n },\n buttonGroup: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n basicInfoContainer: {\n marginLeft: theme.spacing(1)\n },\n basicInfo: {\n paddingLeft: theme.spacing(1)\n },\n divider: {\n height: theme.spacing(3)\n },\n avatar: {\n fontSize: 40\n }\n}));\n\ninterface FluentProfileMenuCardProps {\n userTenants: Tenant[];\n currentTenant: Tenant | null;\n user: User | null;\n setUser: (user: User | null) => void;\n logout: () => void;\n unityUrl?: string;\n displayProfileButton?: boolean;\n}\n\nexport const FluentProfileMenuCard = forwardRef<HTMLDivElement, FluentProfileMenuCardProps>((props, ref) => {\n const classes = useStyles();\n const devUnityUrl = 'https://unity-dev.univerus.com/';\n const {\n userTenants,\n currentTenant,\n user,\n logout,\n unityUrl = devUnityUrl,\n } = props;\n const history = useHistory();\n const redirectToHome = useCallback(() => history.push('/'), [history]);\n // eslint-disable-next-line\n const { t } = useTranslation() as {t: (key: string) => string};\n const { changeTenant } = useUserActions();\n\n const handleTenantChange = useCallback(\n (tenant: Tenant) => {\n storeTenant(tenant.tenantId);\n changeTenant(tenant.tenantId);\n redirectToHome();\n },\n [changeTenant, redirectToHome]\n );\n\n\n\n // const handleProfileClick = () => {\n // // if this is unity (productid is 1), go to the profile slug, otherwise open the profile page in a new tab\n // if(ConfigService.config.UNITY_PRODUCT_ID === '1') history.push('/profile')\n // else window.open(unityUrl + '/profile');\n\n // }\n\n if (!user) return null;\n\n return (\n <CardContent ref={ref} className={classes.root}>\n <div className={classes.cardHeader}>\n <UserAvatar\n name={user?.name}\n email={user?.email}\n size='large'\n className={classes.avatar}\n />\n <div className={classes.basicInfoContainer}>\n <Typography className={classes.basicInfo} variant='subtitle2'>\n {user?.name}\n </Typography>\n <Typography className={classes.basicInfo} variant='body2'>\n {user?.email}\n </Typography>\n {/* {displayProfileButton && (\n <div className={classes.buttonGroup}>\n <Button\n id='udpRecord-FluentProfileMenuCard-MyProfile'\n udprecordid='udpRecord-FluentProfileMenuCard-MyProfile'\n onClick={handleProfileClick}\n target='_blank'\n color='secondary'\n >\n {t('My Profile')}\n </Button>\n </div>\n )} */}\n </div>\n </div>\n {userTenants && user && changeTenant && (\n <TenantSelect\n className={classes.currentTenant}\n id='current-tenant'\n tenants={userTenants}\n value={currentTenant}\n onTenantChange={handleTenantChange}\n label={t('Current Tenant')}\n recordIdPrefix='udpRecord-FluentProfileMenuCard'\n />\n )}\n <Button\n id='udpRecord-FluentProfileMenuCard-SignOut'\n // @ts-expect-error Custom automation attribute not typed by MUI\n udprecordid='udpRecord-FluentProfileMenuCard-SignOut'\n onClick={() => {\n clearStoredPath();\n clearStoredExternalPath();\n clearStoredTenant();\n logout();\n }}\n variant='outlined'\n color='secondary'\n >\n {t('Sign out')}\n </Button>\n </CardContent>\n );\n});\n\nFluentProfileMenuCard.displayName = 'FluentProfileMenuCard';\n","import React, { FC } from 'react';\nimport { Button, makeStyles, IconButton } from '@material-ui/core';\nimport { Link } from 'react-router-dom';\nimport MenuOpener from './MenuOpener';\nimport UserAvatar from './UserAvatar';\nimport { FluentProfileMenuCard } from './FluentProfileMenuCard';\nimport { ConfigService } from '../../../configService';\nimport { useSingleLogout, useUserActions } from '../../../utilities/auth';\nimport { useUser } from '../../../utilities/auth/useUser';\nimport { useTenant } from '../../../utilities/tenant/useTenant';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n avatar: {\n background: theme.palette.secondary.main\n }\n}));\n\n\n\nexport interface UserProfileMenuWrapperProps {\n returnTo?: string;\n}\n\nexport const UserProfileMenuWrapper: FC<UserProfileMenuWrapperProps> = ({\n returnTo\n}) => {\n const classes = useStyles();\n const user = useUser();\n const singleLogout = useSingleLogout();\n const { setUser } = useUserActions();\n const tenantContext = useTenant();\n\n const currentTenant = tenantContext?.activeTenant ?? null;\n const availableTenants =\n tenantContext?.filteredTenantsList ??\n tenantContext?.tenantsList ??\n [];\n\n const enforcedTenantId = ConfigService.config.UNITY_TENANT_ID;\n\n const profileMenuTenants =\n !enforcedTenantId || enforcedTenantId === ''\n ? availableTenants\n : availableTenants.filter(\n (option) => option.tenantId === enforcedTenantId\n );\n\n if (!user) {\n const fallbackPath =\n returnTo ??\n (typeof window !== 'undefined' ? window.location.pathname : '/');\n\n return (\n <div className={classes.root}>\n <Button\n component={Link as React.ElementType} // react-router-dom@5 is incompatible with @types/react@18 so we have to assert the type manually\n to={{\n pathname: '/login',\n state: { returnTo: fallbackPath ?? '/' }\n }}\n color='inherit'\n >\n Sign in\n </Button>\n </div>\n );\n }\n\n return (\n <div className={classes.root}>\n <MenuOpener\n name = \"udp-user-profile-popover\"\n button={\n <IconButton>\n <UserAvatar\n name={user?.name}\n email={user?.email}\n size='toolbar'\n className={classes.avatar}\n />\n </IconButton>\n }\n menuProps={{\n keepMounted: true,\n getContentAnchorEl: null,\n variant: 'menu',\n anchorOrigin: { vertical: 'bottom', horizontal: 'right' },\n transformOrigin: { vertical: 'top', horizontal: 'right' }\n }}\n >\n <FluentProfileMenuCard\n userTenants={profileMenuTenants}\n currentTenant={currentTenant}\n user={user}\n setUser={setUser}\n logout={singleLogout}\n unityUrl={ConfigService.config.UNITY_URL}\n />\n </MenuOpener>\n </div>\n );\n};\n\nexport default UserProfileMenuWrapper;\n"],"mappings":"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"}
1
+ {"version":3,"file":"profile-7BieC5qc.js","names":["useStyles","useHistory","useHistoryNoType","useStyles","UserAvatar","Link","MenuOpener","UserAvatar"],"sources":["../src/shell/ui/profile/MenuOpener.jsx","../src/shell/ui/profile/UserAvatar.jsx","../src/shell/ui/profile/FluentProfileMenuCard.tsx","../src/shell/ui/profile/UserProfileMenuWrapper.tsx"],"sourcesContent":["import { Menu } from '@material-ui/core';\nimport {\n bindMenu,\n bindTrigger,\n usePopupState,\n} from 'material-ui-popup-state/hooks';\nimport React, {\n cloneElement,\n ElementType,\n FC,\n ReactElement,\n ReactNode,\n useCallback,\n} from 'react';\n\n/**\n * Helper to handle open a menu when a button is clicked\n */\nexport const MenuOpener = ({\n MenuComponent = Menu,\n name,\n button,\n menuProps,\n children,\n}) => {\n /* @fixme useId as string to bypass error */\n const popupId = 'useId(name)';\n const popupState = usePopupState({ variant: 'popover', popupId });\n const { close } = popupState;\n\n const click = useCallback(\n e => {\n const isButton = e.target.matches(\n 'a, button, input[type=\"button\"], input[type=\"image\"], [role=\"button\"], [role=\"link\"], a *, button *, [role=\"button\"] *, [role=\"link\"] *'\n );\n const isDropdownButton = e.target.matches(\n '.MuiAutocomplete-endAdornment *'\n );\n\n const closePopup = isButton && !isDropdownButton;\n\n if (closePopup) {\n close();\n }\n },\n [close]\n );\n\n return (\n <>\n {cloneElement(button, bindTrigger(popupState))}\n <MenuComponent {...menuProps} {...bindMenu(popupState)} onClick={click}>\n {children}\n </MenuComponent>\n </>\n );\n};\n\nexport default MenuOpener;\n","import { Avatar, makeStyles } from '@material-ui/core'\nimport clsx from 'clsx'\nimport React from 'react'\nimport useDevicePixelRatio from '../../../utilities/useDevicePixelRatio.ts'\nimport useGravatar from '../../../utilities/useGravatar.ts'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {},\n default: {},\n toolbar: {\n width: 32,\n height: 32\n },\n large: {\n width: 80,\n height: 80\n }\n }),\n { name: 'UserAvatar' }\n)\n\n/**\n * Inteligent user Avatar element\n *\n * - Loads a Gravatar based on the email if one exists\n * - Falls back to a text avatar while loading and when a Gravatar does not exist\n * - Automatically chooses image size based on size prop and device pixel density (and updates if device pixel density changes)\n */\nconst UserAvatar = (props) => {\n const classes = useStyles(props)\n const { name, email, size = 'default', className, ...other } = props\n const dppx = useDevicePixelRatio()\n const dimension = { toolbar: 32, large: 80 }[size] || 40\n const avatar = useGravatar(email, { size: dimension * dppx })\n\n return (\n <Avatar\n alt={name}\n aria-label={`${name}'s avatar`}\n {...other}\n className={clsx(className, classes[size])}\n src={avatar}\n >\n {name?.trim()?.charAt(0) || '?'}\n </Avatar>\n )\n}\n\nexport default UserAvatar\n","import React, { forwardRef, useCallback } from 'react';\nimport { Button, CardContent, makeStyles, Typography } from '@material-ui/core';\nimport UserAvatar from './UserAvatar';\nimport { clearStoredPath } from '../../../utilities/redirect/LocalRedirectUrlStorage';\nimport { clearStoredExternalPath } from '../../../utilities/redirect/ExternalRedirectUrlStorage';\nimport {\n clearStoredTenant,\n storeTenant\n} from '../../../utilities/storage/UnitySessionStorage';\nimport { useTranslation } from 'react-i18next';\nimport { useUserActions } from '../../../utilities/auth/users';\nimport { User } from '../../../utilities/auth';\n// @ts-expect-error RRDv5 types are incompatible with react 18\nimport { useHistory as useHistoryNoType} from 'react-router-dom';\nimport { Tenant } from '../../../utilities';\nimport {History} from 'history';\nimport { TenantSelect } from '../../../utilities/tenant';\n\nconst useHistory = useHistoryNoType as () => History;\nconst useStyles = makeStyles((theme) => ({\n root: {\n '& > *': {\n margin: theme.spacing(1)\n },\n '&:last-child': {\n paddingBottom: theme.spacing(2)\n }\n },\n cardHeader: {\n display: 'flex',\n marginBottom: theme.spacing(3)\n },\n currentTenant: {\n margin: 'auto',\n width: '85%',\n marginBottom: theme.spacing(4)\n },\n buttonGroup: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n basicInfoContainer: {\n marginLeft: theme.spacing(1)\n },\n basicInfo: {\n paddingLeft: theme.spacing(1)\n },\n divider: {\n height: theme.spacing(3)\n },\n avatar: {\n fontSize: 40\n }\n}));\n\ninterface FluentProfileMenuCardProps {\n userTenants: Tenant[];\n currentTenant: Tenant | null;\n user: User | null;\n setUser: (user: User | null) => void;\n logout: () => void;\n unityUrl?: string;\n displayProfileButton?: boolean;\n}\n\nexport const FluentProfileMenuCard = forwardRef<HTMLDivElement, FluentProfileMenuCardProps>((props, ref) => {\n const classes = useStyles();\n const devUnityUrl = 'https://unity-dev.univerus.com/';\n const {\n userTenants,\n currentTenant,\n user,\n logout,\n unityUrl = devUnityUrl,\n } = props;\n const history = useHistory();\n const redirectToHome = useCallback(() => history.push('/'), [history]);\n // eslint-disable-next-line\n const { t } = useTranslation() as {t: (key: string) => string};\n const { changeTenant } = useUserActions();\n\n const handleTenantChange = useCallback(\n (tenant: Tenant) => {\n storeTenant(tenant.tenantId);\n changeTenant(tenant.tenantId);\n redirectToHome();\n },\n [changeTenant, redirectToHome]\n );\n\n\n\n // const handleProfileClick = () => {\n // // if this is unity (productid is 1), go to the profile slug, otherwise open the profile page in a new tab\n // if(ConfigService.config.UNITY_PRODUCT_ID === '1') history.push('/profile')\n // else window.open(unityUrl + '/profile');\n\n // }\n\n if (!user) return null;\n\n return (\n <CardContent ref={ref} className={classes.root}>\n <div className={classes.cardHeader}>\n <UserAvatar\n name={user?.name}\n email={user?.email}\n size='large'\n className={classes.avatar}\n />\n <div className={classes.basicInfoContainer}>\n <Typography className={classes.basicInfo} variant='subtitle2'>\n {user?.name}\n </Typography>\n <Typography className={classes.basicInfo} variant='body2'>\n {user?.email}\n </Typography>\n {/* {displayProfileButton && (\n <div className={classes.buttonGroup}>\n <Button\n id='udpRecord-FluentProfileMenuCard-MyProfile'\n udprecordid='udpRecord-FluentProfileMenuCard-MyProfile'\n onClick={handleProfileClick}\n target='_blank'\n color='secondary'\n >\n {t('My Profile')}\n </Button>\n </div>\n )} */}\n </div>\n </div>\n {userTenants && user && changeTenant && (\n <TenantSelect\n className={classes.currentTenant}\n id='current-tenant'\n tenants={userTenants}\n value={currentTenant}\n onTenantChange={handleTenantChange}\n label={t('Current Tenant')}\n recordIdPrefix='udpRecord-FluentProfileMenuCard'\n />\n )}\n <Button\n id='udpRecord-FluentProfileMenuCard-SignOut'\n // @ts-expect-error Custom automation attribute not typed by MUI\n udprecordid='udpRecord-FluentProfileMenuCard-SignOut'\n onClick={() => {\n clearStoredPath();\n clearStoredExternalPath();\n clearStoredTenant();\n logout();\n }}\n variant='outlined'\n color='secondary'\n >\n {t('Sign out')}\n </Button>\n </CardContent>\n );\n});\n\nFluentProfileMenuCard.displayName = 'FluentProfileMenuCard';\n","import React, { FC } from 'react';\nimport { Button, makeStyles, IconButton } from '@material-ui/core';\nimport { Link } from 'react-router-dom';\nimport MenuOpener from './MenuOpener';\nimport UserAvatar from './UserAvatar';\nimport { FluentProfileMenuCard } from './FluentProfileMenuCard';\nimport { ConfigService } from '../../../configService';\nimport { useSingleLogout, useUserActions } from '../../../utilities/auth';\nimport { useUser } from '../../../utilities/auth/useUser';\nimport { useTenant } from '../../../utilities/tenant/useTenant';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n avatar: {\n background: theme.palette.secondary.main\n }\n}));\n\n\n\nexport interface UserProfileMenuWrapperProps {\n returnTo?: string;\n}\n\nexport const UserProfileMenuWrapper: FC<UserProfileMenuWrapperProps> = ({\n returnTo\n}) => {\n const classes = useStyles();\n const user = useUser();\n const singleLogout = useSingleLogout();\n const { setUser } = useUserActions();\n const tenantContext = useTenant();\n\n const currentTenant = tenantContext?.activeTenant ?? null;\n const availableTenants =\n tenantContext?.filteredTenantsList ??\n tenantContext?.tenantsList ??\n [];\n\n const enforcedTenantId = ConfigService.config.UNITY_TENANT_ID;\n\n const profileMenuTenants =\n !enforcedTenantId || enforcedTenantId === ''\n ? availableTenants\n : availableTenants.filter(\n (option) => option.tenantId === enforcedTenantId\n );\n\n if (!user) {\n const fallbackPath =\n returnTo ??\n (typeof window !== 'undefined' ? window.location.pathname : '/');\n\n return (\n <div className={classes.root}>\n <Button\n component={Link as React.ElementType} // react-router-dom@5 is incompatible with @types/react@18 so we have to assert the type manually\n to={{\n pathname: '/login',\n state: { returnTo: fallbackPath ?? '/' }\n }}\n color='inherit'\n >\n Sign in\n </Button>\n </div>\n );\n }\n\n return (\n <div className={classes.root}>\n <MenuOpener\n name = \"udp-user-profile-popover\"\n button={\n <IconButton>\n <UserAvatar\n name={user?.name}\n email={user?.email}\n size='toolbar'\n className={classes.avatar}\n />\n </IconButton>\n }\n menuProps={{\n keepMounted: true,\n getContentAnchorEl: null,\n variant: 'menu',\n anchorOrigin: { vertical: 'bottom', horizontal: 'right' },\n transformOrigin: { vertical: 'top', horizontal: 'right' }\n }}\n >\n <FluentProfileMenuCard\n userTenants={profileMenuTenants}\n currentTenant={currentTenant}\n user={user}\n setUser={setUser}\n logout={singleLogout}\n unityUrl={ConfigService.config.UNITY_URL}\n />\n </MenuOpener>\n </div>\n );\n};\n\nexport default UserProfileMenuWrapper;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shellStore-C8zfPsZ-.js","names":["useSetInitialShellVisibility: () => void"],"sources":["../src/stores/shellStore.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\nimport { ContainerTypeEnums } from '../enums/unitySystemEnums';\n\ninterface ShellState {\n subHeaderActionHasChildren: boolean | null | undefined;\n setSubHeaderActionHasChildren: (subHeaderActionHasChildren: boolean) => void;\n navigationExpanded: boolean | null | undefined;\n setNavigationExpanded: (navigationExpanded: boolean) => void;\n setIsValidWidget: (isValidWidget: (a: string) => boolean) => void;\n isValidWidget: (a: string) => boolean;\n setGetWidget: (getWidget: (a: string) => any) => void;\n getWidget: (a: string) => any;\n shellHidden: boolean | null | undefined;\n setShellHidden: (shellHidden: boolean) => void;\n currentContainerId: string | null | undefined;\n setCurrentContainerId: (containerId: string) => void;\n}\n\nexport const useShellStore = create<ShellState>()(\n devtools((set) => ({\n subHeaderActionHasChildren: false,\n setSubHeaderActionHasChildren: (subHeaderActionHasChildren) =>\n set((state) => ({\n subHeaderActionHasChildren: subHeaderActionHasChildren\n })),\n navigationExpanded: true,\n setNavigationExpanded: (navigationExpanded) =>\n set((state) => ({\n navigationExpanded: navigationExpanded\n })),\n isValidWidget: (a) => false,\n setIsValidWidget: (isValidWidget) =>\n set((state) => ({\n isValidWidget: isValidWidget\n })),\n getWidget: (a) => null,\n setGetWidget: (getWidget) =>\n set((state) => ({\n getWidget: getWidget\n })),\n shellHidden: false,\n setShellHidden: (shellHidden) =>\n set((state) => ({\n shellHidden: shellHidden\n })),\n currentContainerId: null,\n setCurrentContainerId: (currentContainerId) =>\n set((state) => ({ currentContainerId: currentContainerId }))\n }))\n);\n\nexport const useSetInitialShellVisibility: () => void = () => {\n const searchParams = new URLSearchParams(window.location.search);\n const withoutShell =\n searchParams.has('withoutShell') === true\n ? searchParams.get('withoutShell') === 'true'\n ? true\n : false\n : false;\n\n const setShellHidden = useShellStore((state) => state.setShellHidden);\n\n useEffect(() => {\n if (withoutShell) {\n setShellHidden(true);\n }\n }, [setShellHidden, withoutShell]);\n};\n"],"mappings":";;;;;AAoBA,MAAa,gBAAgB,QAAoB,CAC/C,UAAU,SAAS;CACjB,4BAA4B;CAC5B,gCAAgC,+BAC9B,KAAK,WAAW,EACc,4BAC7B,EAAE;CACL,oBAAoB;CACpB,wBAAwB,uBACtB,KAAK,WAAW,EACM,oBACrB,EAAE;CACL,gBAAgB,MAAM;CACtB,mBAAmB,kBACjB,KAAK,WAAW,EACC,eAChB,EAAE;CACL,YAAY,MAAM;CAClB,eAAe,cACb,KAAK,WAAW,EACH,WACZ,EAAE;CACL,aAAa;CACb,iBAAiB,gBACf,KAAK,WAAW,EACD,aACd,EAAE;CACL,oBAAoB;CACpB,wBAAwB,uBACtB,KAAK,WAAW,EAAsB,oBAAoB,EAAE;CAC/D,EAAE,CACJ;AAED,MAAaA,qCAAiD;CAC5D,MAAM,eAAe,IAAI,gBAAgB,OAAO,SAAS,OAAO;CAChE,MAAM,eACJ,aAAa,IAAI,eAAe,KAAK,OACjC,aAAa,IAAI,eAAe,KAAK,SACnC,OACA,QACF;CAEN,MAAM,iBAAiB,eAAe,UAAU,MAAM,eAAe;AAErE,iBAAgB;AACd,MAAI,aACF,gBAAe,KAAK;IAErB,CAAC,gBAAgB,aAAa,CAAC"}
1
+ {"version":3,"file":"shellStore-C8zfPsZ-.js","names":[],"sources":["../src/stores/shellStore.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\nimport { ContainerTypeEnums } from '../enums/unitySystemEnums';\n\ninterface ShellState {\n subHeaderActionHasChildren: boolean | null | undefined;\n setSubHeaderActionHasChildren: (subHeaderActionHasChildren: boolean) => void;\n navigationExpanded: boolean | null | undefined;\n setNavigationExpanded: (navigationExpanded: boolean) => void;\n setIsValidWidget: (isValidWidget: (a: string) => boolean) => void;\n isValidWidget: (a: string) => boolean;\n setGetWidget: (getWidget: (a: string) => any) => void;\n getWidget: (a: string) => any;\n shellHidden: boolean | null | undefined;\n setShellHidden: (shellHidden: boolean) => void;\n currentContainerId: string | null | undefined;\n setCurrentContainerId: (containerId: string) => void;\n}\n\nexport const useShellStore = create<ShellState>()(\n devtools((set) => ({\n subHeaderActionHasChildren: false,\n setSubHeaderActionHasChildren: (subHeaderActionHasChildren) =>\n set((state) => ({\n subHeaderActionHasChildren: subHeaderActionHasChildren\n })),\n navigationExpanded: true,\n setNavigationExpanded: (navigationExpanded) =>\n set((state) => ({\n navigationExpanded: navigationExpanded\n })),\n isValidWidget: (a) => false,\n setIsValidWidget: (isValidWidget) =>\n set((state) => ({\n isValidWidget: isValidWidget\n })),\n getWidget: (a) => null,\n setGetWidget: (getWidget) =>\n set((state) => ({\n getWidget: getWidget\n })),\n shellHidden: false,\n setShellHidden: (shellHidden) =>\n set((state) => ({\n shellHidden: shellHidden\n })),\n currentContainerId: null,\n setCurrentContainerId: (currentContainerId) =>\n set((state) => ({ currentContainerId: currentContainerId }))\n }))\n);\n\nexport const useSetInitialShellVisibility: () => void = () => {\n const searchParams = new URLSearchParams(window.location.search);\n const withoutShell =\n searchParams.has('withoutShell') === true\n ? searchParams.get('withoutShell') === 'true'\n ? true\n : false\n : false;\n\n const setShellHidden = useShellStore((state) => state.setShellHidden);\n\n useEffect(() => {\n if (withoutShell) {\n setShellHidden(true);\n }\n }, [setShellHidden, withoutShell]);\n};\n"],"mappings":";;;;;AAoBA,MAAa,gBAAgB,QAAoB,CAC/C,UAAU,SAAS;CACjB,4BAA4B;CAC5B,gCAAgC,+BAC9B,KAAK,WAAW,EACc,4BAC7B,EAAE;CACL,oBAAoB;CACpB,wBAAwB,uBACtB,KAAK,WAAW,EACM,oBACrB,EAAE;CACL,gBAAgB,MAAM;CACtB,mBAAmB,kBACjB,KAAK,WAAW,EACC,eAChB,EAAE;CACL,YAAY,MAAM;CAClB,eAAe,cACb,KAAK,WAAW,EACH,WACZ,EAAE;CACL,aAAa;CACb,iBAAiB,gBACf,KAAK,WAAW,EACD,aACd,EAAE;CACL,oBAAoB;CACpB,wBAAwB,uBACtB,KAAK,WAAW,EAAsB,oBAAoB,EAAE;CAC/D,EAAE,CACJ;AAED,MAAa,qCAAiD;CAC5D,MAAM,eAAe,IAAI,gBAAgB,OAAO,SAAS,OAAO;CAChE,MAAM,eACJ,aAAa,IAAI,eAAe,KAAK,OACjC,aAAa,IAAI,eAAe,KAAK,SACnC,OACA,QACF;CAEN,MAAM,iBAAiB,eAAe,UAAU,MAAM,eAAe;AAErE,iBAAgB;AACd,MAAI,aACF,gBAAe,KAAK;IAErB,CAAC,gBAAgB,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stepper-BaIo_Rol.js","names":["UdpStepper: React.FC<UdpStepperProps>","Stepper"],"sources":["../src/UI/stepper/udp-stepper.tsx"],"sourcesContent":["import React from 'react';\nimport { UdpStepper as Stepper } from 'udp-react-stencil-component-library';\nimport { UdpStepperProps } from './types';\n\nexport const UdpStepper: React.FC<UdpStepperProps> = (props: UdpStepperProps) => {\n // @ts-ignore\n return <Stepper {...props} >{props?.children}</Stepper>;\n};\n"],"mappings":";;;;AAIA,MAAaA,gBAAyC,UAA2B;AAE/E,QAAO,oCAACC,YAAY,OAAS,OAAO,SAAmB"}
1
+ {"version":3,"file":"stepper-BaIo_Rol.js","names":["UdpStepper","Stepper"],"sources":["../src/UI/stepper/udp-stepper.tsx"],"sourcesContent":["import React from 'react';\nimport { UdpStepper as Stepper } from 'udp-react-stencil-component-library';\nimport { UdpStepperProps } from './types';\n\nexport const UdpStepper: React.FC<UdpStepperProps> = (props: UdpStepperProps) => {\n // @ts-ignore\n return <Stepper {...props} >{props?.children}</Stepper>;\n};\n"],"mappings":";;;;AAIA,MAAaA,gBAAyC,UAA2B;AAE/E,QAAO,oCAACC,YAAY,OAAS,OAAO,SAAmB"}
@@ -24,4 +24,4 @@ function stringToProps(stringProperties) {
24
24
 
25
25
  //#endregion
26
26
  export { stringToProps as t };
27
- //# sourceMappingURL=stringUtils-B2JFmevx.js.map
27
+ //# sourceMappingURL=stringUtils-CLVoXAz_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stringUtils-B2JFmevx.js","names":[],"sources":["../src/utilities/stringUtils.js"],"sourcesContent":["import _ from 'lodash';\n\n/**\n * stringToProps\n *\n * @export\n * @param {*} stringProperties\n * @return {*}\n */\nexport function stringToProps(stringProperties) {\n if (!stringProperties) {\n throw new Error('No properties found');\n }\n\n let configObject = {};\n\n try {\n // Parse the JSON string into an array of objects\n const configArray = JSON.parse(stringProperties);\n\n configObject = _.fromPairs(\n configArray.map((item) => {\n // Normalize the key to camelCase, regardless of its original casing\n const key = _.camelCase(item.key || item.Key);\n const value = _.has(item, 'Value') ? item.Value : item.value || '';\n return [key, value];\n })\n );\n } catch (error) {\n return { error: error.message };\n }\n\n return { attributes: configObject };\n}\n"],"mappings":";;;;;;;;;;AASA,SAAgB,cAAc,kBAAkB;AAC9C,KAAI,CAAC,iBACH,OAAM,IAAI,MAAM,sBAAsB;CAGxC,IAAI,eAAe,EAAE;AAErB,KAAI;EAEF,MAAM,cAAc,KAAK,MAAM,iBAAiB;AAEhD,iBAAe,EAAE,UACf,YAAY,KAAK,SAAS;AAIxB,UAAO,CAFK,EAAE,UAAU,KAAK,OAAO,KAAK,IAAI,EAC/B,EAAE,IAAI,MAAM,QAAQ,GAAG,KAAK,QAAQ,KAAK,SAAS,GAC7C;IACnB,CACH;UACM,OAAO;AACd,SAAO,EAAE,OAAO,MAAM,SAAS;;AAGjC,QAAO,EAAE,YAAY,cAAc"}
1
+ {"version":3,"file":"stringUtils-CLVoXAz_.js","names":[],"sources":["../src/utilities/stringUtils.js"],"sourcesContent":["import _ from 'lodash';\n\n/**\n * stringToProps\n *\n * @export\n * @param {*} stringProperties\n * @return {*}\n */\nexport function stringToProps(stringProperties) {\n if (!stringProperties) {\n throw new Error('No properties found');\n }\n\n let configObject = {};\n\n try {\n // Parse the JSON string into an array of objects\n const configArray = JSON.parse(stringProperties);\n\n configObject = _.fromPairs(\n configArray.map((item) => {\n // Normalize the key to camelCase, regardless of its original casing\n const key = _.camelCase(item.key || item.Key);\n const value = _.has(item, 'Value') ? item.Value : item.value || '';\n return [key, value];\n })\n );\n } catch (error) {\n return { error: error.message };\n }\n\n return { attributes: configObject };\n}\n"],"mappings":";;;;;;;;;;AASA,SAAgB,cAAc,kBAAkB;AAC9C,KAAI,CAAC,iBACH,OAAM,IAAI,MAAM,sBAAsB;CAGxC,IAAI,eAAe,EAAE;AAErB,KAAI;EAEF,MAAM,cAAc,KAAK,MAAM,iBAAiB;AAEhD,iBAAe,EAAE,UACf,YAAY,KAAK,SAAS;AAIxB,UAAO,CAFK,EAAE,UAAU,KAAK,OAAO,KAAK,IAAI,EAC/B,EAAE,IAAI,MAAM,QAAQ,GAAG,KAAK,QAAQ,KAAK,SAAS,GAC7C;IACnB,CACH;UACM,OAAO;AACd,SAAO,EAAE,OAAO,MAAM,SAAS;;AAGjC,QAAO,EAAE,YAAY,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"teleporterStore-CjUFtATo.js","names":["result: [string, string, TeleporterInstance][]"],"sources":["../src/stores/teleporterStore.ts"],"sourcesContent":["import { create } from 'zustand';\nimport { createTeleporter } from 'react-teleporter';\n\ntype TeleporterInstance = ReturnType<typeof createTeleporter>;\n\ntype LocationEntry = {\n teleporter: TeleporterInstance;\n};\n\ntype TeleporterMap = Map<string, Map<string, LocationEntry>>;\n\ninterface TeleporterStore {\n teleporterMap: TeleporterMap;\n getTeleporter: (targetId: string, location: string) => TeleporterInstance;\n getAllTeleporters: () => [string, string, TeleporterInstance][];\n}\n\nexport const useTeleporterStore = create<TeleporterStore>((set, get) => ({\n teleporterMap: new Map(),\n\n getTeleporter: (targetId = '', location) => {\n const mapCopy = new Map(get().teleporterMap); // clone to maintain reactivity\n let locationMap = mapCopy.get(targetId);\n\n if (!locationMap) {\n locationMap = new Map();\n mapCopy.set(targetId, locationMap);\n }\n\n if (!locationMap.has(location)) {\n locationMap.set(location, {\n teleporter: createTeleporter()\n });\n }\n\n const teleporter = locationMap.get(location)!.teleporter;\n\n // Update store\n set({ teleporterMap: mapCopy });\n\n return teleporter;\n },\n\n getAllTeleporters: () => {\n const result: [string, string, TeleporterInstance][] = [];\n const map = get().teleporterMap;\n\n for (const [targetId, locationMap] of map.entries()) {\n for (const [location, entry] of locationMap.entries()) {\n result.push([targetId, location, entry.teleporter]);\n }\n }\n\n return result;\n }\n}));\n"],"mappings":";;;;AAiBA,MAAa,qBAAqB,QAAyB,KAAK,SAAS;CACvE,+BAAe,IAAI,KAAK;CAExB,gBAAgB,WAAW,IAAI,aAAa;EAC1C,MAAM,UAAU,IAAI,IAAI,KAAK,CAAC,cAAc;EAC5C,IAAI,cAAc,QAAQ,IAAI,SAAS;AAEvC,MAAI,CAAC,aAAa;AAChB,iCAAc,IAAI,KAAK;AACvB,WAAQ,IAAI,UAAU,YAAY;;AAGpC,MAAI,CAAC,YAAY,IAAI,SAAS,CAC5B,aAAY,IAAI,UAAU,EACxB,YAAY,kBAAkB,EAC/B,CAAC;EAGJ,MAAM,aAAa,YAAY,IAAI,SAAS,CAAE;AAG9C,MAAI,EAAE,eAAe,SAAS,CAAC;AAE/B,SAAO;;CAGT,yBAAyB;EACvB,MAAMA,SAAiD,EAAE;EACzD,MAAM,MAAM,KAAK,CAAC;AAElB,OAAK,MAAM,CAAC,UAAU,gBAAgB,IAAI,SAAS,CACjD,MAAK,MAAM,CAAC,UAAU,UAAU,YAAY,SAAS,CACnD,QAAO,KAAK;GAAC;GAAU;GAAU,MAAM;GAAW,CAAC;AAIvD,SAAO;;CAEV,EAAE"}
1
+ {"version":3,"file":"teleporterStore-CjUFtATo.js","names":[],"sources":["../src/stores/teleporterStore.ts"],"sourcesContent":["import { create } from 'zustand';\nimport { createTeleporter } from 'react-teleporter';\n\ntype TeleporterInstance = ReturnType<typeof createTeleporter>;\n\ntype LocationEntry = {\n teleporter: TeleporterInstance;\n};\n\ntype TeleporterMap = Map<string, Map<string, LocationEntry>>;\n\ninterface TeleporterStore {\n teleporterMap: TeleporterMap;\n getTeleporter: (targetId: string, location: string) => TeleporterInstance;\n getAllTeleporters: () => [string, string, TeleporterInstance][];\n}\n\nexport const useTeleporterStore = create<TeleporterStore>((set, get) => ({\n teleporterMap: new Map(),\n\n getTeleporter: (targetId = '', location) => {\n const mapCopy = new Map(get().teleporterMap); // clone to maintain reactivity\n let locationMap = mapCopy.get(targetId);\n\n if (!locationMap) {\n locationMap = new Map();\n mapCopy.set(targetId, locationMap);\n }\n\n if (!locationMap.has(location)) {\n locationMap.set(location, {\n teleporter: createTeleporter()\n });\n }\n\n const teleporter = locationMap.get(location)!.teleporter;\n\n // Update store\n set({ teleporterMap: mapCopy });\n\n return teleporter;\n },\n\n getAllTeleporters: () => {\n const result: [string, string, TeleporterInstance][] = [];\n const map = get().teleporterMap;\n\n for (const [targetId, locationMap] of map.entries()) {\n for (const [location, entry] of locationMap.entries()) {\n result.push([targetId, location, entry.teleporter]);\n }\n }\n\n return result;\n }\n}));\n"],"mappings":";;;;AAiBA,MAAa,qBAAqB,QAAyB,KAAK,SAAS;CACvE,+BAAe,IAAI,KAAK;CAExB,gBAAgB,WAAW,IAAI,aAAa;EAC1C,MAAM,UAAU,IAAI,IAAI,KAAK,CAAC,cAAc;EAC5C,IAAI,cAAc,QAAQ,IAAI,SAAS;AAEvC,MAAI,CAAC,aAAa;AAChB,iCAAc,IAAI,KAAK;AACvB,WAAQ,IAAI,UAAU,YAAY;;AAGpC,MAAI,CAAC,YAAY,IAAI,SAAS,CAC5B,aAAY,IAAI,UAAU,EACxB,YAAY,kBAAkB,EAC/B,CAAC;EAGJ,MAAM,aAAa,YAAY,IAAI,SAAS,CAAE;AAG9C,MAAI,EAAE,eAAe,SAAS,CAAC;AAE/B,SAAO;;CAGT,yBAAyB;EACvB,MAAM,SAAiD,EAAE;EACzD,MAAM,MAAM,KAAK,CAAC;AAElB,OAAK,MAAM,CAAC,UAAU,gBAAgB,IAAI,SAAS,CACjD,MAAK,MAAM,CAAC,UAAU,UAAU,YAAY,SAAS,CACnD,QAAO,KAAK;GAAC;GAAU;GAAU,MAAM;GAAW,CAAC;AAIvD,SAAO;;CAEV,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"tenantStore-CFYu7ndZ.js","names":["useTenantStore: () => TenantState"],"sources":["../src/stores/tenantStore.ts"],"sourcesContent":["import { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\nimport { TenantTypeEnums } from '../enums/unitySystemEnums';\n\ninterface TenantView {\n tenantId: string;\n name: string | null | undefined;\n tenantType: TenantTypeEnums;\n theme?: string | null;\n}\n\ninterface TenantState {\n currentTenant: TenantView | null | undefined;\n setCurrentTenant: (currentTenant: TenantView) => void;\n isProductTenant: boolean;\n}\n\nexport const useTenantStore: () => TenantState = create<TenantState>()(\n devtools((set) => ({\n currentTenant: null,\n setCurrentTenant: (currentTenant: TenantView) =>\n set((state) => {\n const isProductTenant =\n currentTenant?.tenantType === TenantTypeEnums.Product;\n return { currentTenant, isProductTenant };\n }),\n isProductTenant: false\n }))\n);\n"],"mappings":";;;;;AAiBA,MAAaA,iBAAoC,QAAqB,CACpE,UAAU,SAAS;CACjB,eAAe;CACf,mBAAmB,kBACjB,KAAK,UAAU;AAGb,SAAO;GAAE;GAAe,iBADtB,eAAe,eAAe,gBAAgB;GACP;GACzC;CACJ,iBAAiB;CAClB,EAAE,CACJ"}
1
+ {"version":3,"file":"tenantStore-CFYu7ndZ.js","names":[],"sources":["../src/stores/tenantStore.ts"],"sourcesContent":["import { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\nimport { TenantTypeEnums } from '../enums/unitySystemEnums';\n\ninterface TenantView {\n tenantId: string;\n name: string | null | undefined;\n tenantType: TenantTypeEnums;\n theme?: string | null;\n}\n\ninterface TenantState {\n currentTenant: TenantView | null | undefined;\n setCurrentTenant: (currentTenant: TenantView) => void;\n isProductTenant: boolean;\n}\n\nexport const useTenantStore: () => TenantState = create<TenantState>()(\n devtools((set) => ({\n currentTenant: null,\n setCurrentTenant: (currentTenant: TenantView) =>\n set((state) => {\n const isProductTenant =\n currentTenant?.tenantType === TenantTypeEnums.Product;\n return { currentTenant, isProductTenant };\n }),\n isProductTenant: false\n }))\n);\n"],"mappings":";;;;;AAiBA,MAAa,iBAAoC,QAAqB,CACpE,UAAU,SAAS;CACjB,eAAe;CACf,mBAAmB,kBACjB,KAAK,UAAU;AAGb,SAAO;GAAE;GAAe,iBADtB,eAAe,eAAe,gBAAgB;GACP;GACzC;CACJ,iBAAiB;CAClB,EAAE,CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"UdpTransactionTypesPage.d.ts","sourceRoot":"","sources":["../../../../../../src/udp/pages/UdpTransactionTypesPage/UdpTransactionTypesPage.jsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAkHf,QAAA,MAAM,uBAAuB,yBAusF5B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"UdpTransactionTypesPage.d.ts","sourceRoot":"","sources":["../../../../../../src/udp/pages/UdpTransactionTypesPage/UdpTransactionTypesPage.jsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAkHf,QAAA,MAAM,uBAAuB,yBAmwF5B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"UdpTransactionTypeForm.d.ts","sourceRoot":"","sources":["../../../../../../../src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeForm.jsx"],"names":[],"mappings":"AAAA,OAAO,KAKN,MAAM,OAAO,CAAC;;AAoMf,wBAAkD"}
1
+ {"version":3,"file":"UdpTransactionTypeForm.d.ts","sourceRoot":"","sources":["../../../../../../../src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeForm.jsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;;AA4Tf,wBAAkD"}
@@ -1 +1 @@
1
- {"version":3,"file":"UdpTransactionTypeSidesheet.d.ts","sourceRoot":"","sources":["../../../../../../../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeSidesheet.jsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAOjF,QAAA,MAAM,2BAA2B,mCA+IhC,CAAA;AAED,eAAe,2BAA2B,CAAC"}
1
+ {"version":3,"file":"UdpTransactionTypeSidesheet.d.ts","sourceRoot":"","sources":["../../../../../../../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeSidesheet.jsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAOjF,QAAA,MAAM,2BAA2B,mCAuJhC,CAAA;AAED,eAAe,2BAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"UdpTransactionGrid.d.ts","sourceRoot":"","sources":["../../../../../../src/udp/pages/UdpTransactionsPage/UdpTransactionGrid.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAYzE,QAAA,MAAM,kBAAkB,mCAwZvB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"UdpTransactionGrid.d.ts","sourceRoot":"","sources":["../../../../../../src/udp/pages/UdpTransactionsPage/UdpTransactionGrid.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAYzE,QAAA,MAAM,kBAAkB,mCAoZvB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentTransaction.d.ts","sourceRoot":"","sources":["../../../../../../../src/udp/pages/UdpTransactionsPage/sidesheets/AttachmentTransaction.jsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAgBf,QAAA,MAAM,qBAAqB,mCAyN1B,CAAC;AACF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"AttachmentTransaction.d.ts","sourceRoot":"","sources":["../../../../../../../src/udp/pages/UdpTransactionsPage/sidesheets/AttachmentTransaction.jsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAgBf,QAAA,MAAM,qBAAqB,mCA+N1B,CAAC;AACF,eAAe,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTransactionEngine.d.ts","sourceRoot":"","sources":["../../../../../src/utilities/transactions/useTransactionEngine.js"],"names":[],"mappings":"AAUA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;CAqNhC,CAAC"}
1
+ {"version":3,"file":"useTransactionEngine.d.ts","sourceRoot":"","sources":["../../../../../src/utilities/transactions/useTransactionEngine.js"],"names":[],"mappings":"AAUA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;CAmOhC,CAAC"}