udp-react-enterprise-component-library 25.18.1-beta.4 → 25.18.1-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Accordion-gB7-h8x2.js → Accordion-CaMSRkVt.js} +2 -2
- package/dist/{Accordion-gB7-h8x2.js.map → Accordion-CaMSRkVt.js.map} +1 -1
- package/dist/{ActionProvider-Bac2QDAs.js → ActionProvider-CXHkH2mP.js} +2 -2
- package/dist/{ActionProvider-Bac2QDAs.js.map → ActionProvider-CXHkH2mP.js.map} +1 -1
- package/dist/{ActionSplitScreen-sKnNHSHa.js → ActionSplitScreen-D-Ao-Oc1.js} +3 -3
- package/dist/{ActionSplitScreen-sKnNHSHa.js.map → ActionSplitScreen-D-Ao-Oc1.js.map} +1 -1
- package/dist/{ActionWrapper-CVOfJ5oR.js → ActionWrapper-h7Itpcl5.js} +3 -3
- package/dist/{ActionWrapper-CVOfJ5oR.js.map → ActionWrapper-h7Itpcl5.js.map} +1 -1
- package/dist/AmbientCardButton-DOnaCczn.js.map +1 -1
- package/dist/{BaseTreeMenu-sWv-qaul.js → BaseTreeMenu-C3azNZ0b.js} +2 -2
- package/dist/{BaseTreeMenu-sWv-qaul.js.map → BaseTreeMenu-C3azNZ0b.js.map} +1 -1
- package/dist/{CircleButton-DpVIcx-w.js → CircleButton-DZtXx7uN.js} +2 -2
- package/dist/{CircleButton-DpVIcx-w.js.map → CircleButton-DZtXx7uN.js.map} +1 -1
- package/dist/{CustomMenuPage-BhA0LNhM.js → CustomMenuPage-iBhLu1TK.js} +2 -2
- package/dist/{CustomMenuPage-BhA0LNhM.js.map → CustomMenuPage-iBhLu1TK.js.map} +1 -1
- package/dist/{EntityHeader-BLt_uxQ3.js → EntityHeader--gf9BpbJ.js} +2 -2
- package/dist/{EntityHeader-BLt_uxQ3.js.map → EntityHeader--gf9BpbJ.js.map} +1 -1
- package/dist/{FileViewer-Cqrlt60_.js → FileViewer-qG1dw7RF.js} +2 -2
- package/dist/{FileViewer-Cqrlt60_.js.map → FileViewer-qG1dw7RF.js.map} +1 -1
- package/dist/{FluentCell-C2Qfg1ve.js → FluentCell-Ce9_3cOY.js} +2 -2
- package/dist/{FluentCell-C2Qfg1ve.js.map → FluentCell-Ce9_3cOY.js.map} +1 -1
- package/dist/{FluentDataTable-DuDb9VVl.js → FluentDataTable-BjCP7-Vf.js} +2 -2
- package/dist/{FluentDataTable-DuDb9VVl.js.map → FluentDataTable-BjCP7-Vf.js.map} +1 -1
- package/dist/FluentProfileMenuCard-BMGWsjyD.js.map +1 -1
- package/dist/{FluentTimeline-CCQ3mUhk.js → FluentTimeline-ExazqTRJ.js} +2 -2
- package/dist/{FluentTimeline-CCQ3mUhk.js.map → FluentTimeline-ExazqTRJ.js.map} +1 -1
- package/dist/{IconRenderer-BB7NMX-b.js → IconRenderer-DAfBq9qv.js} +2 -2
- package/dist/{IconRenderer-BB7NMX-b.js.map → IconRenderer-DAfBq9qv.js.map} +1 -1
- package/dist/{MenuPage-BhPLgI_i.js → MenuPage-BtPJFNys.js} +3 -3
- package/dist/{MenuPage-BhPLgI_i.js.map → MenuPage-BtPJFNys.js.map} +1 -1
- package/dist/{MenuPage-DNq_eYJy.js → MenuPage-VDT9iycc.js} +3 -3
- package/dist/{MttMainTimeline-uB-YMlPd.js → MttMainTimeline-_6Fpr66g.js} +2 -2
- package/dist/{MttMainTimeline-uB-YMlPd.js.map → MttMainTimeline-_6Fpr66g.js.map} +1 -1
- package/dist/{MttSummary-dlQbfqex.js → MttSummary-BBsBlhgF.js} +3 -3
- package/dist/{MttSummary-dlQbfqex.js.map → MttSummary-BBsBlhgF.js.map} +1 -1
- package/dist/{NotesScreen-BjY_InsP.js → NotesScreen-B7hLzUOl.js} +2 -2
- package/dist/{NotesScreen-BjY_InsP.js.map → NotesScreen-B7hLzUOl.js.map} +1 -1
- package/dist/{PageActionWrapper-5hXS8BiL.js → PageActionWrapper-BBCjuj8x.js} +2 -2
- package/dist/{PageActionWrapper-5hXS8BiL.js.map → PageActionWrapper-BBCjuj8x.js.map} +1 -1
- package/dist/{PaymentForm-C9djfH5t.js → PaymentForm-OijJFr0S.js} +2 -2
- package/dist/{PaymentForm-C9djfH5t.js.map → PaymentForm-OijJFr0S.js.map} +1 -1
- package/dist/{RecentlyLoadedNodesTable-BaUKwrK6.js → RecentlyLoadedNodesTable-ScWvY2Bk.js} +2 -2
- package/dist/{RecentlyLoadedNodesTable-BaUKwrK6.js.map → RecentlyLoadedNodesTable-ScWvY2Bk.js.map} +1 -1
- package/dist/{RecentlyLoadedNodesWidget-Bwmkdavm.js → RecentlyLoadedNodesWidget-5538JENZ.js} +2 -2
- package/dist/{RecentlyLoadedNodesWidget-Bwmkdavm.js.map → RecentlyLoadedNodesWidget-5538JENZ.js.map} +1 -1
- package/dist/{RemindersCard-D1M4Z5Tm.js → RemindersCard-BVT2iuT4.js} +2 -2
- package/dist/{RemindersCard-D1M4Z5Tm.js.map → RemindersCard-BVT2iuT4.js.map} +1 -1
- package/dist/{RemindersScreen-BiRcMvRs.js → RemindersScreen-NaO3jhh9.js} +2 -2
- package/dist/{RemindersScreen-BiRcMvRs.js.map → RemindersScreen-NaO3jhh9.js.map} +1 -1
- package/dist/{RemindersWidget-DBgk6Ibq.js → RemindersWidget-cUps1X7r.js} +2 -2
- package/dist/{RemindersWidget-DBgk6Ibq.js.map → RemindersWidget-cUps1X7r.js.map} +1 -1
- package/dist/{Shell-DtiGFd4z.js → Shell-DbVTLfw8.js} +3 -3
- package/dist/{Shell-DtiGFd4z.js.map → Shell-DbVTLfw8.js.map} +1 -1
- package/dist/{Statistic-CdpPX5KV.js → Statistic-BMkpqkol.js} +2 -2
- package/dist/{Statistic-CdpPX5KV.js.map → Statistic-BMkpqkol.js.map} +1 -1
- package/dist/TokenGroupItem-DEZAU-Gs.js.map +1 -1
- package/dist/{TreeUtilities-BnHT4nq0.js → TreeUtilities-DWgARig7.js} +3 -3
- package/dist/{TreeUtilities-BnHT4nq0.js.map → TreeUtilities-DWgARig7.js.map} +1 -1
- package/dist/UI/accordion/index.js +2 -2
- package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +2 -2
- package/dist/UI/dataDisplay/FluentDataTable/index.js +3 -3
- package/dist/UI/dataDisplay/entityHeader/index.js +3 -3
- package/dist/UI/dataDisplay/index.js +3 -3
- package/dist/UI/fileViewer/index.js +2 -2
- package/dist/UI/index.js +6 -6
- package/dist/UI/mapLayout/ui/index.js +2 -2
- package/dist/UI/templates/ui/renderers/index.js +2 -2
- package/dist/UI/timeline/fluentTimeline/index.js +2 -2
- package/dist/UI/timeline/index.js +2 -2
- package/dist/UI/widgets/library/RecentlyLoadedNodesWidget/index.js +4 -4
- package/dist/UI/widgets/library/RemindersWidget/index.js +3 -3
- package/dist/{UdpDataBrowserPage-BlxXko_I.js → UdpDataBrowserPage-8NLQuSA9.js} +2 -2
- package/dist/{UdpDataBrowserPage-BlxXko_I.js.map → UdpDataBrowserPage-8NLQuSA9.js.map} +1 -1
- package/dist/{UdpInquiryMaintenanceEnginePage-hLsxBDt2.js → UdpInquiryMaintenanceEnginePage-CgfEuu7m.js} +2 -2
- package/dist/{UdpInquiryMaintenanceEnginePage-hLsxBDt2.js.map → UdpInquiryMaintenanceEnginePage-CgfEuu7m.js.map} +1 -1
- package/dist/{UdpMaintenanceEnginePage-CWdToHMY.js → UdpMaintenanceEnginePage-BrWw5TD0.js} +2 -2
- package/dist/{UdpMaintenanceEnginePage-CWdToHMY.js.map → UdpMaintenanceEnginePage-BrWw5TD0.js.map} +1 -1
- package/dist/{UdpNotesPage-DVow0aLq.js → UdpNotesPage-DfICgZRs.js} +2 -2
- package/dist/{UdpNotesPage-DVow0aLq.js.map → UdpNotesPage-DfICgZRs.js.map} +1 -1
- package/dist/{UdpPages-DS_z-6mU.js → UdpPages-CZRR6uL_.js} +9 -9
- package/dist/{UdpPages-DS_z-6mU.js.map → UdpPages-CZRR6uL_.js.map} +1 -1
- package/dist/{UdpRemindersPage-CYBm84GL.js → UdpRemindersPage-KAHur1Oo.js} +2 -2
- package/dist/{UdpRemindersPage-CYBm84GL.js.map → UdpRemindersPage-KAHur1Oo.js.map} +1 -1
- package/dist/{UdpRoutes-98S-kqBV.js → UdpRoutes-BvnliB-h.js} +3 -3
- package/dist/{UdpRoutes-98S-kqBV.js.map → UdpRoutes-BvnliB-h.js.map} +1 -1
- package/dist/{UdpVerticalManagementPage-D9bK-UMW.js → UdpVerticalManagementPage-hpHkwE6I.js} +2 -2
- package/dist/{UdpVerticalManagementPage-D9bK-UMW.js.map → UdpVerticalManagementPage-hpHkwE6I.js.map} +1 -1
- package/dist/{UdpVerticalManagementSidesheet-DQJpNJaQ.js → UdpVerticalManagementSidesheet-CVU_tQ17.js} +2 -2
- package/dist/{UdpVerticalManagementSidesheet-DQJpNJaQ.js.map → UdpVerticalManagementSidesheet-CVU_tQ17.js.map} +1 -1
- package/dist/{WorkflowContainer-hbA-EyK-.js → WorkflowContainer-CNAbhsJK.js} +2 -2
- package/dist/{WorkflowContainer-hbA-EyK-.js.map → WorkflowContainer-CNAbhsJK.js.map} +1 -1
- package/dist/{WorkflowContainer-CzQerfwt.js → WorkflowContainer-DNf1UcY5.js} +3 -3
- package/dist/{WorkflowTreeMenu-BDolYqHx.js → WorkflowTreeMenu-U3JYFWVn.js} +2 -2
- package/dist/{WorkflowTreeMenu-BDolYqHx.js.map → WorkflowTreeMenu-U3JYFWVn.js.map} +1 -1
- package/dist/actions/index.js +6 -6
- package/dist/componentSystems/multiThreadTimeline/index.js +5 -5
- package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +3 -3
- package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +4 -4
- package/dist/componentSystems/multiThreadTimeline/ui/index.js +3 -3
- package/dist/index.js +39 -39
- package/dist/inquiry/dashboard/index.js +3 -3
- package/dist/inquiry/index.js +9 -9
- package/dist/{inquiry-KrLF1JVq.js → inquiry-BurQFtZD.js} +44 -21
- package/dist/inquiry-BurQFtZD.js.map +1 -0
- package/dist/menuPage/index.js +4 -4
- package/dist/notes/index.js +2 -2
- package/dist/reminders/index.js +3 -3
- package/dist/routes/index.js +1 -1
- package/dist/shell/index.js +8 -8
- package/dist/treeMenu/index.js +2 -2
- package/dist/types/src/inquiry/InquiryContainer.d.ts.map +1 -1
- package/dist/types/src/utilities/tree/TreeUtilities.d.ts +1 -1
- package/dist/types/src/utilities/tree/TreeUtilities.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/udp/pages/UdpDataBrowserPage/index.js +2 -2
- package/dist/udp/pages/UdpGridPanelManagementPage/index.js +2 -2
- package/dist/udp/pages/UdpInquiryMaintenanceEnginePage/index.js +11 -11
- package/dist/udp/pages/UdpMaintenanceEnginePage/index.js +10 -10
- package/dist/udp/pages/UdpNotesPage/index.js +3 -3
- package/dist/udp/pages/UdpPages/index.js +20 -20
- package/dist/udp/pages/UdpRemindersPage/index.js +3 -3
- package/dist/udp/pages/UdpVerticalManagementPage/index.js +3 -3
- package/dist/udp/pages/UdpVerticalManagementSidesheet/index.js +2 -2
- package/dist/udp/pages/index.js +20 -20
- package/dist/utilities/form/paymentForm/index.js +2 -2
- package/dist/utilities/provider/index.js +6 -6
- package/dist/utilities/tree/index.js +1 -1
- package/dist/workflow/index.js +3 -3
- package/dist/workflow/menus/index.js +2 -2
- package/export-map.json +1 -1
- package/package.json +2 -2
- package/dist/inquiry-KrLF1JVq.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionWrapper-CVOfJ5oR.js","names":["useStyles","useStyles","useStyles","makeStyles","useStyles","useStyles","entityName"],"sources":["../src/actions/ActionForm.jsx","../src/actions/ActionModal.jsx","../src/actions/ActionSpeedDial.tsx","../src/actions/ActionPanelPlacement.jsx","../src/actions/ActionSideSheet.jsx","../src/actions/ActionWrapper.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { makeStyles, Typography } from '@material-ui/core';\nimport { Form, FormButtons, SubmitButton } from '../utilities/form';\nimport { getPrimaryKeyValues } from '../utilities/maintenanceEngine/CrudBrowserUtilities';\nimport { useCrudActions } from '../hooks/crudActions';\nimport { CardinalityTypeEnums } from '../enums/unitySystemEnums';\nimport PropTypes from 'prop-types';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(-2)\n },\n body: {\n marginTop: theme.spacing(2)\n },\n actions: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n display: 'flex',\n flexDirection: 'row'\n },\n title: {\n flexGrow: 1\n },\n divider: {\n marginTop: theme.spacing(2)\n },\n subject: {\n marginLeft: theme.spacing(1),\n display: 'flex',\n flexDirection: 'row',\n flexGrow: 1\n },\n switchRoot: {\n marginLeft: theme.spacing(1)\n },\n input: {\n height: 34,\n padding: 0\n },\n formTextInput: {\n fontSize: 13\n },\n labelRoot: {\n fontSize: 13\n }\n}));\n\nexport const ActionForm = (props) => {\n const {\n entityAttributes,\n foreignKeyData,\n onCreate,\n closeSideSheet,\n onUpdate,\n crudTableEditionData,\n crudTableFormData,\n udpFieldInfos\n } = props;\n const classes = useStyles();\n\n const { renderInputByFieldType } = useCrudActions();\n\n const primaryKeyValues = useMemo(\n () => getPrimaryKeyValues(entityAttributes, crudTableEditionData),\n [entityAttributes, crudTableEditionData]\n );\n\n // we'll need this to determine which property names are used as keys for many-to-many\n const manyToManyPropertyList = useMemo(() => {\n if (!entityAttributes?.length) return [];\n const mtmPropertyList = new Set();\n entityAttributes.forEach((attr) => {\n if (attr?.extendedProperties?.childEntity) {\n Object.keys(attr.extendedProperties.childEntityAssoc || {}).length &&\n attr.extendedProperties.childEntityAssoc.Cardinality ===\n CardinalityTypeEnums.Many_To_Many &&\n attr.extendedProperties.childEntityAssoc.Keys.forEach((value, i) => {\n const name = value.split(',')[0];\n if (name) {\n // check name string: if 1 word, lowercase. if 2 words, lower first char\n mtmPropertyList.add(name.toLowerCase());\n }\n });\n }\n });\n return mtmPropertyList;\n }, [entityAttributes]);\n\n const handleSubmit = async (values) => {\n let newTableData = {\n ...crudTableFormData,\n ...values\n };\n\n // remove identifiers from object\n entityAttributes\n .filter((ea) => ea?.extendedProperties?.identifier)\n .forEach((ea) => {\n delete newTableData[ea.name];\n });\n\n // transform values by fkData before creating/updating\n foreignKeyData.forEach((fkd) => {\n Object.keys(newTableData).forEach((key) => {\n if (key === fkd.fieldName) {\n newTableData[key] = fkd.data.find(\n (d) => d.id === newTableData[key].id\n )?.id;\n }\n });\n });\n\n const isNewRow = !crudTableEditionData;\n\n if (isNewRow) {\n onCreate && (await onCreate(newTableData));\n } else {\n onUpdate && (await onUpdate(newTableData, primaryKeyValues));\n }\n closeSideSheet && closeSideSheet();\n };\n\n const isNewEntry = useMemo(\n () => !crudTableEditionData,\n [crudTableEditionData]\n );\n\n return (\n <Form onSubmit={handleSubmit}>\n <div>\n {entityAttributes?.map((schemaAttribute, index) => {\n const fieldInfo = udpFieldInfos?.find(\n (fi) =>\n fi?.name.toLowerCase() === schemaAttribute?.name?.toLowerCase()\n );\n // If the field is an identity and is Updating form, we will make the field readOnly\n if (fieldInfo?.isPrimaryKey && !isNewEntry) {\n schemaAttribute.disabled = true;\n }\n if (fieldInfo?.isPrimaryKey && isNewEntry && !fieldInfo?.isIdentity) {\n schemaAttribute.disabled = false;\n }\n return (\n !schemaAttribute?.extendedProperties?.identifier && (\n <React.Fragment key={`${schemaAttribute.name}-${index}`}>\n <Typography variant='subtitle2' style={{ marginTop: 8 }}>\n {schemaAttribute.friendlyName}\n </Typography>\n {renderInputByFieldType(\n schemaAttribute,\n index,\n entityAttributes,\n fieldInfo,\n foreignKeyData,\n null,\n crudTableFormData,\n classes,\n false,\n null,\n manyToManyPropertyList\n )}\n </React.Fragment>\n )\n );\n })}\n </div>\n\n <FormButtons>\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n disabled={false}\n style={{ marginTop: 15 }}\n >\n Save\n </SubmitButton>\n </FormButtons>\n </Form>\n );\n};\n\nActionForm.propTypes = {\n /**\n * Entity attributes for selected entity within catalog\n */\n entityAttributes: PropTypes.array,\n /**\n * Foreign key data for selected entity within catalog\n */\n foreignKeyData: PropTypes.array,\n /**\n * Entity data\n */\n crudTableEditionData: PropTypes.array,\n /**\n * onClick event for closing sidesheet\n */\n closeSideSheet: PropTypes.func,\n /**\n * onClick event for creating\n */\n onCreate: PropTypes.func,\n /**\n * onClick event for updating\n */\n onUpdate: PropTypes.func\n};\n","import {\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n makeStyles\n} from '@material-ui/core';\nimport React from 'react';\nimport { FluentButton } from '../UI/inputs/buttons/FluentButton';\n\nconst useStyles = makeStyles((theme) => ({}));\n\nexport const ActionModal = (props) => {\n const {\n open,\n action,\n title,\n message = 'Are you sure you want to delete this row?',\n confirmAction = () => {},\n handleOnClose\n } = props;\n const classes = useStyles();\n\n return (\n <Dialog\n open={open}\n onClose={handleOnClose}\n aria-labelledby='alert-dialog-title'\n aria-describedby='alert-dialog-description'\n >\n <DialogTitle id='alert-dialog-title'>{title}</DialogTitle>\n <DialogContent>\n <DialogContentText id='alert-dialog-description'>\n {message}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <FluentButton\n onClick={handleOnClose}\n color='secondary'\n variant='contained'\n >\n Cancel\n </FluentButton>\n <FluentButton\n onClick={action}\n onMouseUp={() => {\n confirmAction();\n handleOnClose();\n }}\n autoFocus\n variant='outlined'\n >\n Confirm\n </FluentButton>\n </DialogActions>\n </Dialog>\n );\n};\n","import React, { useState } from 'react';\nimport SpeedDial, { SpeedDialProps } from '@material-ui/lab/SpeedDial';\nimport SpeedDialIcon from '@material-ui/lab/SpeedDialIcon';\nimport SpeedDialAction from '@material-ui/lab/SpeedDialAction';\nimport AddIcon from '@material-ui/icons/esm/Add';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\n\ninterface FluentSpeedDialProps extends SpeedDialProps {\n actions: Array<{\n icon: {\n type?: string;\n name: string;\n };\n name: string;\n onClick: Function;\n }>;\n}\n\nconst useStyles = makeStyles((theme) => {\n return {\n wrapper: {\n position: 'fixed',\n right: theme.spacing(0),\n bottom: theme.spacing(0),\n zIndex: 1200\n },\n speedDial: {\n position: 'absolute',\n '&.MuiSpeedDial-directionUp, &.MuiSpeedDial-directionLeft': {\n bottom: theme.spacing(2),\n right: theme.spacing(2)\n }\n },\n speedDialFab: {\n backgroundColor: 'black',\n borderRadius: 1,\n margin: 0,\n opacity: 0.75,\n '&:hover': {\n backgroundColor: 'black'\n },\n '&:focus': {\n backgroundColor: 'black'\n }\n },\n speadDialFabExpanded: {\n backgroundColor: 'black',\n borderRadius: 1,\n margin: 0,\n '&:hover': {\n backgroundColor: 'black'\n },\n '&:focus': {\n backgroundColor: 'black'\n }\n },\n speedDialActions: {\n '&.MuiSpeedDial-directionUp, &.MuiSpeedDial-actions': {\n paddingBottom: 0,\n marginBottom: 0,\n opacity: 0.75\n },\n '&:hover': {\n opacity: 1\n },\n '&:focus': {\n opacity: 1\n }\n },\n speedDialActionFab: {\n backgroundColor: 'black',\n borderRadius: 1,\n margin: 0,\n color: 'white',\n width: 56,\n height: 56\n }\n };\n});\n\nexport const ActionSpeedDial = (props: FluentSpeedDialProps): JSX.Element | null => {\n const [expanded, setExpanded] = useState(false);\n const classes = useStyles(expanded);\n // @ts-ignore\n const { open, ariaLabel, actions, ...otherProps } = props;\n if (!actions.length) return null;\n return (\n <div className={classes.wrapper}>\n <SpeedDial\n id={'udpRecord-ActionSpeedDial'}\n // @ts-ignore\n udprecordid={'udpRecord-ActionSpeedDial'}\n className={classes.speedDial}\n ariaLabel='Fluent Speed Dial'\n classes={{\n fab: expanded ? classes.speadDialFabExpanded : classes.speedDialFab,\n actions: classes.speedDialActions\n }}\n icon={<SpeedDialIcon\n icon={<AddIcon />}\n />}\n onClose={() => setExpanded(false)}\n onOpen={() => setExpanded(true)}\n open={expanded}\n {...otherProps}\n >\n {actions.map((action) => (\n <SpeedDialAction\n id={'udpRecord-ActionSpeedDial-'+action.name}\n // @ts-ignore\n udprecordid={'udpRecord-ActionSpeedDial-'+action.name}\n key={action.name}\n icon={\n /*<UnityFluentIcon component={Icons[action.icon.name]} {...action.icon}/>*/\n <UnityFluentIcon\n type={action.icon.type}\n icon={\n action.icon.type === 'unity'\n ? getUnityIconFromName(action.icon.name)\n : getIconFromName(action.icon.name)\n }\n />\n }\n open={false}\n onClick={e => action.onClick(e)}\n classes={{\n fab: classes.speedDialActionFab\n }}\n tooltipTitle={action.name}\n />\n ))}\n </SpeedDial>\n </div>\n );\n};\n","import { makeStyles, Typography } from '@material-ui/core';\nimport { cloneDeep } from 'lodash';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useMemo } from 'react';\nimport { ActionSummaryPopover } from './actionSummary';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { PAHAdditionalRightComponent } from '../UI/utilityDisplay/utilityHeader/ui/PAHAdditionalRightComponent';\nimport { PanelPositionEnums } from '../enums/unitySystemEnums';\nimport { PrimaryActionButton } from '../UI/inputs/buttons/PrimaryActionButton';\nimport { SiteHeaderRightComponent } from '../shell/ui/SiteHeaderRightComponent';\nimport { ToolBarButton } from '../UI/inputs/buttons/ToolBarButton';\nimport { useActions } from '../hooks/useActions';\nimport { evaluateRule, mapRule } from '../utilities/rules/RuleUtilities';\nimport { ActionSpeedDial } from './ActionSpeedDial';\nimport { useActionStore } from '../stores/actionStore';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actionsMenu: {\n color: theme?.palette?.getContrastText(theme?.palette?.primary?.main)\n },\n additionalRightComponent: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n\nexport const ActionPanelPlacement = (props) => {\n const {\n actionPanels,\n showInquiryHeaderActions,\n selectedNode,\n globalActions\n } = props;\n const classes = useStyles();\n const { triggerAction } = useActions();\n const hideActions = useActionStore((state) => state.hideActions);\n\n const handleTriggerAction = useCallback(\n (actionId) => {\n triggerAction(actionId, selectedNode?.nodeObj);\n },\n [triggerAction, selectedNode]\n );\n\n const panelsMap = useMemo(() => {\n if (!actionPanels || !actionPanels?.length) {\n return {};\n }\n return actionPanels.reduce((panelsObj, panel) => {\n const panelPositionId = panel?.panelPositionId;\n panelsObj[panelPositionId] = panel?.panelActions;\n return panelsObj;\n }, {});\n }, [actionPanels]);\n\n const siteHeaderRightComponent = useMemo(() => {\n const siteHeaderActions = panelsMap[PanelPositionEnums.Site_Header];\n const siteHeaderSummaryActions =\n panelsMap[PanelPositionEnums.Site_Header_Summary];\n let siteHeaderActionsComponent1 = null;\n let siteHeaderActionsComponent2 = null;\n let siteHeaderSummaryComponent = null;\n\n if (siteHeaderActions?.length) {\n siteHeaderActionsComponent1 = siteHeaderActions.map((panelAction) => {\n const passRule =\n panelAction.action.actionRules?.reduce((boolValue, rule) => {\n const ruleExpression = mapRule(rule.mapping, rule.jsonLogic);\n return (\n boolValue &&\n evaluateRule(\n ruleExpression,\n selectedNode?.nodeObj,\n selectedNode?.properties?.joiningEntityCatalogObjectKey,\n selectedNode?.wasLazyLoaded\n )\n );\n }, true) ?? true;\n\n if (!passRule && panelAction?.hideAction) {\n return null;\n }\n\n return (\n <ToolBarButton\n key={panelAction?.actionId}\n label={panelAction?.action?.name}\n aria={panelAction?.action?.name}\n icon={false}\n component={\n panelAction?.icon?.type === 'unity'\n ? getUnityIconFromName(panelAction?.icon?.name)\n : getIconFromName(panelAction?.icon?.name)\n }\n click={() => handleTriggerAction(panelAction?.actionId)}\n disabled={!passRule}\n />\n );\n });\n }\n\n if (siteHeaderSummaryActions?.length) {\n if (!siteHeaderActions?.length && siteHeaderSummaryActions?.length <= 2) {\n siteHeaderActionsComponent2 = siteHeaderSummaryActions.map(\n (panelAction) => {\n const passRule =\n panelAction.action.actionRules?.reduce((boolValue, rule) => {\n const ruleExpression = mapRule(rule.mapping, rule.jsonLogic);\n return (\n boolValue &&\n evaluateRule(\n ruleExpression,\n selectedNode?.nodeObj,\n selectedNode?.properties?.joiningEntityCatalogObjectKey,\n selectedNode?.wasLazyLoaded\n )\n );\n }, true) ?? true;\n\n if (!passRule && panelAction?.hideAction) {\n return null;\n }\n\n return (\n <ToolBarButton\n key={panelAction?.actionId}\n label={panelAction?.action?.name}\n aria={panelAction?.action?.name}\n icon={false}\n component={\n panelAction?.icon?.type === 'unity'\n ? getUnityIconFromName(panelAction?.icon?.name)\n : getIconFromName(panelAction?.icon?.name)\n }\n click={() => handleTriggerAction(panelAction?.actionId)}\n disabled={!passRule}\n />\n );\n }\n );\n } else {\n siteHeaderSummaryComponent = (\n <ActionSummaryPopover\n panelActions={siteHeaderSummaryActions}\n selectedNode={selectedNode}\n />\n );\n }\n }\n\n return (\n <SiteHeaderRightComponent>\n <div className={classes.additionalRightComponent}>\n {siteHeaderActionsComponent1}\n {siteHeaderActionsComponent2}\n {siteHeaderSummaryComponent}\n </div>\n </SiteHeaderRightComponent>\n );\n }, [panelsMap, handleTriggerAction, classes, selectedNode]);\n\n const inquiryHeaderComponent = useMemo(() => {\n const panelsMapCopy = cloneDeep(panelsMap);\n const inquiryHeaderActions =\n panelsMapCopy[PanelPositionEnums.Inquiry_Header];\n const inquiryHeaderSummaryActions =\n panelsMapCopy[PanelPositionEnums.Inquiry_Header_Summary];\n let inquiryHeaderActionsComponent = null;\n let inquiryHeaderSummaryComponent = null;\n let inquiryHeaderPrimaryAction = null;\n // if inquiry header summary actions length is more than 2, display the Actions as primary and the primary action as secondary.\n // otherwise, display the primary action as primary and Actions as secondary\n const showActionsAsSecondary =\n !inquiryHeaderSummaryActions?.length ||\n (!inquiryHeaderActions?.length &&\n inquiryHeaderSummaryActions?.length <= 2);\n\n if (inquiryHeaderActions?.length) {\n const actionList = [];\n inquiryHeaderActions.forEach((action) => {\n const passRule =\n action.action.actionRules?.reduce((boolValue, rule) => {\n const ruleExpression = mapRule(rule.mapping, rule.jsonLogic);\n return (\n boolValue &&\n evaluateRule(\n ruleExpression,\n selectedNode?.nodeObj,\n selectedNode?.properties?.joiningEntityCatalogObjectKey,\n selectedNode?.wasLazyLoaded\n )\n );\n }, true) ?? true;\n\n if (!passRule && !action?.hideAction) {\n actionList.push({ ...action, disabled: true });\n } else if (passRule) {\n actionList.push(action);\n }\n });\n\n inquiryHeaderActionsComponent = actionList\n ?.filter((pa) => {\n return showActionsAsSecondary\n ? !pa.isPrimary && pa.enabled\n : pa.enabled;\n })\n ?.map((panelAction, i) => (\n <div key={i}>\n <ToolBarButton\n // key={panelAction?.actionId}\n label={panelAction?.action?.name}\n aria={panelAction?.action?.name}\n icon={false}\n component={\n panelAction?.icon?.type === 'unity'\n ? getUnityIconFromName(panelAction?.icon?.name)\n : getIconFromName(panelAction?.icon?.name)\n }\n click={() => {\n handleTriggerAction(panelAction?.actionId);\n }}\n disabled={panelAction?.disabled ?? false}\n />\n </div>\n ));\n\n if (showActionsAsSecondary) {\n const primaryAction = actionList?.find(\n (panelAction) => panelAction.isPrimary\n );\n\n inquiryHeaderPrimaryAction = primaryAction ? (\n <PrimaryActionButton\n onClick={() => handleTriggerAction(primaryAction?.actionId)}\n disabled={primaryAction?.disabled ?? false}\n >\n <Typography style={{ marginRight: 5 }}>\n {primaryAction?.action?.name}\n </Typography>\n </PrimaryActionButton>\n ) : null;\n }\n }\n\n if (inquiryHeaderSummaryActions?.length) {\n if (showActionsAsSecondary) {\n inquiryHeaderActionsComponent = inquiryHeaderSummaryActions.map(\n (panelAction) => {\n const passRule =\n panelAction.action.actionRules?.reduce((boolValue, rule) => {\n const ruleExpression = mapRule(rule.mapping, rule.jsonLogic);\n return (\n boolValue &&\n evaluateRule(\n ruleExpression,\n selectedNode?.nodeObj,\n selectedNode?.properties?.joiningEntityCatalogObjectKey,\n selectedNode?.wasLazyLoaded\n )\n );\n }, true) ?? true;\n\n if (!passRule && panelAction?.hideAction) {\n return null;\n }\n\n return (\n <ToolBarButton\n key={panelAction?.actionId}\n label={panelAction?.action?.name}\n icon={false}\n component={\n panelAction?.icon?.type === 'unity'\n ? getUnityIconFromName(panelAction?.icon?.name)\n : getIconFromName(panelAction?.icon?.name)\n }\n click={() => handleTriggerAction(panelAction?.actionId)}\n disabled={!passRule}\n />\n );\n }\n );\n } else {\n inquiryHeaderSummaryComponent = (\n <ActionSummaryPopover\n panelActions={inquiryHeaderSummaryActions}\n noContrastColor={true}\n selectedNode={selectedNode}\n />\n );\n }\n }\n\n return (\n <PAHAdditionalRightComponent>\n {showInquiryHeaderActions && !hideActions && (\n <div className={classes.additionalRightComponent}>\n {inquiryHeaderActionsComponent}\n {inquiryHeaderPrimaryAction}\n {inquiryHeaderSummaryComponent}\n </div>\n )}\n </PAHAdditionalRightComponent>\n );\n }, [\n panelsMap,\n handleTriggerAction,\n classes,\n showInquiryHeaderActions,\n selectedNode,\n hideActions\n ]);\n\n const inquirySpeedDialComponent = useMemo(() => {\n const panelsMapCopy = cloneDeep(panelsMap);\n const inquirySpeedDialActions =\n panelsMapCopy[PanelPositionEnums.Speed_Dial];\n const enabledSortedActions =\n inquirySpeedDialActions\n ?.filter(\n (action) =>\n action.enabled &&\n (action.action.actionRules?.reduce((boolValue, rule) => {\n const ruleExpression = mapRule(rule.mapping, rule.jsonLogic);\n return (\n boolValue &&\n evaluateRule(\n ruleExpression,\n selectedNode?.nodeObj,\n selectedNode?.properties?.joiningEntityCatalogObjectKey,\n selectedNode?.wasLazyLoaded\n )\n );\n }, true) ??\n true)\n )\n .sort((a, b) => a.sequence - b.sequence) ?? [];\n let parsedGlobalActions = [];\n if (globalActions?.length) {\n parsedGlobalActions = globalActions.map((action) => {\n const parameters = JSON.parse(action.parameters);\n return {\n icon: { name: parameters.icon, type: 'fluent' },\n action: {\n name: action.name\n },\n ...action\n };\n });\n }\n return (\n (!!enabledSortedActions?.length || !!parsedGlobalActions?.length) &&\n !hideActions && (\n <ActionSpeedDial\n actions={[...enabledSortedActions, ...parsedGlobalActions].map(\n (action) => ({\n icon: action.icon,\n onClick: () => handleTriggerAction(action.actionId),\n name: action.action.name\n })\n )}\n />\n )\n );\n }, [\n panelsMap,\n handleTriggerAction,\n selectedNode,\n globalActions,\n hideActions\n ]);\n\n return (\n <>\n {siteHeaderRightComponent}\n {inquiryHeaderComponent}\n {inquirySpeedDialComponent}\n </>\n );\n};\n\nActionPanelPlacement.propTypes = {\n /**\n * Action Panels\n */\n actionPanels: PropTypes.array,\n /**\n * Boolean to show inquiry header actions\n */\n showInquiryHeaderActions: PropTypes.bool,\n /**\n * Action Panels\n */\n selectedNode: PropTypes.object\n};\n","import { makeStyles } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport { useSnackbar } from 'notistack';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../configService';\nimport { ActionForm } from './ActionForm';\nimport { getPathObject } from '../utilities/maintenanceEngine/CrudBrowserUtilities';\nimport { getSuccessAction } from '../UI/SuccessAction';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { NodeActionEnums } from '../enums/unitySystemEnums';\nimport { SideSheet } from '../UI/surfaces/SideSheet';\nimport { useActions } from '../hooks/useActions';\nimport { useUser } from '../utilities/auth/useUser';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { PageContainer } from '../page/PageContainer';\nimport { useActionStore } from '../stores/actionStore';\n\nconst useStyles = makeStyles((theme) => ({\n root: {}\n}));\n\nexport const ActionSideSheet = (props) => {\n const {\n open,\n action,\n actionPanel,\n selectedNodeObj,\n executeAction,\n selectedEntity,\n handleOnClose,\n entityAttributes,\n foreignKeyData,\n loadingContent,\n fetchEntityData,\n skeleton,\n showError,\n crudTableEditionData,\n crudTableFormData,\n selectedNode,\n selectedNodeParent,\n refreshTree,\n udpFieldInfos\n } = props;\n const classes = useStyles();\n const [width, setWidth] = useState(600);\n const [buttonLabel, setButtonLabel] = useState('');\n const [onSubmit, setOnSubmit] = useState(\n () => () => console.warn('onSubmit not set')\n );\n const [additionalOnClose, setAdditionalOnClose] = useState();\n const [otherSideSheetProps, setOtherSideSheetProps] = useState({});\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const successAction = getSuccessAction(closeSnackbar);\n const { t } = useTranslation();\n const user = useUser();\n\n const setSelectedNodeForStore = useActionStore(\n (state) => state.setSelectedNode\n );\n const selectedNodeFromStore = useActionStore((state) => state.selectedNode);\n\n const promotedMethodPageId = useMemo(() => {\n if (action?.value) {\n if (selectedEntity?.unityBaseUpdateMethod?.apiMethodId === action.value) {\n return selectedEntity.unityBaseUpdateMethod.pageId;\n } else if (\n selectedEntity?.unityBaseCreateMethod?.apiMethodId === action.value\n ) {\n return selectedEntity.unityBaseCreateMethod.pageId;\n }\n }\n return '';\n }, [selectedEntity, action]);\n\n const [{ data: page, loading: loadingPage }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `page/${action?.parameters?.pageId || promotedMethodPageId}`,\n {},\n !!!action?.parameters?.pageId && !!!promotedMethodPageId,\n false\n );\n\n const onCreate = useCallback(\n async (data) => {\n if (selectedEntity?.unityBaseCreateMethod && action?.value) {\n if (selectedEntity.unityBaseCreateMethod.apiMethodId === action.value) {\n return await executeAction(data, action.value);\n } else {\n showError();\n }\n }\n },\n [action, executeAction, selectedEntity, showError]\n );\n\n const onUpdate = useCallback(\n async (data) => {\n if (selectedEntity?.unityBaseUpdateMethod && action?.value) {\n if (selectedEntity.unityBaseUpdateMethod.apiMethodId === action.value) {\n return await executeAction(data, action.value);\n } else {\n showError();\n }\n }\n },\n [action, executeAction, selectedEntity, showError]\n );\n\n const handleFetchEntityData = useCallback(async () => {\n if (selectedEntity?.unityBaseGetAllMethod) {\n const data = {};\n const response = await fetchEntityData({ data }).catch((res) => {\n enqueueSnackbar(res.message, {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n });\n\n if (response?.status === 200 && selectedNodeObj) {\n const updatedNode = response.data.find(\n (d) => d.id === selectedNodeObj.id\n );\n\n const updatedSelectedNode = { ...selectedNodeFromStore };\n updatedSelectedNode.nodeObj = updatedNode;\n setSelectedNodeForStore(updatedSelectedNode);\n }\n }\n }, [\n enqueueSnackbar,\n fetchEntityData,\n selectedEntity,\n selectedNodeObj,\n setSelectedNodeForStore,\n selectedNodeFromStore\n ]);\n\n const handleOnCreate = useCallback(\n async (values) => {\n if (selectedEntity && selectedEntity?.unityBaseCreateMethod) {\n const entityName = selectedEntity?.entityName;\n if (selectedEntity.unityBaseCreateMethod) {\n const data = { requestBody: values };\n const response = await onCreate({ data }).catch((res) => {\n enqueueSnackbar(res.message, {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n });\n\n if (response?.status === 200) {\n enqueueSnackbar(\n entityName\n ? t(`${entityName} has been created`)\n : t(`Entity has been created`),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction\n }\n );\n }\n }\n } else {\n enqueueSnackbar(t(`Unable to retrieve entity methods`), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n }\n },\n [enqueueSnackbar, onCreate, selectedEntity, successAction, t]\n );\n\n const handleOnUpdate = useCallback(\n async (values, primaryKeyValues) => {\n if (selectedEntity && selectedEntity?.unityBaseUpdateMethod) {\n const entityName = selectedEntity?.entityName;\n\n if (selectedEntity.unityBaseUpdateMethod) {\n // Get primary key value object using path parameters and merge with data\n const pathObject = getPathObject(\n selectedEntity.unityBaseUpdateMethod.pathParameters,\n primaryKeyValues\n );\n const data = { ...pathObject, requestBody: values };\n const response = await onUpdate({ data }).catch((res) => {\n enqueueSnackbar(res.message, {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n });\n\n if (response?.status === 200) {\n enqueueSnackbar(\n entityName\n ? t(`${entityName} has been updated`)\n : t(`Entity has been updated`),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction\n }\n );\n\n handleFetchEntityData();\n }\n }\n } else {\n enqueueSnackbar(t(`Unable to retrieve entity methods`), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n }\n },\n [\n selectedEntity,\n onUpdate,\n enqueueSnackbar,\n t,\n successAction,\n handleFetchEntityData\n ]\n );\n\n const handleOnCloseSideSheet = useCallback(() => {\n if (additionalOnClose) {\n additionalOnClose();\n }\n handleOnClose();\n }, [additionalOnClose, handleOnClose]);\n\n // const primaryKeyValues = useMemo(\n // () => getPrimaryKeyValues(entityAttributes, null),\n // [entityAttributes]\n // );\n\n // @TODO: Need to add a check if a promoted method for specific Entity has a static page\n // linked to it. It can fall back to it if there is no actions page\n const content = useMemo(() => {\n if (page) {\n return (\n <DndProvider backend={HTML5Backend}>\n <PageContainer\n user={user}\n key={action?.actionId}\n pageData={page}\n widgetParams={{\n pageId: page?.pageId,\n contentId: selectedNode?.properties?.searchValue,\n nodeObj: selectedNode?.nodeObj,\n parentNodeObj: selectedNodeParent?.nodeObj,\n inquiryParams: selectedNode?.inquiryParams,\n refreshTree: refreshTree,\n requiredFieldsMap: action?.parameters?.requiredFieldMapping || {},\n setSideSheetWidth: setWidth,\n setSideSheetButtonLabel: setButtonLabel,\n setSideSheetOnSubmit: setOnSubmit,\n setSideSheetAdditionalOnClose: setAdditionalOnClose,\n setSideSheetProps: setOtherSideSheetProps,\n closeSideSheet: handleOnClose,\n onCreate: onCreate,\n onUpdate: onUpdate\n }}\n disableMargins={true}\n />\n </DndProvider>\n );\n } else {\n return (\n <ActionForm\n key={action?.actionId}\n entityAttributes={entityAttributes}\n foreignKeyData={foreignKeyData}\n onCreate={handleOnCreate}\n closeSideSheet={handleOnClose}\n onUpdate={handleOnUpdate}\n crudTableEditionData={crudTableEditionData}\n crudTableFormData={crudTableFormData}\n udpFieldInfos={udpFieldInfos}\n />\n );\n }\n }, [\n action,\n crudTableEditionData,\n crudTableFormData,\n entityAttributes,\n foreignKeyData,\n handleOnClose,\n handleOnCreate,\n handleOnUpdate,\n selectedNode,\n selectedNodeParent,\n refreshTree,\n user,\n page,\n onCreate,\n onUpdate,\n udpFieldInfos\n ]);\n\n const sideSheetTitle = useMemo(() => {\n if (action?.parameters?.pageDisplayName) {\n return action.parameters.pageDisplayName;\n } else if (page) {\n return page?.name;\n } else {\n return (\n (action?.actionTypeId === NodeActionEnums.Create\n ? 'Add new '\n : 'Edit ') +\n (action?.parameters?.entityName ?? actionPanel?.entityName)\n );\n }\n }, [action, actionPanel, page]);\n\n return (\n <SideSheet\n open={open}\n title={t(sideSheetTitle)}\n buttonLabel={t(buttonLabel)}\n onSubmit={onSubmit}\n onClose={handleOnCloseSideSheet}\n width={width}\n {...otherSideSheetProps}\n >\n {loadingContent || loadingPage ? (\n <>\n {skeleton.map((sk) => sk)}\n <LayoutUnit unit='md' />\n <Skeleton variant='rect' className={classes.skeletonButton} />\n </>\n ) : (\n content\n )}\n </SideSheet>\n );\n};\n\nActionSideSheet.propTypes = {\n /**\n * User object\n */\n user: PropTypes.object,\n /**\n * boolean to open/close sidesheet\n */\n open: PropTypes.bool,\n /**\n * dispatch function\n */\n dispatch: PropTypes.func,\n /**\n * selected action object\n */\n action: PropTypes.object,\n /**\n * action panels array\n */\n actionPanels: PropTypes.array,\n /**\n * catalog object\n */\n catalog: PropTypes.object,\n /**\n * Selected node object\n */\n selectedNodeObj: PropTypes.object\n};\n","import { makeStyles } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport { useSnackbar } from 'notistack';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ActionSplitScreen } from './ActionSplitScreen';\nimport { ActionModal } from './ActionModal';\nimport { ActionPanelPlacement } from './ActionPanelPlacement';\nimport { ActionSideSheet } from './ActionSideSheet';\nimport { apiMutate } from '../utilities/useAxiosMutate';\nimport {\n getPathObject,\n getPrimaryKeyValues\n} from '../utilities/maintenanceEngine/CrudBrowserUtilities';\nimport { getSuccessAction } from '../UI/SuccessAction';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { toLowerFirstChar } from '../utilities/input/StringUtilities';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { useCrudActions } from '../hooks/crudActions';\nimport { useActionStore } from '../stores/actionStore';\nimport { useShellStore } from '../stores/shellStore';\nimport { usePromotedMethodEntity } from '../hooks/usePromotedMethodEntity';\nimport { getSanitizedName } from '../utilities/entities/entityUtilities';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\nimport { executeQueryAdHoc } from '../udp/utilities/methodUtils';\nimport { ConfigService } from '../configService';\n\nconst useStyles = makeStyles((theme) => ({}));\n\nconst FIELD_NUMBER = 10;\n\nexport const ActionWrapper = (props) => {\n const {\n actionState,\n actionPanel,\n dispatch,\n catalog,\n executeAction,\n splitScreenBody,\n entityAttributes,\n foreignKeyData,\n setForeignKeyData,\n crudTableEditionData,\n crudTableFormData,\n globalActions\n } = props;\n const classes = useStyles();\n\n const { getFKData } = useCrudActions();\n\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const successAction = getSuccessAction(closeSnackbar);\n const { t } = useTranslation();\n const [fkMethodEntities, setFKMethodEntities] = useState([]);\n const [loadingContent, setLoadingContent] = useState(true);\n const [udpFieldInfos, setUdpFieldInfos] = useState([]);\n\n const selectedNode = useActionStore((state) => state.selectedNode);\n const currentContainerId = useShellStore((state) => state.currentContainerId);\n\n const { data: udpOjectFieldInfo } = usePromotedMethodEntity(\n 'UdpObjectFieldInfo',\n true\n );\n\n const entityName = useMemo(() => {\n return actionPanel\n ? actionPanel.entityName\n : actionState?.inquiryParams[currentContainerId || 0]?.selectedNode\n ?.properties?.catalogReturnObject;\n }, [actionPanel, actionState, currentContainerId]);\n\n const [{ data: selectedEntity }] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${catalog?.apiCatalogId}/promotedMethodEntities/${entityName}/product/${ConfigService.config.UNITY_PRODUCT_ID}`,\n {},\n !!!catalog?.apiCatalogId || !!!entityName,\n false\n );\n\n const getMetaDataForUdpField = useCallback(\n async (entityName) => {\n let fieldInfos = [];\n if (udpOjectFieldInfo?.unityBaseSearchMethod?.apiMethodId) {\n const filterElements = [\n {\n searchField: 'ObjectInfo.SanitizedName',\n searchOperator: '=',\n searchValue: getSanitizedName(entityName)\n }\n ];\n const requestObj = getSearchObject(filterElements, 1, 50, true);\n\n await executeQueryAdHoc(\n { data: requestObj },\n udpOjectFieldInfo.unityBaseSearchMethod.apiMethodId\n ).then((resp) => {\n fieldInfos = resp.data?.pageList;\n });\n }\n return fieldInfos;\n },\n [udpOjectFieldInfo]\n );\n\n const fetchEntityData = useCallback(\n async (data) => {\n if (selectedEntity?.unityBaseGetAllMethod)\n return await executeAction(\n data,\n selectedEntity.unityBaseGetAllMethod.apiMethodId\n );\n },\n [executeAction, selectedEntity]\n );\n\n const showError = useCallback(() => {\n enqueueSnackbar(t(`Invalid action value.`), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n }, [enqueueSnackbar, t]);\n\n const getFKMethodEntities = useCallback(\n async (attributes) => {\n if (!attributes || !catalog) {\n return [];\n }\n let fkData = [];\n\n for (const attr of attributes) {\n // check if there is a property with this childEntity\n if (attr?.extendedProperties?.childEntity) {\n // get the list of child entity field names from the Keys array\n const ceFieldsArr = [];\n Object.keys(attr.extendedProperties.childEntityAssoc || {}).length &&\n !attr.extendedProperties.childEntityAssoc.UdpType &&\n attr.extendedProperties.childEntityAssoc.Keys.forEach(\n (value, i) => {\n const name = value.split(',')[0];\n if (name) {\n // check name string: if 1 word, lowercase. if 2 words, lower first char\n ceFieldsArr.push({\n idx: i,\n name: /^[A-Z]*$/.test(name)\n ? name.toLowerCase()\n : toLowerFirstChar(name)\n });\n }\n }\n );\n\n // find the child entity attribute\n const ceAttr = attributes.find((p) =>\n ceFieldsArr.find(\n (cef) => cef.name === p.name && !p?.extendedProperties?.identifier\n )\n );\n\n if (ceAttr) {\n // get list of entity if ceProp exists\n await apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${catalog.apiCatalogId}/promotedMethodEntities/${attr.reference}/product/${ConfigService.config.UNITY_PRODUCT_ID}`,\n {\n method: 'get'\n },\n {}\n ).then((resp) => {\n if (resp && resp.data) {\n fkData.push({ fkName: ceAttr.name, entity: resp.data });\n }\n });\n }\n }\n }\n setFKMethodEntities(fkData);\n },\n [catalog]\n );\n\n const handleOnClose = useCallback(\n (type, entity) => {\n dispatch({ type: type, entity });\n },\n [dispatch]\n );\n\n const onDelete = useCallback(\n async (data) => {\n if (selectedEntity?.unityBaseDeleteMethod) {\n if (\n selectedEntity.unityBaseDeleteMethod.apiMethodId ===\n actionState?.modal?.action?.value\n ) {\n return await executeAction(data, actionState?.modal?.action?.value);\n } else {\n showError();\n }\n }\n },\n [actionState, executeAction, selectedEntity, showError]\n );\n\n const handleOnDelete = useCallback(\n async (value) => {\n if (selectedEntity) {\n const entityName = selectedEntity?.entityName;\n\n // Get primary key value object using path parameters and merge with data\n const primaryKeyValues = getPrimaryKeyValues(entityAttributes, value);\n const pathObject = getPathObject(\n selectedEntity?.unityBaseDeleteMethod.pathParameters,\n primaryKeyValues\n );\n\n if (selectedEntity?.unityBaseDeleteMethod) {\n const data = { ...pathObject };\n const response = await onDelete({ data }).catch((res) => {\n enqueueSnackbar(res.message, {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n });\n\n if (response?.status === 200) {\n enqueueSnackbar(\n entityName\n ? t(`${entityName} has been deleted`)\n : t(`Entity has been deleted`),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction\n }\n );\n if (\n actionState?.menuListState &&\n actionState?.menuListState?.menuList.length > 0\n ) {\n const handleRemoveMenuItem =\n actionState?.menuListState?.handleRemoveMenuItem;\n if (handleRemoveMenuItem) {\n handleRemoveMenuItem(actionState?.menuListState?.menuList);\n }\n }\n fetchEntityData({ data: {} });\n }\n }\n }\n },\n [\n actionState,\n enqueueSnackbar,\n entityAttributes,\n fetchEntityData,\n onDelete,\n selectedEntity,\n successAction,\n t\n ]\n );\n\n const skeleton = useMemo(() => {\n const skeletonArr = [];\n for (let i = 0; i < FIELD_NUMBER; i++) {\n skeletonArr.push(\n <>\n <Skeleton key={i} variant='rect' className={classes.skeleton} />\n <LayoutUnit unit='xxs' />\n </>\n );\n }\n return skeletonArr;\n }, [classes]);\n\n useEffect(() => {\n if (entityAttributes) {\n getFKMethodEntities(entityAttributes);\n setLoadingContent(false);\n }\n }, [entityAttributes, getFKMethodEntities]);\n\n useEffect(() => {\n if (entityAttributes && fkMethodEntities && fkMethodEntities.length > 0) {\n getFKData(fkMethodEntities, setForeignKeyData, enqueueSnackbar);\n }\n }, [\n enqueueSnackbar,\n entityAttributes,\n fkMethodEntities,\n getFKData,\n setForeignKeyData\n ]);\n\n useEffect(() => {\n const setFieldInfos = async () => {\n if(!entityName) return;\n let response = await getMetaDataForUdpField(entityName);\n setUdpFieldInfos(response);\n };\n if (udpOjectFieldInfo?.unityBaseSearchMethod?.apiMethodId) {\n setFieldInfos();\n }\n }, [getMetaDataForUdpField, udpOjectFieldInfo, entityName]);\n\n return (\n <>\n <ActionSplitScreen\n body={\n <>\n {splitScreenBody}\n <ActionPanelPlacement\n actionPanels={actionState?.actionPanels[currentContainerId || 0]}\n showInquiryHeaderActions={actionState?.showInquiryHeaderActions}\n selectedNode={\n actionState?.inquiryParams[currentContainerId || 0]\n ?.selectedNode\n }\n globalActions={globalActions}\n />\n </>\n }\n open={actionState?.splitScreen?.open}\n action={actionState?.splitScreen?.action}\n type={actionState?.splitScreen?.type}\n params={actionState?.splitScreen?.params}\n executeAction={executeAction}\n actionPanel={actionPanel}\n selectedNodeObj={selectedNode?.nodeObj}\n menuNodeList={actionState?.menuListState?.menuList}\n sidebarEntity={selectedEntity}\n selectedNode={\n actionState?.inquiryParams[currentContainerId || 0]?.selectedNode\n }\n selectedNodeParent={\n actionState?.inquiryParams[currentContainerId || 0]\n ?.selectedNodeParent\n }\n refreshTree={\n actionState?.inquiryParams[currentContainerId || 0]?.refreshTree\n }\n />\n <ActionSideSheet\n key={actionState?.sideSheet?.action?.actionId}\n open={actionState?.sideSheet?.open}\n dispatch={dispatch}\n action={actionState?.sideSheet?.action}\n actionPanel={actionPanel}\n selectedNodeObj={selectedNode?.nodeObj}\n executeAction={executeAction}\n selectedEntity={selectedEntity}\n handleOnClose={() => {\n const sideSheet = { open: false, action: null };\n handleOnClose('OPEN_SIDESHEET', sideSheet);\n }}\n entityAttributes={entityAttributes}\n foreignKeyData={foreignKeyData}\n loadingContent={loadingContent}\n fetchEntityData={fetchEntityData}\n skeleton={skeleton}\n showError={showError}\n crudTableEditionData={crudTableEditionData}\n crudTableFormData={crudTableFormData}\n selectedNode={\n actionState?.inquiryParams[currentContainerId || 0]?.selectedNode\n }\n selectedNodeParent={\n actionState?.inquiryParams[currentContainerId || 0]\n ?.selectedNodeParent\n }\n refreshTree={\n actionState?.inquiryParams[currentContainerId || 0]?.refreshTree\n }\n udpFieldInfos={udpFieldInfos}\n />\n <ActionModal\n open={actionState?.modal?.open}\n action={actionState?.modal?.action}\n title={actionState?.modal?.title + selectedEntity?.entityName}\n message={t(\n `Are you sure you want to delete this ${selectedEntity?.entityName}?`\n )}\n confirmAction={() => handleOnDelete(selectedNode?.nodeObj)}\n handleOnClose={() => {\n const modal = { open: false, action: null };\n handleOnClose('OPEN_MODAL', modal);\n }}\n showError={showError}\n />\n </>\n );\n};\n\nActionWrapper.propTypes = {\n actionState: PropTypes.object,\n actionPanel: PropTypes.object,\n dispatch: PropTypes.func,\n catalog: PropTypes.object,\n executeAction: PropTypes.func,\n user: PropTypes.object,\n splitScreenBody: PropTypes.object\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActionWrapper-h7Itpcl5.js","names":["useStyles","useStyles","useStyles","makeStyles","useStyles","useStyles","entityName"],"sources":["../src/actions/ActionForm.jsx","../src/actions/ActionModal.jsx","../src/actions/ActionSpeedDial.tsx","../src/actions/ActionPanelPlacement.jsx","../src/actions/ActionSideSheet.jsx","../src/actions/ActionWrapper.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { makeStyles, Typography } from '@material-ui/core';\nimport { Form, FormButtons, SubmitButton } from '../utilities/form';\nimport { getPrimaryKeyValues } from '../utilities/maintenanceEngine/CrudBrowserUtilities';\nimport { useCrudActions } from '../hooks/crudActions';\nimport { CardinalityTypeEnums } from '../enums/unitySystemEnums';\nimport PropTypes from 'prop-types';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(-2)\n },\n body: {\n marginTop: theme.spacing(2)\n },\n actions: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n display: 'flex',\n flexDirection: 'row'\n },\n title: {\n flexGrow: 1\n },\n divider: {\n marginTop: theme.spacing(2)\n },\n subject: {\n marginLeft: theme.spacing(1),\n display: 'flex',\n flexDirection: 'row',\n flexGrow: 1\n },\n switchRoot: {\n marginLeft: theme.spacing(1)\n },\n input: {\n height: 34,\n padding: 0\n },\n formTextInput: {\n fontSize: 13\n },\n labelRoot: {\n fontSize: 13\n }\n}));\n\nexport const ActionForm = (props) => {\n const {\n entityAttributes,\n foreignKeyData,\n onCreate,\n closeSideSheet,\n onUpdate,\n crudTableEditionData,\n crudTableFormData,\n udpFieldInfos\n } = props;\n const classes = useStyles();\n\n const { renderInputByFieldType } = useCrudActions();\n\n const primaryKeyValues = useMemo(\n () => getPrimaryKeyValues(entityAttributes, crudTableEditionData),\n [entityAttributes, crudTableEditionData]\n );\n\n // we'll need this to determine which property names are used as keys for many-to-many\n const manyToManyPropertyList = useMemo(() => {\n if (!entityAttributes?.length) return [];\n const mtmPropertyList = new Set();\n entityAttributes.forEach((attr) => {\n if (attr?.extendedProperties?.childEntity) {\n Object.keys(attr.extendedProperties.childEntityAssoc || {}).length &&\n attr.extendedProperties.childEntityAssoc.Cardinality ===\n CardinalityTypeEnums.Many_To_Many &&\n attr.extendedProperties.childEntityAssoc.Keys.forEach((value, i) => {\n const name = value.split(',')[0];\n if (name) {\n // check name string: if 1 word, lowercase. if 2 words, lower first char\n mtmPropertyList.add(name.toLowerCase());\n }\n });\n }\n });\n return mtmPropertyList;\n }, [entityAttributes]);\n\n const handleSubmit = async (values) => {\n let newTableData = {\n ...crudTableFormData,\n ...values\n };\n\n // remove identifiers from object\n entityAttributes\n .filter((ea) => ea?.extendedProperties?.identifier)\n .forEach((ea) => {\n delete newTableData[ea.name];\n });\n\n // transform values by fkData before creating/updating\n foreignKeyData.forEach((fkd) => {\n Object.keys(newTableData).forEach((key) => {\n if (key === fkd.fieldName) {\n newTableData[key] = fkd.data.find(\n (d) => d.id === newTableData[key].id\n )?.id;\n }\n });\n });\n\n const isNewRow = !crudTableEditionData;\n\n if (isNewRow) {\n onCreate && (await onCreate(newTableData));\n } else {\n onUpdate && (await onUpdate(newTableData, primaryKeyValues));\n }\n closeSideSheet && closeSideSheet();\n };\n\n const isNewEntry = useMemo(\n () => !crudTableEditionData,\n [crudTableEditionData]\n );\n\n return (\n <Form onSubmit={handleSubmit}>\n <div>\n {entityAttributes?.map((schemaAttribute, index) => {\n const fieldInfo = udpFieldInfos?.find(\n (fi) =>\n fi?.name.toLowerCase() === schemaAttribute?.name?.toLowerCase()\n );\n // If the field is an identity and is Updating form, we will make the field readOnly\n if (fieldInfo?.isPrimaryKey && !isNewEntry) {\n schemaAttribute.disabled = true;\n }\n if (fieldInfo?.isPrimaryKey && isNewEntry && !fieldInfo?.isIdentity) {\n schemaAttribute.disabled = false;\n }\n return (\n !schemaAttribute?.extendedProperties?.identifier && (\n <React.Fragment key={`${schemaAttribute.name}-${index}`}>\n <Typography variant='subtitle2' style={{ marginTop: 8 }}>\n {schemaAttribute.friendlyName}\n </Typography>\n {renderInputByFieldType(\n schemaAttribute,\n index,\n entityAttributes,\n fieldInfo,\n foreignKeyData,\n null,\n crudTableFormData,\n classes,\n false,\n null,\n manyToManyPropertyList\n )}\n </React.Fragment>\n )\n );\n })}\n </div>\n\n <FormButtons>\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n disabled={false}\n style={{ marginTop: 15 }}\n >\n Save\n </SubmitButton>\n </FormButtons>\n </Form>\n );\n};\n\nActionForm.propTypes = {\n /**\n * Entity attributes for selected entity within catalog\n */\n entityAttributes: PropTypes.array,\n /**\n * Foreign key data for selected entity within catalog\n */\n foreignKeyData: PropTypes.array,\n /**\n * Entity data\n */\n crudTableEditionData: PropTypes.array,\n /**\n * onClick event for closing sidesheet\n */\n closeSideSheet: PropTypes.func,\n /**\n * onClick event for creating\n */\n onCreate: PropTypes.func,\n /**\n * onClick event for updating\n */\n onUpdate: PropTypes.func\n};\n","import {\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n makeStyles\n} from '@material-ui/core';\nimport React from 'react';\nimport { FluentButton } from '../UI/inputs/buttons/FluentButton';\n\nconst useStyles = makeStyles((theme) => ({}));\n\nexport const ActionModal = (props) => {\n const {\n open,\n action,\n title,\n message = 'Are you sure you want to delete this row?',\n confirmAction = () => {},\n handleOnClose\n } = props;\n const classes = useStyles();\n\n return (\n <Dialog\n open={open}\n onClose={handleOnClose}\n aria-labelledby='alert-dialog-title'\n aria-describedby='alert-dialog-description'\n >\n <DialogTitle id='alert-dialog-title'>{title}</DialogTitle>\n <DialogContent>\n <DialogContentText id='alert-dialog-description'>\n {message}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <FluentButton\n onClick={handleOnClose}\n color='secondary'\n variant='contained'\n >\n Cancel\n </FluentButton>\n <FluentButton\n onClick={action}\n onMouseUp={() => {\n confirmAction();\n handleOnClose();\n }}\n autoFocus\n variant='outlined'\n >\n Confirm\n </FluentButton>\n </DialogActions>\n </Dialog>\n );\n};\n","import React, { useState } from 'react';\nimport SpeedDial, { SpeedDialProps } from '@material-ui/lab/SpeedDial';\nimport SpeedDialIcon from '@material-ui/lab/SpeedDialIcon';\nimport SpeedDialAction from '@material-ui/lab/SpeedDialAction';\nimport AddIcon from '@material-ui/icons/esm/Add';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\n\ninterface FluentSpeedDialProps extends SpeedDialProps {\n actions: Array<{\n icon: {\n type?: string;\n name: string;\n };\n name: string;\n onClick: Function;\n }>;\n}\n\nconst useStyles = makeStyles((theme) => {\n return {\n wrapper: {\n position: 'fixed',\n right: theme.spacing(0),\n bottom: theme.spacing(0),\n zIndex: 1200\n },\n speedDial: {\n position: 'absolute',\n '&.MuiSpeedDial-directionUp, &.MuiSpeedDial-directionLeft': {\n bottom: theme.spacing(2),\n right: theme.spacing(2)\n }\n },\n speedDialFab: {\n backgroundColor: 'black',\n borderRadius: 1,\n margin: 0,\n opacity: 0.75,\n '&:hover': {\n backgroundColor: 'black'\n },\n '&:focus': {\n backgroundColor: 'black'\n }\n },\n speadDialFabExpanded: {\n backgroundColor: 'black',\n borderRadius: 1,\n margin: 0,\n '&:hover': {\n backgroundColor: 'black'\n },\n '&:focus': {\n backgroundColor: 'black'\n }\n },\n speedDialActions: {\n '&.MuiSpeedDial-directionUp, &.MuiSpeedDial-actions': {\n paddingBottom: 0,\n marginBottom: 0,\n opacity: 0.75\n },\n '&:hover': {\n opacity: 1\n },\n '&:focus': {\n opacity: 1\n }\n },\n speedDialActionFab: {\n backgroundColor: 'black',\n borderRadius: 1,\n margin: 0,\n color: 'white',\n width: 56,\n height: 56\n }\n };\n});\n\nexport const ActionSpeedDial = (props: FluentSpeedDialProps): JSX.Element | null => {\n const [expanded, setExpanded] = useState(false);\n const classes = useStyles(expanded);\n // @ts-ignore\n const { open, ariaLabel, actions, ...otherProps } = props;\n if (!actions.length) return null;\n return (\n <div className={classes.wrapper}>\n <SpeedDial\n id={'udpRecord-ActionSpeedDial'}\n // @ts-ignore\n udprecordid={'udpRecord-ActionSpeedDial'}\n className={classes.speedDial}\n ariaLabel='Fluent Speed Dial'\n classes={{\n fab: expanded ? classes.speadDialFabExpanded : classes.speedDialFab,\n actions: classes.speedDialActions\n }}\n icon={<SpeedDialIcon\n icon={<AddIcon />}\n />}\n onClose={() => setExpanded(false)}\n onOpen={() => setExpanded(true)}\n open={expanded}\n {...otherProps}\n >\n {actions.map((action) => (\n <SpeedDialAction\n id={'udpRecord-ActionSpeedDial-'+action.name}\n // @ts-ignore\n udprecordid={'udpRecord-ActionSpeedDial-'+action.name}\n key={action.name}\n icon={\n /*<UnityFluentIcon component={Icons[action.icon.name]} {...action.icon}/>*/\n <UnityFluentIcon\n type={action.icon.type}\n icon={\n action.icon.type === 'unity'\n ? getUnityIconFromName(action.icon.name)\n : getIconFromName(action.icon.name)\n }\n />\n }\n open={false}\n onClick={e => action.onClick(e)}\n classes={{\n fab: classes.speedDialActionFab\n }}\n tooltipTitle={action.name}\n />\n ))}\n </SpeedDial>\n </div>\n );\n};\n","import { makeStyles, Typography } from '@material-ui/core';\nimport { cloneDeep } from 'lodash';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useMemo } from 'react';\nimport { ActionSummaryPopover } from './actionSummary';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { PAHAdditionalRightComponent } from '../UI/utilityDisplay/utilityHeader/ui/PAHAdditionalRightComponent';\nimport { PanelPositionEnums } from '../enums/unitySystemEnums';\nimport { PrimaryActionButton } from '../UI/inputs/buttons/PrimaryActionButton';\nimport { SiteHeaderRightComponent } from '../shell/ui/SiteHeaderRightComponent';\nimport { ToolBarButton } from '../UI/inputs/buttons/ToolBarButton';\nimport { useActions } from '../hooks/useActions';\nimport { evaluateRule, mapRule } from '../utilities/rules/RuleUtilities';\nimport { ActionSpeedDial } from './ActionSpeedDial';\nimport { useActionStore } from '../stores/actionStore';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actionsMenu: {\n color: theme?.palette?.getContrastText(theme?.palette?.primary?.main)\n },\n additionalRightComponent: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n\nexport const ActionPanelPlacement = (props) => {\n const {\n actionPanels,\n showInquiryHeaderActions,\n selectedNode,\n globalActions\n } = props;\n const classes = useStyles();\n const { triggerAction } = useActions();\n const hideActions = useActionStore((state) => state.hideActions);\n\n const handleTriggerAction = useCallback(\n (actionId) => {\n triggerAction(actionId, selectedNode?.nodeObj);\n },\n [triggerAction, selectedNode]\n );\n\n const panelsMap = useMemo(() => {\n if (!actionPanels || !actionPanels?.length) {\n return {};\n }\n return actionPanels.reduce((panelsObj, panel) => {\n const panelPositionId = panel?.panelPositionId;\n panelsObj[panelPositionId] = panel?.panelActions;\n return panelsObj;\n }, {});\n }, [actionPanels]);\n\n const siteHeaderRightComponent = useMemo(() => {\n const siteHeaderActions = panelsMap[PanelPositionEnums.Site_Header];\n const siteHeaderSummaryActions =\n panelsMap[PanelPositionEnums.Site_Header_Summary];\n let siteHeaderActionsComponent1 = null;\n let siteHeaderActionsComponent2 = null;\n let siteHeaderSummaryComponent = null;\n\n if (siteHeaderActions?.length) {\n siteHeaderActionsComponent1 = siteHeaderActions.map((panelAction) => {\n const passRule =\n panelAction.action.actionRules?.reduce((boolValue, rule) => {\n const ruleExpression = mapRule(rule.mapping, rule.jsonLogic);\n return (\n boolValue &&\n evaluateRule(\n ruleExpression,\n selectedNode?.nodeObj,\n selectedNode?.properties?.joiningEntityCatalogObjectKey,\n selectedNode?.wasLazyLoaded\n )\n );\n }, true) ?? true;\n\n if (!passRule && panelAction?.hideAction) {\n return null;\n }\n\n return (\n <ToolBarButton\n key={panelAction?.actionId}\n label={panelAction?.action?.name}\n aria={panelAction?.action?.name}\n icon={false}\n component={\n panelAction?.icon?.type === 'unity'\n ? getUnityIconFromName(panelAction?.icon?.name)\n : getIconFromName(panelAction?.icon?.name)\n }\n click={() => handleTriggerAction(panelAction?.actionId)}\n disabled={!passRule}\n />\n );\n });\n }\n\n if (siteHeaderSummaryActions?.length) {\n if (!siteHeaderActions?.length && siteHeaderSummaryActions?.length <= 2) {\n siteHeaderActionsComponent2 = siteHeaderSummaryActions.map(\n (panelAction) => {\n const passRule =\n panelAction.action.actionRules?.reduce((boolValue, rule) => {\n const ruleExpression = mapRule(rule.mapping, rule.jsonLogic);\n return (\n boolValue &&\n evaluateRule(\n ruleExpression,\n selectedNode?.nodeObj,\n selectedNode?.properties?.joiningEntityCatalogObjectKey,\n selectedNode?.wasLazyLoaded\n )\n );\n }, true) ?? true;\n\n if (!passRule && panelAction?.hideAction) {\n return null;\n }\n\n return (\n <ToolBarButton\n key={panelAction?.actionId}\n label={panelAction?.action?.name}\n aria={panelAction?.action?.name}\n icon={false}\n component={\n panelAction?.icon?.type === 'unity'\n ? getUnityIconFromName(panelAction?.icon?.name)\n : getIconFromName(panelAction?.icon?.name)\n }\n click={() => handleTriggerAction(panelAction?.actionId)}\n disabled={!passRule}\n />\n );\n }\n );\n } else {\n siteHeaderSummaryComponent = (\n <ActionSummaryPopover\n panelActions={siteHeaderSummaryActions}\n selectedNode={selectedNode}\n />\n );\n }\n }\n\n return (\n <SiteHeaderRightComponent>\n <div className={classes.additionalRightComponent}>\n {siteHeaderActionsComponent1}\n {siteHeaderActionsComponent2}\n {siteHeaderSummaryComponent}\n </div>\n </SiteHeaderRightComponent>\n );\n }, [panelsMap, handleTriggerAction, classes, selectedNode]);\n\n const inquiryHeaderComponent = useMemo(() => {\n const panelsMapCopy = cloneDeep(panelsMap);\n const inquiryHeaderActions =\n panelsMapCopy[PanelPositionEnums.Inquiry_Header];\n const inquiryHeaderSummaryActions =\n panelsMapCopy[PanelPositionEnums.Inquiry_Header_Summary];\n let inquiryHeaderActionsComponent = null;\n let inquiryHeaderSummaryComponent = null;\n let inquiryHeaderPrimaryAction = null;\n // if inquiry header summary actions length is more than 2, display the Actions as primary and the primary action as secondary.\n // otherwise, display the primary action as primary and Actions as secondary\n const showActionsAsSecondary =\n !inquiryHeaderSummaryActions?.length ||\n (!inquiryHeaderActions?.length &&\n inquiryHeaderSummaryActions?.length <= 2);\n\n if (inquiryHeaderActions?.length) {\n const actionList = [];\n inquiryHeaderActions.forEach((action) => {\n const passRule =\n action.action.actionRules?.reduce((boolValue, rule) => {\n const ruleExpression = mapRule(rule.mapping, rule.jsonLogic);\n return (\n boolValue &&\n evaluateRule(\n ruleExpression,\n selectedNode?.nodeObj,\n selectedNode?.properties?.joiningEntityCatalogObjectKey,\n selectedNode?.wasLazyLoaded\n )\n );\n }, true) ?? true;\n\n if (!passRule && !action?.hideAction) {\n actionList.push({ ...action, disabled: true });\n } else if (passRule) {\n actionList.push(action);\n }\n });\n\n inquiryHeaderActionsComponent = actionList\n ?.filter((pa) => {\n return showActionsAsSecondary\n ? !pa.isPrimary && pa.enabled\n : pa.enabled;\n })\n ?.map((panelAction, i) => (\n <div key={i}>\n <ToolBarButton\n // key={panelAction?.actionId}\n label={panelAction?.action?.name}\n aria={panelAction?.action?.name}\n icon={false}\n component={\n panelAction?.icon?.type === 'unity'\n ? getUnityIconFromName(panelAction?.icon?.name)\n : getIconFromName(panelAction?.icon?.name)\n }\n click={() => {\n handleTriggerAction(panelAction?.actionId);\n }}\n disabled={panelAction?.disabled ?? false}\n />\n </div>\n ));\n\n if (showActionsAsSecondary) {\n const primaryAction = actionList?.find(\n (panelAction) => panelAction.isPrimary\n );\n\n inquiryHeaderPrimaryAction = primaryAction ? (\n <PrimaryActionButton\n onClick={() => handleTriggerAction(primaryAction?.actionId)}\n disabled={primaryAction?.disabled ?? false}\n >\n <Typography style={{ marginRight: 5 }}>\n {primaryAction?.action?.name}\n </Typography>\n </PrimaryActionButton>\n ) : null;\n }\n }\n\n if (inquiryHeaderSummaryActions?.length) {\n if (showActionsAsSecondary) {\n inquiryHeaderActionsComponent = inquiryHeaderSummaryActions.map(\n (panelAction) => {\n const passRule =\n panelAction.action.actionRules?.reduce((boolValue, rule) => {\n const ruleExpression = mapRule(rule.mapping, rule.jsonLogic);\n return (\n boolValue &&\n evaluateRule(\n ruleExpression,\n selectedNode?.nodeObj,\n selectedNode?.properties?.joiningEntityCatalogObjectKey,\n selectedNode?.wasLazyLoaded\n )\n );\n }, true) ?? true;\n\n if (!passRule && panelAction?.hideAction) {\n return null;\n }\n\n return (\n <ToolBarButton\n key={panelAction?.actionId}\n label={panelAction?.action?.name}\n icon={false}\n component={\n panelAction?.icon?.type === 'unity'\n ? getUnityIconFromName(panelAction?.icon?.name)\n : getIconFromName(panelAction?.icon?.name)\n }\n click={() => handleTriggerAction(panelAction?.actionId)}\n disabled={!passRule}\n />\n );\n }\n );\n } else {\n inquiryHeaderSummaryComponent = (\n <ActionSummaryPopover\n panelActions={inquiryHeaderSummaryActions}\n noContrastColor={true}\n selectedNode={selectedNode}\n />\n );\n }\n }\n\n return (\n <PAHAdditionalRightComponent>\n {showInquiryHeaderActions && !hideActions && (\n <div className={classes.additionalRightComponent}>\n {inquiryHeaderActionsComponent}\n {inquiryHeaderPrimaryAction}\n {inquiryHeaderSummaryComponent}\n </div>\n )}\n </PAHAdditionalRightComponent>\n );\n }, [\n panelsMap,\n handleTriggerAction,\n classes,\n showInquiryHeaderActions,\n selectedNode,\n hideActions\n ]);\n\n const inquirySpeedDialComponent = useMemo(() => {\n const panelsMapCopy = cloneDeep(panelsMap);\n const inquirySpeedDialActions =\n panelsMapCopy[PanelPositionEnums.Speed_Dial];\n const enabledSortedActions =\n inquirySpeedDialActions\n ?.filter(\n (action) =>\n action.enabled &&\n (action.action.actionRules?.reduce((boolValue, rule) => {\n const ruleExpression = mapRule(rule.mapping, rule.jsonLogic);\n return (\n boolValue &&\n evaluateRule(\n ruleExpression,\n selectedNode?.nodeObj,\n selectedNode?.properties?.joiningEntityCatalogObjectKey,\n selectedNode?.wasLazyLoaded\n )\n );\n }, true) ??\n true)\n )\n .sort((a, b) => a.sequence - b.sequence) ?? [];\n let parsedGlobalActions = [];\n if (globalActions?.length) {\n parsedGlobalActions = globalActions.map((action) => {\n const parameters = JSON.parse(action.parameters);\n return {\n icon: { name: parameters.icon, type: 'fluent' },\n action: {\n name: action.name\n },\n ...action\n };\n });\n }\n return (\n (!!enabledSortedActions?.length || !!parsedGlobalActions?.length) &&\n !hideActions && (\n <ActionSpeedDial\n actions={[...enabledSortedActions, ...parsedGlobalActions].map(\n (action) => ({\n icon: action.icon,\n onClick: () => handleTriggerAction(action.actionId),\n name: action.action.name\n })\n )}\n />\n )\n );\n }, [\n panelsMap,\n handleTriggerAction,\n selectedNode,\n globalActions,\n hideActions\n ]);\n\n return (\n <>\n {siteHeaderRightComponent}\n {inquiryHeaderComponent}\n {inquirySpeedDialComponent}\n </>\n );\n};\n\nActionPanelPlacement.propTypes = {\n /**\n * Action Panels\n */\n actionPanels: PropTypes.array,\n /**\n * Boolean to show inquiry header actions\n */\n showInquiryHeaderActions: PropTypes.bool,\n /**\n * Action Panels\n */\n selectedNode: PropTypes.object\n};\n","import { makeStyles } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport { useSnackbar } from 'notistack';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../configService';\nimport { ActionForm } from './ActionForm';\nimport { getPathObject } from '../utilities/maintenanceEngine/CrudBrowserUtilities';\nimport { getSuccessAction } from '../UI/SuccessAction';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { NodeActionEnums } from '../enums/unitySystemEnums';\nimport { SideSheet } from '../UI/surfaces/SideSheet';\nimport { useActions } from '../hooks/useActions';\nimport { useUser } from '../utilities/auth/useUser';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { PageContainer } from '../page/PageContainer';\nimport { useActionStore } from '../stores/actionStore';\n\nconst useStyles = makeStyles((theme) => ({\n root: {}\n}));\n\nexport const ActionSideSheet = (props) => {\n const {\n open,\n action,\n actionPanel,\n selectedNodeObj,\n executeAction,\n selectedEntity,\n handleOnClose,\n entityAttributes,\n foreignKeyData,\n loadingContent,\n fetchEntityData,\n skeleton,\n showError,\n crudTableEditionData,\n crudTableFormData,\n selectedNode,\n selectedNodeParent,\n refreshTree,\n udpFieldInfos\n } = props;\n const classes = useStyles();\n const [width, setWidth] = useState(600);\n const [buttonLabel, setButtonLabel] = useState('');\n const [onSubmit, setOnSubmit] = useState(\n () => () => console.warn('onSubmit not set')\n );\n const [additionalOnClose, setAdditionalOnClose] = useState();\n const [otherSideSheetProps, setOtherSideSheetProps] = useState({});\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const successAction = getSuccessAction(closeSnackbar);\n const { t } = useTranslation();\n const user = useUser();\n\n const setSelectedNodeForStore = useActionStore(\n (state) => state.setSelectedNode\n );\n const selectedNodeFromStore = useActionStore((state) => state.selectedNode);\n\n const promotedMethodPageId = useMemo(() => {\n if (action?.value) {\n if (selectedEntity?.unityBaseUpdateMethod?.apiMethodId === action.value) {\n return selectedEntity.unityBaseUpdateMethod.pageId;\n } else if (\n selectedEntity?.unityBaseCreateMethod?.apiMethodId === action.value\n ) {\n return selectedEntity.unityBaseCreateMethod.pageId;\n }\n }\n return '';\n }, [selectedEntity, action]);\n\n const [{ data: page, loading: loadingPage }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `page/${action?.parameters?.pageId || promotedMethodPageId}`,\n {},\n !!!action?.parameters?.pageId && !!!promotedMethodPageId,\n false\n );\n\n const onCreate = useCallback(\n async (data) => {\n if (selectedEntity?.unityBaseCreateMethod && action?.value) {\n if (selectedEntity.unityBaseCreateMethod.apiMethodId === action.value) {\n return await executeAction(data, action.value);\n } else {\n showError();\n }\n }\n },\n [action, executeAction, selectedEntity, showError]\n );\n\n const onUpdate = useCallback(\n async (data) => {\n if (selectedEntity?.unityBaseUpdateMethod && action?.value) {\n if (selectedEntity.unityBaseUpdateMethod.apiMethodId === action.value) {\n return await executeAction(data, action.value);\n } else {\n showError();\n }\n }\n },\n [action, executeAction, selectedEntity, showError]\n );\n\n const handleFetchEntityData = useCallback(async () => {\n if (selectedEntity?.unityBaseGetAllMethod) {\n const data = {};\n const response = await fetchEntityData({ data }).catch((res) => {\n enqueueSnackbar(res.message, {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n });\n\n if (response?.status === 200 && selectedNodeObj) {\n const updatedNode = response.data.find(\n (d) => d.id === selectedNodeObj.id\n );\n\n const updatedSelectedNode = { ...selectedNodeFromStore };\n updatedSelectedNode.nodeObj = updatedNode;\n setSelectedNodeForStore(updatedSelectedNode);\n }\n }\n }, [\n enqueueSnackbar,\n fetchEntityData,\n selectedEntity,\n selectedNodeObj,\n setSelectedNodeForStore,\n selectedNodeFromStore\n ]);\n\n const handleOnCreate = useCallback(\n async (values) => {\n if (selectedEntity && selectedEntity?.unityBaseCreateMethod) {\n const entityName = selectedEntity?.entityName;\n if (selectedEntity.unityBaseCreateMethod) {\n const data = { requestBody: values };\n const response = await onCreate({ data }).catch((res) => {\n enqueueSnackbar(res.message, {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n });\n\n if (response?.status === 200) {\n enqueueSnackbar(\n entityName\n ? t(`${entityName} has been created`)\n : t(`Entity has been created`),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction\n }\n );\n }\n }\n } else {\n enqueueSnackbar(t(`Unable to retrieve entity methods`), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n }\n },\n [enqueueSnackbar, onCreate, selectedEntity, successAction, t]\n );\n\n const handleOnUpdate = useCallback(\n async (values, primaryKeyValues) => {\n if (selectedEntity && selectedEntity?.unityBaseUpdateMethod) {\n const entityName = selectedEntity?.entityName;\n\n if (selectedEntity.unityBaseUpdateMethod) {\n // Get primary key value object using path parameters and merge with data\n const pathObject = getPathObject(\n selectedEntity.unityBaseUpdateMethod.pathParameters,\n primaryKeyValues\n );\n const data = { ...pathObject, requestBody: values };\n const response = await onUpdate({ data }).catch((res) => {\n enqueueSnackbar(res.message, {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n });\n\n if (response?.status === 200) {\n enqueueSnackbar(\n entityName\n ? t(`${entityName} has been updated`)\n : t(`Entity has been updated`),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction\n }\n );\n\n handleFetchEntityData();\n }\n }\n } else {\n enqueueSnackbar(t(`Unable to retrieve entity methods`), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n }\n },\n [\n selectedEntity,\n onUpdate,\n enqueueSnackbar,\n t,\n successAction,\n handleFetchEntityData\n ]\n );\n\n const handleOnCloseSideSheet = useCallback(() => {\n if (additionalOnClose) {\n additionalOnClose();\n }\n handleOnClose();\n }, [additionalOnClose, handleOnClose]);\n\n // const primaryKeyValues = useMemo(\n // () => getPrimaryKeyValues(entityAttributes, null),\n // [entityAttributes]\n // );\n\n // @TODO: Need to add a check if a promoted method for specific Entity has a static page\n // linked to it. It can fall back to it if there is no actions page\n const content = useMemo(() => {\n if (page) {\n return (\n <DndProvider backend={HTML5Backend}>\n <PageContainer\n user={user}\n key={action?.actionId}\n pageData={page}\n widgetParams={{\n pageId: page?.pageId,\n contentId: selectedNode?.properties?.searchValue,\n nodeObj: selectedNode?.nodeObj,\n parentNodeObj: selectedNodeParent?.nodeObj,\n inquiryParams: selectedNode?.inquiryParams,\n refreshTree: refreshTree,\n requiredFieldsMap: action?.parameters?.requiredFieldMapping || {},\n setSideSheetWidth: setWidth,\n setSideSheetButtonLabel: setButtonLabel,\n setSideSheetOnSubmit: setOnSubmit,\n setSideSheetAdditionalOnClose: setAdditionalOnClose,\n setSideSheetProps: setOtherSideSheetProps,\n closeSideSheet: handleOnClose,\n onCreate: onCreate,\n onUpdate: onUpdate\n }}\n disableMargins={true}\n />\n </DndProvider>\n );\n } else {\n return (\n <ActionForm\n key={action?.actionId}\n entityAttributes={entityAttributes}\n foreignKeyData={foreignKeyData}\n onCreate={handleOnCreate}\n closeSideSheet={handleOnClose}\n onUpdate={handleOnUpdate}\n crudTableEditionData={crudTableEditionData}\n crudTableFormData={crudTableFormData}\n udpFieldInfos={udpFieldInfos}\n />\n );\n }\n }, [\n action,\n crudTableEditionData,\n crudTableFormData,\n entityAttributes,\n foreignKeyData,\n handleOnClose,\n handleOnCreate,\n handleOnUpdate,\n selectedNode,\n selectedNodeParent,\n refreshTree,\n user,\n page,\n onCreate,\n onUpdate,\n udpFieldInfos\n ]);\n\n const sideSheetTitle = useMemo(() => {\n if (action?.parameters?.pageDisplayName) {\n return action.parameters.pageDisplayName;\n } else if (page) {\n return page?.name;\n } else {\n return (\n (action?.actionTypeId === NodeActionEnums.Create\n ? 'Add new '\n : 'Edit ') +\n (action?.parameters?.entityName ?? actionPanel?.entityName)\n );\n }\n }, [action, actionPanel, page]);\n\n return (\n <SideSheet\n open={open}\n title={t(sideSheetTitle)}\n buttonLabel={t(buttonLabel)}\n onSubmit={onSubmit}\n onClose={handleOnCloseSideSheet}\n width={width}\n {...otherSideSheetProps}\n >\n {loadingContent || loadingPage ? (\n <>\n {skeleton.map((sk) => sk)}\n <LayoutUnit unit='md' />\n <Skeleton variant='rect' className={classes.skeletonButton} />\n </>\n ) : (\n content\n )}\n </SideSheet>\n );\n};\n\nActionSideSheet.propTypes = {\n /**\n * User object\n */\n user: PropTypes.object,\n /**\n * boolean to open/close sidesheet\n */\n open: PropTypes.bool,\n /**\n * dispatch function\n */\n dispatch: PropTypes.func,\n /**\n * selected action object\n */\n action: PropTypes.object,\n /**\n * action panels array\n */\n actionPanels: PropTypes.array,\n /**\n * catalog object\n */\n catalog: PropTypes.object,\n /**\n * Selected node object\n */\n selectedNodeObj: PropTypes.object\n};\n","import { makeStyles } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport { useSnackbar } from 'notistack';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ActionSplitScreen } from './ActionSplitScreen';\nimport { ActionModal } from './ActionModal';\nimport { ActionPanelPlacement } from './ActionPanelPlacement';\nimport { ActionSideSheet } from './ActionSideSheet';\nimport { apiMutate } from '../utilities/useAxiosMutate';\nimport {\n getPathObject,\n getPrimaryKeyValues\n} from '../utilities/maintenanceEngine/CrudBrowserUtilities';\nimport { getSuccessAction } from '../UI/SuccessAction';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { toLowerFirstChar } from '../utilities/input/StringUtilities';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { useCrudActions } from '../hooks/crudActions';\nimport { useActionStore } from '../stores/actionStore';\nimport { useShellStore } from '../stores/shellStore';\nimport { usePromotedMethodEntity } from '../hooks/usePromotedMethodEntity';\nimport { getSanitizedName } from '../utilities/entities/entityUtilities';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\nimport { executeQueryAdHoc } from '../udp/utilities/methodUtils';\nimport { ConfigService } from '../configService';\n\nconst useStyles = makeStyles((theme) => ({}));\n\nconst FIELD_NUMBER = 10;\n\nexport const ActionWrapper = (props) => {\n const {\n actionState,\n actionPanel,\n dispatch,\n catalog,\n executeAction,\n splitScreenBody,\n entityAttributes,\n foreignKeyData,\n setForeignKeyData,\n crudTableEditionData,\n crudTableFormData,\n globalActions\n } = props;\n const classes = useStyles();\n\n const { getFKData } = useCrudActions();\n\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const successAction = getSuccessAction(closeSnackbar);\n const { t } = useTranslation();\n const [fkMethodEntities, setFKMethodEntities] = useState([]);\n const [loadingContent, setLoadingContent] = useState(true);\n const [udpFieldInfos, setUdpFieldInfos] = useState([]);\n\n const selectedNode = useActionStore((state) => state.selectedNode);\n const currentContainerId = useShellStore((state) => state.currentContainerId);\n\n const { data: udpOjectFieldInfo } = usePromotedMethodEntity(\n 'UdpObjectFieldInfo',\n true\n );\n\n const entityName = useMemo(() => {\n return actionPanel\n ? actionPanel.entityName\n : actionState?.inquiryParams[currentContainerId || 0]?.selectedNode\n ?.properties?.catalogReturnObject;\n }, [actionPanel, actionState, currentContainerId]);\n\n const [{ data: selectedEntity }] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${catalog?.apiCatalogId}/promotedMethodEntities/${entityName}/product/${ConfigService.config.UNITY_PRODUCT_ID}`,\n {},\n !!!catalog?.apiCatalogId || !!!entityName,\n false\n );\n\n const getMetaDataForUdpField = useCallback(\n async (entityName) => {\n let fieldInfos = [];\n if (udpOjectFieldInfo?.unityBaseSearchMethod?.apiMethodId) {\n const filterElements = [\n {\n searchField: 'ObjectInfo.SanitizedName',\n searchOperator: '=',\n searchValue: getSanitizedName(entityName)\n }\n ];\n const requestObj = getSearchObject(filterElements, 1, 50, true);\n\n await executeQueryAdHoc(\n { data: requestObj },\n udpOjectFieldInfo.unityBaseSearchMethod.apiMethodId\n ).then((resp) => {\n fieldInfos = resp.data?.pageList;\n });\n }\n return fieldInfos;\n },\n [udpOjectFieldInfo]\n );\n\n const fetchEntityData = useCallback(\n async (data) => {\n if (selectedEntity?.unityBaseGetAllMethod)\n return await executeAction(\n data,\n selectedEntity.unityBaseGetAllMethod.apiMethodId\n );\n },\n [executeAction, selectedEntity]\n );\n\n const showError = useCallback(() => {\n enqueueSnackbar(t(`Invalid action value.`), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n }, [enqueueSnackbar, t]);\n\n const getFKMethodEntities = useCallback(\n async (attributes) => {\n if (!attributes || !catalog) {\n return [];\n }\n let fkData = [];\n\n for (const attr of attributes) {\n // check if there is a property with this childEntity\n if (attr?.extendedProperties?.childEntity) {\n // get the list of child entity field names from the Keys array\n const ceFieldsArr = [];\n Object.keys(attr.extendedProperties.childEntityAssoc || {}).length &&\n !attr.extendedProperties.childEntityAssoc.UdpType &&\n attr.extendedProperties.childEntityAssoc.Keys.forEach(\n (value, i) => {\n const name = value.split(',')[0];\n if (name) {\n // check name string: if 1 word, lowercase. if 2 words, lower first char\n ceFieldsArr.push({\n idx: i,\n name: /^[A-Z]*$/.test(name)\n ? name.toLowerCase()\n : toLowerFirstChar(name)\n });\n }\n }\n );\n\n // find the child entity attribute\n const ceAttr = attributes.find((p) =>\n ceFieldsArr.find(\n (cef) => cef.name === p.name && !p?.extendedProperties?.identifier\n )\n );\n\n if (ceAttr) {\n // get list of entity if ceProp exists\n await apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${catalog.apiCatalogId}/promotedMethodEntities/${attr.reference}/product/${ConfigService.config.UNITY_PRODUCT_ID}`,\n {\n method: 'get'\n },\n {}\n ).then((resp) => {\n if (resp && resp.data) {\n fkData.push({ fkName: ceAttr.name, entity: resp.data });\n }\n });\n }\n }\n }\n setFKMethodEntities(fkData);\n },\n [catalog]\n );\n\n const handleOnClose = useCallback(\n (type, entity) => {\n dispatch({ type: type, entity });\n },\n [dispatch]\n );\n\n const onDelete = useCallback(\n async (data) => {\n if (selectedEntity?.unityBaseDeleteMethod) {\n if (\n selectedEntity.unityBaseDeleteMethod.apiMethodId ===\n actionState?.modal?.action?.value\n ) {\n return await executeAction(data, actionState?.modal?.action?.value);\n } else {\n showError();\n }\n }\n },\n [actionState, executeAction, selectedEntity, showError]\n );\n\n const handleOnDelete = useCallback(\n async (value) => {\n if (selectedEntity) {\n const entityName = selectedEntity?.entityName;\n\n // Get primary key value object using path parameters and merge with data\n const primaryKeyValues = getPrimaryKeyValues(entityAttributes, value);\n const pathObject = getPathObject(\n selectedEntity?.unityBaseDeleteMethod.pathParameters,\n primaryKeyValues\n );\n\n if (selectedEntity?.unityBaseDeleteMethod) {\n const data = { ...pathObject };\n const response = await onDelete({ data }).catch((res) => {\n enqueueSnackbar(res.message, {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n });\n\n if (response?.status === 200) {\n enqueueSnackbar(\n entityName\n ? t(`${entityName} has been deleted`)\n : t(`Entity has been deleted`),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction\n }\n );\n if (\n actionState?.menuListState &&\n actionState?.menuListState?.menuList.length > 0\n ) {\n const handleRemoveMenuItem =\n actionState?.menuListState?.handleRemoveMenuItem;\n if (handleRemoveMenuItem) {\n handleRemoveMenuItem(actionState?.menuListState?.menuList);\n }\n }\n fetchEntityData({ data: {} });\n }\n }\n }\n },\n [\n actionState,\n enqueueSnackbar,\n entityAttributes,\n fetchEntityData,\n onDelete,\n selectedEntity,\n successAction,\n t\n ]\n );\n\n const skeleton = useMemo(() => {\n const skeletonArr = [];\n for (let i = 0; i < FIELD_NUMBER; i++) {\n skeletonArr.push(\n <>\n <Skeleton key={i} variant='rect' className={classes.skeleton} />\n <LayoutUnit unit='xxs' />\n </>\n );\n }\n return skeletonArr;\n }, [classes]);\n\n useEffect(() => {\n if (entityAttributes) {\n getFKMethodEntities(entityAttributes);\n setLoadingContent(false);\n }\n }, [entityAttributes, getFKMethodEntities]);\n\n useEffect(() => {\n if (entityAttributes && fkMethodEntities && fkMethodEntities.length > 0) {\n getFKData(fkMethodEntities, setForeignKeyData, enqueueSnackbar);\n }\n }, [\n enqueueSnackbar,\n entityAttributes,\n fkMethodEntities,\n getFKData,\n setForeignKeyData\n ]);\n\n useEffect(() => {\n const setFieldInfos = async () => {\n if(!entityName) return;\n let response = await getMetaDataForUdpField(entityName);\n setUdpFieldInfos(response);\n };\n if (udpOjectFieldInfo?.unityBaseSearchMethod?.apiMethodId) {\n setFieldInfos();\n }\n }, [getMetaDataForUdpField, udpOjectFieldInfo, entityName]);\n\n return (\n <>\n <ActionSplitScreen\n body={\n <>\n {splitScreenBody}\n <ActionPanelPlacement\n actionPanels={actionState?.actionPanels[currentContainerId || 0]}\n showInquiryHeaderActions={actionState?.showInquiryHeaderActions}\n selectedNode={\n actionState?.inquiryParams[currentContainerId || 0]\n ?.selectedNode\n }\n globalActions={globalActions}\n />\n </>\n }\n open={actionState?.splitScreen?.open}\n action={actionState?.splitScreen?.action}\n type={actionState?.splitScreen?.type}\n params={actionState?.splitScreen?.params}\n executeAction={executeAction}\n actionPanel={actionPanel}\n selectedNodeObj={selectedNode?.nodeObj}\n menuNodeList={actionState?.menuListState?.menuList}\n sidebarEntity={selectedEntity}\n selectedNode={\n actionState?.inquiryParams[currentContainerId || 0]?.selectedNode\n }\n selectedNodeParent={\n actionState?.inquiryParams[currentContainerId || 0]\n ?.selectedNodeParent\n }\n refreshTree={\n actionState?.inquiryParams[currentContainerId || 0]?.refreshTree\n }\n />\n <ActionSideSheet\n key={actionState?.sideSheet?.action?.actionId}\n open={actionState?.sideSheet?.open}\n dispatch={dispatch}\n action={actionState?.sideSheet?.action}\n actionPanel={actionPanel}\n selectedNodeObj={selectedNode?.nodeObj}\n executeAction={executeAction}\n selectedEntity={selectedEntity}\n handleOnClose={() => {\n const sideSheet = { open: false, action: null };\n handleOnClose('OPEN_SIDESHEET', sideSheet);\n }}\n entityAttributes={entityAttributes}\n foreignKeyData={foreignKeyData}\n loadingContent={loadingContent}\n fetchEntityData={fetchEntityData}\n skeleton={skeleton}\n showError={showError}\n crudTableEditionData={crudTableEditionData}\n crudTableFormData={crudTableFormData}\n selectedNode={\n actionState?.inquiryParams[currentContainerId || 0]?.selectedNode\n }\n selectedNodeParent={\n actionState?.inquiryParams[currentContainerId || 0]\n ?.selectedNodeParent\n }\n refreshTree={\n actionState?.inquiryParams[currentContainerId || 0]?.refreshTree\n }\n udpFieldInfos={udpFieldInfos}\n />\n <ActionModal\n open={actionState?.modal?.open}\n action={actionState?.modal?.action}\n title={actionState?.modal?.title + selectedEntity?.entityName}\n message={t(\n `Are you sure you want to delete this ${selectedEntity?.entityName}?`\n )}\n confirmAction={() => handleOnDelete(selectedNode?.nodeObj)}\n handleOnClose={() => {\n const modal = { open: false, action: null };\n handleOnClose('OPEN_MODAL', modal);\n }}\n showError={showError}\n />\n </>\n );\n};\n\nActionWrapper.propTypes = {\n actionState: PropTypes.object,\n actionPanel: PropTypes.object,\n dispatch: PropTypes.func,\n catalog: PropTypes.object,\n executeAction: PropTypes.func,\n user: PropTypes.object,\n splitScreenBody: PropTypes.object\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAMA,cAAY,YAAY,WAAW;CACvC,MAAM,EACJ,WAAW,MAAM,QAAQ,GAAG,EAC7B;CACD,MAAM,EACJ,WAAW,MAAM,QAAQ,EAAE,EAC5B;CACD,SAAS;EACP,WAAW,MAAM,QAAQ,EAAE;EAC3B,cAAc,MAAM,QAAQ,EAAE;EAC9B,SAAS;EACT,eAAe;EAChB;CACD,OAAO,EACL,UAAU,GACX;CACD,SAAS,EACP,WAAW,MAAM,QAAQ,EAAE,EAC5B;CACD,SAAS;EACP,YAAY,MAAM,QAAQ,EAAE;EAC5B,SAAS;EACT,eAAe;EACf,UAAU;EACX;CACD,YAAY,EACV,YAAY,MAAM,QAAQ,EAAE,EAC7B;CACD,OAAO;EACL,QAAQ;EACR,SAAS;EACV;CACD,eAAe,EACb,UAAU,IACX;CACD,WAAW,EACT,UAAU,IACX;CACF,EAAE;AAEH,MAAa,cAAc,UAAU;CACnC,MAAM,EACJ,kBACA,gBACA,UACA,gBACA,UACA,sBACA,mBACA,kBACE;CACJ,MAAM,UAAUA,aAAW;CAE3B,MAAM,EAAE,2BAA2B,gBAAgB;CAEnD,MAAM,mBAAmB,cACjB,oBAAoB,kBAAkB,qBAAqB,EACjE,CAAC,kBAAkB,qBAAqB,CACzC;CAGD,MAAM,yBAAyB,cAAc;AAC3C,MAAI,CAAC,kBAAkB,OAAQ,QAAO,EAAE;EACxC,MAAM,kCAAkB,IAAI,KAAK;AACjC,mBAAiB,SAAS,SAAS;AACjC,OAAI,MAAM,oBAAoB,YAC5B,QAAO,KAAK,KAAK,mBAAmB,oBAAoB,EAAE,CAAC,CAAC,UAC1D,KAAK,mBAAmB,iBAAiB,gBACvC,qBAAqB,gBACvB,KAAK,mBAAmB,iBAAiB,KAAK,SAAS,OAAO,MAAM;IAClE,MAAM,OAAO,MAAM,MAAM,IAAI,CAAC;AAC9B,QAAI,KAEF,iBAAgB,IAAI,KAAK,aAAa,CAAC;KAEzC;IAEN;AACF,SAAO;IACN,CAAC,iBAAiB,CAAC;CAEtB,MAAM,eAAe,OAAO,WAAW;EACrC,IAAI,eAAe;GACjB,GAAG;GACH,GAAG;GACJ;AAGD,mBACG,QAAQ,OAAO,IAAI,oBAAoB,WAAW,CAClD,SAAS,OAAO;AACf,UAAO,aAAa,GAAG;IACvB;AAGJ,iBAAe,SAAS,QAAQ;AAC9B,UAAO,KAAK,aAAa,CAAC,SAAS,QAAQ;AACzC,QAAI,QAAQ,IAAI,UACd,cAAa,OAAO,IAAI,KAAK,MAC1B,MAAM,EAAE,OAAO,aAAa,KAAK,GACnC,EAAE;KAEL;IACF;AAIF,MAFiB,CAAC,qBAGhB,aAAa,MAAM,SAAS,aAAa;MAEzC,aAAa,MAAM,SAAS,cAAc,iBAAiB;AAE7D,oBAAkB,gBAAgB;;CAGpC,MAAM,aAAa,cACX,CAAC,sBACP,CAAC,qBAAqB,CACvB;AAED,QACE,oCAAC,QAAK,UAAU,gBACd,oCAAC,aACE,kBAAkB,KAAK,iBAAiB,UAAU;EACjD,MAAM,YAAY,eAAe,MAC9B,OACC,IAAI,KAAK,aAAa,KAAK,iBAAiB,MAAM,aAAa,CAClE;AAED,MAAI,WAAW,gBAAgB,CAAC,WAC9B,iBAAgB,WAAW;AAE7B,MAAI,WAAW,gBAAgB,cAAc,CAAC,WAAW,WACvD,iBAAgB,WAAW;AAE7B,SACE,CAAC,iBAAiB,oBAAoB,cACpC,oCAAC,MAAM,YAAS,KAAK,GAAG,gBAAgB,KAAK,GAAG,WAC9C,oCAAC;GAAW,SAAQ;GAAY,OAAO,EAAE,WAAW,GAAG;KACpD,gBAAgB,aACN,EACZ,uBACC,iBACA,OACA,kBACA,WACA,gBACA,MACA,mBACA,SACA,OACA,MACA,uBACD,CACc;GAGrB,CACE,EAEN,oCAAC,mBACC,oCAAC;EACC,SAAQ;EACR,OAAM;EACN,iBAAiB;EACjB,UAAU;EACV,OAAO,EAAE,WAAW,IAAI;IACzB,OAEc,CACH,CACT;;AAIX,WAAW,YAAY;CAIrB,kBAAkB,UAAU;CAI5B,gBAAgB,UAAU;CAI1B,sBAAsB,UAAU;CAIhC,gBAAgB,UAAU;CAI1B,UAAU,UAAU;CAIpB,UAAU,UAAU;CACrB;;;;ACrMD,MAAMC,cAAY,YAAY,WAAW,EAAE,EAAE;AAE7C,MAAa,eAAe,UAAU;CACpC,MAAM,EACJ,MACA,QACA,OACA,UAAU,6CACV,sBAAsB,IACtB,kBACE;AACY,cAAW;AAE3B,QACE,oCAAC;EACO;EACN,SAAS;EACT,mBAAgB;EAChB,oBAAiB;IAEjB,oCAAC,eAAY,IAAG,wBAAsB,MAAoB,EAC1D,oCAAC,qBACC,oCAAC,qBAAkB,IAAG,8BACnB,QACiB,CACN,EAChB,oCAAC,qBACC,oCAAC;EACC,SAAS;EACT,OAAM;EACN,SAAQ;IACT,SAEc,EACf,oCAAC;EACC,SAAS;EACT,iBAAiB;AACf,kBAAe;AACf,kBAAe;;EAEjB;EACA,SAAQ;IACT,UAEc,CACD,CACT;;;;;ACpCb,MAAMC,cAAYC,cAAY,UAAU;AACtC,QAAO;EACL,SAAS;GACP,UAAU;GACV,OAAO,MAAM,QAAQ,EAAE;GACvB,QAAQ,MAAM,QAAQ,EAAE;GACxB,QAAQ;GACT;EACD,WAAW;GACT,UAAU;GACV,4DAA4D;IAC1D,QAAQ,MAAM,QAAQ,EAAE;IACxB,OAAO,MAAM,QAAQ,EAAE;IACxB;GACF;EACD,cAAc;GACZ,iBAAiB;GACjB,cAAc;GACd,QAAQ;GACR,SAAS;GACT,WAAW,EACT,iBAAiB,SAClB;GACD,WAAW,EACT,iBAAiB,SAClB;GACF;EACD,sBAAsB;GACpB,iBAAiB;GACjB,cAAc;GACd,QAAQ;GACR,WAAW,EACT,iBAAiB,SAClB;GACD,WAAW,EACT,iBAAiB,SAClB;GACF;EACD,kBAAkB;GAChB,sDAAsD;IACpD,eAAe;IACf,cAAc;IACd,SAAS;IACV;GACD,WAAW,EACT,SAAS,GACV;GACD,WAAW,EACT,SAAS,GACV;GACF;EACD,oBAAoB;GAClB,iBAAiB;GACjB,cAAc;GACd,QAAQ;GACR,OAAO;GACP,OAAO;GACP,QAAQ;GACT;EACF;EACD;AAEF,MAAa,mBAAmB,UAAoD;CAClF,MAAM,CAAC,UAAU,eAAe,SAAS,MAAM;CAC/C,MAAM,UAAUD,YAAU,SAAS;CAEnC,MAAM,EAAE,MAAM,WAAW,QAAS,GAAG,eAAe;AACpD,KAAI,CAAC,QAAQ,OAAQ,QAAO;AAC5B,QACE,oCAAC,SAAI,WAAW,QAAQ,WACtB,oCAAC;EACC,IAAI;EAEJ,aAAa;EACb,WAAW,QAAQ;EACnB,WAAU;EACV,SAAS;GACP,KAAK,WAAW,QAAQ,uBAAuB,QAAQ;GACvD,SAAS,QAAQ;GAClB;EACD,MAAM,oCAAC,iBACL,MAAM,oCAAC,cAAU,GACjB;EACF,eAAe,YAAY,MAAM;EACjC,cAAc,YAAY,KAAK;EAC/B,MAAM;EACN,GAAI;IAEH,QAAQ,KAAK,WACZ,oCAAC;EACC,IAAI,+BAA6B,OAAO;EAExC,aAAa,+BAA6B,OAAO;EACjD,KAAK,OAAO;EACZ,MAEE,oCAAC;GACC,MAAM,OAAO,KAAK;GAClB,MACE,OAAO,KAAK,SAAS,UACjB,qBAAqB,OAAO,KAAK,KAAK,GACtC,gBAAgB,OAAO,KAAK,KAAK;IAEvC;EAEJ,MAAM;EACN,UAAS,MAAK,OAAO,QAAQ,EAAE;EAC/B,SAAS,EACP,KAAK,QAAQ,oBACd;EACD,cAAc,OAAO;GACrB,CACF,CACQ,CACR;;;;;ACtHV,MAAME,cAAY,YAAY,WAAW;CACvC,MAAM,EAAE;CACR,aAAa,EACX,OAAO,OAAO,SAAS,gBAAgB,OAAO,SAAS,SAAS,KAAK,EACtE;CACD,0BAA0B;EACxB,SAAS;EACT,YAAY;EACb;CACF,EAAE;AAEH,MAAa,wBAAwB,UAAU;CAC7C,MAAM,EACJ,cACA,0BACA,cACA,kBACE;CACJ,MAAM,UAAUA,aAAW;CAC3B,MAAM,EAAE,kBAAkB,YAAY;CACtC,MAAM,cAAc,gBAAgB,UAAU,MAAM,YAAY;CAEhE,MAAM,sBAAsB,aACzB,aAAa;AACZ,gBAAc,UAAU,cAAc,QAAQ;IAEhD,CAAC,eAAe,aAAa,CAC9B;CAED,MAAM,YAAY,cAAc;AAC9B,MAAI,CAAC,gBAAgB,CAAC,cAAc,OAClC,QAAO,EAAE;AAEX,SAAO,aAAa,QAAQ,WAAW,UAAU;GAC/C,MAAM,kBAAkB,OAAO;AAC/B,aAAU,mBAAmB,OAAO;AACpC,UAAO;KACN,EAAE,CAAC;IACL,CAAC,aAAa,CAAC;CAElB,MAAM,2BAA2B,cAAc;EAC7C,MAAM,oBAAoB,UAAU,mBAAmB;EACvD,MAAM,2BACJ,UAAU,mBAAmB;EAC/B,IAAI,8BAA8B;EAClC,IAAI,8BAA8B;EAClC,IAAI,6BAA6B;AAEjC,MAAI,mBAAmB,OACrB,+BAA8B,kBAAkB,KAAK,gBAAgB;GACnE,MAAM,WACJ,YAAY,OAAO,aAAa,QAAQ,WAAW,SAAS;IAC1D,MAAM,iBAAiB,QAAQ,KAAK,SAAS,KAAK,UAAU;AAC5D,WACE,aACA,aACE,gBACA,cAAc,SACd,cAAc,YAAY,+BAC1B,cAAc,cACf;MAEF,KAAK,IAAI;AAEd,OAAI,CAAC,YAAY,aAAa,WAC5B,QAAO;AAGT,UACE,oCAAC;IACC,KAAK,aAAa;IAClB,OAAO,aAAa,QAAQ;IAC5B,MAAM,aAAa,QAAQ;IAC3B,MAAM;IACN,WACE,aAAa,MAAM,SAAS,UACxB,qBAAqB,aAAa,MAAM,KAAK,GAC7C,gBAAgB,aAAa,MAAM,KAAK;IAE9C,aAAa,oBAAoB,aAAa,SAAS;IACvD,UAAU,CAAC;KACX;IAEJ;AAGJ,MAAI,0BAA0B,OAC5B,KAAI,CAAC,mBAAmB,UAAU,0BAA0B,UAAU,EACpE,+BAA8B,yBAAyB,KACpD,gBAAgB;GACf,MAAM,WACJ,YAAY,OAAO,aAAa,QAAQ,WAAW,SAAS;IAC1D,MAAM,iBAAiB,QAAQ,KAAK,SAAS,KAAK,UAAU;AAC5D,WACE,aACA,aACE,gBACA,cAAc,SACd,cAAc,YAAY,+BAC1B,cAAc,cACf;MAEF,KAAK,IAAI;AAEd,OAAI,CAAC,YAAY,aAAa,WAC5B,QAAO;AAGT,UACE,oCAAC;IACC,KAAK,aAAa;IAClB,OAAO,aAAa,QAAQ;IAC5B,MAAM,aAAa,QAAQ;IAC3B,MAAM;IACN,WACE,aAAa,MAAM,SAAS,UACxB,qBAAqB,aAAa,MAAM,KAAK,GAC7C,gBAAgB,aAAa,MAAM,KAAK;IAE9C,aAAa,oBAAoB,aAAa,SAAS;IACvD,UAAU,CAAC;KACX;IAGP;MAED,8BACE,oCAAC;GACC,cAAc;GACA;IACd;AAKR,SACE,oCAAC,gCACC,oCAAC,SAAI,WAAW,QAAQ,4BACrB,6BACA,6BACA,2BACG,CACmB;IAE5B;EAAC;EAAW;EAAqB;EAAS;EAAa,CAAC;CAE3D,MAAM,yBAAyB,cAAc;EAC3C,MAAM,gBAAgB,UAAU,UAAU;EAC1C,MAAM,uBACJ,cAAc,mBAAmB;EACnC,MAAM,8BACJ,cAAc,mBAAmB;EACnC,IAAI,gCAAgC;EACpC,IAAI,gCAAgC;EACpC,IAAI,6BAA6B;EAGjC,MAAM,yBACJ,CAAC,6BAA6B,UAC7B,CAAC,sBAAsB,UACtB,6BAA6B,UAAU;AAE3C,MAAI,sBAAsB,QAAQ;GAChC,MAAM,aAAa,EAAE;AACrB,wBAAqB,SAAS,WAAW;IACvC,MAAM,WACJ,OAAO,OAAO,aAAa,QAAQ,WAAW,SAAS;KACrD,MAAM,iBAAiB,QAAQ,KAAK,SAAS,KAAK,UAAU;AAC5D,YACE,aACA,aACE,gBACA,cAAc,SACd,cAAc,YAAY,+BAC1B,cAAc,cACf;OAEF,KAAK,IAAI;AAEd,QAAI,CAAC,YAAY,CAAC,QAAQ,WACxB,YAAW,KAAK;KAAE,GAAG;KAAQ,UAAU;KAAM,CAAC;aACrC,SACT,YAAW,KAAK,OAAO;KAEzB;AAEF,mCAAgC,YAC5B,QAAQ,OAAO;AACf,WAAO,yBACH,CAAC,GAAG,aAAa,GAAG,UACpB,GAAG;KACP,EACA,KAAK,aAAa,MAClB,oCAAC,SAAI,KAAK,KACR,oCAAC;IAEC,OAAO,aAAa,QAAQ;IAC5B,MAAM,aAAa,QAAQ;IAC3B,MAAM;IACN,WACE,aAAa,MAAM,SAAS,UACxB,qBAAqB,aAAa,MAAM,KAAK,GAC7C,gBAAgB,aAAa,MAAM,KAAK;IAE9C,aAAa;AACX,yBAAoB,aAAa,SAAS;;IAE5C,UAAU,aAAa,YAAY;KACnC,CACE,CACN;AAEJ,OAAI,wBAAwB;IAC1B,MAAM,gBAAgB,YAAY,MAC/B,gBAAgB,YAAY,UAC9B;AAED,iCAA6B,gBAC3B,oCAAC;KACC,eAAe,oBAAoB,eAAe,SAAS;KAC3D,UAAU,eAAe,YAAY;OAErC,oCAAC,cAAW,OAAO,EAAE,aAAa,GAAG,IAClC,eAAe,QAAQ,KACb,CACO,GACpB;;;AAIR,MAAI,6BAA6B,OAC/B,KAAI,uBACF,iCAAgC,4BAA4B,KACzD,gBAAgB;GACf,MAAM,WACJ,YAAY,OAAO,aAAa,QAAQ,WAAW,SAAS;IAC1D,MAAM,iBAAiB,QAAQ,KAAK,SAAS,KAAK,UAAU;AAC5D,WACE,aACA,aACE,gBACA,cAAc,SACd,cAAc,YAAY,+BAC1B,cAAc,cACf;MAEF,KAAK,IAAI;AAEd,OAAI,CAAC,YAAY,aAAa,WAC5B,QAAO;AAGT,UACE,oCAAC;IACC,KAAK,aAAa;IAClB,OAAO,aAAa,QAAQ;IAC5B,MAAM;IACN,WACE,aAAa,MAAM,SAAS,UACxB,qBAAqB,aAAa,MAAM,KAAK,GAC7C,gBAAgB,aAAa,MAAM,KAAK;IAE9C,aAAa,oBAAoB,aAAa,SAAS;IACvD,UAAU,CAAC;KACX;IAGP;MAED,iCACE,oCAAC;GACC,cAAc;GACd,iBAAiB;GACH;IACd;AAKR,SACE,oCAAC,mCACE,4BAA4B,CAAC,eAC5B,oCAAC,SAAI,WAAW,QAAQ,4BACrB,+BACA,4BACA,8BACG,CAEoB;IAE/B;EACD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,4BAA4B,cAAc;EAI9C,MAAM,uBAHgB,UAAU,UAAU,CAE1B,mBAAmB,aAG7B,QACC,WACC,OAAO,YACN,OAAO,OAAO,aAAa,QAAQ,WAAW,SAAS;GACtD,MAAM,iBAAiB,QAAQ,KAAK,SAAS,KAAK,UAAU;AAC5D,UACE,aACA,aACE,gBACA,cAAc,SACd,cAAc,YAAY,+BAC1B,cAAc,cACf;KAEF,KAAK,IACN,MACL,CACA,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,SAAS,IAAI,EAAE;EAClD,IAAI,sBAAsB,EAAE;AAC5B,MAAI,eAAe,OACjB,uBAAsB,cAAc,KAAK,WAAW;AAElD,UAAO;IACL,MAAM;KAAE,MAFS,KAAK,MAAM,OAAO,WAAW,CAErB;KAAM,MAAM;KAAU;IAC/C,QAAQ,EACN,MAAM,OAAO,MACd;IACD,GAAG;IACJ;IACD;AAEJ,UACG,CAAC,CAAC,sBAAsB,UAAU,CAAC,CAAC,qBAAqB,WAC1D,CAAC,eACC,oCAAC,mBACC,SAAS,CAAC,GAAG,sBAAsB,GAAG,oBAAoB,CAAC,KACxD,YAAY;GACX,MAAM,OAAO;GACb,eAAe,oBAAoB,OAAO,SAAS;GACnD,MAAM,OAAO,OAAO;GACrB,EACF,GACD;IAGL;EACD;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,QACE,0DACG,0BACA,wBACA,0BACA;;AAIP,qBAAqB,YAAY;CAI/B,cAAc,UAAU;CAIxB,0BAA0B,UAAU;CAIpC,cAAc,UAAU;CACzB;;;;ACxXD,MAAMC,cAAY,YAAY,WAAW,EACvC,MAAM,EAAE,EACT,EAAE;AAEH,MAAa,mBAAmB,UAAU;CACxC,MAAM,EACJ,MACA,QACA,aACA,iBACA,eACA,gBACA,eACA,kBACA,gBACA,gBACA,iBACA,UACA,WACA,sBACA,mBACA,cACA,oBACA,aACA,kBACE;CACJ,MAAM,UAAUA,aAAW;CAC3B,MAAM,CAAC,OAAO,YAAY,SAAS,IAAI;CACvC,MAAM,CAAC,aAAa,kBAAkB,SAAS,GAAG;CAClD,MAAM,CAAC,UAAU,eAAe,qBAClB,QAAQ,KAAK,mBAAmB,CAC7C;CACD,MAAM,CAAC,mBAAmB,wBAAwB,UAAU;CAC5D,MAAM,CAAC,qBAAqB,0BAA0B,SAAS,EAAE,CAAC;CAClE,MAAM,EAAE,iBAAiB,kBAAkB,aAAa;CACxD,MAAM,gBAAgB,iBAAiB,cAAc;CACrD,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,OAAO,SAAS;CAEtB,MAAM,0BAA0B,gBAC7B,UAAU,MAAM,gBAClB;CACD,MAAM,wBAAwB,gBAAgB,UAAU,MAAM,aAAa;CAE3E,MAAM,uBAAuB,cAAc;AACzC,MAAI,QAAQ,OACV;OAAI,gBAAgB,uBAAuB,gBAAgB,OAAO,MAChE,QAAO,eAAe,sBAAsB;YAE5C,gBAAgB,uBAAuB,gBAAgB,OAAO,MAE9D,QAAO,eAAe,sBAAsB;;AAGhD,SAAO;IACN,CAAC,gBAAgB,OAAO,CAAC;CAE5B,MAAM,CAAC,EAAE,MAAM,MAAM,SAAS,iBAAiB,YAC7C,cAAc,gBACd,QAAQ,QAAQ,YAAY,UAAU,wBACtC,EAAE,EACF,CAAC,CAAC,CAAC,QAAQ,YAAY,UAAU,CAAC,CAAC,CAAC,sBACpC,MACD;CAED,MAAM,WAAW,YACf,OAAO,SAAS;AACd,MAAI,gBAAgB,yBAAyB,QAAQ,MACnD,KAAI,eAAe,sBAAsB,gBAAgB,OAAO,MAC9D,QAAO,MAAM,cAAc,MAAM,OAAO,MAAM;MAE9C,YAAW;IAIjB;EAAC;EAAQ;EAAe;EAAgB;EAAU,CACnD;CAED,MAAM,WAAW,YACf,OAAO,SAAS;AACd,MAAI,gBAAgB,yBAAyB,QAAQ,MACnD,KAAI,eAAe,sBAAsB,gBAAgB,OAAO,MAC9D,QAAO,MAAM,cAAc,MAAM,OAAO,MAAM;MAE9C,YAAW;IAIjB;EAAC;EAAQ;EAAe;EAAgB;EAAU,CACnD;CAED,MAAM,wBAAwB,YAAY,YAAY;AACpD,MAAI,gBAAgB,uBAAuB;GAEzC,MAAM,WAAW,MAAM,gBAAgB,EAAE,MAD5B,EAAE,EACgC,CAAC,CAAC,OAAO,QAAQ;AAC9D,oBAAgB,IAAI,SAAS;KAC3B,SAAS;KACT,cAAc;MACZ,UAAU;MACV,YAAY;MACb;KACF,CAAC;KACF;AAEF,OAAI,UAAU,WAAW,OAAO,iBAAiB;IAC/C,MAAM,cAAc,SAAS,KAAK,MAC/B,MAAM,EAAE,OAAO,gBAAgB,GACjC;IAED,MAAM,sBAAsB,EAAE,GAAG,uBAAuB;AACxD,wBAAoB,UAAU;AAC9B,4BAAwB,oBAAoB;;;IAG/C;EACD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,iBAAiB,YACrB,OAAO,WAAW;AAChB,MAAI,kBAAkB,gBAAgB,uBAAuB;GAC3D,MAAM,aAAa,gBAAgB;AACnC,OAAI,eAAe,uBAYjB;SAViB,MAAM,SAAS,EAAE,MADrB,EAAE,aAAa,QAAQ,EACI,CAAC,CAAC,OAAO,QAAQ;AACvD,qBAAgB,IAAI,SAAS;MAC3B,SAAS;MACT,cAAc;OACZ,UAAU;OACV,YAAY;OACb;MACF,CAAC;MACF,GAEY,WAAW,IACvB,iBACE,aACI,EAAE,GAAG,WAAW,mBAAmB,GACnC,EAAE,0BAA0B,EAChC;KACE,cAAc;MACZ,UAAU;MACV,YAAY;MACb;KACD,QAAQ;KACT,CACF;;QAIL,iBAAgB,EAAE,oCAAoC,EAAE;GACtD,SAAS;GACT,cAAc;IACZ,UAAU;IACV,YAAY;IACb;GACF,CAAC;IAGN;EAAC;EAAiB;EAAU;EAAgB;EAAe;EAAE,CAC9D;CAED,MAAM,iBAAiB,YACrB,OAAO,QAAQ,qBAAqB;AAClC,MAAI,kBAAkB,gBAAgB,uBAAuB;GAC3D,MAAM,aAAa,gBAAgB;AAEnC,OAAI,eAAe,uBAiBjB;SAViB,MAAM,SAAS,EAAE,MADrB;KAAE,GAJI,cACjB,eAAe,sBAAsB,gBACrC,iBACD;KAC6B,aAAa;KAAQ,EACX,CAAC,CAAC,OAAO,QAAQ;AACvD,qBAAgB,IAAI,SAAS;MAC3B,SAAS;MACT,cAAc;OACZ,UAAU;OACV,YAAY;OACb;MACF,CAAC;MACF,GAEY,WAAW,KAAK;AAC5B,qBACE,aACI,EAAE,GAAG,WAAW,mBAAmB,GACnC,EAAE,0BAA0B,EAChC;MACE,cAAc;OACZ,UAAU;OACV,YAAY;OACb;MACD,QAAQ;MACT,CACF;AAED,4BAAuB;;;QAI3B,iBAAgB,EAAE,oCAAoC,EAAE;GACtD,SAAS;GACT,cAAc;IACZ,UAAU;IACV,YAAY;IACb;GACF,CAAC;IAGN;EACE;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,yBAAyB,kBAAkB;AAC/C,MAAI,kBACF,oBAAmB;AAErB,iBAAe;IACd,CAAC,mBAAmB,cAAc,CAAC;CAStC,MAAM,UAAU,cAAc;AAC5B,MAAI,KACF,QACE,oCAAC,eAAY,SAAS,gBACpB,oCAAC;GACO;GACN,KAAK,QAAQ;GACb,UAAU;GACV,cAAc;IACZ,QAAQ,MAAM;IACd,WAAW,cAAc,YAAY;IACrC,SAAS,cAAc;IACvB,eAAe,oBAAoB;IACnC,eAAe,cAAc;IAChB;IACb,mBAAmB,QAAQ,YAAY,wBAAwB,EAAE;IACjE,mBAAmB;IACnB,yBAAyB;IACzB,sBAAsB;IACtB,+BAA+B;IAC/B,mBAAmB;IACnB,gBAAgB;IACN;IACA;IACX;GACD,gBAAgB;IAChB,CACU;MAGhB,QACE,oCAAC;GACC,KAAK,QAAQ;GACK;GACF;GAChB,UAAU;GACV,gBAAgB;GAChB,UAAU;GACY;GACH;GACJ;IACf;IAGL;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,iBAAiB,cAAc;AACnC,MAAI,QAAQ,YAAY,gBACtB,QAAO,OAAO,WAAW;WAChB,KACT,QAAO,MAAM;MAEb,SACG,QAAQ,iBAAiB,gBAAgB,SACtC,aACA,YACH,QAAQ,YAAY,cAAc,aAAa;IAGnD;EAAC;EAAQ;EAAa;EAAK,CAAC;AAE/B,QACE,oCAAC;EACO;EACN,OAAO,EAAE,eAAe;EACxB,aAAa,EAAE,YAAY;EACjB;EACV,SAAS;EACF;EACP,GAAI;IAEH,kBAAkB,cACjB,0DACG,SAAS,KAAK,OAAO,GAAG,EACzB,oCAAC,cAAW,MAAK,OAAO,EACxB,oCAAC;EAAS,SAAQ;EAAO,WAAW,QAAQ;GAAkB,CAC7D,GAEH,QAEQ;;AAIhB,gBAAgB,YAAY;CAI1B,MAAM,UAAU;CAIhB,MAAM,UAAU;CAIhB,UAAU,UAAU;CAIpB,QAAQ,UAAU;CAIlB,cAAc,UAAU;CAIxB,SAAS,UAAU;CAInB,iBAAiB,UAAU;CAC5B;;;;AC3WD,MAAM,YAAY,YAAY,WAAW,EAAE,EAAE;AAE7C,MAAM,eAAe;AAErB,MAAa,iBAAiB,UAAU;CACtC,MAAM,EACJ,aACA,aACA,UACA,SACA,eACA,iBACA,kBACA,gBACA,mBACA,sBACA,mBACA,kBACE;CACJ,MAAM,UAAU,WAAW;CAE3B,MAAM,EAAE,cAAc,gBAAgB;CAEtC,MAAM,EAAE,iBAAiB,kBAAkB,aAAa;CACxD,MAAM,gBAAgB,iBAAiB,cAAc;CACrD,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,EAAE,CAAC;CAC5D,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,KAAK;CAC1D,MAAM,CAAC,eAAe,oBAAoB,SAAS,EAAE,CAAC;CAEtD,MAAM,eAAe,gBAAgB,UAAU,MAAM,aAAa;CAClE,MAAM,qBAAqB,eAAe,UAAU,MAAM,mBAAmB;CAE7E,MAAM,EAAE,MAAM,sBAAsB,wBAClC,sBACA,KACD;CAED,MAAM,aAAa,cAAc;AAC/B,SAAO,cACH,YAAY,aACZ,aAAa,cAAc,sBAAsB,IAAI,cACjD,YAAY;IACnB;EAAC;EAAa;EAAa;EAAmB,CAAC;CAElD,MAAM,CAAC,EAAE,MAAM,oBAAoB,YACjC,cAAc,qBACd,cAAc,SAAS,aAAa,0BAA0B,WAAW,WAAW,cAAc,OAAO,oBACzG,EAAE,EACF,CAAC,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,YAC/B,MACD;CAED,MAAM,yBAAyB,YAC7B,OAAO,iBAAe;EACpB,IAAI,aAAa,EAAE;AACnB,MAAI,mBAAmB,uBAAuB,YAU5C,OAAM,kBACJ,EAAE,MAHe,gBAPI,CACrB;GACE,aAAa;GACb,gBAAgB;GAChB,aAAa,iBAAiBC,aAAW;GAC1C,CACF,EACkD,GAAG,IAAI,KAAK,EAGzC,EACpB,kBAAkB,sBAAsB,YACzC,CAAC,MAAM,SAAS;AACf,gBAAa,KAAK,MAAM;IACxB;AAEJ,SAAO;IAET,CAAC,kBAAkB,CACpB;CAED,MAAM,kBAAkB,YACtB,OAAO,SAAS;AACd,MAAI,gBAAgB,sBAClB,QAAO,MAAM,cACX,MACA,eAAe,sBAAsB,YACtC;IAEL,CAAC,eAAe,eAAe,CAChC;CAED,MAAM,YAAY,kBAAkB;AAClC,kBAAgB,EAAE,wBAAwB,EAAE;GAC1C,SAAS;GACT,cAAc;IACZ,UAAU;IACV,YAAY;IACb;GACF,CAAC;IACD,CAAC,iBAAiB,EAAE,CAAC;CAExB,MAAM,sBAAsB,YAC1B,OAAO,eAAe;AACpB,MAAI,CAAC,cAAc,CAAC,QAClB,QAAO,EAAE;EAEX,IAAI,SAAS,EAAE;AAEf,OAAK,MAAM,QAAQ,WAEjB,KAAI,MAAM,oBAAoB,aAAa;GAEzC,MAAM,cAAc,EAAE;AACtB,UAAO,KAAK,KAAK,mBAAmB,oBAAoB,EAAE,CAAC,CAAC,UAC1D,CAAC,KAAK,mBAAmB,iBAAiB,WAC1C,KAAK,mBAAmB,iBAAiB,KAAK,SAC3C,OAAO,MAAM;IACZ,MAAM,OAAO,MAAM,MAAM,IAAI,CAAC;AAC9B,QAAI,KAEF,aAAY,KAAK;KACf,KAAK;KACL,MAAM,WAAW,KAAK,KAAK,GACvB,KAAK,aAAa,GAClB,iBAAiB,KAAK;KAC3B,CAAC;KAGP;GAGH,MAAM,SAAS,WAAW,MAAM,MAC9B,YAAY,MACT,QAAQ,IAAI,SAAS,EAAE,QAAQ,CAAC,GAAG,oBAAoB,WACzD,CACF;AAED,OAAI,OAEF,OAAM,UACJ,cAAc,qBACd,cAAc,QAAQ,aAAa,0BAA0B,KAAK,UAAU,WAAW,cAAc,OAAO,oBAC5G,EACE,QAAQ,OACT,EACD,EAAE,CACH,CAAC,MAAM,SAAS;AACf,QAAI,QAAQ,KAAK,KACf,QAAO,KAAK;KAAE,QAAQ,OAAO;KAAM,QAAQ,KAAK;KAAM,CAAC;KAEzD;;AAIR,sBAAoB,OAAO;IAE7B,CAAC,QAAQ,CACV;CAED,MAAM,gBAAgB,aACnB,MAAM,WAAW;AAChB,WAAS;GAAQ;GAAM;GAAQ,CAAC;IAElC,CAAC,SAAS,CACX;CAED,MAAM,WAAW,YACf,OAAO,SAAS;AACd,MAAI,gBAAgB,sBAClB,KACE,eAAe,sBAAsB,gBACrC,aAAa,OAAO,QAAQ,MAE5B,QAAO,MAAM,cAAc,MAAM,aAAa,OAAO,QAAQ,MAAM;MAEnE,YAAW;IAIjB;EAAC;EAAa;EAAe;EAAgB;EAAU,CACxD;CAED,MAAM,iBAAiB,YACrB,OAAO,UAAU;AACf,MAAI,gBAAgB;GAClB,MAAMA,eAAa,gBAAgB;GAGnC,MAAM,mBAAmB,oBAAoB,kBAAkB,MAAM;GACrE,MAAM,aAAa,cACjB,gBAAgB,sBAAsB,gBACtC,iBACD;AAED,OAAI,gBAAgB,uBAYlB;SAViB,MAAM,SAAS,EAAE,MADrB,EAAE,GAAG,YAAY,EACU,CAAC,CAAC,OAAO,QAAQ;AACvD,qBAAgB,IAAI,SAAS;MAC3B,SAAS;MACT,cAAc;OACZ,UAAU;OACV,YAAY;OACb;MACF,CAAC;MACF,GAEY,WAAW,KAAK;AAC5B,qBACEA,eACI,EAAE,GAAGA,aAAW,mBAAmB,GACnC,EAAE,0BAA0B,EAChC;MACE,cAAc;OACZ,UAAU;OACV,YAAY;OACb;MACD,QAAQ;MACT,CACF;AACD,SACE,aAAa,iBACb,aAAa,eAAe,SAAS,SAAS,GAC9C;MACA,MAAM,uBACJ,aAAa,eAAe;AAC9B,UAAI,qBACF,sBAAqB,aAAa,eAAe,SAAS;;AAG9D,qBAAgB,EAAE,MAAM,EAAE,EAAE,CAAC;;;;IAKrC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,WAAW,cAAc;EAC7B,MAAM,cAAc,EAAE;AACtB,OAAK,IAAI,IAAI,GAAG,IAAI,cAAc,IAChC,aAAY,KACV,0DACE,oCAAC;GAAS,KAAK;GAAG,SAAQ;GAAO,WAAW,QAAQ;IAAY,EAChE,oCAAC,cAAW,MAAK,QAAQ,CACxB,CACJ;AAEH,SAAO;IACN,CAAC,QAAQ,CAAC;AAEb,iBAAgB;AACd,MAAI,kBAAkB;AACpB,uBAAoB,iBAAiB;AACrC,qBAAkB,MAAM;;IAEzB,CAAC,kBAAkB,oBAAoB,CAAC;AAE3C,iBAAgB;AACd,MAAI,oBAAoB,oBAAoB,iBAAiB,SAAS,EACpE,WAAU,kBAAkB,mBAAmB,gBAAgB;IAEhE;EACD;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,iBAAgB;EACd,MAAM,gBAAgB,YAAY;AAChC,OAAG,CAAC,WAAY;AAEhB,oBADe,MAAM,uBAAuB,WAAW,CAC7B;;AAE5B,MAAI,mBAAmB,uBAAuB,YAC5C,gBAAe;IAEhB;EAAC;EAAwB;EAAmB;EAAW,CAAC;AAE3D,QACE,0DACE,oCAAC;EACC,MACE,0DACG,iBACD,oCAAC;GACC,cAAc,aAAa,aAAa,sBAAsB;GAC9D,0BAA0B,aAAa;GACvC,cACE,aAAa,cAAc,sBAAsB,IAC7C;GAES;IACf,CACD;EAEL,MAAM,aAAa,aAAa;EAChC,QAAQ,aAAa,aAAa;EAClC,MAAM,aAAa,aAAa;EAChC,QAAQ,aAAa,aAAa;EACnB;EACF;EACb,iBAAiB,cAAc;EAC/B,cAAc,aAAa,eAAe;EAC1C,eAAe;EACf,cACE,aAAa,cAAc,sBAAsB,IAAI;EAEvD,oBACE,aAAa,cAAc,sBAAsB,IAC7C;EAEN,aACE,aAAa,cAAc,sBAAsB,IAAI;GAEvD,EACF,oCAAC;EACC,KAAK,aAAa,WAAW,QAAQ;EACrC,MAAM,aAAa,WAAW;EACpB;EACV,QAAQ,aAAa,WAAW;EACnB;EACb,iBAAiB,cAAc;EAChB;EACC;EAChB,qBAAqB;AAEnB,iBAAc,kBADI;IAAE,MAAM;IAAO,QAAQ;IAAM,CACL;;EAE1B;EACF;EACA;EACC;EACP;EACC;EACW;EACH;EACnB,cACE,aAAa,cAAc,sBAAsB,IAAI;EAEvD,oBACE,aAAa,cAAc,sBAAsB,IAC7C;EAEN,aACE,aAAa,cAAc,sBAAsB,IAAI;EAExC;GACf,EACF,oCAAC;EACC,MAAM,aAAa,OAAO;EAC1B,QAAQ,aAAa,OAAO;EAC5B,OAAO,aAAa,OAAO,QAAQ,gBAAgB;EACnD,SAAS,EACP,wCAAwC,gBAAgB,WAAW,GACpE;EACD,qBAAqB,eAAe,cAAc,QAAQ;EAC1D,qBAAqB;AAEnB,iBAAc,cADA;IAAE,MAAM;IAAO,QAAQ;IAAM,CACT;;EAEzB;GACX,CACD;;AAIP,cAAc,YAAY;CACxB,aAAa,UAAU;CACvB,aAAa,UAAU;CACvB,UAAU,UAAU;CACpB,SAAS,UAAU;CACnB,eAAe,UAAU;CACzB,MAAM,UAAU;CAChB,iBAAiB,UAAU;CAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmbientCardButton-DOnaCczn.js","names":[],"sources":["../src/UI/inputs/buttons/AmbientCardButton.jsx"],"sourcesContent":["import React from 'react'\nimport { Button, makeStyles } from '@material-ui/core'\nimport { ArrowUpRightIcon, EditIcon, DeleteIcon } from '@fluentui/react-icons'\nimport PropTypes from 'prop-types'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: 0,\n padding: 8\n }\n}))\n\nexport const AmbientCardButton = (props) => {\n const classes = useStyles(props)\n\n const { editOption, launchOption, deleteOption, children, ...otherProps } = props\n\n return (\n <Button\n classes={{ root: classes.root }}\n variant='outlined'\n disableElevation\n color='primary'\n {...otherProps}\n >\n {editOption && <EditIcon />}\n {launchOption && <ArrowUpRightIcon />}\n {deleteOption && <DeleteIcon />}\n {children}\n </Button>\n );\n}\n\nAmbientCardButton.propTypes = {\n /**\n * When true will display edit button.\n */\n editOption: PropTypes.bool,\n /**\n * When true will display launch button.\n */\n launchOption: PropTypes.bool,\n /**\n * When true will display delete button.\n */\n deleteOption: PropTypes.bool,\n /**\n * Will display a text lable vesion.\n */\n children: PropTypes.string,\n\n}"],"mappings":";;;;;;AAKA,MAAM,YAAY,YAAY,WAAW,EACvC,MAAM;CACJ,cAAc;CACd,SAAS;CACV,EACF,EAAE;AAEH,MAAa,qBAAqB,UAAU;CAC1C,MAAM,UAAU,UAAU,MAAM;CAEhC,MAAM,EAAE,YAAY,cAAc,cAAc,SAAU,GAAG,eAAe;AAE5E,QACE,oCAAC;EACC,SAAS,EAAE,MAAM,QAAQ,MAAM;EAC/B,SAAQ;EACR;EACA,OAAM;EACN,GAAI;IAEH,cAAc,oCAAC,eAAW,EAC1B,gBAAgB,oCAAC,uBAAmB,EACpC,gBAAgB,oCAAC,iBAAa,EAC9B,SACM;;AAIb,kBAAkB,YAAY;CAI5B,YAAY,UAAU;CAItB,cAAc,UAAU;CAIxB,cAAc,UAAU;CAIxB,UAAU,UAAU
|
|
1
|
+
{"version":3,"file":"AmbientCardButton-DOnaCczn.js","names":[],"sources":["../src/UI/inputs/buttons/AmbientCardButton.jsx"],"sourcesContent":["import React from 'react'\nimport { Button, makeStyles } from '@material-ui/core'\nimport { ArrowUpRightIcon, EditIcon, DeleteIcon } from '@fluentui/react-icons'\nimport PropTypes from 'prop-types'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: 0,\n padding: 8\n }\n}))\n\nexport const AmbientCardButton = (props) => {\n const classes = useStyles(props)\n\n const { editOption, launchOption, deleteOption, children, ...otherProps } = props\n\n return (\n <Button\n classes={{ root: classes.root }}\n variant='outlined'\n disableElevation\n color='primary'\n {...otherProps}\n >\n {editOption && <EditIcon />}\n {launchOption && <ArrowUpRightIcon />}\n {deleteOption && <DeleteIcon />}\n {children}\n </Button>\n );\n}\n\nAmbientCardButton.propTypes = {\n /**\n * When true will display edit button.\n */\n editOption: PropTypes.bool,\n /**\n * When true will display launch button.\n */\n launchOption: PropTypes.bool,\n /**\n * When true will display delete button.\n */\n deleteOption: PropTypes.bool,\n /**\n * Will display a text lable vesion.\n */\n children: PropTypes.string,\n\n}"],"mappings":";;;;;;AAKA,MAAM,YAAY,YAAY,WAAW,EACvC,MAAM;CACJ,cAAc;CACd,SAAS;CACV,EACF,EAAE;AAEH,MAAa,qBAAqB,UAAU;CAC1C,MAAM,UAAU,UAAU,MAAM;CAEhC,MAAM,EAAE,YAAY,cAAc,cAAc,SAAU,GAAG,eAAe;AAE5E,QACE,oCAAC;EACC,SAAS,EAAE,MAAM,QAAQ,MAAM;EAC/B,SAAQ;EACR;EACA,OAAM;EACN,GAAI;IAEH,cAAc,oCAAC,eAAW,EAC1B,gBAAgB,oCAAC,uBAAmB,EACpC,gBAAgB,oCAAC,iBAAa,EAC9B,SACM;;AAIb,kBAAkB,YAAY;CAI5B,YAAY,UAAU;CAItB,cAAc,UAAU;CAIxB,cAAc,UAAU;CAIxB,UAAU,UAAU"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as FluentIcon } from "./FluentIcon-DjE8A5DC.js";
|
|
2
2
|
import { M as TreeViewModeEnums, _ as NodeActionTriggerEnums } from "./unitySystemEnums-DQSkCr3D.js";
|
|
3
3
|
import { t as UnityFluentIcon } from "./UnityFluentIcon-DkZ-zXku.js";
|
|
4
|
-
import { S as getIconFromName, V as searchTree, d as findAllParentIds, w as getNodeIdForRightBorder } from "./TreeUtilities-
|
|
4
|
+
import { S as getIconFromName, V as searchTree, d as findAllParentIds, w as getNodeIdForRightBorder } from "./TreeUtilities-DWgARig7.js";
|
|
5
5
|
import { t as getUnityIconFromName } from "./UnityIconLibrary-CjIwzfjv.js";
|
|
6
6
|
import { t as StatusChip } from "./StatusChip-DZAN88VU.js";
|
|
7
7
|
import { t as AggregateChip } from "./AggregateChip-BF6RL_4_.js";
|
|
@@ -354,4 +354,4 @@ const BaseTreeMenu = (props) => {
|
|
|
354
354
|
|
|
355
355
|
//#endregion
|
|
356
356
|
export { BaseTreeMenuItem as n, BaseTreeMenu as t };
|
|
357
|
-
//# sourceMappingURL=BaseTreeMenu-
|
|
357
|
+
//# sourceMappingURL=BaseTreeMenu-C3azNZ0b.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseTreeMenu-sWv-qaul.js","names":["useStyles","other","tree","expanded"],"sources":["../src/treeMenu/BaseTreeMenuItem.jsx","../src/treeMenu/BaseTreeMenu.jsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport {\n makeStyles,\n lighten,\n Typography,\n CircularProgress,\n darken,\n useTheme,\n Tooltip\n} from '@material-ui/core';\nimport TreeItem from '@material-ui/lab/TreeItem';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport clsx from 'clsx';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { useDrag, useDrop } from 'react-dnd';\nimport {\n NodeActionTriggerEnums,\n TreeViewModeEnums\n} from '../enums/unitySystemEnums.ts';\nimport { AggregateChip } from '../UI/utilityDisplay/AggregateChip';\nimport { StatusChip } from '../UI/dataDisplay/status/StatusChip';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '&.Mui-selected > .MuiTreeItem-content': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[700]\n : theme.palette.grey[300],\n borderRight: `4px solid ${theme.palette.primary.main}`\n },\n '&.Mui-selected > .MuiTreeItem-content .MuiTreeItem-label': {\n backgroundColor: 'transparent',\n paddingLeft: 0\n },\n '&.Mui-selected > .MuiTreeItem-content > .MuiCollapse-wrapperInner': {\n backgroundColor:\n theme?.getThemeData()?.mode !== 'dark' && theme.palette.grey[50]\n },\n '& .MuiTreeItem-content .MuiTreeItem-iconContainer': {\n display: (props) => (props.sidebarExpanded ? 'flex' : 'none')\n }\n },\n content: {\n backgroundColor: (props) =>\n theme?.getThemeData()?.mode !== 'dark' &&\n props.conditionalIconName &&\n props.conditionalIconColor\n ? lighten(props.conditionalIconColor, 0.92)\n : ''\n },\n labelRoot: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: (props) => (props.sidebarExpanded ? 0 : theme.spacing(1.5)),\n width: '100%'\n },\n labelContainer: {\n display: (props) => (!props.sidebarExpanded ? 'none' : ''),\n width: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `calc(100% - ${theme.spacing(6.25)}px)`\n : `calc(100% - ${theme.spacing(7.75)}px)`\n },\n conditionalIconContainer: {\n display: 'inline-flex'\n },\n labelText: {\n fontSize: '0.75rem',\n fontWeight: 600,\n lineHeight: '1rem',\n letterSpacing: 0.1\n },\n captionText: {\n marginLeft: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact ? theme.spacing(1) : '',\n fontSize: '0.65rem',\n fontWeight: 400,\n lineHeight: 1,\n letterSpacing: 0.4\n },\n labelOverflow: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n group: {\n width: '100%',\n '& .MuiTreeItem-group': {\n marginLeft: 0\n },\n '& .MuiTreeItem-content': {\n paddingLeft: (props) =>\n props.sidebarExpanded ? (props.depth || 1) * theme.spacing(1) : 0,\n borderRight: (props) =>\n props.showRightBorderColor\n ? `4px solid ${theme.palette.primary.main}`\n : '',\n borderBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n },\n '& .MuiTreeItem-content .MuiTreeItem-label': {\n paddingLeft: 0,\n width: (props) =>\n props.sidebarExpanded && `calc(100% - ${theme.spacing(2.5)}px)`\n },\n '& .MuiTreeItem-content .MuiTreeItem-iconContainer span': {\n display: (props) => (props.hideExpansion ? 'none' : '')\n },\n '& .MuiCollapse-wrapperInner': {\n backgroundColor: (props) =>\n theme?.getThemeData()?.mode !== 'dark' && props.isSelectedNode\n ? theme.palette.grey[50]\n : ''\n }\n },\n iconContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 50,\n marginTop: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(0.25)\n : theme.spacing(0.5),\n marginBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(0.25)\n : theme.spacing(0.5),\n marginRight: theme.spacing(1),\n width: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(3)\n : theme.spacing(4),\n height: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(3)\n : theme.spacing(4),\n border: (props) =>\n props.iconColor\n ? `1px solid ${darken(props.iconColor, 0.1)}`\n : `1px solid ${theme.palette.secondary.main}`,\n backgroundColor: '#ffffff'\n }\n}));\n\nexport const BaseTreeMenuItem = (props) => {\n const {\n parentId,\n nodeId,\n iconName,\n iconType,\n conditionalIconName,\n conditionalIconType,\n conditionalIconColor,\n label,\n iconColor,\n onNodeSelect,\n isSelectedNode,\n subLabel,\n sidebarExpanded,\n isLastNode,\n loading,\n node,\n onDropNode,\n treeViewMode,\n menuIndex,\n aggregateThresholdId,\n ...other\n } = props;\n const classes = useStyles(props);\n const theme = useTheme();\n\n const [{ isDragging }, dragRef] = useDrag({\n type: 'BaseTreeMenuItem',\n item: { ...node, sourceNodeMenuIndex: menuIndex },\n collect: (monitor) => ({\n isDragging: monitor.isDragging()\n })\n });\n\n const handleOnDrop = useCallback(\n (sourceNode, monitor) => {\n if (!monitor.didDrop()) {\n if (onDropNode) {\n const { sourceNodeMenuIndex, ...other } = sourceNode;\n onDropNode({ ...other }, node, sourceNodeMenuIndex, menuIndex);\n }\n }\n },\n [onDropNode, node, menuIndex]\n );\n\n const [{ canDrop, isOver }, dropRef] = useDrop(\n () => ({\n accept: ['BaseTreeMenuItem'],\n drop: (sourceNode, monitor) => {\n // condition to only handle first drop\n handleOnDrop(sourceNode, monitor);\n },\n canDrop: (sourceNode) => checkCanDrop(sourceNode),\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: !!monitor.canDrop()\n })\n }),\n [handleOnDrop]\n );\n\n const checkCanDrop = useCallback(\n (sourceNode) => {\n if (sourceNode) {\n const onDropActions = node?.properties?.nodeActions?.filter(\n (na) => na?.triggerType === NodeActionTriggerEnums.On_Node_Drop\n );\n if (!onDropActions) {\n return false;\n }\n const nodeDragEntities = onDropActions?.map(\n (action) => action?.dragEntityName\n );\n return nodeDragEntities.includes(\n sourceNode?.properties?.catalogReturnObject\n );\n }\n },\n [node]\n );\n\n const handleOnLabelClick = useCallback(\n (e) => {\n e.preventDefault();\n onNodeSelect(e, nodeId);\n },\n [onNodeSelect, nodeId]\n );\n\n return (\n <TreeItem\n className={classes.group}\n key={nodeId}\n nodeId={nodeId}\n label={\n <div ref={dropRef}>\n <Tooltip title={sidebarExpanded ? '' : label}>\n <div\n ref={(node?.properties?.isDraggable && dragRef) || null}\n style={{ opacity: isDragging ? 0.5 : 1 }}\n >\n {loading ? (\n <CircularProgress size={12} />\n ) : (\n <div\n id={'udpRecord-BaseTreeMenuItem-'+label.replace(/\\s+/g, '')}\n udprecordid={'udpRecord-BaseTreeMenuItem-'+label.replace(/\\s+/g, '')}\n className={classes.labelRoot}\n style={{\n fontWeight: isSelectedNode ? 'bold' : ''\n }}\n >\n {iconName && (\n <div className={classes.iconContainer}>\n <UnityFluentIcon\n size={\n treeViewMode === TreeViewModeEnums.Compact\n ? 'small'\n : 'medium'\n }\n color={iconColor}\n type={iconType}\n icon={\n iconType === 'unity'\n ? getUnityIconFromName(iconName)\n : getIconFromName(iconName)\n }\n style={{\n color: iconColor\n ? darken(iconColor, 0.1)\n : theme.palette.secondary.main\n }}\n />\n </div>\n )}\n <div className={classes.labelContainer}>\n <Typography\n variant='subtitle2'\n className={clsx(classes.labelText, classes.labelOverflow)}\n >\n {label}\n {subLabel &&\n treeViewMode === TreeViewModeEnums.Compact && (\n <Typography\n variant='caption'\n className={clsx(\n classes.captionText,\n classes.labelOverflow\n )}\n >\n {subLabel}\n </Typography>\n )}\n </Typography>\n {subLabel && treeViewMode === TreeViewModeEnums.Classic && (\n <div className={classes.labelOverflow}>\n <Typography\n variant='caption'\n className={clsx(classes.captionText)}\n >\n {subLabel}\n </Typography>\n </div>\n )}\n </div>\n {node?.properties?.itemCount !== undefined &&\n node?.properties?.itemCount !== null &&\n sidebarExpanded && (\n <StatusChip\n label={String(node.properties.itemCount)}\n useSmallChip={true}\n />\n )}\n <AggregateChip aggregateThresholdId={aggregateThresholdId} />\n {conditionalIconName && sidebarExpanded && (\n <div className={classes.conditionalIconContainer}>\n <UnityFluentIcon\n size={\n treeViewMode === TreeViewModeEnums.Compact\n ? 'small'\n : 'medium'\n }\n color={conditionalIconColor}\n type={conditionalIconType}\n icon={\n conditionalIconType === 'unity'\n ? getUnityIconFromName(conditionalIconName)\n : getIconFromName(conditionalIconName)\n }\n style={{\n color: conditionalIconColor\n }}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </Tooltip>\n </div>\n }\n onLabelClick={handleOnLabelClick}\n classes={{ root: classes.root, content: classes.content }}\n {...other}\n />\n );\n};\n","import React, { useCallback, useState, useEffect, useRef } from 'react';\nimport {\n makeStyles,\n useTheme,\n lighten,\n CircularProgress,\n Typography\n} from '@material-ui/core';\nimport TreeView from '@material-ui/lab/TreeView';\nimport { BaseTreeMenuItem } from './BaseTreeMenuItem';\nimport {\n searchTree,\n findAllParentIds,\n getNodeIdForRightBorder\n} from '../utilities/tree/TreeUtilities';\nimport { FluentIcon } from '../utilities/iconLibrary/FluentIcon';\nimport { CaretUpSolid8Icon, CaretDownSolid8Icon } from '@fluentui/react-icons';\nimport { cloneDeep } from 'lodash';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums.ts';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginBottom: theme.spacing(1.75),\n borderTop: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n },\n noChildrenContainer: {\n borderBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n }\n}));\n\nexport const BaseTreeMenu = (props) => {\n const {\n menuItems,\n onSelectNode,\n onDropNode,\n menuIndex,\n selectedNodeId,\n selectedNodeParentId,\n sidebarExpanded,\n treeViewMode,\n childrenKey = 'children'\n } = props;\n const [expanded, setExpanded] = useState(null);\n const [isCurrentActiveTree, setIsCurrentActiveTree] = useState(false);\n const [selectedNodeIsHidden, setSelectedNodeIsHidden] = useState(false);\n const [tree, setTree] = useState(menuItems);\n const theme = useTheme();\n const classes = useStyles(props);\n const firstRender = useRef(true);\n\n const handleSelectedNode = useCallback(\n (e, value) => {\n const selectedNode = searchTree(tree, value);\n if (onSelectNode) {\n onSelectNode(selectedNode, menuIndex);\n setSelectedNodeIsHidden(false);\n }\n },\n [tree, menuIndex, onSelectNode]\n );\n\n const renderTree = useCallback(\n (node, depth = 1) => {\n let label = node.properties?.nodeLabel || node.properties?.name;\n let subLabel = node.properties?.nodeSubLabel;\n let iconName = node.properties?.defaultIcon?.name;\n let iconType = node.properties?.defaultIcon?.type;\n let conditionalIconName = node.properties?.conditionalIconName || '';\n let conditionalIconType = node.properties?.conditionalIconName\n ? node.properties.conditionalIconType\n : '';\n let conditionalIconColor = node.properties?.conditionalIconName\n ? node.properties?.conditionalIconColor\n : '';\n let nodeId = node.id;\n let iconColor = node.properties?.conditionalIconName\n ? node.properties?.conditionalIconColor\n : node.properties?.defaultIcon?.color?.hex;\n let aggregateThresholdId = node.properties?.aggregateThresholdId || '';\n\n if (node.isGroupNode) {\n label = node.properties?.label;\n subLabel = node.properties?.subLabel;\n iconName = node.properties?.icon?.name;\n iconType = node.properties?.icon?.type;\n iconColor = node.properties?.icon?.color?.hex;\n }\n\n return (\n <BaseTreeMenuItem\n key={nodeId}\n nodeId={nodeId}\n label={label}\n subLabel={subLabel}\n iconName={iconName}\n iconType={iconType}\n conditionalIconName={conditionalIconName}\n conditionalIconType={conditionalIconType}\n conditionalIconColor={conditionalIconColor}\n parentId={node.parentId}\n iconColor={iconColor}\n onNodeSelect={handleSelectedNode}\n selectedNodeId={selectedNodeId}\n isSelectedNode={selectedNodeId === node.id}\n showRightBorderColor={\n selectedNodeIsHidden &&\n isCurrentActiveTree &&\n getNodeIdForRightBorder(expanded, tree, selectedNodeParentId) ===\n node.id\n }\n isCurrentActiveTree={isCurrentActiveTree}\n sidebarExpanded={sidebarExpanded}\n depth={depth}\n hideExpansion={!!!node[childrenKey]?.length}\n node={node}\n onDropNode={onDropNode}\n treeViewMode={treeViewMode}\n menuIndex={menuIndex}\n aggregateThresholdId={aggregateThresholdId}\n >\n {node.properties?.lazyLoad &&\n !!!node[childrenKey]?.length &&\n !node.completedLoadingChildren && (\n <CircularProgress\n size={12}\n style={{ marginLeft: (depth || 1) * theme.spacing(1) }}\n />\n )}\n {node.properties?.lazyLoad &&\n !!!node[childrenKey]?.length &&\n node.completedLoadingChildren &&\n sidebarExpanded &&\n !node.errorRetrievingChildren && (\n <div className={classes.noChildrenContainer}>\n <Typography\n variant='caption'\n style={{\n marginLeft: (depth || 1) * theme.spacing(3),\n fontWeight: 400\n }}\n >\n No Children\n </Typography>\n </div>\n )}\n {node.properties?.lazyLoad &&\n node.completedLoadingChildren &&\n sidebarExpanded &&\n node.errorRetrievingChildren && (\n <div className={classes.noChildrenContainer}>\n <Typography\n variant='caption'\n style={{\n marginLeft: (depth || 1) * theme.spacing(3),\n fontWeight: 400\n }}\n >\n {`Error Retrieving ${\n !!node[childrenKey]?.length ? `Additional ` : ''\n }Children`}\n </Typography>\n </div>\n )}\n {Array.isArray(node[childrenKey])\n ? node[childrenKey].map((n, i) => renderTree(n, depth + 1))\n : null}\n </BaseTreeMenuItem>\n );\n },\n [\n handleSelectedNode,\n selectedNodeId,\n selectedNodeIsHidden,\n isCurrentActiveTree,\n sidebarExpanded,\n expanded,\n tree,\n selectedNodeParentId,\n theme,\n classes,\n onDropNode,\n treeViewMode,\n menuIndex,\n childrenKey\n ]\n );\n\n const handleNodeExpansion = useCallback(\n async (evt, nodeIds) => {\n const treeCopy = cloneDeep(tree);\n setExpanded(nodeIds);\n\n const parentNode = searchTree(treeCopy, selectedNodeParentId);\n const initialAllParentNodeIds = selectedNodeParentId\n ? [selectedNodeParentId]\n : [];\n const allParentNodeIds = findAllParentIds(\n treeCopy,\n parentNode,\n initialAllParentNodeIds\n );\n const selectedNodeShown = allParentNodeIds.every((id) =>\n nodeIds.includes(id)\n );\n if (\n isCurrentActiveTree &&\n allParentNodeIds.length &&\n !selectedNodeShown\n ) {\n setSelectedNodeIsHidden(true);\n } else {\n setSelectedNodeIsHidden(false);\n }\n },\n [isCurrentActiveTree, tree, selectedNodeParentId]\n );\n\n const getExpandedRecursively = useCallback(\n (tree) => {\n if (!tree) return [];\n return tree.reduce((expandedIds, item) => {\n if (item?.isExpanded) {\n expandedIds.push(item.id);\n }\n if (item && item[childrenKey]?.length) {\n expandedIds = expandedIds.concat(\n getExpandedRecursively(item[childrenKey])\n );\n }\n return expandedIds;\n }, []);\n },\n [childrenKey]\n );\n\n useEffect(() => {\n setTree(menuItems);\n }, [menuItems]);\n\n useEffect(() => {\n if (!tree) return;\n if (firstRender.current) {\n let expanded = [];\n if (tree?.isExpanded) {\n expanded.push(tree.id);\n }\n expanded = expanded.concat(getExpandedRecursively(tree[childrenKey]));\n setExpanded(expanded);\n firstRender.current = false;\n }\n // Do not reset expanded on subsequent updates\n }, [getExpandedRecursively, tree, childrenKey]);\n\n useEffect(() => {\n if (!!searchTree(tree, selectedNodeId)) {\n setIsCurrentActiveTree(true);\n } else {\n setIsCurrentActiveTree(false);\n }\n }, [tree, selectedNodeId]);\n\n if (!expanded) {\n return null;\n }\n\n return (\n <TreeView\n key={tree}\n className={classes.root}\n defaultCollapseIcon={\n <FluentIcon\n size='small'\n component={CaretUpSolid8Icon}\n style={{\n color: lighten(theme.palette.primary.main, 0.5),\n width: theme.spacing(1.5),\n height: theme.spacing(1.5)\n }}\n />\n }\n expanded={expanded || []}\n onNodeToggle={handleNodeExpansion}\n defaultExpandIcon={\n <FluentIcon\n size='small'\n component={CaretDownSolid8Icon}\n style={{\n color: lighten(theme.palette.primary.main, 0.5),\n width: theme.spacing(1.5),\n height: theme.spacing(1.5)\n }}\n />\n }\n selected={selectedNodeId}\n >\n {tree && renderTree(tree)}\n </TreeView>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseTreeMenu-C3azNZ0b.js","names":["useStyles","other","tree","expanded"],"sources":["../src/treeMenu/BaseTreeMenuItem.jsx","../src/treeMenu/BaseTreeMenu.jsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport {\n makeStyles,\n lighten,\n Typography,\n CircularProgress,\n darken,\n useTheme,\n Tooltip\n} from '@material-ui/core';\nimport TreeItem from '@material-ui/lab/TreeItem';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport clsx from 'clsx';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { useDrag, useDrop } from 'react-dnd';\nimport {\n NodeActionTriggerEnums,\n TreeViewModeEnums\n} from '../enums/unitySystemEnums.ts';\nimport { AggregateChip } from '../UI/utilityDisplay/AggregateChip';\nimport { StatusChip } from '../UI/dataDisplay/status/StatusChip';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '&.Mui-selected > .MuiTreeItem-content': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[700]\n : theme.palette.grey[300],\n borderRight: `4px solid ${theme.palette.primary.main}`\n },\n '&.Mui-selected > .MuiTreeItem-content .MuiTreeItem-label': {\n backgroundColor: 'transparent',\n paddingLeft: 0\n },\n '&.Mui-selected > .MuiTreeItem-content > .MuiCollapse-wrapperInner': {\n backgroundColor:\n theme?.getThemeData()?.mode !== 'dark' && theme.palette.grey[50]\n },\n '& .MuiTreeItem-content .MuiTreeItem-iconContainer': {\n display: (props) => (props.sidebarExpanded ? 'flex' : 'none')\n }\n },\n content: {\n backgroundColor: (props) =>\n theme?.getThemeData()?.mode !== 'dark' &&\n props.conditionalIconName &&\n props.conditionalIconColor\n ? lighten(props.conditionalIconColor, 0.92)\n : ''\n },\n labelRoot: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: (props) => (props.sidebarExpanded ? 0 : theme.spacing(1.5)),\n width: '100%'\n },\n labelContainer: {\n display: (props) => (!props.sidebarExpanded ? 'none' : ''),\n width: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `calc(100% - ${theme.spacing(6.25)}px)`\n : `calc(100% - ${theme.spacing(7.75)}px)`\n },\n conditionalIconContainer: {\n display: 'inline-flex'\n },\n labelText: {\n fontSize: '0.75rem',\n fontWeight: 600,\n lineHeight: '1rem',\n letterSpacing: 0.1\n },\n captionText: {\n marginLeft: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact ? theme.spacing(1) : '',\n fontSize: '0.65rem',\n fontWeight: 400,\n lineHeight: 1,\n letterSpacing: 0.4\n },\n labelOverflow: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n group: {\n width: '100%',\n '& .MuiTreeItem-group': {\n marginLeft: 0\n },\n '& .MuiTreeItem-content': {\n paddingLeft: (props) =>\n props.sidebarExpanded ? (props.depth || 1) * theme.spacing(1) : 0,\n borderRight: (props) =>\n props.showRightBorderColor\n ? `4px solid ${theme.palette.primary.main}`\n : '',\n borderBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n },\n '& .MuiTreeItem-content .MuiTreeItem-label': {\n paddingLeft: 0,\n width: (props) =>\n props.sidebarExpanded && `calc(100% - ${theme.spacing(2.5)}px)`\n },\n '& .MuiTreeItem-content .MuiTreeItem-iconContainer span': {\n display: (props) => (props.hideExpansion ? 'none' : '')\n },\n '& .MuiCollapse-wrapperInner': {\n backgroundColor: (props) =>\n theme?.getThemeData()?.mode !== 'dark' && props.isSelectedNode\n ? theme.palette.grey[50]\n : ''\n }\n },\n iconContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 50,\n marginTop: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(0.25)\n : theme.spacing(0.5),\n marginBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(0.25)\n : theme.spacing(0.5),\n marginRight: theme.spacing(1),\n width: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(3)\n : theme.spacing(4),\n height: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(3)\n : theme.spacing(4),\n border: (props) =>\n props.iconColor\n ? `1px solid ${darken(props.iconColor, 0.1)}`\n : `1px solid ${theme.palette.secondary.main}`,\n backgroundColor: '#ffffff'\n }\n}));\n\nexport const BaseTreeMenuItem = (props) => {\n const {\n parentId,\n nodeId,\n iconName,\n iconType,\n conditionalIconName,\n conditionalIconType,\n conditionalIconColor,\n label,\n iconColor,\n onNodeSelect,\n isSelectedNode,\n subLabel,\n sidebarExpanded,\n isLastNode,\n loading,\n node,\n onDropNode,\n treeViewMode,\n menuIndex,\n aggregateThresholdId,\n ...other\n } = props;\n const classes = useStyles(props);\n const theme = useTheme();\n\n const [{ isDragging }, dragRef] = useDrag({\n type: 'BaseTreeMenuItem',\n item: { ...node, sourceNodeMenuIndex: menuIndex },\n collect: (monitor) => ({\n isDragging: monitor.isDragging()\n })\n });\n\n const handleOnDrop = useCallback(\n (sourceNode, monitor) => {\n if (!monitor.didDrop()) {\n if (onDropNode) {\n const { sourceNodeMenuIndex, ...other } = sourceNode;\n onDropNode({ ...other }, node, sourceNodeMenuIndex, menuIndex);\n }\n }\n },\n [onDropNode, node, menuIndex]\n );\n\n const [{ canDrop, isOver }, dropRef] = useDrop(\n () => ({\n accept: ['BaseTreeMenuItem'],\n drop: (sourceNode, monitor) => {\n // condition to only handle first drop\n handleOnDrop(sourceNode, monitor);\n },\n canDrop: (sourceNode) => checkCanDrop(sourceNode),\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: !!monitor.canDrop()\n })\n }),\n [handleOnDrop]\n );\n\n const checkCanDrop = useCallback(\n (sourceNode) => {\n if (sourceNode) {\n const onDropActions = node?.properties?.nodeActions?.filter(\n (na) => na?.triggerType === NodeActionTriggerEnums.On_Node_Drop\n );\n if (!onDropActions) {\n return false;\n }\n const nodeDragEntities = onDropActions?.map(\n (action) => action?.dragEntityName\n );\n return nodeDragEntities.includes(\n sourceNode?.properties?.catalogReturnObject\n );\n }\n },\n [node]\n );\n\n const handleOnLabelClick = useCallback(\n (e) => {\n e.preventDefault();\n onNodeSelect(e, nodeId);\n },\n [onNodeSelect, nodeId]\n );\n\n return (\n <TreeItem\n className={classes.group}\n key={nodeId}\n nodeId={nodeId}\n label={\n <div ref={dropRef}>\n <Tooltip title={sidebarExpanded ? '' : label}>\n <div\n ref={(node?.properties?.isDraggable && dragRef) || null}\n style={{ opacity: isDragging ? 0.5 : 1 }}\n >\n {loading ? (\n <CircularProgress size={12} />\n ) : (\n <div\n id={'udpRecord-BaseTreeMenuItem-'+label.replace(/\\s+/g, '')}\n udprecordid={'udpRecord-BaseTreeMenuItem-'+label.replace(/\\s+/g, '')}\n className={classes.labelRoot}\n style={{\n fontWeight: isSelectedNode ? 'bold' : ''\n }}\n >\n {iconName && (\n <div className={classes.iconContainer}>\n <UnityFluentIcon\n size={\n treeViewMode === TreeViewModeEnums.Compact\n ? 'small'\n : 'medium'\n }\n color={iconColor}\n type={iconType}\n icon={\n iconType === 'unity'\n ? getUnityIconFromName(iconName)\n : getIconFromName(iconName)\n }\n style={{\n color: iconColor\n ? darken(iconColor, 0.1)\n : theme.palette.secondary.main\n }}\n />\n </div>\n )}\n <div className={classes.labelContainer}>\n <Typography\n variant='subtitle2'\n className={clsx(classes.labelText, classes.labelOverflow)}\n >\n {label}\n {subLabel &&\n treeViewMode === TreeViewModeEnums.Compact && (\n <Typography\n variant='caption'\n className={clsx(\n classes.captionText,\n classes.labelOverflow\n )}\n >\n {subLabel}\n </Typography>\n )}\n </Typography>\n {subLabel && treeViewMode === TreeViewModeEnums.Classic && (\n <div className={classes.labelOverflow}>\n <Typography\n variant='caption'\n className={clsx(classes.captionText)}\n >\n {subLabel}\n </Typography>\n </div>\n )}\n </div>\n {node?.properties?.itemCount !== undefined &&\n node?.properties?.itemCount !== null &&\n sidebarExpanded && (\n <StatusChip\n label={String(node.properties.itemCount)}\n useSmallChip={true}\n />\n )}\n <AggregateChip aggregateThresholdId={aggregateThresholdId} />\n {conditionalIconName && sidebarExpanded && (\n <div className={classes.conditionalIconContainer}>\n <UnityFluentIcon\n size={\n treeViewMode === TreeViewModeEnums.Compact\n ? 'small'\n : 'medium'\n }\n color={conditionalIconColor}\n type={conditionalIconType}\n icon={\n conditionalIconType === 'unity'\n ? getUnityIconFromName(conditionalIconName)\n : getIconFromName(conditionalIconName)\n }\n style={{\n color: conditionalIconColor\n }}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </Tooltip>\n </div>\n }\n onLabelClick={handleOnLabelClick}\n classes={{ root: classes.root, content: classes.content }}\n {...other}\n />\n );\n};\n","import React, { useCallback, useState, useEffect, useRef } from 'react';\nimport {\n makeStyles,\n useTheme,\n lighten,\n CircularProgress,\n Typography\n} from '@material-ui/core';\nimport TreeView from '@material-ui/lab/TreeView';\nimport { BaseTreeMenuItem } from './BaseTreeMenuItem';\nimport {\n searchTree,\n findAllParentIds,\n getNodeIdForRightBorder\n} from '../utilities/tree/TreeUtilities';\nimport { FluentIcon } from '../utilities/iconLibrary/FluentIcon';\nimport { CaretUpSolid8Icon, CaretDownSolid8Icon } from '@fluentui/react-icons';\nimport { cloneDeep } from 'lodash';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums.ts';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginBottom: theme.spacing(1.75),\n borderTop: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n },\n noChildrenContainer: {\n borderBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n }\n}));\n\nexport const BaseTreeMenu = (props) => {\n const {\n menuItems,\n onSelectNode,\n onDropNode,\n menuIndex,\n selectedNodeId,\n selectedNodeParentId,\n sidebarExpanded,\n treeViewMode,\n childrenKey = 'children'\n } = props;\n const [expanded, setExpanded] = useState(null);\n const [isCurrentActiveTree, setIsCurrentActiveTree] = useState(false);\n const [selectedNodeIsHidden, setSelectedNodeIsHidden] = useState(false);\n const [tree, setTree] = useState(menuItems);\n const theme = useTheme();\n const classes = useStyles(props);\n const firstRender = useRef(true);\n\n const handleSelectedNode = useCallback(\n (e, value) => {\n const selectedNode = searchTree(tree, value);\n if (onSelectNode) {\n onSelectNode(selectedNode, menuIndex);\n setSelectedNodeIsHidden(false);\n }\n },\n [tree, menuIndex, onSelectNode]\n );\n\n const renderTree = useCallback(\n (node, depth = 1) => {\n let label = node.properties?.nodeLabel || node.properties?.name;\n let subLabel = node.properties?.nodeSubLabel;\n let iconName = node.properties?.defaultIcon?.name;\n let iconType = node.properties?.defaultIcon?.type;\n let conditionalIconName = node.properties?.conditionalIconName || '';\n let conditionalIconType = node.properties?.conditionalIconName\n ? node.properties.conditionalIconType\n : '';\n let conditionalIconColor = node.properties?.conditionalIconName\n ? node.properties?.conditionalIconColor\n : '';\n let nodeId = node.id;\n let iconColor = node.properties?.conditionalIconName\n ? node.properties?.conditionalIconColor\n : node.properties?.defaultIcon?.color?.hex;\n let aggregateThresholdId = node.properties?.aggregateThresholdId || '';\n\n if (node.isGroupNode) {\n label = node.properties?.label;\n subLabel = node.properties?.subLabel;\n iconName = node.properties?.icon?.name;\n iconType = node.properties?.icon?.type;\n iconColor = node.properties?.icon?.color?.hex;\n }\n\n return (\n <BaseTreeMenuItem\n key={nodeId}\n nodeId={nodeId}\n label={label}\n subLabel={subLabel}\n iconName={iconName}\n iconType={iconType}\n conditionalIconName={conditionalIconName}\n conditionalIconType={conditionalIconType}\n conditionalIconColor={conditionalIconColor}\n parentId={node.parentId}\n iconColor={iconColor}\n onNodeSelect={handleSelectedNode}\n selectedNodeId={selectedNodeId}\n isSelectedNode={selectedNodeId === node.id}\n showRightBorderColor={\n selectedNodeIsHidden &&\n isCurrentActiveTree &&\n getNodeIdForRightBorder(expanded, tree, selectedNodeParentId) ===\n node.id\n }\n isCurrentActiveTree={isCurrentActiveTree}\n sidebarExpanded={sidebarExpanded}\n depth={depth}\n hideExpansion={!!!node[childrenKey]?.length}\n node={node}\n onDropNode={onDropNode}\n treeViewMode={treeViewMode}\n menuIndex={menuIndex}\n aggregateThresholdId={aggregateThresholdId}\n >\n {node.properties?.lazyLoad &&\n !!!node[childrenKey]?.length &&\n !node.completedLoadingChildren && (\n <CircularProgress\n size={12}\n style={{ marginLeft: (depth || 1) * theme.spacing(1) }}\n />\n )}\n {node.properties?.lazyLoad &&\n !!!node[childrenKey]?.length &&\n node.completedLoadingChildren &&\n sidebarExpanded &&\n !node.errorRetrievingChildren && (\n <div className={classes.noChildrenContainer}>\n <Typography\n variant='caption'\n style={{\n marginLeft: (depth || 1) * theme.spacing(3),\n fontWeight: 400\n }}\n >\n No Children\n </Typography>\n </div>\n )}\n {node.properties?.lazyLoad &&\n node.completedLoadingChildren &&\n sidebarExpanded &&\n node.errorRetrievingChildren && (\n <div className={classes.noChildrenContainer}>\n <Typography\n variant='caption'\n style={{\n marginLeft: (depth || 1) * theme.spacing(3),\n fontWeight: 400\n }}\n >\n {`Error Retrieving ${\n !!node[childrenKey]?.length ? `Additional ` : ''\n }Children`}\n </Typography>\n </div>\n )}\n {Array.isArray(node[childrenKey])\n ? node[childrenKey].map((n, i) => renderTree(n, depth + 1))\n : null}\n </BaseTreeMenuItem>\n );\n },\n [\n handleSelectedNode,\n selectedNodeId,\n selectedNodeIsHidden,\n isCurrentActiveTree,\n sidebarExpanded,\n expanded,\n tree,\n selectedNodeParentId,\n theme,\n classes,\n onDropNode,\n treeViewMode,\n menuIndex,\n childrenKey\n ]\n );\n\n const handleNodeExpansion = useCallback(\n async (evt, nodeIds) => {\n const treeCopy = cloneDeep(tree);\n setExpanded(nodeIds);\n\n const parentNode = searchTree(treeCopy, selectedNodeParentId);\n const initialAllParentNodeIds = selectedNodeParentId\n ? [selectedNodeParentId]\n : [];\n const allParentNodeIds = findAllParentIds(\n treeCopy,\n parentNode,\n initialAllParentNodeIds\n );\n const selectedNodeShown = allParentNodeIds.every((id) =>\n nodeIds.includes(id)\n );\n if (\n isCurrentActiveTree &&\n allParentNodeIds.length &&\n !selectedNodeShown\n ) {\n setSelectedNodeIsHidden(true);\n } else {\n setSelectedNodeIsHidden(false);\n }\n },\n [isCurrentActiveTree, tree, selectedNodeParentId]\n );\n\n const getExpandedRecursively = useCallback(\n (tree) => {\n if (!tree) return [];\n return tree.reduce((expandedIds, item) => {\n if (item?.isExpanded) {\n expandedIds.push(item.id);\n }\n if (item && item[childrenKey]?.length) {\n expandedIds = expandedIds.concat(\n getExpandedRecursively(item[childrenKey])\n );\n }\n return expandedIds;\n }, []);\n },\n [childrenKey]\n );\n\n useEffect(() => {\n setTree(menuItems);\n }, [menuItems]);\n\n useEffect(() => {\n if (!tree) return;\n if (firstRender.current) {\n let expanded = [];\n if (tree?.isExpanded) {\n expanded.push(tree.id);\n }\n expanded = expanded.concat(getExpandedRecursively(tree[childrenKey]));\n setExpanded(expanded);\n firstRender.current = false;\n }\n // Do not reset expanded on subsequent updates\n }, [getExpandedRecursively, tree, childrenKey]);\n\n useEffect(() => {\n if (!!searchTree(tree, selectedNodeId)) {\n setIsCurrentActiveTree(true);\n } else {\n setIsCurrentActiveTree(false);\n }\n }, [tree, selectedNodeId]);\n\n if (!expanded) {\n return null;\n }\n\n return (\n <TreeView\n key={tree}\n className={classes.root}\n defaultCollapseIcon={\n <FluentIcon\n size='small'\n component={CaretUpSolid8Icon}\n style={{\n color: lighten(theme.palette.primary.main, 0.5),\n width: theme.spacing(1.5),\n height: theme.spacing(1.5)\n }}\n />\n }\n expanded={expanded || []}\n onNodeToggle={handleNodeExpansion}\n defaultExpandIcon={\n <FluentIcon\n size='small'\n component={CaretDownSolid8Icon}\n style={{\n color: lighten(theme.palette.primary.main, 0.5),\n width: theme.spacing(1.5),\n height: theme.spacing(1.5)\n }}\n />\n }\n selected={selectedNodeId}\n >\n {tree && renderTree(tree)}\n </TreeView>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as LayoutUnit } from "./LayoutUnit-D4jJvonh.js";
|
|
2
|
-
import { t as IconRenderer } from "./IconRenderer-
|
|
2
|
+
import { t as IconRenderer } from "./IconRenderer-DAfBq9qv.js";
|
|
3
3
|
import { n as TimelineStatus, r as TimelineDateBar } from "./MttYearTag-Cw8OyKTy.js";
|
|
4
4
|
import React, { useState } from "react";
|
|
5
5
|
import { ButtonBase, Divider, Fade, Paper, Tooltip, Typography, makeStyles } from "@material-ui/core";
|
|
@@ -237,4 +237,4 @@ CircleButton.propTypes = { children: PropTypes.node };
|
|
|
237
237
|
|
|
238
238
|
//#endregion
|
|
239
239
|
export { useStyles$3 as a, TimelineToggleButton as i, DateWrapper as n, SummaryToken as o, TimelineTopRowFilter as r, CircleButton as t };
|
|
240
|
-
//# sourceMappingURL=CircleButton-
|
|
240
|
+
//# sourceMappingURL=CircleButton-DZtXx7uN.js.map
|