@reltio/remotes 1.4.1579 → 1.4.1580
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/4183.js +1 -1
- package/4183.js.map +1 -1
- package/6856.js.map +1 -1
- package/7762.js +1 -1
- package/7762.js.map +1 -1
- package/package.json +1 -1
package/7762.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"7762.js","mappings":"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CACR,IAAK,CAtUT,gBACA,aACA,WACA,qBACA,eACA,aACA,YACA,cACA,SACA,gBACA,gBACA,cACA,UACA,gBACA,iBACA,cACA,OACA,QACA,OACA,KACA,WACA,aACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,oBACA,mBACA,SACA,KACA,KACA,IACA,aACA,UACA,kBACA,YACA,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,cAC1Cm9B,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,WACvCC,KAAM,CAAC,OAAQ,OACfC,OAAQ,CAAC,OACTC,EAAG,CAAC,SAER/iB,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,wcC1U9D,MAAMgjB,EAAmB,KAC5B,MAAM,kBAACC,EAAD,YAAoBC,GAAeC,IAAAA,UACnC,WAAC19B,EAAD,KAAaua,GAAQojB,EACrBzwB,EAAoB,CACtBuwB,YAAaA,EAAY98B,OAAO4Z,GAChCijB,kBAAmB,EAAF,GAAMA,EAAsBx9B,GAC7C49B,qBAAqB,GAEzB,OAAQlC,GAAiBgC,GAAAA,CAAahC,EAAMxuB,I,mgBCqCzC,MAAM2wB,EAAS,WAAmC,gBAAlCr/B,EAAkC,uDAAjB,GACpC,MAAOk9B,EAAME,IAAWvjC,EAAAA,EAAAA,aACjBylC,EAAkBnC,IAAuBtjC,EAAAA,EAAAA,UAA4B,KACrE0lC,EAAuBC,IAA4B3lC,EAAAA,EAAAA,UAA4B,KAC/E8b,EAAS8pB,IAAc5lC,EAAAA,EAAAA,WAAS,IAChC6lC,EAAOC,IAAY9lC,EAAAA,EAAAA,aACnB+lC,EAASpE,IAAc3hC,EAAAA,EAAAA,UAAiB,OACxCgmC,EAAcC,IAAmBjmC,EAAAA,E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","sources":["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/ErrorBoundary/ErrorBoundary.tsx","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.js","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/RelationEditor/index.js","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/helpers.ts","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/icons/ResizeIcon.svg.ts","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/ReltioGridLayout.tsx","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/cards/GenericWorkflowTaskCard/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/DueDateField/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowDueDate.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/DueDateField/DueDateField.tsx","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/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/components/workflow/cards/PotentialMatchTaskCard/styles.ts","webpack://@reltio/remotes/../components/src/icons/PmTaskIcon.tsx","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/useLayoutResetter.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationsLoader.ts"],"sourcesContent":["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 '@material-ui/core/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 as IconButton} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {Tooltip as Tooltip} from '@material-ui/core';\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}}>\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 React from 'react';\n\ntype State = {\n error: Error | null;\n};\n\ntype Props = {\n error: React.ReactNode;\n};\n\nexport default class ErrorBoundary extends React.Component<Props, State> {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n\n componentDidCatch(error) {\n this.setState({\n error: error\n });\n console.error(error);\n }\n\n render() {\n const {children, error} = this.props;\n if (this.state.error) {\n return error;\n }\n return children;\n }\n}\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n searchButton: {\n marginLeft: 'auto !important',\n marginRight: '-4px',\n padding: '8px'\n },\n input: {\n flex: '1 0 200px',\n marginLeft: '70px',\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 '@material-ui/icons/Close';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport {Input as Input} from '@material-ui/core';\nimport {InputAdornment as InputAdornment} from '@material-ui/core';\nimport SearchIcon from '@material-ui/icons/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 const hasValue = value && value.length;\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 {hasValue && (\n <SmallIconButton\n size=\"S\"\n icon={CloseIcon}\n onClick={pipe(F, setIsOpen, always(''), tap(onChange), setValue)}\n />\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)}>\n <SearchIcon />\n </IconButton>\n );\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\n\nconst EmptyStub = () => <div style={{display: 'none'}} />;\n\nconst HideOnShrink = ({widthToHide, children}) => (\n <ReactResizeDetector\n handleWidth={true}\n render={({width}) => (width > widthToHide ? <>{children}</> : <EmptyStub />)}\n />\n);\n\nHideOnShrink.propTypes = {\n children: PropTypes.node,\n widthToHide: PropTypes.number.isRequired\n};\n\nexport default HideOnShrink;\n","import {makeStyles} from '@material-ui/core/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 as MenuItem} from '@material-ui/core';\nimport {ListItemText as ListItemText} from '@material-ui/core';\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 '@material-ui/core/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 background: '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 as Divider} from '@material-ui/core';\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 '@material-ui/core/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} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n AttributeErrorType,\n ConnectionType,\n createTemporaryEntity,\n EntityType,\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} from '@reltio/mdm-sdk';\nimport {profile} from '@reltio/mdm-module';\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 {isHighlightedErrorType, ScrollToElementContext} 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 = ({\n connection,\n modifiedEntity,\n initialConnection,\n initialModifiedEntity,\n allModifiedEntities,\n dispatch,\n config,\n mode,\n metadata,\n globalSearchRequestOptions,\n error,\n highlightedError\n}) => {//NOSONAR\n const {relationUri, relationType, direction} = connection.relation;\n const isNew = connection.isNew;\n const styles = useStyles();\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 ...profile.relations.selectors.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 dispatch(profile.relations.actions.setInitialInfo(config.id, relationUri, entity, connection));\n },\n [dispatch]\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 = isNew ? profile.relations.actions.addRelation : profile.relations.actions.editRelation;\n\n const onRelationTypeChange = useCallback(\n pipe(profile.relations.actions.setRelationType(config.id, relationUri), dispatch),\n [config, relationUri, dispatch]\n );\n\n const handleClose = useCallback(\n () => pipe(profile.relations.actions.closeRelationEditor, dispatch)(config.id, relationUri),\n [config, relationUri, dispatch]\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(\n (entity) => dispatch(profile.modifiedEntities.actions.entityCreated(entity)),\n [dispatch]\n );\n\n const deleteModifiedEntity = useCallback(\n (entityUri) => dispatch(profile.modifiedEntities.actions.entityDeleted(entityUri)),\n [dispatch]\n );\n\n const onChangeEntity = useCallback(\n (entity) => {\n if (modifiedEntity) {\n deleteModifiedEntity(modifiedEntity.uri);\n }\n dispatch(profile.relations.actions.setRelationEntity(config.id, relationUri, entity));\n if (error) {\n dispatch(profile.errors.actions.errorDeactivated(getErrorId(error)));\n }\n },\n [config.id, relationUri, dispatch, modifiedEntity, deleteModifiedEntity, error]\n );\n\n const validate = useCallback(() => {\n const errors = validateConnection(metadata, allModifiedEntities, connection);\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [connection, metadata, allModifiedEntities, dispatch]);\n\n const resetErrors = useCallback(() => dispatch(profile.errors.actions.errorsSet([])), [dispatch]);\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 dispatch,\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, dispatch, 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) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId: config.id}))),\n [config.id, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId: config.id}),\n [config.id, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId: config.id}),\n [config.id, dispatch]\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 modifiedEntity: EntityType,\n initialConnection: ConnectionType,\n initialModifiedEntity: EntityType,\n allModifiedEntities: PropTypes.object,\n dispatch: PropTypes.func,\n config: RelationsConfigType,\n mode: PropTypes.string,\n metadata: MetadataType,\n globalSearchRequestOptions: PropTypes.object,\n error: AttributeErrorType,\n parentEntityUri: PropTypes.string,\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 RelationEditor from './RelationEditor';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {connect} from 'react-redux';\nimport {getRelationEditorActiveError, isTempUri} from '@reltio/mdm-sdk';\n\nconst getConnectionEntityUri = (props) => profile.relations.selectors.getEntityUriFromConnection(props.connection);\nconst getConnectionRelationUri = (props) => profile.relations.selectors.getRelationUriFromConnection(props.connection);\n\nconst mapStateToProps = (state, ownProps) => {\n const entityUri = getConnectionEntityUri(ownProps);\n const relationUri = getConnectionRelationUri(ownProps);\n const isTempEntity = isTempUri(entityUri);\n return {\n initialConnection: mdmModule.selectors.getInitialConnection(state, ownProps.config.id, relationUri),\n initialModifiedEntity: mdmModule.selectors.getInitialConnectionTempEntity(\n state,\n ownProps.config.id,\n relationUri\n ),\n modifiedEntity: isTempEntity ? mdmModule.selectors.getModifiedEntity(state, entityUri) : null,\n allModifiedEntities: isTempEntity ? mdmModule.selectors.getModifiedEntities(state) : null,\n globalSearchRequestOptions: mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly']),\n error: getRelationEditorActiveError(ownProps.connection, mdmModule.selectors.getProfileErrors(state))\n };\n};\n\nexport {RelationEditor};\n\nexport default connect(mapStateToProps)(RelationEditor);\n","import {curry, defaultTo, mergeAll, pick, pipe, prop, propEq, __} from 'ramda';\nimport {ReltioGridLayoutItem} from '@reltio/mdm-sdk';\nimport {ReactGridLayoutItem, ReltioGridLayoutOptions} from '../../types';\n\nexport const reltioLayoutItemToReactGridLayoutItem = ({\n x,\n y,\n width,\n height,\n id,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n isStatic\n}: ReltioGridLayoutItem): ReactGridLayoutItem => ({\n x,\n y,\n w: width,\n h: height,\n minW: minWidth,\n minH: minHeight,\n maxW: maxWidth,\n maxH: maxHeight,\n i: id,\n static: isStatic\n});\n\nexport const reactGridLayoutItemToReltioLayoutItem = ({\n x,\n y,\n w,\n h,\n maxW,\n minW,\n minH,\n maxH,\n i,\n ...obj\n}: ReactGridLayoutItem): ReltioGridLayoutItem => ({\n x,\n y,\n width: w,\n height: h,\n minWidth: minW,\n minHeight: minH,\n maxWidth: maxW,\n maxHeight: maxH,\n id: i,\n isStatic: obj.static\n});\n\nexport const reltioLayoutToReactGridLayout = (layout: ReltioGridLayoutItem[]): ReactGridLayoutItem[] =>\n (layout || []).map(reltioLayoutItemToReactGridLayoutItem);\n\nexport const reactGridLayoutToReltioLayout = (layout: ReactGridLayoutItem[]): ReltioGridLayoutItem[] =>\n (layout || []).map(reactGridLayoutItemToReltioLayoutItem);\n\nexport const getReltioLayoutItemById = curry((layout: ReltioGridLayoutItem[], id: string) =>\n (layout || []).find(propEq('id', id))\n);\n\nconst updateExtraPropsInLayoutItem = curry(\n (props: string[], from: Record<string, unknown>, to: Record<string, unknown>) => mergeAll([to, pick(props, from)])\n);\n\nexport const copyPropsFromPreviousLayout = curry(\n (\n props: string[],\n oldReltioLayout: ReltioGridLayoutItem[],\n reltioLayout: ReltioGridLayoutItem[]\n ): ReltioGridLayoutItem[] =>\n (reltioLayout || []).map((layoutItem) =>\n pipe(\n prop('id'),\n getReltioLayoutItemById(oldReltioLayout),\n defaultTo({}),\n updateExtraPropsInLayoutItem(props, __, layoutItem)\n )(layoutItem)\n )\n);\n\nexport const calcHeight = (height: number, options: ReltioGridLayoutOptions): number => {\n const {margin, rowHeight} = options;\n\n return Math.ceil((height + margin[1]) / (rowHeight + margin[1]));\n};\n\nexport const alignGroupedItemsHeights = curry(\n (heightsMap: {[id: string]: number}, layout: ReltioGridLayoutItem[]): ReltioGridLayoutItem[] => {\n return layout.map((layoutItem) => {\n const oneRowItemsHeights = layout\n .filter((item) => item.y === layoutItem.y)\n .map((item) => heightsMap[item.id] || (!item.autosizing && item.minHeight) || 0);\n const newHeight = Math.max(...oneRowItemsHeights);\n if (layoutItem.height !== newHeight && newHeight) {\n const minMaxHeights = layoutItem.autosizing\n ? {\n minHeight: newHeight,\n maxHeight: newHeight\n }\n : {};\n return {\n ...layoutItem,\n ...minMaxHeights,\n height: newHeight\n };\n }\n return layoutItem;\n });\n }\n);\n\nexport const calcLayoutItemsHeight = curry(\n (heightsMap: {[id: string]: number}, layout: ReltioGridLayoutItem[]): ReltioGridLayoutItem[] => {\n return layout.map((layoutItem) => {\n const height = heightsMap[layoutItem.id];\n if (height && layoutItem.autosizing) {\n return {\n ...layoutItem,\n minHeight: height,\n maxHeight: height,\n height\n };\n }\n return layoutItem;\n });\n }\n);\n","export const RESIZE_ICON = `<svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path stroke=\"#505050\" stroke-opacity=\".54\" d=\"M9.5 0v10M0 9.5h9M7.5 4v4M4 7.5h3\"/>\n</svg>`;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {svg2Url} from '@reltio/mdm-sdk';\nimport {RESIZE_ICON} from './icons/ResizeIcon.svg';\n\nexport const useStyles = makeStyles((_) => ({\n gridLayout: {\n position: 'relative',\n width: '100%',\n '& .react-grid-item': {\n '&.react-grid-placeholder': {\n background: 'rgba(0, 0, 0, 0.03)',\n border: '2px dashed rgba(0, 0, 0, 0.3)',\n borderRadius: '3px',\n transitionDuration: '100ms',\n zIndex: 7,\n userSelect: 'none',\n '& .react-resizable-handle': {\n display: 'none'\n }\n },\n '&.static .react-resizable-handle': {\n display: 'none'\n },\n '&.customView .react-resizable-handle': {\n width: '10px',\n height: '10px'\n },\n '&.cssTransforms': {\n transitionProperty: 'transform'\n },\n '&.react-draggable-dragging': {\n transition: 'none',\n zIndex: 8,\n willChange: 'transform',\n '& .react-resizable-handle': {\n backgroundImage: 'none'\n }\n },\n '& .react-resizable-handle': {\n position: 'absolute',\n width: '17px',\n height: '17px',\n bottom: 0,\n right: 0,\n zIndex: 20,\n backgroundImage: `url('${svg2Url(RESIZE_ICON)}')`,\n backgroundRepeat: 'no-repeat',\n backgroundOrigin: 'content-box',\n boxSizing: 'border-box',\n cursor: 'se-resize'\n },\n '&.fullscreen': {\n visibility: 'visible',\n position: 'unset',\n width: '100% !important',\n height: '100% !important',\n transform: 'translate(0) !important'\n }\n }\n },\n\n gridFullscreen: {\n height: '100% !important',\n overflowY: 'hidden',\n '& .react-resizable-handle, & .react-grid-item': {\n visibility: 'hidden'\n }\n },\n isResizing: {\n zIndex: 9,\n willChange: 'width, height',\n pointerEvents: 'none'\n }\n}));\n","import React, {DragEvent, useCallback, useMemo, useRef, useState, memo, ElementType} from 'react';\nimport GridLayout from 'react-grid-layout';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {pipe, ifElse, always} from 'ramda';\nimport classnames from 'classnames';\nimport {ReltioGridLayoutItem} from '@reltio/mdm-sdk';\nimport {ReactGridLayoutItem, ReltioGridLayoutOptions} from '../../types';\nimport {\n alignGroupedItemsHeights,\n calcLayoutItemsHeight,\n reltioLayoutToReactGridLayout,\n reactGridLayoutToReltioLayout,\n reactGridLayoutItemToReltioLayoutItem,\n copyPropsFromPreviousLayout,\n calcHeight,\n getReltioLayoutItemById\n} from './helpers';\nimport {noop} from '../../core';\n\nimport {useStyles} from './styles';\n\ntype Props<ViewConfig = Record<string, unknown>> = {\n layout: ReltioGridLayoutItem[];\n views?: ViewConfig[];\n layoutOptions?: ReltioGridLayoutOptions;\n onLayoutChanged?: (layout: ReltioGridLayoutItem[]) => void;\n onDrop?: (layout: ReltioGridLayoutItem[], layoutItem: ReltioGridLayoutItem, e: DragEvent<HTMLDivElement>) => void;\n onRemove?: (id: string) => void;\n LayoutItem: ElementType;\n draggableHandle?: string;\n isDroppable?: boolean;\n isStatic?: boolean;\n droppingItem?: ReactGridLayoutItem;\n classes?: {\n root?: string;\n item?: string;\n };\n};\n\nconst DEFAULT_LAYOUT_OPTIONS: ReltioGridLayoutOptions = {\n cols: 4,\n rowHeight: 30,\n margin: [15, 15]\n};\n\nconst ReltioGridLayout = ({\n views,\n layout,\n layoutOptions = DEFAULT_LAYOUT_OPTIONS,\n onLayoutChanged = noop,\n draggableHandle,\n LayoutItem,\n onRemove,\n onDrop,\n droppingItem,\n isDroppable,\n isStatic,\n classes\n}: Props) => {\n const ref = useRef();\n const heightsMap = useRef<{[id: string]: number}>({});\n const styles = useStyles();\n const [resizingItemId, setResizingItemId] = useState<string>(null);\n const [fullscreenItemId, setFullscreenItemId] = useState<string>(null);\n const [width, setWidth] = useState(0);\n const {cols, rowHeight, margin} = layoutOptions;\n const processedLayout: ReactGridLayoutItem[] = useMemo(() => reltioLayoutToReactGridLayout(layout), [layout]);\n\n const onReltioLayoutChanged = pipe(\n reactGridLayoutToReltioLayout,\n copyPropsFromPreviousLayout(['autosizing'], layout),\n ifElse(\n always(isStatic),\n alignGroupedItemsHeights(heightsMap.current),\n calcLayoutItemsHeight(heightsMap.current)\n ),\n onLayoutChanged\n );\n const handleDrop = (\n layout: ReactGridLayoutItem[],\n layoutItem: ReactGridLayoutItem,\n e: DragEvent<HTMLDivElement>\n ) => {\n if (onDrop) {\n onDrop(reactGridLayoutToReltioLayout(layout), reactGridLayoutItemToReltioLayoutItem(layoutItem), e);\n }\n };\n const onToggleFullscreen = useCallback((id: string) => setFullscreenItemId((prevId) => (prevId ? null : id)), []);\n const isFullscreenEnabled = fullscreenItemId !== null;\n\n const getAutosizeComponent = (layoutItemId: string) => (\n <ReactResizeDetector\n handleHeight\n onResize={(_, height) => {\n if (height) {\n const newHeight = calcHeight(height, layoutOptions);\n if (newHeight !== heightsMap.current[layoutItemId]) {\n heightsMap.current[layoutItemId] = newHeight;\n onReltioLayoutChanged(processedLayout);\n }\n }\n }}\n />\n );\n\n return (\n <>\n <ReactResizeDetector\n refreshMode=\"debounce\"\n refreshRate={50}\n handleWidth={true}\n onResize={(width: number) => setWidth(width)}\n />\n {!!width && (\n <GridLayout\n innerRef={ref}\n layout={processedLayout}\n cols={cols}\n draggableHandle={draggableHandle}\n autoSize={true}\n rowHeight={rowHeight}\n width={width}\n margin={margin}\n onLayoutChange={isStatic ? undefined : onReltioLayoutChanged}\n isResizable={!isStatic && !isFullscreenEnabled}\n isDraggable={!isStatic && !isFullscreenEnabled}\n className={classnames(classes?.root, styles.gridLayout, {\n [styles.gridFullscreen]: isFullscreenEnabled\n })}\n onDrop={handleDrop}\n droppingItem={droppingItem}\n isDroppable={!isStatic && isDroppable}\n onResizeStart={(_, layoutItem) => setResizingItemId(layoutItem.i)}\n onResizeStop={() => setResizingItemId(null)}\n data-reltio-id=\"reltio-grid-layout\"\n >\n {processedLayout.map((layoutItem) => {\n const isItemFullscreen = fullscreenItemId === layoutItem.i;\n const isResizing = resizingItemId === layoutItem.i;\n const isAutosize = (getReltioLayoutItemById(layout, layoutItem.i) || {}).autosizing;\n const autosizeComponent = isAutosize\n ? {AutosizeComponent: getAutosizeComponent(layoutItem.i)}\n : {};\n return (\n <LayoutItem\n key={layoutItem.i}\n layoutItemConfig={layoutItem}\n views={views}\n onToggleFullscreen={onToggleFullscreen}\n onRemove={onRemove}\n className={classnames(classes?.item, {\n static: isStatic,\n fullscreen: isItemFullscreen,\n [styles.isResizing]: isResizing\n })}\n isFullscreen={isItemFullscreen}\n {...autosizeComponent}\n />\n );\n })}\n </GridLayout>\n )}\n </>\n );\n};\n\nReltioGridLayout.displayName = 'ReltioGridLayout';\n\nexport default memo(ReltioGridLayout);\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 '@material-ui/core/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 as Button} from '@material-ui/core';\nimport {withTooltip} from '../../../../HOCs';\nimport HighlightOffIcon from '@material-ui/icons/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 '@material-ui/core/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 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 as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\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={\n <Checkbox checked={isSearchOnMapMove} onChange={onChange} color=\"primary\" className={styles.checkbox} />\n }\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 '@material-ui/core/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 '@material-ui/core/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 MarkerClustererProps\n} from '@react-google-maps/api';\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';\nimport {useStyles} from './styles';\n\nconst ON_MAP_MOVE_DEBOUNCE_INTERVAL = 1000;\n\nconst libraries = ['drawing'] as LoadScriptProps['libraries'];\n\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?: MarkerClustererProps['options'];\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,\n onOverlayUpdated,\n onMarkerClicked\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) || !onOverlayUpdated) 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?) => {\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) => {\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 {useDispatch, useSelector} from 'react-redux';\nimport {evolve, map} from 'ramda';\nimport {entity as History, HistoryDiff, wrapInArrayIfNeeded} from '@reltio/mdm-sdk';\nimport mdmModule, {HistoryMode, profile} from '@reltio/mdm-module';\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 dispatch = useDispatch();\n const historySlice = useSelector(mdmModule.selectors.getHistorySlice);\n const historyDiff = useSelector(mdmModule.selectors.getHistoryDiff);\n const historyMode = useSelector(mdmModule.selectors.getHistoryMode);\n const entity = useSelector(mdmModule.selectors.getEntity);\n\n useEffect(() => {\n if (historySlice) {\n const {aEntity, bEntity} = historySlice;\n const historyManager = History.HistoryManager.createHistoryManager(History.AttributesDiff);\n const historyDiff: HistoryDiff = historyManager.computeEntityHistoryDiff(\n prepareHistorySlice(historyMode === HistoryMode.Current ? entity : bEntity),\n prepareHistorySlice(aEntity)\n );\n dispatch(profile.history.actions.setHistoryDiff(historyDiff));\n }\n }, [historySlice, historyMode, dispatch, entity]);\n\n return historyDiff || defaultHistoryDiff;\n};\n","import {makeStyles} from '@material-ui/core/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 {makeStyles} from '@material-ui/core/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 {useState, useCallback, useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport {updateDueDateForTask, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSafePromise} from '../../../hooks';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\nimport {isOpenTask} from '../helpers';\n\nexport const useWorkflowDueDate = ({\n dueDate,\n taskId,\n isOpen\n}: Pick<WorkflowTaskData, 'dueDate' | 'taskId' | 'isOpen'>) => {\n const {updateTaskState} = useContext(WorkflowTasksContext) || {};\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\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 React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport {DateEditor} from '../../../editors';\nimport {useWorkflowDueDate} from '../../hooks/useWorkflowDueDate';\n\ntype Props = Pick<WorkflowTaskData, 'taskId' | 'dueDate'> & {\n isTaskOpen?: WorkflowTaskData['isOpen'];\n className?: string;\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 className={classnames(styles.dueDate, className)}\n disabled={updateRequestIsInProgress || readOnly}\n value={dueDate}\n label={i18n.text('Due date')}\n onChange={pipe((date) => date && date.getTime(), updateDueDate)}\n margin=\"dense\"\n InputProps={{className: styles.dueDateInput}}\n InputLabelProps={{classes: {root: styles.inputLabel}}}\n />\n );\n};\n\nexport default DueDateField;\n","import {useState, useCallback, useContext, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {updatePriorityForTask, WorkflowPriority, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSafePromise} from '../../../hooks';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\nimport {isOpenTask} from '../helpers';\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 const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\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 '@material-ui/core/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 as Divider} from '@material-ui/core';\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 React, {useState} from 'react';\nimport classnames from 'classnames';\nimport FlagIcon from '@material-ui/icons/Flag';\nimport i18n from 'ui-i18n';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {Tooltip as Tooltip} from '@material-ui/core';\n\nimport {useStyles} from './styles';\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\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 DCREntityInfo,\n generateTempUri,\n getRoleLabel,\n isEmptyValue,\n Metadata,\n Relation,\n DCRRelationInfo\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: DCRRelationInfo) => {\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: DCREntityInfo,\n relationsInfo: DCRRelationInfo[]\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 '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: 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 as Link} from '@material-ui/core';\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 '@material-ui/core/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 '@material-ui/icons/ArrowRightAlt';\nimport {Chip as Chip} from '@material-ui/core';\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 '@material-ui/core/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 {useSelector} from 'react-redux';\nimport {isNil} from 'ramda';\nimport classnames from 'classnames';\nimport {ChangeValue, DCRAttributeValue, DCRChange, getAttributeValue, getLabel, isReference} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\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';\n\nimport {useStyles} from './styles';\n\nconst DiffRenderer = ({label, level, attributeType, attributeValue, oldValue, newValue, operation}: Diff) => {\n const styles = useStyles({level});\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const objectsInfo = useContext(AttributesChangesContext);\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 '@material-ui/core/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 DCREntityInfo,\n GroupedObjectsInfo,\n isEntityUri,\n isRelationUri,\n DCRRelationInfo\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((objectsWithChanges: DCRObjectInfo, entity: DCREntityInfo) => {\n return {\n entity,\n relations: getRelations(objectsWithChanges, entity.uri)\n };\n});\n\nexport const createEntityRelationsObjectByRelation = curry((objectsInfo: DCRObjectInfo, relation: DCRRelationInfo) => {\n const entity = objectsInfo[relation.startObjectUri];\n const relations = [relation];\n\n return entity ? {entity: {...entity, uri: relation.startObjectUri}, relations} : {relations};\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 '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: 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 {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {always, any, flatten, ifElse, propOr} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n DCRChanges,\n DCRObjectsInfo,\n DCREntityInfo,\n getEntityUriForLink,\n getLabel,\n Metadata,\n DCRRelationInfo\n} 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';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n changes: DCRChanges;\n objectsInfo: DCRObjectsInfo;\n entityInfo: DCREntityInfo;\n dcrUri: string;\n relationsInfo?: DCRRelationInfo[];\n max?: number;\n};\n\nconst AttributesChanges = ({changes, dcrUri, objectsInfo, entityInfo, relationsInfo, max}: Props) => {\n const styles = useStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\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 {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n pmCard: {\n marginLeft: '-15px'\n }\n});\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 React from 'react';\nimport {useSelector} from 'react-redux';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {useStyles} from './styles';\n\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';\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 const {objectURIs} = task;\n const entity = useSelector(mdmModule.selectors.getEntity);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\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 '@material-ui/core/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 as TextField} from '@material-ui/core';\nimport {Portal as Portal} from '@material-ui/core';\nimport {Snackbar as Snackbar} from '@material-ui/core';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\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 />\n </Portal>\n </>\n );\n};\n","import {useEffect, useState} from 'react';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, processDefinitions} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport {useSafePromise} from '../../../hooks';\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\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\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 {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, startProcessInstance} from '@reltio/mdm-sdk';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\n\nexport const useWorkflowProcessInstance = () => {\n const {loadTasks} = useContext(WorkflowTasksContext);\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = entity.uri;\n const [loading, setLoading] = useState(false);\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 '@material-ui/core/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 as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/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 as Button} from '@material-ui/core';\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 {useSelector} from 'react-redux';\nimport {filter, flatten, isNil, map, mergeLeft, pipe, prop, propEq, reject, uniqBy, when} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {getEntityUriFromDCRUri, getTasksForEntity, isDCRUri, isTempUri, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks/useSafePromise';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\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 const safePromise = useSafePromise();\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const isWorkflowEnabled = useSelector(mdmModule.selectors.isWorkflowEnabled);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const isEditableMode = useSelector(mdmModule.selectors.getIsEditableMode);\n const entityLastLoadedTime = useSelector(mdmModule.selectors.getProfileLastLoadedTime);\n const checkWorkflowPermission = useWorkflowCheckPermission();\n const canViewTasks = checkWorkflowPermission('VIEW_TASKS');\n const enabled = !!(workflowPath && environment) && isWorkflowEnabled && canViewTasks;\n const [tasks, setTasks] = useState<WorkflowTaskData[]>(null);\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\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 AccessToken,\n CustomActionTaskParams,\n CustomActionExtension,\n CustomActionViewConfig,\n CustomScriptExtension,\n getAccessToken,\n RequestAction,\n sendRequestFromCustomSandbox,\n sendWorkflowRequest,\n startProcessFromQuery,\n Entity\n} from '@reltio/mdm-sdk';\nimport {isNewUI} from './helpers';\nimport {ProcessRequestParams} from './types';\n\ntype Config = CustomActionExtension | CustomActionViewConfig | CustomScriptExtension;\n\nconst processFromQuery = (\n params: CustomActionTaskParams,\n permissions?: string[] | undefined,\n workflowPath?: string,\n tenant?: string,\n environment?: string\n) => {\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({validationUrl: '/processInstances/_generateFromQuery', ...params}, 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\nconst getHeaders = async (params: CustomActionTaskParams, signHandler?: () => Promise<AccessToken>) => {\n const {accessToken} = await signHandler?.();\n return accessToken\n ? {\n ...params.headers,\n Authorization: `Bearer ${accessToken}`\n }\n : params.headers;\n};\n\nconst workflowRequest = async (\n params: CustomActionTaskParams,\n permissions?: string[],\n workflowPath?: string,\n tenant?: string,\n signHandler?: () => Promise<AccessToken>\n) => {\n const {url} = params;\n const errors = validateParams(params, 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 getHeaders(params, signHandler);\n return await sendWorkflowRequest({\n url,\n method: params.method || 'GET',\n data: params.data,\n tenant,\n headers,\n workflowPath\n });\n};\n\nconst sendApiRequest = async (\n params: CustomActionTaskParams,\n permissions?: string[],\n signHandler?: () => Promise<AccessToken>\n) => {\n const errors = validateParams(params, permissions);\n if (errors) {\n return Promise.reject(errors);\n }\n const headers = await getHeaders(params, signHandler);\n return await sendRequestFromCustomSandbox({\n url: params.url,\n method: params.method,\n data: params.data,\n headers,\n noRequestProcessor: true\n });\n};\n\nconst validateParams = (params: CustomActionTaskParams, permissions?: string[]) => {\n const {validationUrl} = params;\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\nexport const processRequest = ({\n name,\n paramObject,\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 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: paramObject.params.headers,\n status: 200\n },\n ...paramObject.params\n });\n })\n .catch((error) => {\n worker.postMessage({\n action: 'response',\n result: {\n data: JSON.parse(JSON.stringify(error)),\n headers: paramObject.params.headers,\n status: 0\n },\n ...paramObject.params\n });\n });\n };\n const shouldSignRequest = isNewUI(servicesPath);\n const signHandler = shouldSignRequest\n ? () => getAccessToken({servicesPath})\n : () => Promise.resolve({accessToken: ''});\n\n switch (name) {\n case RequestAction.API: {\n const request = sendApiRequest(paramObject.params, permissions, signHandler);\n handleRequest(request);\n break;\n }\n case RequestAction.WORKFLOW: {\n const request = workflowRequest(paramObject.params, permissions, workflowPath, tenant, signHandler);\n handleRequest(request);\n break;\n }\n case RequestAction.WORKFLOW_START_PROCESS_FROM_QUERY: {\n const request = processFromQuery(paramObject.params, permissions, workflowPath, tenant, environment);\n handleRequest(request);\n break;\n }\n case RequestAction.GET_CONFIGURATION: {\n worker.postMessage({action: 'response', result: metadata, ...paramObject.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, ...paramObject.params});\n break;\n }\n case RequestAction.SET_ENTITY_URI: {\n const listener = (newEntity: Entity) =>\n worker.postMessage({action: 'response', result: newEntity, ...paramObject.params});\n setEntityUri(paramObject.params.entityUri, listener);\n break;\n }\n case RequestAction.SET_PERSPECTIVE: {\n showPerspective(paramObject.params.perspective);\n worker.postMessage({\n action: 'response',\n result: getCurrentPerspectiveId(),\n ...paramObject.params\n });\n break;\n }\n case RequestAction.GET_PERSPECTIVE: {\n if (getCurrentPerspectiveId) {\n worker.postMessage({\n action: 'response',\n result: getCurrentPerspectiveId(),\n ...paramObject.params\n });\n }\n break;\n }\n case RequestAction.WORKFLOW_CHECK_PERMISSION: {\n worker.postMessage({\n action: 'response',\n result: workflowCheckPermission(paramObject.params.permission),\n ...paramObject.params\n });\n break;\n }\n case RequestAction.GET_SEARCH_QUERY: {\n worker.postMessage({action: 'response', result: query, ...paramObject.params});\n break;\n }\n case RequestAction.OPEN_SEARCH: {\n openSearch({viewId: (config as Config).id, searchState: paramObject.params.searchState || {}});\n break;\n }\n case RequestAction.GET_ENTITY_URI: {\n worker.postMessage({action: 'response', result: entityUri, ...paramObject.params});\n break;\n }\n case RequestAction.GET_ENTITY: {\n worker.postMessage({action: 'response', result: entity, ...paramObject.params});\n break;\n }\n case RequestAction.GET_API_PATH: {\n worker.postMessage({action: 'response', result: apiPath, ...paramObject.params});\n break;\n }\n case RequestAction.WORKFLOW_GET_WORKFLOW_PATH: {\n worker.postMessage({action: 'response', result: workflowPath, ...paramObject.params});\n break;\n }\n case RequestAction.GET_TENANT: {\n worker.postMessage({action: 'response', result: tenant, ...paramObject.params});\n break;\n }\n case RequestAction.GET_USER: {\n worker.postMessage({action: 'response', result: user, ...paramObject.params});\n break;\n }\n case RequestAction.ALERT: {\n worker.postMessage({\n action: 'response',\n result: window.alert(paramObject.params.text),\n ...paramObject.params\n });\n break;\n }\n case RequestAction.CONFIRM: {\n worker.postMessage({\n action: 'response',\n result: window.confirm(paramObject.params.text),\n ...paramObject.params\n });\n break;\n }\n case RequestAction.PROMPT: {\n worker.postMessage({\n action: 'response',\n result: window.prompt(paramObject.params.text, paramObject.params.defaultText || ''),\n ...paramObject.params\n });\n break;\n }\n case RequestAction.OPEN_WINDOW: {\n window.open(paramObject.params.url, '_blank');\n break;\n }\n case RequestAction.RELOAD_PAGE: {\n location.reload();\n break;\n }\n }\n};\n","import {nanoid} from 'nanoid';\n\nexport const isNewUI = (path?: string): boolean => {\n return path?.includes('/nui');\n};\n\nexport const getWorkerURL = (uiPath: string, tenant: string) => {\n if (isNewUI(uiPath)) {\n return `${uiPath.replace(`${tenant}/`, '')}worker_api.js`;\n } else {\n return `${uiPath}worker_api.js`;\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\nconst isURLtoProcess = (processApi: string[], url: string) =>\n (processApi || []).some((request) => {\n const regExp = new RegExp(`^${request}$`);\n return request.replace(/\\/*$/, '') === url || (request && regExp.test(url));\n });\n\nexport const setUpQooxdooRequestInterceptor = ({workerRef, setRequestListeners}) => ({\n processApiRequest: (url, method, headers, data, next) => {\n const requestId = nanoid();\n const options = {url, method, headers, noRequestProcessor: true};\n setRequestListeners(options, next, requestId);\n workerRef.current.postMessage({\n action: 'apiRequest',\n id: requestId,\n url,\n method,\n headers,\n data\n });\n }\n});\n\nexport const setUpQooxdooResponseInterceptor = ({workerRef, setResponseListeners}) => ({\n processApiResponse: (url, method, data, next) => {\n const responseId = nanoid();\n setResponseListeners(next, responseId);\n workerRef.current.postMessage({\n action: 'apiResponse',\n id: responseId,\n url,\n method,\n data\n });\n }\n});\n\nexport const setUpRequestInterceptor =\n ({apiPath, reltioPath, tenant, processApiRequest, workerRef, setRequestListeners}) =>\n ({\n options = {},\n url,\n next,\n resolve\n }: {\n next: (url: string, options: RequestInit) => void;\n abort?: (error: Error) => void;\n resolve: (data: unknown) => void;\n url: string;\n options: RequestInit;\n }) => {\n const fakeURL =\n url.startsWith('/') && !url.startsWith(apiPath)\n ? `${reltioPath}/api/${tenant}${url}`\n : `${reltioPath}${url.replace(apiPath, '')}`;\n const isProcessableUrl = isURLtoProcess(processApiRequest, fakeURL);\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, origin: 'ui', requestId},\n data: options.body\n });\n } else {\n next(url, options);\n }\n };\n\nexport const setUpResponseInterceptor =\n ({reltioPath, apiPath, processApiResponse, workerRef, setResponseListeners}) =>\n ({url, response, next, options, abort}) => {\n if (options?.headers?.origin === 'ui') {\n response\n .json()\n .then((data) => {\n setResponseListeners(next, options.headers.requestId);\n workerRef.current.postMessage({\n action: 'response',\n result: {data, status: response.status},\n id: options?.id,\n name: options?.task?.params?.name\n });\n })\n .catch((error) => {\n abort(error);\n });\n } else {\n const fakeURL = `${reltioPath}${url.replace(apiPath, '')}`;\n const isProcessableUrl = isURLtoProcess(processApiResponse, fakeURL);\n\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 '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 '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 {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {\n CustomAction,\n CustomActionExtension,\n CustomActionTaskParams,\n CustomActionViewConfig,\n CustomScriptPlatform,\n Entity,\n initializeWebWorker,\n isEmptyValue,\n ProcessParams,\n RequestAction\n} from '@reltio/mdm-sdk';\nimport {\n always,\n assocPath,\n both,\n concat,\n evolve,\n has,\n ifElse,\n omit,\n pathEq,\n pathOr,\n pipe,\n replace,\n startsWith,\n when\n} from 'ramda';\nimport {useWorkflowCheckPermission} from '../../components/workflow';\nimport {useHtmlSanitizer} from '../useHtmlSanitizer';\nimport {InterceptHandlersContext, SandboxAPIContext, SnackbarContext} from '../../contexts';\nimport {processRequest} from './API';\nimport {\n getWorkerURL,\n isNewUI,\n resetHtml,\n setUpQooxdooRequestInterceptor,\n setUpQooxdooResponseInterceptor,\n setUpRequestInterceptor,\n setUpResponseInterceptor\n} from './helpers';\nimport {Request} from './types';\n\ntype Config = CustomActionViewConfig | CustomActionExtension;\n\nexport const useAPI = (config: Config = {} as Config) => {\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\n const dispatch = useDispatch();\n const sanitizeHtml = useHtmlSanitizer();\n\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\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 = useSelector(mdmModule.selectors.getMetadata) || {};\n const entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const apiPath: string = useSelector(mdmModule.selectors.getApiPath);\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n const reltioPath = useSelector(mdmModule.selectors.getReltioPath);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const user = useSelector(mdmModule.selectors.getUser);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const isEditableMode = useSelector(mdmModule.selectors.getIsEditableMode);\n const environment = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const {type: typeSearch, data: search} = useSelector(mdmModule.selectors.getSearchProviderData) || {};\n const searchQuery = typeSearch === 'search' ? search?.query : null;\n const isOldUI = !isNewUI(servicesPath);\n const supportedInterceptHandlers = isOldUI ? qxApi.interceptors : interceptHandlers;\n\n const openSearch = (search) => dispatch(ui.actions.openSearch(search));\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 processedApiPath = isOldUI ? reltioPath : apiPath;\n const isGlobalUrl =\n startsWith('/', pathOr('', ['params', 'url'], task)) &&\n !startsWith(apiPath, pathOr('', ['params', 'url'], task));\n const isApiAction = pathEq(['params', 'name'], RequestAction.API, task);\n const processedParams = pipe(\n evolve({\n url: ifElse(\n both(always(isGlobalUrl), always(isApiAction)),\n concat(`${processedApiPath}/api/${tenant}`),\n replace(reltioPath, apiPath)\n )\n }),\n when(has('url'), assocPath(['validationUrl'], (task.params as CustomActionTaskParams).url))\n )(task.params);\n\n const processedTask = {\n ...task,\n params: processedParams\n };\n\n processRequest({\n name: (processedTask.params as CustomActionTaskParams).name,\n paramObject: processedTask as Request,\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 qooxdooRequestInterceptor = setUpQooxdooRequestInterceptor({workerRef, setRequestListeners});\n const qooxdooResponseInterceptor = setUpQooxdooResponseInterceptor({workerRef, setResponseListeners});\n const requestInterceptor = setUpRequestInterceptor({\n apiPath,\n reltioPath,\n tenant,\n processApiRequest: config?.action?.processApiRequest,\n workerRef,\n setRequestListeners\n });\n const responseInterceptor = setUpResponseInterceptor({\n reltioPath,\n apiPath,\n processApiResponse: config?.action?.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 !isOldUI &&\n interceptHandlers &&\n !isEmptyValue(config.action) &&\n config.action.platform !== CustomScriptPlatform.CLASSIC &&\n (config?.action?.processApiRequest || config?.action?.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 (!isEmptyValue(config.action) && config.action.platform !== CustomScriptPlatform.CLASSIC) {\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 (\n !isEmptyValue(supportedInterceptHandlers) &&\n (config?.action?.processApiRequest || config?.action?.processApiResponse)\n ) {\n const {\n addInternalRequestInterceptor,\n addInternalResponseInterceptor,\n removeInternalRequestInterceptor,\n removeInternalResponseInterceptor\n } = supportedInterceptHandlers;\n\n if (isOldUI) {\n addInternalRequestInterceptor(config?.action?.processApiRequest, qooxdooRequestInterceptor);\n addInternalResponseInterceptor(config?.action?.processApiResponse, qooxdooResponseInterceptor);\n return () => {\n removeInternalRequestInterceptor(qooxdooRequestInterceptor);\n removeInternalResponseInterceptor(qooxdooResponseInterceptor);\n };\n } else {\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 }\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 {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {\n ActivityFilters,\n Comment,\n Entity,\n FilterOptions,\n getFilteredEntities,\n isEntityUri,\n getEntity,\n EntitiesMap\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\n\nconst SELECT_OPTION = 'uri,label,type';\n\nexport const useCommentsEntitiesMap = (comments: Comment[]) => {\n const safePromise = useSafePromise();\n const currentEntityUri = useSelector(mdm.selectors.getEntityUriWithDataTenant);\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: ActivityFilters.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(\n Promise.all((entitiesUris || []).map(getNotFoundEntity))\n ).then((notFoundEntities: Entity[]) => pipe(reject(isEmpty), concat(entities))(notFoundEntities));\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 {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {checkConfigPermission, ConfigPermissions} from '@reltio/mdm-sdk';\nimport {useCallback} from 'react';\n\nconst emptyArray = [];\n\nexport const useConfigPermissions = () => {\n const userRoles = useSelector(mdmModule.selectors.getUserRoles) || 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 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 {useDispatch, useSelector} from 'react-redux';\nimport {cond, pipe, prop, T, evolve, filter as filterFn, when, identity, times, length, ifElse, always} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n ActivityFilter,\n addGlobalFilterToQuery,\n Connection,\n Entity,\n getRelationsForDataTenantEntity,\n getRelationsForEntity,\n GlobalSearchRequestOptions,\n isAvailableEntityTypeUri,\n isAvailableRelationTypeUri,\n isDataTenantEntity,\n isObject,\n isTempUri,\n Metadata,\n Mode,\n RelationsContent,\n RelationsViewConfig,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\nimport {usePrevious} from './usePrevious';\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);\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 const dispatch = useDispatch();\n const tenant = useSelector(mdm.selectors.getTenant) as string;\n const metadata = useSelector(mdm.selectors.getMetadata) as Metadata;\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {};\n const lastLoadedTime = useSelector(mdm.selectors.getProfileLastLoadedTime);\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 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 request: (entity: Entity) => Promise<ConnectionResponse> = cond([\n [pipe(prop('uri'), isTempUri), () => Promise.resolve([{total: 0}])],\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(([{connections, total}]) => {\n dispatch(profile.relations.actions.relationsLoaded({id: config.id, connections, total}));\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 dispatch,\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":["props","width","height","viewBox","xmlns","d","fill","fillRule","stroke","strokeWidth","useStyles","makeStyles","theme","color","palette","primary","main","closeIcon","position","right","bottom","transform","button","padding","FilterButton","enabled","onClick","styles","Tooltip","title","i18n","IconButton","classes","root","Filter","className","Close","propTypes","PropTypes","ErrorBoundary","React","constructor","super","this","state","error","componentDidCatch","setState","console","render","children","searchButton","marginLeft","marginRight","input","flex","fontSize","background","startAdornment","paddingLeft","ExpandableSearchInput","query","onChange","value","setValue","useState","isOpen","setIsOpen","useEffect","hasValue","length","Input","autoFocus","placeholder","disableUnderline","pipe","getValue","InputAdornment","Search","endAdornment","SmallIconButton","size","icon","CloseIcon","F","always","tap","onKeyPress","when","propEq","trim","T","EmptyStub","style","display","HideOnShrink","widthToHide","handleWidth","menuItem","whiteSpace","itemText","margin","textPrimary","lineHeight","fontWeight","textSecondary","MultilineMenuItem","forwardRef","ref","item","onMenuClose","noop","secondary","MenuItem","ListItemText","displayName","flexDirection","paddingRight","paddingTop","paddingBottom","borderTop","profileCardWrapper","alignItems","gap","profileCardContainer","flexGrow","rulesContainer","marginBottom","dividerWrapper","alignSelf","divider","relevanceBadge","ProfileMatchCard","entitiesMap","entity","match","metadata","showRelevanceBadge","matchRuleSummaries","some","checkMatchRuleSummaryRelevance","classnames","ProfileCard","object","container","matchRules","MatchRulesBlock","Divider","orientation","RelevanceScoreBadge","editor","overflowX","letterSpacing","dense","actionButtons","justifyContent","backgroundColor","RelationEditor","connection","modifiedEntity","initialConnection","initialModifiedEntity","allModifiedEntities","dispatch","config","mode","globalSearchRequestOptions","highlightedError","relationUri","relationType","direction","relation","isNew","errorClassName","useScrollToAttributeError","isSimple","inRelations","inRelationTypes","outRelations","outRelationTypes","useMemo","getInOutRelations","content","parentEntityUri","contentSecondLevel","firstLevelRelationAttrTypes","getRelationAttributesList","attributeListEntity","attributes","profile","getActivenessAttributes","relatedTempEntities","findRelatedTemporaryEntities","relatedTempEntitiesUrisHistory","useRef","setInitialInfo","useCallback","id","current","concat","map","prop","uniq","initialRelatedTempEntities","defaultRelationType","getDefaultRelationTypeObject","initialConnectionChangeablePart","pick","connectionChangeablePart","hasChanges","isEmptyValue","path","equals","initial","actual","_","i","applyAction","onRelationTypeChange","handleClose","updateModifiedEntityLabel","entityType","getEntityType","type","updateConnectionEntityLabel","setModifiedEntity","deleteModifiedEntity","entityUri","onChangeEntity","uri","getErrorId","validate","errors","validateConnection","resetErrors","onApply","omitMarks","omit","differenceWith","forEach","onCancel","initialTempEntities","onAddAttributes","params","param","viewId","onChangeAttribute","onDeleteAttribute","onCreateEntity","entityTypeUri","initValue","newEntityAttrTypes","relationEditorAttributeTypesSelectionStrategy","getCreatableAttributeTypes","newEntity","createTemporaryEntity","attributeTypes","errorMessage","getErrorMessage","getEntityTypesUris","entityTypes","Typography","ConnectionRelationTypeSelector","Boolean","ErrorWrapper","EntitySelector","isTempUri","entityTypesUris","max","onCreate","isSuggestMode","undefined","attributeTypesSelectionStrategy","AttributesList","attrTypes","showEmptyEditors","crosswalks","parentUri","Button","disabled","ConnectionType","EntityType","RelationsConfigType","MetadataType","AttributeErrorType","withContext","ScrollToElementContext","contextValue","element","isHighlightedErrorType","isAttributeTypeError","connect","ownProps","getConnectionRelationUri","isTempEntity","mdmModule","getRelationEditorActiveError","reltioLayoutItemToReactGridLayoutItem","x","y","minWidth","minHeight","maxWidth","maxHeight","isStatic","w","h","minW","minH","maxW","maxH","static","reactGridLayoutItemToReltioLayoutItem","reactGridLayoutToReltioLayout","layout","getReltioLayoutItemById","curry","find","updateExtraPropsInLayoutItem","from","to","mergeAll","copyPropsFromPreviousLayout","oldReltioLayout","reltioLayout","layoutItem","defaultTo","__","alignGroupedItemsHeights","heightsMap","oneRowItemsHeights","filter","autosizing","newHeight","Math","minMaxHeights","calcLayoutItemsHeight","gridLayout","border","borderRadius","transitionDuration","zIndex","userSelect","transitionProperty","transition","willChange","backgroundImage","svg2Url","backgroundRepeat","backgroundOrigin","boxSizing","cursor","visibility","gridFullscreen","overflowY","isResizing","pointerEvents","DEFAULT_LAYOUT_OPTIONS","cols","rowHeight","ReltioGridLayout","views","layoutOptions","onLayoutChanged","draggableHandle","LayoutItem","onRemove","onDrop","droppingItem","isDroppable","resizingItemId","setResizingItemId","fullscreenItemId","setFullscreenItemId","setWidth","processedLayout","reltioLayoutToReactGridLayout","onReltioLayoutChanged","ifElse","onToggleFullscreen","prevId","isFullscreenEnabled","refreshMode","refreshRate","onResize","innerRef","autoSize","onLayoutChange","isResizable","isDraggable","e","onResizeStart","onResizeStop","isItemFullscreen","autosizeComponent","AutosizeComponent","layoutItemId","handleHeight","options","ceil","calcHeight","key","layoutItemConfig","fullscreen","isFullscreen","memo","MapControlContainer","controlElement","setControlElement","controlDiv","document","createElement","divIndex","controls","push","removeAt","classList","add","createPortal","opacity","xmlnsXlink","xlinkHref","mask","fillOpacity","ButtonWithTooltip","withTooltip","TopRightMapControls","drawingMode","drawingModes","hasActiveOverlay","onDrawingModeChanged","onClearOverlay","changeDrawingModeTo","tooltipTitle","HighlightOff","Icon","MAP_DRAWING_MODES","RadiusIcon","DrawIcon","getIcon","label","checkbox","TopCenterMapControls","isSearchOnMapMove","onChangeIsSearchOnMapMove","FormControlLabel","control","Checkbox","checked","event","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","boxShadow","hoveredMarkerIcon","markerIcon","marker","otherProps","popperAnchor","hovered","setHovered","activeEntityUri","useContext","EntityMarkerContext","isActive","pathEq","point","setHoveredDebounced","debounce","onMouseOver","onMouseOut","handleClick","Popper","anchorEl","open","modal","placement","url","scaledSize","Size","visible","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","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","useDispatch","useSelector","historyDiff","historyMode","aEntity","bEntity","History","computeEntityHistoryDiff","HistoryMode","card","borderBottom","withBackground","lineWrapper","top","left","line","info","text","wordWrap","commentsInfo","marginTop","commentsIcon","infoValue","infoBlock","header","caption","flag","date","mainInfo","controlsBox","controlsInRow","priority","comments","dueDate","dueDateInput","inputLabel","taskId","isTaskOpen","updateDueDate","updateRequestIsInProgress","readOnly","updateTaskState","WorkflowTasksContext","workflowPath","environment","tenant","safePromise","useSafePromise","setUpdateRequestIsInProgress","canUpdateTask","useWorkflowCheckPermission","checkWorkflowPermission","isOpenTask","newValue","updateDueDateForTask","then","catch","showWorkflowError","finally","useWorkflowDueDate","DateEditor","getTime","InputProps","InputLabelProps","priorities","updatePriority","newPriority","updatePriorityForTask","WorkflowPriority","useWorkflowPriority","DropDownSelector","isDisabled","hideSelectedOptions","TextFieldProps","decorator","lineBlock","withLinePadding","noLine","plain","last","rowDivider","first","transparent","light","variant","taskToColor","COLORS","colorIndex","task","actions","assignee","createdBy","createTime","step","processDefinitionDisplayName","objectURIs","processInstanceComments","possibleActions","preferredAction","dcrId","getDCRId","hash","useWorkflowColor","isExpanded","setExpanded","canViewComments","workflowActions","actionRequestIsInProgress","useWorkflowActions","Flag","CollapseButton","CollaborationIcon","TaskActions","isInProgress","AssigneeSelector","WorkflowComments","cx","cy","r","getOperationType","oldValue","DCRTypes","DCROperationTypes","pin","ignored","getOperationLabel","operation","getDataTypeDefinition","attributeType","attributeValue","allPass","DataTypes","isUrl","getAttrDataTypeDefinition","getValues","attrType","newAttrValues","pathOr","name","oldAttrValues","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","identity","diffNewValue","difference","diffOldValue","items","join","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","overflow","wordBreak","fieldName","arrow","chip","textTransform","borderColor","ArrowRightAlt","Chip","AttributesChangesContext","linkContainer","textDecoration","disabledLink","objectsInfo","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","onToggle","itemsToShow","collapsedSuggestionsCount","limit","setIsExpanded","collapsedItems","slice","visibleSuggestionsCount","useCollapsibleList","any","getEntityUriForChangeRequest","getEntityUriForLink","screen","Provider","getDCRUri","groupedObjects","setGroupedObjects","setDcr","requestEntities","entityUris","Promise","resolve","getEntitiesByUris","searchOptions","defaultMaxValues","getDataChangeRequest","keys","extractObjectsFromChangeRequest","entityObjectsWithRelations","relationsObjects","relationsObjectsWithEntity","relationsObjectsWithoutEntity","partition","entities","relationsObjectsWithRequestedEntities","relationsObject","showApiError","useChangeRequest","DcrTaskIcon","pmCard","defaultOptions","showTransitiveMatches","showInactiveEntities","matches","useMatchesLoader","rowsPerPage","Number","MAX_SAFE_INTEGER","page","includes","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","loadTasks","setLoading","startProcessInstance","useWorkflowProcessInstance","Popover","anchorOrigin","vertical","horizontal","transformOrigin","paper","SimpleDropDownSelector","definition","TextField","hiddenLabel","multiline","Portal","body","Snackbar","autoHideDuration","message","buttonLabel","AddWorkflowButton","setAnchorEl","canStartProcess","canViewProcessDefinitions","currentTarget","Add","TaskActionButtons","preferredActions","otherActions","action","useWorkflowTasks","processTypes","showClosedTasks","isWorkflowEnabled","isEditableMode","entityLastLoadedTime","canViewTasks","tasks","setTasks","total","setTotal","parsedProcessTypes","Array","isArray","requests","getTasksForEntity","isDCRUri","getEntityUriFromDCRUri","includeClosed","all","responses","reject","uniqBy","isRequestedTask","warn","payload","mergeLeft","fillColor","strokeWeight","strokeColor","clickable","mapTypeControl","streetViewControl","fullscreenControl","InterceptHandlersContext","SandboxAPIContext","getCurrentPerspectiveId","setEntityUri","showPerspective","getHeaders","async","signHandler","accessToken","headers","Authorization","validateParams","permissions","validationUrl","permission","urlOrigin","permRegex","RegExp","decodedPerm","replace","startsWith","test","processRequest","paramObject","worker","apiPath","servicesPath","user","openSearch","workflowCheckPermission","handleRequest","request","response","json","postMessage","JSON","parse","stringify","status","isNewUI","getAccessToken","RequestAction","sendRequestFromCustomSandbox","method","noRequestProcessor","sendApiRequest","isExternalUrl","sendWorkflowRequest","workflowRequest","processDefinitionId","searchString","startProcessFromQuery","processFromQuery","listener","perspective","searchState","alert","confirm","prompt","defaultText","location","reload","getWorkerURL","uiPath","processInnerHtml","parent","setTooltip","handlersToReset","uiActions","getAttribute","uiTooltip","uiAction","handler","postEventMessage","files","readFilePromises","file","reader","FileReader","onload","lastModified","onerror","readAsArrayBuffer","getFilesWithArrayBuffer","addEventListener","removeEventListener","removeAttribute","childNodes","child","nodeType","resetHtml","innerText","html","setListenersToReset","setHtml","docBlock","innerHTML","isURLtoProcess","processApi","regExp","setUpQooxdooRequestInterceptor","workerRef","setRequestListeners","processApiRequest","next","requestId","nanoid","setUpQooxdooResponseInterceptor","setResponseListeners","processApiResponse","responseId","setUpRequestInterceptor","reltioPath","fakeURL","origin","setUpResponseInterceptor","abort","img","link","iframe","a","useHtmlSanitizer","allowedAttributes","allowedTags","sanitizeHtml","sanitizeOptions","allowVulnerableTags","useAPI","listenersToReset","popupListenersToReset","setPopupListenersToReset","setVisible","popup","setPopup","tooltip","customStyles","setCustomStyles","requestListeners","responseListeners","workerUrl","showSnackbarMessage","SnackbarContext","qxApi","interceptHandlers","typeSearch","search","searchQuery","isOldUI","supportedInterceptHandlers","interceptors","ui","popupText","process","CustomAction","sanitizedHtml","elem","getElementById","sanitizedPopup","prev","log","processedApiPath","isGlobalUrl","isApiAction","processedParams","both","assocPath","processedTask","qooxdooRequestInterceptor","qooxdooResponseInterceptor","requestInterceptor","responseInterceptor","pendingInterceptors","needDelayedRequestForInterceptors","platform","CustomScriptPlatform","startInterceptorInit","initializeWebWorker","finishInterceptorInit","addInternalRequestInterceptor","addInternalResponseInterceptor","removeInternalRequestInterceptor","removeInternalResponseInterceptor","useCommentsEntitiesMap","mdm","setEntitiesMap","getEntities","entitiesUris","requestFilters","FilterOptions","requestOptions","activeness","ActivityFilters","getFilteredEntities","getNotFoundEntity","getEntity","addNotFoundEntities","notFoundEntities","uniqEntitiesUris","objectType","relatedObjectUris","results","getNotFoundUris","prevEntitiesMap","emptyArray","useConfigPermissions","userRoles","canCreate","checkConfigPermission","ConfigPermissions","canRead","canUpdate","canDelete","useLayoutResetter","onLayoutReset","onResetUndo","SnackbarRenderer","useSnackbar","onDismissClick","showDismiss","dismissTitle","resetLayout","buildSuggestedIds","n","useRelationsLoader","sorting","relationActivityFilter","searchByOv","isLoading","setIsLoading","dtssPath","activityFilter","globalFilter","lastLoadedTime","processContent","getUri","isObject","filterRelation","isAvailableRelationTypeUri","filterFn","isAvailableEntityTypeUri","nextEntry","suggested","loadRelations","requestConfig","sortBy","order","returnDates","returnObjects","ActivityFilter","offset","addGlobalFilterToQuery","configs","cond","isDataTenantEntity","getRelationsForDataTenantEntity","customerTenant","dataTenant","getRelationsForEntity","connections","isRequestSentRef","prevMode","Mode"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"7762.js","mappings":"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F,OAAQzqB,EAAQyqB,OAChBtf,KAAAA,OAGPmG,OAAOvnB,IACJkmC,EAAMlmC,WAGd2lC,EAAK9E,M,uIC5LjB,MAqUA,GACI93B,WAAY,CACR,IAAK,CAtUT,gBACA,aACA,WACA,qBACA,eACA,aACA,YACA,cACA,SACA,gBACA,gBACA,cACA,UACA,gBACA,iBACA,cACA,OACA,QACA,OACA,KACA,WACA,aACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,oBACA,mBACA,SACA,KACA,KACA,IACA,aACA,UACA,kBACA,YACA,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,cAC1Cq9B,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,WACvCC,KAAM,CAAC,OAAQ,OACfC,OAAQ,CAAC,OACTC,EAAG,CAAC,SAERjjB,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,wcC1U9D,MAAMkjB,EAAmB,KAC5B,MAAM,kBAACC,EAAD,YAAoBC,GAAeC,IAAAA,UACnC,WAAC59B,EAAD,KAAaua,GAAQsjB,EACrB3wB,EAAoB,CACtBywB,YAAaA,EAAYh9B,OAAO4Z,GAChCmjB,kBAAmB,EAAF,GAAMA,EAAsB19B,GAC7C89B,qBAAqB,GAEzB,OAAQ3B,GAAiByB,GAAAA,CAAazB,EAAMjvB,I,mgBCmBzC,MAAM6wB,EAAS,WAAmC,IAAlCv/B,EAAkC,uDAAjB,GACpC,MAAM,kBAACi+B,EAAD,mBAAoBQ,EAApB,SAAwCtD,GAAYn7B,EAAOm1B,QAAU,IACpEwI,EAAME,IAAWhkC,EAAAA,EAAAA,aACjB2lC,EAAkB5B,IAAuB/jC,EAAAA,EAAAA,UAA4B,KACrE4lC,EAAuBC,IAA4B7lC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","sources":["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/ErrorBoundary/ErrorBoundary.tsx","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.js","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/RelationEditor/index.js","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/helpers.ts","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/icons/ResizeIcon.svg.ts","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/ReltioGridLayout.tsx","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/cards/GenericWorkflowTaskCard/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/DueDateField/styles.ts","webpack://@reltio/remotes/../components/src/components/workflow/hooks/useWorkflowDueDate.ts","webpack://@reltio/remotes/../components/src/components/workflow/components/DueDateField/DueDateField.tsx","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/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/components/workflow/cards/PotentialMatchTaskCard/styles.ts","webpack://@reltio/remotes/../components/src/icons/PmTaskIcon.tsx","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/useLayoutResetter.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationsLoader.ts"],"sourcesContent":["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 '@material-ui/core/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 as IconButton} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {Tooltip as Tooltip} from '@material-ui/core';\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}}>\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 React from 'react';\n\ntype State = {\n error: Error | null;\n};\n\ntype Props = {\n error: React.ReactNode;\n};\n\nexport default class ErrorBoundary extends React.Component<Props, State> {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n\n componentDidCatch(error) {\n this.setState({\n error: error\n });\n console.error(error);\n }\n\n render() {\n const {children, error} = this.props;\n if (this.state.error) {\n return error;\n }\n return children;\n }\n}\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n searchButton: {\n marginLeft: 'auto !important',\n marginRight: '-4px',\n padding: '8px'\n },\n input: {\n flex: '1 0 200px',\n marginLeft: '70px',\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 '@material-ui/icons/Close';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport {Input as Input} from '@material-ui/core';\nimport {InputAdornment as InputAdornment} from '@material-ui/core';\nimport SearchIcon from '@material-ui/icons/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 const hasValue = value && value.length;\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 {hasValue && (\n <SmallIconButton\n size=\"S\"\n icon={CloseIcon}\n onClick={pipe(F, setIsOpen, always(''), tap(onChange), setValue)}\n />\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)}>\n <SearchIcon />\n </IconButton>\n );\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\n\nconst EmptyStub = () => <div style={{display: 'none'}} />;\n\nconst HideOnShrink = ({widthToHide, children}) => (\n <ReactResizeDetector\n handleWidth={true}\n render={({width}) => (width > widthToHide ? <>{children}</> : <EmptyStub />)}\n />\n);\n\nHideOnShrink.propTypes = {\n children: PropTypes.node,\n widthToHide: PropTypes.number.isRequired\n};\n\nexport default HideOnShrink;\n","import {makeStyles} from '@material-ui/core/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 as MenuItem} from '@material-ui/core';\nimport {ListItemText as ListItemText} from '@material-ui/core';\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 '@material-ui/core/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 background: '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 as Divider} from '@material-ui/core';\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 '@material-ui/core/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} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n AttributeErrorType,\n ConnectionType,\n createTemporaryEntity,\n EntityType,\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} from '@reltio/mdm-sdk';\nimport {profile} from '@reltio/mdm-module';\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 {isHighlightedErrorType, ScrollToElementContext} 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 = ({\n connection,\n modifiedEntity,\n initialConnection,\n initialModifiedEntity,\n allModifiedEntities,\n dispatch,\n config,\n mode,\n metadata,\n globalSearchRequestOptions,\n error,\n highlightedError\n}) => {//NOSONAR\n const {relationUri, relationType, direction} = connection.relation;\n const isNew = connection.isNew;\n const styles = useStyles();\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 ...profile.relations.selectors.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 dispatch(profile.relations.actions.setInitialInfo(config.id, relationUri, entity, connection));\n },\n [dispatch]\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 = isNew ? profile.relations.actions.addRelation : profile.relations.actions.editRelation;\n\n const onRelationTypeChange = useCallback(\n pipe(profile.relations.actions.setRelationType(config.id, relationUri), dispatch),\n [config, relationUri, dispatch]\n );\n\n const handleClose = useCallback(\n () => pipe(profile.relations.actions.closeRelationEditor, dispatch)(config.id, relationUri),\n [config, relationUri, dispatch]\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(\n (entity) => dispatch(profile.modifiedEntities.actions.entityCreated(entity)),\n [dispatch]\n );\n\n const deleteModifiedEntity = useCallback(\n (entityUri) => dispatch(profile.modifiedEntities.actions.entityDeleted(entityUri)),\n [dispatch]\n );\n\n const onChangeEntity = useCallback(\n (entity) => {\n if (modifiedEntity) {\n deleteModifiedEntity(modifiedEntity.uri);\n }\n dispatch(profile.relations.actions.setRelationEntity(config.id, relationUri, entity));\n if (error) {\n dispatch(profile.errors.actions.errorDeactivated(getErrorId(error)));\n }\n },\n [config.id, relationUri, dispatch, modifiedEntity, deleteModifiedEntity, error]\n );\n\n const validate = useCallback(() => {\n const errors = validateConnection(metadata, allModifiedEntities, connection);\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [connection, metadata, allModifiedEntities, dispatch]);\n\n const resetErrors = useCallback(() => dispatch(profile.errors.actions.errorsSet([])), [dispatch]);\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 dispatch,\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, dispatch, 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) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId: config.id}))),\n [config.id, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId: config.id}),\n [config.id, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId: config.id}),\n [config.id, dispatch]\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 modifiedEntity: EntityType,\n initialConnection: ConnectionType,\n initialModifiedEntity: EntityType,\n allModifiedEntities: PropTypes.object,\n dispatch: PropTypes.func,\n config: RelationsConfigType,\n mode: PropTypes.string,\n metadata: MetadataType,\n globalSearchRequestOptions: PropTypes.object,\n error: AttributeErrorType,\n parentEntityUri: PropTypes.string,\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 RelationEditor from './RelationEditor';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {connect} from 'react-redux';\nimport {getRelationEditorActiveError, isTempUri} from '@reltio/mdm-sdk';\n\nconst getConnectionEntityUri = (props) => profile.relations.selectors.getEntityUriFromConnection(props.connection);\nconst getConnectionRelationUri = (props) => profile.relations.selectors.getRelationUriFromConnection(props.connection);\n\nconst mapStateToProps = (state, ownProps) => {\n const entityUri = getConnectionEntityUri(ownProps);\n const relationUri = getConnectionRelationUri(ownProps);\n const isTempEntity = isTempUri(entityUri);\n return {\n initialConnection: mdmModule.selectors.getInitialConnection(state, ownProps.config.id, relationUri),\n initialModifiedEntity: mdmModule.selectors.getInitialConnectionTempEntity(\n state,\n ownProps.config.id,\n relationUri\n ),\n modifiedEntity: isTempEntity ? mdmModule.selectors.getModifiedEntity(state, entityUri) : null,\n allModifiedEntities: isTempEntity ? mdmModule.selectors.getModifiedEntities(state) : null,\n globalSearchRequestOptions: mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly']),\n error: getRelationEditorActiveError(ownProps.connection, mdmModule.selectors.getProfileErrors(state))\n };\n};\n\nexport {RelationEditor};\n\nexport default connect(mapStateToProps)(RelationEditor);\n","import {curry, defaultTo, mergeAll, pick, pipe, prop, propEq, __} from 'ramda';\nimport {ReltioGridLayoutItem} from '@reltio/mdm-sdk';\nimport {ReactGridLayoutItem, ReltioGridLayoutOptions} from '../../types';\n\nexport const reltioLayoutItemToReactGridLayoutItem = ({\n x,\n y,\n width,\n height,\n id,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n isStatic\n}: ReltioGridLayoutItem): ReactGridLayoutItem => ({\n x,\n y,\n w: width,\n h: height,\n minW: minWidth,\n minH: minHeight,\n maxW: maxWidth,\n maxH: maxHeight,\n i: id,\n static: isStatic\n});\n\nexport const reactGridLayoutItemToReltioLayoutItem = ({\n x,\n y,\n w,\n h,\n maxW,\n minW,\n minH,\n maxH,\n i,\n ...obj\n}: ReactGridLayoutItem): ReltioGridLayoutItem => ({\n x,\n y,\n width: w,\n height: h,\n minWidth: minW,\n minHeight: minH,\n maxWidth: maxW,\n maxHeight: maxH,\n id: i,\n isStatic: obj.static\n});\n\nexport const reltioLayoutToReactGridLayout = (layout: ReltioGridLayoutItem[]): ReactGridLayoutItem[] =>\n (layout || []).map(reltioLayoutItemToReactGridLayoutItem);\n\nexport const reactGridLayoutToReltioLayout = (layout: ReactGridLayoutItem[]): ReltioGridLayoutItem[] =>\n (layout || []).map(reactGridLayoutItemToReltioLayoutItem);\n\nexport const getReltioLayoutItemById = curry((layout: ReltioGridLayoutItem[], id: string) =>\n (layout || []).find(propEq('id', id))\n);\n\nconst updateExtraPropsInLayoutItem = curry(\n (props: string[], from: Record<string, unknown>, to: Record<string, unknown>) => mergeAll([to, pick(props, from)])\n);\n\nexport const copyPropsFromPreviousLayout = curry(\n (\n props: string[],\n oldReltioLayout: ReltioGridLayoutItem[],\n reltioLayout: ReltioGridLayoutItem[]\n ): ReltioGridLayoutItem[] =>\n (reltioLayout || []).map((layoutItem) =>\n pipe(\n prop('id'),\n getReltioLayoutItemById(oldReltioLayout),\n defaultTo({}),\n updateExtraPropsInLayoutItem(props, __, layoutItem)\n )(layoutItem)\n )\n);\n\nexport const calcHeight = (height: number, options: ReltioGridLayoutOptions): number => {\n const {margin, rowHeight} = options;\n\n return Math.ceil((height + margin[1]) / (rowHeight + margin[1]));\n};\n\nexport const alignGroupedItemsHeights = curry(\n (heightsMap: {[id: string]: number}, layout: ReltioGridLayoutItem[]): ReltioGridLayoutItem[] => {\n return layout.map((layoutItem) => {\n const oneRowItemsHeights = layout\n .filter((item) => item.y === layoutItem.y)\n .map((item) => heightsMap[item.id] || (!item.autosizing && item.minHeight) || 0);\n const newHeight = Math.max(...oneRowItemsHeights);\n if (layoutItem.height !== newHeight && newHeight) {\n const minMaxHeights = layoutItem.autosizing\n ? {\n minHeight: newHeight,\n maxHeight: newHeight\n }\n : {};\n return {\n ...layoutItem,\n ...minMaxHeights,\n height: newHeight\n };\n }\n return layoutItem;\n });\n }\n);\n\nexport const calcLayoutItemsHeight = curry(\n (heightsMap: {[id: string]: number}, layout: ReltioGridLayoutItem[]): ReltioGridLayoutItem[] => {\n return layout.map((layoutItem) => {\n const height = heightsMap[layoutItem.id];\n if (height && layoutItem.autosizing) {\n return {\n ...layoutItem,\n minHeight: height,\n maxHeight: height,\n height\n };\n }\n return layoutItem;\n });\n }\n);\n","export const RESIZE_ICON = `<svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path stroke=\"#505050\" stroke-opacity=\".54\" d=\"M9.5 0v10M0 9.5h9M7.5 4v4M4 7.5h3\"/>\n</svg>`;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {svg2Url} from '@reltio/mdm-sdk';\nimport {RESIZE_ICON} from './icons/ResizeIcon.svg';\n\nexport const useStyles = makeStyles((_) => ({\n gridLayout: {\n position: 'relative',\n width: '100%',\n '& .react-grid-item': {\n '&.react-grid-placeholder': {\n background: 'rgba(0, 0, 0, 0.03)',\n border: '2px dashed rgba(0, 0, 0, 0.3)',\n borderRadius: '3px',\n transitionDuration: '100ms',\n zIndex: 7,\n userSelect: 'none',\n '& .react-resizable-handle': {\n display: 'none'\n }\n },\n '&.static .react-resizable-handle': {\n display: 'none'\n },\n '&.customView .react-resizable-handle': {\n width: '10px',\n height: '10px'\n },\n '&.cssTransforms': {\n transitionProperty: 'transform'\n },\n '&.react-draggable-dragging': {\n transition: 'none',\n zIndex: 8,\n willChange: 'transform',\n '& .react-resizable-handle': {\n backgroundImage: 'none'\n }\n },\n '& .react-resizable-handle': {\n position: 'absolute',\n width: '17px',\n height: '17px',\n bottom: 0,\n right: 0,\n zIndex: 20,\n backgroundImage: `url('${svg2Url(RESIZE_ICON)}')`,\n backgroundRepeat: 'no-repeat',\n backgroundOrigin: 'content-box',\n boxSizing: 'border-box',\n cursor: 'se-resize'\n },\n '&.fullscreen': {\n visibility: 'visible',\n position: 'unset',\n width: '100% !important',\n height: '100% !important',\n transform: 'translate(0) !important'\n }\n }\n },\n\n gridFullscreen: {\n height: '100% !important',\n overflowY: 'hidden',\n '& .react-resizable-handle, & .react-grid-item': {\n visibility: 'hidden'\n }\n },\n isResizing: {\n zIndex: 9,\n willChange: 'width, height',\n pointerEvents: 'none'\n }\n}));\n","import React, {DragEvent, useCallback, useMemo, useRef, useState, memo, ElementType} from 'react';\nimport GridLayout from 'react-grid-layout';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {pipe, ifElse, always} from 'ramda';\nimport classnames from 'classnames';\nimport {ReltioGridLayoutItem} from '@reltio/mdm-sdk';\nimport {ReactGridLayoutItem, ReltioGridLayoutOptions} from '../../types';\nimport {\n alignGroupedItemsHeights,\n calcLayoutItemsHeight,\n reltioLayoutToReactGridLayout,\n reactGridLayoutToReltioLayout,\n reactGridLayoutItemToReltioLayoutItem,\n copyPropsFromPreviousLayout,\n calcHeight,\n getReltioLayoutItemById\n} from './helpers';\nimport {noop} from '../../core';\n\nimport {useStyles} from './styles';\n\ntype Props<ViewConfig = Record<string, unknown>> = {\n layout: ReltioGridLayoutItem[];\n views?: ViewConfig[];\n layoutOptions?: ReltioGridLayoutOptions;\n onLayoutChanged?: (layout: ReltioGridLayoutItem[]) => void;\n onDrop?: (layout: ReltioGridLayoutItem[], layoutItem: ReltioGridLayoutItem, e: DragEvent<HTMLDivElement>) => void;\n onRemove?: (id: string) => void;\n LayoutItem: ElementType;\n draggableHandle?: string;\n isDroppable?: boolean;\n isStatic?: boolean;\n droppingItem?: ReactGridLayoutItem;\n classes?: {\n root?: string;\n item?: string;\n };\n};\n\nconst DEFAULT_LAYOUT_OPTIONS: ReltioGridLayoutOptions = {\n cols: 4,\n rowHeight: 30,\n margin: [15, 15]\n};\n\nconst ReltioGridLayout = ({\n views,\n layout,\n layoutOptions = DEFAULT_LAYOUT_OPTIONS,\n onLayoutChanged = noop,\n draggableHandle,\n LayoutItem,\n onRemove,\n onDrop,\n droppingItem,\n isDroppable,\n isStatic,\n classes\n}: Props) => {\n const ref = useRef();\n const heightsMap = useRef<{[id: string]: number}>({});\n const styles = useStyles();\n const [resizingItemId, setResizingItemId] = useState<string>(null);\n const [fullscreenItemId, setFullscreenItemId] = useState<string>(null);\n const [width, setWidth] = useState(0);\n const {cols, rowHeight, margin} = layoutOptions;\n const processedLayout: ReactGridLayoutItem[] = useMemo(() => reltioLayoutToReactGridLayout(layout), [layout]);\n\n const onReltioLayoutChanged = pipe(\n reactGridLayoutToReltioLayout,\n copyPropsFromPreviousLayout(['autosizing'], layout),\n ifElse(\n always(isStatic),\n alignGroupedItemsHeights(heightsMap.current),\n calcLayoutItemsHeight(heightsMap.current)\n ),\n onLayoutChanged\n );\n const handleDrop = (\n layout: ReactGridLayoutItem[],\n layoutItem: ReactGridLayoutItem,\n e: DragEvent<HTMLDivElement>\n ) => {\n if (onDrop) {\n onDrop(reactGridLayoutToReltioLayout(layout), reactGridLayoutItemToReltioLayoutItem(layoutItem), e);\n }\n };\n const onToggleFullscreen = useCallback((id: string) => setFullscreenItemId((prevId) => (prevId ? null : id)), []);\n const isFullscreenEnabled = fullscreenItemId !== null;\n\n const getAutosizeComponent = (layoutItemId: string) => (\n <ReactResizeDetector\n handleHeight\n onResize={(_, height) => {\n if (height) {\n const newHeight = calcHeight(height, layoutOptions);\n if (newHeight !== heightsMap.current[layoutItemId]) {\n heightsMap.current[layoutItemId] = newHeight;\n onReltioLayoutChanged(processedLayout);\n }\n }\n }}\n />\n );\n\n return (\n <>\n <ReactResizeDetector\n refreshMode=\"debounce\"\n refreshRate={50}\n handleWidth={true}\n onResize={(width: number) => setWidth(width)}\n />\n {!!width && (\n <GridLayout\n innerRef={ref}\n layout={processedLayout}\n cols={cols}\n draggableHandle={draggableHandle}\n autoSize={true}\n rowHeight={rowHeight}\n width={width}\n margin={margin}\n onLayoutChange={isStatic ? undefined : onReltioLayoutChanged}\n isResizable={!isStatic && !isFullscreenEnabled}\n isDraggable={!isStatic && !isFullscreenEnabled}\n className={classnames(classes?.root, styles.gridLayout, {\n [styles.gridFullscreen]: isFullscreenEnabled\n })}\n onDrop={handleDrop}\n droppingItem={droppingItem}\n isDroppable={!isStatic && isDroppable}\n onResizeStart={(_, layoutItem) => setResizingItemId(layoutItem.i)}\n onResizeStop={() => setResizingItemId(null)}\n data-reltio-id=\"reltio-grid-layout\"\n >\n {processedLayout.map((layoutItem) => {\n const isItemFullscreen = fullscreenItemId === layoutItem.i;\n const isResizing = resizingItemId === layoutItem.i;\n const isAutosize = (getReltioLayoutItemById(layout, layoutItem.i) || {}).autosizing;\n const autosizeComponent = isAutosize\n ? {AutosizeComponent: getAutosizeComponent(layoutItem.i)}\n : {};\n return (\n <LayoutItem\n key={layoutItem.i}\n layoutItemConfig={layoutItem}\n views={views}\n onToggleFullscreen={onToggleFullscreen}\n onRemove={onRemove}\n className={classnames(classes?.item, {\n static: isStatic,\n fullscreen: isItemFullscreen,\n [styles.isResizing]: isResizing\n })}\n isFullscreen={isItemFullscreen}\n {...autosizeComponent}\n />\n );\n })}\n </GridLayout>\n )}\n </>\n );\n};\n\nReltioGridLayout.displayName = 'ReltioGridLayout';\n\nexport default memo(ReltioGridLayout);\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 '@material-ui/core/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 as Button} from '@material-ui/core';\nimport {withTooltip} from '../../../../HOCs';\nimport HighlightOffIcon from '@material-ui/icons/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 '@material-ui/core/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 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 as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\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={\n <Checkbox checked={isSearchOnMapMove} onChange={onChange} color=\"primary\" className={styles.checkbox} />\n }\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 '@material-ui/core/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 '@material-ui/core/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 MarkerClustererProps\n} from '@react-google-maps/api';\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';\nimport {useStyles} from './styles';\n\nconst ON_MAP_MOVE_DEBOUNCE_INTERVAL = 1000;\n\nconst libraries = ['drawing'] as LoadScriptProps['libraries'];\n\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?: MarkerClustererProps['options'];\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,\n onOverlayUpdated,\n onMarkerClicked\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) || !onOverlayUpdated) 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?) => {\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) => {\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 {useDispatch, useSelector} from 'react-redux';\nimport {evolve, map} from 'ramda';\nimport {entity as History, HistoryDiff, wrapInArrayIfNeeded} from '@reltio/mdm-sdk';\nimport mdmModule, {HistoryMode, profile} from '@reltio/mdm-module';\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 dispatch = useDispatch();\n const historySlice = useSelector(mdmModule.selectors.getHistorySlice);\n const historyDiff = useSelector(mdmModule.selectors.getHistoryDiff);\n const historyMode = useSelector(mdmModule.selectors.getHistoryMode);\n const entity = useSelector(mdmModule.selectors.getEntity);\n\n useEffect(() => {\n if (historySlice) {\n const {aEntity, bEntity} = historySlice;\n const historyManager = History.HistoryManager.createHistoryManager(History.AttributesDiff);\n const historyDiff: HistoryDiff = historyManager.computeEntityHistoryDiff(\n prepareHistorySlice(historyMode === HistoryMode.Current ? entity : bEntity),\n prepareHistorySlice(aEntity)\n );\n dispatch(profile.history.actions.setHistoryDiff(historyDiff));\n }\n }, [historySlice, historyMode, dispatch, entity]);\n\n return historyDiff || defaultHistoryDiff;\n};\n","import {makeStyles} from '@material-ui/core/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 {makeStyles} from '@material-ui/core/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 {useState, useCallback, useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport {updateDueDateForTask, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSafePromise} from '../../../hooks';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\nimport {isOpenTask} from '../helpers';\n\nexport const useWorkflowDueDate = ({\n dueDate,\n taskId,\n isOpen\n}: Pick<WorkflowTaskData, 'dueDate' | 'taskId' | 'isOpen'>) => {\n const {updateTaskState} = useContext(WorkflowTasksContext) || {};\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\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 React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport {DateEditor} from '../../../editors';\nimport {useWorkflowDueDate} from '../../hooks/useWorkflowDueDate';\n\ntype Props = Pick<WorkflowTaskData, 'taskId' | 'dueDate'> & {\n isTaskOpen?: WorkflowTaskData['isOpen'];\n className?: string;\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 className={classnames(styles.dueDate, className)}\n disabled={updateRequestIsInProgress || readOnly}\n value={dueDate}\n label={i18n.text('Due date')}\n onChange={pipe((date) => date && date.getTime(), updateDueDate)}\n margin=\"dense\"\n InputProps={{className: styles.dueDateInput}}\n InputLabelProps={{classes: {root: styles.inputLabel}}}\n />\n );\n};\n\nexport default DueDateField;\n","import {useState, useCallback, useContext, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {updatePriorityForTask, WorkflowPriority, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSafePromise} from '../../../hooks';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\nimport {isOpenTask} from '../helpers';\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 const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\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 '@material-ui/core/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 as Divider} from '@material-ui/core';\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 React, {useState} from 'react';\nimport classnames from 'classnames';\nimport FlagIcon from '@material-ui/icons/Flag';\nimport i18n from 'ui-i18n';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {Tooltip as Tooltip} from '@material-ui/core';\n\nimport {useStyles} from './styles';\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\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 DCREntityInfo,\n generateTempUri,\n getRoleLabel,\n isEmptyValue,\n Metadata,\n Relation,\n DCRRelationInfo\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: DCRRelationInfo) => {\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: DCREntityInfo,\n relationsInfo: DCRRelationInfo[]\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 '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: 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 as Link} from '@material-ui/core';\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 '@material-ui/core/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 '@material-ui/icons/ArrowRightAlt';\nimport {Chip as Chip} from '@material-ui/core';\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 '@material-ui/core/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 {useSelector} from 'react-redux';\nimport {isNil} from 'ramda';\nimport classnames from 'classnames';\nimport {ChangeValue, DCRAttributeValue, DCRChange, getAttributeValue, getLabel, isReference} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\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';\n\nimport {useStyles} from './styles';\n\nconst DiffRenderer = ({label, level, attributeType, attributeValue, oldValue, newValue, operation}: Diff) => {\n const styles = useStyles({level});\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const objectsInfo = useContext(AttributesChangesContext);\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 '@material-ui/core/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 DCREntityInfo,\n GroupedObjectsInfo,\n isEntityUri,\n isRelationUri,\n DCRRelationInfo\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((objectsWithChanges: DCRObjectInfo, entity: DCREntityInfo) => {\n return {\n entity,\n relations: getRelations(objectsWithChanges, entity.uri)\n };\n});\n\nexport const createEntityRelationsObjectByRelation = curry((objectsInfo: DCRObjectInfo, relation: DCRRelationInfo) => {\n const entity = objectsInfo[relation.startObjectUri];\n const relations = [relation];\n\n return entity ? {entity: {...entity, uri: relation.startObjectUri}, relations} : {relations};\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 '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: 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 {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {always, any, flatten, ifElse, propOr} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n DCRChanges,\n DCRObjectsInfo,\n DCREntityInfo,\n getEntityUriForLink,\n getLabel,\n Metadata,\n DCRRelationInfo\n} 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';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n changes: DCRChanges;\n objectsInfo: DCRObjectsInfo;\n entityInfo: DCREntityInfo;\n dcrUri: string;\n relationsInfo?: DCRRelationInfo[];\n max?: number;\n};\n\nconst AttributesChanges = ({changes, dcrUri, objectsInfo, entityInfo, relationsInfo, max}: Props) => {\n const styles = useStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\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 {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n pmCard: {\n marginLeft: '-15px'\n }\n});\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 React from 'react';\nimport {useSelector} from 'react-redux';\nimport {WorkflowTaskData} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {useStyles} from './styles';\n\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';\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 const {objectURIs} = task;\n const entity = useSelector(mdmModule.selectors.getEntity);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\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 '@material-ui/core/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 as TextField} from '@material-ui/core';\nimport {Portal as Portal} from '@material-ui/core';\nimport {Snackbar as Snackbar} from '@material-ui/core';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\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 />\n </Portal>\n </>\n );\n};\n","import {useEffect, useState} from 'react';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, processDefinitions} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport {useSafePromise} from '../../../hooks';\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\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\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 {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, startProcessInstance} from '@reltio/mdm-sdk';\nimport {WorkflowTasksContext} from '../../../contexts/WorkflowTasksContext';\nimport {showWorkflowError} from '../helpers/errors';\n\nexport const useWorkflowProcessInstance = () => {\n const {loadTasks} = useContext(WorkflowTasksContext);\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = entity.uri;\n const [loading, setLoading] = useState(false);\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 '@material-ui/core/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 as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/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 as Button} from '@material-ui/core';\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 {useSelector} from 'react-redux';\nimport {filter, flatten, isNil, map, mergeLeft, pipe, prop, propEq, reject, uniqBy, when} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {getEntityUriFromDCRUri, getTasksForEntity, isDCRUri, isTempUri, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks/useSafePromise';\nimport {useWorkflowCheckPermission} from './useWorkflowCheckPermission';\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 const safePromise = useSafePromise();\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const isWorkflowEnabled = useSelector(mdmModule.selectors.isWorkflowEnabled);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const isEditableMode = useSelector(mdmModule.selectors.getIsEditableMode);\n const entityLastLoadedTime = useSelector(mdmModule.selectors.getProfileLastLoadedTime);\n const checkWorkflowPermission = useWorkflowCheckPermission();\n const canViewTasks = checkWorkflowPermission('VIEW_TASKS');\n const enabled = !!(workflowPath && environment) && isWorkflowEnabled && canViewTasks;\n const [tasks, setTasks] = useState<WorkflowTaskData[]>(null);\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\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({url, method, data, headers, noRequestProcessor: true});\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 '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 '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 {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui} from '@reltio/mdm-module';\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 {InterceptHandlersContext, SandboxAPIContext, SnackbarContext} 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\n const dispatch = useDispatch();\n const sanitizeHtml = useHtmlSanitizer();\n\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\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 = useSelector(mdmModule.selectors.getMetadata) || {};\n const entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const apiPath: string = useSelector(mdmModule.selectors.getApiPath);\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n const reltioPath = useSelector(mdmModule.selectors.getReltioPath);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const user = useSelector(mdmModule.selectors.getUser);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const isEditableMode = useSelector(mdmModule.selectors.getIsEditableMode);\n const environment = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const {type: typeSearch, data: search} = useSelector(mdmModule.selectors.getSearchProviderData) || {};\n const searchQuery = typeSearch === 'search' ? search?.query : null;\n\n const openSearch = (search) => dispatch(ui.actions.openSearch(search));\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 {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {\n ActivityFilters,\n Comment,\n Entity,\n FilterOptions,\n getFilteredEntities,\n isEntityUri,\n getEntity,\n EntitiesMap\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\n\nconst SELECT_OPTION = 'uri,label,type';\n\nexport const useCommentsEntitiesMap = (comments: Comment[]) => {\n const safePromise = useSafePromise();\n const currentEntityUri = useSelector(mdm.selectors.getEntityUriWithDataTenant);\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: ActivityFilters.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(\n Promise.all((entitiesUris || []).map(getNotFoundEntity))\n ).then((notFoundEntities: Entity[]) => pipe(reject(isEmpty), concat(entities))(notFoundEntities));\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 {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {checkConfigPermission, ConfigPermissions} from '@reltio/mdm-sdk';\nimport {useCallback} from 'react';\n\nconst emptyArray = [];\n\nexport const useConfigPermissions = () => {\n const userRoles = useSelector(mdmModule.selectors.getUserRoles) || 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 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 {useDispatch, useSelector} from 'react-redux';\nimport {cond, pipe, prop, T, evolve, filter as filterFn, when, identity, times, length, ifElse, always} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n ActivityFilter,\n addGlobalFilterToQuery,\n Connection,\n Entity,\n getRelationsForDataTenantEntity,\n getRelationsForEntity,\n GlobalSearchRequestOptions,\n isAvailableEntityTypeUri,\n isAvailableRelationTypeUri,\n isDataTenantEntity,\n isObject,\n isTempUri,\n Metadata,\n Mode,\n RelationsContent,\n RelationsViewConfig,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\nimport {usePrevious} from './usePrevious';\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);\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 const dispatch = useDispatch();\n const tenant = useSelector(mdm.selectors.getTenant) as string;\n const metadata = useSelector(mdm.selectors.getMetadata) as Metadata;\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {};\n const lastLoadedTime = useSelector(mdm.selectors.getProfileLastLoadedTime);\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 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 request: (entity: Entity) => Promise<ConnectionResponse> = cond([\n [pipe(prop('uri'), isTempUri), () => Promise.resolve([{total: 0}])],\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(([{connections, total}]) => {\n dispatch(profile.relations.actions.relationsLoaded({id: config.id, connections, total}));\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 dispatch,\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":["props","width","height","viewBox","xmlns","d","fill","fillRule","stroke","strokeWidth","useStyles","makeStyles","theme","color","palette","primary","main","closeIcon","position","right","bottom","transform","button","padding","FilterButton","enabled","onClick","styles","Tooltip","title","i18n","IconButton","classes","root","Filter","className","Close","propTypes","PropTypes","ErrorBoundary","React","constructor","super","this","state","error","componentDidCatch","setState","console","render","children","searchButton","marginLeft","marginRight","input","flex","fontSize","background","startAdornment","paddingLeft","ExpandableSearchInput","query","onChange","value","setValue","useState","isOpen","setIsOpen","useEffect","hasValue","length","Input","autoFocus","placeholder","disableUnderline","pipe","getValue","InputAdornment","Search","endAdornment","SmallIconButton","size","icon","CloseIcon","F","always","tap","onKeyPress","when","propEq","trim","T","EmptyStub","style","display","HideOnShrink","widthToHide","handleWidth","menuItem","whiteSpace","itemText","margin","textPrimary","lineHeight","fontWeight","textSecondary","MultilineMenuItem","forwardRef","ref","item","onMenuClose","noop","secondary","MenuItem","ListItemText","displayName","flexDirection","paddingRight","paddingTop","paddingBottom","borderTop","profileCardWrapper","alignItems","gap","profileCardContainer","flexGrow","rulesContainer","marginBottom","dividerWrapper","alignSelf","divider","relevanceBadge","ProfileMatchCard","entitiesMap","entity","match","metadata","showRelevanceBadge","matchRuleSummaries","some","checkMatchRuleSummaryRelevance","classnames","ProfileCard","object","container","matchRules","MatchRulesBlock","Divider","orientation","RelevanceScoreBadge","editor","overflowX","letterSpacing","dense","actionButtons","justifyContent","backgroundColor","RelationEditor","connection","modifiedEntity","initialConnection","initialModifiedEntity","allModifiedEntities","dispatch","config","mode","globalSearchRequestOptions","highlightedError","relationUri","relationType","direction","relation","isNew","errorClassName","useScrollToAttributeError","isSimple","inRelations","inRelationTypes","outRelations","outRelationTypes","useMemo","getInOutRelations","content","parentEntityUri","contentSecondLevel","firstLevelRelationAttrTypes","getRelationAttributesList","attributeListEntity","attributes","profile","getActivenessAttributes","relatedTempEntities","findRelatedTemporaryEntities","relatedTempEntitiesUrisHistory","useRef","setInitialInfo","useCallback","id","current","concat","map","prop","uniq","initialRelatedTempEntities","defaultRelationType","getDefaultRelationTypeObject","initialConnectionChangeablePart","pick","connectionChangeablePart","hasChanges","isEmptyValue","path","equals","initial","actual","_","i","applyAction","onRelationTypeChange","handleClose","updateModifiedEntityLabel","entityType","getEntityType","type","updateConnectionEntityLabel","setModifiedEntity","deleteModifiedEntity","entityUri","onChangeEntity","uri","getErrorId","validate","errors","validateConnection","resetErrors","onApply","omitMarks","omit","differenceWith","forEach","onCancel","initialTempEntities","onAddAttributes","params","param","viewId","onChangeAttribute","onDeleteAttribute","onCreateEntity","entityTypeUri","initValue","newEntityAttrTypes","relationEditorAttributeTypesSelectionStrategy","getCreatableAttributeTypes","newEntity","createTemporaryEntity","attributeTypes","errorMessage","getErrorMessage","getEntityTypesUris","entityTypes","Typography","ConnectionRelationTypeSelector","Boolean","ErrorWrapper","EntitySelector","isTempUri","entityTypesUris","max","onCreate","isSuggestMode","undefined","attributeTypesSelectionStrategy","AttributesList","attrTypes","showEmptyEditors","crosswalks","parentUri","Button","disabled","ConnectionType","EntityType","RelationsConfigType","MetadataType","AttributeErrorType","withContext","ScrollToElementContext","contextValue","element","isHighlightedErrorType","isAttributeTypeError","connect","ownProps","getConnectionRelationUri","isTempEntity","mdmModule","getRelationEditorActiveError","reltioLayoutItemToReactGridLayoutItem","x","y","minWidth","minHeight","maxWidth","maxHeight","isStatic","w","h","minW","minH","maxW","maxH","static","reactGridLayoutItemToReltioLayoutItem","reactGridLayoutToReltioLayout","layout","getReltioLayoutItemById","curry","find","updateExtraPropsInLayoutItem","from","to","mergeAll","copyPropsFromPreviousLayout","oldReltioLayout","reltioLayout","layoutItem","defaultTo","__","alignGroupedItemsHeights","heightsMap","oneRowItemsHeights","filter","autosizing","newHeight","Math","minMaxHeights","calcLayoutItemsHeight","gridLayout","border","borderRadius","transitionDuration","zIndex","userSelect","transitionProperty","transition","willChange","backgroundImage","svg2Url","backgroundRepeat","backgroundOrigin","boxSizing","cursor","visibility","gridFullscreen","overflowY","isResizing","pointerEvents","DEFAULT_LAYOUT_OPTIONS","cols","rowHeight","ReltioGridLayout","views","layoutOptions","onLayoutChanged","draggableHandle","LayoutItem","onRemove","onDrop","droppingItem","isDroppable","resizingItemId","setResizingItemId","fullscreenItemId","setFullscreenItemId","setWidth","processedLayout","reltioLayoutToReactGridLayout","onReltioLayoutChanged","ifElse","onToggleFullscreen","prevId","isFullscreenEnabled","refreshMode","refreshRate","onResize","innerRef","autoSize","onLayoutChange","isResizable","isDraggable","e","onResizeStart","onResizeStop","isItemFullscreen","autosizeComponent","AutosizeComponent","layoutItemId","handleHeight","options","ceil","calcHeight","key","layoutItemConfig","fullscreen","isFullscreen","memo","MapControlContainer","controlElement","setControlElement","controlDiv","document","createElement","divIndex","controls","push","removeAt","classList","add","createPortal","opacity","xmlnsXlink","xlinkHref","mask","fillOpacity","ButtonWithTooltip","withTooltip","TopRightMapControls","drawingMode","drawingModes","hasActiveOverlay","onDrawingModeChanged","onClearOverlay","changeDrawingModeTo","tooltipTitle","HighlightOff","Icon","MAP_DRAWING_MODES","RadiusIcon","DrawIcon","getIcon","label","checkbox","TopCenterMapControls","isSearchOnMapMove","onChangeIsSearchOnMapMove","FormControlLabel","control","Checkbox","checked","event","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","boxShadow","hoveredMarkerIcon","markerIcon","marker","otherProps","popperAnchor","hovered","setHovered","activeEntityUri","useContext","EntityMarkerContext","isActive","pathEq","point","setHoveredDebounced","debounce","onMouseOver","onMouseOut","handleClick","Popper","anchorEl","open","modal","placement","url","scaledSize","Size","visible","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","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","useDispatch","useSelector","historyDiff","historyMode","aEntity","bEntity","History","computeEntityHistoryDiff","HistoryMode","card","borderBottom","withBackground","lineWrapper","top","left","line","info","text","wordWrap","commentsInfo","marginTop","commentsIcon","infoValue","infoBlock","header","caption","flag","date","mainInfo","controlsBox","controlsInRow","priority","comments","dueDate","dueDateInput","inputLabel","taskId","isTaskOpen","updateDueDate","updateRequestIsInProgress","readOnly","updateTaskState","WorkflowTasksContext","workflowPath","environment","tenant","safePromise","useSafePromise","setUpdateRequestIsInProgress","canUpdateTask","useWorkflowCheckPermission","checkWorkflowPermission","isOpenTask","newValue","updateDueDateForTask","then","catch","showWorkflowError","finally","useWorkflowDueDate","DateEditor","getTime","InputProps","InputLabelProps","priorities","updatePriority","newPriority","updatePriorityForTask","WorkflowPriority","useWorkflowPriority","DropDownSelector","isDisabled","hideSelectedOptions","TextFieldProps","decorator","lineBlock","withLinePadding","noLine","plain","last","rowDivider","first","transparent","light","variant","taskToColor","COLORS","colorIndex","task","actions","assignee","createdBy","createTime","step","processDefinitionDisplayName","objectURIs","processInstanceComments","possibleActions","preferredAction","dcrId","getDCRId","hash","useWorkflowColor","isExpanded","setExpanded","canViewComments","workflowActions","actionRequestIsInProgress","useWorkflowActions","Flag","CollapseButton","CollaborationIcon","TaskActions","isInProgress","AssigneeSelector","WorkflowComments","cx","cy","r","getOperationType","oldValue","DCRTypes","DCROperationTypes","pin","ignored","getOperationLabel","operation","getDataTypeDefinition","attributeType","attributeValue","allPass","DataTypes","isUrl","getAttrDataTypeDefinition","getValues","attrType","newAttrValues","pathOr","name","oldAttrValues","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","identity","diffNewValue","difference","diffOldValue","items","join","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","overflow","wordBreak","fieldName","arrow","chip","textTransform","borderColor","ArrowRightAlt","Chip","AttributesChangesContext","linkContainer","textDecoration","disabledLink","objectsInfo","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","onToggle","itemsToShow","collapsedSuggestionsCount","limit","setIsExpanded","collapsedItems","slice","visibleSuggestionsCount","useCollapsibleList","any","getEntityUriForChangeRequest","getEntityUriForLink","screen","Provider","getDCRUri","groupedObjects","setGroupedObjects","setDcr","requestEntities","entityUris","Promise","resolve","getEntitiesByUris","searchOptions","defaultMaxValues","getDataChangeRequest","keys","extractObjectsFromChangeRequest","entityObjectsWithRelations","relationsObjects","relationsObjectsWithEntity","relationsObjectsWithoutEntity","partition","entities","relationsObjectsWithRequestedEntities","relationsObject","showApiError","useChangeRequest","DcrTaskIcon","pmCard","defaultOptions","showTransitiveMatches","showInactiveEntities","matches","useMatchesLoader","rowsPerPage","Number","MAX_SAFE_INTEGER","page","includes","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","loadTasks","setLoading","startProcessInstance","useWorkflowProcessInstance","Popover","anchorOrigin","vertical","horizontal","transformOrigin","paper","SimpleDropDownSelector","definition","TextField","hiddenLabel","multiline","Portal","body","Snackbar","autoHideDuration","message","buttonLabel","AddWorkflowButton","setAnchorEl","canStartProcess","canViewProcessDefinitions","currentTarget","Add","TaskActionButtons","preferredActions","otherActions","action","useWorkflowTasks","processTypes","showClosedTasks","isWorkflowEnabled","isEditableMode","entityLastLoadedTime","canViewTasks","tasks","setTasks","total","setTotal","parsedProcessTypes","Array","isArray","requests","getTasksForEntity","isDCRUri","getEntityUriFromDCRUri","includeClosed","all","responses","reject","uniqBy","isRequestedTask","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","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","file","reader","FileReader","onload","lastModified","onerror","readAsArrayBuffer","getFilesWithArrayBuffer","addEventListener","removeEventListener","removeAttribute","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","workerUrl","showSnackbarMessage","SnackbarContext","qxApi","interceptHandlers","typeSearch","search","searchQuery","ui","popupText","process","CustomAction","sanitizedHtml","elem","getElementById","sanitizedPopup","prev","log","processedTask","requestInterceptor","responseInterceptor","pendingInterceptors","needDelayedRequestForInterceptors","startInterceptorInit","initializeWebWorker","finishInterceptorInit","addInternalRequestInterceptor","addInternalResponseInterceptor","removeInternalRequestInterceptor","removeInternalResponseInterceptor","useCommentsEntitiesMap","mdm","setEntitiesMap","getEntities","entitiesUris","requestFilters","FilterOptions","requestOptions","activeness","ActivityFilters","getFilteredEntities","getNotFoundEntity","getEntity","addNotFoundEntities","notFoundEntities","uniqEntitiesUris","objectType","relatedObjectUris","results","getNotFoundUris","prevEntitiesMap","emptyArray","useConfigPermissions","userRoles","canCreate","checkConfigPermission","ConfigPermissions","canRead","canUpdate","canDelete","useLayoutResetter","onLayoutReset","onResetUndo","SnackbarRenderer","useSnackbar","onDismissClick","showDismiss","dismissTitle","resetLayout","buildSuggestedIds","n","useRelationsLoader","sorting","relationActivityFilter","searchByOv","isLoading","setIsLoading","dtssPath","activityFilter","globalFilter","lastLoadedTime","processContent","getUri","isObject","filterRelation","isAvailableRelationTypeUri","filterFn","isAvailableEntityTypeUri","nextEntry","suggested","loadRelations","requestConfig","sortBy","order","returnDates","returnObjects","ActivityFilter","offset","addGlobalFilterToQuery","configs","cond","isDataTenantEntity","getRelationsForDataTenantEntity","customerTenant","dataTenant","getRelationsForEntity","connections","isRequestSentRef","prevMode","Mode"],"sourceRoot":""}
|