@reltio/remotes 1.4.1671 → 1.4.1673
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/1039.js +1 -1
- package/1088.js +1 -1
- package/1146.js +1 -1
- package/1148.js +1 -1
- package/1334.js +1 -1
- package/1425.js +1 -1
- package/1572.js +1 -1
- package/1664.js +1 -1
- package/1707.js +1 -1
- package/1790.js +1 -1
- package/1840.js +1 -1
- package/2066.js +1 -1
- package/2300.js +1 -1
- package/2400.js +1 -1
- package/2966.js +1 -1
- package/3096.js +1 -1
- package/3348.js +1 -1
- package/3373.js +1 -1
- package/3381.js +1 -1
- package/3383.js +1 -1
- package/3463.js +1 -1
- package/3469.js +1 -1
- package/3538.js +1 -1
- package/3639.js +1 -1
- package/3912.js +1 -1
- package/415.js +1 -1
- package/4197.js +1 -1
- package/4197.js.map +1 -1
- package/4212.js +1 -1
- package/4390.js +1 -1
- package/446.js +1 -1
- package/446.js.map +1 -1
- package/4481.js +1 -1
- package/4583.js +1 -1
- package/4609.js +1 -1
- package/4610.js +1 -1
- package/4680.js +1 -1
- package/4780.js +1 -1
- package/4806.js +1 -1
- package/4838.js +1 -1
- package/50.js +1 -1
- package/5039.js +1 -1
- package/5053.js +1 -1
- package/5108.js +1 -1
- package/5177.js +1 -1
- package/5292.js +1 -1
- package/5368.js +1 -1
- package/5383.js +1 -1
- package/5617.js +1 -1
- package/5738.js +1 -1
- package/5939.js +1 -1
- package/6287.js +1 -1
- package/636.js +1 -1
- package/658.js +1 -1
- package/6799.js +1 -1
- package/6844.js +1 -1
- package/6860.js +1 -1
- package/6903.js +1 -1
- package/7119.js +1 -1
- package/7128.js +1 -1
- package/7151.js +1 -1
- package/7151.js.map +1 -1
- package/7340.js +1 -1
- package/735.js +1 -1
- package/7363.js +1 -1
- package/7422.js +1 -1
- package/7605.js +1 -1
- package/7626.js +1 -1
- package/7744.js +1 -1
- package/7896.js +1 -1
- package/7917.js +1 -1
- package/820.js +1 -1
- package/8207.js +1 -1
- package/8216.js +1 -1
- package/8418.js +1 -1
- package/8462.js +1 -1
- package/8565.js +1 -1
- package/8741.js +1 -1
- package/9016.js +1 -1
- package/9050.js +1 -1
- package/9283.js +1 -1
- package/9309.js +1 -1
- package/9328.js +1 -1
- package/9387.js +1 -1
- package/9719.js +1 -1
- package/9861.js +1 -1
- package/987.js +1 -1
- package/99.js +1 -1
- package/9960.js +1 -1
- package/main.js +1 -1
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
package/7151.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"7151.js","mappings":"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CA,WACA,qBACA,eACA,aACA,YACA,cACA,SACA,gBACA,gBACA,cACA,UACA,gBACA,iBACA,cACA,OACA,QACA,OACA,KACA,WACA,aACA,UACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,oBACA,mBACA,SACA,KACA,KACA,IACA,aACA,UACA,kBACA,YACA,WACA,UACA,UACA,oBACA,MACA,KACA,KACA,WACA,YACA,oBACA,MACA,WACA,4BACA,OACA,eACA,YACA,SACA,YACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,SACA,OACA,KACA,KACA,KACA,KACA,aACA,+BACA,6BACA,WACA,oBACA,gBACA,UACA,SACA,cACA,iBACA,KACA,cACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,eACA,mBACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,iBACA,oBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,OACA,mBACA,YACA,eACA,MACA,QACA,SACA,MACA,OACA,OACA,aACA,SACA,UACA,WACA,QACA,SACA,cACA,SACA,WACA,oBACA,qBACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,iBACA,SACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,IACA,SACA,OACA,OACA,mBACA,cACA,YACA,qBACA,mBACA,UACA,SACA,SACA,KACA,KACA,QACA,OACA,kBACA,QACA,UACA,mBACA,mBACA,QACA,eACA,cACA,eACA,QACA,QACA,cACA,aACA,eACA,yBACA,0BACA,SACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,QACA,eACA,iBACA,cACA,SACA,UACA,UACA,cACA,kBACA,iBACA,aACA,KACA,YACA,OACA,KACA,KACA,qBACA,sBACA,UACA,eACA,gBACA,eACA,eACA,YACA,gBACA,iBACA,SACA,UACA,aACA,gBACA,gBACA,UACA,aACA,aACA,QACA,SACA,eACA,eACA,IACA,WACA,KACA,KACA,mBACA,IACA,KACA,KACA,mBACA,IACA,aAuFgC,aAAc,cAC1Co1B,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,WACvCC,KAAM,CAAC,OAAQ,OACfC,OAAQ,CAAC,OACTC,EAAG,CAAC,SAERrjB,KAAM,CAzFN,UACA,eACA,gBACA,mBACA,QACA,MACA,SACA,UACA,OACA,UACA,WACA,OACA,OACA,QACA,IACA,SACA,OACA,gBACA,UACA,MACA,SACA,SACA,OACA,YACA,mBACA,iBACA,gBACA,gBACA,QACA,QACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,iBACA,eACA,cACA,SACA,UACA,OACA,OACA,UACA,WACA,OACA,OACA,IACA,MACA,SACA,MACA,WACA,cACA,eACA,QACA,WACA,WACA,OACA,OACA,QACA,WACA,WACA,OACA,QACA,WACA,gBACA,SACA,SACA,gBACA,SACA,QACA,OAWuB,IAAK,OAAQ,QAAS,SAAU,SAAU,Q,wcC5U9D,MAAMsjB,EAAmB,KAC5B,MAAM,kBAACC,EAAD,YAAoBC,GAAeC,IAAAA,UACnC,WAAC31B,EAAD,KAAakS,GAAQ0jB,EACrB/pB,EAAoB,CACtB6pB,YAAaA,EAAYn1B,OAAO2R,GAChCujB,kBAAmB,EAAF,GAAMA,EAAsBz1B,GAC7C61B,qBAAqB,GAEzB,OAAQ3B,GAAiByB,GAAAA,CAAazB,EAAMroB,I,8gBCmCzC,MAAMiqB,EAAS,WAAmC,IAAlCr5B,EAAkC,uDAAjB,GACpC,MAAM,kBAAC+3B,EAAD,mBAAoBQ,EAApB,SAAwCtD,GAAYj1B,EAAO8uB,QAAU,IACpE2I,EAAME,IAAWx+B,EAAAA,EAAAA,aACjBmgC,EAAkB5B,IAAuBv+B,EAAAA,EAAAA,UAA4B,KACrEogC,EAAuBC,IAA4BrgC,EAAAA,EAAAA,UAA4B,KAC/EgW,EAASsqB,IAActgC,EAAAA,EAAAA,WAAS,IAChCugC,EAAOC,IAAYxgC,EAAAA,EAAAA,aACnBygC,EAAS5D,IAAc78B,EA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","sources":["webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/ErrorsPanel/helpers.ts","webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/ErrorsPanel/ErrorsPanel.tsx","webpack://@reltio/remotes/../components/src/icons/Hyperlink.tsx","webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/ErrorsPanel/Error.tsx","webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/AttributesErrorsPanel.tsx","webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/useCachedErrors.ts","webpack://@reltio/remotes/../components/src/icons/Filter.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/FilterButton/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/FilterButton/FilterButton.js","webpack://@reltio/remotes/../components/src/components/ExpandableSearchInput/styles.ts","webpack://@reltio/remotes/../components/src/components/ExpandableSearchInput/ExpandableSearchInput.tsx","webpack://@reltio/remotes/../components/src/components/HideOnShrink/HideOnShrink.tsx","webpack://@reltio/remotes/../components/src/components/MultilineMenuItem/styles.ts","webpack://@reltio/remotes/../components/src/components/MultilineMenuItem/MultilineMenuItem.tsx","webpack://@reltio/remotes/../components/src/components/ProfileMatchCard/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileMatchCard/ProfileMatchCard.tsx","webpack://@reltio/remotes/../components/src/components/RelationEditor/styles.js","webpack://@reltio/remotes/../components/src/components/RelationEditor/RelationEditor.js","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/MapControlContainer/MapControlContrainer.tsx","webpack://@reltio/remotes/../components/src/icons/Radius.tsx","webpack://@reltio/remotes/../components/src/icons/Draw.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopRightMapControls/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopRightMapControls/TopRightMapControls.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopCenterMapControls/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopCenterMapControls/TopCenterMapControls.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/icons/marker.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/EntityMarker.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/icons/marker-hover.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/hooks/useFitMapBounds.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/index.tsx","webpack://@reltio/remotes/../components/src/components/VerticalDivider/VerticalDivider.js","webpack://@reltio/remotes/../components/src/components/history/hooks/useHistoryDiff.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/DueDateField/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/DueDateField/DueDateField.tsx","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowDueDate.ts","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowPriority.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/PrioritySelector/PrioritySelector.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/LineDecorator/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/LineDecorator/LineDecorator.tsx","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowColor.ts","webpack://@reltio/remotes/../components/src/icons/CollaborationIcon.tsx","webpack://@reltio/remotes/../components/src/components/workflow/cards/GenericWorkflowTaskCard/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/cards/GenericWorkflowTaskCard/GenericWorkflowTaskCard.tsx","webpack://@reltio/remotes/../components/src/icons/DcrTaskIcon.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/helpers/helpers.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/helpers/mergeHelpers.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/ShowMoreLink/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/ShowMoreLink/ShowMoreLink.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/ChangeView/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/ChangeView/ChangeView.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/contexts/AttributesChangesContext.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/DiffRenderer/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/DiffRenderer/DiffRenderer.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/DCRChangesList/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/DCRChangesList/DCRChangesList.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/helpers/contextHelpers.ts","webpack://@reltio/remotes/../components/src/components/workflow/helpers/dcrHelpers.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/AttributesChanges.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/hooks/useCollapsibleList.ts","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useChangeRequest.ts","webpack://@reltio/remotes/../components/src/components/workflow/cards/DataChangeRequestTaskCard/DataChangeRequestTaskCard.tsx","webpack://@reltio/remotes/../components/src/icons/PmTaskIcon.tsx","webpack://@reltio/remotes/../components/src/components/workflow/cards/PotentialMatchTaskCard/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/cards/PotentialMatchTaskCard/PotentialMatchTaskCard.tsx","webpack://@reltio/remotes/../components/src/icons/DefaultTaskIcon.tsx","webpack://@reltio/remotes/../components/src/icons/DeleteRequestTaskIcon.tsx","webpack://@reltio/remotes/../components/src/components/workflow/cards/WorkflowTaskCardsFactory.tsx","webpack://@reltio/remotes/../components/src/components/workflow/cards/WorkflowTaskCard.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AddWorkflowDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AddWorkflowDialog/AddWorkflowDialog.tsx","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowDefinitions.ts","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowProcessInstance.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AddWorkflowButton/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AddWorkflowButton/AddWorkflowButton.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/TaskActionButtons/TaskActionButtons.tsx","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../components/src/constants/map.ts","webpack://@reltio/remotes/../components/src/contexts/EntityMarkerContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/InterceptHandlersContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/SandboxAPIContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useAPI/API.ts","webpack://@reltio/remotes/../components/src/hooks/useAPI/helpers.ts","webpack://@reltio/remotes/../components/src/hooks/helpers/sanitizerOptions.ts","webpack://@reltio/remotes/../components/src/hooks/useHtmlSanitizer.ts","webpack://@reltio/remotes/../components/src/hooks/useAPI/useAPI.ts","webpack://@reltio/remotes/../components/src/hooks/useCommentsEntitiesMap.ts","webpack://@reltio/remotes/../components/src/hooks/useConfigPermissions.ts","webpack://@reltio/remotes/../components/src/hooks/useExpandInvalidRelations.ts","webpack://@reltio/remotes/../components/src/hooks/useLayoutResetter.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationsLoader.ts"],"sourcesContent":["import {either, equals, identity, omit, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n AttributeError,\n AttributeType,\n AttributeValuePathItemType,\n ErrorSource,\n ErrorType,\n findAttributeTypeByUri,\n Metadata\n} from '@reltio/mdm-sdk';\n\nconst clearError = omit(['deactivated', 'path']);\nexport const areErrorsEqual = (errors1: AttributeError[] = [], errors2: AttributeError[] = []) =>\n errors1.length === errors2.length && equals(errors1.map(clearError), errors2.map(clearError));\n\nexport const getDisplayedErrorMessage = (\n metadata: Metadata,\n {type, source, message, attributeTypeUri = '', attributeType}: AttributeError\n) => {\n if (type === ErrorType.missed && source === ErrorSource.local) {\n const attrType: AttributeType = attributeType || findAttributeTypeByUri(metadata, attributeTypeUri);\n return attrType ? i18n.text('${attribute} is required', {attribute: attrType.label}) : message;\n }\n return message;\n};\n\nexport const getDisplayedErrorPath = ({path: errorPath, uri}: AttributeError) => {\n return errorPath\n ?.slice(0, uri ? errorPath.length - 1 : errorPath.length)\n .filter(({type}) =>\n [AttributeValuePathItemType.attributeValue, AttributeValuePathItemType.relationConnection].includes(type)\n )\n .map(({label}) => label)\n .filter(identity)\n .join(' / ');\n};\n\nexport const getDisplayedAttributeTypesPath = ({path: errorPath}: AttributeError) => {\n return errorPath\n ?.filter(({type}) => type === AttributeValuePathItemType.attributeValue)\n .map(either(path(['valueType', 'label']), path(['valueType', 'name'])))\n .filter(identity)\n .join(' > ');\n};\n","import {makeStyles} from '@mui/styles';\n\nconst accordionSummaryHeight = '48px';\nconst defaultBorderStyle = '1px solid rgba(0, 0, 0, .125)';\n\nconst useStyles = makeStyles((theme) => ({\n accordion: {\n borderTop: defaultBorderStyle,\n borderBottom: defaultBorderStyle,\n fontSize: '13px',\n boxShadow: 'none',\n '&:not(:first-child)': {\n borderTop: 0\n },\n '&:before': {\n display: 'none'\n },\n '&$accordionExpanded': {\n margin: 'auto'\n }\n },\n accordionExpanded: {},\n accordionSummary: {\n display: 'flex',\n alignItems: 'center',\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight,\n '&$accordionSummaryExpanded': {\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight\n }\n },\n accordionSummaryHeading: {\n flex: 1,\n fontSize: theme.typography.pxToRem(13),\n fontWeight: theme.typography.fontWeightRegular\n },\n accordionSummaryExpanded: {},\n accordionSummaryContent: {\n display: 'flex',\n alignItems: 'center'\n },\n accordionDetails: {\n maxHeight: '21vh',\n overflow: 'auto',\n paddingTop: 0,\n paddingBottom: 0,\n '& ul': {\n paddingLeft: '23px',\n marginTop: '3px'\n },\n '& li': {\n paddingLeft: '9px',\n paddingBottom: '8px'\n }\n },\n parents: {\n color: theme.palette.text.primary\n },\n errorWrapper: {\n lineHeight: '18px',\n display: 'flex',\n flexDirection: 'column'\n },\n errorTitle: {\n display: 'flex',\n alignItems: 'center'\n },\n attributeTypesPath: {\n color: theme.palette.text.secondary\n },\n goToIcon: {\n marginLeft: '4px'\n },\n errorsAccordion: {\n backgroundColor: '#FFF4F6',\n borderColor: '#FFB8B3'\n },\n errorsAccordionDetails: {\n color: '#DD2C00'\n },\n warningsAccordion: {\n backgroundColor: '#FFF9ED',\n borderColor: '#FFDD91'\n },\n warningsAccordionDetails: {\n color: '#CC7500'\n },\n icon: {\n marginRight: '8px'\n },\n errorIcon: {\n fill: '#FF1744'\n },\n warningIcon: {\n fill: '#F9A825'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, ReactNode, ElementType} from 'react';\nimport classnames from 'classnames';\nimport Accordion from '@mui/material/Accordion';\nimport AccordionSummary from '@mui/material/AccordionSummary';\nimport AccordionDetails from '@mui/material/AccordionDetails';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport Typography from '@mui/material/Typography';\n\nimport useStyles from '../styles';\n\nimport {AttributeError} from '@reltio/mdm-sdk';\n\ntype Props = {\n panels: {\n id: string;\n title: string;\n icon: ReactNode;\n items: AttributeError[];\n accordionClassName: string;\n accordionDetailsClassName: string;\n }[];\n expandedPanelId: string;\n onToggle: (id: string) => (e, isExpanded: boolean) => void;\n ErrorComponent: ElementType;\n};\n\nexport const ErrorsPanel = memo(({panels, expandedPanelId, onToggle, ErrorComponent}: Props) => {\n const styles = useStyles();\n\n return panels.length > 0 ? (\n <div>\n {panels.map(({id, icon, title, items, accordionClassName, accordionDetailsClassName}) => (\n <Accordion\n key={id}\n square\n expanded={expandedPanelId === id}\n onChange={onToggle(id)}\n className={accordionClassName}\n classes={{root: styles.accordion, expanded: styles.accordionExpanded}}\n >\n <AccordionSummary\n classes={{\n root: styles.accordionSummary,\n expanded: styles.accordionSummaryExpanded,\n content: styles.accordionSummaryContent\n }}\n expandIcon={<ExpandMoreIcon />}\n >\n {icon}\n <Typography className={styles.accordionSummaryHeading}>{title}</Typography>\n </AccordionSummary>\n <AccordionDetails className={classnames(styles.accordionDetails, accordionDetailsClassName)}>\n <ul>\n {items.map((error, i) => (\n <ErrorComponent key={i} error={error} />\n ))}\n </ul>\n </AccordionDetails>\n </Accordion>\n ))}\n </div>\n ) : null;\n});\n\nErrorsPanel.displayName = 'ErrorsPanel';\n","import React from 'react';\n\nconst SvgHyperlink: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.245 12.75c0 .825-.467 1.5-1.045 1.5H4.8c-.583 0-1.05-.675-1.05-1.5v-7.5c0-.832.467-1.5 1.05-1.5h8.4c.578 0 1.05.668 1.05 1.5l-.005 7.5zM9.75 9.96v1.642l3-2.805L9.75 6v1.598c-2.918.404-4.08 2.4-4.5 4.402 1.043-1.402 2.415-2.04 4.5-2.04z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgHyperlink;\n","import React, {memo, useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeError, Metadata} from '@reltio/mdm-sdk';\nimport HyperlinkIcon from '../../../icons/Hyperlink';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {ScrollToElementContext, useMdmIsEditableMode, useMdmMetadata} from '../../../contexts';\nimport {getDisplayedAttributeTypesPath, getDisplayedErrorMessage, getDisplayedErrorPath} from './helpers';\n\nimport useStyles from '../styles';\n\ntype Props = {\n error: AttributeError;\n};\n\nexport const Error = memo(({error}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useMdmMetadata();\n const isEditableMode: boolean = useMdmIsEditableMode();\n const displayedMessage = getDisplayedErrorMessage(metadata, error);\n const displayedErrorPath = getDisplayedErrorPath(error);\n const displayedAttributeTypesPath = getDisplayedAttributeTypesPath(error);\n const {highlightError} = useContext(ScrollToElementContext);\n const showLink = error.uri || (error.parentUri && error.attributeTypeUri);\n\n return (\n <li>\n <div className={styles.errorWrapper}>\n {displayedAttributeTypesPath && (\n <span className={styles.attributeTypesPath}>{displayedAttributeTypesPath}</span>\n )}\n <span className={styles.errorTitle}>\n {displayedMessage}\n {showLink && isEditableMode && (\n <SmallIconButtonWithTooltip\n icon={HyperlinkIcon}\n size=\"XXS\"\n onClick={() => highlightError(error)}\n tooltipTitle={i18n.text('Go to error')}\n className={styles.goToIcon}\n />\n )}\n </span>\n {displayedErrorPath && <span className={styles.parents}>{displayedErrorPath}</span>}\n </div>\n </li>\n );\n});\n\nError.displayName = 'Error';\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {partition} from 'ramda';\nimport ErrorIcon from '@mui/icons-material/Warning';\nimport WarningIcon from '@mui/icons-material/Error';\nimport {AttributeError, isCriticalError} from '@reltio/mdm-sdk';\nimport {useCachedErrors} from './useCachedErrors';\nimport {ErrorsPanel} from './ErrorsPanel/ErrorsPanel';\nimport {Error} from './ErrorsPanel/Error';\n\nimport useStyles from './styles';\n\ntype Props = {\n attributesWithErrors?: AttributeError[];\n};\n\nexport const AttributesErrorsPanel = ({attributesWithErrors = []}: Props) => {\n const styles = useStyles();\n\n const cachedErrors = useCachedErrors(attributesWithErrors);\n const [errors, warnings]: [AttributeError[], AttributeError[]] = useMemo(\n () => partition(isCriticalError, cachedErrors),\n [cachedErrors]\n );\n\n const [expandedPanelId, setExpandedPanelId] = useState(null);\n const panels = useMemo(\n () =>\n [\n {\n id: 'errors',\n title: i18n.text('${number} ${errors}', {\n number: errors.length,\n errors: errors.length === 1 ? i18n.text('error') : i18n.text('errors')\n }),\n icon: <ErrorIcon className={classnames(styles.icon, styles.errorIcon)} />,\n items: errors,\n accordionClassName: styles.errorsAccordion,\n accordionDetailsClassName: styles.errorsAccordionDetails\n },\n {\n id: 'warnings',\n title: i18n.text('${number} ${warnings}', {\n number: warnings.length,\n warnings: warnings.length === 1 ? i18n.text('warning') : i18n.text('warnings')\n }),\n icon: <WarningIcon className={classnames(styles.icon, styles.warningIcon)} />,\n items: warnings,\n accordionClassName: styles.warningsAccordion,\n accordionDetailsClassName: styles.warningsAccordionDetails\n }\n ].filter(({items}) => items.length > 0),\n [errors, warnings, styles]\n );\n\n useEffect(() => {\n setExpandedPanelId('errors');\n }, [errors]);\n\n const handleChange = useCallback(\n (panelId: string) => (event, isExpanded: boolean) => {\n setExpandedPanelId(isExpanded ? panelId : null);\n },\n []\n );\n\n return panels.length > 0 ? (\n <ErrorsPanel panels={panels} expandedPanelId={expandedPanelId} onToggle={handleChange} ErrorComponent={Error} />\n ) : null;\n};\n","import {useRef} from 'react';\nimport {areErrorsEqual} from './ErrorsPanel/helpers';\n\nexport const useCachedErrors = (allErrors) => {\n const cacheForAllErrors = useRef(allErrors);\n const areEqualErrors = areErrorsEqual(allErrors, cacheForAllErrors.current);\n if (!areEqualErrors) {\n cacheForAllErrors.current = allErrors;\n }\n return cacheForAllErrors.current;\n};\n","import React from 'react';\n\nconst SvgFilter: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={18} height={18} viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M18 2V0H0v2l7 8v8l4-2v-6z\" fill=\"currentColor\" fillRule=\"nonzero\" stroke=\"none\" strokeWidth={1} />\n </svg>\n );\n};\n\nexport default SvgFilter;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n 'filterIcon--enabled': {\n color: theme.palette.primary.main\n },\n closeIcon: {\n position: 'absolute',\n right: '3px',\n bottom: '3px',\n transform: 'scale(0.5)'\n },\n button: {\n padding: '11px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport IconButton from '@mui/material/IconButton';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Tooltip from '@mui/material/Tooltip';\nimport FilterIcon from '../../../../icons/Filter';\nimport {useStyles} from './styles';\n\nconst FilterButton = ({enabled, onClick}) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={enabled ? i18n.text('Clear all filters') : i18n.text('Filter')}>\n <IconButton onClick={onClick} classes={{root: styles.button}} size=\"large\">\n {enabled ? (\n <>\n <FilterIcon className={styles['filterIcon--enabled']} />\n <CloseIcon color=\"primary\" className={styles.closeIcon} />\n </>\n ) : (\n <FilterIcon />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n\nFilterButton.propTypes = {\n enabled: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n searchButton: {\n marginLeft: 'auto !important',\n marginRight: '-4px',\n padding: '8px'\n },\n input: {\n maxWidth: '350px',\n flex: '1 0 200px',\n marginLeft: '20px',\n fontSize: '14px',\n background: 'rgba(0,0,0,0.03) 2px',\n padding: '4px 0',\n marginRight: '4px'\n },\n startAdornment: {\n color: 'rgba(0,0,0,0.54)',\n paddingLeft: '8px'\n }\n});\n","import React, {useState, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, F, pipe, propEq, T, tap, trim, when} from 'ramda';\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@mui/material/IconButton';\nimport Input from '@mui/material/Input';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport {SmallIconButton} from '../SmallIconButton';\nimport {getValue} from '../../core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n query: string;\n onChange: (value: string) => void;\n};\n\nexport const ExpandableSearchInput = ({query, onChange}: Props) => {\n const [value, setValue] = useState(query);\n const [isOpen, setIsOpen] = useState(!!query);\n useEffect(() => {\n setValue(query);\n }, [query]);\n const styles = useStyles();\n\n return isOpen ? (\n <Input\n className={styles.input}\n value={value}\n autoFocus={true}\n placeholder={i18n.text('Search')}\n disableUnderline={true}\n onChange={pipe(getValue, setValue)}\n startAdornment={\n <InputAdornment position=\"start\">\n <SearchIcon className={styles.startAdornment} />\n </InputAdornment>\n }\n endAdornment={\n <InputAdornment position=\"end\">\n <SmallIconButton\n size=\"S\"\n icon={CloseIcon}\n onClick={pipe(F, setIsOpen, always(''), tap(onChange), setValue)}\n />\n </InputAdornment>\n }\n onKeyPress={when(propEq('key', 'Enter'), pipe(always(value), trim, onChange))}\n />\n ) : (\n <IconButton className={styles.searchButton} onClick={pipe(T, setIsOpen)} size=\"large\">\n <SearchIcon />\n </IconButton>\n );\n};\n","import React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\n\nconst EmptyStub = () => <div style={{display: 'none'}} />;\n\ntype Props = {\n children: React.ReactNode;\n widthToHide: number;\n};\n\nconst HideOnShrink = ({widthToHide, children}: Props) => (\n <ReactResizeDetector\n handleWidth={true}\n render={({width}) => (width > widthToHide ? <>{children}</> : <EmptyStub />)}\n />\n);\n\nexport default HideOnShrink;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n menuItem: {\n whiteSpace: 'inherit',\n width: 200,\n padding: '9px 12px 7px'\n },\n itemText: {\n margin: 0\n },\n textPrimary: {\n fontSize: 14,\n lineHeight: '16px',\n fontWeight: 500\n },\n textSecondary: {\n fontSize: 10,\n lineHeight: '12px'\n }\n}));\n","import React, {forwardRef} from 'react';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport {noop} from '../../core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n item: {\n primary: string;\n secondary: string;\n onClick: () => void;\n };\n onMenuClose?: () => void;\n};\n\nconst MultilineMenuItem = forwardRef(({item, onMenuClose = noop}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {primary, secondary, onClick} = item;\n\n const handleClick = () => {\n onMenuClose();\n onClick();\n };\n\n return (\n <MenuItem className={styles.menuItem} ref={ref} onClick={handleClick}>\n <ListItemText\n primary={primary}\n secondary={secondary}\n className={styles.itemText}\n classes={{\n primary: styles.textPrimary,\n secondary: styles.textSecondary\n }}\n />\n </MenuItem>\n );\n});\n\nMultilineMenuItem.displayName = 'MultilineMenuItem';\n\nexport default MultilineMenuItem;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n paddingRight: '12px',\n paddingTop: '8px',\n paddingBottom: '8px',\n '& + &': {\n borderTop: '1px solid rgba(0,0,0, 0.12)'\n }\n },\n profileCardWrapper: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '4px'\n },\n profileCardContainer: {\n flexGrow: 1,\n paddingBottom: '8px',\n paddingTop: '8px'\n },\n rulesContainer: {\n paddingLeft: '52px',\n marginBottom: '8px',\n display: 'flex',\n alignItems: 'center'\n },\n dividerWrapper: {\n marginLeft: '12px',\n alignSelf: 'stretch'\n },\n divider: {\n borderColor: 'rgba(0,0,0,0.12)'\n },\n relevanceBadge: {\n marginLeft: '12px'\n }\n});\n","import React from 'react';\nimport {checkMatchRuleSummaryRelevance, Entity, Match, Metadata} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Divider from '@mui/material/Divider';\n\nimport ProfileCard from '../ProfileCard/ProfileCard';\nimport MatchRulesBlock from '../MatchRulesBlock/MatchRulesBlock';\nimport {RelevanceScoreBadge} from '../RelevanceScoreBadge/RelevanceScoreBadge';\nimport {useStyles} from './styles';\n\ntype Props = {\n entitiesMap: {\n [key: string]: Pick<Entity, 'uri' | 'type' | 'label'>;\n };\n entity: Entity;\n match: Match;\n metadata: Metadata;\n children?: React.ReactNode;\n className?: string;\n};\n\nexport const ProfileMatchCard = ({children, entitiesMap, entity, match, metadata, className}: Props) => {\n const styles = useStyles();\n const showRelevanceBadge = match.matchRuleSummaries?.some(checkMatchRuleSummaryRelevance);\n return (\n <div className={classnames(styles.root, className)}>\n <div className={styles.profileCardWrapper}>\n <ProfileCard entity={match.object} classes={{container: styles.profileCardContainer}} />\n {children}\n </div>\n <div className={styles.rulesContainer}>\n {match.matchRules && (\n <MatchRulesBlock match={match} metadata={metadata} entitiesMap={entitiesMap} entity={entity} />\n )}\n {showRelevanceBadge && (\n <>\n <div className={styles.dividerWrapper}>\n <Divider orientation=\"vertical\" className={styles.divider} />\n </div>\n <RelevanceScoreBadge\n className={styles.relevanceBadge}\n matchRuleSummaries={match.matchRuleSummaries}\n />\n </>\n )}\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n editor: {\n display: 'flex',\n flexDirection: 'column',\n padding: '0 24px 5px',\n overflowX: 'hidden'\n },\n title: {\n color: 'rgba(0, 0, 0, 0.6)',\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '24px',\n margin: '17px 0 24px'\n },\n item: {\n marginBottom: '20px'\n },\n dense: {\n marginBottom: 0\n },\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: '0 8px 10px',\n\n '& > button': {\n fontSize: '14px',\n lineHeight: '16px',\n marginLeft: '8px',\n padding: '10px 8px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n }\n }\n});\n","import React, {useCallback, useEffect, useMemo, useRef} from 'react';\nimport i18n from 'ui-i18n';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {always, concat, differenceWith, equals, forEach, omit, path, pick, pipe, prop, when, uniq, curry} from 'ramda';\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport {\n ConnectionType,\n createTemporaryEntity,\n findRelatedTemporaryEntities,\n getActivenessAttributes,\n getCreatableAttributeTypes,\n getEntityType,\n getErrorMessage,\n getErrorId,\n MetadataType,\n omitMarks,\n relationEditorAttributeTypesSelectionStrategy,\n RelationsConfigType,\n validateConnection,\n updateConnectionEntityLabel,\n isTempUri,\n isEmptyValue,\n getRelationAttributesList,\n getDefaultRelationTypeObject,\n getInOutRelations,\n isSuggestMode,\n isAttributeTypeError,\n getRelationUriFromConnection,\n getRelationEditorActiveError,\n getRelationAttributesFromConnection,\n getEntityUriFromConnection\n} from '@reltio/mdm-sdk';\nimport ConnectionRelationTypeSelector from '../ConnectionRelationTypeSelector/ConnectionRelationTypeSelector';\nimport ErrorWrapper from '../ErrorWrapper/ErrorWrapper';\nimport EntitySelector from '../attributes/editMode/EntitySelector/EntitySelector';\nimport AttributesList from '../attributes/editMode/AttributesList';\nimport {withContext} from '../../HOCs';\nimport {\n isHighlightedErrorType,\n ScrollToElementContext,\n useMdmAction,\n useMdmGlobalSearchRequestOptions,\n useMdmInitialConnection,\n useMdmInitialConnectionTempEntity,\n useMdmModifiedEntities,\n useMdmModifiedEntity,\n useMdmProfileErrors\n} from '../../contexts';\nimport {useScrollToAttributeError} from '../../hooks';\n\nimport {useStyles} from './styles';\n\nconst areRelatedEntitiesChanged = (initial, actual) =>\n initial.length !== actual.length || initial.some((_, i) => initial[i] !== actual[i]);\n\nconst RelationEditor = ({connection, config, mode, metadata, highlightedError}) => { //NOSONAR\n const styles = useStyles();\n\n const {relationType, direction} = connection.relation;\n const isNew = connection.isNew;\n const entityUri = getEntityUriFromConnection(connection);\n const relationUri = getRelationUriFromConnection(connection);\n const isTempEntity = isTempUri(entityUri);\n\n const mdmSetInitialInfo = useMdmAction('setInitialInfo');\n const setRelationType = useMdmAction('setRelationType');\n const closeRelationEditor = useMdmAction('closeRelationEditor');\n const entityCreated = useMdmAction('entityCreated');\n const entityDeleted = useMdmAction('entityDeleted');\n const setRelationEntity = useMdmAction('setRelationEntity');\n const errorDeactivated = useMdmAction('errorDeactivated');\n const errorsSet = useMdmAction('errorsSet');\n const addAttributes = useMdmAction('addAttributes');\n const modifyAttribute = useMdmAction('modifyAttribute');\n const removeAttribute = useMdmAction('removeAttribute');\n const addRelation = useMdmAction('addRelation');\n const editRelation = useMdmAction('editRelation');\n\n const initialConnection = useMdmInitialConnection(config.id, relationUri);\n const initialModifiedEntity = useMdmInitialConnectionTempEntity(config.id, relationUri);\n const mdmModifiedEntity = useMdmModifiedEntity(entityUri);\n const mdmAllModifiedEntities = useMdmModifiedEntities();\n const globalSearchRequestOptions = useMdmGlobalSearchRequestOptions(['ovOnly']);\n const profileErrors = useMdmProfileErrors();\n\n const error = getRelationEditorActiveError(connection, profileErrors);\n const modifiedEntity = isTempEntity ? mdmModifiedEntity : null;\n const allModifiedEntities = isTempEntity ? mdmAllModifiedEntities : null;\n\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n const {inRelations: inRelationTypes = [], outRelations: outRelationTypes = []} = useMemo(\n () =>\n getInOutRelations({\n content: connection.parentEntityUri ? config.contentSecondLevel : config.content,\n direction,\n relationType,\n mode,\n metadata\n }),\n [config, direction, relationType, mode, metadata, connection.parentEntityUri]\n );\n const firstLevelRelationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relationType),\n [relationType, metadata]\n );\n const attributeListEntity = useMemo(\n () => ({\n attributes: {\n ...getRelationAttributesFromConnection(connection)\n },\n ...getActivenessAttributes(connection.relation)\n }),\n [connection]\n );\n const relatedTempEntities = useMemo(\n () => findRelatedTemporaryEntities(allModifiedEntities, modifiedEntity),\n [allModifiedEntities, modifiedEntity]\n );\n const relatedTempEntitiesUrisHistory = useRef([]);\n\n const setInitialInfo = useCallback(\n (entity, connection) => {\n mdmSetInitialInfo(config.id, relationUri, entity, connection);\n },\n [mdmSetInitialInfo]\n );\n\n useEffect(() => {\n if (!initialConnection) {\n setInitialInfo(modifiedEntity, connection);\n }\n }, []);\n\n useEffect(() => {\n relatedTempEntitiesUrisHistory.current = pipe(\n concat(relatedTempEntities.map(prop('uri'))),\n uniq\n )(relatedTempEntitiesUrisHistory.current);\n }, [relatedTempEntities]);\n const initialRelatedTempEntities = useRef(relatedTempEntities);\n const defaultRelationType = getDefaultRelationTypeObject(inRelationTypes, outRelationTypes);\n const initialConnectionChangeablePart = pick(['entity', 'relation'], initialConnection || {});\n const connectionChangeablePart = pick(['entity', 'relation'], connection);\n const hasChanges =\n !isEmptyValue(path(['entity'], connection)) &&\n (!equals(initialConnectionChangeablePart, connectionChangeablePart) ||\n !equals(initialModifiedEntity, modifiedEntity) ||\n areRelatedEntitiesChanged(initialRelatedTempEntities.current, relatedTempEntities));\n const applyAction = useMemo(() => curry(isNew ? addRelation : editRelation), [isNew, addRelation, editRelation]);\n\n const onRelationTypeChange = useCallback(\n (relationType) => setRelationType(config.id, relationUri, relationType),\n [config, relationUri, setRelationType]\n );\n\n const handleClose = useCallback(\n () => closeRelationEditor(config.id, relationUri),\n [config, relationUri, closeRelationEditor]\n );\n\n const updateModifiedEntityLabel = useCallback(\n (connection) => {\n if (modifiedEntity) {\n const entityType = getEntityType(metadata, modifiedEntity.type);\n return updateConnectionEntityLabel(entityType, modifiedEntity, connection);\n }\n return connection;\n },\n [modifiedEntity, metadata]\n );\n\n const setModifiedEntity = useCallback((entity) => entityCreated(entity), [entityCreated]);\n\n const deleteModifiedEntity = useCallback((entityUri) => entityDeleted(entityUri), [entityDeleted]);\n\n const onChangeEntity = useCallback(\n (entity) => {\n if (modifiedEntity) {\n deleteModifiedEntity(modifiedEntity.uri);\n }\n setRelationEntity(config.id, relationUri, entity);\n if (error) {\n errorDeactivated(getErrorId(error));\n }\n },\n [config.id, relationUri, setRelationEntity, errorDeactivated, modifiedEntity, deleteModifiedEntity, error]\n );\n\n const validate = useCallback(() => {\n const errors = validateConnection(metadata, allModifiedEntities, connection);\n errorsSet(errors);\n return errors.length === 0;\n }, [connection, metadata, allModifiedEntities, errorsSet]);\n\n const resetErrors = useCallback(() => errorsSet([]), [errorsSet]);\n\n const onApply = useCallback(\n pipe(\n always(connection),\n when(\n validate,\n pipe(\n omitMarks,\n updateModifiedEntityLabel,\n omit(['initial']),\n applyAction(config.id),\n always(\n differenceWith(\n equals,\n relatedTempEntitiesUrisHistory.current,\n relatedTempEntities.map(prop('uri'))\n )\n ),\n forEach(deleteModifiedEntity),\n handleClose\n )\n )\n ),\n [connection, config, updateModifiedEntityLabel, validate, relatedTempEntities]\n );\n\n const onCancel = useCallback(() => {\n if (modifiedEntity !== initialModifiedEntity) {\n if (initialModifiedEntity) {\n setModifiedEntity(initialModifiedEntity);\n if (modifiedEntity && modifiedEntity.uri !== initialModifiedEntity.uri) {\n deleteModifiedEntity(modifiedEntity.uri);\n }\n } else {\n deleteModifiedEntity(modifiedEntity.uri);\n }\n }\n const initialTempEntities = initialRelatedTempEntities.current;\n const entitiesUrisToDelete = differenceWith(\n equals,\n relatedTempEntitiesUrisHistory.current,\n initialTempEntities.map(prop('uri'))\n );\n entitiesUrisToDelete.forEach(deleteModifiedEntity);\n initialTempEntities.forEach(setModifiedEntity);\n resetErrors();\n handleClose();\n }, [handleClose, setModifiedEntity, deleteModifiedEntity, resetErrors, modifiedEntity, initialModifiedEntity]);\n\n const onAddAttributes = useCallback(\n (params) => addAttributes(params.map((param) => ({...param, viewId: config.id}))),\n [config.id, addAttributes]\n );\n\n const onChangeAttribute = useCallback(\n (params) => modifyAttribute({...params, viewId: config.id}),\n [config.id, modifyAttribute]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => removeAttribute({...params, viewId: config.id}),\n [config.id, removeAttribute]\n );\n\n const onCreateEntity = useCallback(\n (entityTypeUri, initValue) => {\n const entityType = getEntityType(metadata, entityTypeUri);\n const newEntityAttrTypes = pipe(\n relationEditorAttributeTypesSelectionStrategy,\n getCreatableAttributeTypes(mode)\n )(entityType);\n const newEntity = createTemporaryEntity({\n entityTypeUri,\n initValue,\n attributeTypes: newEntityAttrTypes,\n metadata,\n mode\n });\n onChangeEntity(newEntity);\n setModifiedEntity(newEntity);\n },\n [setModifiedEntity, onChangeEntity, mode, metadata]\n );\n const errorMessage = getErrorMessage(error);\n\n const getEntityTypesUris = useCallback(() => {\n const {content, contentSecondLevel} = config;\n\n if (contentSecondLevel && connection.parentEntityUri) {\n return contentSecondLevel.entityTypes;\n }\n\n return content.entityTypes;\n }, [config, connection.parentEntityUri]);\n\n return (\n <>\n <div className={styles.editor}>\n <Typography className={styles.title}>\n {isNew ? i18n.text('Add new item') : i18n.text('Edit item')}\n </Typography>\n {defaultRelationType === null && (\n <ConnectionRelationTypeSelector\n className={styles.item}\n relation={connection.relation}\n inRelationTypes={inRelationTypes}\n outRelationTypes={outRelationTypes}\n onChange={onRelationTypeChange}\n />\n )}\n {Boolean(relationType) && (\n <>\n <div ref={ref} className={errorClassName}>\n <ErrorWrapper errorMessage={errorMessage}>\n <EntitySelector\n className={classnames(styles.item, {\n [styles.dense]:\n errorMessage ||\n (connection.entity && isTempUri(connection.entity.entityUri))\n })}\n entity={connection.entity || {}}\n entityTypesUris={getEntityTypesUris() || []}\n max={config.max || 20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n mode={mode}\n onChange={onChangeEntity}\n onCreate={isSuggestMode(mode) ? undefined : onCreateEntity}\n metadata={metadata}\n attributeTypesSelectionStrategy={relationEditorAttributeTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </div>\n <AttributesList\n className={styles.item}\n attrTypes={firstLevelRelationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={true}\n crosswalks={connection.crosswalks}\n mode={mode}\n parentUri={relationUri}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n </>\n )}\n </div>\n <div className={styles.actionButtons}>\n <Button onClick={onCancel}>{i18n.text('Cancel')}</Button>\n <Button color=\"primary\" disabled={!hasChanges} onClick={onApply}>\n {i18n.text('Apply')}\n </Button>\n </div>\n <Divider />\n </>\n );\n};\n\nRelationEditor.propTypes = {\n connection: ConnectionType,\n config: RelationsConfigType,\n mode: PropTypes.string,\n metadata: MetadataType,\n highlightedError: PropTypes.object\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue, {connection}) => {\n const {element = {}, type} = contextValue || {};\n const {relationUri, relationType} = connection.relation;\n const isHighlighted = isHighlightedErrorType(type) && isAttributeTypeError(element, relationUri, relationType);\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n RelationEditor\n);\n","import React, {useEffect, useState} from 'react';\nimport {createPortal} from 'react-dom';\nimport {MapInstance} from '../../types';\n\ntype Props = {\n children: React.ReactNode;\n className?: string;\n position: number;\n map: MapInstance;\n};\n\nexport const MapControlContainer = ({children, className, position, map}: Props) => {\n const [controlElement, setControlElement] = useState(null);\n\n useEffect(() => {\n const controlDiv = document.createElement('div');\n const divIndex = map.controls[position].length;\n map.controls[position].push(controlDiv);\n setControlElement(controlDiv);\n\n return () => {\n map.controls[position].removeAt(divIndex);\n };\n }, [map, position]);\n\n useEffect(() => {\n if (controlElement && className) {\n controlElement.classList.add(className);\n }\n }, [className, controlElement]);\n\n if (controlElement) {\n return createPortal(children, controlElement);\n }\n\n return null;\n};\n","import React from 'react';\n\nconst SvgRadius: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={18} height={18} viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M10.61 8.568A1.666 1.666 0 119.432 7.39l3.656-3.657a6.668 6.668 0 101.179 1.179L10.61 8.568zm-7.503 6.325A8.333 8.333 0 1114.893 3.107 8.333 8.333 0 013.107 14.893z\"\n fill=\"#000\"\n stroke=\"none\"\n strokeWidth={1}\n fillRule=\"evenodd\"\n opacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgRadius;\n","import React from 'react';\n\nconst SvgDraw: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M18.29 11.44a1.49 1.49 0 012.12 0l1.15 1.15c.59.58.59 1.53 0 2.12L16.27 20H13v-3.27zM18.174 4c0 1.71-.26 3.285-.932 4.563-.946 1.798-2.609 2.724-4.906 2.46l-.855-.116c-4.382-.544-6.626.53-6.626 3.609 0 1.968 1.105 2.924 3.267 3.304.692.121 1.306.165 2.234.176L11 18v2l-.698-.003c-1.016-.013-1.71-.063-2.526-.206-3.018-.53-4.921-2.176-4.921-5.274 0-4.819 3.71-6.378 9.52-5.505 1.575.237 2.506-.255 3.098-1.38.451-.858.666-2.02.697-3.307L16.174 4h2zM18 13.97l-3.45 3.45v1.03h1.03L19.03 15 18 13.97z\"\n id=\"Draw_svg__a\"\n />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"Draw_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Draw_svg__a\" />\n </mask>\n <g mask=\"url(#Draw_svg__b)\" fill=\"#000\" fillOpacity={0.54}>\n <path d=\"M0 0h24v24H0z\" />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgDraw;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n margin: '2px',\n display: 'flex',\n alignItems: 'center'\n },\n button: {\n color: 'rgba(0,0,0,0.54)',\n padding: 0,\n height: '24px',\n width: '24px',\n minWidth: 0\n },\n icon: {\n width: '20px',\n height: '20px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport {withTooltip} from '../../../../HOCs';\nimport HighlightOffIcon from '@mui/icons-material/HighlightOff';\nimport {MAP_DRAWING_MODES} from '../../../../constants';\nimport RadiusIcon from '../../../../icons/Radius';\nimport DrawIcon from '../../../../icons/Draw';\nimport {DrawingMode, DrawingModes} from '../../types';\nimport {useStyles} from './styles';\n\nexport const ButtonWithTooltip = withTooltip(Button);\n\nconst getIcon = (mode: DrawingMode) => {\n switch (mode) {\n case MAP_DRAWING_MODES.CIRCLE:\n return RadiusIcon;\n case MAP_DRAWING_MODES.POLYGON:\n return DrawIcon;\n default:\n return null;\n }\n};\n\ntype Props = {\n onDrawingModeChanged: (value: DrawingMode | null) => void;\n drawingMode: DrawingMode | null;\n drawingModes: DrawingModes;\n hasActiveOverlay: boolean;\n onClearOverlay: () => void;\n};\n\nexport const TopRightMapControls = ({\n drawingMode,\n drawingModes = [],\n hasActiveOverlay,\n onDrawingModeChanged,\n onClearOverlay\n}: Props) => {\n const styles = useStyles();\n\n const changeDrawingModeTo = (drawingMode) => () => {\n onDrawingModeChanged(drawingMode);\n };\n\n return (\n <div className={styles.container}>\n {drawingMode || hasActiveOverlay ? (\n <ButtonWithTooltip\n tooltipTitle={i18n.text('Clear area')}\n className={styles.button}\n onClick={hasActiveOverlay ? onClearOverlay : changeDrawingModeTo(null)}\n >\n <HighlightOffIcon className={styles.icon} />\n </ButtonWithTooltip>\n ) : (\n drawingModes.map((mode) => {\n const Icon = getIcon(mode);\n return (\n <ButtonWithTooltip\n tooltipTitle={i18n.text('Draw area')}\n key={mode}\n className={styles.button}\n onClick={changeDrawingModeTo(mode)}\n >\n <Icon className={styles.icon} />\n </ButtonWithTooltip>\n );\n })\n )}\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n height: '28px',\n marginRight: '7px',\n marginLeft: 0\n },\n label: {\n fontSize: '11px',\n alignSelf: 'center',\n lineHeight: '13px',\n marginLeft: '2px',\n letterSpacing: 0\n },\n checkbox: {\n width: '20px',\n height: '20px',\n boxSizing: 'content-box',\n padding: '5px',\n '& svg': {\n width: '16px',\n height: '16px'\n }\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport {useStyles} from './styles';\n\ntype Props = {\n isSearchOnMapMove: boolean;\n onChangeIsSearchOnMapMove: (value: boolean) => void;\n};\n\nexport const TopCenterMapControls = ({isSearchOnMapMove, onChangeIsSearchOnMapMove}: Props) => {\n const styles = useStyles();\n const onChange = (event) => {\n onChangeIsSearchOnMapMove(event.target.checked);\n };\n return (\n <FormControlLabel\n classes={{\n root: styles.container,\n label: styles.label\n }}\n control={<Checkbox checked={isSearchOnMapMove} onChange={onChange} className={styles.checkbox} />}\n label={i18n.text('Search as I move the map')}\n />\n );\n};\n","import {MAP_DRAWING_MODES, MAP_MINIMUM_SCALE_RADIUS} from '../../../constants';\nimport {DrawingMode, EntityMarker, Overlay, MapInstance} from '../types';\n\nexport const getMapBoundsPolygon = (map: MapInstance) => {\n const bounds = map.getBounds();\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n const neLat = ne.lat(),\n neLng = ne.lng(),\n swLat = sw.lat(),\n swLng = sw.lng();\n const additionalPoint1 = [];\n const additionalPoint2 = [];\n if (!((neLng === 180 && swLng === -180) || (neLng === -180 && swLng === 180))) {\n // excluding corner case when we see more than one \"map unfolding\" (in this case google maps automatically set 180 and -180),\n // we can't describe map bounds as just rectangle, because lng distance can be more than 180\",\n // so we need to add additional points to have correct polygon\n const center = bounds.getCenter();\n additionalPoint1.push([neLat, center.lng()]);\n additionalPoint2.push([swLat, center.lng()]);\n }\n return [[neLat, neLng], ...additionalPoint1, [neLat, swLng], [swLat, swLng], ...additionalPoint2, [swLat, neLng]];\n};\n\nexport const getDrawingMode = (drawingMode: DrawingMode) => {\n switch (drawingMode) {\n case MAP_DRAWING_MODES.CIRCLE:\n return window.google.maps.drawing.OverlayType.CIRCLE;\n case MAP_DRAWING_MODES.POLYGON:\n return window.google.maps.drawing.OverlayType.POLYGON;\n default:\n return null;\n }\n};\n\nexport const fitMapBoundsForMarkers = (markers: EntityMarker[], map: MapInstance, overlay: Overlay) => {\n const bounds = new window.google.maps.LatLngBounds();\n\n markers.forEach((marker) => bounds.extend(marker.point));\n\n if (markers.length === 1) {\n const center = bounds.getCenter();\n\n bounds.extend(\n new window.google.maps.LatLng(\n center.lat() + MAP_MINIMUM_SCALE_RADIUS,\n center.lng() + MAP_MINIMUM_SCALE_RADIUS\n )\n );\n bounds.extend(\n new window.google.maps.LatLng(\n center.lat() - MAP_MINIMUM_SCALE_RADIUS,\n center.lng() - MAP_MINIMUM_SCALE_RADIUS\n )\n );\n }\n\n map.fitBounds(bounds);\n\n if (overlay) {\n fitMapBoundsForOverlay(map, overlay, bounds);\n }\n};\n\nexport const fitMapBoundsForOverlay = (map: MapInstance, overlay: Overlay, existingBounds?) => {\n if (overlay.path) {\n const bounds = existingBounds || new window.google.maps.LatLngBounds();\n overlay.path.forEach(({lat, lng}) => bounds.extend(new window.google.maps.LatLng(lat, lng)));\n map.fitBounds(bounds);\n }\n};\n","export const MARKER = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg width=\"22px\" height=\"32px\" viewBox=\"0 0 22 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>View / Map / Marker / Large</title>\n <defs>\n <radialGradient cx=\"50%\" cy=\"50.2950175%\" fx=\"50%\" fy=\"50.2950175%\" r=\"49.7049825%\" gradientTransform=\"translate(0.500000,0.502950),scale(0.777778,1.000000),rotate(90.000000),scale(1.000000,1.293560),translate(-0.500000,-0.502950)\" id=\"radialGradient-1\">\n <stop stop-color=\"#000000\" offset=\"0%\"></stop>\n <stop stop-color=\"#000000\" stop-opacity=\"0\" offset=\"100%\"></stop>\n </radialGradient>\n <path d=\"M20,1 C20.5522847,1 21,1.44771525 21,2 L21,20 C21,20.5522847 20.5522847,21 20,21 L15.2374606,21.0021908 C14.9306693,21.3935449 14.6510143,21.7632851 14.3885453,22.1256523 C12.8309725,24.2760522 12,26.0137017 12,27.5 C12,28.0522847 11.5522847,28.5 11,28.5 C10.4477153,28.5 10,28.0522847 10,27.5 C10,25.7886708 8.84033182,23.6810997 6.73798027,21.0014567 L2,21 C1.44771525,21 1,20.5522847 1,20 L1,2 C1,1.44771525 1.44771525,1 2,1 L20,1 Z\" id=\"path-2\"></path>\n </defs>\n <g id=\"View-/-Map-/-Marker-/-Large\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <ellipse id=\"Oval\" fill=\"url(#radialGradient-1)\" opacity=\"0.12\" cx=\"11\" cy=\"28.5\" rx=\"4.5\" ry=\"3.5\"></ellipse>\n <path d=\"M21,0 C21.5522847,-1.01453063e-16 22,0.44771525 22,1 L22,21 C22,21.5522847 21.5522847,22 21,22 L15.7283832,22.0012846 C15.5422129,22.2445529 15.3664776,22.4802332 15.1984183,22.7122576 C13.7560833,24.7035592 13,26.2846074 13,27.5 L13,27.5 L12.9945143,27.6492623 C12.9181651,28.6841222 12.0543618,29.5 11,29.5 C9.8954305,29.5 9,28.6045695 9,27.5 L9,27.5 L8.99485006,27.3298651 C8.91582184,26.0024976 7.93016704,24.2171459 6.23940611,22.000704 L1,22 C0.44771525,22 6.76353751e-17,21.5522847 0,21 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 L21,0 Z\" id=\"Path-3\" fill=\"#FFFFFF\"></path>\n <mask id=\"mask-3\" fill=\"white\">\n <use xlink:href=\"#path-2\"></use>\n </mask>\n <use id=\"Path-2\" fill=\"#FFFFFF\" fill-rule=\"nonzero\" xlink:href=\"#path-2\"></use>\n <rect id=\"Entity-type\" fill=\"#24A8E8\" mask=\"url(#mask-3)\" x=\"0\" y=\"0\" width=\"22\" height=\"32\"></rect>\n </g>\n</svg>`;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n popper: {\n maxWidth: '263px',\n minWidth: '150px',\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)',\n backgroundColor: 'white',\n borderRadius: '2px'\n }\n});\n","import React, {memo, useCallback, useContext, useRef, useState} from 'react';\nimport {pathEq} from 'ramda';\nimport {Marker, InfoBox, MarkerProps} from '@react-google-maps/api';\nimport ProfileCard from '../../ProfileCard/ProfileCard';\nimport Popper from '../../Popper/Popper';\nimport {debounce, svg2Url} from '@reltio/mdm-sdk';\nimport {EntityMarkerContext} from '../../../contexts';\nimport {MARKER} from './icons/marker.inline.svg';\nimport {HOVERED_MARKER} from './icons/marker-hover.inline.svg';\nimport {EntityMarker as EntityMarkerType} from '../types';\nimport {useStyles} from './styles';\n\nconst HIDE_DEBOUNCE_INTERVAL = 50;\nconst MARKER_WIDTH = 22;\nconst MARKER_HEIGHT = 32;\nconst MARKER_CARD_MARGIN = 8;\n\nconst hoveredMarkerIcon = svg2Url(HOVERED_MARKER);\nconst markerIcon = svg2Url(MARKER);\n\ntype Props = {\n marker: EntityMarkerType;\n onClick: (marker: EntityMarkerType) => void;\n} & Omit<MarkerProps, 'onClick' | 'icon' | 'position' | 'visible' | 'onMouseOver' | 'onMouseOut'>;\n\nconst EntityMarker = ({marker, onClick, ...otherProps}: Props) => {\n const styles = useStyles();\n const popperAnchor = useRef();\n const [hovered, setHovered] = useState(false);\n const {activeEntityUri} = useContext(EntityMarkerContext);\n const isActive = pathEq(['entity', 'uri'], activeEntityUri, marker);\n const position = {lat: marker.point.lat, lng: marker.point.lng};\n const setHoveredDebounced = useCallback(debounce(setHovered, HIDE_DEBOUNCE_INTERVAL), []);\n const onMouseOver = useCallback(() => setHoveredDebounced(true), [setHoveredDebounced]);\n const onMouseOut = useCallback(() => setHoveredDebounced(false), [setHoveredDebounced]);\n const handleClick = useCallback(() => onClick(marker), [onClick, marker]);\n\n return (\n <>\n <Popper\n anchorEl={popperAnchor.current}\n open={hovered}\n className={styles.popper}\n modal={false}\n placement=\"top\"\n >\n <ProfileCard entity={marker.entity} onMouseOver={onMouseOver} onMouseOut={onMouseOut} />\n </Popper>\n <Marker\n icon={{\n url: hovered || isActive ? hoveredMarkerIcon : markerIcon,\n // needed for IE:\n scaledSize: new google.maps.Size(MARKER_WIDTH, MARKER_HEIGHT) //eslint-disable-line\n }}\n position={position}\n onClick={handleClick}\n visible={marker.visible !== false}\n onMouseOver={onMouseOver}\n onMouseOut={onMouseOut}\n {...otherProps}\n />\n <InfoBox\n options={{\n alignBottom: true,\n pane: 'mapPane',\n pixelOffset: new google.maps.Size(0, -(MARKER_HEIGHT + MARKER_CARD_MARGIN)), //eslint-disable-line\n closeBoxURL: '',\n enableEventPropagation: true,\n disableAutoPan: true\n }}\n position={position}\n >\n <span ref={popperAnchor} />\n </InfoBox>\n </>\n );\n};\n\nexport default memo(EntityMarker);\n","export const HOVERED_MARKER = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg width=\"22px\" height=\"32px\" viewBox=\"0 0 22 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>View / Map / Marker / Large (hover)</title>\n <defs>\n <radialGradient cx=\"50%\" cy=\"50.2950175%\" fx=\"50%\" fy=\"50.2950175%\" r=\"49.7049825%\" gradientTransform=\"translate(0.500000,0.502950),scale(0.777778,1.000000),rotate(90.000000),scale(1.000000,1.293560),translate(-0.500000,-0.502950)\" id=\"radialGradient-1\">\n <stop stop-color=\"#000000\" offset=\"0%\"></stop>\n <stop stop-color=\"#000000\" stop-opacity=\"0\" offset=\"100%\"></stop>\n </radialGradient>\n <path d=\"M21,0 C21.5522847,-1.01453063e-16 22,0.44771525 22,1 L22,21 C22,21.5522847 21.5522847,22 21,22 L15.7283832,22.0012846 C15.5422129,22.2445529 15.3664776,22.4802332 15.1984183,22.7122576 C13.7560833,24.7035592 13,26.2846074 13,27.5 L13,27.5 L12.9945143,27.6492623 C12.9181651,28.6841222 12.0543618,29.5 11,29.5 C9.8954305,29.5 9,28.6045695 9,27.5 L9,27.5 L8.99485006,27.3298651 C8.91582184,26.0024976 7.93016704,24.2171459 6.23940611,22.000704 L1,22 C0.44771525,22 6.76353751e-17,21.5522847 0,21 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 L21,0 Z\" id=\"path-2\"></path>\n </defs>\n <g id=\"View-/-Map-/-Marker-/-Large-(hover)\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <ellipse id=\"Oval\" fill=\"url(#radialGradient-1)\" opacity=\"0.32\" cx=\"11\" cy=\"28.5\" rx=\"6\" ry=\"4.66666667\"></ellipse>\n <mask id=\"mask-3\" fill=\"white\">\n <use xlink:href=\"#path-2\"></use>\n </mask>\n <use id=\"Path-2\" fill=\"#FFFFFF\" xlink:href=\"#path-2\"></use>\n <rect id=\"Entity-type\" fill=\"#24A8E8\" mask=\"url(#mask-3)\" x=\"0\" y=\"0\" width=\"22\" height=\"32\"></rect>\n <path d=\"M20,2 L20,20 L14.755,20 L14.6905172,20.0815309 C14.3562717,20.5012516 14.0578656,20.8886742 13.7817711,21.2616986 L13.5786724,21.5390469 C11.92787,23.8181606 11.079024,25.6311217 11.0052669,27.2674145 L11.0052669,27.2674145 L11,27.5 L10.9968324,27.3203844 C10.9285422,25.3781621 9.75347502,23.1598866 7.22124201,20.0010865 L2,20 L2,2 L20,2 Z\" id=\"Path\" fill=\"#FFFFFF\" fill-rule=\"nonzero\" mask=\"url(#mask-3)\"></path>\n </g>\n</svg>`;\n","import {useEffect} from 'react';\nimport {usePrevious} from '../../../hooks';\nimport {fitMapBoundsForMarkers, fitMapBoundsForOverlay} from '../helpers';\n\nexport const useFitMapBounds = ({markers, activeOverlay, isSearchOnMapMove, map}) => {\n const apiIsLoaded = Boolean(map && window.google);\n const prevMarkers = usePrevious(markers);\n const prevActiveOverlay = usePrevious(activeOverlay);\n const prevApiIsLoaded = usePrevious(apiIsLoaded);\n\n useEffect(() => {\n const activeOverlayChanged = prevActiveOverlay !== activeOverlay;\n const markersChanged = prevMarkers !== markers;\n const apiIsLoadedChanged = prevApiIsLoaded !== apiIsLoaded;\n\n const shouldUseFitMapBoundsForOverlay =\n apiIsLoaded && activeOverlay && (activeOverlayChanged || apiIsLoadedChanged);\n const shouldUseFitMapBoundsForMarkers =\n apiIsLoaded && !isSearchOnMapMove && markers.length && (markersChanged || apiIsLoadedChanged);\n\n if (shouldUseFitMapBoundsForMarkers) {\n fitMapBoundsForMarkers(markers, map, activeOverlay);\n } else if (shouldUseFitMapBoundsForOverlay) {\n fitMapBoundsForOverlay(map, activeOverlay);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiIsLoaded, markers, activeOverlay]);\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n mapControlContainer: {\n borderRadius: '2px',\n backgroundColor: '#FFFFFF',\n boxShadow: '0 1px 3px 0 rgba(0,0,0,0.15)',\n margin: '10px'\n }\n});\n","import React, {useCallback, useMemo, useRef, useState} from 'react';\nimport {propEq, isEmpty, prop} from 'ramda';\nimport {\n GoogleMap,\n useJsApiLoader,\n GoogleMapProps,\n Polygon,\n DrawingManager,\n MarkerClusterer,\n LoadScriptProps,\n MarkerProps,\n MarkerClustererProps\n} from '@react-google-maps/api';\nimport {noop} from '../../core/utils';\nimport {MapControlContainer} from './MapControls/MapControlContainer/MapControlContrainer';\nimport {TopRightMapControls} from './MapControls/TopRightMapControls/TopRightMapControls';\nimport {TopCenterMapControls} from './MapControls/TopCenterMapControls/TopCenterMapControls';\nimport {getMapBoundsPolygon, getDrawingMode} from './helpers';\nimport EntityMarker from './EntityMarker/EntityMarker';\nimport {DEFAULT_GOOGLE_MAP_OPTIONS, DEFAULT_OVERLAY_OPTIONS, MAP_DRAWING_MODES} from '../../constants';\nimport {DrawingModes, EntityMarker as Marker, MapBounds, Overlay, OverlayPath} from './types';\nimport {useFitMapBounds} from './hooks/useFitMapBounds';\n\nimport {useStyles} from './styles';\n\nconst ON_MAP_MOVE_DEBOUNCE_INTERVAL = 1000;\n\nconst libraries = ['drawing'] as LoadScriptProps['libraries'];\n\ntype MarkerClustererOptions = MarkerClustererProps['options'];\ntype Props = {\n markers?: Marker[];\n mapKey: string;\n defaultZoom?: GoogleMapProps['zoom'];\n defaultCenter?: GoogleMapProps['center'];\n loadingElement: JSX.Element;\n isSearchOnMapMove?: boolean;\n isSearchEnabled?: boolean;\n activeOverlay?: Overlay;\n overlayOptions?: google.maps.PolygonOptions | google.maps.CircleOptions;\n drawingModes?: DrawingModes;\n markerClusterer?: boolean;\n markerClustererOptions?: MarkerClustererOptions;\n mapOptions?: google.maps.MapOptions;\n mapContainerClassName?: string;\n onMapBoundsChanged?: (value: MapBounds | null) => void;\n onOverlayUpdated?: (value: {data: OverlayPath; type: string}) => void;\n onMarkerClicked?: (value: Marker) => void;\n};\n\nexport const ReltioMap = ({\n markers = [],\n mapKey,\n defaultZoom,\n defaultCenter,\n loadingElement,\n isSearchOnMapMove,\n isSearchEnabled,\n activeOverlay,\n overlayOptions = {},\n drawingModes = [],\n markerClusterer,\n markerClustererOptions,\n mapOptions = {},\n mapContainerClassName,\n onMapBoundsChanged = noop,\n onOverlayUpdated = noop,\n onMarkerClicked = noop\n}: Props) => {\n const styles = useStyles();\n const {isLoaded, loadError} = useJsApiLoader({\n googleMapsApiKey: mapKey,\n libraries\n });\n\n const mapMoveEndTimer = useRef(null);\n const [map, setMap] = useState<google.maps.Map>(null);\n const [polygon, setPolygon] = useState(null);\n const [drawingMode, setDrawingMode] = useState(null);\n\n useFitMapBounds({markers, activeOverlay, map, isSearchOnMapMove});\n\n const allOverlayOptions = useMemo(() => ({...DEFAULT_OVERLAY_OPTIONS, ...overlayOptions}), [overlayOptions]);\n const googleMapOptions = useMemo(() => ({...DEFAULT_GOOGLE_MAP_OPTIONS, ...mapOptions}), [mapOptions]);\n\n const handleChangeIsSearchOnMapMove = useCallback(\n (isSearchOnMapMove: boolean) => {\n onMapBoundsChanged(isSearchOnMapMove ? getMapBoundsPolygon(map) : null);\n setDrawingMode(null);\n clearTimeout(mapMoveEndTimer.current);\n },\n [map, onMapBoundsChanged]\n );\n\n const handleMapMoveStart = useCallback(() => {\n clearTimeout(mapMoveEndTimer.current);\n }, []);\n\n const handleMapMoveEnd = useCallback(() => {\n if (!isSearchOnMapMove) return;\n onMapBoundsChanged(getMapBoundsPolygon(map));\n }, [isSearchOnMapMove, map, onMapBoundsChanged]);\n\n const handleMapIdle = useCallback(() => {\n if (!isSearchOnMapMove) return;\n clearTimeout(mapMoveEndTimer.current);\n mapMoveEndTimer.current = setTimeout(handleMapMoveEnd, ON_MAP_MOVE_DEBOUNCE_INTERVAL);\n }, [handleMapMoveEnd, isSearchOnMapMove]);\n\n const handleOverlayChange = useCallback(\n (e, propOverlay?) => {\n const polygonStateOverlay = polygon && {type: MAP_DRAWING_MODES.POLYGON, overlay: polygon};\n const stateOverlay = propOverlay || polygonStateOverlay;\n\n if (isEmpty(stateOverlay)) return;\n\n const {overlay, type} = stateOverlay;\n\n const getPolygonLatLngCoordinates = () =>\n overlay\n .getPath()\n .getArray()\n .map((latlng) => [latlng.lat(), latlng.lng()]);\n\n const getCircleParameters = () => ({radius: overlay.getRadius() / 1000, center: overlay.getCenter()});\n\n const typeActions = {\n [MAP_DRAWING_MODES.POLYGON]: getPolygonLatLngCoordinates,\n [MAP_DRAWING_MODES.CIRCLE]: getCircleParameters\n };\n\n const data = typeActions[type]?.();\n\n if (!data) return;\n\n onOverlayUpdated({data, type});\n },\n [onOverlayUpdated, polygon]\n );\n\n const handleOverlayComplete = useCallback(\n (type) => (overlay) => {\n handleOverlayChange(null, {type, overlay});\n overlay.setMap(null);\n setDrawingMode(null);\n },\n [handleOverlayChange]\n );\n\n const handleClearOverlay = useCallback(() => {\n onOverlayUpdated(null);\n }, [onOverlayUpdated]);\n\n const renderMarkers = (clusterer?: MarkerProps['clusterer']) => {\n return markers\n .filter(prop('point'))\n .map((marker) => (\n <EntityMarker key={marker.id} marker={marker} clusterer={clusterer} onClick={onMarkerClicked} />\n ));\n };\n\n const renderMarkerClusterer = (options?: MarkerClustererOptions) => {\n return <MarkerClusterer options={options}>{renderMarkers}</MarkerClusterer>;\n };\n\n if (loadError) {\n return null;\n }\n\n if (!isLoaded) {\n return loadingElement;\n }\n\n const shouldRenderDrawingManager = isSearchEnabled && Boolean(drawingModes.length);\n const shouldRenderRightMapControls = map && isSearchEnabled && Boolean(drawingModes.length);\n const shouldRenderCenterMapControls = map && isSearchEnabled;\n const shouldRenderPolygon =\n !getDrawingMode(drawingMode) && activeOverlay && propEq('type', MAP_DRAWING_MODES.POLYGON, activeOverlay);\n\n return (\n <GoogleMap\n mapTypeId={window.google.maps.MapTypeId.ROADMAP}\n options={googleMapOptions}\n onLoad={setMap}\n zoom={defaultZoom}\n center={defaultCenter}\n onZoomChanged={handleMapMoveStart}\n onDragStart={handleMapMoveStart}\n onIdle={handleMapIdle}\n mapContainerClassName={mapContainerClassName}\n >\n {shouldRenderRightMapControls && (\n <MapControlContainer\n className={styles.mapControlContainer}\n position={window.google.maps.ControlPosition.TOP_RIGHT}\n map={map}\n >\n <TopRightMapControls\n hasActiveOverlay={!!activeOverlay}\n drawingModes={drawingModes}\n drawingMode={drawingMode}\n onDrawingModeChanged={setDrawingMode}\n onClearOverlay={handleClearOverlay}\n />\n </MapControlContainer>\n )}\n\n {shouldRenderCenterMapControls && (\n <MapControlContainer\n className={styles.mapControlContainer}\n position={window.google.maps.ControlPosition.TOP_CENTER}\n map={map}\n >\n <TopCenterMapControls\n onChangeIsSearchOnMapMove={handleChangeIsSearchOnMapMove}\n isSearchOnMapMove={isSearchOnMapMove}\n />\n </MapControlContainer>\n )}\n\n {markerClusterer ? renderMarkerClusterer(markerClustererOptions) : renderMarkers()}\n\n {shouldRenderPolygon && (\n <Polygon\n onLoad={setPolygon}\n path={activeOverlay.path}\n editable={true}\n options={allOverlayOptions}\n onMouseUp={handleOverlayChange}\n onDragEnd={handleOverlayChange}\n />\n )}\n\n {shouldRenderDrawingManager && (\n <DrawingManager\n onPolygonComplete={handleOverlayComplete(MAP_DRAWING_MODES.POLYGON)}\n onCircleComplete={handleOverlayComplete(MAP_DRAWING_MODES.CIRCLE)}\n drawingMode={getDrawingMode(drawingMode)}\n options={{\n drawingControl: false,\n circleOptions: allOverlayOptions,\n polygonOptions: allOverlayOptions\n }}\n />\n )}\n </GoogleMap>\n );\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst VerticalDivider = ({height, margin}) => (\n <div\n style={{\n width: '1px',\n height: `${height}px`,\n borderLeft: '1px solid rgba(0,0,0,0.38)',\n margin: `0 ${margin}px`,\n flexShrink: '0'\n }}\n />\n);\n\nVerticalDivider.propTypes = {\n height: PropTypes.number,\n margin: PropTypes.number\n};\n\nexport default VerticalDivider;\n","import {useEffect} from 'react';\nimport {evolve, map} from 'ramda';\nimport {entity as History, HistoryDiff, HistoryMode, wrapInArrayIfNeeded} from '@reltio/mdm-sdk';\nimport {useMdmAction, useMdmEntity, useMdmHistoryDiff, useMdmHistoryMode, useMdmHistorySlice} from '../../../contexts';\n\nexport const defaultHistoryDiff: HistoryDiff = {\n appearance: {},\n attributes: {},\n roles: [],\n tags: []\n};\n\nconst fixRefEntity = evolve({\n refEntity: wrapInArrayIfNeeded,\n refRelation: wrapInArrayIfNeeded\n});\n\nconst prepareHistorySlice = (historySlice) => {\n if (historySlice) {\n return evolve({\n attributes: map(map(fixRefEntity))\n })(historySlice);\n }\n return historySlice;\n};\n\nexport const useHistoryDiff = () => {\n const setHistoryDiff = useMdmAction('setHistoryDiff');\n const historySlice = useMdmHistorySlice();\n const historyDiff = useMdmHistoryDiff();\n const historyMode = useMdmHistoryMode();\n const entity = useMdmEntity();\n\n useEffect(() => {\n if (historySlice) {\n const {aEntity, bEntity} = historySlice;\n const historyManager = History.HistoryManager.createHistoryManager();\n const historyDiff: HistoryDiff = historyManager.computeEntityHistoryDiff(\n prepareHistorySlice(historyMode === HistoryMode.Current ? entity : bEntity),\n prepareHistorySlice(aEntity)\n );\n setHistoryDiff(historyDiff);\n }\n }, [historySlice, historyMode, setHistoryDiff, entity]);\n\n return historyDiff || defaultHistoryDiff;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n dueDate: {\n marginTop: 0,\n marginBottom: 0\n },\n dueDateInput: {\n height: '40px'\n },\n inputLabel: {\n fontSize: '14px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useWorkflowDueDate} from '../../hooks/useWorkflowDueDate';\nimport {DateEditor} from '../../../editors';\n\nimport {useStyles} from './styles';\n\ntype Props = Pick<WorkflowTaskData, 'taskId' | 'dueDate'> & {\n isTaskOpen?: WorkflowTaskData['isOpen'];\n className?: string;\n};\n\nconst DueDateField = ({taskId, dueDate, isTaskOpen, className}: Props) => {\n const styles = useStyles();\n const {updateDueDate, updateRequestIsInProgress, readOnly} = useWorkflowDueDate({\n dueDate,\n taskId,\n isOpen: isTaskOpen\n });\n\n return (\n <DateEditor\n disabled={updateRequestIsInProgress || readOnly}\n value={dueDate}\n label={i18n.text('Due date')}\n onChange={pipe((date) => date && date.getTime(), updateDueDate)}\n slotProps={{\n textField: {\n className: classnames(styles.dueDate, className),\n size: 'small',\n InputProps: {className: styles.dueDateInput},\n InputLabelProps: {\n classes: {root: styles.inputLabel}\n }\n }\n }}\n />\n );\n};\n\nexport default DueDateField;\n","import {useState, useCallback, useContext} from 'react';\nimport {updateDueDateForTask, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\nimport {isOpenTask} from '../helpers';\nimport {useMdmTenant, useMdmWorkflowEnvironmentUrl, useMdmWorkflowPath} from '../../../contexts';\n\nexport const useWorkflowDueDate = ({\n dueDate,\n taskId,\n isOpen\n}: Pick<WorkflowTaskData, 'dueDate' | 'taskId' | 'isOpen'>) => {\n const {updateTaskState} = useContext(WorkflowTasksContext) || {};\n\n const workflowPath = useMdmWorkflowPath();\n const environment = useMdmWorkflowEnvironmentUrl();\n const tenant = useMdmTenant();\n\n const safePromise = useSafePromise();\n const [updateRequestIsInProgress, setUpdateRequestIsInProgress] = useState(false);\n const checkWorkflowPermission = useWorkflowCheckPermission();\n const canUpdateTask = checkWorkflowPermission('UPDATE_TASK') && isOpenTask(isOpen);\n\n const updateDueDate = useCallback(\n (newValue: number) => {\n if (workflowPath && canUpdateTask && taskId && newValue && dueDate !== newValue) {\n setUpdateRequestIsInProgress(true);\n safePromise(\n updateDueDateForTask({\n taskId,\n workflowPath,\n environment,\n tenant,\n dueDate: newValue\n })\n )\n .then(() => {\n updateTaskState?.(taskId, {dueDate: newValue});\n })\n .catch(showWorkflowError)\n .finally(() => {\n setUpdateRequestIsInProgress(false);\n });\n }\n },\n [workflowPath, taskId, environment, tenant, updateTaskState, safePromise, dueDate, canUpdateTask]\n );\n return {updateDueDate, updateRequestIsInProgress, readOnly: !canUpdateTask};\n};\n","import {useState, useCallback, useContext, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {updatePriorityForTask, WorkflowPriority, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\nimport {isOpenTask} from '../helpers';\nimport {useMdmTenant, useMdmWorkflowEnvironmentUrl, useMdmWorkflowPath} from '../../../contexts';\n\ntype PriorityOption = {label: string; value: number};\n\nexport const useWorkflowPriority = ({\n priority,\n taskId,\n isOpen\n}: Pick<WorkflowTaskData, 'taskId' | 'priority' | 'isOpen'>) => {\n const {updateTaskState} = useContext(WorkflowTasksContext) || {};\n\n const workflowPath = useMdmWorkflowPath();\n const environment = useMdmWorkflowEnvironmentUrl();\n const tenant = useMdmTenant();\n\n const safePromise = useSafePromise();\n const [updateRequestIsInProgress, setUpdateRequestIsInProgress] = useState(false);\n const checkWorkflowPermission = useWorkflowCheckPermission();\n const canUpdateTask = checkWorkflowPermission('UPDATE_TASK') && isOpenTask(isOpen);\n\n const updatePriority = useCallback(\n (newValue: PriorityOption) => {\n const {value: newPriority} = newValue;\n if (workflowPath && canUpdateTask && taskId && priority !== newPriority) {\n setUpdateRequestIsInProgress(true);\n safePromise(\n updatePriorityForTask({\n taskId,\n workflowPath,\n environment,\n tenant,\n priority: newPriority\n })\n )\n .then(() => {\n updateTaskState?.(taskId, {priority: newPriority});\n })\n .catch(showWorkflowError)\n .finally(() => {\n setUpdateRequestIsInProgress(false);\n });\n }\n },\n [workflowPath, taskId, environment, tenant, updateTaskState, safePromise, priority, canUpdateTask]\n );\n\n const priorities: PriorityOption[] = useMemo(\n () => [\n {\n label: i18n.text('Low'),\n value: WorkflowPriority.low\n },\n {\n label: i18n.text('Medium'),\n value: WorkflowPriority.medium\n },\n {\n label: i18n.text('High'),\n value: WorkflowPriority.high\n },\n {\n label: i18n.text('Urgent'),\n value: WorkflowPriority.urgent\n }\n ],\n []\n );\n return {priorities, updatePriority, updateRequestIsInProgress, readOnly: !canUpdateTask};\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {propEq} from 'ramda';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\n\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\nimport {useWorkflowPriority} from '../../hooks/useWorkflowPriority';\n\ntype Props = Pick<WorkflowTaskData, 'taskId' | 'priority'> & {\n isTaskOpen?: WorkflowTaskData['isOpen'];\n className?: string;\n};\n\nconst PrioritySelector = ({taskId, priority, isTaskOpen, className}: Props) => {\n const {priorities, updatePriority, updateRequestIsInProgress, readOnly} = useWorkflowPriority({\n taskId,\n priority,\n isOpen: isTaskOpen\n });\n const disabled = updateRequestIsInProgress || readOnly;\n\n return (\n <DropDownSelector\n className={className}\n isDisabled={disabled}\n options={priorities}\n onChange={updatePriority}\n hideSelectedOptions={false}\n label={i18n.text('Priority')}\n value={priorities.find(propEq('value', priority))}\n TextFieldProps={{disabled}}\n height={40}\n />\n );\n};\n\nexport default PrioritySelector;\n","import {makeStyles} from '@mui/styles';\n\nconst pointColor = '#d8d8d8';\nconst lineStyle = '2px solid rgba(0,0,0,0.06)';\nconst pointSize = 6;\nconst blockWidth = 56;\nconst linePadding = 10;\nconst pointPadding = 15;\n\nexport const useStyles = makeStyles({\n decorator: {\n display: 'flex',\n alignItems: 'stretch'\n },\n lineBlock: {\n width: `${blockWidth}px`,\n flexShrink: 0\n },\n withLinePadding: {\n '& $noLine': {\n height: `${linePadding}px`\n },\n '& $line': {\n height: `calc(100% - ${linePadding}px)`\n }\n },\n noLine: {\n height: '0'\n },\n line: {\n height: '100%',\n position: 'relative',\n marginLeft: '31px',\n borderLeft: lineStyle,\n '&:before': {\n position: 'absolute',\n height: pointSize,\n width: pointSize,\n borderRadius: '50%',\n left: -pointSize + 1,\n top: `${pointPadding}px`,\n background: pointColor,\n content: '\"\"',\n display: 'block',\n border: '1px solid white'\n },\n '&$plain': {\n '&:before': {\n width: 0,\n border: 'none'\n }\n },\n '&$last': {\n height: `${pointPadding}px`\n }\n },\n content: {\n flex: 1,\n minWidth: 0\n },\n plain: {},\n last: {},\n rowDivider: {\n marginLeft: 0\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport Divider from '@mui/material/Divider';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n plain?: boolean;\n first?: boolean;\n last?: boolean;\n transparent?: boolean;\n divider?: boolean;\n};\n\nconst LineDecorator = ({className, children, plain, first, last, transparent, divider}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(className, styles.decorator)}>\n <div className={classnames(styles.lineBlock, {[styles.withLinePadding]: first})}>\n {!transparent && (\n <>\n <div className={styles.noLine} />\n <div className={classnames(styles.line, {[styles.plain]: plain}, {[styles.last]: last})} />\n </>\n )}\n </div>\n <div className={styles.content}>\n {children}\n {divider && <Divider className={styles.rowDivider} light variant=\"inset\" />}\n </div>\n </div>\n );\n};\n\nexport default LineDecorator;\n","import {WorkflowTaskData} from '@reltio/mdm-sdk';\n\nlet taskToColor = {};\nconst COLORS = [\n '#DC057B',\n '#5DC003',\n '#FEC92F',\n '#F57F27',\n '#B71137',\n '#056B97',\n '#4499AE',\n '#BD81BE',\n '#5F3577',\n '#A68560',\n '#555962'\n];\nlet colorIndex = 0;\n\nexport const resetTaskToColor = () => {\n taskToColor = {};\n colorIndex = 0;\n};\n\nexport const useWorkflowColor = ({\n processDefinitionDisplayName\n}: Pick<WorkflowTaskData, 'processDefinitionDisplayName'>) => {\n const hash = processDefinitionDisplayName;\n if (!taskToColor[hash]) {\n taskToColor[hash] = COLORS[colorIndex];\n colorIndex++;\n if (colorIndex > COLORS.length - 1) {\n colorIndex = 0;\n }\n }\n return taskToColor[hash];\n};\n","import React from 'react';\n\nconst SvgCollaborationIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M4 17.17L5.17 16H20V4H4v13.17zM20 2c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H6l-4 4V4c0-1.1.9-2 2-2h16zm-3 9H7v2h10v-2zm0-4H7v2h10V7z\"\n id=\"CollaborationIcon_svg__a\"\n />\n </defs>\n <g transform=\"translate(-2 -2)\" stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"CollaborationIcon_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#CollaborationIcon_svg__a\" />\n </mask>\n <path fillOpacity={0.54} fill=\"#000\" mask=\"url(#CollaborationIcon_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgCollaborationIcon;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n card: {\n borderBottom: '1px solid rgba(0,0,0,0.06)'\n },\n withBackground: {\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n lineWrapper: {\n position: 'relative'\n },\n icon: {\n position: 'absolute',\n top: '8px',\n left: '16px',\n width: '32px',\n height: '32px',\n zIndex: 1\n },\n line: ({color}: {color: string}) => ({\n borderLeft: `3px solid ${color}`,\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0\n }),\n info: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n wordWrap: 'break-word',\n lineHeight: '15px'\n },\n commentsInfo: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: '-4px',\n marginTop: '7px'\n },\n commentsIcon: {\n width: '11px',\n height: '11px',\n marginLeft: '2px',\n marginRight: '6px',\n marginTop: '-2px'\n },\n infoValue: {\n color: theme.palette.text.primary\n },\n infoBlock: {\n display: 'flex',\n flexDirection: 'row',\n marginBottom: '5px'\n },\n header: {\n display: 'flex',\n flexDirection: 'row',\n paddingBottom: '12px'\n },\n flex: {\n flex: 1\n },\n caption: {\n fontSize: '16px',\n color: theme.palette.text.primary\n },\n title: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n marginBottom: '-4px'\n },\n flag: {\n height: '13px',\n width: '13px',\n marginTop: '-2px',\n stroke: '#000000',\n fill: 'none',\n margin: '2px 5px 0 5px'\n },\n date: {\n fontSize: '13px',\n color: theme.palette.text.primary\n },\n mainInfo: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1\n },\n controlsBox: {\n marginRight: '16px',\n marginBottom: '12px',\n marginTop: '13px'\n },\n controlsInRow: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: '20px'\n },\n priority: {\n width: '162px'\n },\n comments: {\n marginLeft: '11px'\n }\n}));\n","import React, {useState} from 'react';\nimport classnames from 'classnames';\nimport FlagIcon from '@mui/icons-material/Flag';\nimport i18n from 'ui-i18n';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport CollapseButton from '../../../CollapseButton/CollapseButton';\nimport AssigneeSelector from '../../components/AssigneeSelector/AssigneeSelector';\nimport DueDateField from '../../components/DueDateField/DueDateField';\nimport PrioritySelector from '../../components/PrioritySelector/PrioritySelector';\nimport WorkflowComments from '../../components/WorkflowComments';\nimport {getDCRId} from '../../helpers';\nimport TaskActions from '../../components/TaskActions/TaskActions';\nimport LineDecorator from '../../components/LineDecorator/LineDecorator';\nimport {useWorkflowColor} from '../../hooks/useWorkflowColor';\nimport {useWorkflowCheckPermission} from '../../hooks/useWorkflowCheckPermission';\nimport CollaborationIcon from '../../../../icons/CollaborationIcon';\nimport {useWorkflowActions} from '../../hooks/useWorkflowActions';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n task: WorkflowTaskData;\n children?: React.ReactNode;\n actions?: React.ReactNode;\n Icon?: React.ElementType;\n};\n\nconst GenericWorkflowTaskCard = ({task, children, actions, Icon}: Props) => {\n const {\n taskId,\n dueDate,\n priority,\n assignee,\n createdBy,\n createTime,\n displayName: step,\n processDefinitionDisplayName,\n objectURIs,\n processInstanceComments,\n possibleActions,\n isOpen: isTaskOpen,\n preferredAction\n } = task;\n const dcrId = getDCRId(objectURIs);\n const color = useWorkflowColor({processDefinitionDisplayName});\n const styles = useStyles({color});\n const [isExpanded, setExpanded] = useState(false);\n const checkWorkflowPermission = useWorkflowCheckPermission();\n const canViewComments = checkWorkflowPermission('VIEW_PROCESS_INSTANCE_COMMENTS');\n const {actions: workflowActions, actionRequestIsInProgress} = useWorkflowActions({\n taskId,\n possibleActions,\n assignee,\n isOpen: isTaskOpen\n });\n return (\n <div className={styles.card}>\n <div className={classnames({[styles.withBackground]: isExpanded})}>\n <div className={styles.lineWrapper}>\n <div className={styles.line} />\n {Icon && <Icon className={styles.icon} />}\n <LineDecorator plain first transparent={!isExpanded}>\n <div className={styles.mainInfo}>\n <div className={styles.title}>\n <div className={classnames(styles.caption, styles.flex)}>\n {i18n.text(processDefinitionDisplayName)}\n </div>\n <FlagIcon className={styles.flag} />\n <Tooltip title={i18n.text('Due date')}>\n <span className={styles.date}>{i18n.date(dueDate, 'L')}</span>\n </Tooltip>\n <CollapseButton\n isOpen={isExpanded}\n size=\"L\"\n onClick={() => {\n setExpanded(!isExpanded);\n }}\n />\n </div>\n <div className={styles.infoBlock} data-reltio-id=\"info-block\">\n <div className={styles.flex}>\n {dcrId && (\n <div className={styles.info}>\n {i18n.text('DCR ID')}\n {': '}\n <span className={styles.infoValue}>{dcrId}</span>\n </div>\n )}\n <div className={styles.info}>\n {i18n.text('Created by')}\n {': '}\n <span className={styles.infoValue}>{createdBy}</span> {i18n.text('on')}{' '}\n <span className={styles.infoValue}>{i18n.date(createTime, 'L')}</span>\n </div>\n <div className={styles.info}>\n {i18n.text('Step')}\n {': '}\n <span className={styles.infoValue}>{step}</span>\n </div>\n {canViewComments && processInstanceComments?.length > 0 && (\n <div className={styles.commentsInfo}>\n <CollaborationIcon className={styles.commentsIcon} />\n <div className={styles.infoValue}>{processInstanceComments.length}</div>\n </div>\n )}\n </div>\n {actions || (\n <TaskActions actions={workflowActions} isInProgress={actionRequestIsInProgress} />\n )}\n </div>\n </div>\n </LineDecorator>\n </div>\n {isExpanded && (\n <LineDecorator plain>\n <div className={styles.controlsBox}>\n <div className={styles.controlsInRow}>\n <DueDateField taskId={taskId} dueDate={dueDate} isTaskOpen={isTaskOpen} />\n <PrioritySelector\n taskId={taskId}\n priority={priority}\n className={styles.priority}\n isTaskOpen={isTaskOpen}\n />\n </div>\n <AssigneeSelector taskId={taskId} assignee={assignee} isTaskOpen={isTaskOpen} />\n </div>\n </LineDecorator>\n )}\n </div>\n {isExpanded && (\n <>\n {children}\n {canViewComments && (\n <div className={styles.comments}>\n <WorkflowComments\n workflowActions={workflowActions}\n actionRequestIsInProgress={actionRequestIsInProgress}\n preferredAction={preferredAction}\n taskId={taskId}\n processInstanceComments={processInstanceComments}\n isTaskOpen={isTaskOpen}\n />\n </div>\n )}\n </>\n )}\n </div>\n );\n};\n\nexport default GenericWorkflowTaskCard;\n","import React from 'react';\n\nconst SvgDcrTaskIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={28} height={28} viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <circle fill=\"#42A5F5\" cx={14} cy={14} r={14} />\n <path\n d=\"M16.43 9.87c0 1.59 1.25 2.87 2.79 2.87 1.53 0 2.78-1.28 2.78-2.87C22 8.29 20.75 7 19.22 7c-1.54 0-2.79 1.29-2.79 2.87zm1.4 0c0-.79.62-1.43 1.39-1.43.77 0 1.39.64 1.39 1.43 0 .79-.62 1.44-1.39 1.44-.77 0-1.39-.65-1.39-1.44zm-6.26 8.26c0-1.59-1.25-2.87-2.79-2.87-1.53 0-2.78 1.28-2.78 2.87C6 19.71 7.25 21 8.78 21c1.54 0 2.79-1.29 2.79-2.87zM8.09 9.15v4.31h1.39v-2.87h2.78v2.15l2.78-2.87L12.26 7v2.15H8.09zm11.82 9.7v-4.31h-1.39v2.87h-2.78v-2.15l-2.78 2.87L15.74 21v-2.15h4.17z\"\n fill=\"#FFF\"\n opacity={0.87}\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDcrTaskIcon;\n","import i18n from 'ui-i18n';\nimport {allPass, always, equals, evolve, pipe, prop, when} from 'ramda';\nimport {\n AttributeType,\n DataTypes,\n DCRAttributeValue,\n DCRObjectsInfo,\n DCRTypes,\n DCREntityInfo,\n getAttrDataTypeDefinition,\n isUrl,\n DCROperationTypes,\n DCRRelationInfo,\n DCRValue,\n PrimitiveValue\n} from '@reltio/mdm-sdk';\n\nexport const getOperationType = (type: string, oldValue?: DCRAttributeValue) => {\n switch (type) {\n case DCRTypes.CREATE_RELATIONSHIP:\n case DCRTypes.INSERT_ATTRIBUTE:\n return DCROperationTypes.ADDED;\n case DCRTypes.UPDATE_TAGS:\n case DCRTypes.UPDATE_ROLES:\n case DCRTypes.UPDATE_ATTRIBUTE:\n return DCROperationTypes.EDITED;\n case DCRTypes.DELETE_ATTRIBUTE:\n case DCRTypes.DELETE_RELATIONSHIP:\n return DCROperationTypes.DELETED;\n case DCRTypes.PIN_ATTRIBUTE:\n return oldValue?.pin ? DCROperationTypes.PIN_DELETED : DCROperationTypes.PINNED;\n case DCRTypes.IGNORE_ATTRIBUTE:\n return oldValue?.ignored ? DCROperationTypes.IGNORE_DELETED : DCROperationTypes.IGNORED;\n }\n};\n\nexport const getOperationLabel = (operation: DCROperationTypes) => {\n const labels = {\n [DCROperationTypes.ADDED]: i18n.text('added'),\n [DCROperationTypes.EDITED]: i18n.text('edited'),\n [DCROperationTypes.DELETED]: i18n.text('deleted'),\n [DCROperationTypes.PINNED]: i18n.text('pinned'),\n [DCROperationTypes.PIN_DELETED]: i18n.text('pin deleted'),\n [DCROperationTypes.IGNORED]: i18n.text('ignored'),\n [DCROperationTypes.IGNORE_DELETED]: i18n.text('ignore deleted')\n };\n\n return labels[operation] || '';\n};\n\nexport const getAttributeDescription = (\n attrType: AttributeType,\n value: DCRAttributeValue,\n currentEntityUri: string,\n objectsInfo: DCRObjectsInfo = {}\n) => {\n let objectLabel: string, objectUri: string;\n\n const relation = objectsInfo[value.refObjectURI] as DCRRelationInfo;\n if (relation) {\n objectUri = currentEntityUri === relation.startObjectUri ? relation.endObjectUri : relation.startObjectUri;\n objectLabel =\n currentEntityUri === relation.startObjectUri ? relation.endObjectLabel : relation.startObjectLabel;\n } else if (value.refEntity) {\n objectUri = value.refEntity.objectURI;\n objectLabel = (objectsInfo[objectUri] as DCREntityInfo).label;\n }\n\n return {\n objectUri,\n objectLabel\n };\n};\n\nexport const getDataTypeDefinition = (attributeType: AttributeType, attributeValue: DCRValue) => {\n return when(\n allPass([pipe(prop('type'), equals(DataTypes.TYPE_STRING)), () => isUrl(attributeValue as PrimitiveValue)]),\n evolve({type: always(DataTypes.TYPE_URL)})\n )(getAttrDataTypeDefinition(attributeType));\n};\n","import {complement, curry, flatten, is, isEmpty, pathOr, propOr, times} from 'ramda';\nimport {\n AttributeType,\n DataTypes,\n DCRAttributes,\n DCRAttributeValue,\n DCRChange,\n DCRTypes,\n DCREntityInfo,\n getAttributeTypeSubAttributes,\n getLabel,\n getRelationAttributesList,\n getRelationType,\n isEmptyValue,\n isSpecialAttribute,\n Metadata,\n DCRRelationInfo\n} from '@reltio/mdm-sdk';\n\nimport {Diff} from '../types/diffTypes';\nimport {getFilteredAttrTypes} from '../../../../attributes/helpers/attributesView';\nimport {getOperationType} from './helpers';\n\nconst getValues = (attributes: DCRAttributes | DCRChange, attrType: AttributeType) => {\n if ('newValue' in attributes || 'oldValue' in attributes) {\n const {newValue, oldValue, type} = attributes;\n const newAttrValues = pathOr([], ['value', attrType.name])(newValue);\n const oldAttrValues = pathOr([], ['value', attrType.name])(oldValue);\n\n const length = Math.max(newAttrValues.length, oldAttrValues.length);\n return times((index) => {\n const attributeValue = {\n newValue: newAttrValues[index],\n oldValue: oldAttrValues[index],\n type\n };\n\n return [{value: attributeValue}];\n }, length);\n }\n const values = attributes[attrType.name];\n return values ? [values] : [];\n};\n\nconst getEntityChanges = curry((metadata: Metadata, entityInfo: DCREntityInfo, changes: DCRAttributes) => {\n const attrTypes: AttributeType[] = getFilteredAttrTypes(metadata, entityInfo.type, [], []);\n return getAttributesList(metadata, attrTypes, changes);\n});\n\nconst getRelationChanges = curry(\n (metadata: Metadata, relationInfo: DCRRelationInfo, changes: DCRAttributes, changeType: DCRTypes): Diff[] => {\n const addRelationOperationIfNeeded = (changes: DCRAttributes, changeType: DCRTypes) => {\n if (changeType === DCRTypes.CREATE_RELATIONSHIP || isEmptyValue(changes)) {\n const operation = getOperationType(changeType);\n return operation ? {operation} : {};\n }\n return {};\n };\n\n const relationType = getRelationType(metadata, relationInfo.type);\n const attrTypes = getRelationAttributesList(metadata, relationInfo.type);\n return flatten([\n {\n level: 1,\n label: propOr('', 'label', relationType),\n attributeType: relationType,\n attributeValue: {...relationInfo, ...changes},\n ...addRelationOperationIfNeeded(changes, changeType)\n },\n getAttributesList(metadata, attrTypes, changes, 2)\n ]);\n }\n);\n\nconst getAttributesList = (\n metadata: Metadata,\n attrTypes: AttributeType[],\n attributes: DCRAttributes | DCRChange,\n level = 0\n): Diff[] => {\n return flatten(\n attrTypes\n .map((attrType) => {\n return getValues(attributes, attrType).map((value) => {\n return value.map((attributeValue) => {\n return dcrAttributesFactory(metadata, attrType, attributeValue, level);\n });\n });\n })\n .filter(complement(isEmpty))\n );\n};\n\nconst getSimpleAttributeValue = (attributeType: AttributeType, attributeValue: DCRAttributeValue) => {\n const value = isSpecialAttribute(attributeType) ? attributeValue : attributeValue.value;\n return is(Object, value) ? value : {newValue: attributeValue, type: DCRTypes.INSERT_ATTRIBUTE};\n};\n\nconst dcrAttributesFactory = (\n metadata: Metadata,\n attributeType: AttributeType,\n attributeValue: DCRAttributeValue,\n level: number\n) => {\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n case DataTypes.TYPE_IMAGE:\n return getNestedAttributeChange(metadata, attributeType, attributeValue, level);\n case DataTypes.TYPE_REFERENCE:\n return getReferenceAttributeChange(metadata, attributeType, attributeValue, level);\n default: {\n const value = getSimpleAttributeValue(attributeType, attributeValue);\n return getSimpleAttributeChange(attributeType, value as DCRChange, level);\n }\n }\n};\n\nconst getNestedAttributeChange = (\n metadata: Metadata,\n attributeType: AttributeType,\n attributeValue: DCRAttributeValue,\n level: number\n) => {\n const attributeTypeList = getAttributeTypeSubAttributes({} as Metadata, attributeType);\n const label = getLabel(attributeType?.label || attributeType?.name);\n return [\n {level, label, attributeType, attributeValue},\n getAttributesList(metadata, attributeTypeList, attributeValue.value as DCRAttributes, level + 1)\n ];\n};\n\nconst getReferenceAttributeChange = (\n metadata: Metadata,\n attributeType: AttributeType,\n attributeValue: DCRAttributeValue,\n level: number\n) => {\n const attributeTypeList = getAttributeTypeSubAttributes(metadata, attributeType);\n const label = attributeType?.label || attributeType?.name;\n\n return [\n {level, label, attributeType, attributeValue},\n getAttributesList(metadata, attributeTypeList, attributeValue.value as DCRAttributes, level + 1)\n ];\n};\n\nconst getDiffParameters = ({newValue, oldValue, type}: DCRChange) => {\n return type === DCRTypes.UPDATE_ATTRIBUTE ? {type, newValue, oldValue} : {type, newValue: oldValue || newValue};\n};\n\nconst getSimpleAttributeChange = (attributeType: AttributeType, attributeValue: DCRChange, level: number) => {\n const {newValue, oldValue, type} = getDiffParameters(attributeValue);\n const operation = getOperationType(type, oldValue as DCRAttributeValue);\n\n const label = attributeType?.label || attributeType?.name;\n\n return {\n attributeType,\n newValue,\n oldValue,\n operation,\n label,\n level\n };\n};\n\nexport {getEntityChanges, getRelationChanges};\n","import {\n concat,\n curry,\n difference,\n flatten,\n identity,\n isNil,\n omit,\n path,\n pick,\n pipe,\n propEq,\n propOr,\n reduce\n} from 'ramda';\nimport {\n DCRAttributes,\n DCRAttributeValue,\n DCRChange,\n DCRChanges,\n DCRObjectInfo,\n DCRTypes,\n Entity,\n EntityAttrTypes,\n generateTempUri,\n getRoleLabel,\n GroupedObjectsInfo,\n isEmptyValue,\n Metadata,\n Relation\n} from '@reltio/mdm-sdk';\nimport {Diff} from '../types/diffTypes';\nimport {getEntityChanges, getRelationChanges} from './attributesHelpers';\n\nconst ATTRIBUTE_DELIMITER = '/';\nconst SPECIAL_ATTRIBUTES_NAMES = [\n 'defaultProfilePicValue',\n EntityAttrTypes.tags.name,\n EntityAttrTypes.roles.name,\n EntityAttrTypes.startDate.name,\n EntityAttrTypes.endDate.name\n];\n\nconst prepareStartOrEndDate = ({newValue, oldValue}: DCRChange): DCRChange[] => {\n const parseValue = (value) => (isNaN(value) || isEmptyValue(value) ? value : parseInt(value));\n\n const isExistedValue = (value) => value?.length && !isEmptyValue(value) && !isEmptyValue(value[0]);\n\n const isExistNewValue = isExistedValue(newValue);\n const isExistOldValue = isExistedValue(oldValue);\n if (isExistNewValue && isExistOldValue) {\n return [\n {\n type: DCRTypes.UPDATE_ATTRIBUTE,\n oldValue: {value: parseValue(oldValue[0])},\n newValue: {value: parseValue(newValue[0])}\n }\n ];\n } else if (isExistNewValue) {\n return [\n {\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: parseValue(newValue[0])}\n }\n ];\n } else if (isExistOldValue) {\n return [\n {\n type: DCRTypes.DELETE_ATTRIBUTE,\n oldValue: {value: parseValue(oldValue[0])}\n }\n ];\n }\n};\n\nconst prepareRolesOrTags = (metadata: Metadata, change: DCRChange): DCRChange[] => {\n const {newValue = [], oldValue = [], type} = change;\n const getLabel = type === DCRTypes.UPDATE_ROLES ? getRoleLabel(metadata) : identity;\n\n const diffNewValue = difference(newValue, oldValue);\n const diffOldValue = difference(oldValue, newValue);\n\n const items = [];\n\n if (diffNewValue.length) {\n items.push({\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: diffNewValue.map(getLabel).join(', ')}\n });\n }\n\n if (diffOldValue.length) {\n items.push({\n type: DCRTypes.DELETE_ATTRIBUTE,\n oldValue: {value: diffOldValue.map(getLabel).join(', ')}\n });\n }\n\n return items;\n};\n\nconst getPath = (change: DCRChange): string => {\n const {type, attributePath, refObjectURI, refAttributeType} = change;\n\n const path = type === DCRTypes.INSERT_ATTRIBUTE ? generateTempUri(attributePath) : attributePath;\n\n if (refObjectURI) {\n const typePath = refAttributeType.split('/attributes/');\n const id = refObjectURI.split(ATTRIBUTE_DELIMITER)[1];\n return [typePath[1], id, path].join(ATTRIBUTE_DELIMITER);\n }\n return path;\n};\n\nconst prepareAttribute = (container: DCRAttributes, change: DCRChange) => {\n const changePath = getPath(change);\n\n const pathArray = changePath.split(ATTRIBUTE_DELIMITER);\n\n let holder: DCRAttributes | DCRAttributeValue = container;\n\n for (let i = 0; i < pathArray.length - 1; i = i + 2) {\n const key = pathArray[i];\n const id = pathArray[i + 1];\n\n const currentValue = (holder[key] || []).find(propEq('id', id));\n\n const newValue = pathArray.length === i + 2 ? change : {};\n const value = currentValue ? currentValue : ({id, value: newValue} as DCRAttributeValue);\n\n const refObjectURI = change.refObjectURI?.indexOf(id) >= 0 && change.refObjectURI;\n if (refObjectURI) {\n value.refObjectURI = refObjectURI;\n }\n\n if (isNil(currentValue)) {\n holder[key] = (holder[key] || []).concat(value);\n }\n\n holder = value.value;\n }\n return container;\n};\n\nconst createEntityOrRelation = (metadata: Metadata, value: Entity | Relation) => {\n const {attributes = {}, startDate, endDate} = value;\n const {roles, tags, defaultProfilePicValue} = value as Entity;\n const newObject = {...attributes} as DCRAttributes;\n\n if (defaultProfilePicValue) {\n newObject['defaultProfilePicValue'] = [defaultProfilePicValue];\n }\n if (roles) {\n newObject[EntityAttrTypes.roles.name] = [\n {\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: roles.map(getRoleLabel(metadata)).join(', ')}\n }\n ];\n }\n if (tags) {\n newObject[EntityAttrTypes.tags.name] = [\n {\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: tags.join(', ')}\n }\n ];\n }\n if (startDate) {\n newObject[EntityAttrTypes.startDate.name] = [\n {\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: startDate}\n }\n ];\n }\n if (endDate) {\n newObject[EntityAttrTypes.endDate.name] = [\n {\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: endDate}\n }\n ];\n }\n return newObject;\n};\n\nconst mergeAttributesInChange = (\n metadata: Metadata,\n objectInfo: DCRObjectInfo,\n change: DCRChange,\n container: DCRAttributes = {}\n) => {\n const {type} = change;\n\n switch (type) {\n case DCRTypes.UPDATE_PROFILE_PIC_BY_URL:\n container['defaultProfilePicValue'] = [change.newValue];\n break;\n case DCRTypes.UPDATE_TAGS:\n container[EntityAttrTypes.tags.name] = prepareRolesOrTags(metadata, change);\n break;\n case DCRTypes.UPDATE_ROLES: {\n container[EntityAttrTypes.roles.name] = prepareRolesOrTags(metadata, change);\n break;\n }\n case DCRTypes.UPDATE_START_DATE:\n container[EntityAttrTypes.startDate.name] = prepareStartOrEndDate(change);\n break;\n case DCRTypes.UPDATE_END_DATE:\n container[EntityAttrTypes.endDate.name] = prepareStartOrEndDate(change);\n break;\n case DCRTypes.CREATE_RELATIONSHIP:\n case DCRTypes.CREATE_ENTITY: {\n return {\n ...container,\n ...createEntityOrRelation(metadata, change.newValue as Entity | Relation)\n };\n }\n case DCRTypes.INSERT_ATTRIBUTE:\n case DCRTypes.UPDATE_ATTRIBUTE:\n case DCRTypes.DELETE_ATTRIBUTE:\n case DCRTypes.PIN_ATTRIBUTE:\n case DCRTypes.IGNORE_ATTRIBUTE:\n prepareAttribute(container, change);\n break;\n default:\n break;\n }\n\n return container;\n};\n\nconst updateRelation = (metadata: Metadata, changes: DCRChanges, relationInfo: GroupedObjectsInfo['relations'][0]) => {\n const relationChanges: DCRChange[] = propOr([], relationInfo.uri)(changes);\n return relationChanges.reduce((result: DCRAttributes, change) => {\n return mergeAttributesInChange(metadata, relationInfo, change, result);\n }, {});\n};\n\nconst mergeChanges = (\n metadata: Metadata,\n changes: DCRChanges,\n entityInfo: GroupedObjectsInfo['entity'],\n relationsInfo: GroupedObjectsInfo['relations']\n): [Diff[], Diff[]] => {\n const getAttributeChanges = (attributeName: string) =>\n pipe(pick([attributeName]), getEntityChanges(metadata, entityInfo));\n const concatChanges = curry((getters, attributesTree) =>\n reduce((acc, getter) => concat(acc, getter(attributesTree)), [], getters)\n );\n\n const entityInfoChanges: DCRChange[] = propOr([], entityInfo.uri)(changes);\n\n const changesTree = entityInfoChanges.reduce((result: DCRAttributes, change: DCRChange) => {\n return mergeAttributesInChange(metadata, entityInfo, change, result);\n }, {});\n\n const relationsTrees = relationsInfo.map((relationInfo) => updateRelation(metadata, changes, relationInfo));\n\n const entityChanges: Diff[] = concatChanges(\n [\n pipe(omit(SPECIAL_ATTRIBUTES_NAMES), getEntityChanges(metadata, entityInfo)),\n getAttributeChanges(EntityAttrTypes.roles.name),\n getAttributeChanges(EntityAttrTypes.tags.name),\n getAttributeChanges(EntityAttrTypes.startDate.name),\n getAttributeChanges(EntityAttrTypes.endDate.name)\n ],\n changesTree\n );\n\n const relationsChanges: Diff[] = flatten(\n relationsInfo.map((relationInfo, index) => {\n const changeType: DCRTypes = path([relationInfo.uri, 0, 'type'], changes);\n return getRelationChanges(metadata, relationInfo, relationsTrees[index], changeType);\n })\n );\n\n return [entityChanges, relationsChanges];\n};\n\nexport {mergeChanges};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n linkLabel: {\n color: theme.palette.primary.main,\n fontSize: '12px',\n letterSpacing: 0,\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Link from '@mui/material/Link';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n suggestionsCount: number;\n isExpanded: boolean;\n className?: string;\n};\n\nconst ShowMoreLink = ({suggestionsCount, isExpanded, onClick, className}: Props) => {\n const styles = useStyles();\n return (\n <Link component=\"button\" variant=\"caption\" underline=\"none\" onClick={onClick} className={className}>\n <span className={styles.linkLabel}>\n {isExpanded\n ? i18n.text('View less suggestions')\n : i18n.text('View ${suggestionsCount} more suggestions', {suggestionsCount})}\n </span>\n </Link>\n );\n};\n\nexport default ShowMoreLink;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n field: {\n fontSize: '12px',\n lineHeight: '20px',\n color: theme.palette.text.primary,\n marginTop: '6px',\n overflow: 'hidden',\n wordBreak: 'break-word'\n },\n fieldName: {\n color: theme.palette.text.secondary,\n marginRight: '8px'\n },\n difference: {\n marginRight: '8px'\n },\n arrow: {\n margin: '0 4px',\n fontSize: '12px',\n color: theme.palette.text.primary\n },\n chip: {\n height: '20px',\n fontSize: '10px',\n fontWeight: 500,\n lineHeight: '16px',\n letterSpacing: 0,\n flexShrink: 0,\n textTransform: 'capitalize',\n color: theme.palette.primary.main,\n borderColor: theme.palette.primary.main,\n '&.edited': {\n color: '#CC7500',\n borderColor: '#CC7500'\n },\n '&.added': {\n color: '#599E0E',\n borderColor: '#599E0E'\n },\n '&.deleted': {\n color: '#CF0E26',\n borderColor: '#CF0E26'\n }\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {isNil} from 'ramda';\nimport ArrowRightAltIcon from '@mui/icons-material/ArrowRightAlt';\nimport Chip from '@mui/material/Chip';\nimport {DCROperationTypes} from '@reltio/mdm-sdk';\nimport {getOperationLabel} from '../../helpers/helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n label: React.ReactNode;\n oldValue?: React.ReactNode;\n newValue?: React.ReactNode;\n operation?: DCROperationTypes;\n className?: string;\n};\n\nconst ChangeView = ({label, oldValue, newValue, operation, className}: Props) => {\n const styles = useStyles();\n const value = oldValue || newValue;\n\n return (\n <div className={classnames(styles.field, className)}>\n <span className={styles.fieldName}>{label}:</span>\n {!isNil(value) && (\n <span className={styles.difference}>\n {value}\n {newValue && oldValue && (\n <>\n <ArrowRightAltIcon className={styles.arrow} />\n {newValue}\n </>\n )}\n </span>\n )}\n {operation && (\n <Chip\n variant=\"outlined\"\n label={getOperationLabel(operation)}\n className={classnames(styles.chip, operation)}\n />\n )}\n </div>\n );\n};\n\nexport default ChangeView;\n","import React from 'react';\nimport {DCRObjectsInfo} from '@reltio/mdm-sdk';\n\nexport const AttributesChangesContext = React.createContext<DCRObjectsInfo>(null);\n\nAttributesChangesContext.displayName = 'AttributesChangesContext';\n","import {makeStyles} from '@mui/styles';\n\ntype StylesProps = {\n level: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n linkContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n marginLeft: '4px'\n },\n linkLabel: {\n color: theme.palette.primary.main,\n fontSize: '12px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n disabledLink: {\n pointerEvents: 'none',\n cursor: 'default'\n },\n label: {\n color: theme.palette.text.primary\n },\n change: ({level = 0}: StylesProps) => ({\n marginLeft: `${level * 16}px`\n })\n}));\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport {isNil} from 'ramda';\nimport classnames from 'classnames';\nimport {ChangeValue, DCRAttributeValue, DCRChange, getAttributeValue, getLabel, isReference} from '@reltio/mdm-sdk';\nimport ChangeView from '../ChangeView/ChangeView';\nimport {AttributesChangesContext} from '../../contexts/AttributesChangesContext';\nimport {getAttributeDescription, getDataTypeDefinition} from '../../helpers/helpers';\nimport {Diff, RelationAttributeValue} from '../../types/diffTypes';\nimport DataTypeValue from '../../../../../DataTypeValue/DataTypeValue';\nimport EntityUriLink from '../../../../../EntityUriLink/EntityUriLink';\nimport {useMdmEntityUri} from '../../../../../../contexts';\nimport {useStyles} from './styles';\n\nconst DiffRenderer = ({label, level, attributeType, attributeValue, oldValue, newValue, operation}: Diff) => {\n const styles = useStyles({level});\n const objectsInfo = useContext(AttributesChangesContext);\n const entityUri = useMdmEntityUri();\n\n const getLinkDescription = useCallback(() => {\n if (isReference(attributeType)) {\n const value =\n (attributeValue.value as DCRChange)?.newValue ?? (attributeValue.value as DCRChange)?.oldValue;\n return getAttributeDescription(\n attributeType,\n (value as DCRAttributeValue) || attributeValue,\n entityUri,\n objectsInfo\n );\n } else if ('endObject' in attributeType) {\n const {endObjectUri, endObjectLabel} = attributeValue as RelationAttributeValue;\n return {\n objectUri: endObjectUri,\n objectLabel: endObjectLabel\n };\n }\n }, [attributeType, attributeValue, entityUri, objectsInfo]);\n\n const renderLink = useCallback(() => {\n const {objectUri, objectLabel} = getLinkDescription() || {};\n\n if (!isNil(objectUri) && !isNil(objectLabel)) {\n const isNotExist = objectsInfo[objectUri]?.isExist === false;\n return (\n <EntityUriLink\n value={objectUri}\n className={classnames(styles.linkContainer, {[styles.disabledLink]: isNotExist})}\n >\n <span className={classnames(styles.linkLabel, {[styles.label]: isNotExist})}>\n {getLabel(objectLabel)}\n </span>\n </EntityUriLink>\n );\n }\n return null;\n }, [getLinkDescription, objectsInfo, styles]);\n\n const changeLabel = useMemo(() => {\n return (\n <span>\n {label}\n {renderLink()}\n </span>\n );\n }, [label, renderLink]);\n\n const renderValue = useCallback(\n (value: ChangeValue) => {\n const attrValue = getAttributeValue(value);\n return (\n <DataTypeValue value={attrValue} dataTypeDefinition={getDataTypeDefinition(attributeType, attrValue)} />\n );\n },\n [attributeType]\n );\n\n return (\n <ChangeView\n className={styles.change}\n label={changeLabel}\n oldValue={oldValue && renderValue(oldValue)}\n newValue={newValue && renderValue(newValue)}\n operation={operation}\n />\n );\n};\n\nexport default DiffRenderer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n title: {\n fontSize: '12px',\n letterSpacing: 0,\n lineHeight: '16px',\n fontWeight: 500,\n marginTop: '8px'\n }\n});\n","import React from 'react';\nimport {has} from 'ramda';\nimport DiffRenderer from '../DiffRenderer/DiffRenderer';\nimport {Diff, Title} from '../../types/diffTypes';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n changes: (Diff | Title)[];\n};\n\nconst DCRChangesList = ({changes}: Props) => {\n const styles = useStyles();\n return (\n <>\n {changes.map((change, index) => {\n return has('level', change) ? (\n <DiffRenderer {...(change as Diff)} key={index} />\n ) : (\n <div className={styles.title} key={index}>\n {change.label}\n </div>\n );\n })}\n </>\n );\n};\n\nexport default DCRChangesList;\n","import {has, filter, length, pipe} from 'ramda';\n\nexport const getSuggestionsCount = pipe(filter(has('operation')), length);\n","import {\n ChangeRequest,\n DCRChanges,\n DCRObjectInfo,\n DCRObjectsInfo,\n DCRTypes,\n GroupedObjectsInfo,\n isEntityUri,\n isRelationUri\n} from '@reltio/mdm-sdk';\nimport {allPass, concat, curry, equals, filter, keys, map, pathOr, pipe, prop, uniq} from 'ramda';\n\nexport const getEntitiesObjects = filter(pipe(prop('uri'), isEntityUri));\nexport const getRelationsObjects = filter(pipe(prop('uri'), isRelationUri));\n\nconst getRelations = (objectsWithChanges: DCRObjectInfo, entityUri: string) => {\n return filter(allPass([pipe(prop('uri'), isRelationUri), pipe(prop('startObjectUri'), equals(entityUri))]))(\n objectsWithChanges\n );\n};\n\nexport const extractObjectsFromChangeRequest = (changes: DCRChanges, objectsInfo: DCRObjectsInfo): DCRObjectInfo[] => {\n const getChange = (key) => prop([key], changes);\n return pipe(\n keys,\n filter(getChange),\n map((key) => ({...objectsInfo[key], uri: key}))\n )(objectsInfo);\n};\n\nexport const createEntityRelationsObjectByEntity = curry(\n (objectsWithChanges: DCRObjectInfo, entity: GroupedObjectsInfo['entity']) => {\n return {\n entity,\n relations: getRelations(objectsWithChanges, entity.uri)\n };\n }\n);\n\nexport const createEntityRelationsObjectByRelation = curry(\n (objectsInfo: DCRObjectInfo, relation: GroupedObjectsInfo['relations'][0]) => {\n const entity = objectsInfo[relation.startObjectUri];\n const relations = [relation];\n\n return entity ? {entity: {...entity, uri: relation.startObjectUri}, relations} : {relations};\n }\n);\n\nexport const concatEntityRelationsObjects = (acc: Record<string, GroupedObjectsInfo>, object: GroupedObjectsInfo) => {\n const {entity, relations} = object;\n const {uri: entityUri} = entity;\n\n const mergedRelations = pipe(pathOr([], [entityUri, 'relations']), concat(relations), uniq)(acc);\n\n acc[entityUri] = {\n entity,\n relations: mergedRelations\n };\n\n return acc;\n};\n\nexport const getEntityUriForChangeRequest = (dcrUri: string, entityUri: string) => {\n return `${dcrUri}/changes/${entityUri}`;\n};\n\nexport const isCreateEntityOperation = (dcr: ChangeRequest) => {\n return dcr.type === DCRTypes.CREATE_ENTITY;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n boxSizing: 'border-box',\n border: '1px solid rgba(0,0,0,0.03)',\n borderRadius: '3px',\n backgroundColor: 'rgba(0,0,0,0.03)',\n padding: '10px',\n margin: '12px 16px 12px 0'\n },\n uri: {\n color: theme.palette.primary.main,\n textDecoration: 'none',\n cursor: 'pointer'\n },\n label: {\n fontSize: '12px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n showMoreLink: {\n marginTop: '8px'\n }\n}));\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, any, flatten, ifElse, propOr} from 'ramda';\nimport {DCRChanges, DCRObjectsInfo, getEntityUriForLink, getLabel, GroupedObjectsInfo} from '@reltio/mdm-sdk';\nimport {Diff, Title} from './types/diffTypes';\nimport {mergeChanges} from './helpers/mergeHelpers';\nimport ShowMoreLink from './components/ShowMoreLink/ShowMoreLink';\nimport DCRChangesList from './components/DCRChangesList/DCRChangesList';\nimport {AttributesChangesContext} from './contexts/AttributesChangesContext';\nimport {useCollapsibleList} from './hooks/useCollapsibleList';\nimport EntityUriLink from '../../../EntityUriLink/EntityUriLink';\nimport {getEntityUriForChangeRequest, isCreateEntityOperation} from '../../helpers/dcrHelpers';\nimport {useMdmMetadata} from '../../../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = {\n changes: DCRChanges;\n objectsInfo: DCRObjectsInfo;\n entityInfo: GroupedObjectsInfo['entity'];\n dcrUri: string;\n relationsInfo?: GroupedObjectsInfo['relations'];\n max?: number;\n};\n\nconst AttributesChanges = ({changes, dcrUri, objectsInfo, entityInfo, relationsInfo, max}: Props) => {\n const styles = useStyles();\n\n const metadata = useMdmMetadata();\n\n const [mergedEntityChanges, mergedRelationsChanges] = useMemo(\n () => mergeChanges(metadata, changes, entityInfo, relationsInfo),\n [metadata, changes, entityInfo, relationsInfo]\n );\n\n const changesList: (Diff | Title)[] = useMemo(() => {\n const relationshipTitle: Title = {label: i18n.text('Relationships')};\n return mergedRelationsChanges.length > 0\n ? flatten([mergedEntityChanges, relationshipTitle, mergedRelationsChanges])\n : mergedEntityChanges;\n }, [mergedEntityChanges, mergedRelationsChanges]);\n\n const {isExpanded, onToggle, itemsToShow, collapsedSuggestionsCount} = useCollapsibleList(changesList, max);\n\n const entityUri: string = ifElse(\n any(isCreateEntityOperation),\n always(getEntityUriForChangeRequest(dcrUri, entityInfo.uri)),\n always(getEntityUriForLink(entityInfo))\n )(propOr([], entityInfo.uri, changes));\n\n const screen: string = ifElse(\n any(isCreateEntityOperation),\n always('dcrReview'),\n always('profile')\n )(propOr([], entityInfo.uri, changes));\n\n return (\n <AttributesChangesContext.Provider value={objectsInfo}>\n <div className={styles.container}>\n <EntityUriLink className={styles.uri} value={entityUri} screen={screen}>\n <div className={styles.label}>{getLabel(entityInfo.label)}</div>\n </EntityUriLink>\n <DCRChangesList changes={itemsToShow} />\n {collapsedSuggestionsCount > 0 && (\n <ShowMoreLink\n onClick={onToggle}\n suggestionsCount={collapsedSuggestionsCount}\n isExpanded={isExpanded}\n className={styles.showMoreLink}\n />\n )}\n </div>\n </AttributesChangesContext.Provider>\n );\n};\n\nexport default AttributesChanges;\n","import {useCallback, useMemo, useState} from 'react';\nimport {getSuggestionsCount} from '../helpers/contextHelpers';\nimport {Diff, Title} from '../types/diffTypes';\n\nconst DEFAULT_VISIBLE_ITEMS_COUNT = 3;\n\nexport const useCollapsibleList = (items: (Diff | Title)[], limit = DEFAULT_VISIBLE_ITEMS_COUNT) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const onToggle = useCallback(() => setIsExpanded((value) => !value), []);\n\n const collapsedItems = useMemo(() => items.slice(0, limit), [items, limit]);\n const suggestionsCount = useMemo(() => getSuggestionsCount(items), [items]);\n const visibleSuggestionsCount = useMemo(() => getSuggestionsCount(collapsedItems), [collapsedItems]);\n\n const itemsToShow = isExpanded ? items : collapsedItems;\n const collapsedSuggestionsCount = suggestionsCount - visibleSuggestionsCount;\n\n return {isExpanded, onToggle, itemsToShow, collapsedSuggestionsCount};\n};\n","import {useCallback, useEffect, useState} from 'react';\nimport {flatten, has, isEmpty, map, partition, path, pipe, reduce, values} from 'ramda';\nimport {ChangeRequest, getDataChangeRequest, getEntitiesByUris, GroupedObjectsInfo} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\nimport {\n concatEntityRelationsObjects,\n createEntityRelationsObjectByEntity,\n createEntityRelationsObjectByRelation,\n extractObjectsFromChangeRequest,\n getEntitiesObjects,\n getRelationsObjects\n} from '../helpers/dcrHelpers';\nimport {showApiError} from '../helpers/errors';\n\nexport const useChangeRequest = (dcrUri: string) => {\n const [groupedObjects, setGroupedObjects] = useState<GroupedObjectsInfo[]>([]);\n const [dcr, setDcr] = useState<ChangeRequest>(null);\n const safePromise = useSafePromise();\n\n const requestEntities = useCallback((entityUris: string[]) => {\n if (isEmpty(entityUris)) {\n return Promise.resolve([]);\n }\n\n return safePromise(getEntitiesByUris(entityUris, {searchOptions: 'ovOnly', defaultMaxValues: 1}));\n }, []); // eslint-disable-line\n\n useEffect(() => {\n getDataChangeRequest(dcrUri)\n .then((dcr) => {\n const {changes, objectsInfo} = dcr;\n\n const objectsWithChanges = extractObjectsFromChangeRequest(changes, objectsInfo);\n\n const entityObjectsWithRelations: GroupedObjectsInfo[] = pipe(\n getEntitiesObjects,\n map(createEntityRelationsObjectByEntity(objectsWithChanges))\n )(objectsWithChanges);\n\n const relationsObjects: GroupedObjectsInfo[] = pipe(\n getRelationsObjects,\n map(createEntityRelationsObjectByRelation(objectsInfo))\n )(objectsWithChanges);\n\n const [relationsObjectsWithEntity, relationsObjectsWithoutEntity] = partition(\n has('entity'),\n relationsObjects\n );\n\n const entityUris: string[] = relationsObjectsWithoutEntity.map(\n path(['relations', 0, 'startObjectUri'])\n );\n\n requestEntities(entityUris)\n .then((entities) => {\n const relationsObjectsWithRequestedEntities = relationsObjectsWithoutEntity.map(\n (relationsObject, index) => {\n return {\n ...relationsObject,\n entity: entities[index]\n };\n }\n );\n\n pipe(\n flatten,\n reduce(concatEntityRelationsObjects, {}),\n values,\n setGroupedObjects\n )([\n entityObjectsWithRelations,\n relationsObjectsWithEntity,\n relationsObjectsWithRequestedEntities\n ]);\n })\n .catch(showApiError);\n\n setDcr(dcr);\n })\n .catch(showApiError);\n }, [dcrUri, requestEntities]);\n\n return {dcr, groupedObjects};\n};\n","import React from 'react';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport GenericWorkflowTaskCard from '../GenericWorkflowTaskCard/GenericWorkflowTaskCard';\nimport LineDecorator from '../../components/LineDecorator/LineDecorator';\nimport {getDCRUri} from '../../helpers';\nimport DcrTaskIcon from '../../../../icons/DcrTaskIcon';\nimport AttributesChanges from '../../components/AttributesChanges/AttributesChanges';\nimport {useChangeRequest} from '../../hooks/useChangeRequest';\n\ntype Props = {\n task: WorkflowTaskData;\n};\n\nconst DataChangeRequestTaskCard = ({task}: Props) => {\n const {objectURIs} = task;\n const dcrUri = getDCRUri(objectURIs);\n\n const {dcr, groupedObjects} = useChangeRequest(dcrUri);\n\n return (\n <GenericWorkflowTaskCard task={task} Icon={DcrTaskIcon}>\n {dcr &&\n groupedObjects.map((object, index: number) => (\n <LineDecorator key={index} last={index === groupedObjects.length - 1} divider={true}>\n <AttributesChanges\n entityInfo={object.entity}\n relationsInfo={object.relations}\n changes={dcr.changes}\n objectsInfo={dcr.objectsInfo}\n dcrUri={dcrUri}\n />\n </LineDecorator>\n ))}\n </GenericWorkflowTaskCard>\n );\n};\n\nexport default DataChangeRequestTaskCard;\n","import React from 'react';\n\nconst SvgPmTaskIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={28} height={28} viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <circle fill=\"#1976D2\" cx={14} cy={14} r={14} />\n <path\n d=\"M22.5 14L18 9.5V13h-3.5L9 7.5 7.5 9l6.04 6H18v3.5l4.5-4.5zm-11.46 1.46L7.5 19 9 20.5l3.54-3.54-1.5-1.5z\"\n fill=\"#FFF\"\n opacity={0.87}\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgPmTaskIcon;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n pmCard: {\n marginLeft: '-15px'\n }\n});\n","import React from 'react';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport GenericWorkflowTaskCard from '../GenericWorkflowTaskCard/GenericWorkflowTaskCard';\nimport LineDecorator from '../../components/LineDecorator/LineDecorator';\nimport PmTaskIcon from '../../../../icons/PmTaskIcon';\nimport {useMatchesLoader} from '../../../../hooks/useMatchesLoader';\nimport {ProfileMatchCard} from '../../../ProfileMatchCard/ProfileMatchCard';\nimport {useMdmEntity, useMdmMetadata} from '../../../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = {\n task: WorkflowTaskData;\n};\n\nconst defaultOptions = {\n showTransitiveMatches: true,\n showInactiveEntities: false\n};\n\nconst PotentialMatchTaskCard = ({task}: Props) => {\n const styles = useStyles();\n\n const entity = useMdmEntity();\n const metadata = useMdmMetadata();\n\n const {objectURIs} = task;\n const {matches, entitiesMap} = useMatchesLoader({\n enabled: !!entity.uri,\n entity,\n filter: '',\n rowsPerPage: Number.MAX_SAFE_INTEGER,\n page: 0,\n options: defaultOptions\n });\n const match = matches?.find(({object}) => objectURIs.includes(object.uri));\n\n return (\n <GenericWorkflowTaskCard task={task} Icon={PmTaskIcon}>\n {match && (\n <LineDecorator last>\n <div className={styles.pmCard}>\n <ProfileMatchCard metadata={metadata} entity={entity} match={match} entitiesMap={entitiesMap} />\n </div>\n </LineDecorator>\n )}\n </GenericWorkflowTaskCard>\n );\n};\n\nexport default PotentialMatchTaskCard;\n","import React from 'react';\n\nconst SvgDefaultTaskIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={28} height={28} viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <circle fill=\"#205191\" cx={14} cy={14} r={14} />\n <path\n d=\"M9.667 20.622c-.92 0-1.667-.744-1.667-1.662V8.99c0-.916.747-1.66 1.667-1.66h2.446A1.993 1.993 0 0114 6l.162.006a1.992 1.992 0 011.725 1.323h2.446c.92 0 1.667.745 1.667 1.662v9.97c0 .917-.747 1.661-1.667 1.661zm9-1.33V8.66h-1.334v1.993h-6.666V8.66H9.333v10.634h9.334zM15.86 14.46v1.302h-5.206V14.46h5.206zm1.494-2v1.302h-6.7V12.46h6.7zM14 7.33c.367 0 .667.298.667.664a.668.668 0 01-1.334 0c0-.366.3-.665.667-.665z\"\n fill=\"#FFF\"\n opacity={0.87}\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDefaultTaskIcon;\n","import React from 'react';\n\nconst SvgDeleteRequestTaskIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={28} height={28} viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\" opacity={0.87}>\n <circle fill=\"#0D47A1\" cx={14} cy={14} r={14} />\n <path\n d=\"M8.17 9.824v8.995c0 .886.72 1.606 1.607 1.606h8.352c.192 0 .375-.035.546-.097l1.38 1.382.804-.804-1.32-1.32-1.09-1.089-8.993-8.994-1.092-1.092-1.317-1.317-.803.803L8.17 9.824zm9.316 9.316h-8.03v-8.03l8.03 8.03zM9.777 7.575c-.192 0-.376.033-.55.094L10.42 8.86h.32v.322l1.607 1.606h4.819V8.86h1.284v8.03l1.285 1.286V9.182c0-.887-.72-1.607-1.606-1.607h-2.358a1.931 1.931 0 00-1.818-1.285 1.93 1.93 0 00-1.818 1.285H9.777zm3.533.643c0-.353.29-.643.643-.643.353 0 .642.29.642.643a.644.644 0 01-.642.642.644.644 0 01-.643-.642z\"\n fill=\"#FFF\"\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDeleteRequestTaskIcon;\n","import React from 'react';\nimport {PredefinedWorkflowProcessType, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport GenericWorkflowTaskCard from './GenericWorkflowTaskCard/GenericWorkflowTaskCard';\nimport DataChangeRequestTaskCard from './DataChangeRequestTaskCard/DataChangeRequestTaskCard';\nimport PotentialMatchTaskCard from './PotentialMatchTaskCard/PotentialMatchTaskCard';\n\nimport DefaultTaskIcon from '../../../icons/DefaultTaskIcon';\nimport DeleteRequestTaskIcon from '../../../icons/DeleteRequestTaskIcon';\n\nexport type FactoryProps = {\n task: WorkflowTaskData;\n};\n\nclass WorkflowTaskCardsFactory {\n static build = ({task}: FactoryProps) => {\n const {processType} = task;\n switch (processType) {\n case PredefinedWorkflowProcessType.dataChangeRequestReview:\n return <DataChangeRequestTaskCard task={task} />;\n case PredefinedWorkflowProcessType.potentialMatchReview:\n return <PotentialMatchTaskCard task={task} />;\n case PredefinedWorkflowProcessType.recommendForDelete:\n return <GenericWorkflowTaskCard task={task} Icon={DeleteRequestTaskIcon} />;\n default:\n return <GenericWorkflowTaskCard task={task} Icon={DefaultTaskIcon} />;\n }\n };\n}\n\nexport default WorkflowTaskCardsFactory;\n","import WorkflowTaskCardsFactory, {FactoryProps} from './WorkflowTaskCardsFactory';\n\nexport const WorkflowTaskCard = ({task}: FactoryProps) => WorkflowTaskCardsFactory.build({task});\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n popoverPaper: {\n width: '464px'\n },\n title: {\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px',\n color: theme.palette.text.primary,\n marginBottom: '17px'\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n padding: '23px 24px 14px 24px'\n },\n simpleDropDownSelector: {\n marginBottom: '20px'\n },\n inputRoot: {\n paddingTop: '0 !important',\n paddingBottom: '0 !important'\n },\n select: {\n fontSize: '14px'\n },\n footer: {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: '5px 8px 8px',\n borderTop: '1px solid rgba(0,0,0,0.12)'\n },\n cancelButton: {\n marginRight: '8px'\n },\n input: {\n fontSize: '14px'\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport TextField from '@mui/material/TextField';\nimport Portal from '@mui/material/Portal';\nimport Snackbar from '@mui/material/Snackbar';\nimport Popover from '@mui/material/Popover';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport SimpleDropDownSelector from '../../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {useWorkflowDefinitions} from '../../hooks/useWorkflowDefinitions';\nimport {useWorkflowProcessInstance} from '../../hooks/useWorkflowProcessInstance';\nimport {useStyles} from './styles';\n\ntype Props = {\n anchorEl: Element;\n onClose: () => void;\n};\n\nexport const AddWorkflowDialog = ({anchorEl, onClose}: Props) => {\n const styles = useStyles();\n\n const [comment, setComment] = useState('');\n const [taskType, setTaskType] = useState(null);\n const [isOpenSnackbar, setIsOpenSnackbar] = useState(false);\n\n const {definitions} = useWorkflowDefinitions();\n const {processInstance, loading} = useWorkflowProcessInstance();\n\n const handleChangeComment = (e) => {\n setComment(e.target.value);\n };\n\n const handleChangeTaskType = (value) => {\n setTaskType(value);\n };\n\n const handleStart = () => {\n processInstance(comment, taskType?.value)\n .then(() => {\n setIsOpenSnackbar(true);\n setComment('');\n setTaskType(null);\n onClose();\n })\n .catch(() => {});\n };\n\n const handleCloseSnackbar = () => {\n setIsOpenSnackbar(false);\n };\n\n const open = Boolean(anchorEl);\n\n return (\n <>\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n classes={{\n paper: styles.popoverPaper\n }}\n >\n <div className={styles.content}>\n <Typography className={styles.title}>{i18n.text('Add new workflow')}</Typography>\n <SimpleDropDownSelector\n className={styles.simpleDropDownSelector}\n variant=\"filled\"\n height={40}\n TextFieldProps={{\n InputProps: {\n disableUnderline: true\n }\n }}\n placeholder={i18n.text('Select task type')}\n value={taskType}\n onChange={handleChangeTaskType}\n label={''}\n options={definitions.map((definition) => {\n return {\n value: definition.type,\n label: definition.displayName\n };\n })}\n />\n <TextField\n variant=\"filled\"\n hiddenLabel\n size=\"small\"\n placeholder=\"Type a comment\"\n InputProps={{\n disableUnderline: true,\n classes: {\n input: styles.input,\n root: styles.inputRoot\n }\n }}\n value={comment}\n onChange={handleChangeComment}\n multiline={true}\n />\n </div>\n <div className={styles.footer}>\n <Button disabled={loading} className={styles.cancelButton} onClick={onClose}>\n {i18n.text('Cancel')}\n </Button>\n <Button disabled={loading} color=\"primary\" onClick={handleStart}>\n {i18n.text('Start')}\n </Button>\n </div>\n </Popover>\n <Portal container={document.body}>\n <Snackbar\n open={isOpenSnackbar}\n autoHideDuration={5000}\n onClose={handleCloseSnackbar}\n message={i18n.text('A new workflow has started')}\n anchorOrigin={{vertical: 'bottom', horizontal: 'center'}}\n />\n </Portal>\n </>\n );\n};\n","import {useEffect, useState} from 'react';\nimport {processDefinitions} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\nimport {useMdmEntity, useMdmTenant, useMdmWorkflowEnvironmentUrl, useMdmWorkflowPath} from '../../../contexts';\n\nconst filterDefinitions = (definitions, entityType) => {\n return definitions.filter(({manualStart, objectTypes}) => {\n return manualStart && (!objectTypes || objectTypes?.some((_entityType) => _entityType === entityType));\n });\n};\n\nexport const useWorkflowDefinitions = () => {\n const [definitions, setDefinitions] = useState([]);\n const workflowPath = useMdmWorkflowPath();\n const environment = useMdmWorkflowEnvironmentUrl();\n const tenant = useMdmTenant();\n const entity = useMdmEntity();\n const entityType = entity.type;\n const safePromise = useSafePromise();\n\n useEffect(() => {\n safePromise(processDefinitions({workflowPath, environment, tenant})).then(({data}) => {\n if (!data) {\n return;\n }\n setDefinitions(filterDefinitions(data, entityType));\n });\n }, [entityType, workflowPath, environment, tenant]);\n\n return {definitions};\n};\n","import {useCallback, useContext, useState} from 'react';\nimport {startProcessInstance} from '@reltio/mdm-sdk';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\nimport {useMdmEntity, useMdmTenant, useMdmWorkflowEnvironmentUrl, useMdmWorkflowPath} from '../../../contexts';\n\nexport const useWorkflowProcessInstance = () => {\n const [loading, setLoading] = useState(false);\n\n const {loadTasks} = useContext(WorkflowTasksContext);\n\n const workflowPath = useMdmWorkflowPath();\n const environment = useMdmWorkflowEnvironmentUrl();\n const tenant = useMdmTenant();\n const entity = useMdmEntity();\n\n const entityUri = entity.uri;\n\n const processInstance = useCallback(\n (comment, taskType) => {\n setLoading(true);\n\n return startProcessInstance({\n workflowPath,\n tenant,\n environment,\n processType: taskType,\n comment,\n objectURIs: [entityUri]\n })\n .then(() => {\n loadTasks();\n })\n .catch((error) => {\n showWorkflowError(error);\n throw error;\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [entityUri, environment, loadTasks, tenant, workflowPath]\n );\n\n return {processInstance, loading};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n button: {\n padding: '9px 16px 9px 12px',\n marginLeft: 'auto',\n marginRight: '8px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n }\n});\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport AddIcon from '@mui/icons-material/Add';\nimport {useWorkflowCheckPermission} from '../../hooks/useWorkflowCheckPermission';\nimport {AddWorkflowDialog} from '../AddWorkflowDialog/AddWorkflowDialog';\nimport {useStyles} from './styles';\n\nexport const AddWorkflowButton = () => {\n const styles = useStyles();\n const [anchorEl, setAnchorEl] = useState(null);\n\n const checkWorkflowPermission = useWorkflowCheckPermission();\n const canStartProcess = checkWorkflowPermission('START_PROCESS_INSTANCE');\n const canViewProcessDefinitions = checkWorkflowPermission('VIEW_PROCESS_DEFINITIONS');\n\n const handleOpen = (e) => setAnchorEl(e.currentTarget);\n const handleClose = () => setAnchorEl(null);\n\n return canStartProcess && canViewProcessDefinitions ? (\n <>\n <Button color=\"primary\" className={styles.button} onClick={handleOpen}>\n <AddIcon className={styles.icon} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n <AddWorkflowDialog anchorEl={anchorEl} onClose={handleClose} />\n </>\n ) : null;\n};\n","import React from 'react';\nimport {partition, propEq} from 'ramda';\nimport Button from '@mui/material/Button';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useWorkflowActions} from '../../hooks/useWorkflowActions';\n\ntype Props = {\n task: WorkflowTaskData;\n};\nexport const TaskActionButtons = ({task}: Props) => {\n const {taskId, possibleActions, assignee, isOpen, preferredAction} = task;\n\n const {actions, actionRequestIsInProgress: disabled} = useWorkflowActions({\n taskId,\n possibleActions,\n assignee,\n isOpen\n });\n\n const [preferredActions, otherActions] = partition(propEq('text', preferredAction.label), actions);\n return (\n <>\n {otherActions.map((action) => (\n <Button variant=\"outlined\" onClick={action.onClick} key={action.text} disabled={disabled}>\n {action.text}\n </Button>\n ))}\n {preferredActions.map((action) => (\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={action.onClick}\n key={action.text}\n disabled={disabled}\n >\n {action.text}\n </Button>\n ))}\n </>\n );\n};\n","import {useCallback, useEffect, useState} from 'react';\nimport {filter, flatten, isNil, map, mergeLeft, pipe, prop, propEq, reject, uniqBy, when} from 'ramda';\nimport {getEntityUriFromDCRUri, getTasksForEntity, isDCRUri, isTempUri, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks/useSafePromise';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\nimport {\n useMdmEntityUri,\n useMdmIsEditableMode,\n useMdmIsWorkflowEnabled,\n useMdmProfileLastLoadedTime,\n useMdmTenant,\n useMdmWorkflowEnvironmentUrl,\n useMdmWorkflowPath\n} from '../../../contexts';\n\ntype Config = {\n processTypes?: string[];\n assignee?: string;\n showClosedTasks?: boolean;\n};\n\nexport const useWorkflowTasks = (config?: Config) => {\n const {processTypes, assignee, showClosedTasks} = config || {};\n\n const [tasks, setTasks] = useState<WorkflowTaskData[]>(null);\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n\n const safePromise = useSafePromise();\n const checkWorkflowPermission = useWorkflowCheckPermission();\n\n const workflowPath = useMdmWorkflowPath();\n const environment = useMdmWorkflowEnvironmentUrl();\n const isWorkflowEnabled = useMdmIsWorkflowEnabled();\n const tenant = useMdmTenant();\n const entityUri = useMdmEntityUri();\n const isEditableMode = useMdmIsEditableMode();\n const entityLastLoadedTime = useMdmProfileLastLoadedTime();\n\n const canViewTasks = checkWorkflowPermission('VIEW_TASKS');\n const enabled = !!(workflowPath && environment) && isWorkflowEnabled && canViewTasks;\n\n const loadTasks = useCallback(() => {\n setLoading(true);\n const parsedProcessTypes = !Array.isArray(processTypes) || processTypes.includes('*') ? null : processTypes;\n const requests = (parsedProcessTypes || [null]).map((processType) =>\n getTasksForEntity({\n entityUri: isDCRUri(entityUri) ? getEntityUriFromDCRUri(entityUri) : entityUri,\n workflowPath,\n environment,\n tenant,\n filter: {assignee, processType},\n includeClosed: !!showClosedTasks\n })\n );\n safePromise(Promise.all(requests))\n .then((responses) => {\n const tasks: WorkflowTaskData[] = pipe(\n map(prop('data')),\n reject(isNil),\n flatten,\n uniqBy(prop('taskId')),\n filter(isRequestedTask(parsedProcessTypes, assignee))\n )(responses);\n setTasks(tasks);\n setTotal(tasks.length);\n })\n .catch((error) => {\n console.warn('Workflow error', error);\n })\n .finally(() => {\n setLoading(false);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n entityUri,\n environment,\n safePromise,\n tenant,\n workflowPath,\n assignee,\n showClosedTasks,\n processTypes,\n entityLastLoadedTime\n ]);\n\n useEffect(() => {\n if (entityUri && enabled && !isTempUri(entityUri)) {\n loadTasks();\n } else {\n setTasks(null);\n setTotal(0);\n }\n }, [enabled, entityUri, loadTasks, isEditableMode]);\n\n const updateTaskState = useCallback((taskId: WorkflowTaskData['taskId'], payload: Partial<WorkflowTaskData>) => {\n setTasks(map(when(propEq('taskId', taskId), mergeLeft(payload))));\n }, []);\n\n return {\n tasks,\n total,\n loading,\n updateTaskState,\n loadTasks\n };\n};\n\nconst isRequestedTask = (processTypes: string[], assignee: string) => (task: WorkflowTaskData) =>\n (!processTypes || processTypes.includes(task.processType)) && (!assignee || assignee === task.assignee);\n","export const MAP_DRAWING_MODES = {\n CIRCLE: 'circle',\n POLYGON: 'polygon'\n};\n\nexport const DEFAULT_OVERLAY_OPTIONS = {\n fillColor: 'rgb(242,82,82)',\n fillOpacity: 0.1,\n strokeWeight: 2,\n strokeColor: '#F25252',\n clickable: false,\n editable: true,\n zIndex: 1\n};\n\nexport const DEFAULT_GOOGLE_MAP_OPTIONS = {\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: false\n};\n\nexport const MAP_MINIMUM_SCALE_RADIUS = 0.001;\n","import React from 'react';\n\ntype Value = {\n activeEntityUri?: string;\n};\n\nexport const EntityMarkerContext = React.createContext<Value>({});\nEntityMarkerContext.displayName = 'EntityMarkerContext';\n","import React from 'react';\nimport {InterceptHandlers} from '@reltio/mdm-sdk';\n\nexport const InterceptHandlersContext = React.createContext<InterceptHandlers>({});\n\nInterceptHandlersContext.displayName = 'InterceptHandlersContext';\n","import React from 'react';\nimport {QxSandboxApi} from '@reltio/mdm-sdk';\n\nexport const SandboxAPIContext = React.createContext<QxSandboxApi>({\n getCurrentPerspectiveId: () => '',\n setEntityUri: () => {},\n showPerspective: () => {}\n});\n","import {\n CustomActionExtension,\n CustomActionViewConfig,\n CustomScriptExtension,\n getAccessToken,\n RequestAction,\n sendRequestFromCustomSandbox,\n sendWorkflowRequest,\n startProcessFromQuery,\n Entity\n} from '@reltio/mdm-sdk';\nimport {ProcessRequestParams} from './types';\n\ntype Config = CustomActionExtension | CustomActionViewConfig | CustomScriptExtension;\n\nconst validateParams = (validationUrl: string, permissions?: string[]) => {\n if (!validationUrl) return {errorMessage: 'URL is empty'};\n const allowed = permissions?.some((permission) => {\n const urlOrigin = validationUrl.match(/^(https?:\\/\\/[^:/?#]*).*$/)?.[1];\n const permRegex = new RegExp('^' + permission + '$');\n const decodedPerm = permission.replace(/\\/*$/, '');\n return (\n decodedPerm === validationUrl ||\n (urlOrigin && urlOrigin === decodedPerm) ||\n (decodedPerm?.startsWith('/') && validationUrl?.startsWith(decodedPerm)) ||\n (permission && permRegex.test(validationUrl))\n );\n });\n\n if (!allowed || (permissions?.length || 0) === 0) {\n return {errorMessage: 'Not enough permissions'};\n }\n return false;\n};\n\nconst getAuthHeaders = async (headers: Record<string, string>, servicesPath: string) => {\n const {accessToken} = await getAccessToken({servicesPath});\n return accessToken ? {...headers, Authorization: `Bearer ${accessToken}`} : headers;\n};\n\nexport const processRequest = ({\n params,\n permissions,\n worker,\n metadata,\n config,\n apiPath,\n servicesPath,\n user,\n workflowPath,\n entity,\n tenant,\n entityUri,\n query,\n openSearch,\n environment,\n getCurrentPerspectiveId,\n showPerspective,\n workflowCheckPermission,\n setEntityUri\n}: ProcessRequestParams) => {\n const {name, url, data, method, validationUrl} = params;\n\n const processFromQuery = () => {\n if (!params.processDefinitionId) {\n return new Promise((resolve) => resolve({errorMessage: 'processDefinitionId is empty'}));\n }\n if (!params.searchString) {\n return new Promise((resolve) => resolve({errorMessage: 'searchString is empty'}));\n }\n if (!workflowPath) {\n return new Promise((resolve) => resolve({errorMessage: 'Workflow path is not defined'}));\n }\n const errors = validateParams('/processInstances/_generateFromQuery', permissions);\n if (errors) {\n return new Promise((resolve) => resolve(errors));\n }\n\n return startProcessFromQuery({\n workflowPath,\n processType: params.processDefinitionId,\n searchString: params.searchString,\n tenant,\n environment\n });\n };\n\n const workflowRequest = async () => {\n const errors = validateParams(validationUrl, permissions);\n if (errors) {\n return errors;\n }\n const isExternalUrl = url.includes('http:') || url.includes('https:');\n if (!workflowPath && !isExternalUrl) {\n return {errorMessage: 'Workflow path is not defined'};\n }\n const headers = await getAuthHeaders(params.headers, servicesPath);\n return await sendWorkflowRequest({url, method, data, tenant, headers, workflowPath});\n };\n\n const sendApiRequest = async () => {\n const errors = validateParams(validationUrl, permissions);\n if (errors) {\n return Promise.reject(errors);\n }\n const headers = await getAuthHeaders(params.headers, servicesPath);\n return await sendRequestFromCustomSandbox({\n url,\n method,\n data,\n headers,\n noRequestProcessor: true,\n noRetry: true\n });\n };\n\n const handleRequest = (request: Promise<any>) => {\n request\n .then((response) => (response.json ? response.json() : response))\n .then((data) => {\n worker.postMessage({\n action: 'response',\n result: {\n data: JSON.parse(JSON.stringify(data)),\n headers: params.headers,\n status: 200\n },\n ...params\n });\n })\n .catch((error) => {\n worker.postMessage({\n action: 'response',\n result: {\n data: JSON.parse(JSON.stringify(error)),\n headers: params.headers,\n status: 0\n },\n ...params\n });\n });\n };\n\n switch (name) {\n case RequestAction.API: {\n const request = sendApiRequest();\n handleRequest(request);\n break;\n }\n case RequestAction.WORKFLOW: {\n const request = workflowRequest();\n handleRequest(request);\n break;\n }\n case RequestAction.WORKFLOW_START_PROCESS_FROM_QUERY: {\n const request = processFromQuery();\n handleRequest(request);\n break;\n }\n case RequestAction.GET_CONFIGURATION: {\n worker.postMessage({action: 'response', result: metadata, ...params});\n break;\n }\n case RequestAction.GET_UI_CONFIGURATION: {\n const response = {...config, action: {...config.action}};\n if (response.action.permissions) {\n delete response.action.permissions;\n }\n worker.postMessage({action: 'response', result: response, ...params});\n break;\n }\n case RequestAction.SET_ENTITY_URI: {\n const listener = (newEntity: Entity) =>\n worker.postMessage({action: 'response', result: newEntity, ...params});\n setEntityUri(params.entityUri, listener);\n break;\n }\n case RequestAction.SET_PERSPECTIVE: {\n showPerspective(params.perspective);\n worker.postMessage({\n action: 'response',\n result: getCurrentPerspectiveId(),\n ...params\n });\n break;\n }\n case RequestAction.GET_PERSPECTIVE: {\n if (getCurrentPerspectiveId) {\n worker.postMessage({\n action: 'response',\n result: getCurrentPerspectiveId(),\n ...params\n });\n }\n break;\n }\n case RequestAction.WORKFLOW_CHECK_PERMISSION: {\n worker.postMessage({\n action: 'response',\n result: workflowCheckPermission(params.permission),\n ...params\n });\n break;\n }\n case RequestAction.GET_SEARCH_QUERY: {\n worker.postMessage({action: 'response', result: query, ...params});\n break;\n }\n case RequestAction.OPEN_SEARCH: {\n openSearch({viewId: (config as Config).id, searchState: params.searchState || {}});\n break;\n }\n case RequestAction.GET_ENTITY_URI: {\n worker.postMessage({action: 'response', result: entityUri, ...params});\n break;\n }\n case RequestAction.GET_ENTITY: {\n worker.postMessage({action: 'response', result: entity, ...params});\n break;\n }\n case RequestAction.GET_API_PATH: {\n worker.postMessage({action: 'response', result: apiPath, ...params});\n break;\n }\n case RequestAction.WORKFLOW_GET_WORKFLOW_PATH: {\n worker.postMessage({action: 'response', result: workflowPath, ...params});\n break;\n }\n case RequestAction.GET_TENANT: {\n worker.postMessage({action: 'response', result: tenant, ...params});\n break;\n }\n case RequestAction.GET_USER: {\n worker.postMessage({action: 'response', result: user, ...params});\n break;\n }\n case RequestAction.ALERT: {\n worker.postMessage({\n action: 'response',\n result: window.alert(params.text),\n ...params\n });\n break;\n }\n case RequestAction.CONFIRM: {\n worker.postMessage({\n action: 'response',\n result: window.confirm(params.text),\n ...params\n });\n break;\n }\n case RequestAction.PROMPT: {\n worker.postMessage({\n action: 'response',\n result: window.prompt(params.text, params.defaultText || ''),\n ...params\n });\n break;\n }\n case RequestAction.OPEN_WINDOW: {\n window.open(params.url, '_blank');\n break;\n }\n case RequestAction.RELOAD_PAGE: {\n location.reload();\n break;\n }\n }\n};\n","import {\n CustomActionTask,\n CustomActionTaskParams,\n CustomScript,\n CustomScriptPlatform,\n RequestAction,\n RequestHandler,\n ResponseHandler,\n isEmptyValue\n} from '@reltio/mdm-sdk';\nimport {nanoid} from 'nanoid';\n\nexport const isValidCustomScript = (config?: CustomScript) => {\n const {files, platform} = config || {};\n return !isEmptyValue(files) && platform !== CustomScriptPlatform.CLASSIC;\n};\n\nexport const isURLtoProcess = (url: string, processApi: string[] = []) => {\n return processApi.some((request) => {\n const regExp = new RegExp(`^${request}$`);\n return request.replace(/\\/*$/, '') === url || (request && regExp.test(url));\n });\n};\n\nexport const getWorkerURL = (uiPath: string, tenant: string) => {\n return `${uiPath.replace(`${tenant}/`, '')}worker_api.js`;\n};\n\nexport const getRequestFakeUrl = (url: string, apiPath: string, reltioPath: string, tenant: string) => {\n return url.startsWith(apiPath) ? `${reltioPath}${url.replace(apiPath, '')}` : `${reltioPath}/api/${tenant}${url}`;\n};\n\nexport const getResponseFakeUrl = (url: string, apiPath: string, reltioPath: string) => {\n return `${reltioPath}${url.replace(apiPath, '')}`;\n};\n\nexport const getProcessedTask = (task: CustomActionTask, apiPath: string, reltioPath: string, tenant: string) => {\n const {url, name} = task.params as CustomActionTaskParams;\n if (!url) {\n return task;\n }\n const isApiAction = name === RequestAction.API;\n const isGlobalUrl = url.startsWith('/') && !url.startsWith(apiPath);\n const newUrl = isGlobalUrl && isApiAction ? `${apiPath}/api/${tenant}${url}` : url.replace(reltioPath, apiPath);\n\n return {\n ...task,\n params: {\n ...(task.params as CustomActionTaskParams),\n url: newUrl,\n validationUrl: url\n }\n };\n};\n\nexport const getFilesWithArrayBuffer = (files: FileList) => {\n const readFilePromises = Array.from(files).map((file) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (event) => {\n const content = event.target.result;\n const {lastModified, name, size, type} = file;\n resolve({lastModified, name, size, type, content});\n };\n reader.onerror = (error) => {\n reject(error);\n };\n reader.readAsArrayBuffer(file);\n });\n });\n return Promise.all(readFilePromises);\n};\n\nconst processInnerHtml = (parent: HTMLElement, worker: Worker, setTooltip) => {\n let handlersToReset = [];\n const uiActions = parent.getAttribute('ui-actions');\n const uiTooltip = parent.getAttribute('ui-tooltip');\n const id = parent.getAttribute('id') || parent.getAttribute('name');\n if (uiActions) {\n uiActions.split(',').forEach((uiAction) => {\n const handler = (event: Event) => {\n const target = event.target as HTMLInputElement;\n const postEventMessage = (files?) => {\n worker.postMessage({\n action: 'event',\n type: 'uiAction',\n data: {type: uiAction, id, event: {...event, files}}\n });\n };\n if (target.files?.length) {\n getFilesWithArrayBuffer(target.files).then(postEventMessage);\n } else {\n postEventMessage();\n }\n };\n parent.addEventListener(uiAction, handler);\n handlersToReset.push(() => {\n parent.removeEventListener(uiAction, handler);\n });\n });\n parent.removeAttribute('ui-actions');\n }\n if (uiTooltip) {\n setTooltip(uiTooltip);\n }\n parent.childNodes.forEach((child) => {\n if (child.nodeType === 1) {\n //Node.ELEMENT_NODE\n handlersToReset = handlersToReset.concat(processInnerHtml(child as HTMLElement, worker, setTooltip));\n }\n });\n return handlersToReset;\n};\n\ntype ResetHTMLParams = {\n worker: Worker;\n setTooltip: any;\n html?: string;\n innerText?: string;\n setListenersToReset: any;\n setHtml: any;\n};\n\nexport const resetHtml = ({worker, setTooltip, innerText, html, setListenersToReset, setHtml}: ResetHTMLParams) => {\n const docBlock = document.createElement('div');\n docBlock.innerHTML = html || innerText;\n\n const handlersToReset = processInnerHtml(docBlock, worker, setTooltip);\n setListenersToReset(handlersToReset);\n setHtml(docBlock);\n};\n\nexport const setUpRequestInterceptor = ({\n apiPath,\n reltioPath,\n tenant,\n processApiRequest,\n workerRef,\n setRequestListeners\n}): RequestHandler<RequestInit & CustomActionTaskParams> => {\n return ({url, next, resolve, options = {}}) => {\n const fakeURL = getRequestFakeUrl(url, apiPath, reltioPath, tenant);\n const isProcessableUrl = isURLtoProcess(fakeURL, processApiRequest);\n if (isProcessableUrl) {\n const requestId = nanoid();\n setRequestListeners(options, next, requestId, resolve);\n workerRef.current.postMessage({\n action: 'apiRequest',\n id: requestId,\n url: fakeURL,\n method: options.method,\n headers: options.headers,\n data: options.body\n });\n } else {\n next(url, options);\n }\n };\n};\n\nexport const setUpResponseInterceptor = ({\n reltioPath,\n apiPath,\n processApiResponse,\n workerRef,\n setResponseListeners\n}): ResponseHandler<RequestInit & CustomActionTaskParams> => {\n return ({url, response, next, options, abort}) => {\n const fakeURL = getResponseFakeUrl(url, apiPath, reltioPath);\n const isProcessableUrl = isURLtoProcess(fakeURL, processApiResponse);\n if (isProcessableUrl) {\n const responseId = nanoid();\n response\n .json()\n .then((data) => {\n setResponseListeners(next, responseId);\n workerRef.current.postMessage({\n action: 'apiResponse',\n id: responseId,\n url: fakeURL,\n method: options.method,\n data\n });\n })\n .catch((error) => {\n abort(error);\n });\n } else {\n next(response);\n }\n };\n};\n","const defaultAttributes = [\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'allowReorder',\n 'alphabetic',\n 'amplitude',\n 'arabic-form',\n 'ascent',\n 'attributeName',\n 'attributeType',\n 'autoReverse',\n 'azimuth',\n 'baseFrequency',\n 'baseline-shift',\n 'baseProfile',\n 'bbox',\n 'begin',\n 'bias',\n 'by',\n 'calcMode',\n 'cap-height',\n 'checked',\n 'class',\n 'clip',\n 'clipPathUnits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'contentScriptType',\n 'contentStyleType',\n 'cursor',\n 'cx',\n 'cy',\n 'd',\n 'decelerate',\n 'descent',\n 'diffuseConstant',\n 'direction',\n 'disabled',\n 'display',\n 'divisor',\n 'dominant-baseline',\n 'dur',\n 'dx',\n 'dy',\n 'edgeMode',\n 'elevation',\n 'enable-background',\n 'end',\n 'exponent',\n 'externalResourcesRequired',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterRes',\n 'filterUnits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'format',\n 'from',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'hanging',\n 'height',\n 'horiz-adv-x',\n 'horiz-origin-x',\n 'id',\n 'ideographic',\n 'image-rendering',\n 'in',\n 'in2',\n 'intercept',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'kerning',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lang',\n 'lengthAdjust',\n 'letter-spacing',\n 'lighting-color',\n 'limitingConeAngle',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'mask',\n 'maskContentUnits',\n 'maskUnits',\n 'mathematical',\n 'max',\n 'media',\n 'method',\n 'min',\n 'mode',\n 'name',\n 'numOctaves',\n 'offset',\n 'opacity',\n 'operator',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'overline-position',\n 'overline-thickness',\n 'panose-1',\n 'paint-order',\n 'path',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointer-events',\n 'points',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'r',\n 'radius',\n 'refX',\n 'refY',\n 'rendering-intent',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'restart',\n 'result',\n 'rotate',\n 'rx',\n 'ry',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'slope',\n 'spacing',\n 'specularConstant',\n 'specularExponent',\n 'speed',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stemh',\n 'stemv',\n 'stitchTiles',\n 'stop-color',\n 'stop-opacity',\n 'strikethrough-position',\n 'strikethrough-thickness',\n 'string',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'style',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'target',\n 'targetX',\n 'targetY',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textLength',\n 'to',\n 'transform',\n 'type',\n 'u1',\n 'u2',\n 'underline-position',\n 'underline-thickness',\n 'unicode',\n 'unicode-bidi',\n 'unicode-range',\n 'units-per-em',\n 'v-alphabetic',\n 'v-hanging',\n 'v-ideographic',\n 'v-mathematical',\n 'values',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'viewBox',\n 'viewTarget',\n 'visibility',\n 'width',\n 'widths',\n 'word-spacing',\n 'writing-mode',\n 'x',\n 'x-height',\n 'x1',\n 'x2',\n 'xChannelSelector',\n 'y',\n 'y1',\n 'y2',\n 'yChannelSelector',\n 'z',\n 'zoomAndPan'\n];\n\nconst defaultTags = [\n 'animate',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'mpath',\n 'set',\n 'circle',\n 'ellipse',\n 'line',\n 'polygon',\n 'polyline',\n 'rect',\n 'defs',\n 'glyph',\n 'g',\n 'marker',\n 'mask',\n 'missing-glyph',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'font',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'hkern',\n 'vkern',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'feDistantLight',\n 'fePointLight',\n 'feSpotLight',\n 'circle',\n 'ellipse',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'defs',\n 'g',\n 'svg',\n 'symbol',\n 'use',\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'glyph',\n 'glyphRef',\n 'textPath',\n 'text',\n 'tref',\n 'tspan',\n 'altGlyph',\n 'textPath',\n 'tref',\n 'tspan',\n 'clipPath',\n 'color-profile',\n 'cursor',\n 'filter',\n 'foreignObject',\n 'script',\n 'style',\n 'view'\n];\n\nexport default {\n attributes: {\n '*': [...defaultAttributes, 'ui-actions', 'ui-tooltip'],\n img: ['src', 'srcset', 'alt', 'title', 'loading'],\n link: ['href', 'rel'],\n iframe: ['src'],\n a: ['href']\n },\n tags: [...defaultTags, 'a', 'link', 'input', 'button', 'iframe', 'img']\n};\n","import sanitizeHtml, {IOptions} from 'sanitize-html';\nimport sanitizeOptions from './helpers/sanitizerOptions';\n\nexport const useHtmlSanitizer = () => {\n const {allowedAttributes, allowedTags} = sanitizeHtml.defaults;\n const {attributes, tags} = sanitizeOptions;\n const options: IOptions = {\n allowedTags: allowedTags.concat(tags),\n allowedAttributes: {...allowedAttributes, ...attributes},\n allowVulnerableTags: true\n };\n return (html: string) => sanitizeHtml(html, options);\n};\n","import {CSSProperties, useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport {\n CustomAction,\n CustomActionExtension,\n CustomActionTaskParams,\n CustomActionViewConfig,\n CustomScriptPlatform,\n Entity,\n initializeWebWorker,\n isEmptyValue,\n ProcessParams\n} from '@reltio/mdm-sdk';\nimport {omit} from 'ramda';\nimport {useWorkflowCheckPermission} from '../../components/workflow';\nimport {useHtmlSanitizer} from '../useHtmlSanitizer';\nimport {\n InterceptHandlersContext,\n SandboxAPIContext,\n SnackbarContext,\n useMdmAction,\n useMdmApiPath,\n useMdmEntity,\n useMdmEntityUri,\n useMdmIsEditableMode,\n useMdmMetadata,\n useMdmReltioPath,\n useMdmSearchProviderData,\n useMdmServicesPath,\n useMdmTenant,\n useMdmUiPath,\n useMdmUser,\n useMdmWorkflowEnvironmentUrl,\n useMdmWorkflowPath\n} from '../../contexts';\nimport {processRequest} from './API';\nimport {\n getWorkerURL,\n isValidCustomScript,\n resetHtml,\n getProcessedTask,\n setUpRequestInterceptor,\n setUpResponseInterceptor\n} from './helpers';\n\ntype Config = CustomActionViewConfig | CustomActionExtension;\n\nexport const useAPI = (config: Config = {} as Config) => {\n const {processApiRequest, processApiResponse, platform} = config.action || {};\n const [html, setHtml] = useState<HTMLElement>();\n const [listenersToReset, setListenersToReset] = useState<Array<() => void>>([]);\n const [popupListenersToReset, setPopupListenersToReset] = useState<Array<() => void>>([]);\n const [visible, setVisible] = useState(true);\n const [popup, setPopup] = useState<HTMLElement>();\n const [tooltip, setTooltip] = useState<string>(null);\n const [customStyles, setCustomStyles] = useState<{\n height?: number | string;\n width?: number | string;\n pointerEvents?: CSSProperties['pointerEvents'];\n }>({});\n const workerRef = useRef<Worker>();\n const requestListeners = useRef({});\n const responseListeners = useRef({});\n const sanitizeHtml = useHtmlSanitizer();\n\n const openSearch = useMdmAction('openSearch');\n const uiPath = useMdmUiPath();\n const tenant = useMdmTenant();\n const workerUrl = getWorkerURL(uiPath, tenant);\n\n const showSnackbarMessage = useContext(SnackbarContext);\n const qxApi = useContext(SandboxAPIContext);\n const interceptHandlers = useContext(InterceptHandlersContext);\n\n const workflowCheckPermission = useWorkflowCheckPermission();\n\n const metadata = useMdmMetadata() || {};\n const entity = useMdmEntity() || ({} as Entity);\n const apiPath = useMdmApiPath();\n const servicesPath = useMdmServicesPath();\n const reltioPath = useMdmReltioPath();\n const workflowPath = useMdmWorkflowPath();\n const user = useMdmUser();\n const entityUri = useMdmEntityUri();\n const isEditableMode = useMdmIsEditableMode();\n const environment = useMdmWorkflowEnvironmentUrl();\n const {type: typeSearch, data: search} = useMdmSearchProviderData() || {};\n const searchQuery = typeSearch === 'search' ? search?.query : null;\n\n let innerText = '';\n let popupText = '';\n const process = ({task, worker}: ProcessParams) => {\n if (task) {\n switch (task.action) {\n case CustomAction.SET_HTML: {\n const sanitizedHtml = sanitizeHtml((task.params as CustomActionTaskParams).html);\n if ((task.params as CustomActionTaskParams).id) {\n const elem = document.getElementById((task.params as CustomActionTaskParams).id as string);\n if (elem) elem.innerHTML = sanitizedHtml;\n } else if (innerText !== sanitizedHtml) {\n innerText = sanitizedHtml;\n resetHtml({\n worker,\n setTooltip,\n html: sanitizedHtml,\n innerText,\n setListenersToReset,\n setHtml\n });\n }\n break;\n }\n case CustomAction.SHOW_POPUP: {\n const sanitizedPopup = sanitizeHtml(task.params as string);\n popupText = sanitizedPopup;\n resetHtml({\n worker,\n setTooltip,\n html: sanitizedPopup,\n innerText: popupText,\n setListenersToReset: setPopupListenersToReset,\n setHtml: setPopup\n });\n break;\n }\n case CustomAction.HIDE_POPUP: {\n popupText = '';\n setPopup(null);\n break;\n }\n case CustomAction.SET_VISIBILITY: {\n if (task.params === 'visible') {\n setVisible(true);\n resetHtml({\n worker,\n setTooltip,\n innerText,\n setListenersToReset,\n setHtml\n });\n } else {\n setVisible(false);\n }\n break;\n }\n case CustomAction.SET_TOOLTIP: {\n setTooltip(task.params as string);\n break;\n }\n case CustomAction.SET_HEIGHT: {\n setCustomStyles((prev) => ({\n ...prev,\n height: task.params as string | number\n }));\n break;\n }\n case CustomAction.SET_WIDTH: {\n setCustomStyles((prev) => ({\n ...prev,\n width: task.params as string | number\n }));\n break;\n }\n case CustomAction.SET_ENABLED: {\n setCustomStyles((prev) =>\n task.params ? omit(['pointer-events'], prev) : {...prev, 'pointer-events': 'none'}\n );\n break;\n }\n case CustomAction.LOG: {\n console.log(task.params); //eslint-disable-line no-console\n break;\n }\n case CustomAction.MESSAGE: {\n showSnackbarMessage(task.params as string);\n break;\n }\n case CustomAction.REQUEST: {\n const processedTask = getProcessedTask(task, apiPath, reltioPath, tenant);\n processRequest({\n params: processedTask.params as CustomActionTaskParams,\n permissions: config.action.permissions,\n worker,\n metadata,\n config: config as Config,\n user,\n servicesPath,\n apiPath: reltioPath,\n tenant,\n workflowPath,\n entity,\n entityUri,\n environment,\n query: searchQuery,\n openSearch,\n workflowCheckPermission,\n ...qxApi\n });\n break;\n }\n case CustomAction.RETURN_PROCESSED_API_RESPONSE: {\n const {id, data} = task.params as CustomActionTaskParams;\n if (responseListeners.current[id]) {\n responseListeners.current[id].next(data);\n responseListeners.current = omit([id], responseListeners.current);\n }\n break;\n }\n case CustomAction.RETURN_PROCESSED_API_REQUEST: {\n const {id, data} = task.params as CustomActionTaskParams;\n if (requestListeners.current[id]) {\n requestListeners.current[id].resolve(data);\n requestListeners.current = omit([id], requestListeners.current);\n }\n break;\n }\n }\n }\n };\n\n const setRequestListeners = (options, next, requestId, resolve) => {\n requestListeners.current = {\n ...requestListeners.current,\n [requestId]: {options, next, id: requestId, resolve}\n };\n };\n\n const setResponseListeners = (next, responseId) => {\n responseListeners.current = {\n ...responseListeners.current,\n [responseId]: {next}\n };\n };\n\n const requestInterceptor = setUpRequestInterceptor({\n apiPath,\n reltioPath,\n tenant,\n processApiRequest,\n workerRef,\n setRequestListeners\n });\n const responseInterceptor = setUpResponseInterceptor({\n reltioPath,\n apiPath,\n processApiResponse,\n workerRef,\n setResponseListeners\n });\n\n const postEventMessage = (type: string, data: unknown) => {\n workerRef.current?.postMessage({action: 'event', type, data});\n };\n\n const pendingInterceptors = useRef(false);\n\n const needDelayedRequestForInterceptors =\n interceptHandlers &&\n !isEmptyValue(config.action) &&\n platform !== CustomScriptPlatform.CLASSIC &&\n (processApiRequest || processApiResponse);\n\n if (needDelayedRequestForInterceptors) {\n if (!pendingInterceptors.current && !workerRef.current) {\n interceptHandlers.startInterceptorInit();\n pendingInterceptors.current = true;\n }\n }\n\n useEffect(() => {\n if (isValidCustomScript(config.action)) {\n workerRef.current = initializeWebWorker(workerUrl, process, config);\n if (pendingInterceptors.current) {\n interceptHandlers.finishInterceptorInit();\n pendingInterceptors.current = false;\n }\n postEventMessage('updateEntity', entity);\n }\n }, [entity, config]);\n\n useEffect(() => {\n postEventMessage('editMode', isEditableMode);\n }, [isEditableMode]);\n\n useEffect(() => {\n postEventMessage('changeSearchQuery', searchQuery);\n }, [searchQuery]);\n\n useEffect(() => {\n postEventMessage('changeVisibility', visible);\n }, [visible]);\n\n useEffect(\n () => () => {\n listenersToReset.forEach((listener) => listener());\n },\n [listenersToReset]\n );\n //we need to have separate handlers in opposite case main window listeners will be removed on the popup appear\n useEffect(\n () => () => {\n popupListenersToReset.forEach((listener) => listener());\n },\n [popupListenersToReset, listenersToReset]\n );\n\n const onClick = useCallback(() => {\n postEventMessage('execute', null);\n }, [config]);\n\n useEffect(() => {\n if (!isEmptyValue(interceptHandlers) && (processApiRequest || processApiResponse)) {\n const {\n addInternalRequestInterceptor,\n addInternalResponseInterceptor,\n removeInternalRequestInterceptor,\n removeInternalResponseInterceptor\n } = interceptHandlers;\n\n addInternalRequestInterceptor(requestInterceptor);\n addInternalResponseInterceptor(responseInterceptor);\n workerRef.current.onerror = () => {\n removeInternalRequestInterceptor(requestInterceptor);\n removeInternalResponseInterceptor(responseInterceptor);\n };\n return () => {\n removeInternalRequestInterceptor(requestInterceptor);\n removeInternalResponseInterceptor(responseInterceptor);\n };\n }\n }, [config]);\n\n return {html, visible, tooltip, customStyles, onClick, popup};\n};\n","import {useCallback, useEffect, useState} from 'react';\nimport {concat, difference, isEmpty, map, pipe, prop, reduce, reject, uniq} from 'ramda';\nimport {\n Comment,\n Entity,\n FilterOptions,\n getFilteredEntities,\n isEntityUri,\n getEntity,\n EntitiesMap,\n ActivityFilter\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\nimport {useMdmEntityUriWithDataTenant} from '../contexts';\n\nconst SELECT_OPTION = 'uri,label,type';\n\nexport const useCommentsEntitiesMap = (comments: Comment[]) => {\n const safePromise = useSafePromise();\n const currentEntityUri = useMdmEntityUriWithDataTenant();\n\n const [entitiesMap, setEntitiesMap] = useState<EntitiesMap>({});\n\n const getEntities = useCallback(\n (entitiesUris: string[]) => {\n const requestFilters = [\n {\n filter: FilterOptions.EQUALS,\n fieldName: 'uri',\n values: entitiesUris\n }\n ];\n\n const requestOptions = {\n max: entitiesUris.length,\n activeness: ActivityFilter.ALL,\n select: 'uri,label,type'\n };\n return safePromise(getFilteredEntities(requestFilters, requestOptions));\n },\n [safePromise]\n );\n\n const getNotFoundEntity = (entityUri: string) => {\n return getEntity(entityUri, {options: SELECT_OPTION})\n .then((entity: Entity) => ({...entity, uri: entityUri} as Entity))\n .catch(() => ({}));\n };\n\n const addNotFoundEntities = useCallback(\n (entitiesUris: string[], entities: Entity[]) => {\n return safePromise(Promise.all((entitiesUris || []).map(getNotFoundEntity))).then(\n (notFoundEntities: Entity[]) => pipe(reject(isEmpty), concat(entities))(notFoundEntities)\n );\n },\n [safePromise]\n );\n\n useEffect(() => {\n const uniqEntitiesUris = pipe(\n reduce((entitiesUris, comment) => {\n const {objectType: type, relatedObjectUris} = comment;\n\n if (type === 'relation' || type === 'potentialMatch') {\n (relatedObjectUris || []).forEach((uri) => {\n if (uri !== currentEntityUri && isEntityUri(uri) && !entitiesMap[uri]) {\n entitiesUris.push(uri);\n }\n });\n }\n return entitiesUris;\n }, []),\n uniq\n )(comments || []);\n\n if (uniqEntitiesUris.length) {\n getEntities(uniqEntitiesUris)\n .then((results: Entity[]) => {\n const getNotFoundUris = pipe(map(prop('uri')), difference(uniqEntitiesUris));\n\n const notFoundEntities = getNotFoundUris(results);\n return addNotFoundEntities(notFoundEntities, results);\n })\n .then((results) => {\n setEntitiesMap((prevEntitiesMap) =>\n results.reduce(\n (entities, entity) => {\n entities[entity.uri] = entity;\n return entities;\n },\n {...prevEntitiesMap}\n )\n );\n })\n .catch(() => {});\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getEntities, addNotFoundEntities, comments, currentEntityUri]);\n\n return entitiesMap;\n};\n","import {useCallback} from 'react';\nimport {checkConfigPermission, ConfigPermissions} from '@reltio/mdm-sdk';\nimport {useMdmUserRoles} from '../contexts';\n\nconst emptyArray = [];\n\nexport const useConfigPermissions = () => {\n const userRoles = useMdmUserRoles() || emptyArray;\n\n return {\n canCreate: useCallback(checkConfigPermission(ConfigPermissions.CREATE, userRoles), [userRoles]),\n canRead: useCallback(checkConfigPermission(ConfigPermissions.READ, userRoles), [userRoles]),\n canUpdate: useCallback(checkConfigPermission(ConfigPermissions.UPDATE, userRoles), [userRoles]),\n canDelete: useCallback(checkConfigPermission(ConfigPermissions.DELETE, userRoles), [userRoles])\n };\n};\n","import {curry, eqBy, filter, path, prop, reject} from 'ramda';\nimport {useEffect, useMemo, useRef} from 'react';\n\nimport {areOneHierarchyUris, AttributeError, Connection, isEditableMode} from '@reltio/mdm-sdk';\n\nimport {\n useActionsHook,\n useMdmAction,\n useMdmAllRelationsToAddAndEdit,\n useMdmMode,\n useMdmProfileErrors,\n useMdmRelationsDrafts,\n useMdmListener\n} from '../contexts';\n\nconst isConnectionHasError = curry((errors: AttributeError[], connection: Connection) => {\n const relationUri = path(['relation', 'relationUri'], connection);\n return errors.some(\n (error) =>\n areOneHierarchyUris(prop('uri', error), relationUri) ||\n areOneHierarchyUris(prop('parentUri', error), relationUri) ||\n (error.path || []).some(\n (errorPath) => path(['value', 'relation', 'relationUri'], errorPath) === relationUri\n )\n );\n});\n\nconst getInvalidConnections = (errors: AttributeError[] = [], connections: Connection[] = []) =>\n filter(isConnectionHasError(errors), connections);\n\nexport const useExpandInvalidRelations = (configId: string) => {\n const openRelationEditor = useMdmAction('openRelationEditor');\n const mode = useMdmMode();\n const profileErrors = useMdmProfileErrors();\n const shouldOpenInvalidEditors = useRef(true);\n const listenToActions = useActionsHook();\n const {addedConnections = [], editedConnections = []} = useMdmRelationsDrafts(configId) || {};\n const relationsToAddAndEdit = useMdmAllRelationsToAddAndEdit([configId]) || [];\n const preparedConnectionsList = reject(\n (draftConnection: Connection) =>\n relationsToAddAndEdit.some(eqBy(path(['relation', 'relationUri']), draftConnection)),\n [...addedConnections, ...editedConnections]\n );\n const invalidConnections = useMemo(\n () => getInvalidConnections(profileErrors, preparedConnectionsList),\n [profileErrors, preparedConnectionsList]\n );\n const expandInvalidRelatonsListener = useMdmListener('expandInvalidRelatonsListener');\n const setShouldOpenInvalidEditors = (shouldOpen: boolean) => (shouldOpenInvalidEditors.current = shouldOpen);\n const listenerCallback = expandInvalidRelatonsListener(() => setShouldOpenInvalidEditors(true));\n\n useEffect(() => {\n if (isEditableMode(mode) && invalidConnections.length && shouldOpenInvalidEditors.current) {\n invalidConnections.forEach((connection: Connection) => openRelationEditor(configId, connection));\n setShouldOpenInvalidEditors(false);\n }\n }, [mode, invalidConnections]);\n\n useEffect(() => {\n const stopListeningActions = listenToActions(listenerCallback);\n return () => stopListeningActions();\n }, [listenToActions]);\n};\n","import i18n from 'ui-i18n';\nimport {useSnackbar} from './useSnackbar';\n\ntype Props = {\n onLayoutReset: () => void;\n onResetUndo: () => void;\n};\n\nexport const useLayoutResetter = ({onLayoutReset, onResetUndo}: Props) => {\n const resetLayout = () => {\n onLayoutReset();\n showSnackbarMessage(\n i18n.text(\n \"The default layout is now restored. It's still not too late to revert your changes. Click Undo to go back to your personalized settings.\"\n )\n );\n };\n\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar({\n onDismissClick: onResetUndo,\n showDismiss: true,\n autoHideDuration: 5000,\n dismissTitle: i18n.text('Undo')\n });\n\n return {SnackbarRenderer, resetLayout};\n};\n","import {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport {cond, pipe, prop, T, evolve, filter as filterFn, when, identity, times, length, ifElse, always} from 'ramda';\nimport {\n ActivityFilter,\n addGlobalFilterToQuery,\n Connection,\n Entity,\n getRelationsForDataTenantEntity,\n getRelationsForEntity,\n isAvailableEntityTypeUri,\n isAvailableRelationTypeUri,\n isDataTenantEntity,\n isObject,\n isTempUri,\n Mode,\n RelationsContent,\n RelationsRequestConfig,\n RelationsViewConfig,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\nimport {usePrevious} from './usePrevious';\nimport {\n useMdmAction,\n useMdmDtssPath,\n useMdmGlobalSearchRequestOptions,\n useMdmMetadata,\n useMdmProfileLastLoadedTime,\n useMdmTenant\n} from '../contexts';\n\ntype Props = {\n sorting?: {\n field: string;\n order: string;\n };\n filter?: string;\n page: number;\n rowsPerPage: number;\n config: Pick<RelationsViewConfig, 'suggested' | 'content' | 'id'>;\n entity: Entity;\n relationActivityFilter?: ActivityFilter;\n mode: Mode;\n searchByOv?: boolean;\n};\n\nconst buildSuggestedIds = when(\n identity,\n pipe(\n wrapInArrayIfNeeded,\n length,\n times((n) => n + 1)\n )\n);\nconst isValidRequestConfig = (config: RelationsRequestConfig) => {\n let entry: RelationsRequestConfig | RelationsRequestConfig['nextEntry'] = config;\n while (entry) {\n if (entry.entityTypes?.length === 0) {\n return false;\n }\n entry = entry.nextEntry;\n }\n return true;\n};\n\ntype ConnectionResponse = Array<{connections?: Connection[]; total: number}>;\n\nexport const useRelationsLoader = ({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter,\n mode,\n searchByOv = false\n}: Props) => {\n const [isLoading, setIsLoading] = useState(false);\n\n const relationsLoaded = useMdmAction('relationsLoaded');\n const tenant = useMdmTenant();\n const metadata = useMdmMetadata();\n const dtssPath = useMdmDtssPath();\n const {activityFilter, globalFilter} = useMdmGlobalSearchRequestOptions() || {};\n const lastLoadedTime = useMdmProfileLastLoadedTime();\n\n const safePromise = useSafePromise();\n\n const processContent = (content: RelationsContent) => {\n const getUri = when(isObject, prop('uri'));\n const filterRelation = pipe(getUri, isAvailableRelationTypeUri(metadata));\n\n return evolve({\n entityTypes: filterFn(isAvailableEntityTypeUri(metadata)),\n inRelations: filterFn(filterRelation),\n outRelations: filterFn(filterRelation),\n nextEntry: processContent\n })(content);\n };\n\n const suggested = config.suggested;\n const options = useMemo(\n () => ({\n searchByOv\n }),\n [searchByOv]\n );\n const modeRef = useRef<Mode>(mode);\n modeRef.current = mode;\n const loadRelations = useCallback(() => {\n if (entity?.uri) {\n const processedConfig = processContent(config.content);\n const requestConfig = {\n ...processedConfig,\n sortBy: sorting?.field,\n order: sorting?.order,\n returnDates: true,\n returnObjects: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n },\n max: rowsPerPage,\n offset: page * rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || undefined,\n suggested: buildSuggestedIds(suggested)\n };\n const configs = [requestConfig].concat(\n ifElse(\n identity,\n pipe(wrapInArrayIfNeeded, (suggested) =>\n suggested.map((config, i) => ({...config, id: requestConfig.suggested[i]}))\n ),\n always([])\n )(suggested)\n );\n\n const emptyResponsePromise = Promise.resolve([{total: 0}]);\n const request: (entity: Entity) => Promise<ConnectionResponse> = cond([\n [pipe(prop('uri'), isTempUri), () => emptyResponsePromise],\n [\n always(!isValidRequestConfig(requestConfig)),\n () => {\n console.warn('Connections request config has \"entityTypes\": []. Request is blocked.');\n return emptyResponsePromise;\n }\n ],\n [\n isDataTenantEntity,\n (entity) =>\n getRelationsForDataTenantEntity({\n entityUri: entity.uri,\n configs: configs,\n customerTenant: tenant,\n dataTenant: entity.dataTenant,\n dtssPath,\n options\n })\n ],\n [T, (entity) => getRelationsForEntity(entity.uri, configs, options)]\n ]);\n setIsLoading(true);\n safePromise(request(entity))\n .then((result) => {\n if (!Array.isArray(result)) {\n throw Error(JSON.stringify(result));\n }\n const [{connections, total}] = result;\n relationsLoaded({id: config.id, connections, total, mode: modeRef.current});\n })\n .catch((e) => {\n console.warn('Failed to load relations data', e);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n activityFilter,\n metadata,\n config,\n relationsLoaded,\n dtssPath,\n entity?.uri,\n entity?.dataTenant,\n filter,\n globalFilter,\n page,\n relationActivityFilter,\n rowsPerPage,\n safePromise,\n sorting,\n tenant,\n options,\n lastLoadedTime\n ]);\n const isRequestSentRef = useRef<boolean>(false);\n isRequestSentRef.current = false;\n useEffect(() => {\n isRequestSentRef.current = true;\n loadRelations();\n }, [loadRelations]);\n\n const prevMode = usePrevious(mode);\n useEffect(() => {\n if (mode === Mode.Viewing && !isRequestSentRef.current && prevMode !== mode) {\n isRequestSentRef.current = true;\n loadRelations();\n }\n }, [loadRelations, mode, prevMode]);\n return {isLoading, reload: loadRelations};\n};\n"],"names":["clearError","omit","accordionSummaryHeight","defaultBorderStyle","makeStyles","theme","accordion","borderTop","borderBottom","fontSize","boxShadow","display","margin","accordionExpanded","accordionSummary","alignItems","height","minHeight","accordionSummaryHeading","flex","typography","pxToRem","fontWeight","fontWeightRegular","accordionSummaryExpanded","accordionSummaryContent","accordionDetails","maxHeight","overflow","paddingTop","paddingBottom","paddingLeft","marginTop","parents","color","palette","text","primary","errorWrapper","lineHeight","flexDirection","errorTitle","attributeTypesPath","secondary","goToIcon","marginLeft","errorsAccordion","backgroundColor","borderColor","errorsAccordionDetails","warningsAccordion","warningsAccordionDetails","icon","marginRight","errorIcon","fill","warningIcon","ErrorsPanel","memo","panels","expandedPanelId","onToggle","ErrorComponent","styles","useStyles","length","map","id","title","items","accordionClassName","accordionDetailsClassName","Accordion","key","square","expanded","onChange","className","classes","root","AccordionSummary","content","expandIcon","ExpandMore","Typography","AccordionDetails","classnames","error","i","displayName","props","width","viewBox","xmlns","fillRule","clipRule","d","fillOpacity","Error","metadata","useMdmMetadata","isEditableMode","useMdmIsEditableMode","displayedMessage","type","source","message","attributeTypeUri","attributeType","ErrorType","ErrorSource","attrType","findAttributeTypeByUri","i18n","attribute","label","getDisplayedErrorMessage","displayedErrorPath","path","errorPath","uri","slice","filter","AttributeValuePathItemType","includes","identity","join","getDisplayedErrorPath","displayedAttributeTypesPath","either","getDisplayedAttributeTypesPath","highlightError","useContext","ScrollToElementContext","showLink","parentUri","SmallIconButton","HyperlinkIcon","size","onClick","tooltipTitle","AttributesErrorsPanel","attributesWithErrors","cachedErrors","allErrors","cacheForAllErrors","useRef","errors1","errors2","equals","areErrorsEqual","current","useCachedErrors","errors","warnings","useMemo","partition","isCriticalError","setExpandedPanelId","useState","number","useEffect","handleChange","useCallback","panelId","event","isExpanded","stroke","strokeWidth","main","closeIcon","position","right","bottom","transform","button","padding","FilterButton","enabled","Tooltip","IconButton","Filter","Close","propTypes","PropTypes","searchButton","input","maxWidth","background","startAdornment","ExpandableSearchInput","query","value","setValue","isOpen","setIsOpen","Input","autoFocus","placeholder","disableUnderline","pipe","getValue","InputAdornment","Search","endAdornment","CloseIcon","F","always","tap","onKeyPress","when","propEq","trim","T","EmptyStub","style","widthToHide","children","handleWidth","render","menuItem","whiteSpace","itemText","textPrimary","textSecondary","MultilineMenuItem","forwardRef","ref","item","onMenuClose","noop","MenuItem","ListItemText","paddingRight","profileCardWrapper","gap","profileCardContainer","flexGrow","rulesContainer","marginBottom","dividerWrapper","alignSelf","divider","relevanceBadge","ProfileMatchCard","entitiesMap","entity","match","showRelevanceBadge","matchRuleSummaries","some","checkMatchRuleSummaryRelevance","ProfileCard","object","container","matchRules","MatchRulesBlock","Divider","orientation","RelevanceScoreBadge","editor","overflowX","letterSpacing","dense","actionButtons","justifyContent","RelationEditor","connection","config","mode","highlightedError","relationType","direction","relation","isNew","entityUri","getEntityUriFromConnection","relationUri","getRelationUriFromConnection","isTempEntity","isTempUri","mdmSetInitialInfo","useMdmAction","setRelationType","closeRelationEditor","entityCreated","entityDeleted","setRelationEntity","errorDeactivated","errorsSet","addAttributes","modifyAttribute","removeAttribute","addRelation","editRelation","initialConnection","useMdmInitialConnection","initialModifiedEntity","useMdmInitialConnectionTempEntity","mdmModifiedEntity","useMdmModifiedEntity","mdmAllModifiedEntities","useMdmModifiedEntities","globalSearchRequestOptions","useMdmGlobalSearchRequestOptions","profileErrors","useMdmProfileErrors","getRelationEditorActiveError","modifiedEntity","allModifiedEntities","errorClassName","useScrollToAttributeError","isSimple","inRelations","inRelationTypes","outRelations","outRelationTypes","getInOutRelations","parentEntityUri","contentSecondLevel","firstLevelRelationAttrTypes","getRelationAttributesList","attributeListEntity","attributes","getRelationAttributesFromConnection","getActivenessAttributes","relatedTempEntities","findRelatedTemporaryEntities","relatedTempEntitiesUrisHistory","setInitialInfo","concat","prop","uniq","initialRelatedTempEntities","defaultRelationType","getDefaultRelationTypeObject","initialConnectionChangeablePart","pick","connectionChangeablePart","hasChanges","isEmptyValue","initial","actual","_","applyAction","curry","onRelationTypeChange","handleClose","updateModifiedEntityLabel","entityType","getEntityType","updateConnectionEntityLabel","setModifiedEntity","deleteModifiedEntity","onChangeEntity","getErrorId","validate","validateConnection","resetErrors","onApply","omitMarks","differenceWith","forEach","onCancel","initialTempEntities","onAddAttributes","params","param","viewId","onChangeAttribute","onDeleteAttribute","onCreateEntity","entityTypeUri","initValue","newEntityAttrTypes","relationEditorAttributeTypesSelectionStrategy","getCreatableAttributeTypes","newEntity","createTemporaryEntity","attributeTypes","errorMessage","getErrorMessage","getEntityTypesUris","entityTypes","ConnectionRelationTypeSelector","Boolean","ErrorWrapper","EntitySelector","entityTypesUris","max","onCreate","isSuggestMode","undefined","attributeTypesSelectionStrategy","AttributesList","attrTypes","showEmptyEditors","crosswalks","Button","disabled","ConnectionType","RelationsConfigType","MetadataType","withContext","contextValue","element","isHighlightedErrorType","isAttributeTypeError","MapControlContainer","controlElement","setControlElement","controlDiv","document","createElement","divIndex","controls","push","removeAt","classList","add","createPortal","opacity","xmlnsXlink","xlinkHref","mask","minWidth","ButtonWithTooltip","withTooltip","TopRightMapControls","drawingMode","drawingModes","hasActiveOverlay","onDrawingModeChanged","onClearOverlay","changeDrawingModeTo","HighlightOff","Icon","MAP_DRAWING_MODES","RadiusIcon","DrawIcon","getIcon","checkbox","boxSizing","TopCenterMapControls","isSearchOnMapMove","onChangeIsSearchOnMapMove","FormControlLabel","control","Checkbox","checked","target","getMapBoundsPolygon","bounds","getBounds","ne","getNorthEast","sw","getSouthWest","neLat","lat","neLng","lng","swLat","swLng","additionalPoint1","additionalPoint2","center","getCenter","getDrawingMode","window","google","maps","drawing","OverlayType","CIRCLE","POLYGON","fitMapBoundsForOverlay","overlay","existingBounds","LatLngBounds","extend","LatLng","fitBounds","popper","borderRadius","hoveredMarkerIcon","svg2Url","markerIcon","marker","otherProps","popperAnchor","hovered","setHovered","activeEntityUri","EntityMarkerContext","isActive","pathEq","point","setHoveredDebounced","debounce","onMouseOver","onMouseOut","handleClick","Popper","anchorEl","open","modal","placement","url","scaledSize","Size","visible","options","alignBottom","pane","pixelOffset","closeBoxURL","enableEventPropagation","disableAutoPan","mapControlContainer","libraries","ReltioMap","markers","mapKey","defaultZoom","defaultCenter","loadingElement","isSearchEnabled","activeOverlay","overlayOptions","markerClusterer","markerClustererOptions","mapOptions","mapContainerClassName","onMapBoundsChanged","onOverlayUpdated","onMarkerClicked","isLoaded","loadError","useJsApiLoader","googleMapsApiKey","mapMoveEndTimer","setMap","polygon","setPolygon","setDrawingMode","apiIsLoaded","prevMarkers","usePrevious","prevActiveOverlay","prevApiIsLoaded","markersChanged","apiIsLoadedChanged","shouldUseFitMapBoundsForOverlay","MAP_MINIMUM_SCALE_RADIUS","fitMapBoundsForMarkers","useFitMapBounds","allOverlayOptions","DEFAULT_OVERLAY_OPTIONS","googleMapOptions","DEFAULT_GOOGLE_MAP_OPTIONS","handleChangeIsSearchOnMapMove","clearTimeout","handleMapMoveStart","handleMapMoveEnd","handleMapIdle","setTimeout","handleOverlayChange","e","propOverlay","polygonStateOverlay","stateOverlay","isEmpty","typeActions","getPath","getArray","latlng","radius","getRadius","data","handleOverlayComplete","handleClearOverlay","renderMarkers","clusterer","shouldRenderDrawingManager","shouldRenderRightMapControls","shouldRenderCenterMapControls","shouldRenderPolygon","mapTypeId","MapTypeId","ROADMAP","onLoad","zoom","onZoomChanged","onDragStart","onIdle","ControlPosition","TOP_RIGHT","TOP_CENTER","editable","onMouseUp","onDragEnd","onPolygonComplete","onCircleComplete","drawingControl","circleOptions","polygonOptions","VerticalDivider","borderLeft","flexShrink","defaultHistoryDiff","appearance","roles","tags","fixRefEntity","evolve","refEntity","wrapInArrayIfNeeded","refRelation","prepareHistorySlice","historySlice","useHistoryDiff","setHistoryDiff","useMdmHistorySlice","historyDiff","useMdmHistoryDiff","historyMode","useMdmHistoryMode","useMdmEntity","aEntity","bEntity","History","computeEntityHistoryDiff","HistoryMode","dueDate","dueDateInput","inputLabel","taskId","isTaskOpen","updateDueDate","updateRequestIsInProgress","readOnly","updateTaskState","WorkflowTasksContext","workflowPath","useMdmWorkflowPath","environment","useMdmWorkflowEnvironmentUrl","tenant","useMdmTenant","safePromise","useSafePromise","setUpdateRequestIsInProgress","canUpdateTask","useWorkflowCheckPermission","checkWorkflowPermission","isOpenTask","newValue","updateDueDateForTask","then","catch","showWorkflowError","finally","useWorkflowDueDate","DateEditor","date","getTime","slotProps","textField","InputProps","InputLabelProps","priority","priorities","updatePriority","newPriority","updatePriorityForTask","WorkflowPriority","useWorkflowPriority","DropDownSelector","isDisabled","hideSelectedOptions","find","TextFieldProps","decorator","lineBlock","withLinePadding","noLine","line","left","top","border","plain","last","rowDivider","first","transparent","light","variant","taskToColor","COLORS","colorIndex","card","withBackground","lineWrapper","zIndex","info","wordWrap","commentsInfo","commentsIcon","infoValue","infoBlock","header","caption","flag","mainInfo","controlsBox","controlsInRow","comments","task","actions","assignee","createdBy","createTime","step","processDefinitionDisplayName","objectURIs","processInstanceComments","possibleActions","preferredAction","dcrId","getDCRId","hash","useWorkflowColor","setExpanded","canViewComments","workflowActions","actionRequestIsInProgress","useWorkflowActions","Flag","CollapseButton","CollaborationIcon","TaskActions","isInProgress","AssigneeSelector","WorkflowComments","cx","cy","r","getOperationType","oldValue","DCRTypes","DCROperationTypes","pin","ignored","getOperationLabel","operation","getDataTypeDefinition","attributeValue","allPass","DataTypes","isUrl","getAttrDataTypeDefinition","getValues","newAttrValues","pathOr","name","oldAttrValues","Math","times","index","values","getEntityChanges","entityInfo","changes","getFilteredAttrTypes","getAttributesList","getRelationChanges","relationInfo","changeType","getRelationType","flatten","level","propOr","addRelationOperationIfNeeded","dcrAttributesFactory","complement","getNestedAttributeChange","getReferenceAttributeChange","isSpecialAttribute","is","Object","getSimpleAttributeValue","getSimpleAttributeChange","attributeTypeList","getAttributeTypeSubAttributes","getLabel","getDiffParameters","SPECIAL_ATTRIBUTES_NAMES","EntityAttrTypes","prepareStartOrEndDate","parseValue","isNaN","parseInt","isExistedValue","isExistNewValue","isExistOldValue","prepareRolesOrTags","change","getRoleLabel","diffNewValue","difference","diffOldValue","prepareAttribute","changePath","attributePath","refObjectURI","refAttributeType","generateTempUri","typePath","split","pathArray","holder","currentValue","indexOf","isNil","createEntityOrRelation","startDate","endDate","defaultProfilePicValue","newObject","mergeAttributesInChange","objectInfo","linkLabel","suggestionsCount","Link","component","underline","field","wordBreak","fieldName","arrow","chip","textTransform","ArrowRightAlt","Chip","AttributesChangesContext","React","linkContainer","textDecoration","cursor","disabledLink","pointerEvents","objectsInfo","useMdmEntityUri","getLinkDescription","isReference","currentEntityUri","objectLabel","objectUri","startObjectUri","endObjectUri","endObjectLabel","startObjectLabel","objectURI","getAttributeDescription","renderLink","isNotExist","isExist","EntityUriLink","changeLabel","renderValue","attrValue","getAttributeValue","DataTypeValue","dataTypeDefinition","has","getSuggestionsCount","getEntitiesObjects","isEntityUri","getRelationsObjects","isRelationUri","getRelations","objectsWithChanges","createEntityRelationsObjectByEntity","relations","createEntityRelationsObjectByRelation","concatEntityRelationsObjects","acc","mergedRelations","isCreateEntityOperation","dcr","showMoreLink","dcrUri","relationsInfo","mergedEntityChanges","mergedRelationsChanges","getAttributeChanges","attributeName","concatChanges","getters","attributesTree","reduce","getter","changesTree","result","relationsTrees","updateRelation","mergeChanges","changesList","relationshipTitle","itemsToShow","collapsedSuggestionsCount","limit","setIsExpanded","collapsedItems","visibleSuggestionsCount","useCollapsibleList","ifElse","any","getEntityUriForChangeRequest","getEntityUriForLink","screen","Provider","getDCRUri","groupedObjects","setGroupedObjects","setDcr","requestEntities","entityUris","Promise","resolve","getEntitiesByUris","searchOptions","defaultMaxValues","getDataChangeRequest","keys","extractObjectsFromChangeRequest","entityObjectsWithRelations","relationsObjects","relationsObjectsWithEntity","relationsObjectsWithoutEntity","entities","relationsObjectsWithRequestedEntities","relationsObject","showApiError","useChangeRequest","DcrTaskIcon","pmCard","defaultOptions","showTransitiveMatches","showInactiveEntities","matches","useMatchesLoader","rowsPerPage","Number","MAX_SAFE_INTEGER","page","PmTaskIcon","WorkflowTaskCardsFactory","build","processType","PredefinedWorkflowProcessType","DeleteRequestTaskIcon","DefaultTaskIcon","WorkflowTaskCard","popoverPaper","simpleDropDownSelector","inputRoot","select","footer","cancelButton","AddWorkflowDialog","onClose","comment","setComment","taskType","setTaskType","isOpenSnackbar","setIsOpenSnackbar","definitions","setDefinitions","processDefinitions","manualStart","objectTypes","_entityType","filterDefinitions","useWorkflowDefinitions","processInstance","loading","setLoading","loadTasks","startProcessInstance","useWorkflowProcessInstance","Popover","anchorOrigin","vertical","horizontal","transformOrigin","paper","SimpleDropDownSelector","definition","TextField","hiddenLabel","multiline","Portal","body","Snackbar","autoHideDuration","buttonLabel","AddWorkflowButton","setAnchorEl","canStartProcess","canViewProcessDefinitions","currentTarget","Add","TaskActionButtons","preferredActions","otherActions","action","useWorkflowTasks","processTypes","showClosedTasks","tasks","setTasks","total","setTotal","isWorkflowEnabled","useMdmIsWorkflowEnabled","entityLastLoadedTime","useMdmProfileLastLoadedTime","canViewTasks","parsedProcessTypes","Array","isArray","requests","getTasksForEntity","isDCRUri","getEntityUriFromDCRUri","includeClosed","all","responses","reject","uniqBy","isRequestedTask","console","warn","payload","mergeLeft","fillColor","strokeWeight","strokeColor","clickable","mapTypeControl","streetViewControl","fullscreenControl","InterceptHandlersContext","SandboxAPIContext","getCurrentPerspectiveId","setEntityUri","showPerspective","validateParams","validationUrl","permissions","permission","urlOrigin","permRegex","RegExp","decodedPerm","replace","startsWith","test","getAuthHeaders","async","headers","servicesPath","accessToken","getAccessToken","Authorization","processRequest","worker","apiPath","user","openSearch","workflowCheckPermission","method","handleRequest","request","response","json","postMessage","JSON","parse","stringify","status","RequestAction","sendRequestFromCustomSandbox","noRequestProcessor","noRetry","sendApiRequest","isExternalUrl","sendWorkflowRequest","workflowRequest","processDefinitionId","searchString","startProcessFromQuery","processFromQuery","listener","perspective","searchState","alert","confirm","prompt","defaultText","location","reload","isValidCustomScript","files","platform","CustomScriptPlatform","isURLtoProcess","processApi","regExp","getWorkerURL","uiPath","getRequestFakeUrl","reltioPath","getResponseFakeUrl","getProcessedTask","isApiAction","newUrl","processInnerHtml","parent","setTooltip","handlersToReset","uiActions","getAttribute","uiTooltip","uiAction","handler","postEventMessage","readFilePromises","from","file","reader","FileReader","onload","lastModified","onerror","readAsArrayBuffer","getFilesWithArrayBuffer","addEventListener","removeEventListener","childNodes","child","nodeType","resetHtml","innerText","html","setListenersToReset","setHtml","docBlock","innerHTML","setUpRequestInterceptor","processApiRequest","workerRef","setRequestListeners","next","fakeURL","requestId","nanoid","setUpResponseInterceptor","processApiResponse","setResponseListeners","abort","responseId","img","link","iframe","a","useHtmlSanitizer","allowedAttributes","allowedTags","sanitizeHtml","sanitizeOptions","allowVulnerableTags","useAPI","listenersToReset","popupListenersToReset","setPopupListenersToReset","setVisible","popup","setPopup","tooltip","customStyles","setCustomStyles","requestListeners","responseListeners","useMdmUiPath","workerUrl","showSnackbarMessage","SnackbarContext","qxApi","interceptHandlers","useMdmApiPath","useMdmServicesPath","useMdmReltioPath","useMdmUser","typeSearch","search","useMdmSearchProviderData","searchQuery","popupText","process","CustomAction","sanitizedHtml","elem","getElementById","sanitizedPopup","prev","log","processedTask","requestInterceptor","responseInterceptor","pendingInterceptors","needDelayedRequestForInterceptors","startInterceptorInit","initializeWebWorker","finishInterceptorInit","addInternalRequestInterceptor","addInternalResponseInterceptor","removeInternalRequestInterceptor","removeInternalResponseInterceptor","useCommentsEntitiesMap","useMdmEntityUriWithDataTenant","setEntitiesMap","getEntities","entitiesUris","requestFilters","FilterOptions","requestOptions","activeness","ActivityFilter","getFilteredEntities","getNotFoundEntity","getEntity","addNotFoundEntities","notFoundEntities","uniqEntitiesUris","objectType","relatedObjectUris","results","getNotFoundUris","prevEntitiesMap","emptyArray","useConfigPermissions","userRoles","useMdmUserRoles","canCreate","checkConfigPermission","ConfigPermissions","canRead","canUpdate","canDelete","isConnectionHasError","areOneHierarchyUris","useExpandInvalidRelations","configId","openRelationEditor","useMdmMode","shouldOpenInvalidEditors","listenToActions","useActionsHook","addedConnections","editedConnections","useMdmRelationsDrafts","relationsToAddAndEdit","useMdmAllRelationsToAddAndEdit","preparedConnectionsList","draftConnection","eqBy","invalidConnections","connections","getInvalidConnections","expandInvalidRelatonsListener","useMdmListener","setShouldOpenInvalidEditors","shouldOpen","listenerCallback","stopListeningActions","useLayoutResetter","onLayoutReset","onResetUndo","SnackbarRenderer","useSnackbar","onDismissClick","showDismiss","dismissTitle","resetLayout","buildSuggestedIds","n","isValidRequestConfig","entry","nextEntry","useRelationsLoader","sorting","relationActivityFilter","searchByOv","isLoading","setIsLoading","relationsLoaded","dtssPath","useMdmDtssPath","activityFilter","globalFilter","lastLoadedTime","processContent","getUri","isObject","filterRelation","isAvailableRelationTypeUri","filterFn","isAvailableEntityTypeUri","suggested","modeRef","loadRelations","requestConfig","sortBy","order","returnDates","returnObjects","offset","addGlobalFilterToQuery","configs","emptyResponsePromise","cond","isDataTenantEntity","getRelationsForDataTenantEntity","customerTenant","dataTenant","getRelationsForEntity","isRequestSentRef","prevMode","Mode"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"7151.js","mappings":"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ADqC,QAErC9C,EAFqC,mBAGrC4F,EAHqC,UAIrCP,EAJqC,qBAKrCQ,GACyD,EACzD,OAAO,IAA2C,IAA1C,IAACzpB,EAAD,SAAMmkB,EAAN,KAAgBgF,EAAhB,QAAsB/oB,EAAtB,MAA+BspB,GAAW,EAC9C,MAAMN,EAAUzC,EAAmB3mB,EAAK4jB,EAAS8C,GAEjD,GADyBN,EAAegD,EAASI,GAC3B,CAClB,MAAMG,GAAaL,EAAAA,EAAAA,MACnBnF,EACKC,OACA7a,MAAMhF,IACHklB,EAAqBN,EAAMQ,GAC3BV,EAAUt/B,QAAQ06B,YAAY,CAC1BvE,OAAQ,cACRv7B,GAAIolC,EACJ3pB,IAAKopB,EACLpF,OAAQ5jB,EAAQ4jB,OAChBzf,KAAAA,OAGPiF,OAAO7jB,IACJ+jC,EAAM/jC,WAGdwjC,EAAKhF,M,kHC5LjB,MA2UA,GACI5vB,WAAY,CACR,IAAK,CA5UT,gBACA,aACA,WACA,qBACA,eACA,aACA,YACA,cACA,SACA,gBACA,gBACA,cACA,UACA,gBACA,iBACA,cACA,OACA,QACA,OACA,KACA,WACA,aACA,UACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,oBACA,mBACA,SACA,KACA,KACA,IACA,aACA,UACA,kBACA,YACA,WACA,UACA,UACA,oBACA,MACA,KACA,KACA,WACA,YACA,oBACA,MACA,WACA,4BACA,OACA,eACA,YACA,SACA,YACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,SACA,OACA,KACA,KACA,KACA,KACA,aACA,+BACA,6BACA,WACA,oBACA,gBACA,UACA,SACA,cACA,iBACA,KACA,cACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,eACA,mBACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,iBACA,oBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,OACA,mBACA,YACA,eACA,MACA,QACA,SACA,MACA,OACA,OACA,aACA,SACA,UACA,WACA,QACA,SACA,cACA,SACA,WACA,oBACA,qBACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,iBACA,SACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,IACA,SACA,OACA,OACA,mBACA,cACA,YACA,qBACA,mBACA,UACA,SACA,SACA,KACA,KACA,QACA,OACA,kBACA,QACA,UACA,mBACA,mBACA,QACA,eACA,cACA,eACA,QACA,QACA,cACA,aACA,eACA,yBACA,0BACA,SACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,QACA,eACA,iBACA,cACA,SACA,UACA,UACA,cACA,kBACA,iBACA,aACA,KACA,YACA,OACA,KACA,KACA,qBACA,sBACA,UACA,eACA,gBACA,eACA,eACA,YACA,gBACA,iBACA,SACA,UACA,aACA,gBACA,gBACA,UACA,aACA,aACA,QACA,SACA,eACA,eACA,IACA,WACA,KACA,KACA,mBACA,IACA,KACA,KACA,mBACA,IACA,aA2FgC,aAAc,cAC1Cq1B,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,WACvCC,KAAM,CAAC,OAAQ,OACfC,OAAQ,CAAC,OACTC,EAAG,CAAC,SAERtjB,KAAM,CA7FN,UACA,eACA,gBACA,mBACA,QACA,MACA,SACA,UACA,OACA,UACA,WACA,OACA,OACA,QACA,IACA,SACA,OACA,gBACA,UACA,MACA,SACA,SACA,OACA,YACA,mBACA,iBACA,gBACA,gBACA,QACA,QACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,iBACA,eACA,cACA,SACA,UACA,OACA,OACA,UACA,WACA,OACA,OACA,IACA,MACA,SACA,MACA,WACA,cACA,eACA,QACA,WACA,WACA,OACA,OACA,QACA,WACA,WACA,OACA,QACA,WACA,gBACA,SACA,SACA,gBACA,SACA,QACA,OACA,SACA,SACA,WACA,QAWuB,IAAK,OAAQ,QAAS,SAAU,SAAU,Q,wcChV9D,MAAMujB,EAAmB,KAC5B,MAAM,kBAACC,EAAD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","sources":["webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/ErrorsPanel/helpers.ts","webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/ErrorsPanel/ErrorsPanel.tsx","webpack://@reltio/remotes/../components/src/icons/Hyperlink.tsx","webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/ErrorsPanel/Error.tsx","webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/AttributesErrorsPanel.tsx","webpack://@reltio/remotes/../components/src/components/AttributesErrorsPanel/useCachedErrors.ts","webpack://@reltio/remotes/../components/src/icons/Filter.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/FilterButton/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/FilterButton/FilterButton.js","webpack://@reltio/remotes/../components/src/components/ExpandableSearchInput/styles.ts","webpack://@reltio/remotes/../components/src/components/ExpandableSearchInput/ExpandableSearchInput.tsx","webpack://@reltio/remotes/../components/src/components/HideOnShrink/HideOnShrink.tsx","webpack://@reltio/remotes/../components/src/components/MultilineMenuItem/styles.ts","webpack://@reltio/remotes/../components/src/components/MultilineMenuItem/MultilineMenuItem.tsx","webpack://@reltio/remotes/../components/src/components/ProfileMatchCard/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileMatchCard/ProfileMatchCard.tsx","webpack://@reltio/remotes/../components/src/components/RelationEditor/styles.js","webpack://@reltio/remotes/../components/src/components/RelationEditor/RelationEditor.js","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/MapControlContainer/MapControlContrainer.tsx","webpack://@reltio/remotes/../components/src/icons/Radius.tsx","webpack://@reltio/remotes/../components/src/icons/Draw.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopRightMapControls/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopRightMapControls/TopRightMapControls.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopCenterMapControls/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopCenterMapControls/TopCenterMapControls.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/icons/marker.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/EntityMarker.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/icons/marker-hover.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/hooks/useFitMapBounds.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/index.tsx","webpack://@reltio/remotes/../components/src/components/VerticalDivider/VerticalDivider.js","webpack://@reltio/remotes/../components/src/components/history/hooks/useHistoryDiff.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/DueDateField/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/DueDateField/DueDateField.tsx","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowDueDate.ts","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowPriority.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/PrioritySelector/PrioritySelector.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/LineDecorator/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/LineDecorator/LineDecorator.tsx","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowColor.ts","webpack://@reltio/remotes/../components/src/icons/CollaborationIcon.tsx","webpack://@reltio/remotes/../components/src/components/workflow/cards/GenericWorkflowTaskCard/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/cards/GenericWorkflowTaskCard/GenericWorkflowTaskCard.tsx","webpack://@reltio/remotes/../components/src/icons/DcrTaskIcon.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/helpers/helpers.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/helpers/mergeHelpers.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/ShowMoreLink/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/ShowMoreLink/ShowMoreLink.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/ChangeView/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/ChangeView/ChangeView.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/contexts/AttributesChangesContext.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/DiffRenderer/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/DiffRenderer/DiffRenderer.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/DCRChangesList/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/components/DCRChangesList/DCRChangesList.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/helpers/contextHelpers.ts","webpack://@reltio/remotes/../components/src/components/workflow/helpers/dcrHelpers.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/AttributesChanges.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/AttributesChanges/hooks/useCollapsibleList.ts","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useChangeRequest.ts","webpack://@reltio/remotes/../components/src/components/workflow/cards/DataChangeRequestTaskCard/DataChangeRequestTaskCard.tsx","webpack://@reltio/remotes/../components/src/icons/PmTaskIcon.tsx","webpack://@reltio/remotes/../components/src/components/workflow/cards/PotentialMatchTaskCard/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/cards/PotentialMatchTaskCard/PotentialMatchTaskCard.tsx","webpack://@reltio/remotes/../components/src/icons/DefaultTaskIcon.tsx","webpack://@reltio/remotes/../components/src/icons/DeleteRequestTaskIcon.tsx","webpack://@reltio/remotes/../components/src/components/workflow/cards/WorkflowTaskCardsFactory.tsx","webpack://@reltio/remotes/../components/src/components/workflow/cards/WorkflowTaskCard.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AddWorkflowDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AddWorkflowDialog/AddWorkflowDialog.tsx","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowDefinitions.ts","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowProcessInstance.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AddWorkflowButton/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/AddWorkflowButton/AddWorkflowButton.tsx","webpack://@reltio/remotes/../components/src/components/workflow/components/TaskActionButtons/TaskActionButtons.tsx","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../components/src/constants/map.ts","webpack://@reltio/remotes/../components/src/contexts/EntityMarkerContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/InterceptHandlersContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/SandboxAPIContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useAPI/API.ts","webpack://@reltio/remotes/../components/src/hooks/useAPI/helpers.ts","webpack://@reltio/remotes/../components/src/hooks/helpers/sanitizerOptions.ts","webpack://@reltio/remotes/../components/src/hooks/useHtmlSanitizer.ts","webpack://@reltio/remotes/../components/src/hooks/useAPI/useAPI.ts","webpack://@reltio/remotes/../components/src/hooks/useCommentsEntitiesMap.ts","webpack://@reltio/remotes/../components/src/hooks/useConfigPermissions.ts","webpack://@reltio/remotes/../components/src/hooks/useExpandInvalidRelations.ts","webpack://@reltio/remotes/../components/src/hooks/useLayoutResetter.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationsLoader.ts"],"sourcesContent":["import {either, equals, identity, omit, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n AttributeError,\n AttributeType,\n AttributeValuePathItemType,\n ErrorSource,\n ErrorType,\n findAttributeTypeByUri,\n Metadata\n} from '@reltio/mdm-sdk';\n\nconst clearError = omit(['deactivated', 'path']);\nexport const areErrorsEqual = (errors1: AttributeError[] = [], errors2: AttributeError[] = []) =>\n errors1.length === errors2.length && equals(errors1.map(clearError), errors2.map(clearError));\n\nexport const getDisplayedErrorMessage = (\n metadata: Metadata,\n {type, source, message, attributeTypeUri = '', attributeType}: AttributeError\n) => {\n if (type === ErrorType.missed && source === ErrorSource.local) {\n const attrType: AttributeType = attributeType || findAttributeTypeByUri(metadata, attributeTypeUri);\n return attrType ? i18n.text('${attribute} is required', {attribute: attrType.label}) : message;\n }\n return message;\n};\n\nexport const getDisplayedErrorPath = ({path: errorPath, uri}: AttributeError) => {\n return errorPath\n ?.slice(0, uri ? errorPath.length - 1 : errorPath.length)\n .filter(({type}) =>\n [AttributeValuePathItemType.attributeValue, AttributeValuePathItemType.relationConnection].includes(type)\n )\n .map(({label}) => label)\n .filter(identity)\n .join(' / ');\n};\n\nexport const getDisplayedAttributeTypesPath = ({path: errorPath}: AttributeError) => {\n return errorPath\n ?.filter(({type}) => type === AttributeValuePathItemType.attributeValue)\n .map(either(path(['valueType', 'label']), path(['valueType', 'name'])))\n .filter(identity)\n .join(' > ');\n};\n","import {makeStyles} from '@mui/styles';\n\nconst accordionSummaryHeight = '48px';\nconst defaultBorderStyle = '1px solid rgba(0, 0, 0, .125)';\n\nconst useStyles = makeStyles((theme) => ({\n accordion: {\n borderTop: defaultBorderStyle,\n borderBottom: defaultBorderStyle,\n fontSize: '13px',\n boxShadow: 'none',\n '&:not(:first-child)': {\n borderTop: 0\n },\n '&:before': {\n display: 'none'\n },\n '&$accordionExpanded': {\n margin: 'auto'\n }\n },\n accordionExpanded: {},\n accordionSummary: {\n display: 'flex',\n alignItems: 'center',\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight,\n '&$accordionSummaryExpanded': {\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight\n }\n },\n accordionSummaryHeading: {\n flex: 1,\n fontSize: theme.typography.pxToRem(13),\n fontWeight: theme.typography.fontWeightRegular\n },\n accordionSummaryExpanded: {},\n accordionSummaryContent: {\n display: 'flex',\n alignItems: 'center'\n },\n accordionDetails: {\n maxHeight: '21vh',\n overflow: 'auto',\n paddingTop: 0,\n paddingBottom: 0,\n '& ul': {\n paddingLeft: '23px',\n marginTop: '3px'\n },\n '& li': {\n paddingLeft: '9px',\n paddingBottom: '8px'\n }\n },\n parents: {\n color: theme.palette.text.primary\n },\n errorWrapper: {\n lineHeight: '18px',\n display: 'flex',\n flexDirection: 'column'\n },\n errorTitle: {\n display: 'flex',\n alignItems: 'center'\n },\n attributeTypesPath: {\n color: theme.palette.text.secondary\n },\n goToIcon: {\n marginLeft: '4px'\n },\n errorsAccordion: {\n backgroundColor: '#FFF4F6',\n borderColor: '#FFB8B3'\n },\n errorsAccordionDetails: {\n color: '#DD2C00'\n },\n warningsAccordion: {\n backgroundColor: '#FFF9ED',\n borderColor: '#FFDD91'\n },\n warningsAccordionDetails: {\n color: '#CC7500'\n },\n icon: {\n marginRight: '8px'\n },\n errorIcon: {\n fill: '#FF1744'\n },\n warningIcon: {\n fill: '#F9A825'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, ReactNode, ElementType} from 'react';\nimport classnames from 'classnames';\nimport Accordion from '@mui/material/Accordion';\nimport AccordionSummary from '@mui/material/AccordionSummary';\nimport AccordionDetails from '@mui/material/AccordionDetails';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport Typography from '@mui/material/Typography';\n\nimport useStyles from '../styles';\n\nimport {AttributeError} from '@reltio/mdm-sdk';\n\ntype Props = {\n panels: {\n id: string;\n title: string;\n icon: ReactNode;\n items: AttributeError[];\n accordionClassName: string;\n accordionDetailsClassName: string;\n }[];\n expandedPanelId: string;\n onToggle: (id: string) => (e, isExpanded: boolean) => void;\n ErrorComponent: ElementType;\n};\n\nexport const ErrorsPanel = memo(({panels, expandedPanelId, onToggle, ErrorComponent}: Props) => {\n const styles = useStyles();\n\n return panels.length > 0 ? (\n <div>\n {panels.map(({id, icon, title, items, accordionClassName, accordionDetailsClassName}) => (\n <Accordion\n key={id}\n square\n expanded={expandedPanelId === id}\n onChange={onToggle(id)}\n className={accordionClassName}\n classes={{root: styles.accordion, expanded: styles.accordionExpanded}}\n >\n <AccordionSummary\n classes={{\n root: styles.accordionSummary,\n expanded: styles.accordionSummaryExpanded,\n content: styles.accordionSummaryContent\n }}\n expandIcon={<ExpandMoreIcon />}\n >\n {icon}\n <Typography className={styles.accordionSummaryHeading}>{title}</Typography>\n </AccordionSummary>\n <AccordionDetails className={classnames(styles.accordionDetails, accordionDetailsClassName)}>\n <ul>\n {items.map((error, i) => (\n <ErrorComponent key={i} error={error} />\n ))}\n </ul>\n </AccordionDetails>\n </Accordion>\n ))}\n </div>\n ) : null;\n});\n\nErrorsPanel.displayName = 'ErrorsPanel';\n","import React from 'react';\n\nconst SvgHyperlink: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.245 12.75c0 .825-.467 1.5-1.045 1.5H4.8c-.583 0-1.05-.675-1.05-1.5v-7.5c0-.832.467-1.5 1.05-1.5h8.4c.578 0 1.05.668 1.05 1.5l-.005 7.5zM9.75 9.96v1.642l3-2.805L9.75 6v1.598c-2.918.404-4.08 2.4-4.5 4.402 1.043-1.402 2.415-2.04 4.5-2.04z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgHyperlink;\n","import React, {memo, useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeError, Metadata} from '@reltio/mdm-sdk';\nimport HyperlinkIcon from '../../../icons/Hyperlink';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {ScrollToElementContext, useMdmIsEditableMode, useMdmMetadata} from '../../../contexts';\nimport {getDisplayedAttributeTypesPath, getDisplayedErrorMessage, getDisplayedErrorPath} from './helpers';\n\nimport useStyles from '../styles';\n\ntype Props = {\n error: AttributeError;\n};\n\nexport const Error = memo(({error}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useMdmMetadata();\n const isEditableMode: boolean = useMdmIsEditableMode();\n const displayedMessage = getDisplayedErrorMessage(metadata, error);\n const displayedErrorPath = getDisplayedErrorPath(error);\n const displayedAttributeTypesPath = getDisplayedAttributeTypesPath(error);\n const {highlightError} = useContext(ScrollToElementContext);\n const showLink = error.uri || (error.parentUri && error.attributeTypeUri);\n\n return (\n <li>\n <div className={styles.errorWrapper}>\n {displayedAttributeTypesPath && (\n <span className={styles.attributeTypesPath}>{displayedAttributeTypesPath}</span>\n )}\n <span className={styles.errorTitle}>\n {displayedMessage}\n {showLink && isEditableMode && (\n <SmallIconButtonWithTooltip\n icon={HyperlinkIcon}\n size=\"XXS\"\n onClick={() => highlightError(error)}\n tooltipTitle={i18n.text('Go to error')}\n className={styles.goToIcon}\n />\n )}\n </span>\n {displayedErrorPath && <span className={styles.parents}>{displayedErrorPath}</span>}\n </div>\n </li>\n );\n});\n\nError.displayName = 'Error';\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {partition} from 'ramda';\nimport ErrorIcon from '@mui/icons-material/Warning';\nimport WarningIcon from '@mui/icons-material/Error';\nimport {AttributeError, isCriticalError} from '@reltio/mdm-sdk';\nimport {useCachedErrors} from './useCachedErrors';\nimport {ErrorsPanel} from './ErrorsPanel/ErrorsPanel';\nimport {Error} from './ErrorsPanel/Error';\n\nimport useStyles from './styles';\n\ntype Props = {\n attributesWithErrors?: AttributeError[];\n};\n\nexport const AttributesErrorsPanel = ({attributesWithErrors = []}: Props) => {\n const styles = useStyles();\n\n const cachedErrors = useCachedErrors(attributesWithErrors);\n const [errors, warnings]: [AttributeError[], AttributeError[]] = useMemo(\n () => partition(isCriticalError, cachedErrors),\n [cachedErrors]\n );\n\n const [expandedPanelId, setExpandedPanelId] = useState(null);\n const panels = useMemo(\n () =>\n [\n {\n id: 'errors',\n title: i18n.text('${number} ${errors}', {\n number: errors.length,\n errors: errors.length === 1 ? i18n.text('error') : i18n.text('errors')\n }),\n icon: <ErrorIcon className={classnames(styles.icon, styles.errorIcon)} />,\n items: errors,\n accordionClassName: styles.errorsAccordion,\n accordionDetailsClassName: styles.errorsAccordionDetails\n },\n {\n id: 'warnings',\n title: i18n.text('${number} ${warnings}', {\n number: warnings.length,\n warnings: warnings.length === 1 ? i18n.text('warning') : i18n.text('warnings')\n }),\n icon: <WarningIcon className={classnames(styles.icon, styles.warningIcon)} />,\n items: warnings,\n accordionClassName: styles.warningsAccordion,\n accordionDetailsClassName: styles.warningsAccordionDetails\n }\n ].filter(({items}) => items.length > 0),\n [errors, warnings, styles]\n );\n\n useEffect(() => {\n setExpandedPanelId('errors');\n }, [errors]);\n\n const handleChange = useCallback(\n (panelId: string) => (event, isExpanded: boolean) => {\n setExpandedPanelId(isExpanded ? panelId : null);\n },\n []\n );\n\n return panels.length > 0 ? (\n <ErrorsPanel panels={panels} expandedPanelId={expandedPanelId} onToggle={handleChange} ErrorComponent={Error} />\n ) : null;\n};\n","import {useRef} from 'react';\nimport {areErrorsEqual} from './ErrorsPanel/helpers';\n\nexport const useCachedErrors = (allErrors) => {\n const cacheForAllErrors = useRef(allErrors);\n const areEqualErrors = areErrorsEqual(allErrors, cacheForAllErrors.current);\n if (!areEqualErrors) {\n cacheForAllErrors.current = allErrors;\n }\n return cacheForAllErrors.current;\n};\n","import React from 'react';\n\nconst SvgFilter: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={18} height={18} viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M18 2V0H0v2l7 8v8l4-2v-6z\" fill=\"currentColor\" fillRule=\"nonzero\" stroke=\"none\" strokeWidth={1} />\n </svg>\n );\n};\n\nexport default SvgFilter;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n 'filterIcon--enabled': {\n color: theme.palette.primary.main\n },\n closeIcon: {\n position: 'absolute',\n right: '3px',\n bottom: '3px',\n transform: 'scale(0.5)'\n },\n button: {\n padding: '11px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport IconButton from '@mui/material/IconButton';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Tooltip from '@mui/material/Tooltip';\nimport FilterIcon from '../../../../icons/Filter';\nimport {useStyles} from './styles';\n\nconst FilterButton = ({enabled, onClick}) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={enabled ? i18n.text('Clear all filters') : i18n.text('Filter')}>\n <IconButton onClick={onClick} classes={{root: styles.button}} size=\"large\">\n {enabled ? (\n <>\n <FilterIcon className={styles['filterIcon--enabled']} />\n <CloseIcon color=\"primary\" className={styles.closeIcon} />\n </>\n ) : (\n <FilterIcon />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n\nFilterButton.propTypes = {\n enabled: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n searchButton: {\n marginLeft: 'auto !important',\n marginRight: '-4px',\n padding: '8px'\n },\n input: {\n maxWidth: '350px',\n flex: '1 0 200px',\n marginLeft: '20px',\n fontSize: '14px',\n background: 'rgba(0,0,0,0.03) 2px',\n padding: '4px 0',\n marginRight: '4px'\n },\n startAdornment: {\n color: 'rgba(0,0,0,0.54)',\n paddingLeft: '8px'\n }\n});\n","import React, {useState, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, F, pipe, propEq, T, tap, trim, when} from 'ramda';\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@mui/material/IconButton';\nimport Input from '@mui/material/Input';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport {SmallIconButton} from '../SmallIconButton';\nimport {getValue} from '../../core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n query: string;\n onChange: (value: string) => void;\n};\n\nexport const ExpandableSearchInput = ({query, onChange}: Props) => {\n const [value, setValue] = useState(query);\n const [isOpen, setIsOpen] = useState(!!query);\n useEffect(() => {\n setValue(query);\n }, [query]);\n const styles = useStyles();\n\n return isOpen ? (\n <Input\n className={styles.input}\n value={value}\n autoFocus={true}\n placeholder={i18n.text('Search')}\n disableUnderline={true}\n onChange={pipe(getValue, setValue)}\n startAdornment={\n <InputAdornment position=\"start\">\n <SearchIcon className={styles.startAdornment} />\n </InputAdornment>\n }\n endAdornment={\n <InputAdornment position=\"end\">\n <SmallIconButton\n size=\"S\"\n icon={CloseIcon}\n onClick={pipe(F, setIsOpen, always(''), tap(onChange), setValue)}\n />\n </InputAdornment>\n }\n onKeyPress={when(propEq('key', 'Enter'), pipe(always(value), trim, onChange))}\n />\n ) : (\n <IconButton className={styles.searchButton} onClick={pipe(T, setIsOpen)} size=\"large\">\n <SearchIcon />\n </IconButton>\n );\n};\n","import React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\n\nconst EmptyStub = () => <div style={{display: 'none'}} />;\n\ntype Props = {\n children: React.ReactNode;\n widthToHide: number;\n};\n\nconst HideOnShrink = ({widthToHide, children}: Props) => (\n <ReactResizeDetector\n handleWidth={true}\n render={({width}) => (width > widthToHide ? <>{children}</> : <EmptyStub />)}\n />\n);\n\nexport default HideOnShrink;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n menuItem: {\n whiteSpace: 'inherit',\n width: 200,\n padding: '9px 12px 7px'\n },\n itemText: {\n margin: 0\n },\n textPrimary: {\n fontSize: 14,\n lineHeight: '16px',\n fontWeight: 500\n },\n textSecondary: {\n fontSize: 10,\n lineHeight: '12px'\n }\n}));\n","import React, {forwardRef} from 'react';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport {noop} from '../../core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n item: {\n primary: string;\n secondary: string;\n onClick: () => void;\n };\n onMenuClose?: () => void;\n};\n\nconst MultilineMenuItem = forwardRef(({item, onMenuClose = noop}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {primary, secondary, onClick} = item;\n\n const handleClick = () => {\n onMenuClose();\n onClick();\n };\n\n return (\n <MenuItem className={styles.menuItem} ref={ref} onClick={handleClick}>\n <ListItemText\n primary={primary}\n secondary={secondary}\n className={styles.itemText}\n classes={{\n primary: styles.textPrimary,\n secondary: styles.textSecondary\n }}\n />\n </MenuItem>\n );\n});\n\nMultilineMenuItem.displayName = 'MultilineMenuItem';\n\nexport default MultilineMenuItem;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n paddingRight: '12px',\n paddingTop: '8px',\n paddingBottom: '8px',\n '& + &': {\n borderTop: '1px solid rgba(0,0,0, 0.12)'\n }\n },\n profileCardWrapper: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '4px'\n },\n profileCardContainer: {\n flexGrow: 1,\n paddingBottom: '8px',\n paddingTop: '8px'\n },\n rulesContainer: {\n paddingLeft: '52px',\n marginBottom: '8px',\n display: 'flex',\n alignItems: 'center'\n },\n dividerWrapper: {\n marginLeft: '12px',\n alignSelf: 'stretch'\n },\n divider: {\n borderColor: 'rgba(0,0,0,0.12)'\n },\n relevanceBadge: {\n marginLeft: '12px'\n }\n});\n","import React from 'react';\nimport {checkMatchRuleSummaryRelevance, Entity, Match, Metadata} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Divider from '@mui/material/Divider';\n\nimport ProfileCard from '../ProfileCard/ProfileCard';\nimport MatchRulesBlock from '../MatchRulesBlock/MatchRulesBlock';\nimport {RelevanceScoreBadge} from '../RelevanceScoreBadge/RelevanceScoreBadge';\nimport {useStyles} from './styles';\n\ntype Props = {\n entitiesMap: {\n [key: string]: Pick<Entity, 'uri' | 'type' | 'label'>;\n };\n entity: Entity;\n match: Match;\n metadata: Metadata;\n children?: React.ReactNode;\n className?: string;\n};\n\nexport const ProfileMatchCard = ({children, entitiesMap, entity, match, metadata, className}: Props) => {\n const styles = useStyles();\n const showRelevanceBadge = match.matchRuleSummaries?.some(checkMatchRuleSummaryRelevance);\n return (\n <div className={classnames(styles.root, className)}>\n <div className={styles.profileCardWrapper}>\n <ProfileCard entity={match.object} classes={{container: styles.profileCardContainer}} />\n {children}\n </div>\n <div className={styles.rulesContainer}>\n {match.matchRules && (\n <MatchRulesBlock match={match} metadata={metadata} entitiesMap={entitiesMap} entity={entity} />\n )}\n {showRelevanceBadge && (\n <>\n <div className={styles.dividerWrapper}>\n <Divider orientation=\"vertical\" className={styles.divider} />\n </div>\n <RelevanceScoreBadge\n className={styles.relevanceBadge}\n matchRuleSummaries={match.matchRuleSummaries}\n />\n </>\n )}\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n editor: {\n display: 'flex',\n flexDirection: 'column',\n padding: '0 24px 5px',\n overflowX: 'hidden'\n },\n title: {\n color: 'rgba(0, 0, 0, 0.6)',\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '24px',\n margin: '17px 0 24px'\n },\n item: {\n marginBottom: '20px'\n },\n dense: {\n marginBottom: 0\n },\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: '0 8px 10px',\n\n '& > button': {\n fontSize: '14px',\n lineHeight: '16px',\n marginLeft: '8px',\n padding: '10px 8px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n }\n }\n});\n","import React, {useCallback, useEffect, useMemo, useRef} from 'react';\nimport i18n from 'ui-i18n';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {always, concat, differenceWith, equals, forEach, omit, path, pick, pipe, prop, when, uniq, curry} from 'ramda';\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport {\n ConnectionType,\n createTemporaryEntity,\n findRelatedTemporaryEntities,\n getActivenessAttributes,\n getCreatableAttributeTypes,\n getEntityType,\n getErrorMessage,\n getErrorId,\n MetadataType,\n omitMarks,\n relationEditorAttributeTypesSelectionStrategy,\n RelationsConfigType,\n validateConnection,\n updateConnectionEntityLabel,\n isTempUri,\n isEmptyValue,\n getRelationAttributesList,\n getDefaultRelationTypeObject,\n getInOutRelations,\n isSuggestMode,\n isAttributeTypeError,\n getRelationUriFromConnection,\n getRelationEditorActiveError,\n getRelationAttributesFromConnection,\n getEntityUriFromConnection\n} from '@reltio/mdm-sdk';\nimport ConnectionRelationTypeSelector from '../ConnectionRelationTypeSelector/ConnectionRelationTypeSelector';\nimport ErrorWrapper from '../ErrorWrapper/ErrorWrapper';\nimport EntitySelector from '../attributes/editMode/EntitySelector/EntitySelector';\nimport AttributesList from '../attributes/editMode/AttributesList';\nimport {withContext} from '../../HOCs';\nimport {\n isHighlightedErrorType,\n ScrollToElementContext,\n useMdmAction,\n useMdmGlobalSearchRequestOptions,\n useMdmInitialConnection,\n useMdmInitialConnectionTempEntity,\n useMdmModifiedEntities,\n useMdmModifiedEntity,\n useMdmProfileErrors\n} from '../../contexts';\nimport {useScrollToAttributeError} from '../../hooks';\n\nimport {useStyles} from './styles';\n\nconst areRelatedEntitiesChanged = (initial, actual) =>\n initial.length !== actual.length || initial.some((_, i) => initial[i] !== actual[i]);\n\nconst RelationEditor = ({connection, config, mode, metadata, highlightedError}) => { //NOSONAR\n const styles = useStyles();\n\n const {relationType, direction} = connection.relation;\n const isNew = connection.isNew;\n const entityUri = getEntityUriFromConnection(connection);\n const relationUri = getRelationUriFromConnection(connection);\n const isTempEntity = isTempUri(entityUri);\n\n const mdmSetInitialInfo = useMdmAction('setInitialInfo');\n const setRelationType = useMdmAction('setRelationType');\n const closeRelationEditor = useMdmAction('closeRelationEditor');\n const entityCreated = useMdmAction('entityCreated');\n const entityDeleted = useMdmAction('entityDeleted');\n const setRelationEntity = useMdmAction('setRelationEntity');\n const errorDeactivated = useMdmAction('errorDeactivated');\n const errorsSet = useMdmAction('errorsSet');\n const addAttributes = useMdmAction('addAttributes');\n const modifyAttribute = useMdmAction('modifyAttribute');\n const removeAttribute = useMdmAction('removeAttribute');\n const addRelation = useMdmAction('addRelation');\n const editRelation = useMdmAction('editRelation');\n\n const initialConnection = useMdmInitialConnection(config.id, relationUri);\n const initialModifiedEntity = useMdmInitialConnectionTempEntity(config.id, relationUri);\n const mdmModifiedEntity = useMdmModifiedEntity(entityUri);\n const mdmAllModifiedEntities = useMdmModifiedEntities();\n const globalSearchRequestOptions = useMdmGlobalSearchRequestOptions(['ovOnly']);\n const profileErrors = useMdmProfileErrors();\n\n const error = getRelationEditorActiveError(connection, profileErrors);\n const modifiedEntity = isTempEntity ? mdmModifiedEntity : null;\n const allModifiedEntities = isTempEntity ? mdmAllModifiedEntities : null;\n\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n const {inRelations: inRelationTypes = [], outRelations: outRelationTypes = []} = useMemo(\n () =>\n getInOutRelations({\n content: connection.parentEntityUri ? config.contentSecondLevel : config.content,\n direction,\n relationType,\n mode,\n metadata\n }),\n [config, direction, relationType, mode, metadata, connection.parentEntityUri]\n );\n const firstLevelRelationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relationType),\n [relationType, metadata]\n );\n const attributeListEntity = useMemo(\n () => ({\n attributes: {\n ...getRelationAttributesFromConnection(connection)\n },\n ...getActivenessAttributes(connection.relation)\n }),\n [connection]\n );\n const relatedTempEntities = useMemo(\n () => findRelatedTemporaryEntities(allModifiedEntities, modifiedEntity),\n [allModifiedEntities, modifiedEntity]\n );\n const relatedTempEntitiesUrisHistory = useRef([]);\n\n const setInitialInfo = useCallback(\n (entity, connection) => {\n mdmSetInitialInfo(config.id, relationUri, entity, connection);\n },\n [mdmSetInitialInfo]\n );\n\n useEffect(() => {\n if (!initialConnection) {\n setInitialInfo(modifiedEntity, connection);\n }\n }, []);\n\n useEffect(() => {\n relatedTempEntitiesUrisHistory.current = pipe(\n concat(relatedTempEntities.map(prop('uri'))),\n uniq\n )(relatedTempEntitiesUrisHistory.current);\n }, [relatedTempEntities]);\n const initialRelatedTempEntities = useRef(relatedTempEntities);\n const defaultRelationType = getDefaultRelationTypeObject(inRelationTypes, outRelationTypes);\n const initialConnectionChangeablePart = pick(['entity', 'relation'], initialConnection || {});\n const connectionChangeablePart = pick(['entity', 'relation'], connection);\n const hasChanges =\n !isEmptyValue(path(['entity'], connection)) &&\n (!equals(initialConnectionChangeablePart, connectionChangeablePart) ||\n !equals(initialModifiedEntity, modifiedEntity) ||\n areRelatedEntitiesChanged(initialRelatedTempEntities.current, relatedTempEntities));\n const applyAction = useMemo(() => curry(isNew ? addRelation : editRelation), [isNew, addRelation, editRelation]);\n\n const onRelationTypeChange = useCallback(\n (relationType) => setRelationType(config.id, relationUri, relationType),\n [config, relationUri, setRelationType]\n );\n\n const handleClose = useCallback(\n () => closeRelationEditor(config.id, relationUri),\n [config, relationUri, closeRelationEditor]\n );\n\n const updateModifiedEntityLabel = useCallback(\n (connection) => {\n if (modifiedEntity) {\n const entityType = getEntityType(metadata, modifiedEntity.type);\n return updateConnectionEntityLabel(entityType, modifiedEntity, connection);\n }\n return connection;\n },\n [modifiedEntity, metadata]\n );\n\n const setModifiedEntity = useCallback((entity) => entityCreated(entity), [entityCreated]);\n\n const deleteModifiedEntity = useCallback((entityUri) => entityDeleted(entityUri), [entityDeleted]);\n\n const onChangeEntity = useCallback(\n (entity) => {\n if (modifiedEntity) {\n deleteModifiedEntity(modifiedEntity.uri);\n }\n setRelationEntity(config.id, relationUri, entity);\n if (error) {\n errorDeactivated(getErrorId(error));\n }\n },\n [config.id, relationUri, setRelationEntity, errorDeactivated, modifiedEntity, deleteModifiedEntity, error]\n );\n\n const validate = useCallback(() => {\n const errors = validateConnection(metadata, allModifiedEntities, connection);\n errorsSet(errors);\n return errors.length === 0;\n }, [connection, metadata, allModifiedEntities, errorsSet]);\n\n const resetErrors = useCallback(() => errorsSet([]), [errorsSet]);\n\n const onApply = useCallback(\n pipe(\n always(connection),\n when(\n validate,\n pipe(\n omitMarks,\n updateModifiedEntityLabel,\n omit(['initial']),\n applyAction(config.id),\n always(\n differenceWith(\n equals,\n relatedTempEntitiesUrisHistory.current,\n relatedTempEntities.map(prop('uri'))\n )\n ),\n forEach(deleteModifiedEntity),\n handleClose\n )\n )\n ),\n [connection, config, updateModifiedEntityLabel, validate, relatedTempEntities]\n );\n\n const onCancel = useCallback(() => {\n if (modifiedEntity !== initialModifiedEntity) {\n if (initialModifiedEntity) {\n setModifiedEntity(initialModifiedEntity);\n if (modifiedEntity && modifiedEntity.uri !== initialModifiedEntity.uri) {\n deleteModifiedEntity(modifiedEntity.uri);\n }\n } else {\n deleteModifiedEntity(modifiedEntity.uri);\n }\n }\n const initialTempEntities = initialRelatedTempEntities.current;\n const entitiesUrisToDelete = differenceWith(\n equals,\n relatedTempEntitiesUrisHistory.current,\n initialTempEntities.map(prop('uri'))\n );\n entitiesUrisToDelete.forEach(deleteModifiedEntity);\n initialTempEntities.forEach(setModifiedEntity);\n resetErrors();\n handleClose();\n }, [handleClose, setModifiedEntity, deleteModifiedEntity, resetErrors, modifiedEntity, initialModifiedEntity]);\n\n const onAddAttributes = useCallback(\n (params) => addAttributes(params.map((param) => ({...param, viewId: config.id}))),\n [config.id, addAttributes]\n );\n\n const onChangeAttribute = useCallback(\n (params) => modifyAttribute({...params, viewId: config.id}),\n [config.id, modifyAttribute]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => removeAttribute({...params, viewId: config.id}),\n [config.id, removeAttribute]\n );\n\n const onCreateEntity = useCallback(\n (entityTypeUri, initValue) => {\n const entityType = getEntityType(metadata, entityTypeUri);\n const newEntityAttrTypes = pipe(\n relationEditorAttributeTypesSelectionStrategy,\n getCreatableAttributeTypes(mode)\n )(entityType);\n const newEntity = createTemporaryEntity({\n entityTypeUri,\n initValue,\n attributeTypes: newEntityAttrTypes,\n metadata,\n mode\n });\n onChangeEntity(newEntity);\n setModifiedEntity(newEntity);\n },\n [setModifiedEntity, onChangeEntity, mode, metadata]\n );\n const errorMessage = getErrorMessage(error);\n\n const getEntityTypesUris = useCallback(() => {\n const {content, contentSecondLevel} = config;\n\n if (contentSecondLevel && connection.parentEntityUri) {\n return contentSecondLevel.entityTypes;\n }\n\n return content.entityTypes;\n }, [config, connection.parentEntityUri]);\n\n return (\n <>\n <div className={styles.editor}>\n <Typography className={styles.title}>\n {isNew ? i18n.text('Add new item') : i18n.text('Edit item')}\n </Typography>\n {defaultRelationType === null && (\n <ConnectionRelationTypeSelector\n className={styles.item}\n relation={connection.relation}\n inRelationTypes={inRelationTypes}\n outRelationTypes={outRelationTypes}\n onChange={onRelationTypeChange}\n />\n )}\n {Boolean(relationType) && (\n <>\n <div ref={ref} className={errorClassName}>\n <ErrorWrapper errorMessage={errorMessage}>\n <EntitySelector\n className={classnames(styles.item, {\n [styles.dense]:\n errorMessage ||\n (connection.entity && isTempUri(connection.entity.entityUri))\n })}\n entity={connection.entity || {}}\n entityTypesUris={getEntityTypesUris() || []}\n max={config.max || 20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n mode={mode}\n onChange={onChangeEntity}\n onCreate={isSuggestMode(mode) ? undefined : onCreateEntity}\n metadata={metadata}\n attributeTypesSelectionStrategy={relationEditorAttributeTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </div>\n <AttributesList\n className={styles.item}\n attrTypes={firstLevelRelationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={true}\n crosswalks={connection.crosswalks}\n mode={mode}\n parentUri={relationUri}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n </>\n )}\n </div>\n <div className={styles.actionButtons}>\n <Button onClick={onCancel}>{i18n.text('Cancel')}</Button>\n <Button color=\"primary\" disabled={!hasChanges} onClick={onApply}>\n {i18n.text('Apply')}\n </Button>\n </div>\n <Divider />\n </>\n );\n};\n\nRelationEditor.propTypes = {\n connection: ConnectionType,\n config: RelationsConfigType,\n mode: PropTypes.string,\n metadata: MetadataType,\n highlightedError: PropTypes.object\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue, {connection}) => {\n const {element = {}, type} = contextValue || {};\n const {relationUri, relationType} = connection.relation;\n const isHighlighted = isHighlightedErrorType(type) && isAttributeTypeError(element, relationUri, relationType);\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n RelationEditor\n);\n","import React, {useEffect, useState} from 'react';\nimport {createPortal} from 'react-dom';\nimport {MapInstance} from '../../types';\n\ntype Props = {\n children: React.ReactNode;\n className?: string;\n position: number;\n map: MapInstance;\n};\n\nexport const MapControlContainer = ({children, className, position, map}: Props) => {\n const [controlElement, setControlElement] = useState(null);\n\n useEffect(() => {\n const controlDiv = document.createElement('div');\n const divIndex = map.controls[position].length;\n map.controls[position].push(controlDiv);\n setControlElement(controlDiv);\n\n return () => {\n map.controls[position].removeAt(divIndex);\n };\n }, [map, position]);\n\n useEffect(() => {\n if (controlElement && className) {\n controlElement.classList.add(className);\n }\n }, [className, controlElement]);\n\n if (controlElement) {\n return createPortal(children, controlElement);\n }\n\n return null;\n};\n","import React from 'react';\n\nconst SvgRadius: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={18} height={18} viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M10.61 8.568A1.666 1.666 0 119.432 7.39l3.656-3.657a6.668 6.668 0 101.179 1.179L10.61 8.568zm-7.503 6.325A8.333 8.333 0 1114.893 3.107 8.333 8.333 0 013.107 14.893z\"\n fill=\"#000\"\n stroke=\"none\"\n strokeWidth={1}\n fillRule=\"evenodd\"\n opacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgRadius;\n","import React from 'react';\n\nconst SvgDraw: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M18.29 11.44a1.49 1.49 0 012.12 0l1.15 1.15c.59.58.59 1.53 0 2.12L16.27 20H13v-3.27zM18.174 4c0 1.71-.26 3.285-.932 4.563-.946 1.798-2.609 2.724-4.906 2.46l-.855-.116c-4.382-.544-6.626.53-6.626 3.609 0 1.968 1.105 2.924 3.267 3.304.692.121 1.306.165 2.234.176L11 18v2l-.698-.003c-1.016-.013-1.71-.063-2.526-.206-3.018-.53-4.921-2.176-4.921-5.274 0-4.819 3.71-6.378 9.52-5.505 1.575.237 2.506-.255 3.098-1.38.451-.858.666-2.02.697-3.307L16.174 4h2zM18 13.97l-3.45 3.45v1.03h1.03L19.03 15 18 13.97z\"\n id=\"Draw_svg__a\"\n />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"Draw_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Draw_svg__a\" />\n </mask>\n <g mask=\"url(#Draw_svg__b)\" fill=\"#000\" fillOpacity={0.54}>\n <path d=\"M0 0h24v24H0z\" />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgDraw;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n margin: '2px',\n display: 'flex',\n alignItems: 'center'\n },\n button: {\n color: 'rgba(0,0,0,0.54)',\n padding: 0,\n height: '24px',\n width: '24px',\n minWidth: 0\n },\n icon: {\n width: '20px',\n height: '20px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport {withTooltip} from '../../../../HOCs';\nimport HighlightOffIcon from '@mui/icons-material/HighlightOff';\nimport {MAP_DRAWING_MODES} from '../../../../constants';\nimport RadiusIcon from '../../../../icons/Radius';\nimport DrawIcon from '../../../../icons/Draw';\nimport {DrawingMode, DrawingModes} from '../../types';\nimport {useStyles} from './styles';\n\nexport const ButtonWithTooltip = withTooltip(Button);\n\nconst getIcon = (mode: DrawingMode) => {\n switch (mode) {\n case MAP_DRAWING_MODES.CIRCLE:\n return RadiusIcon;\n case MAP_DRAWING_MODES.POLYGON:\n return DrawIcon;\n default:\n return null;\n }\n};\n\ntype Props = {\n onDrawingModeChanged: (value: DrawingMode | null) => void;\n drawingMode: DrawingMode | null;\n drawingModes: DrawingModes;\n hasActiveOverlay: boolean;\n onClearOverlay: () => void;\n};\n\nexport const TopRightMapControls = ({\n drawingMode,\n drawingModes = [],\n hasActiveOverlay,\n onDrawingModeChanged,\n onClearOverlay\n}: Props) => {\n const styles = useStyles();\n\n const changeDrawingModeTo = (drawingMode) => () => {\n onDrawingModeChanged(drawingMode);\n };\n\n return (\n <div className={styles.container}>\n {drawingMode || hasActiveOverlay ? (\n <ButtonWithTooltip\n tooltipTitle={i18n.text('Clear area')}\n className={styles.button}\n onClick={hasActiveOverlay ? onClearOverlay : changeDrawingModeTo(null)}\n >\n <HighlightOffIcon className={styles.icon} />\n </ButtonWithTooltip>\n ) : (\n drawingModes.map((mode) => {\n const Icon = getIcon(mode);\n return (\n <ButtonWithTooltip\n tooltipTitle={i18n.text('Draw area')}\n key={mode}\n className={styles.button}\n onClick={changeDrawingModeTo(mode)}\n >\n <Icon className={styles.icon} />\n </ButtonWithTooltip>\n );\n })\n )}\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n height: '28px',\n marginRight: '7px',\n marginLeft: 0\n },\n label: {\n fontSize: '11px',\n alignSelf: 'center',\n lineHeight: '13px',\n marginLeft: '2px',\n letterSpacing: 0\n },\n checkbox: {\n width: '20px',\n height: '20px',\n boxSizing: 'content-box',\n padding: '5px',\n '& svg': {\n width: '16px',\n height: '16px'\n }\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport {useStyles} from './styles';\n\ntype Props = {\n isSearchOnMapMove: boolean;\n onChangeIsSearchOnMapMove: (value: boolean) => void;\n};\n\nexport const TopCenterMapControls = ({isSearchOnMapMove, onChangeIsSearchOnMapMove}: Props) => {\n const styles = useStyles();\n const onChange = (event) => {\n onChangeIsSearchOnMapMove(event.target.checked);\n };\n return (\n <FormControlLabel\n classes={{\n root: styles.container,\n label: styles.label\n }}\n control={<Checkbox checked={isSearchOnMapMove} onChange={onChange} className={styles.checkbox} />}\n label={i18n.text('Search as I move the map')}\n />\n );\n};\n","import {MAP_DRAWING_MODES, MAP_MINIMUM_SCALE_RADIUS} from '../../../constants';\nimport {DrawingMode, EntityMarker, Overlay, MapInstance} from '../types';\n\nexport const getMapBoundsPolygon = (map: MapInstance) => {\n const bounds = map.getBounds();\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n const neLat = ne.lat(),\n neLng = ne.lng(),\n swLat = sw.lat(),\n swLng = sw.lng();\n const additionalPoint1 = [];\n const additionalPoint2 = [];\n if (!((neLng === 180 && swLng === -180) || (neLng === -180 && swLng === 180))) {\n // excluding corner case when we see more than one \"map unfolding\" (in this case google maps automatically set 180 and -180),\n // we can't describe map bounds as just rectangle, because lng distance can be more than 180\",\n // so we need to add additional points to have correct polygon\n const center = bounds.getCenter();\n additionalPoint1.push([neLat, center.lng()]);\n additionalPoint2.push([swLat, center.lng()]);\n }\n return [[neLat, neLng], ...additionalPoint1, [neLat, swLng], [swLat, swLng], ...additionalPoint2, [swLat, neLng]];\n};\n\nexport const getDrawingMode = (drawingMode: DrawingMode) => {\n switch (drawingMode) {\n case MAP_DRAWING_MODES.CIRCLE:\n return window.google.maps.drawing.OverlayType.CIRCLE;\n case MAP_DRAWING_MODES.POLYGON:\n return window.google.maps.drawing.OverlayType.POLYGON;\n default:\n return null;\n }\n};\n\nexport const fitMapBoundsForMarkers = (markers: EntityMarker[], map: MapInstance, overlay: Overlay) => {\n const bounds = new window.google.maps.LatLngBounds();\n\n markers.forEach((marker) => bounds.extend(marker.point));\n\n if (markers.length === 1) {\n const center = bounds.getCenter();\n\n bounds.extend(\n new window.google.maps.LatLng(\n center.lat() + MAP_MINIMUM_SCALE_RADIUS,\n center.lng() + MAP_MINIMUM_SCALE_RADIUS\n )\n );\n bounds.extend(\n new window.google.maps.LatLng(\n center.lat() - MAP_MINIMUM_SCALE_RADIUS,\n center.lng() - MAP_MINIMUM_SCALE_RADIUS\n )\n );\n }\n\n map.fitBounds(bounds);\n\n if (overlay) {\n fitMapBoundsForOverlay(map, overlay, bounds);\n }\n};\n\nexport const fitMapBoundsForOverlay = (map: MapInstance, overlay: Overlay, existingBounds?) => {\n if (overlay.path) {\n const bounds = existingBounds || new window.google.maps.LatLngBounds();\n overlay.path.forEach(({lat, lng}) => bounds.extend(new window.google.maps.LatLng(lat, lng)));\n map.fitBounds(bounds);\n }\n};\n","export const MARKER = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg width=\"22px\" height=\"32px\" viewBox=\"0 0 22 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>View / Map / Marker / Large</title>\n <defs>\n <radialGradient cx=\"50%\" cy=\"50.2950175%\" fx=\"50%\" fy=\"50.2950175%\" r=\"49.7049825%\" gradientTransform=\"translate(0.500000,0.502950),scale(0.777778,1.000000),rotate(90.000000),scale(1.000000,1.293560),translate(-0.500000,-0.502950)\" id=\"radialGradient-1\">\n <stop stop-color=\"#000000\" offset=\"0%\"></stop>\n <stop stop-color=\"#000000\" stop-opacity=\"0\" offset=\"100%\"></stop>\n </radialGradient>\n <path d=\"M20,1 C20.5522847,1 21,1.44771525 21,2 L21,20 C21,20.5522847 20.5522847,21 20,21 L15.2374606,21.0021908 C14.9306693,21.3935449 14.6510143,21.7632851 14.3885453,22.1256523 C12.8309725,24.2760522 12,26.0137017 12,27.5 C12,28.0522847 11.5522847,28.5 11,28.5 C10.4477153,28.5 10,28.0522847 10,27.5 C10,25.7886708 8.84033182,23.6810997 6.73798027,21.0014567 L2,21 C1.44771525,21 1,20.5522847 1,20 L1,2 C1,1.44771525 1.44771525,1 2,1 L20,1 Z\" id=\"path-2\"></path>\n </defs>\n <g id=\"View-/-Map-/-Marker-/-Large\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <ellipse id=\"Oval\" fill=\"url(#radialGradient-1)\" opacity=\"0.12\" cx=\"11\" cy=\"28.5\" rx=\"4.5\" ry=\"3.5\"></ellipse>\n <path d=\"M21,0 C21.5522847,-1.01453063e-16 22,0.44771525 22,1 L22,21 C22,21.5522847 21.5522847,22 21,22 L15.7283832,22.0012846 C15.5422129,22.2445529 15.3664776,22.4802332 15.1984183,22.7122576 C13.7560833,24.7035592 13,26.2846074 13,27.5 L13,27.5 L12.9945143,27.6492623 C12.9181651,28.6841222 12.0543618,29.5 11,29.5 C9.8954305,29.5 9,28.6045695 9,27.5 L9,27.5 L8.99485006,27.3298651 C8.91582184,26.0024976 7.93016704,24.2171459 6.23940611,22.000704 L1,22 C0.44771525,22 6.76353751e-17,21.5522847 0,21 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 L21,0 Z\" id=\"Path-3\" fill=\"#FFFFFF\"></path>\n <mask id=\"mask-3\" fill=\"white\">\n <use xlink:href=\"#path-2\"></use>\n </mask>\n <use id=\"Path-2\" fill=\"#FFFFFF\" fill-rule=\"nonzero\" xlink:href=\"#path-2\"></use>\n <rect id=\"Entity-type\" fill=\"#24A8E8\" mask=\"url(#mask-3)\" x=\"0\" y=\"0\" width=\"22\" height=\"32\"></rect>\n </g>\n</svg>`;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n popper: {\n maxWidth: '263px',\n minWidth: '150px',\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)',\n backgroundColor: 'white',\n borderRadius: '2px'\n }\n});\n","import React, {memo, useCallback, useContext, useRef, useState} from 'react';\nimport {pathEq} from 'ramda';\nimport {Marker, InfoBox, MarkerProps} from '@react-google-maps/api';\nimport ProfileCard from '../../ProfileCard/ProfileCard';\nimport Popper from '../../Popper/Popper';\nimport {debounce, svg2Url} from '@reltio/mdm-sdk';\nimport {EntityMarkerContext} from '../../../contexts';\nimport {MARKER} from './icons/marker.inline.svg';\nimport {HOVERED_MARKER} from './icons/marker-hover.inline.svg';\nimport {EntityMarker as EntityMarkerType} from '../types';\nimport {useStyles} from './styles';\n\nconst HIDE_DEBOUNCE_INTERVAL = 50;\nconst MARKER_WIDTH = 22;\nconst MARKER_HEIGHT = 32;\nconst MARKER_CARD_MARGIN = 8;\n\nconst hoveredMarkerIcon = svg2Url(HOVERED_MARKER);\nconst markerIcon = svg2Url(MARKER);\n\ntype Props = {\n marker: EntityMarkerType;\n onClick: (marker: EntityMarkerType) => void;\n} & Omit<MarkerProps, 'onClick' | 'icon' | 'position' | 'visible' | 'onMouseOver' | 'onMouseOut'>;\n\nconst EntityMarker = ({marker, onClick, ...otherProps}: Props) => {\n const styles = useStyles();\n const popperAnchor = useRef();\n const [hovered, setHovered] = useState(false);\n const {activeEntityUri} = useContext(EntityMarkerContext);\n const isActive = pathEq(['entity', 'uri'], activeEntityUri, marker);\n const position = {lat: marker.point.lat, lng: marker.point.lng};\n const setHoveredDebounced = useCallback(debounce(setHovered, HIDE_DEBOUNCE_INTERVAL), []);\n const onMouseOver = useCallback(() => setHoveredDebounced(true), [setHoveredDebounced]);\n const onMouseOut = useCallback(() => setHoveredDebounced(false), [setHoveredDebounced]);\n const handleClick = useCallback(() => onClick(marker), [onClick, marker]);\n\n return (\n <>\n <Popper\n anchorEl={popperAnchor.current}\n open={hovered}\n className={styles.popper}\n modal={false}\n placement=\"top\"\n >\n <ProfileCard entity={marker.entity} onMouseOver={onMouseOver} onMouseOut={onMouseOut} />\n </Popper>\n <Marker\n icon={{\n url: hovered || isActive ? hoveredMarkerIcon : markerIcon,\n // needed for IE:\n scaledSize: new google.maps.Size(MARKER_WIDTH, MARKER_HEIGHT) //eslint-disable-line\n }}\n position={position}\n onClick={handleClick}\n visible={marker.visible !== false}\n onMouseOver={onMouseOver}\n onMouseOut={onMouseOut}\n {...otherProps}\n />\n <InfoBox\n options={{\n alignBottom: true,\n pane: 'mapPane',\n pixelOffset: new google.maps.Size(0, -(MARKER_HEIGHT + MARKER_CARD_MARGIN)), //eslint-disable-line\n closeBoxURL: '',\n enableEventPropagation: true,\n disableAutoPan: true\n }}\n position={position}\n >\n <span ref={popperAnchor} />\n </InfoBox>\n </>\n );\n};\n\nexport default memo(EntityMarker);\n","export const HOVERED_MARKER = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg width=\"22px\" height=\"32px\" viewBox=\"0 0 22 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>View / Map / Marker / Large (hover)</title>\n <defs>\n <radialGradient cx=\"50%\" cy=\"50.2950175%\" fx=\"50%\" fy=\"50.2950175%\" r=\"49.7049825%\" gradientTransform=\"translate(0.500000,0.502950),scale(0.777778,1.000000),rotate(90.000000),scale(1.000000,1.293560),translate(-0.500000,-0.502950)\" id=\"radialGradient-1\">\n <stop stop-color=\"#000000\" offset=\"0%\"></stop>\n <stop stop-color=\"#000000\" stop-opacity=\"0\" offset=\"100%\"></stop>\n </radialGradient>\n <path d=\"M21,0 C21.5522847,-1.01453063e-16 22,0.44771525 22,1 L22,21 C22,21.5522847 21.5522847,22 21,22 L15.7283832,22.0012846 C15.5422129,22.2445529 15.3664776,22.4802332 15.1984183,22.7122576 C13.7560833,24.7035592 13,26.2846074 13,27.5 L13,27.5 L12.9945143,27.6492623 C12.9181651,28.6841222 12.0543618,29.5 11,29.5 C9.8954305,29.5 9,28.6045695 9,27.5 L9,27.5 L8.99485006,27.3298651 C8.91582184,26.0024976 7.93016704,24.2171459 6.23940611,22.000704 L1,22 C0.44771525,22 6.76353751e-17,21.5522847 0,21 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 L21,0 Z\" id=\"path-2\"></path>\n </defs>\n <g id=\"View-/-Map-/-Marker-/-Large-(hover)\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <ellipse id=\"Oval\" fill=\"url(#radialGradient-1)\" opacity=\"0.32\" cx=\"11\" cy=\"28.5\" rx=\"6\" ry=\"4.66666667\"></ellipse>\n <mask id=\"mask-3\" fill=\"white\">\n <use xlink:href=\"#path-2\"></use>\n </mask>\n <use id=\"Path-2\" fill=\"#FFFFFF\" xlink:href=\"#path-2\"></use>\n <rect id=\"Entity-type\" fill=\"#24A8E8\" mask=\"url(#mask-3)\" x=\"0\" y=\"0\" width=\"22\" height=\"32\"></rect>\n <path d=\"M20,2 L20,20 L14.755,20 L14.6905172,20.0815309 C14.3562717,20.5012516 14.0578656,20.8886742 13.7817711,21.2616986 L13.5786724,21.5390469 C11.92787,23.8181606 11.079024,25.6311217 11.0052669,27.2674145 L11.0052669,27.2674145 L11,27.5 L10.9968324,27.3203844 C10.9285422,25.3781621 9.75347502,23.1598866 7.22124201,20.0010865 L2,20 L2,2 L20,2 Z\" id=\"Path\" fill=\"#FFFFFF\" fill-rule=\"nonzero\" mask=\"url(#mask-3)\"></path>\n </g>\n</svg>`;\n","import {useEffect} from 'react';\nimport {usePrevious} from '../../../hooks';\nimport {fitMapBoundsForMarkers, fitMapBoundsForOverlay} from '../helpers';\n\nexport const useFitMapBounds = ({markers, activeOverlay, isSearchOnMapMove, map}) => {\n const apiIsLoaded = Boolean(map && window.google);\n const prevMarkers = usePrevious(markers);\n const prevActiveOverlay = usePrevious(activeOverlay);\n const prevApiIsLoaded = usePrevious(apiIsLoaded);\n\n useEffect(() => {\n const activeOverlayChanged = prevActiveOverlay !== activeOverlay;\n const markersChanged = prevMarkers !== markers;\n const apiIsLoadedChanged = prevApiIsLoaded !== apiIsLoaded;\n\n const shouldUseFitMapBoundsForOverlay =\n apiIsLoaded && activeOverlay && (activeOverlayChanged || apiIsLoadedChanged);\n const shouldUseFitMapBoundsForMarkers =\n apiIsLoaded && !isSearchOnMapMove && markers.length && (markersChanged || apiIsLoadedChanged);\n\n if (shouldUseFitMapBoundsForMarkers) {\n fitMapBoundsForMarkers(markers, map, activeOverlay);\n } else if (shouldUseFitMapBoundsForOverlay) {\n fitMapBoundsForOverlay(map, activeOverlay);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiIsLoaded, markers, activeOverlay]);\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n mapControlContainer: {\n borderRadius: '2px',\n backgroundColor: '#FFFFFF',\n boxShadow: '0 1px 3px 0 rgba(0,0,0,0.15)',\n margin: '10px'\n }\n});\n","import React, {useCallback, useMemo, useRef, useState} from 'react';\nimport {propEq, isEmpty, prop} from 'ramda';\nimport {\n GoogleMap,\n useJsApiLoader,\n GoogleMapProps,\n Polygon,\n DrawingManager,\n MarkerClusterer,\n LoadScriptProps,\n MarkerProps,\n MarkerClustererProps\n} from '@react-google-maps/api';\nimport {noop} from '../../core/utils';\nimport {MapControlContainer} from './MapControls/MapControlContainer/MapControlContrainer';\nimport {TopRightMapControls} from './MapControls/TopRightMapControls/TopRightMapControls';\nimport {TopCenterMapControls} from './MapControls/TopCenterMapControls/TopCenterMapControls';\nimport {getMapBoundsPolygon, getDrawingMode} from './helpers';\nimport EntityMarker from './EntityMarker/EntityMarker';\nimport {DEFAULT_GOOGLE_MAP_OPTIONS, DEFAULT_OVERLAY_OPTIONS, MAP_DRAWING_MODES} from '../../constants';\nimport {DrawingModes, EntityMarker as Marker, MapBounds, Overlay, OverlayPath} from './types';\nimport {useFitMapBounds} from './hooks/useFitMapBounds';\n\nimport {useStyles} from './styles';\n\nconst ON_MAP_MOVE_DEBOUNCE_INTERVAL = 1000;\n\nconst libraries = ['drawing'] as LoadScriptProps['libraries'];\n\ntype MarkerClustererOptions = MarkerClustererProps['options'];\ntype Props = {\n markers?: Marker[];\n mapKey: string;\n defaultZoom?: GoogleMapProps['zoom'];\n defaultCenter?: GoogleMapProps['center'];\n loadingElement: JSX.Element;\n isSearchOnMapMove?: boolean;\n isSearchEnabled?: boolean;\n activeOverlay?: Overlay;\n overlayOptions?: google.maps.PolygonOptions | google.maps.CircleOptions;\n drawingModes?: DrawingModes;\n markerClusterer?: boolean;\n markerClustererOptions?: MarkerClustererOptions;\n mapOptions?: google.maps.MapOptions;\n mapContainerClassName?: string;\n onMapBoundsChanged?: (value: MapBounds | null) => void;\n onOverlayUpdated?: (value: {data: OverlayPath; type: string}) => void;\n onMarkerClicked?: (value: Marker) => void;\n};\n\nexport const ReltioMap = ({\n markers = [],\n mapKey,\n defaultZoom,\n defaultCenter,\n loadingElement,\n isSearchOnMapMove,\n isSearchEnabled,\n activeOverlay,\n overlayOptions = {},\n drawingModes = [],\n markerClusterer,\n markerClustererOptions,\n mapOptions = {},\n mapContainerClassName,\n onMapBoundsChanged = noop,\n onOverlayUpdated = noop,\n onMarkerClicked = noop\n}: Props) => {\n const styles = useStyles();\n const {isLoaded, loadError} = useJsApiLoader({\n googleMapsApiKey: mapKey,\n libraries\n });\n\n const mapMoveEndTimer = useRef(null);\n const [map, setMap] = useState<google.maps.Map>(null);\n const [polygon, setPolygon] = useState(null);\n const [drawingMode, setDrawingMode] = useState(null);\n\n useFitMapBounds({markers, activeOverlay, map, isSearchOnMapMove});\n\n const allOverlayOptions = useMemo(() => ({...DEFAULT_OVERLAY_OPTIONS, ...overlayOptions}), [overlayOptions]);\n const googleMapOptions = useMemo(() => ({...DEFAULT_GOOGLE_MAP_OPTIONS, ...mapOptions}), [mapOptions]);\n\n const handleChangeIsSearchOnMapMove = useCallback(\n (isSearchOnMapMove: boolean) => {\n onMapBoundsChanged(isSearchOnMapMove ? getMapBoundsPolygon(map) : null);\n setDrawingMode(null);\n clearTimeout(mapMoveEndTimer.current);\n },\n [map, onMapBoundsChanged]\n );\n\n const handleMapMoveStart = useCallback(() => {\n clearTimeout(mapMoveEndTimer.current);\n }, []);\n\n const handleMapMoveEnd = useCallback(() => {\n if (!isSearchOnMapMove) return;\n onMapBoundsChanged(getMapBoundsPolygon(map));\n }, [isSearchOnMapMove, map, onMapBoundsChanged]);\n\n const handleMapIdle = useCallback(() => {\n if (!isSearchOnMapMove) return;\n clearTimeout(mapMoveEndTimer.current);\n mapMoveEndTimer.current = setTimeout(handleMapMoveEnd, ON_MAP_MOVE_DEBOUNCE_INTERVAL);\n }, [handleMapMoveEnd, isSearchOnMapMove]);\n\n const handleOverlayChange = useCallback(\n (e, propOverlay?) => {\n const polygonStateOverlay = polygon && {type: MAP_DRAWING_MODES.POLYGON, overlay: polygon};\n const stateOverlay = propOverlay || polygonStateOverlay;\n\n if (isEmpty(stateOverlay)) return;\n\n const {overlay, type} = stateOverlay;\n\n const getPolygonLatLngCoordinates = () =>\n overlay\n .getPath()\n .getArray()\n .map((latlng) => [latlng.lat(), latlng.lng()]);\n\n const getCircleParameters = () => ({radius: overlay.getRadius() / 1000, center: overlay.getCenter()});\n\n const typeActions = {\n [MAP_DRAWING_MODES.POLYGON]: getPolygonLatLngCoordinates,\n [MAP_DRAWING_MODES.CIRCLE]: getCircleParameters\n };\n\n const data = typeActions[type]?.();\n\n if (!data) return;\n\n onOverlayUpdated({data, type});\n },\n [onOverlayUpdated, polygon]\n );\n\n const handleOverlayComplete = useCallback(\n (type) => (overlay) => {\n handleOverlayChange(null, {type, overlay});\n overlay.setMap(null);\n setDrawingMode(null);\n },\n [handleOverlayChange]\n );\n\n const handleClearOverlay = useCallback(() => {\n onOverlayUpdated(null);\n }, [onOverlayUpdated]);\n\n const renderMarkers = (clusterer?: MarkerProps['clusterer']) => {\n return markers\n .filter(prop('point'))\n .map((marker) => (\n <EntityMarker key={marker.id} marker={marker} clusterer={clusterer} onClick={onMarkerClicked} />\n ));\n };\n\n const renderMarkerClusterer = (options?: MarkerClustererOptions) => {\n return <MarkerClusterer options={options}>{renderMarkers}</MarkerClusterer>;\n };\n\n if (loadError) {\n return null;\n }\n\n if (!isLoaded) {\n return loadingElement;\n }\n\n const shouldRenderDrawingManager = isSearchEnabled && Boolean(drawingModes.length);\n const shouldRenderRightMapControls = map && isSearchEnabled && Boolean(drawingModes.length);\n const shouldRenderCenterMapControls = map && isSearchEnabled;\n const shouldRenderPolygon =\n !getDrawingMode(drawingMode) && activeOverlay && propEq('type', MAP_DRAWING_MODES.POLYGON, activeOverlay);\n\n return (\n <GoogleMap\n mapTypeId={window.google.maps.MapTypeId.ROADMAP}\n options={googleMapOptions}\n onLoad={setMap}\n zoom={defaultZoom}\n center={defaultCenter}\n onZoomChanged={handleMapMoveStart}\n onDragStart={handleMapMoveStart}\n onIdle={handleMapIdle}\n mapContainerClassName={mapContainerClassName}\n >\n {shouldRenderRightMapControls && (\n <MapControlContainer\n className={styles.mapControlContainer}\n position={window.google.maps.ControlPosition.TOP_RIGHT}\n map={map}\n >\n <TopRightMapControls\n hasActiveOverlay={!!activeOverlay}\n drawingModes={drawingModes}\n drawingMode={drawingMode}\n onDrawingModeChanged={setDrawingMode}\n onClearOverlay={handleClearOverlay}\n />\n </MapControlContainer>\n )}\n\n {shouldRenderCenterMapControls && (\n <MapControlContainer\n className={styles.mapControlContainer}\n position={window.google.maps.ControlPosition.TOP_CENTER}\n map={map}\n >\n <TopCenterMapControls\n onChangeIsSearchOnMapMove={handleChangeIsSearchOnMapMove}\n isSearchOnMapMove={isSearchOnMapMove}\n />\n </MapControlContainer>\n )}\n\n {markerClusterer ? renderMarkerClusterer(markerClustererOptions) : renderMarkers()}\n\n {shouldRenderPolygon && (\n <Polygon\n onLoad={setPolygon}\n path={activeOverlay.path}\n editable={true}\n options={allOverlayOptions}\n onMouseUp={handleOverlayChange}\n onDragEnd={handleOverlayChange}\n />\n )}\n\n {shouldRenderDrawingManager && (\n <DrawingManager\n onPolygonComplete={handleOverlayComplete(MAP_DRAWING_MODES.POLYGON)}\n onCircleComplete={handleOverlayComplete(MAP_DRAWING_MODES.CIRCLE)}\n drawingMode={getDrawingMode(drawingMode)}\n options={{\n drawingControl: false,\n circleOptions: allOverlayOptions,\n polygonOptions: allOverlayOptions\n }}\n />\n )}\n </GoogleMap>\n );\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst VerticalDivider = ({height, margin}) => (\n <div\n style={{\n width: '1px',\n height: `${height}px`,\n borderLeft: '1px solid rgba(0,0,0,0.38)',\n margin: `0 ${margin}px`,\n flexShrink: '0'\n }}\n />\n);\n\nVerticalDivider.propTypes = {\n height: PropTypes.number,\n margin: PropTypes.number\n};\n\nexport default VerticalDivider;\n","import {useEffect} from 'react';\nimport {evolve, map} from 'ramda';\nimport {entity as History, HistoryDiff, HistoryMode, wrapInArrayIfNeeded} from '@reltio/mdm-sdk';\nimport {useMdmAction, useMdmEntity, useMdmHistoryDiff, useMdmHistoryMode, useMdmHistorySlice} from '../../../contexts';\n\nexport const defaultHistoryDiff: HistoryDiff = {\n appearance: {},\n attributes: {},\n roles: [],\n tags: []\n};\n\nconst fixRefEntity = evolve({\n refEntity: wrapInArrayIfNeeded,\n refRelation: wrapInArrayIfNeeded\n});\n\nconst prepareHistorySlice = (historySlice) => {\n if (historySlice) {\n return evolve({\n attributes: map(map(fixRefEntity))\n })(historySlice);\n }\n return historySlice;\n};\n\nexport const useHistoryDiff = () => {\n const setHistoryDiff = useMdmAction('setHistoryDiff');\n const historySlice = useMdmHistorySlice();\n const historyDiff = useMdmHistoryDiff();\n const historyMode = useMdmHistoryMode();\n const entity = useMdmEntity();\n\n useEffect(() => {\n if (historySlice) {\n const {aEntity, bEntity} = historySlice;\n const historyManager = History.HistoryManager.createHistoryManager();\n const historyDiff: HistoryDiff = historyManager.computeEntityHistoryDiff(\n prepareHistorySlice(historyMode === HistoryMode.Current ? entity : bEntity),\n prepareHistorySlice(aEntity)\n );\n setHistoryDiff(historyDiff);\n }\n }, [historySlice, historyMode, setHistoryDiff, entity]);\n\n return historyDiff || defaultHistoryDiff;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n dueDate: {\n marginTop: 0,\n marginBottom: 0\n },\n dueDateInput: {\n height: '40px'\n },\n inputLabel: {\n fontSize: '14px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useWorkflowDueDate} from '../../hooks/useWorkflowDueDate';\nimport {DateEditor} from '../../../editors';\n\nimport {useStyles} from './styles';\n\ntype Props = Pick<WorkflowTaskData, 'taskId' | 'dueDate'> & {\n isTaskOpen?: WorkflowTaskData['isOpen'];\n className?: string;\n};\n\nconst DueDateField = ({taskId, dueDate, isTaskOpen, className}: Props) => {\n const styles = useStyles();\n const {updateDueDate, updateRequestIsInProgress, readOnly} = useWorkflowDueDate({\n dueDate,\n taskId,\n isOpen: isTaskOpen\n });\n\n return (\n <DateEditor\n disabled={updateRequestIsInProgress || readOnly}\n value={dueDate}\n label={i18n.text('Due date')}\n onChange={pipe((date) => date && date.getTime(), updateDueDate)}\n slotProps={{\n textField: {\n className: classnames(styles.dueDate, className),\n size: 'small',\n InputProps: {className: styles.dueDateInput},\n InputLabelProps: {\n classes: {root: styles.inputLabel}\n }\n }\n }}\n />\n );\n};\n\nexport default DueDateField;\n","import {useState, useCallback, useContext} from 'react';\nimport {updateDueDateForTask, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\nimport {isOpenTask} from '../helpers';\nimport {useMdmTenant, useMdmWorkflowEnvironmentUrl, useMdmWorkflowPath} from '../../../contexts';\n\nexport const useWorkflowDueDate = ({\n dueDate,\n taskId,\n isOpen\n}: Pick<WorkflowTaskData, 'dueDate' | 'taskId' | 'isOpen'>) => {\n const {updateTaskState} = useContext(WorkflowTasksContext) || {};\n\n const workflowPath = useMdmWorkflowPath();\n const environment = useMdmWorkflowEnvironmentUrl();\n const tenant = useMdmTenant();\n\n const safePromise = useSafePromise();\n const [updateRequestIsInProgress, setUpdateRequestIsInProgress] = useState(false);\n const checkWorkflowPermission = useWorkflowCheckPermission();\n const canUpdateTask = checkWorkflowPermission('UPDATE_TASK') && isOpenTask(isOpen);\n\n const updateDueDate = useCallback(\n (newValue: number) => {\n if (workflowPath && canUpdateTask && taskId && newValue && dueDate !== newValue) {\n setUpdateRequestIsInProgress(true);\n safePromise(\n updateDueDateForTask({\n taskId,\n workflowPath,\n environment,\n tenant,\n dueDate: newValue\n })\n )\n .then(() => {\n updateTaskState?.(taskId, {dueDate: newValue});\n })\n .catch(showWorkflowError)\n .finally(() => {\n setUpdateRequestIsInProgress(false);\n });\n }\n },\n [workflowPath, taskId, environment, tenant, updateTaskState, safePromise, dueDate, canUpdateTask]\n );\n return {updateDueDate, updateRequestIsInProgress, readOnly: !canUpdateTask};\n};\n","import {useState, useCallback, useContext, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {updatePriorityForTask, WorkflowPriority, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\nimport {isOpenTask} from '../helpers';\nimport {useMdmTenant, useMdmWorkflowEnvironmentUrl, useMdmWorkflowPath} from '../../../contexts';\n\ntype PriorityOption = {label: string; value: number};\n\nexport const useWorkflowPriority = ({\n priority,\n taskId,\n isOpen\n}: Pick<WorkflowTaskData, 'taskId' | 'priority' | 'isOpen'>) => {\n const {updateTaskState} = useContext(WorkflowTasksContext) || {};\n\n const workflowPath = useMdmWorkflowPath();\n const environment = useMdmWorkflowEnvironmentUrl();\n const tenant = useMdmTenant();\n\n const safePromise = useSafePromise();\n const [updateRequestIsInProgress, setUpdateRequestIsInProgress] = useState(false);\n const checkWorkflowPermission = useWorkflowCheckPermission();\n const canUpdateTask = checkWorkflowPermission('UPDATE_TASK') && isOpenTask(isOpen);\n\n const updatePriority = useCallback(\n (newValue: PriorityOption) => {\n const {value: newPriority} = newValue;\n if (workflowPath && canUpdateTask && taskId && priority !== newPriority) {\n setUpdateRequestIsInProgress(true);\n safePromise(\n updatePriorityForTask({\n taskId,\n workflowPath,\n environment,\n tenant,\n priority: newPriority\n })\n )\n .then(() => {\n updateTaskState?.(taskId, {priority: newPriority});\n })\n .catch(showWorkflowError)\n .finally(() => {\n setUpdateRequestIsInProgress(false);\n });\n }\n },\n [workflowPath, taskId, environment, tenant, updateTaskState, safePromise, priority, canUpdateTask]\n );\n\n const priorities: PriorityOption[] = useMemo(\n () => [\n {\n label: i18n.text('Low'),\n value: WorkflowPriority.low\n },\n {\n label: i18n.text('Medium'),\n value: WorkflowPriority.medium\n },\n {\n label: i18n.text('High'),\n value: WorkflowPriority.high\n },\n {\n label: i18n.text('Urgent'),\n value: WorkflowPriority.urgent\n }\n ],\n []\n );\n return {priorities, updatePriority, updateRequestIsInProgress, readOnly: !canUpdateTask};\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {propEq} from 'ramda';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\n\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\nimport {useWorkflowPriority} from '../../hooks/useWorkflowPriority';\n\ntype Props = Pick<WorkflowTaskData, 'taskId' | 'priority'> & {\n isTaskOpen?: WorkflowTaskData['isOpen'];\n className?: string;\n};\n\nconst PrioritySelector = ({taskId, priority, isTaskOpen, className}: Props) => {\n const {priorities, updatePriority, updateRequestIsInProgress, readOnly} = useWorkflowPriority({\n taskId,\n priority,\n isOpen: isTaskOpen\n });\n const disabled = updateRequestIsInProgress || readOnly;\n\n return (\n <DropDownSelector\n className={className}\n isDisabled={disabled}\n options={priorities}\n onChange={updatePriority}\n hideSelectedOptions={false}\n label={i18n.text('Priority')}\n value={priorities.find(propEq('value', priority))}\n TextFieldProps={{disabled}}\n height={40}\n />\n );\n};\n\nexport default PrioritySelector;\n","import {makeStyles} from '@mui/styles';\n\nconst pointColor = '#d8d8d8';\nconst lineStyle = '2px solid rgba(0,0,0,0.06)';\nconst pointSize = 6;\nconst blockWidth = 56;\nconst linePadding = 10;\nconst pointPadding = 15;\n\nexport const useStyles = makeStyles({\n decorator: {\n display: 'flex',\n alignItems: 'stretch'\n },\n lineBlock: {\n width: `${blockWidth}px`,\n flexShrink: 0\n },\n withLinePadding: {\n '& $noLine': {\n height: `${linePadding}px`\n },\n '& $line': {\n height: `calc(100% - ${linePadding}px)`\n }\n },\n noLine: {\n height: '0'\n },\n line: {\n height: '100%',\n position: 'relative',\n marginLeft: '31px',\n borderLeft: lineStyle,\n '&:before': {\n position: 'absolute',\n height: pointSize,\n width: pointSize,\n borderRadius: '50%',\n left: -pointSize + 1,\n top: `${pointPadding}px`,\n background: pointColor,\n content: '\"\"',\n display: 'block',\n border: '1px solid white'\n },\n '&$plain': {\n '&:before': {\n width: 0,\n border: 'none'\n }\n },\n '&$last': {\n height: `${pointPadding}px`\n }\n },\n content: {\n flex: 1,\n minWidth: 0\n },\n plain: {},\n last: {},\n rowDivider: {\n marginLeft: 0\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport Divider from '@mui/material/Divider';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n plain?: boolean;\n first?: boolean;\n last?: boolean;\n transparent?: boolean;\n divider?: boolean;\n};\n\nconst LineDecorator = ({className, children, plain, first, last, transparent, divider}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(className, styles.decorator)}>\n <div className={classnames(styles.lineBlock, {[styles.withLinePadding]: first})}>\n {!transparent && (\n <>\n <div className={styles.noLine} />\n <div className={classnames(styles.line, {[styles.plain]: plain}, {[styles.last]: last})} />\n </>\n )}\n </div>\n <div className={styles.content}>\n {children}\n {divider && <Divider className={styles.rowDivider} light variant=\"inset\" />}\n </div>\n </div>\n );\n};\n\nexport default LineDecorator;\n","import {WorkflowTaskData} from '@reltio/mdm-sdk';\n\nlet taskToColor = {};\nconst COLORS = [\n '#DC057B',\n '#5DC003',\n '#FEC92F',\n '#F57F27',\n '#B71137',\n '#056B97',\n '#4499AE',\n '#BD81BE',\n '#5F3577',\n '#A68560',\n '#555962'\n];\nlet colorIndex = 0;\n\nexport const resetTaskToColor = () => {\n taskToColor = {};\n colorIndex = 0;\n};\n\nexport const useWorkflowColor = ({\n processDefinitionDisplayName\n}: Pick<WorkflowTaskData, 'processDefinitionDisplayName'>) => {\n const hash = processDefinitionDisplayName;\n if (!taskToColor[hash]) {\n taskToColor[hash] = COLORS[colorIndex];\n colorIndex++;\n if (colorIndex > COLORS.length - 1) {\n colorIndex = 0;\n }\n }\n return taskToColor[hash];\n};\n","import React from 'react';\n\nconst SvgCollaborationIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M4 17.17L5.17 16H20V4H4v13.17zM20 2c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H6l-4 4V4c0-1.1.9-2 2-2h16zm-3 9H7v2h10v-2zm0-4H7v2h10V7z\"\n id=\"CollaborationIcon_svg__a\"\n />\n </defs>\n <g transform=\"translate(-2 -2)\" stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"CollaborationIcon_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#CollaborationIcon_svg__a\" />\n </mask>\n <path fillOpacity={0.54} fill=\"#000\" mask=\"url(#CollaborationIcon_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgCollaborationIcon;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n card: {\n borderBottom: '1px solid rgba(0,0,0,0.06)'\n },\n withBackground: {\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n lineWrapper: {\n position: 'relative'\n },\n icon: {\n position: 'absolute',\n top: '8px',\n left: '16px',\n width: '32px',\n height: '32px',\n zIndex: 1\n },\n line: ({color}: {color: string}) => ({\n borderLeft: `3px solid ${color}`,\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0\n }),\n info: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n wordWrap: 'break-word',\n lineHeight: '15px'\n },\n commentsInfo: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: '-4px',\n marginTop: '7px'\n },\n commentsIcon: {\n width: '11px',\n height: '11px',\n marginLeft: '2px',\n marginRight: '6px',\n marginTop: '-2px'\n },\n infoValue: {\n color: theme.palette.text.primary\n },\n infoBlock: {\n display: 'flex',\n flexDirection: 'row',\n marginBottom: '5px'\n },\n header: {\n display: 'flex',\n flexDirection: 'row',\n paddingBottom: '12px'\n },\n flex: {\n flex: 1\n },\n caption: {\n fontSize: '16px',\n color: theme.palette.text.primary\n },\n title: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n marginBottom: '-4px'\n },\n flag: {\n height: '13px',\n width: '13px',\n marginTop: '-2px',\n stroke: '#000000',\n fill: 'none',\n margin: '2px 5px 0 5px'\n },\n date: {\n fontSize: '13px',\n color: theme.palette.text.primary\n },\n mainInfo: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1\n },\n controlsBox: {\n marginRight: '16px',\n marginBottom: '12px',\n marginTop: '13px'\n },\n controlsInRow: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: '20px'\n },\n priority: {\n width: '162px'\n },\n comments: {\n marginLeft: '11px'\n }\n}));\n","import React, {useState} from 'react';\nimport classnames from 'classnames';\nimport FlagIcon from '@mui/icons-material/Flag';\nimport i18n from 'ui-i18n';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport CollapseButton from '../../../CollapseButton/CollapseButton';\nimport AssigneeSelector from '../../components/AssigneeSelector/AssigneeSelector';\nimport DueDateField from '../../components/DueDateField/DueDateField';\nimport PrioritySelector from '../../components/PrioritySelector/PrioritySelector';\nimport WorkflowComments from '../../components/WorkflowComments';\nimport {getDCRId} from '../../helpers';\nimport TaskActions from '../../components/TaskActions/TaskActions';\nimport LineDecorator from '../../components/LineDecorator/LineDecorator';\nimport {useWorkflowColor} from '../../hooks/useWorkflowColor';\nimport {useWorkflowCheckPermission} from '../../hooks/useWorkflowCheckPermission';\nimport CollaborationIcon from '../../../../icons/CollaborationIcon';\nimport {useWorkflowActions} from '../../hooks/useWorkflowActions';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n task: WorkflowTaskData;\n children?: React.ReactNode;\n actions?: React.ReactNode;\n Icon?: React.ElementType;\n};\n\nconst GenericWorkflowTaskCard = ({task, children, actions, Icon}: Props) => {\n const {\n taskId,\n dueDate,\n priority,\n assignee,\n createdBy,\n createTime,\n displayName: step,\n processDefinitionDisplayName,\n objectURIs,\n processInstanceComments,\n possibleActions,\n isOpen: isTaskOpen,\n preferredAction\n } = task;\n const dcrId = getDCRId(objectURIs);\n const color = useWorkflowColor({processDefinitionDisplayName});\n const styles = useStyles({color});\n const [isExpanded, setExpanded] = useState(false);\n const checkWorkflowPermission = useWorkflowCheckPermission();\n const canViewComments = checkWorkflowPermission('VIEW_PROCESS_INSTANCE_COMMENTS');\n const {actions: workflowActions, actionRequestIsInProgress} = useWorkflowActions({\n taskId,\n possibleActions,\n assignee,\n isOpen: isTaskOpen\n });\n return (\n <div className={styles.card}>\n <div className={classnames({[styles.withBackground]: isExpanded})}>\n <div className={styles.lineWrapper}>\n <div className={styles.line} />\n {Icon && <Icon className={styles.icon} />}\n <LineDecorator plain first transparent={!isExpanded}>\n <div className={styles.mainInfo}>\n <div className={styles.title}>\n <div className={classnames(styles.caption, styles.flex)}>\n {i18n.text(processDefinitionDisplayName)}\n </div>\n <FlagIcon className={styles.flag} />\n <Tooltip title={i18n.text('Due date')}>\n <span className={styles.date}>{i18n.date(dueDate, 'L')}</span>\n </Tooltip>\n <CollapseButton\n isOpen={isExpanded}\n size=\"L\"\n onClick={() => {\n setExpanded(!isExpanded);\n }}\n />\n </div>\n <div className={styles.infoBlock} data-reltio-id=\"info-block\">\n <div className={styles.flex}>\n {dcrId && (\n <div className={styles.info}>\n {i18n.text('DCR ID')}\n {': '}\n <span className={styles.infoValue}>{dcrId}</span>\n </div>\n )}\n <div className={styles.info}>\n {i18n.text('Created by')}\n {': '}\n <span className={styles.infoValue}>{createdBy}</span> {i18n.text('on')}{' '}\n <span className={styles.infoValue}>{i18n.date(createTime, 'L')}</span>\n </div>\n <div className={styles.info}>\n {i18n.text('Step')}\n {': '}\n <span className={styles.infoValue}>{step}</span>\n </div>\n {canViewComments && processInstanceComments?.length > 0 && (\n <div className={styles.commentsInfo}>\n <CollaborationIcon className={styles.commentsIcon} />\n <div className={styles.infoValue}>{processInstanceComments.length}</div>\n </div>\n )}\n </div>\n {actions || (\n <TaskActions actions={workflowActions} isInProgress={actionRequestIsInProgress} />\n )}\n </div>\n </div>\n </LineDecorator>\n </div>\n {isExpanded && (\n <LineDecorator plain>\n <div className={styles.controlsBox}>\n <div className={styles.controlsInRow}>\n <DueDateField taskId={taskId} dueDate={dueDate} isTaskOpen={isTaskOpen} />\n <PrioritySelector\n taskId={taskId}\n priority={priority}\n className={styles.priority}\n isTaskOpen={isTaskOpen}\n />\n </div>\n <AssigneeSelector taskId={taskId} assignee={assignee} isTaskOpen={isTaskOpen} />\n </div>\n </LineDecorator>\n )}\n </div>\n {isExpanded && (\n <>\n {children}\n {canViewComments && (\n <div className={styles.comments}>\n <WorkflowComments\n workflowActions={workflowActions}\n actionRequestIsInProgress={actionRequestIsInProgress}\n preferredAction={preferredAction}\n taskId={taskId}\n processInstanceComments={processInstanceComments}\n isTaskOpen={isTaskOpen}\n />\n </div>\n )}\n </>\n )}\n </div>\n );\n};\n\nexport default GenericWorkflowTaskCard;\n","import React from 'react';\n\nconst SvgDcrTaskIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={28} height={28} viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <circle fill=\"#42A5F5\" cx={14} cy={14} r={14} />\n <path\n d=\"M16.43 9.87c0 1.59 1.25 2.87 2.79 2.87 1.53 0 2.78-1.28 2.78-2.87C22 8.29 20.75 7 19.22 7c-1.54 0-2.79 1.29-2.79 2.87zm1.4 0c0-.79.62-1.43 1.39-1.43.77 0 1.39.64 1.39 1.43 0 .79-.62 1.44-1.39 1.44-.77 0-1.39-.65-1.39-1.44zm-6.26 8.26c0-1.59-1.25-2.87-2.79-2.87-1.53 0-2.78 1.28-2.78 2.87C6 19.71 7.25 21 8.78 21c1.54 0 2.79-1.29 2.79-2.87zM8.09 9.15v4.31h1.39v-2.87h2.78v2.15l2.78-2.87L12.26 7v2.15H8.09zm11.82 9.7v-4.31h-1.39v2.87h-2.78v-2.15l-2.78 2.87L15.74 21v-2.15h4.17z\"\n fill=\"#FFF\"\n opacity={0.87}\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDcrTaskIcon;\n","import i18n from 'ui-i18n';\nimport {allPass, always, equals, evolve, pipe, prop, when} from 'ramda';\nimport {\n AttributeType,\n DataTypes,\n DCRAttributeValue,\n DCRObjectsInfo,\n DCRTypes,\n DCREntityInfo,\n getAttrDataTypeDefinition,\n isUrl,\n DCROperationTypes,\n DCRRelationInfo,\n DCRValue,\n PrimitiveValue\n} from '@reltio/mdm-sdk';\n\nexport const getOperationType = (type: string, oldValue?: DCRAttributeValue) => {\n switch (type) {\n case DCRTypes.CREATE_RELATIONSHIP:\n case DCRTypes.INSERT_ATTRIBUTE:\n return DCROperationTypes.ADDED;\n case DCRTypes.UPDATE_TAGS:\n case DCRTypes.UPDATE_ROLES:\n case DCRTypes.UPDATE_ATTRIBUTE:\n return DCROperationTypes.EDITED;\n case DCRTypes.DELETE_ATTRIBUTE:\n case DCRTypes.DELETE_RELATIONSHIP:\n return DCROperationTypes.DELETED;\n case DCRTypes.PIN_ATTRIBUTE:\n return oldValue?.pin ? DCROperationTypes.PIN_DELETED : DCROperationTypes.PINNED;\n case DCRTypes.IGNORE_ATTRIBUTE:\n return oldValue?.ignored ? DCROperationTypes.IGNORE_DELETED : DCROperationTypes.IGNORED;\n }\n};\n\nexport const getOperationLabel = (operation: DCROperationTypes) => {\n const labels = {\n [DCROperationTypes.ADDED]: i18n.text('added'),\n [DCROperationTypes.EDITED]: i18n.text('edited'),\n [DCROperationTypes.DELETED]: i18n.text('deleted'),\n [DCROperationTypes.PINNED]: i18n.text('pinned'),\n [DCROperationTypes.PIN_DELETED]: i18n.text('pin deleted'),\n [DCROperationTypes.IGNORED]: i18n.text('ignored'),\n [DCROperationTypes.IGNORE_DELETED]: i18n.text('ignore deleted')\n };\n\n return labels[operation] || '';\n};\n\nexport const getAttributeDescription = (\n attrType: AttributeType,\n value: DCRAttributeValue,\n currentEntityUri: string,\n objectsInfo: DCRObjectsInfo = {}\n) => {\n let objectLabel: string, objectUri: string;\n\n const relation = objectsInfo[value.refObjectURI] as DCRRelationInfo;\n if (relation) {\n objectUri = currentEntityUri === relation.startObjectUri ? relation.endObjectUri : relation.startObjectUri;\n objectLabel =\n currentEntityUri === relation.startObjectUri ? relation.endObjectLabel : relation.startObjectLabel;\n } else if (value.refEntity) {\n objectUri = value.refEntity.objectURI;\n objectLabel = (objectsInfo[objectUri] as DCREntityInfo).label;\n }\n\n return {\n objectUri,\n objectLabel\n };\n};\n\nexport const getDataTypeDefinition = (attributeType: AttributeType, attributeValue: DCRValue) => {\n return when(\n allPass([pipe(prop('type'), equals(DataTypes.TYPE_STRING)), () => isUrl(attributeValue as PrimitiveValue)]),\n evolve({type: always(DataTypes.TYPE_URL)})\n )(getAttrDataTypeDefinition(attributeType));\n};\n","import {complement, curry, flatten, is, isEmpty, pathOr, propOr, times} from 'ramda';\nimport {\n AttributeType,\n DataTypes,\n DCRAttributes,\n DCRAttributeValue,\n DCRChange,\n DCRTypes,\n DCREntityInfo,\n getAttributeTypeSubAttributes,\n getLabel,\n getRelationAttributesList,\n getRelationType,\n isEmptyValue,\n isSpecialAttribute,\n Metadata,\n DCRRelationInfo\n} from '@reltio/mdm-sdk';\n\nimport {Diff} from '../types/diffTypes';\nimport {getFilteredAttrTypes} from '../../../../attributes/helpers/attributesView';\nimport {getOperationType} from './helpers';\n\nconst getValues = (attributes: DCRAttributes | DCRChange, attrType: AttributeType) => {\n if ('newValue' in attributes || 'oldValue' in attributes) {\n const {newValue, oldValue, type} = attributes;\n const newAttrValues = pathOr([], ['value', attrType.name])(newValue);\n const oldAttrValues = pathOr([], ['value', attrType.name])(oldValue);\n\n const length = Math.max(newAttrValues.length, oldAttrValues.length);\n return times((index) => {\n const attributeValue = {\n newValue: newAttrValues[index],\n oldValue: oldAttrValues[index],\n type\n };\n\n return [{value: attributeValue}];\n }, length);\n }\n const values = attributes[attrType.name];\n return values ? [values] : [];\n};\n\nconst getEntityChanges = curry((metadata: Metadata, entityInfo: DCREntityInfo, changes: DCRAttributes) => {\n const attrTypes: AttributeType[] = getFilteredAttrTypes(metadata, entityInfo.type, [], []);\n return getAttributesList(metadata, attrTypes, changes);\n});\n\nconst getRelationChanges = curry(\n (metadata: Metadata, relationInfo: DCRRelationInfo, changes: DCRAttributes, changeType: DCRTypes): Diff[] => {\n const addRelationOperationIfNeeded = (changes: DCRAttributes, changeType: DCRTypes) => {\n if (changeType === DCRTypes.CREATE_RELATIONSHIP || isEmptyValue(changes)) {\n const operation = getOperationType(changeType);\n return operation ? {operation} : {};\n }\n return {};\n };\n\n const relationType = getRelationType(metadata, relationInfo.type);\n const attrTypes = getRelationAttributesList(metadata, relationInfo.type);\n return flatten([\n {\n level: 1,\n label: propOr('', 'label', relationType),\n attributeType: relationType,\n attributeValue: {...relationInfo, ...changes},\n ...addRelationOperationIfNeeded(changes, changeType)\n },\n getAttributesList(metadata, attrTypes, changes, 2)\n ]);\n }\n);\n\nconst getAttributesList = (\n metadata: Metadata,\n attrTypes: AttributeType[],\n attributes: DCRAttributes | DCRChange,\n level = 0\n): Diff[] => {\n return flatten(\n attrTypes\n .map((attrType) => {\n return getValues(attributes, attrType).map((value) => {\n return value.map((attributeValue) => {\n return dcrAttributesFactory(metadata, attrType, attributeValue, level);\n });\n });\n })\n .filter(complement(isEmpty))\n );\n};\n\nconst getSimpleAttributeValue = (attributeType: AttributeType, attributeValue: DCRAttributeValue) => {\n const value = isSpecialAttribute(attributeType) ? attributeValue : attributeValue.value;\n return is(Object, value) ? value : {newValue: attributeValue, type: DCRTypes.INSERT_ATTRIBUTE};\n};\n\nconst dcrAttributesFactory = (\n metadata: Metadata,\n attributeType: AttributeType,\n attributeValue: DCRAttributeValue,\n level: number\n) => {\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n case DataTypes.TYPE_IMAGE:\n return getNestedAttributeChange(metadata, attributeType, attributeValue, level);\n case DataTypes.TYPE_REFERENCE:\n return getReferenceAttributeChange(metadata, attributeType, attributeValue, level);\n default: {\n const value = getSimpleAttributeValue(attributeType, attributeValue);\n return getSimpleAttributeChange(attributeType, value as DCRChange, level);\n }\n }\n};\n\nconst getNestedAttributeChange = (\n metadata: Metadata,\n attributeType: AttributeType,\n attributeValue: DCRAttributeValue,\n level: number\n) => {\n const attributeTypeList = getAttributeTypeSubAttributes({} as Metadata, attributeType);\n const label = getLabel(attributeType?.label || attributeType?.name);\n return [\n {level, label, attributeType, attributeValue},\n getAttributesList(metadata, attributeTypeList, attributeValue.value as DCRAttributes, level + 1)\n ];\n};\n\nconst getReferenceAttributeChange = (\n metadata: Metadata,\n attributeType: AttributeType,\n attributeValue: DCRAttributeValue,\n level: number\n) => {\n const attributeTypeList = getAttributeTypeSubAttributes(metadata, attributeType);\n const label = attributeType?.label || attributeType?.name;\n\n return [\n {level, label, attributeType, attributeValue},\n getAttributesList(metadata, attributeTypeList, attributeValue.value as DCRAttributes, level + 1)\n ];\n};\n\nconst getDiffParameters = ({newValue, oldValue, type}: DCRChange) => {\n return type === DCRTypes.UPDATE_ATTRIBUTE ? {type, newValue, oldValue} : {type, newValue: oldValue || newValue};\n};\n\nconst getSimpleAttributeChange = (attributeType: AttributeType, attributeValue: DCRChange, level: number) => {\n const {newValue, oldValue, type} = getDiffParameters(attributeValue);\n const operation = getOperationType(type, oldValue as DCRAttributeValue);\n\n const label = attributeType?.label || attributeType?.name;\n\n return {\n attributeType,\n newValue,\n oldValue,\n operation,\n label,\n level\n };\n};\n\nexport {getEntityChanges, getRelationChanges};\n","import {\n concat,\n curry,\n difference,\n flatten,\n identity,\n isNil,\n omit,\n path,\n pick,\n pipe,\n propEq,\n propOr,\n reduce\n} from 'ramda';\nimport {\n DCRAttributes,\n DCRAttributeValue,\n DCRChange,\n DCRChanges,\n DCRObjectInfo,\n DCRTypes,\n Entity,\n EntityAttrTypes,\n generateTempUri,\n getRoleLabel,\n GroupedObjectsInfo,\n isEmptyValue,\n Metadata,\n Relation\n} from '@reltio/mdm-sdk';\nimport {Diff} from '../types/diffTypes';\nimport {getEntityChanges, getRelationChanges} from './attributesHelpers';\n\nconst ATTRIBUTE_DELIMITER = '/';\nconst SPECIAL_ATTRIBUTES_NAMES = [\n 'defaultProfilePicValue',\n EntityAttrTypes.tags.name,\n EntityAttrTypes.roles.name,\n EntityAttrTypes.startDate.name,\n EntityAttrTypes.endDate.name\n];\n\nconst prepareStartOrEndDate = ({newValue, oldValue}: DCRChange): DCRChange[] => {\n const parseValue = (value) => (isNaN(value) || isEmptyValue(value) ? value : parseInt(value));\n\n const isExistedValue = (value) => value?.length && !isEmptyValue(value) && !isEmptyValue(value[0]);\n\n const isExistNewValue = isExistedValue(newValue);\n const isExistOldValue = isExistedValue(oldValue);\n if (isExistNewValue && isExistOldValue) {\n return [\n {\n type: DCRTypes.UPDATE_ATTRIBUTE,\n oldValue: {value: parseValue(oldValue[0])},\n newValue: {value: parseValue(newValue[0])}\n }\n ];\n } else if (isExistNewValue) {\n return [\n {\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: parseValue(newValue[0])}\n }\n ];\n } else if (isExistOldValue) {\n return [\n {\n type: DCRTypes.DELETE_ATTRIBUTE,\n oldValue: {value: parseValue(oldValue[0])}\n }\n ];\n }\n};\n\nconst prepareRolesOrTags = (metadata: Metadata, change: DCRChange): DCRChange[] => {\n const {newValue = [], oldValue = [], type} = change;\n const getLabel = type === DCRTypes.UPDATE_ROLES ? getRoleLabel(metadata) : identity;\n\n const diffNewValue = difference(newValue, oldValue);\n const diffOldValue = difference(oldValue, newValue);\n\n const items = [];\n\n if (diffNewValue.length) {\n items.push({\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: diffNewValue.map(getLabel).join(', ')}\n });\n }\n\n if (diffOldValue.length) {\n items.push({\n type: DCRTypes.DELETE_ATTRIBUTE,\n oldValue: {value: diffOldValue.map(getLabel).join(', ')}\n });\n }\n\n return items;\n};\n\nconst getPath = (change: DCRChange): string => {\n const {type, attributePath, refObjectURI, refAttributeType} = change;\n\n const path = type === DCRTypes.INSERT_ATTRIBUTE ? generateTempUri(attributePath) : attributePath;\n\n if (refObjectURI) {\n const typePath = refAttributeType.split('/attributes/');\n const id = refObjectURI.split(ATTRIBUTE_DELIMITER)[1];\n return [typePath[1], id, path].join(ATTRIBUTE_DELIMITER);\n }\n return path;\n};\n\nconst prepareAttribute = (container: DCRAttributes, change: DCRChange) => {\n const changePath = getPath(change);\n\n const pathArray = changePath.split(ATTRIBUTE_DELIMITER);\n\n let holder: DCRAttributes | DCRAttributeValue = container;\n\n for (let i = 0; i < pathArray.length - 1; i = i + 2) {\n const key = pathArray[i];\n const id = pathArray[i + 1];\n\n const currentValue = (holder[key] || []).find(propEq('id', id));\n\n const newValue = pathArray.length === i + 2 ? change : {};\n const value = currentValue ? currentValue : ({id, value: newValue} as DCRAttributeValue);\n\n const refObjectURI = change.refObjectURI?.indexOf(id) >= 0 && change.refObjectURI;\n if (refObjectURI) {\n value.refObjectURI = refObjectURI;\n }\n\n if (isNil(currentValue)) {\n holder[key] = (holder[key] || []).concat(value);\n }\n\n holder = value.value;\n }\n return container;\n};\n\nconst createEntityOrRelation = (metadata: Metadata, value: Entity | Relation) => {\n const {attributes = {}, startDate, endDate} = value;\n const {roles, tags, defaultProfilePicValue} = value as Entity;\n const newObject = {...attributes} as DCRAttributes;\n\n if (defaultProfilePicValue) {\n newObject['defaultProfilePicValue'] = [defaultProfilePicValue];\n }\n if (roles) {\n newObject[EntityAttrTypes.roles.name] = [\n {\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: roles.map(getRoleLabel(metadata)).join(', ')}\n }\n ];\n }\n if (tags) {\n newObject[EntityAttrTypes.tags.name] = [\n {\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: tags.join(', ')}\n }\n ];\n }\n if (startDate) {\n newObject[EntityAttrTypes.startDate.name] = [\n {\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: startDate}\n }\n ];\n }\n if (endDate) {\n newObject[EntityAttrTypes.endDate.name] = [\n {\n type: DCRTypes.INSERT_ATTRIBUTE,\n newValue: {value: endDate}\n }\n ];\n }\n return newObject;\n};\n\nconst mergeAttributesInChange = (\n metadata: Metadata,\n objectInfo: DCRObjectInfo,\n change: DCRChange,\n container: DCRAttributes = {}\n) => {\n const {type} = change;\n\n switch (type) {\n case DCRTypes.UPDATE_PROFILE_PIC_BY_URL:\n container['defaultProfilePicValue'] = [change.newValue];\n break;\n case DCRTypes.UPDATE_TAGS:\n container[EntityAttrTypes.tags.name] = prepareRolesOrTags(metadata, change);\n break;\n case DCRTypes.UPDATE_ROLES: {\n container[EntityAttrTypes.roles.name] = prepareRolesOrTags(metadata, change);\n break;\n }\n case DCRTypes.UPDATE_START_DATE:\n container[EntityAttrTypes.startDate.name] = prepareStartOrEndDate(change);\n break;\n case DCRTypes.UPDATE_END_DATE:\n container[EntityAttrTypes.endDate.name] = prepareStartOrEndDate(change);\n break;\n case DCRTypes.CREATE_RELATIONSHIP:\n case DCRTypes.CREATE_ENTITY: {\n return {\n ...container,\n ...createEntityOrRelation(metadata, change.newValue as Entity | Relation)\n };\n }\n case DCRTypes.INSERT_ATTRIBUTE:\n case DCRTypes.UPDATE_ATTRIBUTE:\n case DCRTypes.DELETE_ATTRIBUTE:\n case DCRTypes.PIN_ATTRIBUTE:\n case DCRTypes.IGNORE_ATTRIBUTE:\n prepareAttribute(container, change);\n break;\n default:\n break;\n }\n\n return container;\n};\n\nconst updateRelation = (metadata: Metadata, changes: DCRChanges, relationInfo: GroupedObjectsInfo['relations'][0]) => {\n const relationChanges: DCRChange[] = propOr([], relationInfo.uri)(changes);\n return relationChanges.reduce((result: DCRAttributes, change) => {\n return mergeAttributesInChange(metadata, relationInfo, change, result);\n }, {});\n};\n\nconst mergeChanges = (\n metadata: Metadata,\n changes: DCRChanges,\n entityInfo: GroupedObjectsInfo['entity'],\n relationsInfo: GroupedObjectsInfo['relations']\n): [Diff[], Diff[]] => {\n const getAttributeChanges = (attributeName: string) =>\n pipe(pick([attributeName]), getEntityChanges(metadata, entityInfo));\n const concatChanges = curry((getters, attributesTree) =>\n reduce((acc, getter) => concat(acc, getter(attributesTree)), [], getters)\n );\n\n const entityInfoChanges: DCRChange[] = propOr([], entityInfo.uri)(changes);\n\n const changesTree = entityInfoChanges.reduce((result: DCRAttributes, change: DCRChange) => {\n return mergeAttributesInChange(metadata, entityInfo, change, result);\n }, {});\n\n const relationsTrees = relationsInfo.map((relationInfo) => updateRelation(metadata, changes, relationInfo));\n\n const entityChanges: Diff[] = concatChanges(\n [\n pipe(omit(SPECIAL_ATTRIBUTES_NAMES), getEntityChanges(metadata, entityInfo)),\n getAttributeChanges(EntityAttrTypes.roles.name),\n getAttributeChanges(EntityAttrTypes.tags.name),\n getAttributeChanges(EntityAttrTypes.startDate.name),\n getAttributeChanges(EntityAttrTypes.endDate.name)\n ],\n changesTree\n );\n\n const relationsChanges: Diff[] = flatten(\n relationsInfo.map((relationInfo, index) => {\n const changeType: DCRTypes = path([relationInfo.uri, 0, 'type'], changes);\n return getRelationChanges(metadata, relationInfo, relationsTrees[index], changeType);\n })\n );\n\n return [entityChanges, relationsChanges];\n};\n\nexport {mergeChanges};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n linkLabel: {\n color: theme.palette.primary.main,\n fontSize: '12px',\n letterSpacing: 0,\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Link from '@mui/material/Link';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n suggestionsCount: number;\n isExpanded: boolean;\n className?: string;\n};\n\nconst ShowMoreLink = ({suggestionsCount, isExpanded, onClick, className}: Props) => {\n const styles = useStyles();\n return (\n <Link component=\"button\" variant=\"caption\" underline=\"none\" onClick={onClick} className={className}>\n <span className={styles.linkLabel}>\n {isExpanded\n ? i18n.text('View less suggestions')\n : i18n.text('View ${suggestionsCount} more suggestions', {suggestionsCount})}\n </span>\n </Link>\n );\n};\n\nexport default ShowMoreLink;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n field: {\n fontSize: '12px',\n lineHeight: '20px',\n color: theme.palette.text.primary,\n marginTop: '6px',\n overflow: 'hidden',\n wordBreak: 'break-word'\n },\n fieldName: {\n color: theme.palette.text.secondary,\n marginRight: '8px'\n },\n difference: {\n marginRight: '8px'\n },\n arrow: {\n margin: '0 4px',\n fontSize: '12px',\n color: theme.palette.text.primary\n },\n chip: {\n height: '20px',\n fontSize: '10px',\n fontWeight: 500,\n lineHeight: '16px',\n letterSpacing: 0,\n flexShrink: 0,\n textTransform: 'capitalize',\n color: theme.palette.primary.main,\n borderColor: theme.palette.primary.main,\n '&.edited': {\n color: '#CC7500',\n borderColor: '#CC7500'\n },\n '&.added': {\n color: '#599E0E',\n borderColor: '#599E0E'\n },\n '&.deleted': {\n color: '#CF0E26',\n borderColor: '#CF0E26'\n }\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {isNil} from 'ramda';\nimport ArrowRightAltIcon from '@mui/icons-material/ArrowRightAlt';\nimport Chip from '@mui/material/Chip';\nimport {DCROperationTypes} from '@reltio/mdm-sdk';\nimport {getOperationLabel} from '../../helpers/helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n label: React.ReactNode;\n oldValue?: React.ReactNode;\n newValue?: React.ReactNode;\n operation?: DCROperationTypes;\n className?: string;\n};\n\nconst ChangeView = ({label, oldValue, newValue, operation, className}: Props) => {\n const styles = useStyles();\n const value = oldValue || newValue;\n\n return (\n <div className={classnames(styles.field, className)}>\n <span className={styles.fieldName}>{label}:</span>\n {!isNil(value) && (\n <span className={styles.difference}>\n {value}\n {newValue && oldValue && (\n <>\n <ArrowRightAltIcon className={styles.arrow} />\n {newValue}\n </>\n )}\n </span>\n )}\n {operation && (\n <Chip\n variant=\"outlined\"\n label={getOperationLabel(operation)}\n className={classnames(styles.chip, operation)}\n />\n )}\n </div>\n );\n};\n\nexport default ChangeView;\n","import React from 'react';\nimport {DCRObjectsInfo} from '@reltio/mdm-sdk';\n\nexport const AttributesChangesContext = React.createContext<DCRObjectsInfo>(null);\n\nAttributesChangesContext.displayName = 'AttributesChangesContext';\n","import {makeStyles} from '@mui/styles';\n\ntype StylesProps = {\n level: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n linkContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n marginLeft: '4px'\n },\n linkLabel: {\n color: theme.palette.primary.main,\n fontSize: '12px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n disabledLink: {\n pointerEvents: 'none',\n cursor: 'default'\n },\n label: {\n color: theme.palette.text.primary\n },\n change: ({level = 0}: StylesProps) => ({\n marginLeft: `${level * 16}px`\n })\n}));\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport {isNil} from 'ramda';\nimport classnames from 'classnames';\nimport {ChangeValue, DCRAttributeValue, DCRChange, getAttributeValue, getLabel, isReference} from '@reltio/mdm-sdk';\nimport ChangeView from '../ChangeView/ChangeView';\nimport {AttributesChangesContext} from '../../contexts/AttributesChangesContext';\nimport {getAttributeDescription, getDataTypeDefinition} from '../../helpers/helpers';\nimport {Diff, RelationAttributeValue} from '../../types/diffTypes';\nimport DataTypeValue from '../../../../../DataTypeValue/DataTypeValue';\nimport EntityUriLink from '../../../../../EntityUriLink/EntityUriLink';\nimport {useMdmEntityUri} from '../../../../../../contexts';\nimport {useStyles} from './styles';\n\nconst DiffRenderer = ({label, level, attributeType, attributeValue, oldValue, newValue, operation}: Diff) => {\n const styles = useStyles({level});\n const objectsInfo = useContext(AttributesChangesContext);\n const entityUri = useMdmEntityUri();\n\n const getLinkDescription = useCallback(() => {\n if (isReference(attributeType)) {\n const value =\n (attributeValue.value as DCRChange)?.newValue ?? (attributeValue.value as DCRChange)?.oldValue;\n return getAttributeDescription(\n attributeType,\n (value as DCRAttributeValue) || attributeValue,\n entityUri,\n objectsInfo\n );\n } else if ('endObject' in attributeType) {\n const {endObjectUri, endObjectLabel} = attributeValue as RelationAttributeValue;\n return {\n objectUri: endObjectUri,\n objectLabel: endObjectLabel\n };\n }\n }, [attributeType, attributeValue, entityUri, objectsInfo]);\n\n const renderLink = useCallback(() => {\n const {objectUri, objectLabel} = getLinkDescription() || {};\n\n if (!isNil(objectUri) && !isNil(objectLabel)) {\n const isNotExist = objectsInfo[objectUri]?.isExist === false;\n return (\n <EntityUriLink\n value={objectUri}\n className={classnames(styles.linkContainer, {[styles.disabledLink]: isNotExist})}\n >\n <span className={classnames(styles.linkLabel, {[styles.label]: isNotExist})}>\n {getLabel(objectLabel)}\n </span>\n </EntityUriLink>\n );\n }\n return null;\n }, [getLinkDescription, objectsInfo, styles]);\n\n const changeLabel = useMemo(() => {\n return (\n <span>\n {label}\n {renderLink()}\n </span>\n );\n }, [label, renderLink]);\n\n const renderValue = useCallback(\n (value: ChangeValue) => {\n const attrValue = getAttributeValue(value);\n return (\n <DataTypeValue value={attrValue} dataTypeDefinition={getDataTypeDefinition(attributeType, attrValue)} />\n );\n },\n [attributeType]\n );\n\n return (\n <ChangeView\n className={styles.change}\n label={changeLabel}\n oldValue={oldValue && renderValue(oldValue)}\n newValue={newValue && renderValue(newValue)}\n operation={operation}\n />\n );\n};\n\nexport default DiffRenderer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n title: {\n fontSize: '12px',\n letterSpacing: 0,\n lineHeight: '16px',\n fontWeight: 500,\n marginTop: '8px'\n }\n});\n","import React from 'react';\nimport {has} from 'ramda';\nimport DiffRenderer from '../DiffRenderer/DiffRenderer';\nimport {Diff, Title} from '../../types/diffTypes';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n changes: (Diff | Title)[];\n};\n\nconst DCRChangesList = ({changes}: Props) => {\n const styles = useStyles();\n return (\n <>\n {changes.map((change, index) => {\n return has('level', change) ? (\n <DiffRenderer {...(change as Diff)} key={index} />\n ) : (\n <div className={styles.title} key={index}>\n {change.label}\n </div>\n );\n })}\n </>\n );\n};\n\nexport default DCRChangesList;\n","import {has, filter, length, pipe} from 'ramda';\n\nexport const getSuggestionsCount = pipe(filter(has('operation')), length);\n","import {\n ChangeRequest,\n DCRChanges,\n DCRObjectInfo,\n DCRObjectsInfo,\n DCRTypes,\n GroupedObjectsInfo,\n isEntityUri,\n isRelationUri\n} from '@reltio/mdm-sdk';\nimport {allPass, concat, curry, equals, filter, keys, map, pathOr, pipe, prop, uniq} from 'ramda';\n\nexport const getEntitiesObjects = filter(pipe(prop('uri'), isEntityUri));\nexport const getRelationsObjects = filter(pipe(prop('uri'), isRelationUri));\n\nconst getRelations = (objectsWithChanges: DCRObjectInfo, entityUri: string) => {\n return filter(allPass([pipe(prop('uri'), isRelationUri), pipe(prop('startObjectUri'), equals(entityUri))]))(\n objectsWithChanges\n );\n};\n\nexport const extractObjectsFromChangeRequest = (changes: DCRChanges, objectsInfo: DCRObjectsInfo): DCRObjectInfo[] => {\n const getChange = (key) => prop([key], changes);\n return pipe(\n keys,\n filter(getChange),\n map((key) => ({...objectsInfo[key], uri: key}))\n )(objectsInfo);\n};\n\nexport const createEntityRelationsObjectByEntity = curry(\n (objectsWithChanges: DCRObjectInfo, entity: GroupedObjectsInfo['entity']) => {\n return {\n entity,\n relations: getRelations(objectsWithChanges, entity.uri)\n };\n }\n);\n\nexport const createEntityRelationsObjectByRelation = curry(\n (objectsInfo: DCRObjectInfo, relation: GroupedObjectsInfo['relations'][0]) => {\n const entity = objectsInfo[relation.startObjectUri];\n const relations = [relation];\n\n return entity ? {entity: {...entity, uri: relation.startObjectUri}, relations} : {relations};\n }\n);\n\nexport const concatEntityRelationsObjects = (acc: Record<string, GroupedObjectsInfo>, object: GroupedObjectsInfo) => {\n const {entity, relations} = object;\n const {uri: entityUri} = entity;\n\n const mergedRelations = pipe(pathOr([], [entityUri, 'relations']), concat(relations), uniq)(acc);\n\n acc[entityUri] = {\n entity,\n relations: mergedRelations\n };\n\n return acc;\n};\n\nexport const getEntityUriForChangeRequest = (dcrUri: string, entityUri: string) => {\n return `${dcrUri}/changes/${entityUri}`;\n};\n\nexport const isCreateEntityOperation = (dcr: ChangeRequest) => {\n return dcr.type === DCRTypes.CREATE_ENTITY;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n boxSizing: 'border-box',\n border: '1px solid rgba(0,0,0,0.03)',\n borderRadius: '3px',\n backgroundColor: 'rgba(0,0,0,0.03)',\n padding: '10px',\n margin: '12px 16px 12px 0'\n },\n uri: {\n color: theme.palette.primary.main,\n textDecoration: 'none',\n cursor: 'pointer'\n },\n label: {\n fontSize: '12px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n showMoreLink: {\n marginTop: '8px'\n }\n}));\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, any, flatten, ifElse, propOr} from 'ramda';\nimport {DCRChanges, DCRObjectsInfo, getEntityUriForLink, getLabel, GroupedObjectsInfo} from '@reltio/mdm-sdk';\nimport {Diff, Title} from './types/diffTypes';\nimport {mergeChanges} from './helpers/mergeHelpers';\nimport ShowMoreLink from './components/ShowMoreLink/ShowMoreLink';\nimport DCRChangesList from './components/DCRChangesList/DCRChangesList';\nimport {AttributesChangesContext} from './contexts/AttributesChangesContext';\nimport {useCollapsibleList} from './hooks/useCollapsibleList';\nimport EntityUriLink from '../../../EntityUriLink/EntityUriLink';\nimport {getEntityUriForChangeRequest, isCreateEntityOperation} from '../../helpers/dcrHelpers';\nimport {useMdmMetadata} from '../../../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = {\n changes: DCRChanges;\n objectsInfo: DCRObjectsInfo;\n entityInfo: GroupedObjectsInfo['entity'];\n dcrUri: string;\n relationsInfo?: GroupedObjectsInfo['relations'];\n max?: number;\n};\n\nconst AttributesChanges = ({changes, dcrUri, objectsInfo, entityInfo, relationsInfo, max}: Props) => {\n const styles = useStyles();\n\n const metadata = useMdmMetadata();\n\n const [mergedEntityChanges, mergedRelationsChanges] = useMemo(\n () => mergeChanges(metadata, changes, entityInfo, relationsInfo),\n [metadata, changes, entityInfo, relationsInfo]\n );\n\n const changesList: (Diff | Title)[] = useMemo(() => {\n const relationshipTitle: Title = {label: i18n.text('Relationships')};\n return mergedRelationsChanges.length > 0\n ? flatten([mergedEntityChanges, relationshipTitle, mergedRelationsChanges])\n : mergedEntityChanges;\n }, [mergedEntityChanges, mergedRelationsChanges]);\n\n const {isExpanded, onToggle, itemsToShow, collapsedSuggestionsCount} = useCollapsibleList(changesList, max);\n\n const entityUri: string = ifElse(\n any(isCreateEntityOperation),\n always(getEntityUriForChangeRequest(dcrUri, entityInfo.uri)),\n always(getEntityUriForLink(entityInfo))\n )(propOr([], entityInfo.uri, changes));\n\n const screen: string = ifElse(\n any(isCreateEntityOperation),\n always('dcrReview'),\n always('profile')\n )(propOr([], entityInfo.uri, changes));\n\n return (\n <AttributesChangesContext.Provider value={objectsInfo}>\n <div className={styles.container}>\n <EntityUriLink className={styles.uri} value={entityUri} screen={screen}>\n <div className={styles.label}>{getLabel(entityInfo.label)}</div>\n </EntityUriLink>\n <DCRChangesList changes={itemsToShow} />\n {collapsedSuggestionsCount > 0 && (\n <ShowMoreLink\n onClick={onToggle}\n suggestionsCount={collapsedSuggestionsCount}\n isExpanded={isExpanded}\n className={styles.showMoreLink}\n />\n )}\n </div>\n </AttributesChangesContext.Provider>\n );\n};\n\nexport default AttributesChanges;\n","import {useCallback, useMemo, useState} from 'react';\nimport {getSuggestionsCount} from '../helpers/contextHelpers';\nimport {Diff, Title} from '../types/diffTypes';\n\nconst DEFAULT_VISIBLE_ITEMS_COUNT = 3;\n\nexport const useCollapsibleList = (items: (Diff | Title)[], limit = DEFAULT_VISIBLE_ITEMS_COUNT) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const onToggle = useCallback(() => setIsExpanded((value) => !value), []);\n\n const collapsedItems = useMemo(() => items.slice(0, limit), [items, limit]);\n const suggestionsCount = useMemo(() => getSuggestionsCount(items), [items]);\n const visibleSuggestionsCount = useMemo(() => getSuggestionsCount(collapsedItems), [collapsedItems]);\n\n const itemsToShow = isExpanded ? items : collapsedItems;\n const collapsedSuggestionsCount = suggestionsCount - visibleSuggestionsCount;\n\n return {isExpanded, onToggle, itemsToShow, collapsedSuggestionsCount};\n};\n","import {useCallback, useEffect, useState} from 'react';\nimport {flatten, has, isEmpty, map, partition, path, pipe, reduce, values} from 'ramda';\nimport {ChangeRequest, getDataChangeRequest, getEntitiesByUris, GroupedObjectsInfo} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\nimport {\n concatEntityRelationsObjects,\n createEntityRelationsObjectByEntity,\n createEntityRelationsObjectByRelation,\n extractObjectsFromChangeRequest,\n getEntitiesObjects,\n getRelationsObjects\n} from '../helpers/dcrHelpers';\nimport {showApiError} from '../helpers/errors';\n\nexport const useChangeRequest = (dcrUri: string) => {\n const [groupedObjects, setGroupedObjects] = useState<GroupedObjectsInfo[]>([]);\n const [dcr, setDcr] = useState<ChangeRequest>(null);\n const safePromise = useSafePromise();\n\n const requestEntities = useCallback((entityUris: string[]) => {\n if (isEmpty(entityUris)) {\n return Promise.resolve([]);\n }\n\n return safePromise(getEntitiesByUris(entityUris, {searchOptions: 'ovOnly', defaultMaxValues: 1}));\n }, []); // eslint-disable-line\n\n useEffect(() => {\n getDataChangeRequest(dcrUri)\n .then((dcr) => {\n const {changes, objectsInfo} = dcr;\n\n const objectsWithChanges = extractObjectsFromChangeRequest(changes, objectsInfo);\n\n const entityObjectsWithRelations: GroupedObjectsInfo[] = pipe(\n getEntitiesObjects,\n map(createEntityRelationsObjectByEntity(objectsWithChanges))\n )(objectsWithChanges);\n\n const relationsObjects: GroupedObjectsInfo[] = pipe(\n getRelationsObjects,\n map(createEntityRelationsObjectByRelation(objectsInfo))\n )(objectsWithChanges);\n\n const [relationsObjectsWithEntity, relationsObjectsWithoutEntity] = partition(\n has('entity'),\n relationsObjects\n );\n\n const entityUris: string[] = relationsObjectsWithoutEntity.map(\n path(['relations', 0, 'startObjectUri'])\n );\n\n requestEntities(entityUris)\n .then((entities) => {\n const relationsObjectsWithRequestedEntities = relationsObjectsWithoutEntity.map(\n (relationsObject, index) => {\n return {\n ...relationsObject,\n entity: entities[index]\n };\n }\n );\n\n pipe(\n flatten,\n reduce(concatEntityRelationsObjects, {}),\n values,\n setGroupedObjects\n )([\n entityObjectsWithRelations,\n relationsObjectsWithEntity,\n relationsObjectsWithRequestedEntities\n ]);\n })\n .catch(showApiError);\n\n setDcr(dcr);\n })\n .catch(showApiError);\n }, [dcrUri, requestEntities]);\n\n return {dcr, groupedObjects};\n};\n","import React from 'react';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport GenericWorkflowTaskCard from '../GenericWorkflowTaskCard/GenericWorkflowTaskCard';\nimport LineDecorator from '../../components/LineDecorator/LineDecorator';\nimport {getDCRUri} from '../../helpers';\nimport DcrTaskIcon from '../../../../icons/DcrTaskIcon';\nimport AttributesChanges from '../../components/AttributesChanges/AttributesChanges';\nimport {useChangeRequest} from '../../hooks/useChangeRequest';\n\ntype Props = {\n task: WorkflowTaskData;\n};\n\nconst DataChangeRequestTaskCard = ({task}: Props) => {\n const {objectURIs} = task;\n const dcrUri = getDCRUri(objectURIs);\n\n const {dcr, groupedObjects} = useChangeRequest(dcrUri);\n\n return (\n <GenericWorkflowTaskCard task={task} Icon={DcrTaskIcon}>\n {dcr &&\n groupedObjects.map((object, index: number) => (\n <LineDecorator key={index} last={index === groupedObjects.length - 1} divider={true}>\n <AttributesChanges\n entityInfo={object.entity}\n relationsInfo={object.relations}\n changes={dcr.changes}\n objectsInfo={dcr.objectsInfo}\n dcrUri={dcrUri}\n />\n </LineDecorator>\n ))}\n </GenericWorkflowTaskCard>\n );\n};\n\nexport default DataChangeRequestTaskCard;\n","import React from 'react';\n\nconst SvgPmTaskIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={28} height={28} viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <circle fill=\"#1976D2\" cx={14} cy={14} r={14} />\n <path\n d=\"M22.5 14L18 9.5V13h-3.5L9 7.5 7.5 9l6.04 6H18v3.5l4.5-4.5zm-11.46 1.46L7.5 19 9 20.5l3.54-3.54-1.5-1.5z\"\n fill=\"#FFF\"\n opacity={0.87}\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgPmTaskIcon;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n pmCard: {\n marginLeft: '-15px'\n }\n});\n","import React from 'react';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport GenericWorkflowTaskCard from '../GenericWorkflowTaskCard/GenericWorkflowTaskCard';\nimport LineDecorator from '../../components/LineDecorator/LineDecorator';\nimport PmTaskIcon from '../../../../icons/PmTaskIcon';\nimport {useMatchesLoader} from '../../../../hooks/useMatchesLoader';\nimport {ProfileMatchCard} from '../../../ProfileMatchCard/ProfileMatchCard';\nimport {useMdmEntity, useMdmMetadata} from '../../../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = {\n task: WorkflowTaskData;\n};\n\nconst defaultOptions = {\n showTransitiveMatches: true,\n showInactiveEntities: false\n};\n\nconst PotentialMatchTaskCard = ({task}: Props) => {\n const styles = useStyles();\n\n const entity = useMdmEntity();\n const metadata = useMdmMetadata();\n\n const {objectURIs} = task;\n const {matches, entitiesMap} = useMatchesLoader({\n enabled: !!entity.uri,\n entity,\n filter: '',\n rowsPerPage: Number.MAX_SAFE_INTEGER,\n page: 0,\n options: defaultOptions\n });\n const match = matches?.find(({object}) => objectURIs.includes(object.uri));\n\n return (\n <GenericWorkflowTaskCard task={task} Icon={PmTaskIcon}>\n {match && (\n <LineDecorator last>\n <div className={styles.pmCard}>\n <ProfileMatchCard metadata={metadata} entity={entity} match={match} entitiesMap={entitiesMap} />\n </div>\n </LineDecorator>\n )}\n </GenericWorkflowTaskCard>\n );\n};\n\nexport default PotentialMatchTaskCard;\n","import React from 'react';\n\nconst SvgDefaultTaskIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={28} height={28} viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <circle fill=\"#205191\" cx={14} cy={14} r={14} />\n <path\n d=\"M9.667 20.622c-.92 0-1.667-.744-1.667-1.662V8.99c0-.916.747-1.66 1.667-1.66h2.446A1.993 1.993 0 0114 6l.162.006a1.992 1.992 0 011.725 1.323h2.446c.92 0 1.667.745 1.667 1.662v9.97c0 .917-.747 1.661-1.667 1.661zm9-1.33V8.66h-1.334v1.993h-6.666V8.66H9.333v10.634h9.334zM15.86 14.46v1.302h-5.206V14.46h5.206zm1.494-2v1.302h-6.7V12.46h6.7zM14 7.33c.367 0 .667.298.667.664a.668.668 0 01-1.334 0c0-.366.3-.665.667-.665z\"\n fill=\"#FFF\"\n opacity={0.87}\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDefaultTaskIcon;\n","import React from 'react';\n\nconst SvgDeleteRequestTaskIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={28} height={28} viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\" opacity={0.87}>\n <circle fill=\"#0D47A1\" cx={14} cy={14} r={14} />\n <path\n d=\"M8.17 9.824v8.995c0 .886.72 1.606 1.607 1.606h8.352c.192 0 .375-.035.546-.097l1.38 1.382.804-.804-1.32-1.32-1.09-1.089-8.993-8.994-1.092-1.092-1.317-1.317-.803.803L8.17 9.824zm9.316 9.316h-8.03v-8.03l8.03 8.03zM9.777 7.575c-.192 0-.376.033-.55.094L10.42 8.86h.32v.322l1.607 1.606h4.819V8.86h1.284v8.03l1.285 1.286V9.182c0-.887-.72-1.607-1.606-1.607h-2.358a1.931 1.931 0 00-1.818-1.285 1.93 1.93 0 00-1.818 1.285H9.777zm3.533.643c0-.353.29-.643.643-.643.353 0 .642.29.642.643a.644.644 0 01-.642.642.644.644 0 01-.643-.642z\"\n fill=\"#FFF\"\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDeleteRequestTaskIcon;\n","import React from 'react';\nimport {PredefinedWorkflowProcessType, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport GenericWorkflowTaskCard from './GenericWorkflowTaskCard/GenericWorkflowTaskCard';\nimport DataChangeRequestTaskCard from './DataChangeRequestTaskCard/DataChangeRequestTaskCard';\nimport PotentialMatchTaskCard from './PotentialMatchTaskCard/PotentialMatchTaskCard';\n\nimport DefaultTaskIcon from '../../../icons/DefaultTaskIcon';\nimport DeleteRequestTaskIcon from '../../../icons/DeleteRequestTaskIcon';\n\nexport type FactoryProps = {\n task: WorkflowTaskData;\n};\n\nclass WorkflowTaskCardsFactory {\n static build = ({task}: FactoryProps) => {\n const {processType} = task;\n switch (processType) {\n case PredefinedWorkflowProcessType.dataChangeRequestReview:\n return <DataChangeRequestTaskCard task={task} />;\n case PredefinedWorkflowProcessType.potentialMatchReview:\n return <PotentialMatchTaskCard task={task} />;\n case PredefinedWorkflowProcessType.recommendForDelete:\n return <GenericWorkflowTaskCard task={task} Icon={DeleteRequestTaskIcon} />;\n default:\n return <GenericWorkflowTaskCard task={task} Icon={DefaultTaskIcon} />;\n }\n };\n}\n\nexport default WorkflowTaskCardsFactory;\n","import WorkflowTaskCardsFactory, {FactoryProps} from './WorkflowTaskCardsFactory';\n\nexport const WorkflowTaskCard = ({task}: FactoryProps) => WorkflowTaskCardsFactory.build({task});\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n popoverPaper: {\n width: '464px'\n },\n title: {\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px',\n color: theme.palette.text.primary,\n marginBottom: '17px'\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n padding: '23px 24px 14px 24px'\n },\n simpleDropDownSelector: {\n marginBottom: '20px'\n },\n inputRoot: {\n paddingTop: '0 !important',\n paddingBottom: '0 !important'\n },\n select: {\n fontSize: '14px'\n },\n footer: {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: '5px 8px 8px',\n borderTop: '1px solid rgba(0,0,0,0.12)'\n },\n cancelButton: {\n marginRight: '8px'\n },\n input: {\n fontSize: '14px'\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport TextField from '@mui/material/TextField';\nimport Portal from '@mui/material/Portal';\nimport Snackbar from '@mui/material/Snackbar';\nimport Popover from '@mui/material/Popover';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport SimpleDropDownSelector from '../../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {useWorkflowDefinitions} from '../../hooks/useWorkflowDefinitions';\nimport {useWorkflowProcessInstance} from '../../hooks/useWorkflowProcessInstance';\nimport {useStyles} from './styles';\n\ntype Props = {\n anchorEl: Element;\n onClose: () => void;\n};\n\nexport const AddWorkflowDialog = ({anchorEl, onClose}: Props) => {\n const styles = useStyles();\n\n const [comment, setComment] = useState('');\n const [taskType, setTaskType] = useState(null);\n const [isOpenSnackbar, setIsOpenSnackbar] = useState(false);\n\n const {definitions} = useWorkflowDefinitions();\n const {processInstance, loading} = useWorkflowProcessInstance();\n\n const handleChangeComment = (e) => {\n setComment(e.target.value);\n };\n\n const handleChangeTaskType = (value) => {\n setTaskType(value);\n };\n\n const handleStart = () => {\n processInstance(comment, taskType?.value)\n .then(() => {\n setIsOpenSnackbar(true);\n setComment('');\n setTaskType(null);\n onClose();\n })\n .catch(() => {});\n };\n\n const handleCloseSnackbar = () => {\n setIsOpenSnackbar(false);\n };\n\n const open = Boolean(anchorEl);\n\n return (\n <>\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n classes={{\n paper: styles.popoverPaper\n }}\n >\n <div className={styles.content}>\n <Typography className={styles.title}>{i18n.text('Add new workflow')}</Typography>\n <SimpleDropDownSelector\n className={styles.simpleDropDownSelector}\n variant=\"filled\"\n height={40}\n TextFieldProps={{\n InputProps: {\n disableUnderline: true\n }\n }}\n placeholder={i18n.text('Select task type')}\n value={taskType}\n onChange={handleChangeTaskType}\n label={''}\n options={definitions.map((definition) => {\n return {\n value: definition.type,\n label: definition.displayName\n };\n })}\n />\n <TextField\n variant=\"filled\"\n hiddenLabel\n size=\"small\"\n placeholder=\"Type a comment\"\n InputProps={{\n disableUnderline: true,\n classes: {\n input: styles.input,\n root: styles.inputRoot\n }\n }}\n value={comment}\n onChange={handleChangeComment}\n multiline={true}\n />\n </div>\n <div className={styles.footer}>\n <Button disabled={loading} className={styles.cancelButton} onClick={onClose}>\n {i18n.text('Cancel')}\n </Button>\n <Button disabled={loading} color=\"primary\" onClick={handleStart}>\n {i18n.text('Start')}\n </Button>\n </div>\n </Popover>\n <Portal container={document.body}>\n <Snackbar\n open={isOpenSnackbar}\n autoHideDuration={5000}\n onClose={handleCloseSnackbar}\n message={i18n.text('A new workflow has started')}\n anchorOrigin={{vertical: 'bottom', horizontal: 'center'}}\n />\n </Portal>\n </>\n );\n};\n","import {useEffect, useState} from 'react';\nimport {processDefinitions} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\nimport {useMdmEntity, useMdmTenant, useMdmWorkflowEnvironmentUrl, useMdmWorkflowPath} from '../../../contexts';\n\nconst filterDefinitions = (definitions, entityType) => {\n return definitions.filter(({manualStart, objectTypes}) => {\n return manualStart && (!objectTypes || objectTypes?.some((_entityType) => _entityType === entityType));\n });\n};\n\nexport const useWorkflowDefinitions = () => {\n const [definitions, setDefinitions] = useState([]);\n const workflowPath = useMdmWorkflowPath();\n const environment = useMdmWorkflowEnvironmentUrl();\n const tenant = useMdmTenant();\n const entity = useMdmEntity();\n const entityType = entity.type;\n const safePromise = useSafePromise();\n\n useEffect(() => {\n safePromise(processDefinitions({workflowPath, environment, tenant})).then(({data}) => {\n if (!data) {\n return;\n }\n setDefinitions(filterDefinitions(data, entityType));\n });\n }, [entityType, workflowPath, environment, tenant]);\n\n return {definitions};\n};\n","import {useCallback, useContext, useState} from 'react';\nimport {startProcessInstance} from '@reltio/mdm-sdk';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\nimport {useMdmEntity, useMdmTenant, useMdmWorkflowEnvironmentUrl, useMdmWorkflowPath} from '../../../contexts';\n\nexport const useWorkflowProcessInstance = () => {\n const [loading, setLoading] = useState(false);\n\n const {loadTasks} = useContext(WorkflowTasksContext);\n\n const workflowPath = useMdmWorkflowPath();\n const environment = useMdmWorkflowEnvironmentUrl();\n const tenant = useMdmTenant();\n const entity = useMdmEntity();\n\n const entityUri = entity.uri;\n\n const processInstance = useCallback(\n (comment, taskType) => {\n setLoading(true);\n\n return startProcessInstance({\n workflowPath,\n tenant,\n environment,\n processType: taskType,\n comment,\n objectURIs: [entityUri]\n })\n .then(() => {\n loadTasks();\n })\n .catch((error) => {\n showWorkflowError(error);\n throw error;\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [entityUri, environment, loadTasks, tenant, workflowPath]\n );\n\n return {processInstance, loading};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n button: {\n padding: '9px 16px 9px 12px',\n marginLeft: 'auto',\n marginRight: '8px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n }\n});\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport AddIcon from '@mui/icons-material/Add';\nimport {useWorkflowCheckPermission} from '../../hooks/useWorkflowCheckPermission';\nimport {AddWorkflowDialog} from '../AddWorkflowDialog/AddWorkflowDialog';\nimport {useStyles} from './styles';\n\nexport const AddWorkflowButton = () => {\n const styles = useStyles();\n const [anchorEl, setAnchorEl] = useState(null);\n\n const checkWorkflowPermission = useWorkflowCheckPermission();\n const canStartProcess = checkWorkflowPermission('START_PROCESS_INSTANCE');\n const canViewProcessDefinitions = checkWorkflowPermission('VIEW_PROCESS_DEFINITIONS');\n\n const handleOpen = (e) => setAnchorEl(e.currentTarget);\n const handleClose = () => setAnchorEl(null);\n\n return canStartProcess && canViewProcessDefinitions ? (\n <>\n <Button color=\"primary\" className={styles.button} onClick={handleOpen}>\n <AddIcon className={styles.icon} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n <AddWorkflowDialog anchorEl={anchorEl} onClose={handleClose} />\n </>\n ) : null;\n};\n","import React from 'react';\nimport {partition, propEq} from 'ramda';\nimport Button from '@mui/material/Button';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useWorkflowActions} from '../../hooks/useWorkflowActions';\n\ntype Props = {\n task: WorkflowTaskData;\n};\nexport const TaskActionButtons = ({task}: Props) => {\n const {taskId, possibleActions, assignee, isOpen, preferredAction} = task;\n\n const {actions, actionRequestIsInProgress: disabled} = useWorkflowActions({\n taskId,\n possibleActions,\n assignee,\n isOpen\n });\n\n const [preferredActions, otherActions] = partition(propEq('text', preferredAction.label), actions);\n return (\n <>\n {otherActions.map((action) => (\n <Button variant=\"outlined\" onClick={action.onClick} key={action.text} disabled={disabled}>\n {action.text}\n </Button>\n ))}\n {preferredActions.map((action) => (\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={action.onClick}\n key={action.text}\n disabled={disabled}\n >\n {action.text}\n </Button>\n ))}\n </>\n );\n};\n","import {useCallback, useEffect, useState} from 'react';\nimport {filter, flatten, isNil, map, mergeLeft, pipe, prop, propEq, reject, uniqBy, when} from 'ramda';\nimport {getEntityUriFromDCRUri, getTasksForEntity, isDCRUri, isTempUri, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks/useSafePromise';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\nimport {\n useMdmEntityUri,\n useMdmIsEditableMode,\n useMdmIsWorkflowEnabled,\n useMdmProfileLastLoadedTime,\n useMdmTenant,\n useMdmWorkflowEnvironmentUrl,\n useMdmWorkflowPath\n} from '../../../contexts';\n\ntype Config = {\n processTypes?: string[];\n assignee?: string;\n showClosedTasks?: boolean;\n};\n\nexport const useWorkflowTasks = (config?: Config) => {\n const {processTypes, assignee, showClosedTasks} = config || {};\n\n const [tasks, setTasks] = useState<WorkflowTaskData[]>(null);\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n\n const safePromise = useSafePromise();\n const checkWorkflowPermission = useWorkflowCheckPermission();\n\n const workflowPath = useMdmWorkflowPath();\n const environment = useMdmWorkflowEnvironmentUrl();\n const isWorkflowEnabled = useMdmIsWorkflowEnabled();\n const tenant = useMdmTenant();\n const entityUri = useMdmEntityUri();\n const isEditableMode = useMdmIsEditableMode();\n const entityLastLoadedTime = useMdmProfileLastLoadedTime();\n\n const canViewTasks = checkWorkflowPermission('VIEW_TASKS');\n const enabled = !!(workflowPath && environment) && isWorkflowEnabled && canViewTasks;\n\n const loadTasks = useCallback(() => {\n setLoading(true);\n const parsedProcessTypes = !Array.isArray(processTypes) || processTypes.includes('*') ? null : processTypes;\n const requests = (parsedProcessTypes || [null]).map((processType) =>\n getTasksForEntity({\n entityUri: isDCRUri(entityUri) ? getEntityUriFromDCRUri(entityUri) : entityUri,\n workflowPath,\n environment,\n tenant,\n filter: {assignee, processType},\n includeClosed: !!showClosedTasks\n })\n );\n safePromise(Promise.all(requests))\n .then((responses) => {\n const tasks: WorkflowTaskData[] = pipe(\n map(prop('data')),\n reject(isNil),\n flatten,\n uniqBy(prop('taskId')),\n filter(isRequestedTask(parsedProcessTypes, assignee))\n )(responses);\n setTasks(tasks);\n setTotal(tasks.length);\n })\n .catch((error) => {\n console.warn('Workflow error', error);\n })\n .finally(() => {\n setLoading(false);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n entityUri,\n environment,\n safePromise,\n tenant,\n workflowPath,\n assignee,\n showClosedTasks,\n processTypes,\n entityLastLoadedTime\n ]);\n\n useEffect(() => {\n if (entityUri && enabled && !isTempUri(entityUri)) {\n loadTasks();\n } else {\n setTasks(null);\n setTotal(0);\n }\n }, [enabled, entityUri, loadTasks, isEditableMode]);\n\n const updateTaskState = useCallback((taskId: WorkflowTaskData['taskId'], payload: Partial<WorkflowTaskData>) => {\n setTasks(map(when(propEq('taskId', taskId), mergeLeft(payload))));\n }, []);\n\n return {\n tasks,\n total,\n loading,\n updateTaskState,\n loadTasks\n };\n};\n\nconst isRequestedTask = (processTypes: string[], assignee: string) => (task: WorkflowTaskData) =>\n (!processTypes || processTypes.includes(task.processType)) && (!assignee || assignee === task.assignee);\n","export const MAP_DRAWING_MODES = {\n CIRCLE: 'circle',\n POLYGON: 'polygon'\n};\n\nexport const DEFAULT_OVERLAY_OPTIONS = {\n fillColor: 'rgb(242,82,82)',\n fillOpacity: 0.1,\n strokeWeight: 2,\n strokeColor: '#F25252',\n clickable: false,\n editable: true,\n zIndex: 1\n};\n\nexport const DEFAULT_GOOGLE_MAP_OPTIONS = {\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: false\n};\n\nexport const MAP_MINIMUM_SCALE_RADIUS = 0.001;\n","import React from 'react';\n\ntype Value = {\n activeEntityUri?: string;\n};\n\nexport const EntityMarkerContext = React.createContext<Value>({});\nEntityMarkerContext.displayName = 'EntityMarkerContext';\n","import React from 'react';\nimport {InterceptHandlers} from '@reltio/mdm-sdk';\n\nexport const InterceptHandlersContext = React.createContext<InterceptHandlers>({});\n\nInterceptHandlersContext.displayName = 'InterceptHandlersContext';\n","import React from 'react';\nimport {QxSandboxApi} from '@reltio/mdm-sdk';\n\nexport const SandboxAPIContext = React.createContext<QxSandboxApi>({\n getCurrentPerspectiveId: () => '',\n setEntityUri: () => {},\n showPerspective: () => {}\n});\n","import {\n CustomActionExtension,\n CustomActionViewConfig,\n CustomScriptExtension,\n getAccessToken,\n RequestAction,\n sendRequestFromCustomSandbox,\n sendWorkflowRequest,\n startProcessFromQuery,\n Entity,\n startProcessInstance\n} from '@reltio/mdm-sdk';\nimport {ProcessRequestParams} from './types';\n\ntype Config = CustomActionExtension | CustomActionViewConfig | CustomScriptExtension;\n\nconst validateParams = (validationUrl: string, permissions?: string[]) => {\n if (!validationUrl) return {errorMessage: 'URL is empty'};\n const allowed = permissions?.some((permission) => {\n const urlOrigin = validationUrl.match(/^(https?:\\/\\/[^:/?#]*).*$/)?.[1];\n const permRegex = new RegExp('^' + permission + '$');\n const decodedPerm = permission.replace(/\\/*$/, '');\n return (\n decodedPerm === validationUrl ||\n (urlOrigin && urlOrigin === decodedPerm) ||\n (decodedPerm?.startsWith('/') && validationUrl?.startsWith(decodedPerm)) ||\n (permission && permRegex.test(validationUrl))\n );\n });\n\n if (!allowed || (permissions?.length || 0) === 0) {\n return {errorMessage: 'Not enough permissions'};\n }\n return false;\n};\n\nconst getAuthHeaders = async (headers: Record<string, string>, servicesPath: string) => {\n const {accessToken} = await getAccessToken({servicesPath});\n return accessToken ? {...headers, Authorization: `Bearer ${accessToken}`} : headers;\n};\n\nexport const processRequest = ({\n params,\n permissions,\n worker,\n metadata,\n config,\n apiPath,\n servicesPath,\n user,\n workflowPath,\n entity,\n tenant,\n entityUri,\n query,\n openSearch,\n environment,\n getCurrentPerspectiveId,\n showPerspective,\n workflowCheckPermission,\n setEntityUri\n}: ProcessRequestParams) => {\n const {name, url, data, method, validationUrl} = params;\n\n const processFromQuery = () => {\n if (!params.processDefinitionId) {\n return new Promise((resolve) => resolve({errorMessage: 'processDefinitionId is empty'}));\n }\n if (!params.searchString) {\n return new Promise((resolve) => resolve({errorMessage: 'searchString is empty'}));\n }\n if (!workflowPath) {\n return new Promise((resolve) => resolve({errorMessage: 'Workflow path is not defined'}));\n }\n const errors = validateParams('/processInstances/_generateFromQuery', permissions);\n if (errors) {\n return new Promise((resolve) => resolve(errors));\n }\n\n return startProcessFromQuery({\n workflowPath,\n processType: params.processDefinitionId,\n searchString: params.searchString,\n tenant,\n environment\n });\n };\n\n const processInstance = () => {\n if (!params.processDefinitionId) {\n return new Promise((resolve) => resolve({errorMessage: 'processDefinitionId is empty'}));\n }\n if (!params.changeRequestURI) {\n return new Promise((resolve) => resolve({errorMessage: 'changeRequestURI is empty'}));\n }\n if (!workflowPath) {\n return new Promise((resolve) => resolve({errorMessage: 'Workflow path is not defined'}));\n }\n const errors = validateParams('/processInstances', permissions);\n if (errors) {\n return new Promise((resolve) => resolve(errors));\n }\n\n return startProcessInstance({\n workflowPath,\n processType: params.processDefinitionId,\n tenant,\n environment,\n objectURIs: [entityUri, params.changeRequestURI],\n comment: params.comment\n });\n };\n\n const workflowRequest = async () => {\n const errors = validateParams(validationUrl, permissions);\n if (errors) {\n return errors;\n }\n const isExternalUrl = url.includes('http:') || url.includes('https:');\n if (!workflowPath && !isExternalUrl) {\n return {errorMessage: 'Workflow path is not defined'};\n }\n const headers = await getAuthHeaders(params.headers, servicesPath);\n return await sendWorkflowRequest({url, method, data, tenant, headers, workflowPath});\n };\n\n const sendApiRequest = async () => {\n const errors = validateParams(validationUrl, permissions);\n if (errors) {\n return Promise.reject(errors);\n }\n const headers = await getAuthHeaders(params.headers, servicesPath);\n return await sendRequestFromCustomSandbox({\n url,\n method,\n data,\n headers,\n noRequestProcessor: true,\n noRetry: true\n });\n };\n\n const handleRequest = (request: Promise<any>) => {\n request\n .then((response) => (response.json ? response.json() : response))\n .then((data) => {\n worker.postMessage({\n action: 'response',\n result: {\n data: JSON.parse(JSON.stringify(data)),\n headers: params.headers,\n status: 200\n },\n ...params\n });\n })\n .catch((error) => {\n worker.postMessage({\n action: 'response',\n result: {\n data: JSON.parse(JSON.stringify(error)),\n headers: params.headers,\n status: 0\n },\n ...params\n });\n });\n };\n\n switch (name) {\n case RequestAction.API: {\n const request = sendApiRequest();\n handleRequest(request);\n break;\n }\n case RequestAction.WORKFLOW: {\n const request = workflowRequest();\n handleRequest(request);\n break;\n }\n case RequestAction.WORKFLOW_START_PROCESS_FROM_QUERY: {\n const request = processFromQuery();\n handleRequest(request);\n break;\n }\n case RequestAction.WORKFLOW_START_PROCESS_INSTANCE: {\n const request = processInstance();\n handleRequest(request);\n break;\n }\n case RequestAction.GET_CONFIGURATION: {\n worker.postMessage({action: 'response', result: metadata, ...params});\n break;\n }\n case RequestAction.GET_UI_CONFIGURATION: {\n const response = {...config, action: {...config.action}};\n if (response.action.permissions) {\n delete response.action.permissions;\n }\n worker.postMessage({action: 'response', result: response, ...params});\n break;\n }\n case RequestAction.SET_ENTITY_URI: {\n const listener = (newEntity: Entity) =>\n worker.postMessage({action: 'response', result: newEntity, ...params});\n setEntityUri(params.entityUri, listener);\n break;\n }\n case RequestAction.SET_PERSPECTIVE: {\n showPerspective(params.perspective);\n worker.postMessage({\n action: 'response',\n result: getCurrentPerspectiveId(),\n ...params\n });\n break;\n }\n case RequestAction.GET_PERSPECTIVE: {\n if (getCurrentPerspectiveId) {\n worker.postMessage({\n action: 'response',\n result: getCurrentPerspectiveId(),\n ...params\n });\n }\n break;\n }\n case RequestAction.WORKFLOW_CHECK_PERMISSION: {\n worker.postMessage({\n action: 'response',\n result: workflowCheckPermission(params.permission),\n ...params\n });\n break;\n }\n case RequestAction.GET_SEARCH_QUERY: {\n worker.postMessage({action: 'response', result: query, ...params});\n break;\n }\n case RequestAction.OPEN_SEARCH: {\n openSearch({viewId: (config as Config).id, searchState: params.searchState || {}});\n break;\n }\n case RequestAction.GET_ENTITY_URI: {\n worker.postMessage({action: 'response', result: entityUri, ...params});\n break;\n }\n case RequestAction.GET_ENTITY: {\n worker.postMessage({action: 'response', result: entity, ...params});\n break;\n }\n case RequestAction.GET_API_PATH: {\n worker.postMessage({action: 'response', result: apiPath, ...params});\n break;\n }\n case RequestAction.WORKFLOW_GET_WORKFLOW_PATH: {\n worker.postMessage({action: 'response', result: workflowPath, ...params});\n break;\n }\n case RequestAction.GET_TENANT: {\n worker.postMessage({action: 'response', result: tenant, ...params});\n break;\n }\n case RequestAction.GET_USER: {\n worker.postMessage({action: 'response', result: user, ...params});\n break;\n }\n case RequestAction.ALERT: {\n worker.postMessage({\n action: 'response',\n result: window.alert(params.text),\n ...params\n });\n break;\n }\n case RequestAction.CONFIRM: {\n worker.postMessage({\n action: 'response',\n result: window.confirm(params.text),\n ...params\n });\n break;\n }\n case RequestAction.PROMPT: {\n worker.postMessage({\n action: 'response',\n result: window.prompt(params.text, params.defaultText || ''),\n ...params\n });\n break;\n }\n case RequestAction.OPEN_WINDOW: {\n window.open(params.url, '_blank');\n break;\n }\n case RequestAction.RELOAD_PAGE: {\n location.reload();\n break;\n }\n }\n};\n","import {\n CustomActionTask,\n CustomActionTaskParams,\n CustomScript,\n CustomScriptPlatform,\n RequestAction,\n RequestHandler,\n ResponseHandler,\n isEmptyValue\n} from '@reltio/mdm-sdk';\nimport {nanoid} from 'nanoid';\n\nexport const isValidCustomScript = (config?: CustomScript) => {\n const {files, platform} = config || {};\n return !isEmptyValue(files) && platform !== CustomScriptPlatform.CLASSIC;\n};\n\nexport const isURLtoProcess = (url: string, processApi: string[] = []) => {\n return processApi.some((request) => {\n const regExp = new RegExp(`^${request}$`);\n return request.replace(/\\/*$/, '') === url || (request && regExp.test(url));\n });\n};\n\nexport const getWorkerURL = (uiPath: string, tenant: string) => {\n return `${uiPath.replace(`${tenant}/`, '')}worker_api.js`;\n};\n\nexport const getRequestFakeUrl = (url: string, apiPath: string, reltioPath: string, tenant: string) => {\n return url.startsWith(apiPath) ? `${reltioPath}${url.replace(apiPath, '')}` : `${reltioPath}/api/${tenant}${url}`;\n};\n\nexport const getResponseFakeUrl = (url: string, apiPath: string, reltioPath: string) => {\n return `${reltioPath}${url.replace(apiPath, '')}`;\n};\n\nexport const getProcessedTask = (task: CustomActionTask, apiPath: string, reltioPath: string, tenant: string) => {\n const {url, name} = task.params as CustomActionTaskParams;\n if (!url) {\n return task;\n }\n const isApiAction = name === RequestAction.API;\n const isGlobalUrl = url.startsWith('/') && !url.startsWith(apiPath);\n const newUrl = isGlobalUrl && isApiAction ? `${apiPath}/api/${tenant}${url}` : url.replace(reltioPath, apiPath);\n\n return {\n ...task,\n params: {\n ...(task.params as CustomActionTaskParams),\n url: newUrl,\n validationUrl: url\n }\n };\n};\n\nexport const getFilesWithArrayBuffer = (files: FileList) => {\n const readFilePromises = Array.from(files).map((file) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (event) => {\n const content = event.target.result;\n const {lastModified, name, size, type} = file;\n resolve({lastModified, name, size, type, content});\n };\n reader.onerror = (error) => {\n reject(error);\n };\n reader.readAsArrayBuffer(file);\n });\n });\n return Promise.all(readFilePromises);\n};\n\nconst processInnerHtml = (parent: HTMLElement, worker: Worker, setTooltip) => {\n let handlersToReset = [];\n const uiActions = parent.getAttribute('ui-actions');\n const uiTooltip = parent.getAttribute('ui-tooltip');\n const id = parent.getAttribute('id') || parent.getAttribute('name');\n if (uiActions) {\n uiActions.split(',').forEach((uiAction) => {\n const handler = (event: Event) => {\n const target = event.target as HTMLInputElement;\n const postEventMessage = (files?) => {\n worker.postMessage({\n action: 'event',\n type: 'uiAction',\n data: {type: uiAction, id, event: {...event, files, target: {value: target.value}}}\n });\n };\n if (target.files?.length) {\n getFilesWithArrayBuffer(target.files).then(postEventMessage);\n } else {\n postEventMessage();\n }\n };\n parent.addEventListener(uiAction, handler);\n handlersToReset.push(() => {\n parent.removeEventListener(uiAction, handler);\n });\n });\n parent.removeAttribute('ui-actions');\n }\n if (uiTooltip) {\n setTooltip(uiTooltip);\n }\n parent.childNodes.forEach((child) => {\n if (child.nodeType === 1) {\n //Node.ELEMENT_NODE\n handlersToReset = handlersToReset.concat(processInnerHtml(child as HTMLElement, worker, setTooltip));\n }\n });\n return handlersToReset;\n};\n\ntype ResetHTMLParams = {\n worker: Worker;\n setTooltip: any;\n html?: string;\n innerText?: string;\n setListenersToReset: any;\n setHtml: any;\n};\n\nexport const resetHtml = ({worker, setTooltip, innerText, html, setListenersToReset, setHtml}: ResetHTMLParams) => {\n const docBlock = document.createElement('div');\n docBlock.innerHTML = html || innerText;\n\n const handlersToReset = processInnerHtml(docBlock, worker, setTooltip);\n setListenersToReset(handlersToReset);\n setHtml(docBlock);\n};\n\nexport const setUpRequestInterceptor = ({\n apiPath,\n reltioPath,\n tenant,\n processApiRequest,\n workerRef,\n setRequestListeners\n}): RequestHandler<RequestInit & CustomActionTaskParams> => {\n return ({url, next, resolve, options = {}}) => {\n const fakeURL = getRequestFakeUrl(url, apiPath, reltioPath, tenant);\n const isProcessableUrl = isURLtoProcess(fakeURL, processApiRequest);\n if (isProcessableUrl) {\n const requestId = nanoid();\n setRequestListeners(options, next, requestId, resolve);\n workerRef.current.postMessage({\n action: 'apiRequest',\n id: requestId,\n url: fakeURL,\n method: options.method,\n headers: options.headers,\n data: options.body\n });\n } else {\n next(url, options);\n }\n };\n};\n\nexport const setUpResponseInterceptor = ({\n reltioPath,\n apiPath,\n processApiResponse,\n workerRef,\n setResponseListeners\n}): ResponseHandler<RequestInit & CustomActionTaskParams> => {\n return ({url, response, next, options, abort}) => {\n const fakeURL = getResponseFakeUrl(url, apiPath, reltioPath);\n const isProcessableUrl = isURLtoProcess(fakeURL, processApiResponse);\n if (isProcessableUrl) {\n const responseId = nanoid();\n response\n .json()\n .then((data) => {\n setResponseListeners(next, responseId);\n workerRef.current.postMessage({\n action: 'apiResponse',\n id: responseId,\n url: fakeURL,\n method: options.method,\n data\n });\n })\n .catch((error) => {\n abort(error);\n });\n } else {\n next(response);\n }\n };\n};\n","const defaultAttributes = [\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'allowReorder',\n 'alphabetic',\n 'amplitude',\n 'arabic-form',\n 'ascent',\n 'attributeName',\n 'attributeType',\n 'autoReverse',\n 'azimuth',\n 'baseFrequency',\n 'baseline-shift',\n 'baseProfile',\n 'bbox',\n 'begin',\n 'bias',\n 'by',\n 'calcMode',\n 'cap-height',\n 'checked',\n 'class',\n 'clip',\n 'clipPathUnits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'contentScriptType',\n 'contentStyleType',\n 'cursor',\n 'cx',\n 'cy',\n 'd',\n 'decelerate',\n 'descent',\n 'diffuseConstant',\n 'direction',\n 'disabled',\n 'display',\n 'divisor',\n 'dominant-baseline',\n 'dur',\n 'dx',\n 'dy',\n 'edgeMode',\n 'elevation',\n 'enable-background',\n 'end',\n 'exponent',\n 'externalResourcesRequired',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterRes',\n 'filterUnits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'format',\n 'from',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'hanging',\n 'height',\n 'horiz-adv-x',\n 'horiz-origin-x',\n 'id',\n 'ideographic',\n 'image-rendering',\n 'in',\n 'in2',\n 'intercept',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'kerning',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lang',\n 'lengthAdjust',\n 'letter-spacing',\n 'lighting-color',\n 'limitingConeAngle',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'mask',\n 'maskContentUnits',\n 'maskUnits',\n 'mathematical',\n 'max',\n 'media',\n 'method',\n 'min',\n 'mode',\n 'name',\n 'numOctaves',\n 'offset',\n 'opacity',\n 'operator',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'overline-position',\n 'overline-thickness',\n 'panose-1',\n 'paint-order',\n 'path',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointer-events',\n 'points',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'r',\n 'radius',\n 'refX',\n 'refY',\n 'rendering-intent',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'restart',\n 'result',\n 'rotate',\n 'rx',\n 'ry',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'slope',\n 'spacing',\n 'specularConstant',\n 'specularExponent',\n 'speed',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stemh',\n 'stemv',\n 'stitchTiles',\n 'stop-color',\n 'stop-opacity',\n 'strikethrough-position',\n 'strikethrough-thickness',\n 'string',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'style',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'target',\n 'targetX',\n 'targetY',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textLength',\n 'to',\n 'transform',\n 'type',\n 'u1',\n 'u2',\n 'underline-position',\n 'underline-thickness',\n 'unicode',\n 'unicode-bidi',\n 'unicode-range',\n 'units-per-em',\n 'v-alphabetic',\n 'v-hanging',\n 'v-ideographic',\n 'v-mathematical',\n 'values',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'viewBox',\n 'viewTarget',\n 'visibility',\n 'width',\n 'widths',\n 'word-spacing',\n 'writing-mode',\n 'x',\n 'x-height',\n 'x1',\n 'x2',\n 'xChannelSelector',\n 'y',\n 'y1',\n 'y2',\n 'yChannelSelector',\n 'z',\n 'zoomAndPan'\n];\n\nconst defaultTags = [\n 'animate',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'mpath',\n 'set',\n 'circle',\n 'ellipse',\n 'line',\n 'polygon',\n 'polyline',\n 'rect',\n 'defs',\n 'glyph',\n 'g',\n 'marker',\n 'mask',\n 'missing-glyph',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'font',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'hkern',\n 'vkern',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'feDistantLight',\n 'fePointLight',\n 'feSpotLight',\n 'circle',\n 'ellipse',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'defs',\n 'g',\n 'svg',\n 'symbol',\n 'use',\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'glyph',\n 'glyphRef',\n 'textPath',\n 'text',\n 'tref',\n 'tspan',\n 'altGlyph',\n 'textPath',\n 'tref',\n 'tspan',\n 'clipPath',\n 'color-profile',\n 'cursor',\n 'filter',\n 'foreignObject',\n 'script',\n 'style',\n 'view',\n 'select',\n 'option',\n 'textarea',\n 'label'\n];\n\nexport default {\n attributes: {\n '*': [...defaultAttributes, 'ui-actions', 'ui-tooltip'],\n img: ['src', 'srcset', 'alt', 'title', 'loading'],\n link: ['href', 'rel'],\n iframe: ['src'],\n a: ['href']\n },\n tags: [...defaultTags, 'a', 'link', 'input', 'button', 'iframe', 'img']\n};\n","import sanitizeHtml, {IOptions} from 'sanitize-html';\nimport sanitizeOptions from './helpers/sanitizerOptions';\n\nexport const useHtmlSanitizer = () => {\n const {allowedAttributes, allowedTags} = sanitizeHtml.defaults;\n const {attributes, tags} = sanitizeOptions;\n const options: IOptions = {\n allowedTags: allowedTags.concat(tags),\n allowedAttributes: {...allowedAttributes, ...attributes},\n allowVulnerableTags: true\n };\n return (html: string) => sanitizeHtml(html, options);\n};\n","import {CSSProperties, useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport {\n CustomAction,\n CustomActionExtension,\n CustomActionTaskParams,\n CustomActionViewConfig,\n CustomScriptPlatform,\n Entity,\n initializeWebWorker,\n isEmptyValue,\n ProcessParams\n} from '@reltio/mdm-sdk';\nimport {omit} from 'ramda';\nimport {useWorkflowCheckPermission} from '../../components/workflow';\nimport {useHtmlSanitizer} from '../useHtmlSanitizer';\nimport {\n InterceptHandlersContext,\n SandboxAPIContext,\n SnackbarContext,\n useMdmAction,\n useMdmApiPath,\n useMdmEntity,\n useMdmEntityUri,\n useMdmIsEditableMode,\n useMdmMetadata,\n useMdmReltioPath,\n useMdmSearchProviderData,\n useMdmServicesPath,\n useMdmTenant,\n useMdmUiPath,\n useMdmUser,\n useMdmWorkflowEnvironmentUrl,\n useMdmWorkflowPath\n} from '../../contexts';\nimport {processRequest} from './API';\nimport {\n getWorkerURL,\n isValidCustomScript,\n resetHtml,\n getProcessedTask,\n setUpRequestInterceptor,\n setUpResponseInterceptor\n} from './helpers';\n\ntype Config = CustomActionViewConfig | CustomActionExtension;\n\nexport const useAPI = (config: Config = {} as Config) => {\n const {processApiRequest, processApiResponse, platform} = config.action || {};\n const [html, setHtml] = useState<HTMLElement>();\n const [listenersToReset, setListenersToReset] = useState<Array<() => void>>([]);\n const [popupListenersToReset, setPopupListenersToReset] = useState<Array<() => void>>([]);\n const [visible, setVisible] = useState(true);\n const [popup, setPopup] = useState<HTMLElement>();\n const [tooltip, setTooltip] = useState<string>(null);\n const [customStyles, setCustomStyles] = useState<{\n height?: number | string;\n width?: number | string;\n pointerEvents?: CSSProperties['pointerEvents'];\n }>({});\n const workerRef = useRef<Worker>();\n const requestListeners = useRef({});\n const responseListeners = useRef({});\n const sanitizeHtml = useHtmlSanitizer();\n\n const openSearch = useMdmAction('openSearch');\n const uiPath = useMdmUiPath();\n const tenant = useMdmTenant();\n const workerUrl = getWorkerURL(uiPath, tenant);\n\n const showSnackbarMessage = useContext(SnackbarContext);\n const qxApi = useContext(SandboxAPIContext);\n const interceptHandlers = useContext(InterceptHandlersContext);\n\n const workflowCheckPermission = useWorkflowCheckPermission();\n\n const metadata = useMdmMetadata() || {};\n const entity = useMdmEntity() || ({} as Entity);\n const apiPath = useMdmApiPath();\n const servicesPath = useMdmServicesPath();\n const reltioPath = useMdmReltioPath();\n const workflowPath = useMdmWorkflowPath();\n const user = useMdmUser();\n const entityUri = useMdmEntityUri();\n const isEditableMode = useMdmIsEditableMode();\n const environment = useMdmWorkflowEnvironmentUrl();\n const {type: typeSearch, data: search} = useMdmSearchProviderData() || {};\n const searchQuery = typeSearch === 'search' ? search?.query : null;\n\n let innerText = '';\n let popupText = '';\n const process = ({task, worker}: ProcessParams) => {\n if (task) {\n switch (task.action) {\n case CustomAction.SET_HTML: {\n const sanitizedHtml = sanitizeHtml((task.params as CustomActionTaskParams).html);\n if ((task.params as CustomActionTaskParams).id) {\n const elem = document.getElementById((task.params as CustomActionTaskParams).id as string);\n if (elem) elem.innerHTML = sanitizedHtml;\n } else if (innerText !== sanitizedHtml) {\n innerText = sanitizedHtml;\n resetHtml({\n worker,\n setTooltip,\n html: sanitizedHtml,\n innerText,\n setListenersToReset,\n setHtml\n });\n }\n break;\n }\n case CustomAction.SHOW_POPUP: {\n const sanitizedPopup = sanitizeHtml(task.params as string);\n popupText = sanitizedPopup;\n resetHtml({\n worker,\n setTooltip,\n html: sanitizedPopup,\n innerText: popupText,\n setListenersToReset: setPopupListenersToReset,\n setHtml: setPopup\n });\n break;\n }\n case CustomAction.HIDE_POPUP: {\n popupText = '';\n setPopup(null);\n break;\n }\n case CustomAction.SET_VISIBILITY: {\n if (task.params === 'visible') {\n setVisible(true);\n resetHtml({\n worker,\n setTooltip,\n innerText,\n setListenersToReset,\n setHtml\n });\n } else {\n setVisible(false);\n }\n break;\n }\n case CustomAction.SET_TOOLTIP: {\n setTooltip(task.params as string);\n break;\n }\n case CustomAction.SET_HEIGHT: {\n setCustomStyles((prev) => ({\n ...prev,\n height: task.params as string | number\n }));\n break;\n }\n case CustomAction.SET_WIDTH: {\n setCustomStyles((prev) => ({\n ...prev,\n width: task.params as string | number\n }));\n break;\n }\n case CustomAction.SET_ENABLED: {\n setCustomStyles((prev) =>\n task.params ? omit(['pointer-events'], prev) : {...prev, 'pointer-events': 'none'}\n );\n break;\n }\n case CustomAction.LOG: {\n console.log(task.params); //eslint-disable-line no-console\n break;\n }\n case CustomAction.MESSAGE: {\n showSnackbarMessage(task.params as string);\n break;\n }\n case CustomAction.REQUEST: {\n const processedTask = getProcessedTask(task, apiPath, reltioPath, tenant);\n processRequest({\n params: processedTask.params as CustomActionTaskParams,\n permissions: config.action.permissions,\n worker,\n metadata,\n config: config as Config,\n user,\n servicesPath,\n apiPath: reltioPath,\n tenant,\n workflowPath,\n entity,\n entityUri,\n environment,\n query: searchQuery,\n openSearch,\n workflowCheckPermission,\n ...qxApi\n });\n break;\n }\n case CustomAction.RETURN_PROCESSED_API_RESPONSE: {\n const {id, data} = task.params as CustomActionTaskParams;\n if (responseListeners.current[id]) {\n responseListeners.current[id].next(data);\n responseListeners.current = omit([id], responseListeners.current);\n }\n break;\n }\n case CustomAction.RETURN_PROCESSED_API_REQUEST: {\n const {id, data} = task.params as CustomActionTaskParams;\n if (requestListeners.current[id]) {\n requestListeners.current[id].resolve(data);\n requestListeners.current = omit([id], requestListeners.current);\n }\n break;\n }\n }\n }\n };\n\n const setRequestListeners = (options, next, requestId, resolve) => {\n requestListeners.current = {\n ...requestListeners.current,\n [requestId]: {options, next, id: requestId, resolve}\n };\n };\n\n const setResponseListeners = (next, responseId) => {\n responseListeners.current = {\n ...responseListeners.current,\n [responseId]: {next}\n };\n };\n\n const requestInterceptor = setUpRequestInterceptor({\n apiPath,\n reltioPath,\n tenant,\n processApiRequest,\n workerRef,\n setRequestListeners\n });\n const responseInterceptor = setUpResponseInterceptor({\n reltioPath,\n apiPath,\n processApiResponse,\n workerRef,\n setResponseListeners\n });\n\n const postEventMessage = (type: string, data: unknown) => {\n workerRef.current?.postMessage({action: 'event', type, data});\n };\n\n const pendingInterceptors = useRef(false);\n\n const needDelayedRequestForInterceptors =\n interceptHandlers &&\n !isEmptyValue(config.action) &&\n platform !== CustomScriptPlatform.CLASSIC &&\n (processApiRequest || processApiResponse);\n\n if (needDelayedRequestForInterceptors) {\n if (!pendingInterceptors.current && !workerRef.current) {\n interceptHandlers.startInterceptorInit();\n pendingInterceptors.current = true;\n }\n }\n\n useEffect(() => {\n if (isValidCustomScript(config.action)) {\n workerRef.current = initializeWebWorker(workerUrl, process, config);\n if (pendingInterceptors.current) {\n interceptHandlers.finishInterceptorInit();\n pendingInterceptors.current = false;\n }\n postEventMessage('updateEntity', entity);\n }\n }, [entity, config]);\n\n useEffect(() => {\n postEventMessage('editMode', isEditableMode);\n }, [isEditableMode]);\n\n useEffect(() => {\n postEventMessage('changeSearchQuery', searchQuery);\n }, [searchQuery]);\n\n useEffect(() => {\n postEventMessage('changeVisibility', visible);\n }, [visible]);\n\n useEffect(\n () => () => {\n listenersToReset.forEach((listener) => listener());\n },\n [listenersToReset]\n );\n //we need to have separate handlers in opposite case main window listeners will be removed on the popup appear\n useEffect(\n () => () => {\n popupListenersToReset.forEach((listener) => listener());\n },\n [popupListenersToReset, listenersToReset]\n );\n\n const onClick = useCallback(() => {\n postEventMessage('execute', null);\n }, [config]);\n\n useEffect(() => {\n if (!isEmptyValue(interceptHandlers) && (processApiRequest || processApiResponse)) {\n const {\n addInternalRequestInterceptor,\n addInternalResponseInterceptor,\n removeInternalRequestInterceptor,\n removeInternalResponseInterceptor\n } = interceptHandlers;\n\n addInternalRequestInterceptor(requestInterceptor);\n addInternalResponseInterceptor(responseInterceptor);\n workerRef.current.onerror = () => {\n removeInternalRequestInterceptor(requestInterceptor);\n removeInternalResponseInterceptor(responseInterceptor);\n };\n return () => {\n removeInternalRequestInterceptor(requestInterceptor);\n removeInternalResponseInterceptor(responseInterceptor);\n };\n }\n }, [config]);\n\n return {html, visible, tooltip, customStyles, onClick, popup};\n};\n","import {useCallback, useEffect, useState} from 'react';\nimport {concat, difference, isEmpty, map, pipe, prop, reduce, reject, uniq} from 'ramda';\nimport {\n Comment,\n Entity,\n FilterOptions,\n getFilteredEntities,\n isEntityUri,\n getEntity,\n EntitiesMap,\n ActivityFilter\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\nimport {useMdmEntityUriWithDataTenant} from '../contexts';\n\nconst SELECT_OPTION = 'uri,label,type';\n\nexport const useCommentsEntitiesMap = (comments: Comment[]) => {\n const safePromise = useSafePromise();\n const currentEntityUri = useMdmEntityUriWithDataTenant();\n\n const [entitiesMap, setEntitiesMap] = useState<EntitiesMap>({});\n\n const getEntities = useCallback(\n (entitiesUris: string[]) => {\n const requestFilters = [\n {\n filter: FilterOptions.EQUALS,\n fieldName: 'uri',\n values: entitiesUris\n }\n ];\n\n const requestOptions = {\n max: entitiesUris.length,\n activeness: ActivityFilter.ALL,\n select: 'uri,label,type'\n };\n return safePromise(getFilteredEntities(requestFilters, requestOptions));\n },\n [safePromise]\n );\n\n const getNotFoundEntity = (entityUri: string) => {\n return getEntity(entityUri, {options: SELECT_OPTION})\n .then((entity: Entity) => ({...entity, uri: entityUri} as Entity))\n .catch(() => ({}));\n };\n\n const addNotFoundEntities = useCallback(\n (entitiesUris: string[], entities: Entity[]) => {\n return safePromise(Promise.all((entitiesUris || []).map(getNotFoundEntity))).then(\n (notFoundEntities: Entity[]) => pipe(reject(isEmpty), concat(entities))(notFoundEntities)\n );\n },\n [safePromise]\n );\n\n useEffect(() => {\n const uniqEntitiesUris = pipe(\n reduce((entitiesUris, comment) => {\n const {objectType: type, relatedObjectUris} = comment;\n\n if (type === 'relation' || type === 'potentialMatch') {\n (relatedObjectUris || []).forEach((uri) => {\n if (uri !== currentEntityUri && isEntityUri(uri) && !entitiesMap[uri]) {\n entitiesUris.push(uri);\n }\n });\n }\n return entitiesUris;\n }, []),\n uniq\n )(comments || []);\n\n if (uniqEntitiesUris.length) {\n getEntities(uniqEntitiesUris)\n .then((results: Entity[]) => {\n const getNotFoundUris = pipe(map(prop('uri')), difference(uniqEntitiesUris));\n\n const notFoundEntities = getNotFoundUris(results);\n return addNotFoundEntities(notFoundEntities, results);\n })\n .then((results) => {\n setEntitiesMap((prevEntitiesMap) =>\n results.reduce(\n (entities, entity) => {\n entities[entity.uri] = entity;\n return entities;\n },\n {...prevEntitiesMap}\n )\n );\n })\n .catch(() => {});\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getEntities, addNotFoundEntities, comments, currentEntityUri]);\n\n return entitiesMap;\n};\n","import {useCallback} from 'react';\nimport {checkConfigPermission, ConfigPermissions} from '@reltio/mdm-sdk';\nimport {useMdmUserRoles} from '../contexts';\n\nconst emptyArray = [];\n\nexport const useConfigPermissions = () => {\n const userRoles = useMdmUserRoles() || emptyArray;\n\n return {\n canCreate: useCallback(checkConfigPermission(ConfigPermissions.CREATE, userRoles), [userRoles]),\n canRead: useCallback(checkConfigPermission(ConfigPermissions.READ, userRoles), [userRoles]),\n canUpdate: useCallback(checkConfigPermission(ConfigPermissions.UPDATE, userRoles), [userRoles]),\n canDelete: useCallback(checkConfigPermission(ConfigPermissions.DELETE, userRoles), [userRoles])\n };\n};\n","import {curry, eqBy, filter, path, prop, reject} from 'ramda';\nimport {useEffect, useMemo, useRef} from 'react';\n\nimport {areOneHierarchyUris, AttributeError, Connection, isEditableMode} from '@reltio/mdm-sdk';\n\nimport {\n useActionsHook,\n useMdmAction,\n useMdmAllRelationsToAddAndEdit,\n useMdmMode,\n useMdmProfileErrors,\n useMdmRelationsDrafts,\n useMdmListener\n} from '../contexts';\n\nconst isConnectionHasError = curry((errors: AttributeError[], connection: Connection) => {\n const relationUri = path(['relation', 'relationUri'], connection);\n return errors.some(\n (error) =>\n areOneHierarchyUris(prop('uri', error), relationUri) ||\n areOneHierarchyUris(prop('parentUri', error), relationUri) ||\n (error.path || []).some(\n (errorPath) => path(['value', 'relation', 'relationUri'], errorPath) === relationUri\n )\n );\n});\n\nconst getInvalidConnections = (errors: AttributeError[] = [], connections: Connection[] = []) =>\n filter(isConnectionHasError(errors), connections);\n\nexport const useExpandInvalidRelations = (configId: string) => {\n const openRelationEditor = useMdmAction('openRelationEditor');\n const mode = useMdmMode();\n const profileErrors = useMdmProfileErrors();\n const shouldOpenInvalidEditors = useRef(true);\n const listenToActions = useActionsHook();\n const {addedConnections = [], editedConnections = []} = useMdmRelationsDrafts(configId) || {};\n const relationsToAddAndEdit = useMdmAllRelationsToAddAndEdit([configId]) || [];\n const preparedConnectionsList = reject(\n (draftConnection: Connection) =>\n relationsToAddAndEdit.some(eqBy(path(['relation', 'relationUri']), draftConnection)),\n [...addedConnections, ...editedConnections]\n );\n const invalidConnections = useMemo(\n () => getInvalidConnections(profileErrors, preparedConnectionsList),\n [profileErrors, preparedConnectionsList]\n );\n const expandInvalidRelatonsListener = useMdmListener('expandInvalidRelatonsListener');\n const setShouldOpenInvalidEditors = (shouldOpen: boolean) => (shouldOpenInvalidEditors.current = shouldOpen);\n const listenerCallback = expandInvalidRelatonsListener(() => setShouldOpenInvalidEditors(true));\n\n useEffect(() => {\n if (isEditableMode(mode) && invalidConnections.length && shouldOpenInvalidEditors.current) {\n invalidConnections.forEach((connection: Connection) => openRelationEditor(configId, connection));\n setShouldOpenInvalidEditors(false);\n }\n }, [mode, invalidConnections]);\n\n useEffect(() => {\n const stopListeningActions = listenToActions(listenerCallback);\n return () => stopListeningActions();\n }, [listenToActions]);\n};\n","import i18n from 'ui-i18n';\nimport {useSnackbar} from './useSnackbar';\n\ntype Props = {\n onLayoutReset: () => void;\n onResetUndo: () => void;\n};\n\nexport const useLayoutResetter = ({onLayoutReset, onResetUndo}: Props) => {\n const resetLayout = () => {\n onLayoutReset();\n showSnackbarMessage(\n i18n.text(\n \"The default layout is now restored. It's still not too late to revert your changes. Click Undo to go back to your personalized settings.\"\n )\n );\n };\n\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar({\n onDismissClick: onResetUndo,\n showDismiss: true,\n autoHideDuration: 5000,\n dismissTitle: i18n.text('Undo')\n });\n\n return {SnackbarRenderer, resetLayout};\n};\n","import {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport {cond, pipe, prop, T, evolve, filter as filterFn, when, identity, times, length, ifElse, always} from 'ramda';\nimport {\n ActivityFilter,\n addGlobalFilterToQuery,\n Connection,\n Entity,\n getRelationsForDataTenantEntity,\n getRelationsForEntity,\n isAvailableEntityTypeUri,\n isAvailableRelationTypeUri,\n isDataTenantEntity,\n isObject,\n isTempUri,\n Mode,\n RelationsContent,\n RelationsRequestConfig,\n RelationsViewConfig,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\nimport {usePrevious} from './usePrevious';\nimport {\n useMdmAction,\n useMdmDtssPath,\n useMdmGlobalSearchRequestOptions,\n useMdmMetadata,\n useMdmProfileLastLoadedTime,\n useMdmTenant\n} from '../contexts';\n\ntype Props = {\n sorting?: {\n field: string;\n order: string;\n };\n filter?: string;\n page: number;\n rowsPerPage: number;\n config: Pick<RelationsViewConfig, 'suggested' | 'content' | 'id'>;\n entity: Entity;\n relationActivityFilter?: ActivityFilter;\n mode: Mode;\n searchByOv?: boolean;\n};\n\nconst buildSuggestedIds = when(\n identity,\n pipe(\n wrapInArrayIfNeeded,\n length,\n times((n) => n + 1)\n )\n);\nconst isValidRequestConfig = (config: RelationsRequestConfig) => {\n let entry: RelationsRequestConfig | RelationsRequestConfig['nextEntry'] = config;\n while (entry) {\n if (entry.entityTypes?.length === 0) {\n return false;\n }\n entry = entry.nextEntry;\n }\n return true;\n};\n\ntype ConnectionResponse = Array<{connections?: Connection[]; total: number}>;\n\nexport const useRelationsLoader = ({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter,\n mode,\n searchByOv = false\n}: Props) => {\n const [isLoading, setIsLoading] = useState(false);\n\n const relationsLoaded = useMdmAction('relationsLoaded');\n const tenant = useMdmTenant();\n const metadata = useMdmMetadata();\n const dtssPath = useMdmDtssPath();\n const {activityFilter, globalFilter} = useMdmGlobalSearchRequestOptions() || {};\n const lastLoadedTime = useMdmProfileLastLoadedTime();\n\n const safePromise = useSafePromise();\n\n const processContent = (content: RelationsContent) => {\n const getUri = when(isObject, prop('uri'));\n const filterRelation = pipe(getUri, isAvailableRelationTypeUri(metadata));\n\n return evolve({\n entityTypes: filterFn(isAvailableEntityTypeUri(metadata)),\n inRelations: filterFn(filterRelation),\n outRelations: filterFn(filterRelation),\n nextEntry: processContent\n })(content);\n };\n\n const suggested = config.suggested;\n const options = useMemo(\n () => ({\n searchByOv\n }),\n [searchByOv]\n );\n const modeRef = useRef<Mode>(mode);\n modeRef.current = mode;\n const loadRelations = useCallback(() => {\n if (entity?.uri) {\n const processedConfig = processContent(config.content);\n const requestConfig = {\n ...processedConfig,\n sortBy: sorting?.field,\n order: sorting?.order,\n returnDates: true,\n returnObjects: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n },\n max: rowsPerPage,\n offset: page * rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || undefined,\n suggested: buildSuggestedIds(suggested)\n };\n const configs = [requestConfig].concat(\n ifElse(\n identity,\n pipe(wrapInArrayIfNeeded, (suggested) =>\n suggested.map((config, i) => ({...config, id: requestConfig.suggested[i]}))\n ),\n always([])\n )(suggested)\n );\n\n const emptyResponsePromise = Promise.resolve([{total: 0}]);\n const request: (entity: Entity) => Promise<ConnectionResponse> = cond([\n [pipe(prop('uri'), isTempUri), () => emptyResponsePromise],\n [\n always(!isValidRequestConfig(requestConfig)),\n () => {\n console.warn('Connections request config has \"entityTypes\": []. Request is blocked.');\n return emptyResponsePromise;\n }\n ],\n [\n isDataTenantEntity,\n (entity) =>\n getRelationsForDataTenantEntity({\n entityUri: entity.uri,\n configs: configs,\n customerTenant: tenant,\n dataTenant: entity.dataTenant,\n dtssPath,\n options\n })\n ],\n [T, (entity) => getRelationsForEntity(entity.uri, configs, options)]\n ]);\n setIsLoading(true);\n safePromise(request(entity))\n .then((result) => {\n if (!Array.isArray(result)) {\n throw Error(JSON.stringify(result));\n }\n const [{connections, total}] = result;\n relationsLoaded({id: config.id, connections, total, mode: modeRef.current});\n })\n .catch((e) => {\n console.warn('Failed to load relations data', e);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n activityFilter,\n metadata,\n config,\n relationsLoaded,\n dtssPath,\n entity?.uri,\n entity?.dataTenant,\n filter,\n globalFilter,\n page,\n relationActivityFilter,\n rowsPerPage,\n safePromise,\n sorting,\n tenant,\n options,\n lastLoadedTime\n ]);\n const isRequestSentRef = useRef<boolean>(false);\n isRequestSentRef.current = false;\n useEffect(() => {\n isRequestSentRef.current = true;\n loadRelations();\n }, [loadRelations]);\n\n const prevMode = usePrevious(mode);\n useEffect(() => {\n if (mode === Mode.Viewing && !isRequestSentRef.current && prevMode !== mode) {\n isRequestSentRef.current = true;\n loadRelations();\n }\n }, [loadRelations, mode, prevMode]);\n return {isLoading, reload: loadRelations};\n};\n"],"names":["clearError","omit","accordionSummaryHeight","defaultBorderStyle","makeStyles","theme","accordion","borderTop","borderBottom","fontSize","boxShadow","display","margin","accordionExpanded","accordionSummary","alignItems","height","minHeight","accordionSummaryHeading","flex","typography","pxToRem","fontWeight","fontWeightRegular","accordionSummaryExpanded","accordionSummaryContent","accordionDetails","maxHeight","overflow","paddingTop","paddingBottom","paddingLeft","marginTop","parents","color","palette","text","primary","errorWrapper","lineHeight","flexDirection","errorTitle","attributeTypesPath","secondary","goToIcon","marginLeft","errorsAccordion","backgroundColor","borderColor","errorsAccordionDetails","warningsAccordion","warningsAccordionDetails","icon","marginRight","errorIcon","fill","warningIcon","ErrorsPanel","memo","panels","expandedPanelId","onToggle","ErrorComponent","styles","useStyles","length","map","id","title","items","accordionClassName","accordionDetailsClassName","Accordion","key","square","expanded","onChange","className","classes","root","AccordionSummary","content","expandIcon","ExpandMore","Typography","AccordionDetails","classnames","error","i","displayName","props","width","viewBox","xmlns","fillRule","clipRule","d","fillOpacity","Error","metadata","useMdmMetadata","isEditableMode","useMdmIsEditableMode","displayedMessage","type","source","message","attributeTypeUri","attributeType","ErrorType","ErrorSource","attrType","findAttributeTypeByUri","i18n","attribute","label","getDisplayedErrorMessage","displayedErrorPath","path","errorPath","uri","slice","filter","AttributeValuePathItemType","includes","identity","join","getDisplayedErrorPath","displayedAttributeTypesPath","either","getDisplayedAttributeTypesPath","highlightError","useContext","ScrollToElementContext","showLink","parentUri","SmallIconButton","HyperlinkIcon","size","onClick","tooltipTitle","AttributesErrorsPanel","attributesWithErrors","cachedErrors","allErrors","cacheForAllErrors","useRef","errors1","errors2","equals","areErrorsEqual","current","useCachedErrors","errors","warnings","useMemo","partition","isCriticalError","setExpandedPanelId","useState","number","useEffect","handleChange","useCallback","panelId","event","isExpanded","stroke","strokeWidth","main","closeIcon","position","right","bottom","transform","button","padding","FilterButton","enabled","Tooltip","IconButton","Filter","Close","propTypes","PropTypes","searchButton","input","maxWidth","background","startAdornment","ExpandableSearchInput","query","value","setValue","isOpen","setIsOpen","Input","autoFocus","placeholder","disableUnderline","pipe","getValue","InputAdornment","Search","endAdornment","CloseIcon","F","always","tap","onKeyPress","when","propEq","trim","T","EmptyStub","style","widthToHide","children","handleWidth","render","menuItem","whiteSpace","itemText","textPrimary","textSecondary","MultilineMenuItem","forwardRef","ref","item","onMenuClose","noop","MenuItem","ListItemText","paddingRight","profileCardWrapper","gap","profileCardContainer","flexGrow","rulesContainer","marginBottom","dividerWrapper","alignSelf","divider","relevanceBadge","ProfileMatchCard","entitiesMap","entity","match","showRelevanceBadge","matchRuleSummaries","some","checkMatchRuleSummaryRelevance","ProfileCard","object","container","matchRules","MatchRulesBlock","Divider","orientation","RelevanceScoreBadge","editor","overflowX","letterSpacing","dense","actionButtons","justifyContent","RelationEditor","connection","config","mode","highlightedError","relationType","direction","relation","isNew","entityUri","getEntityUriFromConnection","relationUri","getRelationUriFromConnection","isTempEntity","isTempUri","mdmSetInitialInfo","useMdmAction","setRelationType","closeRelationEditor","entityCreated","entityDeleted","setRelationEntity","errorDeactivated","errorsSet","addAttributes","modifyAttribute","removeAttribute","addRelation","editRelation","initialConnection","useMdmInitialConnection","initialModifiedEntity","useMdmInitialConnectionTempEntity","mdmModifiedEntity","useMdmModifiedEntity","mdmAllModifiedEntities","useMdmModifiedEntities","globalSearchRequestOptions","useMdmGlobalSearchRequestOptions","profileErrors","useMdmProfileErrors","getRelationEditorActiveError","modifiedEntity","allModifiedEntities","errorClassName","useScrollToAttributeError","isSimple","inRelations","inRelationTypes","outRelations","outRelationTypes","getInOutRelations","parentEntityUri","contentSecondLevel","firstLevelRelationAttrTypes","getRelationAttributesList","attributeListEntity","attributes","getRelationAttributesFromConnection","getActivenessAttributes","relatedTempEntities","findRelatedTemporaryEntities","relatedTempEntitiesUrisHistory","setInitialInfo","concat","prop","uniq","initialRelatedTempEntities","defaultRelationType","getDefaultRelationTypeObject","initialConnectionChangeablePart","pick","connectionChangeablePart","hasChanges","isEmptyValue","initial","actual","_","applyAction","curry","onRelationTypeChange","handleClose","updateModifiedEntityLabel","entityType","getEntityType","updateConnectionEntityLabel","setModifiedEntity","deleteModifiedEntity","onChangeEntity","getErrorId","validate","validateConnection","resetErrors","onApply","omitMarks","differenceWith","forEach","onCancel","initialTempEntities","onAddAttributes","params","param","viewId","onChangeAttribute","onDeleteAttribute","onCreateEntity","entityTypeUri","initValue","newEntityAttrTypes","relationEditorAttributeTypesSelectionStrategy","getCreatableAttributeTypes","newEntity","createTemporaryEntity","attributeTypes","errorMessage","getErrorMessage","getEntityTypesUris","entityTypes","ConnectionRelationTypeSelector","Boolean","ErrorWrapper","EntitySelector","entityTypesUris","max","onCreate","isSuggestMode","undefined","attributeTypesSelectionStrategy","AttributesList","attrTypes","showEmptyEditors","crosswalks","Button","disabled","ConnectionType","RelationsConfigType","MetadataType","withContext","contextValue","element","isHighlightedErrorType","isAttributeTypeError","MapControlContainer","controlElement","setControlElement","controlDiv","document","createElement","divIndex","controls","push","removeAt","classList","add","createPortal","opacity","xmlnsXlink","xlinkHref","mask","minWidth","ButtonWithTooltip","withTooltip","TopRightMapControls","drawingMode","drawingModes","hasActiveOverlay","onDrawingModeChanged","onClearOverlay","changeDrawingModeTo","HighlightOff","Icon","MAP_DRAWING_MODES","RadiusIcon","DrawIcon","getIcon","checkbox","boxSizing","TopCenterMapControls","isSearchOnMapMove","onChangeIsSearchOnMapMove","FormControlLabel","control","Checkbox","checked","target","getMapBoundsPolygon","bounds","getBounds","ne","getNorthEast","sw","getSouthWest","neLat","lat","neLng","lng","swLat","swLng","additionalPoint1","additionalPoint2","center","getCenter","getDrawingMode","window","google","maps","drawing","OverlayType","CIRCLE","POLYGON","fitMapBoundsForOverlay","overlay","existingBounds","LatLngBounds","extend","LatLng","fitBounds","popper","borderRadius","hoveredMarkerIcon","svg2Url","markerIcon","marker","otherProps","popperAnchor","hovered","setHovered","activeEntityUri","EntityMarkerContext","isActive","pathEq","point","setHoveredDebounced","debounce","onMouseOver","onMouseOut","handleClick","Popper","anchorEl","open","modal","placement","url","scaledSize","Size","visible","options","alignBottom","pane","pixelOffset","closeBoxURL","enableEventPropagation","disableAutoPan","mapControlContainer","libraries","ReltioMap","markers","mapKey","defaultZoom","defaultCenter","loadingElement","isSearchEnabled","activeOverlay","overlayOptions","markerClusterer","markerClustererOptions","mapOptions","mapContainerClassName","onMapBoundsChanged","onOverlayUpdated","onMarkerClicked","isLoaded","loadError","useJsApiLoader","googleMapsApiKey","mapMoveEndTimer","setMap","polygon","setPolygon","setDrawingMode","apiIsLoaded","prevMarkers","usePrevious","prevActiveOverlay","prevApiIsLoaded","markersChanged","apiIsLoadedChanged","shouldUseFitMapBoundsForOverlay","MAP_MINIMUM_SCALE_RADIUS","fitMapBoundsForMarkers","useFitMapBounds","allOverlayOptions","DEFAULT_OVERLAY_OPTIONS","googleMapOptions","DEFAULT_GOOGLE_MAP_OPTIONS","handleChangeIsSearchOnMapMove","clearTimeout","handleMapMoveStart","handleMapMoveEnd","handleMapIdle","setTimeout","handleOverlayChange","e","propOverlay","polygonStateOverlay","stateOverlay","isEmpty","typeActions","getPath","getArray","latlng","radius","getRadius","data","handleOverlayComplete","handleClearOverlay","renderMarkers","clusterer","shouldRenderDrawingManager","shouldRenderRightMapControls","shouldRenderCenterMapControls","shouldRenderPolygon","mapTypeId","MapTypeId","ROADMAP","onLoad","zoom","onZoomChanged","onDragStart","onIdle","ControlPosition","TOP_RIGHT","TOP_CENTER","editable","onMouseUp","onDragEnd","onPolygonComplete","onCircleComplete","drawingControl","circleOptions","polygonOptions","VerticalDivider","borderLeft","flexShrink","defaultHistoryDiff","appearance","roles","tags","fixRefEntity","evolve","refEntity","wrapInArrayIfNeeded","refRelation","prepareHistorySlice","historySlice","useHistoryDiff","setHistoryDiff","useMdmHistorySlice","historyDiff","useMdmHistoryDiff","historyMode","useMdmHistoryMode","useMdmEntity","aEntity","bEntity","History","computeEntityHistoryDiff","HistoryMode","dueDate","dueDateInput","inputLabel","taskId","isTaskOpen","updateDueDate","updateRequestIsInProgress","readOnly","updateTaskState","WorkflowTasksContext","workflowPath","useMdmWorkflowPath","environment","useMdmWorkflowEnvironmentUrl","tenant","useMdmTenant","safePromise","useSafePromise","setUpdateRequestIsInProgress","canUpdateTask","useWorkflowCheckPermission","checkWorkflowPermission","isOpenTask","newValue","updateDueDateForTask","then","catch","showWorkflowError","finally","useWorkflowDueDate","DateEditor","date","getTime","slotProps","textField","InputProps","InputLabelProps","priority","priorities","updatePriority","newPriority","updatePriorityForTask","WorkflowPriority","useWorkflowPriority","DropDownSelector","isDisabled","hideSelectedOptions","find","TextFieldProps","decorator","lineBlock","withLinePadding","noLine","line","left","top","border","plain","last","rowDivider","first","transparent","light","variant","taskToColor","COLORS","colorIndex","card","withBackground","lineWrapper","zIndex","info","wordWrap","commentsInfo","commentsIcon","infoValue","infoBlock","header","caption","flag","mainInfo","controlsBox","controlsInRow","comments","task","actions","assignee","createdBy","createTime","step","processDefinitionDisplayName","objectURIs","processInstanceComments","possibleActions","preferredAction","dcrId","getDCRId","hash","useWorkflowColor","setExpanded","canViewComments","workflowActions","actionRequestIsInProgress","useWorkflowActions","Flag","CollapseButton","CollaborationIcon","TaskActions","isInProgress","AssigneeSelector","WorkflowComments","cx","cy","r","getOperationType","oldValue","DCRTypes","DCROperationTypes","pin","ignored","getOperationLabel","operation","getDataTypeDefinition","attributeValue","allPass","DataTypes","isUrl","getAttrDataTypeDefinition","getValues","newAttrValues","pathOr","name","oldAttrValues","Math","times","index","values","getEntityChanges","entityInfo","changes","getFilteredAttrTypes","getAttributesList","getRelationChanges","relationInfo","changeType","getRelationType","flatten","level","propOr","addRelationOperationIfNeeded","dcrAttributesFactory","complement","getNestedAttributeChange","getReferenceAttributeChange","isSpecialAttribute","is","Object","getSimpleAttributeValue","getSimpleAttributeChange","attributeTypeList","getAttributeTypeSubAttributes","getLabel","getDiffParameters","SPECIAL_ATTRIBUTES_NAMES","EntityAttrTypes","prepareStartOrEndDate","parseValue","isNaN","parseInt","isExistedValue","isExistNewValue","isExistOldValue","prepareRolesOrTags","change","getRoleLabel","diffNewValue","difference","diffOldValue","prepareAttribute","changePath","attributePath","refObjectURI","refAttributeType","generateTempUri","typePath","split","pathArray","holder","currentValue","indexOf","isNil","createEntityOrRelation","startDate","endDate","defaultProfilePicValue","newObject","mergeAttributesInChange","objectInfo","linkLabel","suggestionsCount","Link","component","underline","field","wordBreak","fieldName","arrow","chip","textTransform","ArrowRightAlt","Chip","AttributesChangesContext","React","linkContainer","textDecoration","cursor","disabledLink","pointerEvents","objectsInfo","useMdmEntityUri","getLinkDescription","isReference","currentEntityUri","objectLabel","objectUri","startObjectUri","endObjectUri","endObjectLabel","startObjectLabel","objectURI","getAttributeDescription","renderLink","isNotExist","isExist","EntityUriLink","changeLabel","renderValue","attrValue","getAttributeValue","DataTypeValue","dataTypeDefinition","has","getSuggestionsCount","getEntitiesObjects","isEntityUri","getRelationsObjects","isRelationUri","getRelations","objectsWithChanges","createEntityRelationsObjectByEntity","relations","createEntityRelationsObjectByRelation","concatEntityRelationsObjects","acc","mergedRelations","isCreateEntityOperation","dcr","showMoreLink","dcrUri","relationsInfo","mergedEntityChanges","mergedRelationsChanges","getAttributeChanges","attributeName","concatChanges","getters","attributesTree","reduce","getter","changesTree","result","relationsTrees","updateRelation","mergeChanges","changesList","relationshipTitle","itemsToShow","collapsedSuggestionsCount","limit","setIsExpanded","collapsedItems","visibleSuggestionsCount","useCollapsibleList","ifElse","any","getEntityUriForChangeRequest","getEntityUriForLink","screen","Provider","getDCRUri","groupedObjects","setGroupedObjects","setDcr","requestEntities","entityUris","Promise","resolve","getEntitiesByUris","searchOptions","defaultMaxValues","getDataChangeRequest","keys","extractObjectsFromChangeRequest","entityObjectsWithRelations","relationsObjects","relationsObjectsWithEntity","relationsObjectsWithoutEntity","entities","relationsObjectsWithRequestedEntities","relationsObject","showApiError","useChangeRequest","DcrTaskIcon","pmCard","defaultOptions","showTransitiveMatches","showInactiveEntities","matches","useMatchesLoader","rowsPerPage","Number","MAX_SAFE_INTEGER","page","PmTaskIcon","WorkflowTaskCardsFactory","build","processType","PredefinedWorkflowProcessType","DeleteRequestTaskIcon","DefaultTaskIcon","WorkflowTaskCard","popoverPaper","simpleDropDownSelector","inputRoot","select","footer","cancelButton","AddWorkflowDialog","onClose","comment","setComment","taskType","setTaskType","isOpenSnackbar","setIsOpenSnackbar","definitions","setDefinitions","processDefinitions","manualStart","objectTypes","_entityType","filterDefinitions","useWorkflowDefinitions","processInstance","loading","setLoading","loadTasks","startProcessInstance","useWorkflowProcessInstance","Popover","anchorOrigin","vertical","horizontal","transformOrigin","paper","SimpleDropDownSelector","definition","TextField","hiddenLabel","multiline","Portal","body","Snackbar","autoHideDuration","buttonLabel","AddWorkflowButton","setAnchorEl","canStartProcess","canViewProcessDefinitions","currentTarget","Add","TaskActionButtons","preferredActions","otherActions","action","useWorkflowTasks","processTypes","showClosedTasks","tasks","setTasks","total","setTotal","isWorkflowEnabled","useMdmIsWorkflowEnabled","entityLastLoadedTime","useMdmProfileLastLoadedTime","canViewTasks","parsedProcessTypes","Array","isArray","requests","getTasksForEntity","isDCRUri","getEntityUriFromDCRUri","includeClosed","all","responses","reject","uniqBy","isRequestedTask","console","warn","payload","mergeLeft","fillColor","strokeWeight","strokeColor","clickable","mapTypeControl","streetViewControl","fullscreenControl","InterceptHandlersContext","SandboxAPIContext","getCurrentPerspectiveId","setEntityUri","showPerspective","validateParams","validationUrl","permissions","permission","urlOrigin","permRegex","RegExp","decodedPerm","replace","startsWith","test","getAuthHeaders","async","headers","servicesPath","accessToken","getAccessToken","Authorization","processRequest","worker","apiPath","user","openSearch","workflowCheckPermission","method","handleRequest","request","response","json","postMessage","JSON","parse","stringify","status","RequestAction","sendRequestFromCustomSandbox","noRequestProcessor","noRetry","sendApiRequest","isExternalUrl","sendWorkflowRequest","workflowRequest","processDefinitionId","searchString","startProcessFromQuery","processFromQuery","changeRequestURI","listener","perspective","searchState","alert","confirm","prompt","defaultText","location","reload","isValidCustomScript","files","platform","CustomScriptPlatform","isURLtoProcess","processApi","regExp","getWorkerURL","uiPath","getRequestFakeUrl","reltioPath","getResponseFakeUrl","getProcessedTask","isApiAction","newUrl","processInnerHtml","parent","setTooltip","handlersToReset","uiActions","getAttribute","uiTooltip","uiAction","handler","postEventMessage","readFilePromises","from","file","reader","FileReader","onload","lastModified","onerror","readAsArrayBuffer","getFilesWithArrayBuffer","addEventListener","removeEventListener","childNodes","child","nodeType","resetHtml","innerText","html","setListenersToReset","setHtml","docBlock","innerHTML","setUpRequestInterceptor","processApiRequest","workerRef","setRequestListeners","next","fakeURL","requestId","nanoid","setUpResponseInterceptor","processApiResponse","setResponseListeners","abort","responseId","img","link","iframe","a","useHtmlSanitizer","allowedAttributes","allowedTags","sanitizeHtml","sanitizeOptions","allowVulnerableTags","useAPI","listenersToReset","popupListenersToReset","setPopupListenersToReset","setVisible","popup","setPopup","tooltip","customStyles","setCustomStyles","requestListeners","responseListeners","useMdmUiPath","workerUrl","showSnackbarMessage","SnackbarContext","qxApi","interceptHandlers","useMdmApiPath","useMdmServicesPath","useMdmReltioPath","useMdmUser","typeSearch","search","useMdmSearchProviderData","searchQuery","popupText","process","CustomAction","sanitizedHtml","elem","getElementById","sanitizedPopup","prev","log","processedTask","requestInterceptor","responseInterceptor","pendingInterceptors","needDelayedRequestForInterceptors","startInterceptorInit","initializeWebWorker","finishInterceptorInit","addInternalRequestInterceptor","addInternalResponseInterceptor","removeInternalRequestInterceptor","removeInternalResponseInterceptor","useCommentsEntitiesMap","useMdmEntityUriWithDataTenant","setEntitiesMap","getEntities","entitiesUris","requestFilters","FilterOptions","requestOptions","activeness","ActivityFilter","getFilteredEntities","getNotFoundEntity","getEntity","addNotFoundEntities","notFoundEntities","uniqEntitiesUris","objectType","relatedObjectUris","results","getNotFoundUris","prevEntitiesMap","emptyArray","useConfigPermissions","userRoles","useMdmUserRoles","canCreate","checkConfigPermission","ConfigPermissions","canRead","canUpdate","canDelete","isConnectionHasError","areOneHierarchyUris","useExpandInvalidRelations","configId","openRelationEditor","useMdmMode","shouldOpenInvalidEditors","listenToActions","useActionsHook","addedConnections","editedConnections","useMdmRelationsDrafts","relationsToAddAndEdit","useMdmAllRelationsToAddAndEdit","preparedConnectionsList","draftConnection","eqBy","invalidConnections","connections","getInvalidConnections","expandInvalidRelatonsListener","useMdmListener","setShouldOpenInvalidEditors","shouldOpen","listenerCallback","stopListeningActions","useLayoutResetter","onLayoutReset","onResetUndo","SnackbarRenderer","useSnackbar","onDismissClick","showDismiss","dismissTitle","resetLayout","buildSuggestedIds","n","isValidRequestConfig","entry","nextEntry","useRelationsLoader","sorting","relationActivityFilter","searchByOv","isLoading","setIsLoading","relationsLoaded","dtssPath","useMdmDtssPath","activityFilter","globalFilter","lastLoadedTime","processContent","getUri","isObject","filterRelation","isAvailableRelationTypeUri","filterFn","isAvailableEntityTypeUri","suggested","modeRef","loadRelations","requestConfig","sortBy","order","returnDates","returnObjects","offset","addGlobalFilterToQuery","configs","emptyResponsePromise","cond","isDataTenantEntity","getRelationsForDataTenantEntity","customerTenant","dataTenant","getRelationsForEntity","isRequestSentRef","prevMode","Mode"],"sourceRoot":""}
|