@reltio/remotes 1.4.1203 → 1.4.1206
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/1406.js.map +1 -1
- package/2398.js.map +1 -1
- package/758.js +1 -1
- package/758.js.map +1 -1
- package/8827.js +1 -1
- package/8827.js.map +1 -1
- package/package.json +1 -1
package/1406.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1406.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeSelector/AttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/DateIntervalSelector.tsx","webpack://@reltio/remotes/../components/src/components/UserSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/UserSelector/UserSelector.tsx","webpack://@reltio/remotes/../components/src/components/activityLog/types/ActivityTypes.ts","webpack://@reltio/remotes/../components/src/components/activityLog/utils/activities.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/CustomDateRangeEditor.tsx","webpack://@reltio/remotes/../components/src/types/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileAttributesView/ProfileAttributesView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/contexts/SingleAttributeContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/SingleAttributeHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/hooks/helpers/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/SingleAttributeEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/SingleAttributeReadableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/SingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useSingleAttributeLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/RelationsViewStateContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/ImportDTContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/hooks/useImportFromDTLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/MultipleImportIcon.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/ImportFromDT.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/RelationsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/RelationTooltip.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationInfo.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/SuggestedButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/EditableRelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/permissions.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/relation.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/RelationArrowButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/SecondLevelWrapper.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSecondLevelConnections.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/RelationsEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/RelationAttributes.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/ShowDetailsButton/ShowDetailsButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/RelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/ratings.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/Ratings.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/RatingsButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/RelationComplexItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationsList.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSuggestedRelations.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/RelationsContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/RelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/filters.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationsState.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/contexts/TableAttributeContext.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/reducer.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/HeadCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/helpers/tableAttributeHelpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/AttributeTableHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/RowCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/EditButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/AttributeTable.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/AttributeEditing.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/hooks/useEditableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/TableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useLoadPaths.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/ConfigContext.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/Node.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/helpers.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/node-content-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/index.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/tree-node-data-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/icons/ShowGraph.svg","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/Sandbox/styles.ts","webpack://@reltio/remotes/../profile/src/components/views/HOCs/styles.ts","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withResizableHandle.tsx","webpack://@reltio/remotes/../profile/src/components/views/styles.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/useMarkers.js","webpack://@reltio/remotes/../profile/src/components/EntityMapView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/ImageLineCaption.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeViewEditableContent/ImageAttributeViewEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ActionButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/MatchCard.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ProfilePotentialMatchesView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewsFactory.tsx","webpack://@reltio/remotes/../profile/src/components/views/StubView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/ProfileSingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/hooks/useSingleAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/ProfileTableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/useTableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/ProfileRelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/Sandbox/CustomView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsView.tsx","webpack://@reltio/remotes/../profile/src/components/EntityMapView/EntityMapView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewComponent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/ProfileLayoutItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayout/ProfileLayout.tsx","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/suggest.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/copy.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/hooks/useCloneAction.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/PerspectiveProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowButton/WorkflowButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/CollaborationList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/WorkflowList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/CollaborationIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationButton/CollaborationButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowPanelEmptyState/WorkflowPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationPanelEmptyState/CollaborationPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/components/ErrorsPanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/components/Error.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/useCachedErrors.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/ProfileErrorsPanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/Notifications/styles.ts","webpack://@reltio/remotes/../profile/src/components/Notifications/Notification.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/Notifications.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/ProfilePerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useProfileValidation.ts","webpack://@reltio/remotes/../profile/src/perspectives/ProfilePerspective.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/TagListHeader.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/TagProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTagsProvider.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/TagPerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTag.ts","webpack://@reltio/remotes/../profile/src/perspectives/TagPerspective.tsx"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n },\n noOptionsMessage: {\n fontSize: '14px'\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe, defaultTo} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {AttributeOption} from '../../types';\nimport mdmModule from '@reltio/mdm-module';\nimport {MultiValueProps, OptionProps} from 'react-select';\nimport {AttributeType, getAttributeTypeSubAttributes, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport MultiValue from '../ReactSelect/commonComponents/MultiValue';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n entityType: TEntityType;\n selectedAttributes: AttributeOption[];\n className?: string;\n onChange?: (attributes: AttributeOption[]) => void;\n title?: string;\n disableUnderline?: boolean;\n menuPlacement?: string;\n};\n\nconst AttributeSelector = ({\n entityType,\n selectedAttributes,\n className,\n onChange,\n title,\n disableUnderline,\n menuPlacement = 'bottom'\n}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const styles = useStyles();\n\n const prepareItems = useCallback(\n (data: AttributeType[], level = 0, prevLabel = ''): AttributeOption[] => {\n return data.reduce((acc, item) => {\n if (item.hidden) return acc;\n const chipLabel = `${prevLabel && prevLabel + ' / '}${item.label}`;\n acc.push({\n label: item.label,\n value: item.uri,\n attrType: item,\n chipLabel,\n level\n });\n const subAttributes = getAttributeTypeSubAttributes(metadata, item);\n return acc.concat(subAttributes ? prepareItems(subAttributes, level + 1, chipLabel) : []);\n }, []);\n },\n [metadata]\n );\n\n const options = useMemo(() => prepareItems(entityType?.attributes || []), [entityType, prepareItems]);\n\n const CustomOption = ({isFocused, isSelected, data, label, innerProps}: OptionProps<AttributeOption, true>) => (\n <div {...innerProps}>\n <AttributeListItem\n checked={isSelected}\n level={data.level}\n data={data}\n label={label}\n labelInText={label}\n isFocused={isFocused}\n />\n </div>\n );\n\n const CustomMultiValue = ({data, ...props}: MultiValueProps<AttributeOption>) => (\n <MultiValue {...props}>{data.chipLabel}</MultiValue>\n );\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {title || i18n.text('Attribute')}\n </Typography>\n <MultiSelect\n value={selectedAttributes}\n options={options}\n TextFieldProps={{\n InputProps: {disableUnderline},\n classes: {root: styles.dropDownInput}\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton,\n MultiValue: CustomMultiValue,\n Option: CustomOption\n }}\n onChange={pipe(defaultTo([]), onChange)}\n styles={customStyles}\n classes={styles}\n menuPlacement={menuPlacement}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default AttributeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flex: 1\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px',\n fontSize: '14px'\n },\n inputNumber: {\n minWidth: '60px',\n marginRight: 10,\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n inputUnit: {\n width: '100%'\n }\n});\n","import React from 'react';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport capitalize from '@material-ui/core/utils/capitalize';\nimport {TextField as TextField} from '@material-ui/core';\nimport SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {getValue} from '../../core/utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n interval: [number, string];\n onChange: ([number, string]) => void;\n onFocus?: () => void;\n};\n\nconst periods = [\n i18n.text('minutes'),\n i18n.text('hours'),\n i18n.text('days'),\n i18n.text('weeks'),\n i18n.text('months'),\n i18n.text('years')\n];\n\nconst DateIntervalSelector = ({interval: [value, unit], onChange, onFocus}: Props) => {\n const styles = useStyles();\n const getIntervalFromValue = (newValue: number) => [newValue, unit];\n const getIntervalFromUnit = ({value: newUnit}: {value: string}) => [value, newUnit];\n const onNumberChange = pipe(getValue, parseInt, getIntervalFromValue, onChange);\n const onUnitChange = pipe(getIntervalFromUnit, onChange);\n return (\n <div className={styles.root}>\n <TextField\n type=\"number\"\n value={value || ''}\n onChange={onNumberChange}\n inputProps={{min: 1, onFocus: onFocus}}\n InputProps={{classes: {root: styles.input}}}\n className={styles.inputNumber}\n />\n <SimpleDropDownSelector\n label={''}\n placeholder={capitalize(unit)}\n className={styles.inputUnit}\n value={{value: unit, label: capitalize(unit)}}\n options={periods.map((value) => ({\n value,\n label: capitalize(value)\n }))}\n onChange={onUnitChange}\n TextFieldProps={{\n inputProps: {onFocus: onFocus},\n InputProps: {classes: {root: styles.input}}\n }}\n />\n </div>\n );\n};\n\nexport default DateIntervalSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n loadingMessage: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n }\n});\n","import React, {useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {defaultTo, pipe, pluck, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getAllUsersForTenant, User, utils} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n selectedUsers: string[];\n onChange: (activities: string[]) => void;\n className?: string;\n disableUnderline?: boolean;\n};\n\nconst UserSelector = ({selectedUsers, onChange, className, disableUnderline}: Props) => {\n const styles = useStyles();\n\n const valueToOption = (value: string) => ({value, label: value});\n const prepareValues = (values: string[]) => values.map(valueToOption);\n const filterUsers = (inputValue) => (users) =>\n inputValue ? users.filter((username) => utils.strings.search(username, inputValue)) : users;\n\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n\n const cachedRequest = useRef<Promise<{array: User[]}>>();\n const getOptions = (inputValue) => {\n if (!cachedRequest.current) {\n cachedRequest.current = getAllUsersForTenant({tenant, servicesPath});\n }\n return cachedRequest.current.then(\n pipe(prop('array'), pluck('username'), filterUsers(inputValue), prepareValues)\n );\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('User')}\n </Typography>\n <MultiSelect\n value={prepareValues(selectedUsers)}\n onChange={pipe(defaultTo([]), pluck('value'), onChange)}\n defaultOptions={true}\n getOptions={getOptions}\n TextFieldProps={{\n InputProps: {disableUnderline},\n className: styles.dropDownInput\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default UserSelector;\n","export enum ActivityTypes {\n MODEL_UPDATED = 'MODEL_UPDATED',\n ENTITY_REMOVED = 'ENTITY_REMOVED',\n ENTITY_CREATED = 'ENTITY_CREATED',\n ENTITY_CHANGED = 'ENTITY_CHANGED',\n ENTITIES_MERGED = 'ENTITIES_MERGED',\n ENTITIES_SPLITTED = 'ENTITIES_SPLITTED',\n ENTITY_LOST_MERGE = 'ENTITY_LOST_MERGE',\n RELATIONSHIP_CREATED = 'RELATIONSHIP_CREATED',\n RELATIONSHIP_REMOVED = 'RELATIONSHIP_REMOVED',\n RELATIONSHIP_CHANGED = 'RELATIONSHIP_CHANGED',\n POTENTIAL_MATCHES_FOUND = 'POTENTIAL_MATCHES_FOUND',\n NOT_MATCHES_SET = 'NOT_MATCHES_SET',\n NOT_MATCHES_RESET = 'NOT_MATCHES_RESET',\n PERIODIC_TASK_SCHEDULED = 'PERIODIC_TASK_SCHEDULED',\n ENTITIES_MERGED_MANUALLY = 'ENTITIES_MERGED_MANUALLY',\n POTENTIAL_MATCHES_REMOVED = 'POTENTIAL_MATCHES_REMOVED',\n ENTITIES_MERGED_ON_THE_FLY = 'ENTITIES_MERGED_ON_THE_FLY',\n USER_LOGIN = 'USER_LOGIN',\n USER_LOGOUT = 'USER_LOGOUT',\n USER_SEARCH = 'USER_SEARCH',\n USER_PROFILE_VIEW = 'USER_PROFILE_VIEW',\n COMMENT_ADDED = 'COMMENT_ADDED',\n COMMENT_UPDATED = 'COMMENT_UPDATED',\n COMMENT_DELETED = 'COMMENT_DELETED',\n ANALYTICS_ATTRIBUTES_CHANGED = 'ANALYTICS_ATTRIBUTES_CHANGED',\n SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE = 'SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE',\n GROUP_CREATED = 'GROUP_CREATED',\n GROUP_REMOVED = 'GROUP_REMOVED',\n GROUP_CHANGED = 'GROUP_CHANGED'\n}\n","import {groupBy, ifElse, map, path, pipe, propOr, values, is, isNil, includes} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActivityData, ActivityTypes, DeltaValue} from '../types';\n\nconst getItemDataType = path(['data', 'type']);\n\nexport const getActivityType = (activity: ActivityData) => {\n const {items, label} = activity;\n const [firstItem] = items || [];\n return getItemDataType(firstItem) || label;\n};\n\nexport const isValidActivityType = (type: string): boolean => pipe(values, includes(type))(ActivityTypes);\n\nexport const isValidActivity = pipe(getActivityType, isValidActivityType);\n\nexport const splitActivityByType = (activity: ActivityData) => {\n return pipe(\n propOr([], 'items'),\n groupBy(getItemDataType),\n values,\n ifElse(\n ({length}) => length > 1,\n map((items) => ({\n ...activity,\n items,\n itemsTotal: items.length\n })),\n () => [activity]\n )\n )(activity);\n};\n\nexport const stringifyDeltaValue = (delta: string | Record<string, DeltaValue[]> | DeltaValue | DeltaValue[]) => {\n if (isNil(delta)) {\n return '';\n } else if (typeof delta === 'string') {\n return delta;\n } else if (Array.isArray(delta)) {\n return delta.map(stringifyDeltaValue).join(', ');\n } else if (is(Object, delta)) {\n return 'value' in delta ? stringifyDeltaValue(delta.value) : stringifyDeltaValue(Object.values(delta));\n } else {\n return delta.toString();\n }\n};\n\nexport const getActivityLabel = (type: ActivityTypes) => {\n const labels = {\n [ActivityTypes.COMMENT_ADDED]: i18n.text('Comment added'),\n [ActivityTypes.COMMENT_DELETED]: i18n.text('Comment deleted'),\n [ActivityTypes.COMMENT_UPDATED]: i18n.text('Comment updated'),\n [ActivityTypes.ENTITIES_MERGED]: i18n.text('Profile merged'),\n [ActivityTypes.ENTITIES_MERGED_MANUALLY]: i18n.text('Profile merged manually'),\n [ActivityTypes.ENTITIES_MERGED_ON_THE_FLY]: i18n.text('Profile merged on the fly'),\n [ActivityTypes.ENTITIES_SPLITTED]: i18n.text('Profile un-merged'),\n [ActivityTypes.ENTITY_CHANGED]: i18n.text('Profile updated'),\n [ActivityTypes.ENTITY_CREATED]: i18n.text('Profile created'),\n [ActivityTypes.ENTITY_LOST_MERGE]: i18n.text('Profile lost merge'),\n [ActivityTypes.ENTITY_REMOVED]: i18n.text('Profile removed'),\n [ActivityTypes.GROUP_CHANGED]: i18n.text('Group updated'),\n [ActivityTypes.GROUP_CREATED]: i18n.text('Group created'),\n [ActivityTypes.GROUP_REMOVED]: i18n.text('Group removed'),\n [ActivityTypes.MODEL_UPDATED]: i18n.text('Model was updated'),\n [ActivityTypes.NOT_MATCHES_RESET]: i18n.text('Not matches reset'),\n [ActivityTypes.NOT_MATCHES_SET]: i18n.text('Not matches set'),\n [ActivityTypes.PERIODIC_TASK_SCHEDULED]: i18n.text('Periodic task was scheduled'),\n [ActivityTypes.POTENTIAL_MATCHES_FOUND]: i18n.text('Potential matches found'),\n [ActivityTypes.POTENTIAL_MATCHES_REMOVED]: i18n.text('Potential matches removed'),\n [ActivityTypes.RELATIONSHIP_CHANGED]: i18n.text('Relationship updated'),\n [ActivityTypes.RELATIONSHIP_CREATED]: i18n.text('Relationship created'),\n [ActivityTypes.RELATIONSHIP_REMOVED]: i18n.text('Relationship removed'),\n [ActivityTypes.USER_LOGIN]: i18n.text('Logged in'),\n [ActivityTypes.USER_LOGOUT]: i18n.text('Logged out'),\n [ActivityTypes.USER_PROFILE_VIEW]: i18n.text('Profile viewed'),\n [ActivityTypes.USER_SEARCH]: i18n.text('Searched'),\n [ActivityTypes.ANALYTICS_ATTRIBUTES_CHANGED]: i18n.text('Analytics attribute changed'),\n [ActivityTypes.SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE]: i18n.text('SFDC connector synchronization issue')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n dropdownIndicator: {\n transition: 'transform .15s ease'\n },\n inputRoot: {\n fontSize: '14px',\n height: 46\n },\n input: {\n padding: '0 12px 0'\n },\n dateOptionLabel: {\n minWidth: '100px'\n },\n paper: {\n minWidth: '112px'\n }\n});\n","import React, {useCallback, useRef, useState} from 'react';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {DataTypes, formatDataTypeValue} from '@reltio/mdm-sdk';\n\nimport {TextField as TextField} from '@material-ui/core';\nimport {Menu as Menu} from '@material-ui/core';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport DateRangePicker from '../../DateRangePicker/DateRangePicker';\nimport {useStyles} from './styles';\n\ntype DateValues = [Date, Date];\ntype Props = {\n values: DateValues;\n onChange: (values: DateValues) => void;\n onFocus?: () => void;\n};\n\nconst localeFormat = moment.localeData().longDateFormat('L');\n\nconst formatValue = (value: Date, placeholder: string) => {\n return isNil(value)\n ? `${placeholder}`\n : `${formatDataTypeValue({dataTypeDefinition: {type: DataTypes.TYPE_ACTIVENESS_DATE}}, value)}`;\n};\n\nconst CustomDateRangeEditor = ({values, onChange, onFocus}: Props) => {\n const placeholder = localeFormat;\n const inputRef = useRef(null);\n const [open, setOpen] = useState(false);\n const styles = useStyles();\n\n const onApply = (values: DateValues) => {\n onChange(values);\n setOpen(false);\n };\n\n const handleToggle = useCallback(() => {\n setOpen((open) => !open);\n onFocus();\n }, [onFocus]);\n\n const onCancel = () => {\n setOpen(false);\n };\n\n return (\n <div className={styles.root}>\n <TextField\n fullWidth\n value={values.map((value) => formatValue(value, placeholder)).join(' \\u2014 ')}\n onClick={handleToggle}\n variant=\"filled\"\n ref={inputRef}\n InputProps={{\n endAdornment: (\n <DropdownIndicatorWithIconButton\n selectProps={{classes: styles, menuIsOpen: open}}\n innerProps={{}}\n />\n ),\n disableUnderline: isNil(values),\n readOnly: true,\n classes: {\n root: styles.inputRoot,\n input: styles.input\n }\n }}\n InputLabelProps={{\n shrink: false\n }}\n placeholder={i18n.text(`${placeholder} \\u2014 ${placeholder}`)}\n />\n <Menu\n variant=\"menu\"\n open={open}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={inputRef.current}\n onClose={onCancel}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{\n autoFocusItem: open,\n style: {width: '100%'}\n }}\n >\n <DateRangePicker\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n values={values}\n onCancel={onCancel}\n onApply={onApply}\n type={DataTypes.TYPE_ACTIVENESS_DATE}\n />\n </Menu>\n </div>\n );\n};\n\nexport default CustomDateRangeEditor;\n","import {AttributeType} from '@reltio/mdm-sdk';\n\nexport type ReactGridLayoutItem = {\n i: string;\n x: number;\n y: number;\n w: number;\n h: number;\n minW?: number;\n minH?: number;\n maxW?: number;\n maxH?: number;\n static?: boolean;\n};\n\nexport type ReltioGridLayoutItem = {\n id: string;\n x: number;\n y: number;\n width: number;\n height: number;\n minWidth?: number;\n minHeight?: number;\n maxWidth?: number;\n maxHeight?: number;\n isStatic?: boolean;\n autosizing?: boolean;\n};\n\nexport type AttributeOption = {\n label: string;\n value: string;\n attrType: AttributeType;\n chipLabel: string;\n level: number;\n};\n\nexport enum DateRangeTypes {\n WITHIN = 'within',\n AGO = 'ago',\n BETWEEN = 'between'\n}\n\nexport type DateRangeFilter = {\n type: DateRangeTypes;\n period: [number, string] | [Date, Date];\n};\n\nexport type QueryBuilderAttributeData = {\n title: string;\n pathToTitle: Array<string>;\n fieldName: string;\n entityTypeUri: string;\n attrType: AttributeType;\n uri: string;\n groupName: string;\n filterOptions: Array<string>;\n};\n\nexport type QueryBuilderAttribute = {\n id: string;\n values: Array<unknown>;\n data: QueryBuilderAttributeData;\n filter: string;\n operator: string;\n};\n\nexport type AttributeSelectorItem = {\n attrType: AttributeType;\n entityTypeUri: string;\n fieldName: string;\n groupName: string;\n title: string;\n uri: string;\n children?: AttributeSelectorItem[];\n pathToTitle?: string[];\n};\n\nexport type AttributeSelectorItemsGroup = {\n id?: string;\n title: string;\n attributes: AttributeSelectorItem[];\n};\n\nexport type AttributeSelectionInfo = {\n index: number;\n checked: boolean;\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n};\n\nexport type BasicAttributeSelectorProps = {\n className?: string;\n itemsGroups: AttributeSelectorItemsGroup[];\n value: AttributeSelectorItem;\n onSelect: (selectInfo: AttributeSelectionInfo) => void;\n onRestoreFocus?: () => void;\n onOpenPopup?: () => void;\n getLabel?: (value: {fieldName?: string; pathToTitle?: string[]; title: string}) => string;\n disableRestoreFocus?: boolean;\n disableEnforceFocus?: boolean;\n single?: boolean;\n ungroup?: boolean;\n disabled?: boolean;\n hideCheckBox?: boolean;\n};\nexport enum RequestStates {\n INIT = 'init',\n LOADING = 'loading',\n LOADED = 'loaded',\n ERROR = 'error'\n}\n","import React from 'react';\nimport {AttributesView} from '@reltio/components';\nimport {AttributeViewConfig} from '../../types';\n\ntype ProfileAttributesViewProps = {\n config: AttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileAttributesView = ({className, config}: ProfileAttributesViewProps) => {\n return (\n <AttributesView\n className={className}\n caption={config.caption}\n excludeUris={config.excludeUris}\n includeUris={config.includeUris}\n attributesCount={config.attributesCount}\n pinnedAttributes={config.pinnedAttributes}\n />\n );\n};\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\n\nexport const SingleAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n showInactive?: boolean;\n toggleShowInactive?: (checked: boolean) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n attributeType: AttributeType;\n totalNonVisibleValues: number;\n nonVisibleValues: AttributeValue[];\n }>(null);\n\nSingleAttributeContext.displayName = 'SingleAttributeContext';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n triggerButton: {\n minWidth: 0,\n color: 'rgba(0,0,0,0.54)',\n width: '36px'\n },\n popupContent: {\n paddingTop: '19px',\n paddingBottom: '23px',\n paddingLeft: '23px',\n paddingRight: '23px',\n maxWidth: '180px',\n width: '40%'\n },\n checkboxControlRoot: {\n marginTop: '6px',\n marginLeft: '-12px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\n\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const {showInactive, toggleShowInactive} = useContext(SingleAttributeContext);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <Button ref={buttonRef} classes={{root: classnames(styles.triggerButton, className)}} onClick={togglePopup}>\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n root: styles.checkboxControlRoot,\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive}\n onChange={(e) => toggleShowInactive(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive values')}\n />\n </Popover>\n </>\n );\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 4px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n ovIcon: {\n marginTop: '2px',\n marginLeft: '5px'\n }\n}));\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {FacetViewHeader, HideOnShrink, ExpandableSearchInput, VerticalDivider, OvIcon} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport FilterButton from '../FilterButton/FilterButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n caption: string;\n totalVisibleValues: number;\n showInactiveValuesMenu: boolean;\n};\n\nexport const SingleAttributeHeader = ({caption, totalVisibleValues, showInactiveValuesMenu}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, setSearchQuery, setPage, totalNonVisibleValues, nonVisibleValues, attributeType} = useContext(\n SingleAttributeContext\n );\n\n const handleChangeSearchQuery = (query: string) => {\n setSearchQuery(query);\n setPage(0);\n };\n\n return (\n <FacetViewHeader title={i18n.text(caption)} className={styles.root}>\n <HideOnShrink widthToHide={500}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {i18n.number(totalVisibleValues)}{' '}\n {totalVisibleValues === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n </HideOnShrink>\n {\n <OvIcon\n nonOvTotal={totalNonVisibleValues}\n className={styles.ovIcon}\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n />\n }\n <ExpandableSearchInput query={searchQuery} onChange={handleChangeSearchQuery} />\n {showInactiveValuesMenu && <FilterButton />}\n </FacetViewHeader>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 -16px 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n ovFalse: theme.inactive,\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px 8px 0'\n }\n}));\n","import {equals, filter, identity, is, lensPath, omit, over, pipe, unless} from 'ramda';\nimport {\n AttributeValue,\n cleanAttributesWith,\n Entity,\n findAttributeValuesByTypeUri,\n getAttributeSource,\n getLastUriPart,\n isOv,\n Metadata,\n utils\n} from '@reltio/mdm-sdk';\n\nexport const getAttributeNameFromAttributeUri = getLastUriPart;\n\nexport const search = (value: AttributeValue['value'], searchQuery: string) => {\n switch (typeof value) {\n case 'object':\n return Object.values(value).some((value: AttributeValue[]) => {\n return value.some(({value}) => {\n return search(value, searchQuery);\n });\n });\n default:\n return utils.strings.search(String(value), searchQuery);\n }\n};\n\ntype Config = {\n metadata: Metadata;\n entity: Entity;\n attributeTypeUri: string;\n defaultMaxValues?: number;\n offset?: number;\n searchQuery?: string;\n};\n\nexport const getPagedLocalEntity = async ({\n metadata,\n entity,\n attributeTypeUri,\n defaultMaxValues = Infinity,\n offset = 0,\n searchQuery = ''\n}: Config) => {\n const values = pipe(\n findAttributeValuesByTypeUri,\n filter(({value}) => search(value, searchQuery))\n )(metadata, entity, attributeTypeUri);\n const ovValues = filter(isOv, values);\n\n return {\n [getAttributeSource(attributeTypeUri)]: {\n [getAttributeNameFromAttributeUri(attributeTypeUri)]: ovValues.slice(offset, offset + defaultMaxValues),\n paging: {\n [attributeTypeUri]: {\n totalOvValues: ovValues.length,\n totalValues: values.length\n }\n }\n }\n };\n};\n\nexport const areValuesEqual = (value1: AttributeValue, value2: AttributeValue): boolean => {\n const cleanser =\n is(Object, value1.value) || is(Object, value2.value)\n ? over(\n lensPath(['value']),\n cleanAttributesWith({\n valueTransformer: unless(isOv, omit(['value'])),\n deleteEmptyComplex: true\n })\n )\n : identity;\n return equals(cleanser(value1), cleanser(value2));\n};\n","import React, {useCallback, useContext, useRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, cond, map, pathOr, pipe, prop, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {CardinalityMessage, EditableAttribute, ErrorMessage, ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n AttributeValue,\n checkCanCreateAttribute,\n createNewAttribute,\n Entity,\n getAttributeOwnError,\n getAttributePagerActiveTypeErrorMessage,\n getAttributeSource,\n isComplexAttribute,\n isEmptyValue,\n isOv,\n isTempUri,\n AttributeItem\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport {areValuesEqual} from '../../../hooks/helpers';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n parentUri: string;\n showInactive: boolean;\n noDataText: string;\n};\n\nconst emptyArray = [];\n\nexport const SingleAttributeEditableContent = ({values, attributeType, parentUri, showInactive, noDataText}: Props) => {\n const styles = useStyles();\n\n const {uri: attributeTypeUri, required: isRequired, cardinality, name} = attributeType;\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType)\n );\n const errorMessage = useSelector((state) =>\n getAttributePagerActiveTypeErrorMessage(parentUri, attributeType, mdmModule.selectors.getProfileErrors(state))\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n const attributeSource = getAttributeSource(attributeType);\n const entityValuesUris: string[] = pipe(pathOr(emptyArray, [attributeSource, name]), map(prop('uri')))(entity);\n const modifiedEntityValues: AttributeValue[] = pathOr(emptyArray, [attributeSource, name], modifiedEntity);\n const modifiedEntityValuesUris: string[] = modifiedEntityValues.map(prop('uri'));\n const showEmptyEditors = isTempUri(entity.uri);\n\n const emptyEditorValue = useRef<AttributeValue>(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const isModifiedEntityValuesEmpty = isEmptyValue(modifiedEntityValues);\n const showEmpty = isRequired && isModifiedEntityValuesEmpty;\n\n const newValues = showEmpty\n ? [emptyEditorValue.current]\n : modifiedEntityValues.filter(pipe(prop('uri'), isTempUri));\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n const onAdd = useCallback(() => {\n const attribute: AttributeItem = {\n parentUri,\n attributeType\n };\n\n return onAddAttributes(\n showEmpty && !isComplexAttribute(attributeType.type) ? [attribute, attribute] : [attribute]\n );\n }, [onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n\n const commonProps = {\n attributeType: attributeType,\n errors,\n crosswalks: modifiedEntity.crosswalks,\n mode,\n onAddAttributes,\n onChangeAttribute,\n onDeactivateError,\n showNonOv: showInactive\n };\n const isEmptyAttributeList = newValues.length === 0 && values.length === 0;\n return (\n <div>\n <CardinalityMessage cardinality={cardinality} />\n <ErrorMessage message={errorMessage} />\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {newValues.map((value, idx) => (\n <EditableAttribute\n key={value.uri}\n {...commonProps}\n attributeValue={value}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n ownError={getAttributeOwnError(value, idx, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n />\n ))}\n {newValues.length > 0 && values.length > 0 && <Divider className={styles.divider} />}\n {values.map((originalValue) => {\n const modifiedEntityValue = modifiedEntityValues.find(propEq('uri', originalValue.uri));\n const value = modifiedEntityValue || originalValue;\n const deleted = entityValuesUris.includes(value.uri) && !modifiedEntityValuesUris.includes(value.uri);\n const edited = !deleted && modifiedEntityValue && !areValuesEqual(modifiedEntityValue, originalValue);\n const state = cond([\n [always(deleted), always('deleted')],\n [always(edited), always('edited')]\n ])();\n return (\n <div key={value.uri} className={classnames({[styles.ovFalse]: !isOv(value)})}>\n <EditableAttribute\n {...commonProps}\n attributeValue={value}\n ownError={getAttributeOwnError(value, null, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n state={state}\n />\n </div>\n );\n })}\n {isEmptyAttributeList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n ovFalse: theme.inactive\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {ReadOnlyAttribute} from '@reltio/components';\nimport {AttributeType, AttributeValue, isOv} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n showInactive: boolean;\n};\n\nexport const SingleAttributeReadableContent = ({values, attributeType, showInactive}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {values.map((value) => {\n return (\n <div key={value.uri} className={classnames({[styles.ovFalse]: !isOv(value)})}>\n <ReadOnlyAttribute\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showInactive}\n />\n </div>\n );\n })}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n },\n pagination: {\n flexGrow: 0,\n flexShrink: 0\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {PivotingAttribute} from '@reltio/mdm-sdk';\nimport {BasicView, BasicTablePagination, LinearLoadIndicator, PivotingAttributeContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeViewConfig} from '../../../../types';\nimport {SingleAttributeHeader} from '../SingleAttributeHeader/SingleAttributeHeader';\nimport {SingleAttributeEditableContent} from '../SingleAttributeEditableContent/SingleAttributeEditableContent';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {SingleAttributeReadableContent} from '../SingleAttributeReadableContent/SingleAttributeReadableContent';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const SingleAttributeView = ({config, className}: Props) => {\n const {caption, max, showInactiveValuesMenu} = config;\n\n const styles = useStyles();\n\n const {values, totalVisibleValues, page, setPage, isLoading, hasPaging, attributeType, showInactive} = useContext(\n SingleAttributeContext\n );\n\n const entityUri = useSelector(mdm.selectors.getEntityUri);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n const pivotingAttributes: PivotingAttribute[] = useSelector(mdm.selectors.getPivotingAttributes);\n\n const hasValues = values.length !== 0;\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const renderContent = () => {\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (attributeType) {\n if (isViewMode && hasValues) {\n const props = {\n values,\n attributeType,\n showInactive\n };\n return <SingleAttributeReadableContent {...props} />;\n } else if (isEditableMode) {\n const props = {\n values,\n attributeType,\n parentUri: entityUri,\n showInactive,\n noDataText\n };\n return <SingleAttributeEditableContent {...props} />;\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n\n return (\n <PivotingAttributeContext.Provider value={pivotingAttributes}>\n <BasicView className={classnames(styles.root, className)}>\n <SingleAttributeHeader\n totalVisibleValues={totalVisibleValues}\n caption={caption}\n showInactiveValuesMenu={showInactiveValuesMenu}\n />\n <Box className={styles.content}>{renderContent()}</Box>\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n page={page}\n rowsPerPage={max}\n rowsPerPageOptions={[]}\n onChangePage={setPage}\n classes={{root: styles.pagination}}\n />\n )}\n </BasicView>\n </PivotingAttributeContext.Provider>\n );\n};\n","import {useCallback, useState, useEffect, useMemo, useRef} from 'react';\nimport {ifElse, prop, always, has, pathOr, path, partition, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n isDataTenantEntity,\n getPagedEntity,\n getAttributeSource,\n AttributeValue,\n SearchFilter,\n findAttributeTypeByUri,\n isReadableAttribute,\n isTempUri,\n isOv,\n findAttributeValues,\n isFirstLevelAttributeUri\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useSafePromise, useDidUpdateEffect} from '@reltio/components';\nimport {getPagedLocalEntity, getAttributeNameFromAttributeUri} from './helpers';\nimport {SingleAttributeViewConfig} from '../../types';\n\ntype Params = {\n filters?: SearchFilter[];\n searchQuery?: string;\n sorting?: {\n field: string;\n order: string;\n };\n page: number;\n showInactive: boolean;\n};\n\nexport const useSingleAttributeLoader = (\n config: SingleAttributeViewConfig,\n params: Params,\n canShowHistoryDiff: boolean\n) => {\n const {attributeUri, max = 15} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const [values, setValues] = useState([]);\n const [paging, setPaging] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n const attributeValuesRef = useRef<AttributeValue[]>(null);\n\n const dispatch = useDispatch();\n const apiPath = useSelector(mdm.selectors.getApiPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n const entitySelector = canShowHistoryDiff ? mdm.selectors.getEntityWithDiff : mdm.selectors.getEntityWithoutDiff;\n const entity = useSelector(entitySelector);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const diff = useSelector(mdm.selectors.getHistoryDiff);\n\n const parentUri = entity.uri;\n const attributeTypeName = getAttributeNameFromAttributeUri(attributeUri);\n const attributeTypeSource = getAttributeSource(attributeUri);\n attributeValuesRef.current = findAttributeValues(entity, parentUri, attributeTypeName);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const {globalFilter} = useSelector(mdm.selectors.getGlobalSearchRequestOptions);\n const {showInactive} = params;\n const loadAttributes = useCallback(() => {\n if (\n attributeType &&\n isReadableAttribute(attributeType) &&\n !isTempUri(parentUri) &&\n isFirstLevelAttributeUri(attributeUri)\n ) {\n setIsLoading(true);\n const {page, showInactive, ...rest} = params;\n const request = isDataTenantEntity(entity) || isHistoryModeEnabled ? getPagedLocalEntity : getPagedEntity;\n safePromise(\n request({\n metadata,\n entity,\n apiPath,\n tenant,\n parentUri,\n defaultMaxValues: max,\n attributeTypeUri: attributeUri,\n offset: max * page,\n globalFilter,\n options: showInactive ? '' : undefined,\n ...rest\n })\n )\n .then((response) => {\n const attributes = path([attributeTypeSource], response);\n const values: AttributeValue[] = pathOr([], [attributeTypeName], attributes);\n if (!isHistoryModeEnabled) {\n dispatch(\n profile.actions.processNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeUri,\n attributeTypeName,\n values\n })\n );\n }\n setValues(\n values.map((loadedValue) => {\n const valueFromEntity = attributeValuesRef.current?.find(propEq('uri', loadedValue.uri));\n return valueFromEntity || loadedValue;\n })\n );\n setPaging(path(['paging', attributeUri], attributes));\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setValues([]);\n setPaging(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiPath,\n parentUri,\n tenant,\n attributeUri,\n max,\n metadata,\n params,\n globalFilter,\n attributeType,\n isHistoryModeEnabled,\n diff\n ]);\n\n useEffect(() => {\n loadAttributes();\n }, [loadAttributes]);\n\n useDidUpdateEffect(() => {\n if (isViewMode) {\n loadAttributes();\n }\n }, [isViewMode]);\n const partitionByOv = partition(isOv);\n const [, nonOvValues] = partitionByOv(attributeValuesRef.current || []);\n const nonVisibleValues = showInactive ? [] : nonOvValues;\n const totalProp = showInactive ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(values.length))(paging);\n const hasPaging = max < totalVisibleValues;\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n return {\n values,\n isLoading,\n hasPaging,\n totalVisibleValues,\n attributeType,\n totalNonVisibleValues,\n nonVisibleValues\n };\n};\n","import React from 'react';\nimport {RelationsViewState} from '../hooks/useRelationsState';\n\nexport const RelationsViewStateContext = React.createContext<RelationsViewState>(null);\n\nRelationsViewStateContext.displayName = 'RelationsViewStateContext';\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n button: {\n color: theme.palette.text.secondary,\n width: '36px',\n minWidth: '36px'\n },\n popupContent: {\n padding: `19px ${popupHorizontalPadding}`\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {DropDownEditor, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {Popover as Popover} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\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 ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport {RelationsViewStateContext} from '../../../contexts/RelationsViewStateContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const {\n showInactive,\n toggleShowInactive,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions\n } = useContext(RelationsViewStateContext);\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n const hasSortOptions = !isEmptyValue(sortOptions);\n\n const isAsc = sortOrder === 'asc';\n\n return (\n <>\n <Button\n ref={buttonRef}\n classes={{\n root: classnames(styles.button, className)\n }}\n onClick={togglePopup}\n >\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={toggleShowInactive}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n {hasSortOptions && (\n <>\n <Divider className={styles.divider} />\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={sortOptions}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortOption}\n onChange={changeSortOption}\n MenuProps={{\n getContentAnchorEl: null,\n anchorOrigin: {vertical: 'bottom', horizontal: 'left'}\n }}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </>\n )}\n </Popover>\n </>\n );\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 6px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n }\n});\n","import React from 'react';\nimport {RelationsViewConfig} from '../../../types';\n\nexport const ImportDTContext = React.createContext<{\n reloadRelations: () => void;\n config: Pick<RelationsViewConfig, 'content' | 'importFromDT' | 'maxDtssImport'>;\n }>(null);\n","import {useSelector, useDispatch} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {useCallback, useContext, useEffect, useState} from 'react';\nimport {getRequestErrorMessage, hasNonImportedRelations, importDTConnections, isTempUri} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {ImportDTContext} from '../../../../contexts/ImportDTContext';\nimport i18n from 'ui-i18n';\n\nconst MAX = Math.pow(2, 31) - 1;\ntype Tenant = {id: string; label: string};\n\nexport const useImportFromDTLoader = () => {\n const dataTenants: Array<Tenant> = useSelector(mdmModule.selectors.getDataTenants);\n const dispatch = useDispatch();\n const {config, reloadRelations} = useContext(ImportDTContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const [tenants, setTenants] = useState<Array<Tenant>>([]);\n const [selectedTenant, setSelectedTenant] = useState<Tenant>(null);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const customerTenant = useSelector(mdmModule.selectors.getTenant);\n const content = [{...config.content, offset: 0, max: config.maxDtssImport ?? MAX}];\n\n const checkHasNonImportedConnections = useCallback(() => {\n setTenants([]);\n if (config.importFromDT && !isTempUri(entityUri)) {\n Promise.all(\n (dataTenants || []).map((tenant) =>\n hasNonImportedRelations({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: tenant.id\n }).then(({hasNonImportedConnections}) => ({\n ...tenant,\n hasNonImportedConnections\n }))\n )\n )\n .then((modifiedTenants) => modifiedTenants.filter((tenant) => tenant.hasNonImportedConnections))\n .then(setTenants);\n }\n }, [entityUri, dtssPath, customerTenant, config, dataTenants]);\n\n const onConfirmImport = useCallback(() => {\n importDTConnections({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: selectedTenant.id\n })\n .then(() => {\n reloadRelations();\n checkHasNonImportedConnections();\n })\n .catch((error) =>\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))))\n );\n setSelectedTenant(null);\n }, [\n entityUri,\n dtssPath,\n customerTenant,\n config,\n checkHasNonImportedConnections,\n reloadRelations,\n selectedTenant,\n setSelectedTenant\n ]);\n\n useEffect(() => {\n checkHasNonImportedConnections();\n }, [checkHasNonImportedConnections]);\n const onCancelConfirmation = useCallback(() => setSelectedTenant(null), []);\n const onImportClick = useCallback((tenant: Tenant) => setSelectedTenant(tenant), []);\n return {\n tenants,\n selectedTenant,\n onConfirmImport,\n onCancelConfirmation,\n onImportClick\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n tenant: {\n backgroundColor: '#0000EE',\n cursor: 'pointer',\n position: 'absolute',\n top: '8px',\n left: '22px',\n width: '10px',\n height: '10px',\n color: 'white',\n fontSize: '10px',\n fontWeight: 'bold',\n userSelect: 'text',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n button: {\n position: 'relative'\n },\n badge: {\n fontSize: '10px',\n height: '14px',\n minWidth: '14px',\n width: '14px',\n fontWeight: 'bold',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px',\n top: '4px'\n }\n}));\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {Badge as Badge} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ninterface Props {\n label: number | string;\n}\n\nexport const MultipleImportIcon = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Badge\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n badgeContent={label}\n >\n <CloudDownloadIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {useImportFromDTLoader} from './hooks/useImportFromDTLoader';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {ConfirmationDialog} from '@reltio/components';\nimport {MultipleImportIcon} from './MultipleImportIcon';\n\nexport const ImportFromDT = () => {\n const {tenants, selectedTenant, onConfirmImport, onCancelConfirmation, onImportClick} = useImportFromDTLoader();\n const styles = useStyles();\n const oneTenant = tenants.length === 1;\n const labelOnButton = oneTenant\n ? tenants[0].label.indexOf('DT:') === 0\n ? tenants[0].label[3]\n : tenants[0].label[0]\n : tenants.length;\n return (\n <>\n {!!tenants.length && (\n <>\n {oneTenant ? (\n <div className={styles.button}>\n <SmallIconButtonWithTooltip\n size={'L'}\n icon={CloudDownloadIcon}\n tooltipTitle={i18n.text('Import connections from ${label}', {label: tenants[0].label})}\n onClick={() => onImportClick(tenants[0])}\n />\n <div className={classnames(styles.tenant)}>{labelOnButton}</div>\n </div>\n ) : (\n <DropDownMenuButton\n menuId={'importDT-table-actions'}\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n tooltipTitle: i18n.text('Import connections'),\n size: 'L',\n // eslint-disable-next-line react/display-name\n icon: () => <MultipleImportIcon label={labelOnButton} />\n }}\n menuItems={tenants.map((tenant) => ({\n onClick: () => {\n onImportClick(tenant);\n },\n text: tenant.label\n }))}\n />\n )}\n <ConfirmationDialog\n open={!!selectedTenant}\n title={i18n.text('Confirmation')}\n content={i18n.text('Import connections from ${label}?', {label: selectedTenant?.label})}\n discardCaption={i18n.text('Cancel')}\n saveCaption={i18n.text('Import')}\n onDiscard={onCancelConfirmation}\n onSave={onConfirmImport}\n />\n </>\n )}\n </>\n );\n};\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {ExpandableSearchInput, FacetViewHeader, HideOnShrink, VerticalDivider} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport FilterButton from './FilterButton/FilterButton';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {useStyles} from './styles';\nimport {ImportFromDT} from './ImportFromDT/ImportFromDT';\n\ntype Props = {\n title?: string;\n total?: number;\n};\n\nconst RelationsHeader = ({title, total}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, changeSearchQuery} = useContext(RelationsViewStateContext);\n\n return (\n <FacetViewHeader title={title || ''} className={styles.header}>\n {total > 0 && (\n <HideOnShrink widthToHide={400}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} items', {count: total})\n : i18n.text('${count} item', {count: total})}\n </Typography>\n </HideOnShrink>\n )}\n <ExpandableSearchInput query={searchQuery} onChange={changeSearchQuery} />\n <ImportFromDT />\n <FilterButton />\n </FacetViewHeader>\n );\n};\n\nexport default RelationsHeader;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n tooltip: theme.tooltip,\n tooltipContent: {\n minWidth: '165px',\n padding: '4px 2px 2px'\n },\n label: {\n fontSize: '11px',\n lineHeight: '13px',\n fontWeight: 500,\n margin: 0,\n color: 'white'\n },\n secondaryLabel: {\n color: 'rgba(255, 255, 255, 0.7)',\n fontSize: '10px',\n marginTop: '4px',\n fontWeight: 500,\n lineHeight: '11px'\n },\n progress: {\n marginTop: '4px',\n color: '#FFFFFF'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {isNil, ifElse} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n ConnectionEntity,\n getDataTenantEntitySecondaryLabel,\n getEntitySecondaryLabel,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useSafePromise} from '@reltio/components';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nconst PROGRESS_ICON_SIZE = 16;\n\ntype Props = {\n label: string;\n entity?: ConnectionEntity;\n children: React.ReactElement;\n};\n\nconst RelationTooltip = ({label, entity, children, ...tooltipProps}: Props) => {\n const styles = useStyles();\n const safePromise = useSafePromise();\n const tenant = useSelector(mdm.selectors.getTenant);\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const [isLoading, setIsLoading] = useState(false);\n const [secondaryLabel, setSecondaryLabel] = useState<string>(null);\n\n useEffect(() => {\n setSecondaryLabel(null);\n }, [entity]);\n\n const onOpen = useCallback(() => {\n if (entity?.entityUri && isNil(secondaryLabel)) {\n const request = ifElse(\n isDataTenantEntity,\n (entity: ConnectionEntity) =>\n getDataTenantEntitySecondaryLabel({\n entityUri: entity.entityUri,\n dataTenant: entity.dataTenant,\n customerTenant: tenant,\n dtssPath\n }),\n (entity: ConnectionEntity) => getEntitySecondaryLabel(entity.entityUri)\n );\n\n setIsLoading(true);\n safePromise(request(entity))\n .then(({secondaryLabel}) => {\n setSecondaryLabel(secondaryLabel);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [dtssPath, entity, tenant, safePromise, secondaryLabel]);\n\n const tooltipContent = (\n <div className={styles.tooltipContent}>\n <div className={styles.label}>{label}</div>\n {isLoading && <CircularProgress size={PROGRESS_ICON_SIZE} classes={{colorPrimary: styles.progress}} />}\n {secondaryLabel && <div className={styles.secondaryLabel}>{secondaryLabel}</div>}\n </div>\n );\n\n return (\n <Tooltip\n onOpen={onOpen}\n title={tooltipContent}\n disableFocusListener\n classes={{tooltip: styles.tooltip}}\n {...tooltipProps}\n >\n {children}\n </Tooltip>\n );\n};\n\nexport default RelationTooltip;\n","import {\n Connection,\n Metadata,\n getEntityType,\n getLabel,\n getEntityUriForLink,\n getRelationTypeLabelFromMetadata\n} from '@reltio/mdm-sdk';\n\nexport const useRelationInfo = (connection: Connection, metadata: Metadata) => {\n const {entity, relation} = connection;\n const entityType = getEntityType(metadata, entity?.entityType) as string;\n const entityLabel = getLabel(entity?.entityLabel) as string;\n const preparedUri = getEntityUriForLink({uri: entity?.entityUri, dataTenant: entity?.dataTenant}) as string;\n const relationLabel =\n relation?.relationLabel || (getRelationTypeLabelFromMetadata(metadata, relation?.relationType) as string);\n\n return {\n entityType,\n entityLabel,\n preparedUri,\n relationLabel\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button, {ButtonProps} from '@material-ui/core/Button';\nimport {useStyles} from './styles';\n\ntype Props = {\n acceptRelation: () => void;\n ignoreRelation: () => void;\n};\n\nexport const SuggestedButtons = ({acceptRelation, ignoreRelation, ...props}: Props & ButtonProps) => {\n const styles = useStyles();\n return (\n <div className={styles.container}>\n <Button onClick={acceptRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Accept')}\n </Button>\n <Button onClick={ignoreRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Ignore')}\n </Button>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n\n marginBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '24px',\n padding: '0 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n editButtonsContent: {\n marginLeft: 'auto',\n flex: '0 0 40px'\n },\n editButtons: {\n padding: 0\n },\n removed: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary,\n margin: '0 5px'\n }\n}));\n","import React, {memo, useCallback} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Connection, Metadata, isActiveObject, Mode, checkRemoved, checkEdited, checkIgnored} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, EntityUriLink, SmallIconButtonWithTooltip} from '@reltio/components';\nimport RelationTooltip from '../RelationTooltip/RelationTooltip';\nimport {useRelationInfo} from '../../hooks/useRelationInfo';\nimport {checkRelationPermission} from '../../helpers/permissions';\nimport {SuggestedButtons} from '../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n onRemoveRelation: (relationUri: string) => void;\n onEditRelation: (connection: Connection) => void;\n onAcceptRelation?: (connection: Connection) => void;\n onIgnoreRelation?: (connection: Connection) => void;\n metadata: Metadata;\n showControls: boolean;\n renderRelationArrowButton?: () => React.ReactNode;\n};\n\nconst EditableRelationItem = memo(\n ({\n connection,\n metadata,\n showControls,\n onRemoveRelation,\n onEditRelation,\n onAcceptRelation,\n onIgnoreRelation,\n renderRelationArrowButton\n }: Props) => {\n const styles = useStyles();\n\n const {entity, relation} = connection;\n const removed = checkRemoved(connection);\n const edited = checkEdited(connection);\n const ignored = checkIgnored(connection);\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode: Mode.Editing,\n onRemoveRelation,\n onEditRelation,\n metadata,\n connection\n });\n\n const handleRemoveRelation = useCallback(() => onRemoveRelation(connection.relation.relationUri), [\n onRemoveRelation,\n connection\n ]);\n\n const handleEditRelation = useCallback(() => onEditRelation(connection), [onEditRelation, connection]);\n\n const handleAcceptRelation = useCallback(() => {\n onAcceptRelation(connection);\n }, [onAcceptRelation, connection]);\n\n const handleIgnoreRelation = useCallback(() => onIgnoreRelation(connection), [onIgnoreRelation, connection]);\n\n const editButtonsContent =\n (canRemove || canUpdate) && showControls && !connection.suggested ? (\n <>\n {canUpdate && (\n <SmallIconButtonWithTooltip\n icon={EditIcon}\n size=\"XS\"\n onClick={handleEditRelation}\n tooltipTitle={i18n.text('Edit')}\n />\n )}\n {canRemove && (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n size=\"XS\"\n onClick={handleRemoveRelation}\n tooltipTitle={i18n.text('Remove')}\n />\n )}\n </>\n ) : undefined;\n\n const suggustedButtonsContent = connection.suggested ? (\n <SuggestedButtons\n acceptRelation={handleAcceptRelation}\n ignoreRelation={handleIgnoreRelation}\n size=\"small\"\n disabled={ignored}\n />\n ) : undefined;\n const captionText = ignored ? i18n.text('ignored') : i18n.text('edited');\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.removed]: removed || ignored}\n )}\n >\n <div className={styles.row}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {(edited || ignored) && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({captionText})\n </Typography>\n )}\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n\n <div className={styles.editButtonsContent}>{editButtonsContent}</div>\n {suggustedButtonsContent}\n </div>\n </div>\n );\n }\n);\n\nEditableRelationItem.displayName = 'EditableRelationItem';\n\nexport default EditableRelationItem;\n","import {checkMetadataForDelete, checkMetadataForUpdate, checkRemoved, getRelationType, Mode} from '@reltio/mdm-sdk';\n\nexport const checkRelationPermission = ({metadata, mode, connection, onRemoveRelation, onEditRelation}) => {\n const isEditableMode = mode === Mode.Editing || mode === Mode.Suggesting;\n if (isEditableMode && connection) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n","import {Directions, wrapInArrayIfNeeded, InOutRelation} from '@reltio/mdm-sdk';\n\nexport const getFirstRelationTypeObject = (inRelations: InOutRelation, outRelations: InOutRelation) => {\n const prepareRelation = (direction, relations) => {\n const relationsArr = relations ? wrapInArrayIfNeeded(relations) : [];\n return relationsArr.map((relation) => ({\n type: relation,\n direction: direction === Directions.IN ? Directions.IN : Directions.OUT\n }));\n };\n return prepareRelation(Directions.IN, inRelations).concat(prepareRelation(Directions.OUT, outRelations))[0];\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n arrowIcon: {\n fontSize: '16px',\n marginRight: '6px'\n }\n});\n","import React from 'react';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {checkNew, Connection} from '@reltio/mdm-sdk';\nimport {RelationsViewConfig} from '../../../../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n connection: Connection;\n config: RelationsViewConfig;\n showSecondLevel: boolean;\n};\n\nexport const RelationArrowButton = ({onClick, connection, config, showSecondLevel}: Props) => {\n const styles = useStyles();\n const {parentEntityUri} = connection;\n const {contentSecondLevel} = config;\n\n const props = {\n onClick,\n className: styles.arrowIcon\n };\n\n if (parentEntityUri || !contentSecondLevel || checkNew(connection)) {\n return null;\n }\n\n return showSecondLevel ? <ArrowDropDownIcon {...props} /> : <ArrowRightIcon {...props} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n row: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n secondLevelContent: {\n paddingLeft: '24px'\n }\n});\n","import React, {useContext, useMemo} from 'react';\nimport {Connection, ActivityFilter, getEntitiesMapForConnections} from '@reltio/mdm-sdk';\nimport {RelationsViewConfig} from '../../../../types';\nimport {useSecondLevelConnections} from '../../hooks/useSecondLevelConnections';\nimport {RelationArrowButton} from '../RelationArrowButton/RelationArrowButton';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {useStyles} from './styles';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {EntitiesMapContext} from '@reltio/components';\n\ntype Props = {\n config: RelationsViewConfig;\n connection: Connection;\n children: (render: () => React.ReactNode) => React.ReactNode;\n};\n\nexport const SecondLevelWrapper = ({config, connection, children}: Props) => {\n const styles = useStyles();\n\n const {showInactive} = useContext(RelationsViewStateContext);\n\n const {\n connections,\n showSecondLevel,\n toggleShowSecondLevel,\n loadRelations,\n loading,\n total\n } = useSecondLevelConnections({\n config,\n connection,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const renderRelationArrowButton = () => {\n return (\n <RelationArrowButton\n onClick={toggleShowSecondLevel}\n connection={connection}\n config={config}\n showSecondLevel={showSecondLevel}\n />\n );\n };\n\n return (\n <>\n {children(renderRelationArrowButton)}\n {showSecondLevel && (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.secondLevelContent}>\n <RelationsContent\n isLoading={loading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n parentEntityUri={connection.entity.entityUri}\n />\n </div>\n </EntitiesMapContext.Provider>\n )}\n </>\n );\n};\n","import {useState, useCallback} from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {Connection, getRelationsForEntity, ActivityFilter, GlobalSearchRequestOptions} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {RelationsViewConfig} from '../../../types';\n\ntype Params = {\n config: RelationsViewConfig;\n connection: Connection;\n relationActivityFilter: ActivityFilter;\n};\n\nexport const useSecondLevelConnections = ({config, connection, relationActivityFilter}: Params) => {\n const dispatch = useDispatch();\n\n const [showSecondLevel, setShowSecondLevel] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const {contentSecondLevel} = config;\n const {entity} = connection;\n\n const connections =\n (useSelector((state) =>\n mdmModule.selectors.getConnectionsWithDraftsByViewId(state, config.id, entity.entityUri)\n ) as Connection[]) || [];\n\n const total = useSelector((state) => mdmModule.selectors.getTotalByViewId(state, config.id, entity.entityUri));\n const {activityFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n\n const loadRelations = useCallback(() => {\n const requestConfig = {\n ...contentSecondLevel,\n returnObjects: true,\n returnDates: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n }\n };\n\n setLoading(true);\n\n getRelationsForEntity(entity.entityUri, [requestConfig]).then((response) => {\n const {connections, total} = response[0];\n\n if (connections) {\n dispatch(\n profile.relations.actions.secondLevelRelationsLoaded({\n connections,\n parentEntityUri: entity.entityUri,\n id: config.id,\n total\n })\n );\n }\n\n setLoading(false);\n });\n }, [config.id, contentSecondLevel, dispatch, entity.entityUri, activityFilter, relationActivityFilter]);\n\n const toggleShowSecondLevel = useCallback(() => {\n if (!showSecondLevel && !connection.connections) {\n loadRelations();\n }\n\n setShowSecondLevel((show) => !show);\n }, [loadRelations, connection.connections, showSecondLevel]);\n\n return {connections, showSecondLevel, toggleShowSecondLevel, loadRelations, loading, total};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px',\n marginLeft: '16px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 0 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, partition, evolve, always, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Connection, isTempUri, Mode, createNewConnectionWithDefaultRelationType, checkNew} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {RelationEditor} from '@reltio/components';\nimport EditableRelationItem from '../EditableRelationItem/EditableRelationItem';\nimport {RelationsViewConfig} from '../../../../types';\nimport {getFirstRelationTypeObject} from '../../helpers/relation';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n noDataText: string;\n connections: Array<Connection>;\n config: RelationsViewConfig;\n mode: Mode;\n parentEntityUri?: string;\n};\n\nconst RelationsEditableContent = ({className, connections = [], config, mode, noDataText, parentEntityUri}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationToAdd = useSelector((state) => mdmModule.selectors.getRelationToAddByViewId(state, config.id));\n const relationsToEdit = useSelector((state) => mdmModule.selectors.getRelationsToEditByViewId(state, config.id));\n const entity = useSelector(mdmModule.selectors.getEntity);\n const checkIfCanAddRelations = useSelector((state) =>\n mdmModule.selectors.getCheckIfCanAddRelations(state, config.content)\n );\n\n const dispatch = useDispatch();\n const styles = useStyles();\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({config, mode, metadata, parentEntityUri});\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n }, [config, mode, metadata, dispatch, parentEntityUri]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n dispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n dispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => profile.relations.selectors.getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = profile.relations.selectors.getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n dispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, dispatch]\n );\n const content = config.content;\n const defaultRelationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const onAcceptRelation = useCallback(\n (connection) => {\n const connectionWithDefaultRelationType = pipe(\n omit(['suggested']),\n evolve({\n relation: {\n relationType: always(defaultRelationTypeObject.type),\n object: evolve({type: always(defaultRelationTypeObject.type), attributes: always(null)})\n }\n })\n )(connection);\n dispatch(profile.relations.actions.addRelation(config.id, connectionWithDefaultRelationType));\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const onIgnoreRelation = useCallback(\n (connection) => {\n dispatch(\n profile.relations.actions.ignoreRelation(config.id, {\n relationType: defaultRelationTypeObject.type,\n relationDirection: defaultRelationTypeObject.direction,\n entityUri: connection.entity.entityUri,\n relationUri: connection.relation.relationUri\n })\n );\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const [newConnections, currentConnections] = partition(checkNew, connections);\n const canAddRelations = entity && checkIfCanAddRelations;\n\n const isEmptyRelationList = newConnections.length === 0 && currentConnections.length === 0;\n\n const getRelationEditableContent = (connection: Connection) => {\n const openedRelation = relationsToEdit.find(\n (openedRelation) => openedRelation?.relation?.relationUri === connection?.relation?.relationUri\n );\n const showControls = !config.allowOnlyCreateNew || checkNew(connection);\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n return openedRelation ? (\n <RelationEditor connection={openedRelation} config={config} mode={mode} metadata={metadata} />\n ) : (\n <EditableRelationItem\n renderRelationArrowButton={renderRelationArrowButton}\n connection={connection}\n metadata={metadata}\n showControls={showControls}\n onRemoveRelation={onRemoveRelation}\n onEditRelation={pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)}\n onAcceptRelation={onAcceptRelation}\n onIgnoreRelation={onIgnoreRelation}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n };\n\n const shouldShowAddRelationButton =\n canAddRelations && (!relationToAdd || (relationToAdd && relationToAdd.parentEntityUri === parentEntityUri));\n\n const shouldShowRelationEditorToAdd = relationToAdd && relationToAdd.parentEntityUri === parentEntityUri;\n\n return (\n <div className={className}>\n {shouldShowAddRelationButton && (\n <Button color=\"primary\" onClick={onAddRelation} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {shouldShowRelationEditorToAdd && (\n <RelationEditor connection={relationToAdd} config={config} mode={mode} metadata={metadata} />\n )}\n {newConnections.map(getRelationEditableContent)}\n {newConnections.length > 0 && currentConnections.length > 0 && <Divider className={styles.divider} />}\n {currentConnections.map(getRelationEditableContent)}\n {isEmptyRelationList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n\nexport default RelationsEditableContent;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n attributesList: {\n paddingLeft: '46px',\n paddingRight: '16px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n }\n}));\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n CollaborationObjectTypes,\n Connection,\n createRelatedObjectUris,\n Entity,\n getActivenessAttributes,\n getAttributesListForReadMode,\n getAttributeValuesUris,\n getRelationAttributesList,\n isEmptyValue,\n Metadata\n} from '@reltio/mdm-sdk';\nimport {CollaborationContext, ReadOnlyAttributesList, RelatedObjectUrisContext} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {isEmpty} from 'ramda';\n\ntype Props = {\n connection: Connection;\n className?: string;\n};\n\nexport const RelationAttributes = ({connection, className}: Props) => {\n const styles = useStyles();\n\n const {relation} = connection;\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n\n const firstLevelRelationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relation?.relationType) as AttributeType[],\n [relation?.relationType, metadata]\n );\n\n const attributeListEntity = useMemo(\n () => ({\n attributes: {\n ...profile.relations.selectors.getRelationAttributesFromConnection(connection)\n },\n ...getActivenessAttributes(connection?.relation || {})\n }),\n [connection]\n );\n\n const attributesList = useMemo(\n () => getAttributesListForReadMode(firstLevelRelationAttrTypes, attributeListEntity as Entity),\n [firstLevelRelationAttrTypes, attributeListEntity]\n );\n\n const showAttributesList = attributesList.filter(({values}) => !isEmptyValue(values)).length > 0;\n\n const objectIds = useMemo(() => getAttributeValuesUris(attributeListEntity.attributes), [attributeListEntity]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n !isEmpty(objectIds) && getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const additionalRelatedObjectUris = useMemo(\n () => createRelatedObjectUris(CollaborationObjectTypes.RELATION, {entityUri: currentEntityUri, connection}),\n [connection, currentEntityUri]\n );\n\n return showAttributesList ? (\n <RelatedObjectUrisContext.Provider value={additionalRelatedObjectUris}>\n <ReadOnlyAttributesList\n className={classnames(styles.attributesList, className)}\n entity={attributeListEntity}\n attrTypes={firstLevelRelationAttrTypes}\n />\n </RelatedObjectUrisContext.Provider>\n ) : (\n <div className={classnames(styles.attributesList, className)}>{i18n.text('No attributes')}</div>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport InfoIconSelected from '@material-ui/icons/InfoRounded';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\n\ntype Props = {\n show: boolean;\n onToggle: () => void;\n className?: string;\n};\n\nexport const ShowDetailsButton = ({show, onToggle, className}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n className={className}\n tooltipTitle={\n show\n ? i18n.text('Hide attributes of the relationship')\n : i18n.text('Show attributes of the relationship')\n }\n tooltipPlacement=\"bottom-end\"\n size=\"XXS\"\n icon={show ? InfoIconSelected : InfoIcon}\n onClick={onToggle}\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string; suggested: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '16px',\n padding: '3px 11px 3px 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n wordBreak: 'break-all',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n showDetails: {\n marginLeft: 'auto',\n paddingRight: '5px'\n },\n attributesList: {\n paddingLeft: '46px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n },\n suggestedWrapper: {\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n marginLeft: 'auto',\n alignItems: 'center',\n '& + $showDetails': {\n marginLeft: '4px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n },\n labelWrapper: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n Connection,\n Metadata,\n isActiveObject,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {useStyles} from './styles';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\n\ntype Props = {\n connection: Connection;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nconst RelationItem = memo(({connection, renderRelationArrowButton, acceptRelation, ignoreRelation}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n const {entity, relation} = connection;\n const [showDetails, setShowDetails] = useState(false);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.suggestedWrapper]: isSuggested}\n )}\n >\n <div className={classnames(styles.row, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <div className={styles.labelWrapper}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n </div>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n size=\"small\"\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetails}\n />\n )}\n </div>\n </div>\n {showDetails && <RelationAttributes connection={connection} />}\n </div>\n );\n});\n\nRelationItem.displayName = 'RelationItem';\n\nexport default RelationItem;\n","import {pluck, mean, pipe, defaultTo} from 'ramda';\nimport {Rating} from '@reltio/mdm-sdk';\n\nexport const calcAverageRating = (ratings: Rating[]) => {\n return pipe(pluck('value'), mean, defaultTo(0))(ratings);\n};\n\nexport const getCountOfLikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 5).length;\n};\n\nexport const getCountOfDislikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 1).length;\n};\n\nexport const calcWidthOfLikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfLikes(ratings) / ratings.length) * 100 + '%';\n};\n\nexport const calcWidthOfDislikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfDislikes(ratings) / ratings.length) * 100 + '%';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end'\n },\n averageRating: {\n marginBottom: '7px',\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px',\n color: theme.palette.text.primary\n },\n scale: {\n display: 'flex',\n marginBottom: '6px',\n width: '128px',\n height: '4px'\n },\n likesScale: {\n height: '100%',\n backgroundColor: '#8CC152'\n },\n dislikesScale: {\n height: '100%',\n backgroundColor: 'rgb(255, 112, 112)'\n },\n counts: {\n display: 'flex'\n },\n likesCount: {\n marginRight: '32px'\n },\n count: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n icon: {\n marginRight: '4px',\n width: '14px',\n height: '14px',\n color: 'rgba(0,0,0,0.38)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\nimport ThumbDownIcon from '@material-ui/icons/ThumbDown';\nimport {\n calcAverageRating,\n calcWidthOfDislikesScale,\n calcWidthOfLikesScale,\n getCountOfDislikes,\n getCountOfLikes\n} from '../../../helpers/ratings';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n className?: string;\n};\n\nexport const Ratings = ({ratings, className}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, className)}>\n <Typography className={styles.averageRating}>{calcAverageRating(ratings).toFixed(1)}</Typography>\n <div className={styles.scale}>\n <div className={styles.likesScale} style={{width: calcWidthOfLikesScale(ratings)}} />\n <div className={styles.dislikesScale} style={{width: calcWidthOfDislikesScale(ratings)}} />\n </div>\n <div className={styles.counts}>\n <div className={classnames(styles.likesCount, styles.count)}>\n <ThumbUpIcon className={styles.icon} />\n {getCountOfLikes(ratings)}\n </div>\n <div className={styles.count}>\n <ThumbDownIcon className={styles.icon} />\n {getCountOfDislikes(ratings)}\n </div>\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex'\n },\n button: {\n fontSize: '14px',\n textTransform: 'none',\n color: theme.palette.text.secondary\n },\n likeButton: {\n marginLeft: '-12px',\n marginRight: '8px'\n },\n isActive: {\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {DropDownMenuButton} from '@reltio/components';\nimport {Button as Button} from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n onAgree: () => void;\n onDisagree: (comment: string) => void;\n};\n\nexport const RatingsButtons = ({ratings, onAgree, onDisagree}: Props) => {\n const styles = useStyles();\n\n const username = useSelector(mdmModule.selectors.getUserName) as string;\n const ratingOfCurrentUser = ratings.find(({user}) => user === username);\n\n const menuItems = [\n {\n text: i18n.text('Has left the practice'),\n onClick: () => onDisagree(i18n.text('Has left the practice'))\n },\n {\n text: i18n.text('Has moved away'),\n onClick: () => onDisagree(i18n.text('Has moved away'))\n },\n {\n text: i18n.text('Has passed away'),\n onClick: () => onDisagree(i18n.text('Has passed away'))\n },\n {\n text: i18n.text('Has retired'),\n onClick: () => onDisagree(i18n.text('Has retired'))\n },\n {\n text: i18n.text('Other'),\n onClick: () => onDisagree(i18n.text('Other'))\n }\n ];\n\n return (\n <div className={styles.wrapper}>\n <Button\n onClick={onAgree}\n variant=\"text\"\n size=\"small\"\n className={classnames(styles.button, styles.likeButton, {\n [styles.isActive]: ratingOfCurrentUser?.value === 5\n })}\n >\n Agree\n </Button>\n <DropDownMenuButton\n buttonProps={{\n endIcon: <ArrowDropDownIcon />,\n variant: 'text',\n size: 'small',\n className: classnames(styles.button, {\n [styles.isActive]: ratingOfCurrentUser?.value === 1\n })\n }}\n buttonContent={ratingOfCurrentUser?.value === 1 ? ratingOfCurrentUser.comment : 'Disagree'}\n menuItems={menuItems}\n menuId=\"disagree-dropdown-menu-button\"\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {suggested: string}) => ({\n wrapper: {\n padding: '6px 16px 6px'\n },\n entityTypeIcon: {\n marginRight: '16px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '14px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n entityLabelContainer: {\n wordBreak: 'break-all',\n textDecoration: 'none'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n ratings: {\n marginLeft: 'auto'\n },\n showDetailsButton: {\n marginLeft: '16px',\n marginTop: '18px'\n },\n relationAttributes: {\n paddingLeft: '60px'\n },\n suggestedWrapper: {\n padding: '6px 8px 6px 16px',\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n alignSelf: 'center',\n '& + $ratings': {\n marginLeft: '16px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n }\n}));\n","import React, {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n Metadata,\n Connection,\n rateRelation,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {Ratings} from '../Ratings/Ratings';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {RatingsButtons} from '../RatingsButtons/RatingsButtons';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n loadRelations: () => void;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nexport const RelationComplexItem = ({\n connection,\n loadRelations,\n renderRelationArrowButton,\n acceptRelation,\n ignoreRelation\n}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n\n const [showDetails, setShowDetails] = useState(false);\n\n const {entity, relation} = connection;\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityLabel, entityType, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const ratings = relation?.ratings || [];\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n\n const handleAgree = () => {\n rateRelation(relation?.relationUri, {\n comment: '',\n value: 5\n }).then(loadRelations);\n };\n\n const handleDisagree = (comment: string) => {\n rateRelation(relation?.relationUri, {\n comment,\n value: 1\n }).then(loadRelations);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n\n return (\n <div className={classnames(styles.wrapper, {[styles.suggestedWrapper]: isSuggested})}>\n <Box display=\"flex\" minHeight=\"44px\" className={COMMENTS_CONTAINER_VISIBILITY_AREA}>\n <Box display=\"flex\" alignItems=\"center\">\n <Box display=\"flex\" alignItems=\"center\">\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon entityType={entityType} className={styles.entityTypeIcon} />\n </Box>\n <Box display=\"flex\" flexDirection=\"column\">\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n </EntityUriLink>\n {relationLabel && <span className={styles.relationLabel}>{relationLabel}</span>}\n {!isSuggested && (\n <RatingsButtons ratings={ratings} onAgree={handleAgree} onDisagree={handleDisagree} />\n )}\n </Box>\n </Box>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <>\n <Ratings ratings={ratings} className={styles.ratings} />\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetailsButton}\n />\n </>\n )}\n </div>\n </Box>\n {showDetails && <RelationAttributes connection={connection} className={styles.relationAttributes} />}\n </div>\n );\n};\n","import React, {useMemo, useContext, useEffect} from 'react';\nimport {Connection, getRelationshipsObjectIdsForCollaboration} from '@reltio/mdm-sdk';\nimport {CollaborationContext} from '@reltio/components';\nimport RelationItem from './RelationItem/RelationItem';\nimport {RelationComplexItem} from './RelationCompexItem/RelationComplexItem';\nimport {RelationsViewConfig} from '../../../../types';\nimport {useSuggestedRelations} from '../../hooks/useSuggestedRelations';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\n\ntype Props = {\n className?: string;\n connections: Array<Connection>;\n loadRelations: () => void;\n config?: RelationsViewConfig;\n mainEnityUri?: string;\n};\n\nconst RelationsList = ({className, connections = [], loadRelations, config, mainEnityUri}: Props) => {\n const {isComplex, content} = config;\n const {ignoreRelation, acceptRelation} = useSuggestedRelations(content, loadRelations, mainEnityUri);\n\n const objectIds = useMemo(() => {\n return getRelationshipsObjectIdsForCollaboration(connections);\n }, [connections]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n return (\n <div className={className}>\n {connections.map((connection) => {\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n if (isComplex) {\n return (\n <RelationComplexItem\n loadRelations={loadRelations}\n connection={connection}\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }\n\n return (\n <RelationItem\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n connection={connection}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n })}\n </div>\n );\n};\n\nRelationsList.displayName = 'RelationsList';\n\nexport default RelationsList;\n","import {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Connection, ignoreSuggestedRelation, createRelation, getRequestErrorMessage, Directions} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {getFirstRelationTypeObject} from '../helpers/relation';\nimport {RelationsContent} from '../../../types';\n\nexport const useSuggestedRelations = (content: RelationsContent, loadRelations: () => void, mainEnityUri: string) => {\n const relationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const dispatch = useDispatch();\n const ignoreRelation = (connection: Connection) => () => {\n const {entity} = connection;\n ignoreSuggestedRelation(mainEnityUri, {\n relatedEntityUri: entity.entityUri,\n relationType: relationTypeObject.type,\n relationDirection: relationTypeObject.direction\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n const acceptRelation = (connection: Connection) => () => {\n const {entity, relation} = connection;\n const {startDate, endDate} = relation;\n const isInDirection = relationTypeObject.direction === Directions.IN;\n const startEntityUri = isInDirection ? entity.entityUri : mainEnityUri;\n const endEntityUri = isInDirection ? mainEnityUri : entity.entityUri;\n createRelation({\n startEntityUri,\n endEntityUri,\n relationType: relationTypeObject.type,\n attributes: null,\n startDate,\n endDate\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n return {\n ignoreRelation,\n acceptRelation\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n list: {\n paddingTop: '8px',\n paddingBottom: '10px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {isEditableMode, Connection} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport RelationsEditableContent from '../RelationsEditableContent/RelationsEditableContent';\nimport RelationsList from '../RelationsList/RelationsList';\nimport {RelationsViewConfig} from '../../../../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n isLoading: boolean;\n config: RelationsViewConfig;\n loadRelations: () => void;\n connections: Connection[];\n total: number;\n parentEntityUri?: string;\n};\n\nexport const RelationsContent = ({isLoading, config, loadRelations, connections, total, parentEntityUri}: Props) => {\n const styles = useStyles();\n\n const {selectors} = mdmModule;\n const entity = useSelector(selectors.getEntity);\n const mode = useSelector(selectors.getMode);\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (isEditableMode(mode)) {\n return (\n <RelationsEditableContent\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n config={config}\n mode={mode}\n noDataText={noDataText}\n parentEntityUri={parentEntityUri}\n />\n );\n }\n\n if (total > 0) {\n return (\n <RelationsList\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n mainEnityUri={entity.uri}\n />\n );\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0\n },\n content: {\n position: 'relative',\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: 0\n },\n pagination: {\n height: '52px',\n flexGrow: 0,\n flexShrink: 0\n }\n});\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {ActivityFilter, Connection, getEntitiesMapForConnections} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, EntitiesMapContext, useRelationsLoader} from '@reltio/components';\nimport RelationsHeader from '../RelationsHeader/RelationsHeader';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {ImportDTContext} from '../../contexts/ImportDTContext';\nimport {RelationsViewConfig} from '../../../../types';\nimport {buildRelationsFilter} from '../../helpers/filters';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {pick} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationsViewConfig;\n className?: string;\n};\n\nconst RelationsView = ({config, className}: Props) => {\n const styles = useStyles();\n\n const {\n page,\n setPage,\n rowsPerPage,\n sortOrder,\n sortOption,\n showInactive,\n searchQuery,\n changeSearchQuery\n } = useContext(RelationsViewStateContext);\n const {selectors} = mdmModule;\n const connections = useSelector((state) =>\n selectors.getConnectionsWithDraftsByViewId(state, config.id)\n ) as Connection[];\n const entity = useSelector(selectors.getEntity);\n const total = useSelector((state) => selectors.getTotalByViewId(state, config.id));\n const mode = useSelector(selectors.getMode);\n const sorting = useMemo(\n () => ({\n order: sortOrder,\n field: sortOption\n }),\n [sortOrder, sortOption]\n );\n\n useEffect(() => {\n changeSearchQuery('');\n }, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const filter = useMemo(() => buildRelationsFilter(searchQuery), [searchQuery]);\n\n const {isLoading, reload: loadRelations} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const importDTContextValue = useMemo(\n () => ({\n reloadRelations: loadRelations,\n config: pick(['content', 'importFromDT', 'maxDtssImport'], config)\n }),\n [loadRelations, config]\n );\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={className}>\n <div className={styles.container}>\n <ImportDTContext.Provider value={importDTContextValue}>\n <RelationsHeader title={config.caption} total={total} />\n </ImportDTContext.Provider>\n <div className={styles.content}>\n <RelationsContent\n isLoading={isLoading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n />\n {total > rowsPerPage && (\n <BasicTablePagination\n classes={{root: styles.pagination}}\n count={total}\n rowsPerPageOptions={[]}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n />\n )}\n </div>\n </div>\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n\nRelationsView.displayName = 'RelationsView';\n\nexport {RelationsView};\n","import {FilterBuilder, Maybe, filterValueToQueryStringWithQuotes} from '@reltio/mdm-sdk';\n\nconst buildRelationsFilter = (searchQuery) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n return new FilterBuilder().addClause(queryClause).build();\n};\n\nexport {buildRelationsFilter};\n","import {useCallback, useMemo, useState} from 'react';\nimport {RelationsViewConfig, SortOrder} from '../../../types';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Option = {\n value: string;\n label: string;\n};\n\nexport type RelationsViewState = {\n searchQuery: string;\n changeSearchQuery: (value: string) => void;\n sortOrder: SortOrder;\n toggleSortOrder: () => void;\n sortOption?: string;\n changeSortOption: (option: string) => void;\n sortOptions: Option[];\n page: number;\n setPage: (page: number) => void;\n rowsPerPage: number;\n showInactive: boolean;\n toggleShowInactive: () => void;\n};\n\nconst useRelationsState = (config: RelationsViewConfig): RelationsViewState => {\n const sortOptions = useMemo(\n () =>\n Object.entries(config.sortOptions || {}).map(([key, value]) => ({\n value: key,\n label: value\n })),\n [config.sortOptions]\n );\n\n const rowsPerPage = config.max || DEFAULT_ROWS_PER_PAGE;\n const [page, setPage] = useState(0);\n const [sortOrder, setSortOrder] = useState(config.sortOrder || DEFAULT_SORT_ORDER);\n const [sortOption, setSortOption] = useState(sortOptions[0]?.value);\n const [searchQuery, setSearchQuery] = useState('');\n const [showInactive, setShowInactive] = useState(DEFAULT_SHOW_INACTIVE);\n\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n const toggleSortOrder = useCallback(() => {\n setPage(0);\n setSortOrder((order) => {\n return order === 'asc' ? 'desc' : 'asc';\n });\n }, []);\n\n const changeSortOption = useCallback((option: string) => {\n setPage(0);\n setSortOption(option);\n }, []);\n\n const changeSearchQuery = useCallback((value: string) => {\n setPage(0);\n setSearchQuery(value);\n }, []);\n\n return {\n searchQuery,\n changeSearchQuery,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions,\n page,\n setPage,\n rowsPerPage,\n showInactive,\n toggleShowInactive\n };\n};\n\nexport default useRelationsState;\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\n\nexport const TableAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n visibleColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n onToggleFilters: () => void;\n onSort: (payload) => void;\n onFilter: (payload) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n showTable: boolean;\n filters: {\n [key: string]: {\n filter: string;\n values: [string];\n };\n };\n sorting: {\n order: 'desc' | 'asc';\n field: string;\n };\n attributeType: AttributeType;\n }>(null);\n\nTableAttributeContext.displayName = 'SingleAttributeContext';\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles(() => ({\n tableContainer: {\n height: '477px',\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > div': removedStyle\n }\n}));\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import {pipe, assoc, reduce, split, slice, map, path, uniqBy, prop} from 'ramda';\nimport {\n getReadableAttributesList,\n getOvAttributeValuesByPath,\n getAttrDataTypeDefinition,\n attributeUriToSearchUri,\n isAttributeSearchUri\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from '../components/AttributeTable/HeadCellRenderer';\nimport {DefaultCellValueRenderer} from '@reltio/components';\n\nexport const getColumnsDataFromAttributes = pipe(\n map((attr) => ({\n id: attributeUriToSearchUri(attr.uri),\n label: attr.label,\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n })),\n uniqBy(prop('id'))\n);\n\nexport const getColumnsData = pipe(getReadableAttributesList, getColumnsDataFromAttributes);\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getAttributeValues = (attrPath, value) => pipe(path(['value']), getOvAttributeValuesByPath(attrPath))(value);\n\nconst getRowValueByColumnId = (columnId, value) => {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getAttributeValues(attrPath, value);\n};\n\nexport const getBasicTableRowsData = (values, columnsData) =>\n values.map((value) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, value), acc), {}),\n assoc('value', value)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (isAttributeSearchUri(columnId)) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: DefaultCellValueRenderer\n});\n\nexport const getBasicTableColumnsData = map(getColumnDataByColumnId);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 4px 0 16px'\n }\n}));\n","import React from 'react';\nimport {\n FacetViewHeader,\n ColumnsSettings,\n FilterButton,\n VerticalDivider,\n ExpandableSearchInput\n} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {ColumnsDataType} from '../types';\n\ntype Props = {\n title: string;\n total: number;\n columnsData: ColumnsDataType;\n selectedColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n searchQuery: string;\n onChangeSearchQuery: (val: string) => void;\n filtersEnabled: boolean;\n onToggleFilters: () => void;\n};\nconst AttributeTableHeader = ({\n title,\n searchQuery,\n onChangeSearchQuery,\n filtersEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n onChangeColumns\n}: Props) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </FacetViewHeader>\n );\n};\n\nexport default AttributeTableHeader;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {withTableContext} from '@reltio/components';\n\ntype Props = {\n cell: {values: string[]};\n isSorted: boolean;\n CellValueRenderer: React.ElementType;\n isRemoved: boolean;\n};\nconst RowCellRenderer = ({cell, CellValueRenderer, isRemoved, isSorted, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({deletedUris}, {rowValue: {value}}) => ({\n isRemoved: Boolean(deletedUris.find((uri) => value.uri === uri))\n}))(RowCellRenderer);\n","import React from 'react';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\ntype Props = {\n onEdit?: () => void;\n onRemove?: () => void;\n};\n\nexport const EditButtons = ({onEdit, onRemove}: Props) => (\n <>\n {onEdit && (\n <SmallIconButtonWithTooltip tooltipTitle={i18n.text('Edit')} icon={EditIcon} size=\"L\" onClick={onEdit} />\n )}\n {onRemove && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Remove')}\n icon={DeleteIcon}\n size=\"L\"\n onClick={onRemove}\n />\n )}\n </>\n);\n\nexport default EditButtons;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport RowCellRenderer from './RowCellRenderer';\nimport {BasicTable, useConfigPermissions} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from '../../helpers/tableAttributeHelpers';\nimport {useStyles} from './styles';\nimport {\n AttributeValue,\n checkCanEditAttribute,\n checkCanDeleteAttribute,\n SearchFilter,\n isReltioCrosswalk,\n Entity,\n isEditableMode as checkIsEditableMode,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../types';\nimport EditButtons from './EditButtons';\nimport {useSelector} from 'react-redux';\nimport {path, prop, pipe} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {SingleAttributeViewConfig} from '../../../../types';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n columnsData: ColumnsDataType;\n values: AttributeValue[];\n filters?: {\n [key: string]: SearchFilter;\n };\n onFilter?: (payload) => void;\n sorting?:\n | {\n field: string;\n order: string;\n }\n | undefined;\n onSort?: (payload) => void;\n config: SingleAttributeViewConfig;\n onEdit: React.Dispatch<AttributeValue>;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n deletedUris: string[];\n};\n\nconst AttributeTable = ({\n columnsData,\n values,\n sorting,\n onSort,\n filters,\n onFilter,\n config,\n onEdit,\n onDeleteAttribute,\n deletedUris\n}: Props) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(values, columnsData), [values, columnsData]);\n\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const {attributeType} = useContext(TableAttributeContext);\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n\n const {canUpdate, canDelete} = useConfigPermissions();\n\n const checkCanEdit = (attributeValue: AttributeValue) =>\n canUpdate(config) &&\n checkCanEditAttribute({\n attributeType,\n mode,\n attributeValue,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n const checkCanRemove = (attributeValue: AttributeValue) =>\n canDelete(config) &&\n checkCanDeleteAttribute({\n attributeType,\n mode,\n attributeValue,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n\n const hideRightContent = useMemo(\n () =>\n typeof hoverRowIndex === 'number' && isEditableMode\n ? deletedUris.includes(pipe(path([hoverRowIndex]), prop('uri'))(values))\n : true,\n [hoverRowIndex, deletedUris, values, isEditableMode]\n );\n const canRemove = typeof hoverRowIndex === 'number' && checkCanRemove(path([hoverRowIndex], values));\n const canEdit = typeof hoverRowIndex === 'number' && checkCanEdit(path([hoverRowIndex], values));\n\n const handleEditAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canEdit) return;\n onEdit(attributeValue);\n }, [onEdit, hoverRowIndex, values, canEdit]);\n\n const handleRemoveAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canRemove) return;\n const attribute: AttributeItem = {\n parentUri: entityUri,\n attributeType,\n uri: attributeValue.uri,\n value: attributeValue\n };\n onDeleteAttribute(attribute);\n setHoverRowIndex(null);\n }, [hoverRowIndex, values, onDeleteAttribute, canRemove, attributeType, entityUri]);\n\n const hoveredRowRightContent =\n !hideRightContent && (canRemove || canEdit) ? (\n <EditButtons\n onEdit={canEdit ? handleEditAttribute : undefined}\n onRemove={canRemove ? handleRemoveAttribute : undefined}\n />\n ) : undefined;\n const context = useMemo(() => ({deletedUris}), [deletedUris]);\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n renderRowCell={renderRowCell}\n onRowHover={setHoverRowIndex}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n context={context}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n />\n </div>\n );\n};\n\nexport default AttributeTable;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\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 {Button as Button} from '@material-ui/core';\nimport React, {useCallback, useContext} from 'react';\nimport {useStyles} from './styles';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {AttributeValue, Entity, isTempUri, getAttributeOwnError, AttributeItem} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {EditableAttribute, ViewIdContext} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n hasChanges: boolean;\n onChangeAttribute: (attribute: AttributeItem) => void;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n onCancel: (attributeValue: AttributeValue) => void;\n onApply: (attributeValue: AttributeValue) => void;\n attributeValue: AttributeValue;\n};\n\nexport const AttributeEditing = ({\n onChangeAttribute,\n onCancel,\n onApply,\n onDeleteAttribute,\n hasChanges,\n attributeValue\n}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {attributeType} = useContext(TableAttributeContext);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const showEmptyEditors = isTempUri(entityUri);\n\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, entityUri, attributeType)\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n return (\n <>\n <EditableAttribute\n expanded\n attributeValue={attributeValue}\n showEmptyEditors={showEmptyEditors}\n onDeleteAttribute={onDeleteAttribute}\n onDeactivateError={onDeactivateError}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n mode={mode}\n crosswalks={modifiedEntity.crosswalks}\n errors={errors}\n attributeType={attributeType}\n ownError={getAttributeOwnError(attributeValue, null, attributeType.uri, errors)}\n />\n <div className={styles.actionButtons}>\n <Button\n onClick={() => {\n onCancel(attributeValue);\n }}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n color=\"primary\"\n disabled={!hasChanges}\n onClick={() => {\n onApply(attributeValue);\n }}\n >\n {i18n.text('Apply')}\n </Button>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n flex: 1,\n overflow: 'auto'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n\n tableContainer: {\n height: '477px',\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n header: {\n padding: '0 4px 0 16px'\n },\n\n addButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n padding: '4px 16px'\n }\n}));\n","import {useCallback, useContext, useState, useMemo, useEffect} from 'react';\nimport {\n AttributeValue,\n createNewAttribute,\n Entity,\n getAttributeSource,\n isEditableMode as checkIsEditableMode,\n NestedAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, pathOr, pipe, map, prop, equals, both, not, without, filter} from 'ramda';\nimport {TableAttributeContext} from '../../../contexts/TableAttributeContext';\nimport {isTempUri, createDefaultValues} from '@reltio/mdm-sdk';\n\nconst emptyArray = [];\n\nexport const useEditableAttribute = () => {\n const [newAttributeUri, setNewAttributeUri] = useState<string>();\n const [originalValues, setOriginalValues] = useState<AttributeValue[]>([]);\n const mode = useSelector(mdmModule.selectors.getMode);\n\n useEffect(() => {\n setOriginalValues([]);\n setNewAttributeUri(null);\n }, [mode]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const {attributeType, values} = useContext(TableAttributeContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => {\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n },\n [viewId, dispatch]\n );\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onAdd = useCallback(() => {\n const newAttribute = createNewAttribute({\n parentUri: entityUri,\n attributeType\n });\n setNewAttributeUri(newAttribute.uri);\n onChangeAttribute({\n ...newAttribute,\n value: createDefaultValues({\n attributeTypes: attributeType.attributes,\n parentUri: newAttribute.uri,\n mode,\n metadata\n }),\n attributeType\n });\n }, [entityUri, attributeType]);\n\n const onStartEditing = useCallback(\n (attributeValue: AttributeValue) => {\n setOriginalValues((prev) => {\n if (!prev.find(propEq('uri', attributeValue.uri))) {\n return [...prev, attributeValue];\n }\n return prev;\n });\n },\n [setOriginalValues]\n );\n\n const onCancel = useCallback(\n (attributeValue: AttributeValue) => {\n const editingValueOriginal = originalValues.find(propEq('uri', attributeValue.uri));\n if (editingValueOriginal) {\n const attributeItem = {\n ...attributeValue,\n value: editingValueOriginal,\n attributeType,\n uri: attributeValue.uri\n };\n setOriginalValues((prev) => without([editingValueOriginal], prev));\n onChangeAttribute(attributeItem);\n } else {\n const attributeItem = {\n value: attributeValue,\n attributeType,\n uri: attributeValue.uri\n };\n setNewAttributeUri(null);\n onDeleteAttribute(attributeItem);\n }\n },\n [onDeleteAttribute, onChangeAttribute, setOriginalValues, originalValues]\n );\n\n const onApply = useCallback(\n (attributeValue: AttributeValue) => {\n setNewAttributeUri(null);\n setOriginalValues((prev) => {\n const original = prev.find(propEq('uri', attributeValue.uri));\n return original ? without([original], prev) : prev;\n });\n },\n [setOriginalValues, setNewAttributeUri]\n );\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const isEditableMode = checkIsEditableMode(mode);\n const attributeSource = getAttributeSource(attributeType);\n\n const modifiedEntityValues: NestedAttributeValue[] = pathOr(\n emptyArray,\n [attributeSource, attributeType?.name],\n modifiedEntity\n );\n\n const modifiedValues = useMemo(() => {\n const newValues = modifiedEntityValues.filter(\n pipe(prop('uri'), both(isTempUri, pipe(equals(newAttributeUri), not)))\n );\n\n const oldValues = map(\n (originalValue) => modifiedEntityValues.find(propEq('uri', originalValue.uri)) || originalValue\n )(values);\n return [...newValues, ...oldValues].map((value) => originalValues.find(propEq('uri', value.uri)) ?? value);\n }, [modifiedEntityValues, originalValues, newAttributeUri, values]);\n\n const deletedUris = useMemo(\n () =>\n isEditableMode\n ? pipe(\n map(prop('uri')),\n filter((uri) => !modifiedEntityValues.find(propEq('uri', uri)))\n )(values)\n : [],\n [modifiedEntityValues, values]\n );\n\n const editingValues = modifiedEntityValues.filter(\n ({uri}) => uri === newAttributeUri || originalValues.find(propEq('uri', uri))\n );\n\n const checkHasChanges = (value) => originalValues.find(propEq('uri', value.uri)) !== value;\n\n return {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n };\n};\n","import React, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n BasicView,\n BasicTablePagination,\n LinearLoadIndicator,\n FacetViewHeader,\n useConfigPermissions\n} from '@reltio/components';\nimport {SingleAttributeViewConfig} from '../../../../types';\nimport {propEq} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport AttributeTableHeader from '../AttributeTableHeader/AttributeTableHeader';\nimport AttributeTable from '../AttributeTable/AttributeTable';\nimport {getColumnsData} from '../../helpers/tableAttributeHelpers';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {AttributeEditing} from '../AttributeEditing/AttributeEditing';\n\nimport {useStyles} from './styles';\nimport {checkCanCreateAttribute, isEditableMode as checkIsEditableMode} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useEditableAttribute} from './hooks/useEditableAttribute';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const TableAttributeView = ({config, className}: Props) => {\n const {caption, max} = config;\n const styles = useStyles();\n\n const {\n values,\n page,\n setPage,\n isLoading,\n searchQuery,\n setSearchQuery,\n visibleColumns,\n onFilter,\n onSort,\n onToggleFilters,\n onChangeColumns,\n filters,\n sorting,\n totalVisibleValues,\n hasPaging,\n attributeType,\n showTable\n } = useContext(TableAttributeContext);\n\n const allColumnsData = useMemo(() => getColumnsData(attributeType), [attributeType]);\n\n const {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n } = useEditableAttribute();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n\n const preparedValues = isEditableMode ? modifiedValues : values;\n\n const {canCreate: hasConfigToCreate} = useConfigPermissions();\n\n const canCreate =\n hasConfigToCreate(config) &&\n attributeType &&\n checkCanCreateAttribute({attributeType, mode}) &&\n !editingValues.length;\n\n const visibleColumnsData = useMemo(() => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))), [\n visibleColumns,\n allColumnsData\n ]);\n\n return (\n <BasicView className={classnames(styles.root, className)}>\n {showTable ? (\n <>\n <AttributeTableHeader\n title={caption}\n total={totalVisibleValues}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n searchQuery={searchQuery}\n onChangeSearchQuery={setSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={onToggleFilters}\n />\n <div style={{position: 'relative'}}>\n {isEditableMode && (\n <div className={styles.editor}>\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.addButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {editingValues.map((value) => (\n <AttributeEditing\n key={value.uri}\n attributeValue={value}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n onCancel={onCancel}\n onApply={onApply}\n hasChanges={checkHasChanges(value)}\n />\n ))}\n </div>\n )}\n <AttributeTable\n columnsData={visibleColumnsData}\n config={config}\n values={preparedValues}\n filters={filters}\n onFilter={onFilter}\n sorting={sorting}\n onSort={onSort}\n onEdit={onStartEditing}\n onDeleteAttribute={onDeleteAttribute}\n deletedUris={deletedUris}\n />\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n rowsPerPageOptions={[]}\n rowsPerPage={max}\n page={page}\n onChangePage={setPage}\n />\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </>\n ) : (\n <>\n <FacetViewHeader title={caption} className={styles.header} />\n <Typography className={styles.noData}>{i18n.text('No data')}</Typography>\n </>\n )}\n </BasicView>\n );\n};\n","import {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {pick, prop} from 'ramda';\nimport {Entity, getPathsTree, isTempUri, updateTreesWithNewEntity} from '@reltio/mdm-sdk';\nimport {useDidUpdateEffect, useSafePromise} from '@reltio/components';\nimport {Response, Node} from '../types';\n\nlet nodeCounter = 0;\nexport const generateId = () => nodeCounter++;\n\nconst processResponse = (response: Response) => {\n const fakeRoot = {\n children: [] as Node[],\n nodeId: generateId()\n };\n if (response.parentPaths) {\n for (let i = 0; i < response.parentPaths.length; i++) {\n const path = response.parentPaths[i];\n let nextRoot = fakeRoot;\n for (let j = path.length - 1; j >= 0; j--) {\n const nextParent = path[j];\n const entity = response.entities[nextParent.entityUri];\n const isRoot = j === path.length - 1;\n const node: Node = {\n entity,\n children: [],\n nodeId: generateId(),\n expanded: true,\n rootIndex: isRoot ? i + 1 : undefined\n };\n if (isRoot) {\n node.root = isRoot;\n }\n nextRoot.children.push(node);\n nextRoot = node;\n }\n }\n }\n return fakeRoot.children;\n};\nexport const useLoadPaths = (entityUri: string, graphUri: string) => {\n const safePromise = useSafePromise();\n const [treeData, setTreeData] = useState<Node[]>([]);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n useDidUpdateEffect(() => {\n const forest = treeData\n .map((tree, index) => ({tree, index}))\n .reduce((acc, tree) => ({...acc, [tree.index]: {root: tree.tree}}), {});\n const newTrees = updateTreesWithNewEntity(pick(['uri', 'label', 'secondaryLabel', 'type'], entity), forest);\n setTreeData(newTrees.map(prop('root')));\n }, [entity?.updatedTime]);\n useEffect(() => {\n if (!isTempUri(entityUri)) {\n safePromise(getPathsTree({uri: entityUri, graphUri}))\n .then(processResponse)\n .then(setTreeData)\n .catch((e) => {\n console.warn(e);\n });\n }\n return () => {\n setTreeData([]);\n };\n }, [entityUri, graphUri, safePromise]);\n return {treeData, setTreeData};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n minHeight: '15px',\n color: theme.palette.secondary.main,\n lineHeight: '15px'\n },\n link: {\n cursor: 'pointer',\n color: theme.palette.secondary.main,\n lineHeight: '15px'\n },\n selected: {\n fontWeight: 'bold'\n },\n wrapper: {\n width: '100%'\n },\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '8px',\n marginLeft: '8px'\n },\n header: {\n padding: '0 4px 0 16px'\n },\n treeContainer: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n minHeight: '372px',\n maxHeight: '507px',\n overflow: 'auto'\n },\n tree: {\n flexGrow: 1,\n height: 0\n },\n buttonsContainer: {\n flexShrink: 0,\n marginLeft: 'auto',\n '& > * + *': {\n marginLeft: '-4px'\n }\n },\n button: {\n padding: '8px'\n }\n}));\n","import React from 'react';\nimport {HierarchyPathsViewConfig} from '../../types';\n\nexport const ConfigContext = React.createContext<HierarchyPathsViewConfig>(null);\n","import React, {memo, useCallback, useContext} from 'react';\nimport classnames from 'classnames';\nimport {Avatar as Avatar} from '@material-ui/core';\nimport {useStyles} from './styles';\nimport DEFAULT_ICON from './defaultTypeIcon.png';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdm, {ui} from '@reltio/mdm-module';\nimport {ConfigContext} from './ConfigContext';\nimport {getAbsoluteImageUrl, getEntityType, getPropWithInheritance, getEntityLink} from '@reltio/mdm-sdk';\nimport {Link} from '@reltio/components';\nimport {Node as NodeType} from './types';\n\nconst onImageLoadFail = (e) => {\n e.target.src = DEFAULT_ICON;\n};\n\ntype Props = {\n node?: NodeType;\n};\n\nexport const Node = ({node}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const uri = node.entity.uri;\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const config = useContext(ConfigContext);\n const uiPath = useSelector(mdm.selectors.getUIPath);\n const {uri: currentEntityUri} = useSelector(mdm.selectors.getEntity);\n const entityLink = getEntityLink({uiPath, uri});\n const isSelected = uri === currentEntityUri;\n const onTitleClick = useCallback(() => {\n dispatch(ui.actions.openEntity({uri, viewId: config.id}));\n }, [dispatch, config, uri]);\n const {\n entity: {label: title},\n nodeId\n } = node;\n const entityType = getEntityType(metadata, node.entity.type) || {};\n const entityTypeGraphIcon = getPropWithInheritance(metadata, entityType, 'typeGraphIcon');\n const icon = entityTypeGraphIcon && getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n return (\n <div className={styles.wrapper} data-node-id={nodeId}>\n <div className={styles.container}>\n <Avatar className={classnames(styles.avatar)} src={icon || DEFAULT_ICON} onError={onImageLoadFail} />\n <span className={classnames(styles.link, {[styles.selected]: isSelected})}>\n <Link to={entityLink} onClick={onTitleClick}>\n {title}\n </Link>\n </span>\n </div>\n </div>\n );\n};\n\nexport default memo(Node);\n","export const getNodeKey = ({node}) => node.nodeId;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n lineBlock: {\n height: '100%',\n position: 'relative',\n display: 'inline-block'\n },\n lineChildren: {\n height: '100%',\n position: 'absolute',\n display: 'inline-block'\n },\n rootIndex: {\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.54)',\n height: '100%'\n },\n verticalLine: {\n width: '1px',\n left: '50%',\n top: 0,\n height: '50%',\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n horizontalLineRight: {\n height: '1px',\n top: '14px',\n left: '50%',\n width: '24%',\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n node: {\n minWidth: '100%',\n position: 'relative',\n textAlign: 'left',\n padding: '0 24px 0 18px',\n boxSizing: 'border-box',\n whiteSpace: 'normal',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)'\n }\n },\n nodeContent: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n paddingLeft: '18px',\n boxSizing: 'border-box'\n },\n row: {\n display: 'flex'\n },\n rowContents: {\n position: 'relative',\n borderLeft: 'none',\n paddingLeft: '4px',\n flex: '1 1 auto',\n width: 0,\n display: 'flex',\n verticalAlign: 'middle',\n boxSizing: 'border-box'\n },\n buttonWrapper: {\n display: 'flex',\n paddingTop: '13px',\n width: '12px',\n cursor: 'pointer'\n },\n collapsedButton: {\n transform: 'rotate(-90deg)'\n },\n expandedButton: {\n transform: 'rotate(0deg)'\n },\n button: {\n transition: 'transform .15s ease',\n width: 0,\n height: 0,\n borderLeft: '4px solid transparent',\n borderRight: '4px solid transparent',\n borderTop: '4px solid rgba(0, 0, 0, 0.54)'\n },\n rowTitle: {\n flex: '1 1 auto',\n width: 0,\n paddingRight: '11px'\n }\n}));\n","import React from 'react';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\nimport {omit} from 'ramda';\nimport {Node} from '../types';\n\ntype Props = {\n treeIndex: number;\n scaffoldBlockPxWidth: number;\n node: Node;\n path: Array<string | number>;\n style?: Record<string, unknown>;\n title: React.ReactElement;\n toggleChildrenVisibility: (props) => void;\n};\n\nconst NodeRendererDefault = (props: Props) => {\n const {scaffoldBlockPxWidth, toggleChildrenVisibility, node, title, path, treeIndex, style, ...otherProps} = omit(\n [\n 'connectDragPreview',\n 'connectDragSource',\n 'isDragging',\n 'canDrop',\n 'canDrag',\n 'draggedNode',\n 'isSearchMatch',\n 'isSearchFocus',\n 'buttons',\n 'didDrop',\n 'children',\n 'treeId',\n 'isOver',\n 'parentNode',\n 'rowDirection'\n ],\n props\n );\n const nodeTitle = title;\n\n const showToggleChildrenButton =\n toggleChildrenVisibility && !node.root && node.children && node.children.length > 0;\n\n const onToggle = () => {\n toggleChildrenVisibility({\n node,\n path,\n treeIndex\n });\n };\n const styles = useStyles();\n return (\n <div style={{height: '100%'}} {...otherProps} key={node.nodeId}>\n {showToggleChildrenButton && node.expanded && (\n <div style={{width: scaffoldBlockPxWidth - 2}} className={styles.lineChildren} />\n )}\n <div className={styles.row} style={style}>\n <div className={styles.rowContents}>\n {showToggleChildrenButton && (\n <div className={styles.buttonWrapper} onClick={onToggle}>\n <div\n aria-label={node.expanded ? 'Collapse' : 'Expand'}\n className={classnames(\n styles.button,\n node.expanded ? styles.expandedButton : styles.collapsedButton\n )}\n />\n </div>\n )}\n <div className={styles.rowTitle}>\n {typeof nodeTitle === 'function'\n ? nodeTitle({\n node,\n path,\n treeIndex\n })\n : nodeTitle}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default NodeRendererDefault;\n","import treeNodeRenderer from './tree-node-data-renderer';\nimport nodeContentRenderer from './node-content-renderer';\n\nconst scaffoldBlockPxWidth = 16;\nconst rowHeight = 28;\nconst slideRegionSize = 50;\n\nexport const theme = {nodeContentRenderer, treeNodeRenderer, scaffoldBlockPxWidth, rowHeight, slideRegionSize};\n","import React from 'react';\nimport {useStyles} from './styles';\nimport {omit} from 'ramda';\nimport {Node} from '../types';\n\nconst MIN_NODE_CONTENT_WIDTH = 250;\n\ntype Props = {\n scaffoldBlockPxWidth: number;\n lowerSiblingCounts: number[];\n\n node: Node;\n children: React.ReactElement;\n style?: Record<string, unknown>;\n};\n\nconst TreeNode = (props: Props) => {\n const {children, scaffoldBlockPxWidth, lowerSiblingCounts, node, ...otherProps} = omit(\n [\n 'listIndex',\n 'swapFrom',\n 'swapLength',\n 'swapDepth',\n 'draggedNode',\n 'getPrevRow',\n 'connectDropTarget',\n 'isOver',\n 'canDrop',\n 'treeIndex',\n 'treeId',\n 'path',\n 'rowDirection'\n ],\n props\n );\n const styles = useStyles();\n // Construct the scaffold representing the structure of the tree\n const scaffoldBlockCount = lowerSiblingCounts.length;\n const scaffold = [];\n lowerSiblingCounts.forEach((lowerSiblingCount, i) => {\n scaffold.push(\n <div key={`pre_${1 + i}`} style={{width: scaffoldBlockPxWidth}} className={styles.lineBlock}>\n {node.root && <div className={styles.rootIndex}>{node.rootIndex}.</div>}\n {i === scaffoldBlockCount - 1 && i !== 0 && (\n <>\n <div className={styles.verticalLine} />\n <div className={styles.horizontalLineRight} />\n </>\n )}\n </div>\n );\n });\n\n const shift = node.root ? scaffoldBlockPxWidth - 4 : 0; //4px - shifting for rootIndex\n const scaffoldWidth = scaffoldBlockPxWidth * scaffoldBlockCount - shift;\n const style = {left: scaffoldWidth, width: `calc(100% - ${scaffoldWidth}px`};\n const width = `${scaffoldWidth + MIN_NODE_CONTENT_WIDTH}px`;\n const nodeStyle = {...otherProps.style, width};\n return (\n <div {...otherProps} className={styles.node} style={nodeStyle}>\n {scaffold}\n\n <div className={styles.nodeContent} style={style}>\n {children}\n </div>\n </div>\n );\n};\n\nexport default TreeNode;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \".54\"\n}, React.createElement(\"path\", {\n d: \"M14.5 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm4 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm-17 1a1.5 1.5 0 110-3 1.5 1.5 0 010 3zM4 4a2 2 0 110-4 2 2 0 010 4zm1 16a2 2 0 110-4 2 2 0 010 4zm4.5-6a4.5 4.5 0 110-9 4.5 4.5 0 010 9zm0-2a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm6 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3z\",\n fill: \"#000\"\n}))));","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {FacetViewHeader, SmallIconButtonWithTooltip} from '@reltio/components';\nimport ShowGraphIcon from './icons/ShowGraph.svg';\nimport {useStyles} from './styles';\n\ntype Props = {\n title?: string;\n onGraphOpen: () => void;\n};\n\nconst HierarchyPathsHeader = ({title, onGraphOpen}: Props) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <div className={styles.buttonsContainer}>\n <SmallIconButtonWithTooltip\n className={styles.button}\n tooltipTitle={i18n.text('Show Graph')}\n icon={ShowGraphIcon}\n onClick={onGraphOpen}\n size=\"L\"\n />\n </div>\n </FacetViewHeader>\n );\n};\n\nexport default HierarchyPathsHeader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative'\n },\n bodyWrapper: {\n paddingTop: '21px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n resizableHandleContainer: {\n position: 'relative',\n width: '100%',\n height: 'inherit'\n },\n resizableHandleVisibilityArea: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '24px',\n zIndex: 11,\n '&:hover $resizableHandle': {\n visibility: 'visible'\n },\n '.react-grid-item.static &:hover $resizableHandle': {\n visibility: 'hidden'\n }\n },\n resizableHandle: {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n top: '-3px',\n zIndex: 11,\n cursor: 'move',\n visibility: 'hidden'\n },\n dragIcon: {\n transform: 'translateX(-50%) rotate(90deg)',\n color: 'rgba(0, 0, 0, 0.3)'\n }\n});\n","import React, {ComponentType} from 'react';\nimport classnames from 'classnames';\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\n\nimport {useStyles} from './styles';\n\nconst withResizableHandle = <P extends unknown>(Component: ComponentType<P>) => {\n const WithResizableHandle = (props: P) => {\n const styles = useStyles();\n return (\n <div className={styles.resizableHandleContainer}>\n <div className={styles.resizableHandleVisibilityArea}>\n <div className={classnames('viewDraggableHandle', styles.resizableHandle)}>\n <DragIndicatorIcon className={styles.dragIcon} />\n </div>\n </div>\n <Component {...props} />\n </div>\n );\n };\n\n WithResizableHandle.displayName = 'WithResizableHandle';\n return WithResizableHandle;\n};\n\nexport default withResizableHandle;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n stubView: {\n padding: '20px'\n },\n fullHeight: {\n height: '100%'\n },\n component: {\n boxSizing: 'border-box',\n overflow: 'auto',\n boxShadow: 'none',\n borderRadius: 'unset'\n }\n});\n","import {useEffect, useState} from 'react';\nimport {both, gt, lt, path, pipe} from 'ramda';\nimport {resolve} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nconst filterWrongLat = pipe(path(['point', 'lat']), both(gt(90), lt(-90)));\n\nexport const useMarkers = (entity, metadata, mapKey) => {\n const [markers, setMarkers] = useState([]);\n const [loading, setLoading] = useState(true);\n const safePromise = useSafePromise();\n useEffect(() => {\n setLoading(true);\n safePromise(resolve(metadata, [entity], mapKey))\n .then((markers) => {\n setMarkers(markers.filter(filterWrongLat));\n })\n .catch(() => {\n setMarkers([]);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [entity, metadata, mapKey, safePromise]);\n\n return {markers, loading};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n fullHeight: {\n height: '100%'\n },\n fullscreenBtn: {\n position: 'absolute',\n right: '5px',\n top: '5px',\n zIndex: 100\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n caption: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport useStyles from './styles';\n\ntype ImageLineCaptionProps = {\n totalImages: number;\n};\n\nexport const ImageLineCaption = ({totalImages}: ImageLineCaptionProps) => {\n const styles = useStyles();\n const photoWord = totalImages > 1 ? i18n.text('photos') : i18n.text('photo');\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {`${totalImages} ${photoWord}`}\n </Typography>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, pathOr} from 'ramda';\nimport {EditableImageAttributesLine} from '@reltio/components';\nimport {AttributeType, Entity, Paging, AttributeItem} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {ImageAttributeViewConfig} from '../../../types';\nimport {IMAGE_SIZE} from '../ImageAttributeView';\nimport {ImageLineCaption} from '../ImageLineCaption/ImageLineCaption';\n\ntype ImageAttributeViewEditableContentProps = {\n config: ImageAttributeViewConfig;\n attributeType: AttributeType;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nexport const ImageAttributeViewEditableContent = ({\n config,\n attributeType,\n paging,\n requestNextPageOfAttributeValues\n}: ImageAttributeViewEditableContentProps) => {\n const dispatch = useDispatch();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const modifiedEntityValues = pathOr([], ['attributes', attributeType.name], modifiedEntity);\n const viewId = config.id;\n\n const onChangeAttribute = (params: AttributeItem) =>\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n\n const onDeleteAttribute = (params: AttributeItem) =>\n pipe(profile.actions.removeAttribute, dispatch)({...params, viewId});\n\n return (\n <>\n <EditableImageAttributesLine\n attributeValues={modifiedEntityValues}\n attributeType={attributeType}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={modifiedEntity.uri}\n onChangeAttribute={onChangeAttribute}\n imageSize={IMAGE_SIZE}\n paging={paging}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n />\n <ImageLineCaption totalImages={modifiedEntityValues.length} />\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: '8px 16px'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pathOr, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {BasicView, FacetViewHeader, ImageAttributesLine} from '@reltio/components';\nimport {findAttributeTypeByUri, isEditableMode} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {ImageAttributeViewConfig} from '../../types';\nimport {ImageAttributeViewEditableContent} from './ImageAttributeViewEditableContent/ImageAttributeViewEditableContent';\nimport {ImageLineCaption} from './ImageLineCaption/ImageLineCaption';\nimport useStyles from './styles';\n\ntype ImageAttributeViewProps = {\n config: ImageAttributeViewConfig;\n className?: string;\n};\n\nexport const IMAGE_SIZE = {\n imageMargin: 4,\n imageWidth: 162,\n imageHeight: 162\n};\n\nexport const ImageAttributeView = ({config, className}: ImageAttributeViewProps) => {\n const {attributeUri} = config;\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const entity = useSelector(mdmModule.selectors.getEntityWithDiff);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const attributeType = findAttributeTypeByUri(metadata, attributeUri);\n const entityValues = pathOr([], ['attributes', attributeType?.name], entity);\n const paging = path(['attributes', 'paging', attributeUri], entity);\n const totalValues = entityValues.length;\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const requestNextPageOfAttributeValues = useCallback(\n (payload: RequestNextPageOfAttributeValuesPayload) =>\n dispatch(profile.actions.requestNextPageOfAttributeValues(payload)),\n [dispatch]\n );\n\n const renderContent = () => {\n if (attributeType) {\n if (isEditableMode(mode)) {\n const props = {\n attributeType,\n config,\n paging,\n requestNextPageOfAttributeValues\n };\n return <ImageAttributeViewEditableContent {...props} />;\n }\n if (totalValues > 0) {\n const props = {\n attributeValues: entityValues,\n attributeType,\n imageSize: IMAGE_SIZE,\n paging,\n parentUri: entity.uri,\n requestNextPageOfAttributeValues\n };\n return (\n <>\n <ImageAttributesLine {...props} />\n <ImageLineCaption totalImages={totalValues} />\n </>\n );\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n return (\n <BasicView className={className}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.container}>{renderContent()}</div>\n </BasicView>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n matchesContainer: {\n position: 'relative'\n },\n footer: {\n display: 'flex',\n alignItems: 'end',\n flexGrow: 1,\n justifyContent: 'flex-start',\n borderTop: '1px solid rgba(0,0,0, 0.12)',\n padding: '8px 16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n noData: {\n paddingLeft: '16px',\n paddingBottom: '16px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n }\n}));\n","import {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {getActionPermissionForMatch, Match} from '@reltio/mdm-sdk';\nimport React, {useCallback, useContext, useMemo} from 'react';\nimport {ActionButtonMode, MergeButton, NotMatchButton, ViewIdContext} from '@reltio/components';\nimport {ProfilePotentialMatchesViewConfig} from '../../types';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onStartRequest: () => void;\n onFinishRequest: () => void;\n};\nexport const ActionButtons = ({config, match, onStartRequest, onFinishRequest}: Props) => {\n const dispatch = useDispatch();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const {canMerge, canMark} = getActionPermissionForMatch(metadata, config, match.object, entity, match.matchRules);\n const entities = useMemo(() => {\n return [match.object];\n }, [match.object]);\n\n const actionButtonProps = {\n entity,\n entities,\n mode: ActionButtonMode.iconButton,\n onStartRequest\n };\n const viewId = useContext(ViewIdContext);\n const onMergeFinish = useCallback(() => {\n onFinishRequest();\n dispatch(profile.entity.actions.loadEntity({viewId, uri: entity.uri}));\n }, [dispatch, entity.uri, onFinishRequest, viewId]);\n return (\n <>\n {canMerge && <MergeButton {...actionButtonProps} onFinishRequest={onMergeFinish} />}\n {canMark && <NotMatchButton {...actionButtonProps} onFinishRequest={onFinishRequest} />}\n </>\n );\n};\n","import {\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n CommentsContainer,\n ProfileMatchCard,\n useMatchesLoader\n} from '@reltio/components';\nimport {CollaborationObjectTypes, createObjectIdForPM, createRelatedObjectUris, Match} from '@reltio/mdm-sdk';\nimport {ActionButtons} from './ActionButtons';\nimport React from 'react';\nimport {ProfilePotentialMatchesViewConfig} from '../../types';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = Pick<ReturnType<typeof useMatchesLoader>, 'entitiesMap'> & {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onFinishRequest: () => void;\n onStartRequest: () => void;\n};\n\nexport const MatchCard = ({config, entitiesMap, match, onFinishRequest, onStartRequest}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n return (\n <ProfileMatchCard\n match={match}\n entity={entity}\n entitiesMap={entitiesMap}\n metadata={metadata}\n className={COMMENTS_CONTAINER_VISIBILITY_AREA}\n >\n <CommentsContainer\n uri={createObjectIdForPM(entity.uri, match.object.uri)}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: match.object.uri\n })}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n />\n <ActionButtons\n match={match}\n config={config}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n />\n </ProfileMatchCard>\n );\n};\n","import React, {useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {isEmpty, map} from 'ramda';\nimport {Link as Link} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n BasicView,\n CollaborationContext,\n EntitiesMapContext,\n FacetViewHeader,\n LinearLoadIndicator,\n useMatchesLoader,\n ViewIdContext\n} from '@reltio/components';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n getEntityUriForLink,\n getEntityUriFromMatchObject,\n getPotentialMatchesObjectIdsForCollaboration\n} from '@reltio/mdm-sdk';\nimport {ProfilePotentialMatchesViewConfig} from '../../types';\nimport {useStyles} from './styles';\nimport {MatchCard} from './MatchCard';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n className?: string;\n};\n\nexport const DEFAULT_MATCHES_LIMIT = 3;\nexport const DEFAULT_OPTIONS = {\n showTransitiveMatches: true,\n showInactiveEntities: false\n};\nexport const DEFAULT_SORTING = {order: 'asc', field: 'score'};\nenum ComponentStates {\n Loading,\n NoData,\n Loaded\n}\nexport const ProfilePotentialMatchesView = ({config, className}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = getEntityUriForLink(entity);\n\n const [isLoading, setIsLoading] = useState(false);\n const turnOnDisableSpinner = useCallback(() => {\n setIsLoading(true);\n }, []);\n const turnOffDisableSpinner = useCallback(() => {\n setIsLoading(false);\n }, []);\n\n const {matches, entitiesMap, loadMatches, total} = useMatchesLoader({\n enabled: !!entityUri,\n entity,\n options: DEFAULT_OPTIONS,\n filter: '',\n page: 0,\n sorting: DEFAULT_SORTING,\n rowsPerPage: DEFAULT_MATCHES_LIMIT,\n onStartLoading: turnOnDisableSpinner,\n onFinishLoading: turnOffDisableSpinner\n });\n const onFinishMatchAction = useCallback(() => {\n loadMatches();\n }, [loadMatches]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const openPotentialMatchPerspective = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'potentialMatches', viewId}));\n }, [dispatch, viewId]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, map(getEntityUriFromMatchObject, matches)),\n [entityUri, matches]\n );\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const showSeeAll = total > DEFAULT_MATCHES_LIMIT && !isEmpty(matches);\n const getComponentState = () => {\n if (isLoading) {\n return ComponentStates.Loading;\n }\n if (isEmpty(matches)) {\n return ComponentStates.NoData;\n }\n return ComponentStates.Loaded;\n };\n const state = getComponentState();\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={classnames(styles.root, className)}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.matchesContainer}>\n {state === ComponentStates.Loading && <LinearLoadIndicator />}\n {state === ComponentStates.NoData && (\n <Typography className={styles.noData}>{i18n.text('No matches found')}</Typography>\n )}\n {state === ComponentStates.Loaded &&\n matches.map((match) => (\n <MatchCard\n config={config}\n entitiesMap={entitiesMap}\n match={match}\n onFinishRequest={onFinishMatchAction}\n onStartRequest={turnOnDisableSpinner}\n key={match.object.uri}\n />\n ))}\n </div>\n {showSeeAll && (\n <>\n <div className={styles.footer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n onClick={openPotentialMatchPerspective}\n underline=\"none\"\n >\n {i18n.text('See all')}\n </Link>\n </div>\n </>\n )}\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n","import React, {lazy} from 'react';\nimport {Store} from 'redux';\nimport {CustomViewConfig, ProfileViewConfig, ProfileViewTypes} from '@reltio/mdm-sdk';\nimport {\n AttributeViewConfig,\n EntityMapViewConfig,\n ProfilePotentialMatchesViewConfig,\n RelationsViewConfig,\n ImageAttributeViewConfig,\n SingleAttributeViewConfig,\n HierarchyPathsViewConfig\n} from '../../types';\nimport {ProfileAttributesView} from '../ProfileAttributesView/ProfileAttributesView';\nimport {ProfileSingleAttributeView} from '../ProfileSingleAttributeView/ProfileSingleAttributeView';\nimport {ProfileRelationsView} from '../ProfileRelationsView/ProfileRelationsView';\nimport {ProfileTableAttributeView} from '../ProfileTableAttributeView/ProfileTableAttributeView';\nimport {HierarchyPathsView} from '../HierarchyPathsView';\nimport {CustomView} from '../Sandbox/CustomView';\nimport withResizableHandle from './HOCs/withResizableHandle';\nimport {StubView} from './StubView';\nimport EntityMapView from '../EntityMapView/EntityMapView';\nimport {ImageAttributeView} from '../ImageAttributeView/ImageAttributeView';\nimport {ProfilePotentialMatchesView} from '../ProfilePotentialMatchesView/ProfilePotentialMatchesView';\n\nconst ResizableStubView = withResizableHandle(StubView);\nexport const ResizableProfileAttributesView = withResizableHandle(ProfileAttributesView);\nexport const ResizableProfileSingleAttributeView = withResizableHandle(ProfileSingleAttributeView);\nexport const ResizableProfileTableAttributeView = withResizableHandle(ProfileTableAttributeView);\nexport const ResizableProfileRelationsView = withResizableHandle(ProfileRelationsView);\nexport const ResizableCustomView = withResizableHandle(CustomView);\nexport const ResizableHierarchyPathView = withResizableHandle(HierarchyPathsView);\nexport const ResizableProfilePotentialMatchesView = withResizableHandle(ProfilePotentialMatchesView);\n\nexport const ResizableHierarchyTreeView = lazy(() =>\n import('@reltio/hierarchy-tree').then((importedModule) => ({\n default: withResizableHandle(importedModule.HierarchyTreeView)\n }))\n);\n\nexport const ResizableRelationshipsTableView = lazy(() =>\n import('@reltio/relations-table').then((importedModule) => ({\n default: withResizableHandle(importedModule.RelationshipsTableView)\n }))\n);\nexport const ResizableEntityMapView = withResizableHandle(EntityMapView);\nexport const ResizableImageAttributeView = withResizableHandle(ImageAttributeView);\n\nexport type ViewComponentProps = {\n store: Store<unknown>;\n config:\n | ProfileViewConfig\n | AttributeViewConfig\n | SingleAttributeViewConfig\n | RelationsViewConfig\n | EntityMapViewConfig\n | ImageAttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n isAutosize?: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nclass ViewsFactory {\n static ViewTypes = ProfileViewTypes;\n static getComponentBy = (\n propName: string,\n {store, config, className, isFullscreen, onToggleFullscreen}: ViewComponentProps\n ) => {\n switch (config[propName]) {\n case ViewsFactory.ViewTypes.HierarchyTree:\n return <ResizableHierarchyTreeView config={config} store={store} className={className} />;\n case ViewsFactory.ViewTypes.HierarchyPaths:\n return <ResizableHierarchyPathView config={config as HierarchyPathsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.RelationsTable:\n return <ResizableRelationshipsTableView config={config} store={store} className={className} />;\n case ViewsFactory.ViewTypes.Relations:\n return <ResizableProfileRelationsView config={config as RelationsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.Attributes:\n return <ResizableProfileAttributesView className={className} config={config as AttributeViewConfig} />;\n case ViewsFactory.ViewTypes.SingleAttributeView:\n return (\n <ResizableProfileSingleAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.TableAttributeView:\n return (\n <ResizableProfileTableAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.MapView:\n return (\n <ResizableEntityMapView\n config={config as EntityMapViewConfig}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.CustomView:\n return <ResizableCustomView config={config as CustomViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.ImageAttributeView:\n return (\n <ResizableImageAttributeView config={config as ImageAttributeViewConfig} className={className} />\n );\n case ViewsFactory.ViewTypes.PotentialMatchesView:\n return (\n <ResizableProfilePotentialMatchesView\n config={config as ProfilePotentialMatchesViewConfig}\n className={className}\n />\n );\n }\n };\n static getComponent = (props: ViewComponentProps) => {\n return (\n ViewsFactory.getComponentBy('class', props) ||\n ViewsFactory.getComponentBy('react-class', props) || <ResizableStubView className={props.className} />\n );\n };\n}\n\nexport default ViewsFactory;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {BasicView} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst StubView = ({className}: Props) => {\n const styles = useStyles();\n return (\n <BasicView className={classnames(styles.stubView, 'viewDraggableHandle', className)}>NOT IMPLEMENTED</BasicView>\n );\n};\n\nexport {StubView};\n","import React from 'react';\nimport {SingleAttributeViewConfig} from '../../types';\nimport {SingleAttributeContext} from './contexts/SingleAttributeContext';\nimport {SingleAttributeView} from './components/SingleAttributeView/SingleAttributeView';\nimport {useSingleAttribute} from './hooks/useSingleAttribute';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileSingleAttributeView = ({className, config}: Props) => {\n const singleAttribute = useSingleAttribute(config);\n\n return (\n <SingleAttributeContext.Provider value={singleAttribute}>\n <SingleAttributeView config={config} className={className} />\n </SingleAttributeContext.Provider>\n );\n};\n","import {useState, useMemo, useCallback} from 'react';\nimport {SingleAttributeViewConfig} from '../../../types';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\n\nexport const useSingleAttribute = (config: SingleAttributeViewConfig) => {\n const [searchQuery, setSearchQuery] = useState('');\n const [page, setPage] = useState(0);\n const [showInactive, setShowInactive] = useState(false);\n const params = useMemo(() => ({page, searchQuery, showInactive}), [page, searchQuery, showInactive]);\n const attribute = useSingleAttributeLoader(config, params, true);\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n return {\n setSearchQuery,\n searchQuery,\n setPage,\n page,\n toggleShowInactive,\n showInactive,\n ...attribute\n };\n};\n","import React from 'react';\nimport {SingleAttributeViewConfig} from '../../types';\nimport {TableAttributeContext} from './contexts/TableAttributeContext';\nimport {useTableAttribute} from './hooks/useTableAttribute';\nimport {TableAttributeView} from './components/TableAttributeView/TableAttributeView';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileTableAttributeView = ({config, className}: Props) => {\n const tableAttribute = useTableAttribute(config);\n\n return (\n <TableAttributeContext.Provider value={tableAttribute}>\n {config && <TableAttributeView config={config} className={className} />}\n </TableAttributeContext.Provider>\n );\n};\n","import {useMemo, useReducer} from 'react';\nimport {reject, isNil, pipe, not, prop} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {findAttributeTypeByUri, isComplexAttribute} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useActions} from '@reltio/components';\nimport reducer, {actions} from './reducer';\nimport {SingleAttributeViewConfig} from '../../../types';\nimport {getColumnsData} from '../helpers/tableAttributeHelpers';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\nimport {buildMDMFilters} from './helpers';\n\nconst DEFAULT_COUNT_COLUMN = 5;\n\nexport const useTableAttribute = (config: SingleAttributeViewConfig) => {\n const {attributeUri} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const allColumnsData = useMemo(() => getColumnsData(attributeType), [attributeType]);\n const initialState = useMemo(\n () => ({\n searchQuery: '',\n filters: null,\n sorting: undefined,\n visibleColumns: allColumnsData\n .filter(pipe(prop('dataTypeDefinition'), isComplexAttribute, not))\n .map(({id}) => id)\n .slice(0, DEFAULT_COUNT_COLUMN),\n page: 0\n }),\n [allColumnsData]\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const {searchQuery, filters, sorting, page} = state;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n const requestFilters = useMemo(() => {\n const mdmFilters = buildMDMFilters(allColumnsData, filters);\n return mdmFilters.length ? mdmFilters : null;\n }, [filters, allColumnsData]);\n\n const params = useMemo(() => reject(isNil, {filters: requestFilters, page, sorting, searchQuery}), [\n requestFilters,\n page,\n sorting,\n searchQuery\n ]);\n const {changeSearchQuery, changePage, toggleSort, changeFilter, toggleFilters, changeColumns} = useActions({\n actions,\n dispatch\n });\n const attribute = useSingleAttributeLoader(config, params, false);\n const showTable = Boolean(\n (attribute?.values?.length || requestFilters || searchQuery || isEditableMode) &&\n attributeType &&\n !attributeType.hidden\n );\n return {\n ...state,\n setSearchQuery: changeSearchQuery,\n setPage: changePage,\n onSort: toggleSort,\n onFilter: changeFilter,\n onToggleFilters: toggleFilters,\n onChangeColumns: changeColumns,\n showTable,\n ...attribute\n };\n};\n","import {propEq} from 'ramda';\nimport {Maybe} from '@reltio/mdm-sdk';\nimport {ColumnData, ColumnFilter, columnFilterToMdmFilter} from '@reltio/components';\n\nexport const buildMDMFilters = (columnsData: ColumnData[], filters: {[key: string]: ColumnFilter}) =>\n Maybe.fromNull(filters)\n .map((filters) =>\n Object.entries(filters).map(([columnId, columnFilter]) => {\n const columnData = columnsData.find(propEq('id', columnId));\n return columnFilterToMdmFilter(columnData, columnFilter);\n })\n )\n .orSome([]);\n","import React from 'react';\nimport RelationsView from './components/RelationsView';\nimport {RelationsViewStateContext} from './contexts/RelationsViewStateContext';\nimport useRelationsState from './hooks/useRelationsState';\nimport {RelationsViewConfig} from '../../types';\n\ntype Props = {\n config: RelationsViewConfig;\n onResize?: (width: number, height: number) => void;\n className?: string;\n};\n\nexport const ProfileRelationsView = ({config, className}: Props) => {\n const relationsState = useRelationsState(config);\n return (\n <RelationsViewStateContext.Provider value={relationsState}>\n <RelationsView config={config} className={className} />\n </RelationsViewStateContext.Provider>\n );\n};\n","import React, {useRef, useEffect} from 'react';\nimport {useAPI} from '@reltio/components';\nimport {CustomViewConfig} from '@reltio/mdm-sdk';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {isNil, reject} from 'ramda';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: CustomViewConfig;\n className?: string;\n};\n\nexport const CustomView = ({config, className}: Props) => {\n const basicViewRef = useRef<HTMLDivElement>();\n const {height, width, tooltip: defaultTooltip} = config;\n const {html, visible, tooltip: updatedTooltip, customStyles} = useAPI(config);\n const styles = useStyles();\n const tooltip = updatedTooltip || defaultTooltip;\n useEffect(() => {\n if (basicViewRef.current && html) {\n basicViewRef.current.innerHTML = '';\n html.childNodes.forEach((child) => {\n basicViewRef.current.appendChild(child);\n });\n }\n }, [html]);\n if (!visible) return null;\n const style: {width?: number; height?: number} = reject(isNil, {width, height});\n const component = (\n <div ref={basicViewRef} style={{...style, ...customStyles}} className={classnames(styles.root, className)} />\n );\n return (\n <div className={styles.bodyWrapper}>{tooltip ? <Tooltip title={tooltip}>{component}</Tooltip> : component}</div>\n );\n};\n","import React, {useCallback} from 'react';\nimport {BasicView, ReactSortableTree} from '@reltio/components';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {useLoadPaths} from './hooks/useLoadPaths';\nimport {Node} from './Node';\nimport {useStyles} from './styles';\nimport {ConfigContext} from './ConfigContext';\nimport {HierarchyPathsViewConfig} from '../../types';\nimport {getNodeKey} from './helpers';\nimport {theme} from './theme';\nimport HierarchyPathsHeader from './HierarchyPathsHeader';\n\ntype Props = {\n className?: string;\n config: HierarchyPathsViewConfig;\n};\n\nexport const HierarchyPathsView = ({config, className}: Props) => {\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {treeData, setTreeData} = useLoadPaths(entityUri, config.graph.type);\n const styles = useStyles();\n const dispatch = useDispatch();\n const {id, graph} = config;\n const openGraph = useCallback(() => {\n dispatch(ui.actions.openGraph({viewId: id, graphType: graph.type}));\n }, [dispatch, id, graph]);\n const generateNodeProps = useCallback(\n (rowInfo) => ({\n title: <Node node={rowInfo.node} />\n }),\n []\n );\n return (\n <BasicView className={className}>\n <HierarchyPathsHeader onGraphOpen={openGraph} title={config.caption} />\n <ConfigContext.Provider value={config}>\n <div className={styles.treeContainer}>\n <div className={styles.tree}>\n <ReactSortableTree\n isVirtualized={false}\n treeData={treeData}\n canDrag={false}\n theme={theme}\n generateNodeProps={generateNodeProps}\n onChange={setTreeData}\n getNodeKey={getNodeKey}\n />\n </div>\n </div>\n </ConfigContext.Provider>\n </BasicView>\n );\n};\n","import React, {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdm from '@reltio/mdm-module';\nimport FullscreenIcon from '@material-ui/icons/Fullscreen';\nimport FullscreenExitIcon from '@material-ui/icons/FullscreenExit';\nimport {BasicView, LinearLoadIndicator, ReltioMap} from '@reltio/components';\nimport {SmallIconButton} from '@reltio/components';\n\nimport {AttributeViewConfig} from '../../types';\nimport {useMarkers} from './useMarkers';\nimport useStyles from './styles';\n\ntype EntityMapViewProps = {\n config: AttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nexport const EntityMapView = ({config, isFullscreen, onToggleFullscreen, className}: EntityMapViewProps) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const entity = useSelector(mdm.selectors.getEntity);\n const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\n const {markers, loading} = useMarkers(entity, metadata, mapKey);\n const loadingElement = useMemo(\n () => (\n <div className={styles.fullHeight}>\n <LinearLoadIndicator />\n </div>\n ),\n [styles]\n );\n\n const defaultCenter = useMemo(() => ({lat: 0, lng: 0}), []);\n const mapOptions = useMemo(() => ({mapTypeControl: true}), []);\n\n return (\n mapKey && (\n <BasicView className={classnames(styles.root, className)}>\n {loading && <LinearLoadIndicator />}\n <SmallIconButton\n size=\"S\"\n icon={isFullscreen ? FullscreenExitIcon : FullscreenIcon}\n onClick={() => onToggleFullscreen(config.id)}\n className={styles.fullscreenBtn}\n />\n\n <ReltioMap\n loadingElement={loadingElement}\n defaultZoom={1}\n defaultCenter={defaultCenter}\n markers={markers}\n mapContainerClassName={styles.fullHeight}\n mapKey={mapKey}\n mapOptions={mapOptions}\n />\n </BasicView>\n )\n );\n};\n\nexport default EntityMapView;\n","import React, {memo, Suspense} from 'react';\nimport classnames from 'classnames';\nimport ViewsFactory, {ViewComponentProps} from './ViewsFactory';\nimport {useStyles} from './styles';\n\nconst Fallback = () => null;\n\nconst ViewComponent = memo(({config, store, isFullscreen, isAutosize, onToggleFullscreen}: ViewComponentProps) => {\n const styles = useStyles();\n return (\n <Suspense fallback={<Fallback />}>\n {ViewsFactory.getComponent({\n config,\n store,\n className: classnames(styles.component, {[styles.fullHeight]: !isAutosize}),\n isFullscreen,\n onToggleFullscreen\n })}\n </Suspense>\n );\n});\n\nViewComponent.displayName = 'ViewComponent';\n\nexport {ViewComponent};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {basicView: Record<string, string | number>}) => ({\n item: theme.basicView,\n fixedSizeContainer: {\n height: '100%'\n }\n}));\n","import React, {ReactChildren, ReactNode, useContext} from 'react';\nimport {omit} from 'ramda';\nimport {ReactReduxContext} from 'react-redux';\nimport {ReactGridLayoutItem} from '@reltio/components';\nimport {CustomScript, CustomScriptPlatform, ProfileViewConfig} from '@reltio/mdm-sdk';\nimport {ViewComponent} from '../views/ViewComponent';\nimport ViewsFactory from '../views/ViewsFactory';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n layoutItemConfig: ReactGridLayoutItem;\n views: ProfileViewConfig[];\n className?: string;\n children?: ReactChildren;\n style?: Record<string, unknown>;\n isFullscreen: boolean;\n onToggleFullscreen: (id: string) => void;\n AutosizeComponent?: ReactNode;\n};\n\nconst omittingProps = ['onConfigChanged', 'onRemove'];\n\nconst ProfileLayoutItem = ({\n layoutItemConfig,\n views,\n className,\n children: ResizeComponent,\n style,\n isFullscreen,\n onToggleFullscreen,\n AutosizeComponent,\n ...props\n}: Props) => {\n const config = views.find(({id}) => layoutItemConfig.i === id);\n const styles = useStyles();\n\n const {store} = useContext(ReactReduxContext);\n if (!config) {\n return null;\n }\n const isCustomView = config.class === ViewsFactory.ViewTypes.CustomView;\n if (isCustomView && (config?.action as CustomScript)?.platform === CustomScriptPlatform.CLASSIC) {\n return null;\n }\n\n return (\n <div\n {...omit(omittingProps, props)}\n style={style}\n className={classnames(className, {[styles.item]: !isCustomView})}\n >\n <div className={classnames({[styles.fixedSizeContainer]: !AutosizeComponent})}>\n {AutosizeComponent}\n <ViewComponent\n store={store}\n config={config}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n isAutosize={Boolean(AutosizeComponent)}\n />\n </div>\n {ResizeComponent}\n </div>\n );\n};\n\nexport {ProfileLayoutItem};\n","import React from 'react';\nimport {ReltioGridLayout} from '@reltio/components';\nimport {ProfileViewConfig} from '@reltio/mdm-sdk';\n\nimport {Layout} from '../../types';\nimport {ProfileLayoutItem} from '../ProfileLayoutItem';\n\ntype Props = {\n views: ProfileViewConfig[];\n layout?: Layout;\n layoutOptions?: Record<string, unknown>;\n onLayoutChanged: (layout: Layout) => void;\n};\n\nconst ProfileLayout = ({views, layout, layoutOptions, onLayoutChanged}: Props) => {\n return (\n <ReltioGridLayout\n LayoutItem={ProfileLayoutItem}\n views={views}\n layout={layout}\n layoutOptions={layoutOptions}\n onLayoutChanged={onLayoutChanged}\n draggableHandle=\".viewDraggableHandle\"\n />\n );\n};\n\nexport {ProfileLayout};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"19\",\n height: \"17\",\n viewBox: \"0 0 19 17\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M14 17v2H4v-2h10zm6-4v2H4v-2l12.884.001H17l.116-.002L20 13zm-8.457-2H4V9h5.82a8.465 8.465 0 001.723 2zM9.139 6.178l-.289.733.035.088L4 7V5l5.713-.002c-.22.375-.412.768-.574 1.18zM17 2.82a6.451 6.451 0 00-6 4.09 6.451 6.451 0 006 4.092 6.451 6.451 0 006-4.091 6.451 6.451 0 00-6-4.091zm0 6.815a2.728 2.728 0 010-5.455 2.728 2.728 0 010 5.455zm0-4.365c-.905 0-1.636.73-1.636 1.636 0 .906.73 1.637 1.636 1.637.905 0 1.636-.731 1.636-1.637 0-.905-.73-1.636-1.636-1.636z\",\n id: \"svg1467685497a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", {\n transform: \"translate(-4 -2.5)\"\n}, React.createElement(\"mask\", {\n id: \"svg1467685497b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1467685497a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1467685497b)\",\n d: \"M0 0h24v24H0z\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M20.222 6C21.21 6 22 6.8 22 7.778v12.444C22 21.2 21.209 22 20.222 22H7.778C6.79 22 6 21.2 6 20.222V7.778C6 6.8 6.791 6 7.778 6h12.444zM20 8H8v12h12V8zM4 18H2V4c0-1.1.9-2 2-2h14v2H4v14z\",\n id: \"svg2383396984a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2383396984b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2383396984a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2383396984b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n editingButtons: {\n display: 'flex',\n '& button + button': {\n width: '88px',\n marginLeft: '8px'\n }\n },\n searchResults: {\n width: '150px',\n height: '25px',\n backgroundColor: '#ccc'\n },\n comments: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '10px'\n }\n});\n","import {useCallback, useMemo} from 'react';\nimport {\n includes,\n pipe,\n isNil,\n propOr,\n filter,\n map,\n prop,\n cond,\n identity,\n omit,\n find,\n complement,\n when,\n either,\n pick,\n always,\n T\n} from 'ramda';\nimport {\n BaseCloneAction,\n CloneAction,\n Entity,\n getEntityType,\n isReference,\n isRelationWithEntityType,\n getRelationTypeUriFromAttrType\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\n\ntype Props = {\n cloneAction?: CloneAction[];\n onCloneDiscard: () => void;\n};\n\nexport const useCloneAction = ({cloneAction: cloneActionProp, onCloneDiscard}: Props) => {\n const entity: Entity = useSelector(mdm.selectors.getEntityWithoutDiff);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const dispatch = useDispatch();\n const entityTypeUri = entity?.type;\n const relationTypes = metadata.relationTypes;\n const isRelationSuitableForEntityType = useCallback(isRelationWithEntityType(metadata, entityTypeUri), [\n metadata,\n entityTypeUri\n ]);\n const entityType = getEntityType(metadata, entityTypeUri);\n const cloneAction = useMemo<BaseCloneAction>(\n () =>\n when(\n complement(isNil),\n pipe(\n find(pipe(propOr([], 'entityTypeUris'), either(includes(entityTypeUri), includes('*')))),\n when(complement(isNil), omit(['entityTypeUris']))\n )\n )(cloneActionProp),\n [cloneActionProp, entityTypeUri]\n );\n const onClone = useCallback(() => {\n if (cloneAction) {\n const modifiedRelationTypes: string[] = pipe(\n prop('relationshipTypesToCopy'),\n cond([\n [\n isNil,\n pipe(\n always(entityType),\n propOr([], 'attributes'),\n filter(isReference),\n map(getRelationTypeUriFromAttrType)\n )\n ],\n [\n includes('*'),\n pipe(always(relationTypes || []), map(prop('uri')), filter(isRelationSuitableForEntityType))\n ],\n [T, identity]\n ])\n )(cloneAction);\n dispatch(\n profile.entity.actions.entityCloneRequested({\n data: {\n ...pick(['attributeReplacementMapping'], cloneAction),\n relationshipTypesToCopy: modifiedRelationTypes\n },\n entityUri: entity.uri\n })\n );\n }\n onCloneDiscard();\n }, [cloneAction, onCloneDiscard, entityType, relationTypes, entity.uri, isRelationSuitableForEntityType]);\n return cloneAction ? onClone : undefined;\n};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {Box as Box} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {SvgIcon as SvgIcon} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport CreateIcon from '@material-ui/icons/Create';\n\nimport {\n getEntityType,\n Entity,\n checkMetadataPermission,\n isDataTenantEntity,\n isTempUri,\n MetadataPermissions,\n ModeTypes,\n Mode,\n isSuggestMode,\n isEditableMode,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Operation,\n ProfileBandConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n ProfileBand,\n ModeSwitcherSelect,\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ProfileBandNavigation,\n ProfileBandHistory,\n ConfirmationDialog\n} from '@reltio/components';\n\nimport SuggestSvg from './suggest.svg';\nimport CopySvg from './copy.svg';\n\nimport {useStyles} from './styles';\nimport {useCloneAction} from './hooks/useCloneAction';\n\ntype Props = {\n className?: string;\n profileBandConfig?: ProfileBandConfig;\n};\n\nconst SuggestIcon = (props) => (\n <SvgIcon {...props}>\n <SuggestSvg />\n </SvgIcon>\n);\n\nconst CopyIcon = (props) => (\n <SvgIcon {...props}>\n <CopySvg />\n </SvgIcon>\n);\n\ntype Group = {\n label: string;\n value: string;\n description: string;\n icon: React.ElementType;\n permission: string;\n onClick?: (value: string) => void;\n};\n\nconst filterGroupByPermissions = <T extends Group>(\n group: T[],\n entityType,\n isTempEntity: boolean,\n isWorkflowEnabled?: boolean,\n canStartProcessInstanceSearchQuery?: boolean\n): T[] =>\n group.filter(({value, permission}) => {\n if (isTempEntity && !isEditableMode(value)) return false;\n if ((!isWorkflowEnabled || !canStartProcessInstanceSearchQuery) && isSuggestMode(value)) return false;\n return checkMetadataPermission(permission, entityType);\n });\n\nconst hasOnlyReadPermission = (entityType) => {\n return (\n checkMetadataPermission(MetadataPermissions.READ, entityType) &&\n !checkMetadataPermission(MetadataPermissions.UPDATE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.DELETE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.INITIATE_CHANGE_REQUEST, entityType)\n );\n};\n\nexport const PerspectiveProfileBand = ({className, profileBandConfig}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const canStartProcessInstanceSearchQuery = useSelector(mdm.selectors.getCanUserStartProcessFromQuery);\n const entity = useSelector(mdm.selectors.getEntityWithoutDiff) as Entity;\n const modifiedEntity = useSelector((state) => mdm.selectors.getModifiedEntity(state, entity.uri));\n const metadata = useSelector(mdm.selectors.getMetadata);\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const mode = useSelector(mdm.selectors.getMode) as Mode;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode) as boolean;\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const profileOperation = useSelector(mdm.selectors.getProfileOperation);\n const entityTypeUri = entity?.type;\n const entityType = useMemo(() => getEntityType(metadata, entityTypeUri), [entityTypeUri, metadata]);\n const isOperationSaving = profileOperation === Operation.Saving;\n const isOperationCloning = profileOperation === Operation.Cloning;\n const isDisabledButtons = isOperationCloning || isOperationSaving;\n const [openCloneConfirmationDialog, setOpenCloneConfirmationDialog] = useState(false);\n const onCloneDiscard = useCallback(() => {\n setOpenCloneConfirmationDialog(false);\n }, []);\n const onClone = useCloneAction({cloneAction: profileBandConfig?.cloneAction, onCloneDiscard});\n const OPTIONS_GROUP = useMemo(\n () => [\n {\n label: i18n.text('Editing'),\n value: ModeTypes.EDITING,\n description: i18n.text('Edit profile directly'),\n icon: CreateIcon,\n permission: 'UPDATE'\n },\n {\n label: i18n.text('Suggesting'),\n value: ModeTypes.SUGGESTING,\n description: i18n.text('Suggest changes and initiate a workflow review'),\n icon: SuggestIcon,\n permission: 'INITIATE_CHANGE_REQUEST'\n },\n {\n label: i18n.text('Viewing'),\n value: ModeTypes.VIEWING,\n description: i18n.text('Suggest changes and initiate a workflow review'),\n icon: VisibilityIcon,\n permission: 'READ'\n }\n ],\n []\n );\n\n const BUTTONS_GROUP = useMemo(\n () => [\n ...(onClone\n ? [\n {\n label: i18n.text('Clone'),\n value: 'Clone',\n description: i18n.text('Create a copy of the profile'),\n icon: CopyIcon,\n onClick: () => setOpenCloneConfirmationDialog(true),\n permission: 'CREATE'\n }\n ]\n : []),\n {\n label: i18n.text('Delete'),\n value: 'Delete',\n description: i18n.text('Permanently delete profile'),\n icon: DeleteIcon,\n onClick: () => {\n const conf = window.confirm(i18n.text('Are you sure you want to delete this?'));\n if (conf) {\n dispatch(profile.entity.actions.entityRemoveRequested({entityUri: entity.uri}));\n }\n },\n permission: 'DELETE'\n }\n ],\n [dispatch, entity.uri, onClone]\n );\n\n const shouldShowSelect = !isHistoryModeEnabled && !isDataTenantEntity(entity) && !hasOnlyReadPermission(entityType);\n\n const isTempEntity = isTempUri(entity?.uri);\n\n const accessibleOptionsGroup = useMemo(() => {\n return filterGroupByPermissions(\n OPTIONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [OPTIONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n const accessibleButtonsGroup = useMemo(() => {\n return filterGroupByPermissions(\n BUTTONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [BUTTONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n\n const handleChange = useCallback(\n (value: Mode) => {\n dispatch(profile.mode.actions.modeUpdated(value));\n },\n [dispatch]\n );\n\n const onCancel = useCallback(() => {\n dispatch(profile.mode.actions.modeCancelEditing());\n }, [dispatch]);\n\n const handleSave = useCallback(() => {\n dispatch(profile.actions.saveProfile());\n }, [dispatch]);\n\n return (\n <>\n <ProfileBand\n className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)}\n entity={isEditableMode && modifiedEntity ? modifiedEntity : entity}\n showEntityId={profileBandConfig?.showEntityId}\n >\n <Box display=\"flex\" alignItems=\"center\">\n <Box mr={3}>\n {isEditableMode && (\n <Box className={styles.editingButtons}>\n <Button\n variant=\"outlined\"\n onClick={onCancel}\n data-reltio-id=\"reltio-profile-cancel-editing\"\n disabled={isDisabledButtons}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n data-reltio-id=\"reltio-profile-save-profile\"\n onClick={handleSave}\n disabled={isDisabledButtons}\n >\n {isSuggestMode(mode) ? i18n.text('Suggest') : i18n.text('Save')}\n </Button>\n </Box>\n )}\n {isHistoryModeEnabled && isViewMode ? (\n <ProfileBandHistory />\n ) : (\n isViewMode && <ProfileBandNavigation />\n )}\n </Box>\n {shouldShowSelect && (\n <ModeSwitcherSelect\n optionsGroup={accessibleOptionsGroup}\n buttonsGroup={accessibleButtonsGroup}\n value={mode}\n onChange={handleChange}\n disabled={isDisabledButtons}\n />\n )}\n </Box>\n <Box className={styles.comments}>\n <CommentsContainer\n uri={entity.uri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri: entity.uri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </Box>\n </ProfileBand>\n {!!onClone && (\n <ConfirmationDialog\n open={openCloneConfirmationDialog}\n title={i18n.text('Do you want to create a clone of the profile?')}\n content={i18n.text(\n 'Cloning will create a copy of the current profile. You can modify the cloned profile in the next step. Are you sure you want to proceed?'\n )}\n onSave={onClone}\n onDiscard={onCloneDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n )}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n },\n badge: {\n fontSize: '12px',\n height: '18px',\n minWidth: '18px',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px'\n }\n});\n","import React, {useContext, VFC} from 'react';\nimport {Badge as Badge} from '@material-ui/core';\nimport {WorkflowTasksContext} from '@reltio/components';\nimport InboxIcon from '@material-ui/icons/Inbox';\nimport {useStyles} from '../../styles';\n\nexport const WorkflowButton: VFC = () => {\n const {total} = useContext(WorkflowTasksContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={total}\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <InboxIcon />\n </Badge>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n paddingRight: '12px'\n },\n showMoreLink: {\n display: 'flex',\n margin: '16px'\n },\n showMoreIcon: {\n fontSize: '1rem'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CollaborationContext, CollaborationItem, EntitiesMapContext, useCommentsEntitiesMap} from '@reltio/components';\nimport {Box as Box} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport {useStyles} from './styles';\n\nexport const CollaborationList = () => {\n const styles = useStyles();\n const {getComments, comments, pageToken} = useContext(CollaborationContext);\n const entityUri = useSelector(mdm.selectors.getEntityUriWithDataTenant);\n\n useEffect(() => {\n getComments(entityUri);\n }, [getComments, entityUri]);\n\n const handleShowMoreComments = () => {\n getComments(entityUri, pageToken);\n };\n\n const entitiesMap = useCommentsEntitiesMap(comments);\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <Box className={styles.wrapper}>\n {comments.map((comment) => {\n const {objectId, relatedObjectUris, objectType, commentId} = comment;\n return (\n <CollaborationItem\n key={commentId}\n uri={objectId}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n })}\n {pageToken && (\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.showMoreLink}\n onClick={handleShowMoreComments}\n underline=\"none\"\n >\n <KeyboardArrowDownIcon className={styles.showMoreIcon} />\n {i18n.text('Show more')}\n </Link>\n )}\n </Box>\n </EntitiesMapContext.Provider>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n position: 'relative',\n height: '100%'\n }\n});\n","import React, {useContext} from 'react';\nimport {LinearLoadIndicator, WorkflowTaskCard, WorkflowTasksContext} from '@reltio/components';\nimport {useStyles} from './styles';\n\nexport const WorkflowList = () => {\n const styles = useStyles();\n const {tasks, loading} = useContext(WorkflowTasksContext);\n\n return (\n <div className={styles.wrapper}>\n {loading && <LinearLoadIndicator />}\n {tasks &&\n tasks.map((task) => {\n return <WorkflowTaskCard key={task.taskId} task={task} />;\n })}\n </div>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"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: \"svg2697213709a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", {\n transform: \"translate(-2 -2)\"\n}, React.createElement(\"mask\", {\n id: \"svg2697213709b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2697213709a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2697213709b)\",\n d: \"M0 0h24v24H0z\"\n}))))));","import React, {useContext, VFC} from 'react';\nimport {Badge as Badge} from '@material-ui/core';\nimport CollaborationIcon from '../../icons/CollaborationIcon.svg';\nimport {CollaborationContext} from '@reltio/components';\nimport {calcTotalCommentItems} from '@reltio/mdm-sdk';\nimport {useStyles} from '../../styles';\n\nexport const CollaborationButton: VFC = () => {\n const {commentsMap} = useContext(CollaborationContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={calcTotalCommentItems(commentsMap)}\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <CollaborationIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst WorkflowPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Ready to go with the flow?')}\n secondaryText={i18n.text(\n 'Suggest a change or submit a match review, and we’ll kick off a workflow task to get things going.'\n )}\n />\n);\n\nexport default WorkflowPanelEmptyState;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst CollaborationPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Care to join the conversation?')}\n secondaryText={i18n.text(\n 'Leave comments for team members anywhere in the Profile page, and we’ll record it here.'\n )}\n />\n);\n\nexport default CollaborationPanelEmptyState;\n","import React, {useCallback, useContext, useEffect, useState, VFC} from 'react';\nimport {pipe, propEq, reject, pluck} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {\n CollaborationContext,\n SideButtonsPanel,\n SidePanelContentHeader,\n SidePanel,\n WorkflowTasksContext,\n AddWorkflowButton,\n HistoryView,\n HistoryHeader,\n HistoryPanelEmptyState,\n useHistory,\n useHistoryEnabled\n} from '@reltio/components';\nimport {calcTotalCommentItems, Entity, getEntityType, isTempUri, Metadata} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent} from '@reltio/mdm-module';\nimport HistoryIcon from '@material-ui/icons/History';\nimport {WorkflowButton} from './components/WorkflowButton/WorkflowButton';\nimport {CollaborationList} from './components/CollaborationList/CollaborationList';\nimport {WorkflowList} from './components/WorkflowList/WorkflowList';\nimport {CollaborationButton} from './components/CollaborationButton/CollaborationButton';\nimport WorkflowPanelEmptyState from './components/WorkflowPanelEmptyState/WorkflowPanelEmptyState';\nimport CollaborationPanelEmptyState from './components/CollaborationPanelEmptyState/CollaborationPanelEmptyState';\n\nimport {useStyles} from './styles';\n\nconst DEFAULT_PANEL_WIDTH = 480;\nexport enum ActivePanel {\n Workflow,\n Collaboration,\n History\n}\nconst getSecondTitle = (total: number): string => {\n if (total) {\n return total === 1 ? i18n.text('${total} item', {total}) : i18n.text('${total} items', {total});\n }\n};\n\nexport const RightSidePanel: VFC = () => {\n const styles = useStyles();\n const isWorkflowSideViewEnabled = useSelector(mdm.selectors.isWorkflowSideViewEnabled) as boolean;\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const isCollaborationSideViewEnabled = useSelector(mdm.selectors.isCollaborationSideViewEnabled) as boolean;\n const isCollaborationEnabled = useSelector(mdm.selectors.isCollaborationEnabled) as boolean;\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n\n const workflowTasksContext = useContext(WorkflowTasksContext);\n const collaborationContext = useContext(CollaborationContext);\n\n const [active, setActive] = useState<ActivePanel>(null);\n const toggleActive = useCallback((newId: ActivePanel): void => {\n setActive((active) => (active === newId ? null : newId));\n }, []);\n const resetActive = useCallback((): void => {\n setActive(null);\n }, []);\n const isOpen = active !== null;\n const isHistoryTabActive = active === ActivePanel.History;\n const {isHistoryEnabled, isProfilePersisted} = useHistoryEnabled({isHistoryTabActive, entity});\n\n const {\n historyFilter,\n onApplyFilter,\n isLoading,\n historicUris,\n historyWithTotal,\n canLoadMore,\n onLoadMore\n } = useHistory({entity, enabled: isHistoryEnabled});\n\n const enabledWorkflowButton = isWorkflowSideViewEnabled && isWorkflowEnabled && !isTempUri(entity?.uri);\n const enabledCollaborationButton = isCollaborationSideViewEnabled && isCollaborationEnabled;\n const collaborationTotal = calcTotalCommentItems(collaborationContext?.commentsMap);\n\n const elements = [\n {\n buttonProps: {\n id: ActivePanel.Workflow,\n icon: WorkflowButton,\n tooltipTitle: i18n.text('Workflow')\n },\n content: workflowTasksContext?.total ? <WorkflowList /> : <WorkflowPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Workflow'),\n secondTitle: getSecondTitle(workflowTasksContext?.total),\n rightContent: <AddWorkflowButton />\n },\n hidden: !enabledWorkflowButton\n },\n {\n buttonProps: {\n id: ActivePanel.Collaboration,\n icon: CollaborationButton,\n tooltipTitle: i18n.text('Collaboration')\n },\n content: collaborationTotal ? <CollaborationList /> : <CollaborationPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Collaboration'),\n secondTitle: getSecondTitle(collaborationTotal)\n },\n hidden: !enabledCollaborationButton\n },\n {\n buttonProps: {\n id: ActivePanel.History,\n icon: HistoryIcon,\n tooltipTitle: i18n.text('History')\n },\n content: isProfilePersisted ? (\n <HistoryView\n isLoading={isLoading}\n historyWithTotal={historyWithTotal}\n contributorsUris={historicUris}\n entityUri={entity?.uri}\n historyEvent={historyEvent}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n />\n ) : (\n <HistoryPanelEmptyState />\n ),\n headerProps: {\n content: (\n <HistoryHeader\n total={isProfilePersisted ? (historicUris?.length || 0) + 1 : undefined}\n entityType={getEntityType(metadata, entity?.type)}\n filter={historyFilter}\n onApplyFilter={onApplyFilter}\n />\n )\n }\n }\n ];\n\n const visibleElements = reject(propEq('hidden', true))(elements);\n\n useEffect(() => {\n if (elements[active]?.hidden) {\n resetActive();\n }\n }, [active, elements, resetActive, visibleElements]);\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen} width={DEFAULT_PANEL_WIDTH}>\n {!elements[active]?.hidden && (\n <>\n <SidePanelContentHeader {...elements[active]?.headerProps} onClose={resetActive} />\n {elements[active]?.content}\n </>\n )}\n </SidePanel>\n <SideButtonsPanel\n buttonsProps={pipe(reject(propEq('hidden', true)), pluck('buttonProps'))(elements)}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst accordionSummaryHeight = '48px';\nconst defaultBorderStyle = '1px solid rgba(0, 0, 0, .125)';\n\nconst useStyles = makeStyles((theme) => ({\n accordion: {\n borderTop: defaultBorderStyle,\n borderBottom: defaultBorderStyle,\n fontSize: '13px',\n boxShadow: 'none',\n '&:not(:first-child)': {\n borderTop: 0\n },\n '&:before': {\n display: 'none'\n },\n '&$accordionExpanded': {\n margin: 'auto'\n }\n },\n accordionExpanded: {},\n accordionSummary: {\n display: 'flex',\n alignItems: 'center',\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight,\n '&$accordionSummaryExpanded': {\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight\n }\n },\n accordionSummaryHeading: {\n flex: 1,\n fontSize: theme.typography.pxToRem(13),\n fontWeight: theme.typography.fontWeightRegular\n },\n accordionSummaryExpanded: {},\n accordionSummaryContent: {\n display: 'flex',\n alignItems: 'center'\n },\n accordionDetails: {\n maxHeight: '21vh',\n overflow: 'auto',\n paddingTop: 0,\n paddingBottom: 0,\n '& ul': {\n paddingLeft: '23px',\n marginTop: '3px'\n },\n '& li': {\n paddingLeft: '9px',\n paddingBottom: '8px'\n }\n },\n parents: {\n color: theme.palette.text.primary\n },\n errorsAccordion: {\n backgroundColor: '#FFF4F6',\n borderColor: '#FFB8B3'\n },\n errorsAccordionDetails: {\n color: '#DD2C00'\n },\n warningsAccordion: {\n backgroundColor: '#FFF9ED',\n borderColor: '#FFDD91'\n },\n warningsAccordionDetails: {\n color: '#CC7500'\n },\n icon: {\n marginRight: '8px'\n },\n errorIcon: {\n fill: '#FF1744'\n },\n warningIcon: {\n fill: '#F9A825'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, ReactNode, ElementType} from 'react';\nimport classnames from 'classnames';\nimport {Accordion as Accordion} from '@material-ui/core';\nimport {AccordionSummary as AccordionSummary} from '@material-ui/core';\nimport {AccordionDetails as AccordionDetails} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport useStyles from '../styles';\n\nimport {AttributeError} from '@reltio/mdm-sdk';\n\ntype Props = {\n panels: {\n id: string;\n title: string;\n icon: ReactNode;\n items: AttributeError[];\n accordionClassName: string;\n accordionDetailsClassName: string;\n }[];\n expandedPanelId: string;\n onToggle: (id: string) => (e, isExpanded: boolean) => void;\n ErrorComponent: ElementType;\n};\n\nexport const ErrorsPanel = memo(({panels, expandedPanelId, onToggle, ErrorComponent}: Props) => {\n const styles = useStyles();\n\n return panels.length > 0 ? (\n <div>\n {panels.map(({id, icon, title, items, accordionClassName, accordionDetailsClassName}) => (\n <Accordion\n key={id}\n square\n expanded={expandedPanelId === id}\n onChange={onToggle(id)}\n className={accordionClassName}\n classes={{root: styles.accordion, expanded: styles.accordionExpanded}}\n >\n <AccordionSummary\n classes={{\n root: styles.accordionSummary,\n expanded: styles.accordionSummaryExpanded,\n content: styles.accordionSummaryContent\n }}\n expandIcon={<ExpandMoreIcon />}\n >\n {icon}\n <Typography className={styles.accordionSummaryHeading}>{title}</Typography>\n </AccordionSummary>\n <AccordionDetails className={classnames(styles.accordionDetails, accordionDetailsClassName)}>\n <ul>\n {items.map((error, i) => (\n <ErrorComponent key={i} error={error} />\n ))}\n </ul>\n </AccordionDetails>\n </Accordion>\n ))}\n </div>\n ) : null;\n});\n\nErrorsPanel.displayName = 'ErrorsPanel';\n","import {equals, identity, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n AttributeError,\n AttributeType,\n AttributeValuePathItemType,\n ErrorSource,\n ErrorType,\n findAttributeTypeByUri,\n Metadata\n} from '@reltio/mdm-sdk';\n\nconst clearError = omit(['deactivated', 'path']);\nexport const areErrorsEqual = (errors1: AttributeError[] = [], errors2: AttributeError[] = []) =>\n errors1.length === errors2.length && equals(errors1.map(clearError), errors2.map(clearError));\n\nexport const getDisplayedErrorMessage = (\n metadata: Metadata,\n {type, source, message, attributeTypeUri = '', attributeType}: AttributeError\n) => {\n if (type === ErrorType.missed && source === ErrorSource.local) {\n const attrType: AttributeType = attributeType || findAttributeTypeByUri(metadata, attributeTypeUri);\n return attrType ? i18n.text('${attribute} is required', {attribute: attrType.label}) : message;\n }\n return message;\n};\n\nexport const getDisplayedErrorPath = ({path: errorPath, uri}: AttributeError) => {\n return errorPath\n ?.slice(0, uri ? errorPath.length - 1 : errorPath.length)\n .filter(({type}) =>\n [AttributeValuePathItemType.attributeValue, AttributeValuePathItemType.relationConnection].includes(type)\n )\n .map(({label}) => label)\n .filter(identity)\n .join(' / ');\n};\n","import React, {memo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, Metadata} from '@reltio/mdm-sdk';\n\nimport useStyles from '../styles';\n\nimport {getDisplayedErrorMessage, getDisplayedErrorPath} from '../helpers';\n\ntype Props = {\n error: AttributeError;\n};\n\nexport const Error = memo(({error}: Props) => {\n const styles = useStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const displayedMessage = getDisplayedErrorMessage(metadata, error);\n const displayedErrorPath = getDisplayedErrorPath(error);\n return (\n <li>\n <span>{displayedMessage}</span>\n {displayedErrorPath && (\n <>\n <br />\n <span className={styles.parents}>{displayedErrorPath}</span>\n </>\n )}\n </li>\n );\n});\n\nError.displayName = 'Error';\n","import {useRef} from 'react';\nimport {areErrorsEqual} from './helpers';\n\nexport const useCachedErrors = (allErrors) => {\n const cacheForAllErrors = useRef(allErrors);\n const areEqualErrors = areErrorsEqual(allErrors, cacheForAllErrors.current);\n if (!areEqualErrors) {\n cacheForAllErrors.current = allErrors;\n }\n return cacheForAllErrors.current;\n};\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {partition} from 'ramda';\nimport ErrorIcon from '@material-ui/icons/Warning';\nimport WarningIcon from '@material-ui/icons/Error';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, isCriticalError} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\n\nimport {ErrorsPanel} from './components/ErrorsPanel';\nimport {Error} from './components/Error';\nimport {useCachedErrors} from './useCachedErrors';\n\nexport const ProfileErrorsPanel = () => {\n const styles = useStyles();\n const allErrors = useSelector(mdmModule.selectors.getProfileErrors);\n const cachedAllErrors = useCachedErrors(allErrors);\n\n const [errors, warnings]: [AttributeError[], AttributeError[]] = useMemo(\n () => partition(isCriticalError, cachedAllErrors),\n [cachedAllErrors]\n );\n const [expandedPanelId, setExpandedPanelId] = useState(null);\n const panels = useMemo(\n () =>\n [\n {\n id: 'errors',\n title: i18n.text('${number} ${errors}', {\n number: errors.length,\n errors: errors.length === 1 ? i18n.text('error') : i18n.text('errors')\n }),\n icon: <ErrorIcon className={classnames(styles.icon, styles.errorIcon)} />,\n items: errors,\n accordionClassName: styles.errorsAccordion,\n accordionDetailsClassName: styles.errorsAccordionDetails\n },\n {\n id: 'warnings',\n title: i18n.text('${number} ${warnings}', {\n number: warnings.length,\n warnings: warnings.length === 1 ? i18n.text('warning') : i18n.text('warnings')\n }),\n icon: <WarningIcon className={classnames(styles.icon, styles.warningIcon)} />,\n items: warnings,\n accordionClassName: styles.warningsAccordion,\n accordionDetailsClassName: styles.warningsAccordionDetails\n }\n ].filter(({items}) => items.length > 0),\n [errors, warnings, styles]\n );\n\n useEffect(() => {\n setExpandedPanelId('errors');\n }, [errors]);\n\n const handleChange = useCallback(\n (panelId: string) => (event, isExpanded: boolean) => {\n setExpandedPanelId(isExpanded ? panelId : null);\n },\n []\n );\n\n return panels.length > 0 ? (\n <ErrorsPanel panels={panels} expandedPanelId={expandedPanelId} onToggle={handleChange} ErrorComponent={Error} />\n ) : null;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Props = {\n maxWidth?: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n scrollWrapper: {\n flexGrow: 1,\n overflowY: 'auto'\n },\n emptyState: {\n backgroundColor: '#FAFAFA',\n height: '100%'\n },\n profileWrapper: ({maxWidth}: Props) => ({\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n maxWidth: maxWidth ? `${maxWidth}px` : '100%'\n }),\n profileContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n closeIcon: {\n paddingRight: '12px',\n boxSizing: 'content-box',\n '& path': {\n fill: '#fff'\n }\n },\n snackbar: {\n '& > div': {\n flexWrap: 'nowrap',\n alignItems: 'baseline'\n }\n }\n}));\n","import {Snackbar as Snackbar} from '@material-ui/core';\nimport {Portal as Portal} from '@material-ui/core';\nimport React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {ConfirmationDialog, SmallIconButton} from '@reltio/components';\nimport {NotificationItem, Action} from './types';\nimport {useStyles} from './styles';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\n\ntype Props = {\n notification: NotificationItem;\n};\n\nconst AUTO_HIDE_DURATION = 5000;\n\nexport const Notification = ({notification}: Props) => {\n const styles = useStyles({});\n const dispatch = useDispatch();\n const autoCloseInterval: number = useSelector(mdmModule.selectors.getAutoCloseInterval);\n const autoHideDuration =\n notification.autoHideDuration || (autoCloseInterval && autoCloseInterval * 1000) || AUTO_HIDE_DURATION;\n const [action, setAction] = useState<Action>();\n const [show, setShow] = useState(true);\n const closeSnackbar = useCallback(\n (_e?: unknown, reason?: string) => {\n if (reason !== 'clickaway') {\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n setShow(false);\n }\n },\n [notification]\n );\n const onDiscard = useCallback(() => {\n action.cancelAction && dispatch(action.cancelAction);\n setAction(undefined);\n }, [action]);\n const onConfirm = useCallback(() => {\n dispatch(action.applyAction);\n setAction(undefined);\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n }, [action, notification]);\n\n const actions = (\n <>\n {notification.actions.map((action) => (\n <Button\n key={action.label}\n color=\"primary\"\n size=\"small\"\n onClick={() => {\n if (action.needConfirmation) {\n setAction(action);\n } else {\n dispatch(action.applyAction);\n }\n setShow(false);\n }}\n >\n {action.label}\n </Button>\n ))}\n </>\n );\n const message = (\n <>\n <SmallIconButton className={styles.closeIcon} size=\"S\" icon={CloseIcon} onClick={closeSnackbar} />\n {notification.text}\n </>\n );\n\n return (\n <>\n <Portal container={document.body}>\n <Snackbar\n autoHideDuration={autoHideDuration}\n open={show}\n classes={{root: styles.snackbar}}\n action={actions}\n onClose={closeSnackbar}\n anchorOrigin={{vertical: 'bottom', horizontal: 'center'}}\n message={message}\n />\n </Portal>\n <ConfirmationDialog\n open={!!action}\n title={action?.confirmationText}\n content={action?.confirmationDescription}\n onSave={onConfirm}\n onDiscard={onDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n </>\n );\n};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {NotificationItem} from './types';\nimport {Notification} from './Notification';\n\nexport const Notifications = () => {\n const notifications: NotificationItem[] = useSelector(mdm.selectors.getNotifications);\n if (!notifications) return null;\n return (\n <>\n {notifications.slice(-1).map((n) => (\n <Notification key={n.id} notification={n} />\n ))}\n </>\n );\n};\n","import React, {memo, useCallback, useContext, useEffect, useMemo, useState, useRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch, useSelector} from 'react-redux';\nimport hash from 'object-hash';\nimport {\n debounce,\n Entity,\n fixNonUniqViewsIds,\n getProfileObjectIdsForCollaboration,\n ProfilePerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent, profile} from '@reltio/mdm-module';\nimport {\n CollaborationContext,\n WorkflowTasksContext,\n UsersContext,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n EmptyState,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n useSavedStateForEntityType,\n useCollaboration,\n useUsers,\n useWorkflowTasks,\n HistoryDiffContext,\n useHistoryDiff,\n useHistorySlice,\n PopupBoundariesContext\n} from '@reltio/components';\n\nimport {ProfileSavedState, Layout} from '../../types';\n\nimport {ProfileLayout} from '../ProfileLayout';\nimport {PerspectiveProfileBand} from '../PerspectiveProfileBand';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport {ProfileErrorsPanel} from '../ProfileErrorsPanel';\nimport {useProfileValidation} from '../hooks/useProfileValidation';\n\nimport {useStyles} from './styles';\nimport {Notifications} from '../Notifications';\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: () => Promise<Record<string, ProfileSavedState>>;\n};\n\nconst SAVE_STATE_DEBOUNCE_DELAY = 1000;\nconst emptyState = {} as ProfileSavedState;\nconst ProfilePerspectiveView = memo(({config, saveState, getSavedState}: Props) => {\n const styles = useStyles({maxWidth: config?.maxWidth});\n const dispatch = useDispatch();\n const getSavedStateAndFix = useCallback(() => {\n return getSavedState().then((state) => (state.layout ? {} : state));\n }, [getSavedState]);\n const scrollWrapperRef = useRef<HTMLDivElement>();\n const debouncedSaveState = useCallback(debounce(saveState, SAVE_STATE_DEBOUNCE_DELAY), [saveState]) as (\n state: Record<string, ProfileSavedState>\n ) => void;\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const entityTypeUri = entity ? entity.type : null;\n\n const {isLoaded, savedState = emptyState, updateSavedState} = useSavedStateForEntityType<ProfileSavedState>({\n getSavedState: getSavedStateAndFix,\n saveState: debouncedSaveState,\n entityTypeUri\n });\n const [layout, setLayout] = useState<Layout>([]);\n const [views, setViews] = useState<ProfilePerspectiveConfig['views']>([]);\n\n const configHash = useMemo(() => hash(config), [config]);\n\n const isHistoryActive = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const objectIds = useMemo(() => getProfileObjectIdsForCollaboration(entity), [entity]);\n const collaboration = useCollaboration({objectIds});\n const emptyCollaboration = useContext(CollaborationContext);\n const users = useUsers();\n const workflowTasks = useWorkflowTasks(config?.workflow);\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n useHistorySlice({entity, historyEvent});\n const historyDiff = useHistoryDiff();\n\n useEffect(() => {\n if (isLoaded) {\n const isConfigChanged = configHash !== savedState.configHash;\n const {views: fixedViews, layout: fixedLayout} = fixNonUniqViewsIds({\n views: isConfigChanged || !savedState.views ? config.views : savedState.views,\n layout: isConfigChanged ? config.layout : savedState.layout\n });\n setViews(fixedViews);\n setLayout(fixedLayout);\n }\n }, [isLoaded, savedState, entityTypeUri]); // eslint-disable-line\n\n useEffect(() => {\n dispatch(profile.views.actions.profileViewsSet(views));\n }, [dispatch, views]);\n\n useEffect(() => {\n if (config.sidePanelViews) {\n dispatch(profile.sidePanelViews.actions.sidePanelViewsLoaded(config.sidePanelViews));\n }\n }, [config]); // eslint-disable-line\n\n useEffect(() => {\n if (scrollWrapperRef.current) {\n scrollWrapperRef.current.scrollTop = 0;\n }\n }, [entity?.uri]);\n\n useProfileValidation();\n\n const handleLayoutChange = useCallback(\n (layout: Layout) => {\n updateSavedState({layout, views, configHash});\n setLayout(layout);\n },\n [updateSavedState, configHash, views]\n );\n const boundariesElement = scrollWrapperRef.current;\n\n const popupBoundariesValue = useMemo(\n () => ({\n element: boundariesElement,\n priority: ['top', 'bottom']\n }),\n [boundariesElement]\n );\n return (\n <ProfilePerspectiveViewContext.Provider value={true}>\n <UsersContext.Provider value={users}>\n <CollaborationContext.Provider value={isHistoryActive ? emptyCollaboration : collaboration}>\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <HistoryDiffContext.Provider value={historyDiff}>\n <div className={styles.perspectiveView}>\n {(!isLoaded || !entity?.uri) && <LinearLoadIndicator />}\n {isLoaded && entity?.uri ? (\n <div className={styles.profileContainer}>\n <div className={styles.profileWrapper}>\n <PerspectiveProfileBand profileBandConfig={config.profileBand} />\n {!isHistoryActive && <ProfileErrorsPanel />}\n <div ref={scrollWrapperRef} className={styles.scrollWrapper}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ProfileLayout\n layout={layout}\n onLayoutChanged={handleLayoutChange}\n views={views}\n />\n </PopupBoundariesContext.Provider>\n </div>\n </div>\n <RightSidePanel />\n </div>\n ) : (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.NO_DATA}\n text={i18n.text('No data to display.')}\n variant={EMPTY_STATE_VARIANTS.embedded}\n />\n </div>\n )}\n <Notifications />\n </div>\n </HistoryDiffContext.Provider>\n </WorkflowTasksContext.Provider>\n </CollaborationContext.Provider>\n </UsersContext.Provider>\n </ProfilePerspectiveViewContext.Provider>\n );\n});\n\nProfilePerspectiveView.displayName = 'ProfilePerspectiveView';\n\nexport {ProfilePerspectiveView};\n","import {useCallback, useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {debounce, Entity, isDataTenantEntity, isTempUri, Mode} from '@reltio/mdm-sdk';\n\nexport const useProfileValidation = () => {\n const dispatch = useDispatch();\n const isValidateReadMode: boolean = useSelector(mdmModule.selectors.getValidateReadMode);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const {uri, updatedTime} = entity;\n const isDTEntity = isDataTenantEntity(entity);\n const mode: Mode = useSelector(mdmModule.selectors.getMode);\n const profileViews = useSelector(mdmModule.selectors.getProfileViews);\n const hasProfileViews = profileViews && profileViews.length > 0;\n\n const validate = useCallback(\n debounce((needDispatch: boolean) => {\n if (needDispatch) {\n dispatch(profile.actions.validateProfile());\n }\n }, 500),\n [dispatch]\n );\n\n useEffect(() => {\n const needDispatch =\n isValidateReadMode && !isDTEntity && uri && !isTempUri(uri) && mode === Mode.Viewing && hasProfileViews;\n validate(needDispatch);\n }, [validate, isDTEntity, isValidateReadMode, updatedTime, uri, mode, hasProfileViews]);\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\nimport MomentUtils from '@date-io/moment';\nimport {identity} from 'ramda';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {ErrorPopup, SandboxAPIContext, ViewIdContext} from '@reltio/components';\nimport {convertOldProfileConfig, ProfilePerspectiveConfig, promisifyCallback} from '@reltio/mdm-sdk';\nimport {ProfileSavedState} from '../types';\nimport ProfilePerspectiveView from '../components/ProfilePerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'profilePerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: (clb: (state: Record<string, ProfileSavedState>) => void) => void;\n qxSandboxApi?: {\n getCurrentPerspectiveId: () => string;\n showPerspective: (perspective) => void;\n setEntityUri: (entityUri: string, listener: () => void) => void;\n };\n};\n\nconst ProfilePerspective = ({config, store, onResize = identity, saveState, getSavedState, qxSandboxApi}: Props) => {\n const getSavedStatePromisified: () => Promise<Record<string, ProfileSavedState>> = useCallback(\n promisifyCallback(getSavedState),\n [getSavedState]\n );\n\n const processedConfig = useMemo(() => config && convertOldProfileConfig(config), [config]);\n\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={processedConfig?.id}>\n <SandboxAPIContext.Provider value={qxSandboxApi}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {processedConfig && (\n <ProfilePerspectiveView\n config={processedConfig}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup showErrorFromStore={true} />\n </>\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </SandboxAPIContext.Provider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default ProfilePerspective;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n titleContainer: {\n overflow: 'hidden',\n fontSize: '16px',\n fontWeight: 'normal',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n alignItems: 'center',\n display: 'flex',\n minHeight: '48px',\n color: theme.palette.text.secondary\n },\n link: {\n fontSize: '16px',\n fontWeight: 'normal'\n },\n icon: {\n height: '18px',\n color: theme.palette.text.secondary\n },\n totalCaption: {\n lineHeight: 'inherit',\n fontSize: '14px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px'\n },\n totalNumber: {\n fontSize: '16px',\n color: 'rgba(0,0,0,0.87)',\n marginRight: '5px',\n fontWeight: 500\n }\n}));\n","import React, {useCallback, useContext} from 'react';\nimport {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {FacetViewHeader, Spacer, ViewIdContext} from '@reltio/components';\nimport {Link as Link} from '@material-ui/core';\nimport ArrowForwardIosRoundedIcon from '@material-ui/icons/ArrowForwardIosRounded';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total?: number;\n};\n\nexport const TagListHeader = ({total = 0}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const viewId = useContext(ViewIdContext);\n\n const switchToProfile = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'profile', viewId}));\n }, [dispatch, viewId]);\n\n return (\n <FacetViewHeader title=\"\">\n <div className={styles.titleContainer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.link}\n onClick={switchToProfile}\n underline=\"none\"\n >\n {i18n.text('Profile')}\n </Link>\n <ArrowForwardIosRoundedIcon className={styles.icon} />\n {i18n.text('Tags')}\n </div>\n <Spacer />\n <Typography className={styles.totalCaption} variant=\"caption\">\n <span className={styles.totalNumber}>{i18n.number(total, '0,0')}</span>\n {i18n.text('total profiles')}\n </Typography>\n </FacetViewHeader>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n toolbar: {\n display: 'flex',\n flexShrink: 0,\n background: 'white',\n borderBottom: '1px solid rgba(0,0,0,0.1)',\n boxSizing: 'border-box',\n paddingLeft: '16px'\n },\n avatar: {\n color: 'rgba(0, 0, 0, 0.38)',\n marginRight: '12px'\n },\n label: {\n fontSize: '20px',\n letterSpacing: '0.25px',\n lineHeight: '1.2',\n fontWeight: 500,\n color: theme.palette.text.primary,\n wordBreak: 'break-word'\n }\n}));\n","import React from 'react';\nimport TagIcon from '@material-ui/icons/LocalOffer';\nimport {Toolbar as Toolbar} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n};\n\nexport const TagProfileBand = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={styles.toolbar}>\n <TagIcon className={styles.avatar} />\n <Typography variant=\"h6\" className={styles.label}>\n {label}\n </Typography>\n </Toolbar>\n );\n};\n","import {useCallback, useMemo} from 'react';\nimport {map, assoc} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n Entity,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotals,\n getTotalFromDataTenant,\n TotalResponse,\n SearchFilter,\n GlobalSearchRequestOptions,\n getDataTenantFromEntityUri\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entityUri: string;\n tag: string;\n};\n\nexport const useTagsProvider = ({entityUri, tag}: Props) => {\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const dtssPath: string = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenant = useMemo(() => getDataTenantFromEntityUri(entityUri), [entityUri]);\n const filters: SearchFilter[] = useMemo(() => {\n return [\n {\n filter: 'equals',\n fieldName: 'tags',\n values: [tag]\n }\n ];\n }, [tag]);\n\n const isDT = !!dataTenant;\n\n const getEntities = useCallback(\n (filters: SearchFilter[] = [], options = {}): Promise<Entity[]> => {\n const requestOptions = {\n select: 'uri,label,type,secondaryLabel,defaultProfilePicValue,startDate,endDate',\n ...options\n };\n return isDT\n ? getFilteredEntitiesFromDataTenant({\n filters,\n options: requestOptions,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n }).then(map(assoc('dataTenant', dataTenant)))\n : getFilteredEntities(filters, requestOptions);\n },\n [isDT, dataTenant, tenant, dtssPath]\n );\n\n const requestEntities = useCallback(\n (max, offset): Promise<Entity[]> => {\n return getEntities(filters, {offset, max, ...globalSearchRequestOptions});\n },\n [filters, globalSearchRequestOptions, getEntities]\n );\n\n const requestTotal = useCallback((): Promise<number> => {\n const options = globalSearchRequestOptions;\n return (isDT\n ? getTotalFromDataTenant({\n filters,\n options,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n })\n : getTotals(filters, options)\n ).then((json) => (json as TotalResponse).total);\n }, [filters, globalSearchRequestOptions, isDT, dataTenant, tenant, dtssPath]);\n\n return {requestEntities, requestTotal};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n tagsContainer: {\n display: 'flex'\n },\n fullHeight: {\n flexGrow: 1,\n height: 0\n },\n tagsView: {\n margin: '16px',\n width: '100%',\n paddingTop: '4px'\n },\n listContainer: {\n flex: 1,\n display: 'flex',\n overflow: 'hidden',\n position: 'relative',\n flexDirection: 'column',\n minHeight: '4px'\n },\n entitiesList: {\n overflowY: 'auto',\n flexGrow: 1\n },\n pagination: {\n flexGrow: 0\n }\n}));\n","import React, {memo, useEffect, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdmModule from '@reltio/mdm-module';\nimport {GlobalSearchRequestOptions} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, LinearLoadIndicator, ProfilesList} from '@reltio/components';\nimport {TagListHeader} from './components/TagListHeader';\nimport {TagProfileBand} from './components/TagProfileBand';\nimport {useTag} from './hooks/useTag';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [25, 50, 100];\n\ntype Props = {\n tag?: string;\n entityUri?: string;\n};\n\nconst TagPerspectiveView = memo(({tag, entityUri}: Props) => {\n const styles = useStyles();\n\n const [rowsPerPage, setRowsPerPage] = useState(ROWS_PER_PAGE_OPTIONS[0]);\n const [page, setPage] = useState(0);\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n\n useEffect(() => {\n setPage(0);\n }, [tag, entityUri, globalSearchRequestOptions]);\n\n const {isLoading, total, entities} = useTag({tag, entityUri, page, rowsPerPage});\n const refScrollBlock = useRef(null);\n\n useEffect(() => {\n if (refScrollBlock.current) {\n refScrollBlock.current.scrollTop = 0;\n }\n }, [entities]);\n\n const hasPagination = total > ROWS_PER_PAGE_OPTIONS[0];\n\n return (\n <div className={styles.perspectiveView}>\n <TagProfileBand label={tag} />\n <div className={classnames(styles.tagsContainer, {[styles.fullHeight]: hasPagination})}>\n <BasicView className={styles.tagsView}>\n <TagListHeader total={total} />\n <div className={styles.listContainer}>\n {isLoading && <LinearLoadIndicator />}\n {total > 0 && (\n <div className={styles.entitiesList} ref={refScrollBlock}>\n <ProfilesList entities={entities} />\n </div>\n )}\n {hasPagination && (\n <div className={styles.pagination}>\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n onChangeRowsPerPage={setRowsPerPage}\n />\n </div>\n )}\n </div>\n </BasicView>\n </div>\n </div>\n );\n});\n\nTagPerspectiveView.displayName = 'TagPerspectiveView';\n\nexport {TagPerspectiveView};\n","import {useCallback, useEffect, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch} from 'react-redux';\nimport {useSafePromise} from '@reltio/components';\nimport {ui} from '@reltio/mdm-module';\nimport {Entity, getRequestErrorMessage} from '@reltio/mdm-sdk';\nimport {useTagsProvider} from './useTagsProvider';\n\ntype Props = {\n tag: string;\n entityUri: string;\n page: number;\n rowsPerPage: number;\n};\n\nexport const useTag = ({tag, entityUri, page = 0, rowsPerPage = 50}: Props) => {\n const dispatch = useDispatch();\n\n const safeRequestTotalPromise = useSafePromise();\n const safeRequestEntitiesPromise = useSafePromise();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [total, setTotal] = useState<number>(0);\n const [entities, setEntities] = useState<Entity[]>([]);\n\n const {requestEntities, requestTotal} = useTagsProvider({entityUri, tag});\n\n const onError = useCallback(\n (e) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(e, i18n.text('Something went wrong'))));\n setTotal(0);\n },\n [dispatch]\n );\n\n useEffect(() => {\n safeRequestTotalPromise(requestTotal()).then(setTotal).catch(onError);\n }, [requestTotal, safeRequestTotalPromise, onError]);\n\n useEffect(() => {\n setIsLoading(true);\n safeRequestEntitiesPromise(requestEntities(rowsPerPage, page * rowsPerPage))\n .then(setEntities)\n .catch(onError)\n .finally(() => setIsLoading(false));\n }, [page, rowsPerPage, requestEntities, safeRequestEntitiesPromise, onError]);\n\n return {isLoading, total, entities};\n};\n","import React from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\nimport {identity} from 'ramda';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {TagPerspectiveConfig} from '@reltio/mdm-sdk';\nimport TagPerspectiveView from '../components/TagPerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'tagPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: TagPerspectiveConfig;\n tag?: string;\n entityUri?: string;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n};\n\nconst TagPerspective = ({config, tag, entityUri, store, onResize = identity}: Props) => {\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <TagPerspectiveView tag={tag} entityUri={entityUri} />}\n <ErrorPopup showErrorFromStore={true} />\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default TagPerspective;\n"],"names":["customStyles","input","currentStyles","fontSize","menuPortal","zIndex","useStyles","makeStyles","root","flex","title","paddingBottom","paddingLeft","dropDownInput","width","justifyContent","backgroundColor","borderTop","option","height","noOptionsMessage","entityType","selectedAttributes","className","onChange","disableUnderline","menuPlacement","metadata","useSelector","mdmModule","styles","prepareItems","useCallback","data","level","prevLabel","reduce","acc","item","hidden","chipLabel","label","push","value","uri","attrType","subAttributes","getAttributeTypeSubAttributes","concat","options","useMemo","attributes","classnames","Typography","variant","i18n","MultiSelect","TextFieldProps","InputProps","classes","components","DropdownIndicator","DropdownIndicatorWithIconButton","MultiValue","props","Option","isFocused","isSelected","innerProps","AttributeListItem","checked","labelInText","pipe","defaultTo","menuPortalTarget","document","body","display","paddingRight","inputNumber","minWidth","marginRight","inputUnit","periods","interval","unit","onFocus","onNumberChange","getValue","parseInt","newValue","onUnitChange","newUnit","TextField","type","inputProps","min","SimpleDropDownSelector","placeholder","capitalize","map","loadingMessage","selectedUsers","valueToOption","prepareValues","values","tenant","servicesPath","cachedRequest","useRef","pluck","defaultOptions","getOptions","inputValue","current","getAllUsersForTenant","then","prop","users","filter","username","utils","filterUsers","ActivityTypes","getItemDataType","path","getActivityType","activity","items","firstItem","isValidActivity","includes","splitActivityByType","propOr","groupBy","ifElse","length","itemsTotal","stringifyDeltaValue","delta","isNil","Array","isArray","join","is","Object","toString","getActivityLabel","dropdownIndicator","transition","inputRoot","padding","dateOptionLabel","paper","localeFormat","moment","longDateFormat","inputRef","open","setOpen","useState","handleToggle","onCancel","fullWidth","formatDataTypeValue","dataTypeDefinition","DataTypes","formatValue","onClick","ref","endAdornment","selectProps","menuIsOpen","readOnly","InputLabelProps","shrink","Menu","autoFocus","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","style","DateRangePicker","onApply","DateRangeTypes","RequestStates","SingleAttributeContext","React","displayName","triggerButton","color","popupContent","paddingTop","maxWidth","checkboxControlRoot","marginTop","marginLeft","checkboxControlLabel","checkboxControlCheckbox","buttonRef","isOpen","setIsOpen","showInactive","toggleShowInactive","useContext","togglePopup","Button","Popover","FormControlLabel","control","Checkbox","e","target","totalCaption","lineHeight","letterSpacing","flexShrink","ovIcon","SingleAttributeHeader","caption","totalVisibleValues","showInactiveValuesMenu","searchQuery","setSearchQuery","setPage","totalNonVisibleValues","nonVisibleValues","attributeType","FacetViewHeader","HideOnShrink","widthToHide","VerticalDivider","margin","OvIcon","nonOvTotal","nonOvValues","ExpandableSearchInput","query","theme","moreButton","marginBottom","buttonLabel","fontWeight","icon","divider","ovFalse","inactive","noData","palette","text","secondary","getAttributeNameFromAttributeUri","getLastUriPart","search","some","String","getPagedLocalEntity","async","entity","attributeTypeUri","defaultMaxValues","Infinity","offset","findAttributeValuesByTypeUri","ovValues","isOv","getAttributeSource","slice","paging","totalOvValues","totalValues","emptyArray","SingleAttributeEditableContent","parentUri","noDataText","required","isRequired","cardinality","name","dispatch","useDispatch","viewId","ViewIdContext","modifiedEntity","state","errors","errorMessage","getAttributePagerActiveTypeErrorMessage","mode","attributeSource","entityValuesUris","pathOr","modifiedEntityValues","modifiedEntityValuesUris","showEmptyEditors","isTempUri","emptyEditorValue","createNewAttribute","isModifiedEntityValuesEmpty","isEmptyValue","showEmpty","newValues","onAddAttributes","params","profile","param","onChangeAttribute","onDeleteAttribute","onDeactivateError","onAdd","attribute","isComplexAttribute","canCreate","checkCanCreateAttribute","commonProps","crosswalks","showNonOv","isEmptyAttributeList","CardinalityMessage","ErrorMessage","message","Add","idx","key","attributeValue","lazy","ownError","getAttributeOwnError","Divider","originalValue","modifiedEntityValue","find","propEq","deleted","edited","value1","value2","cleanser","over","lensPath","cleanAttributesWith","valueTransformer","unless","omit","deleteEmptyComplex","identity","equals","areValuesEqual","cond","always","SingleAttributeReadableContent","flexDirection","content","position","overflow","flexGrow","pagination","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","isEditableMode","pivotingAttributes","hasValues","PivotingAttributeContext","BasicView","Box","LinearLoadIndicator","renderContent","BasicTablePagination","count","rowsPerPage","rowsPerPageOptions","onChangePage","useSingleAttributeLoader","canShowHistoryDiff","attributeUri","setValues","setPaging","setIsLoading","safePromise","useSafePromise","attributeValuesRef","apiPath","entitySelector","isHistoryModeEnabled","diff","attributeTypeName","attributeTypeSource","findAttributeValues","findAttributeTypeByUri","globalFilter","loadAttributes","isReadableAttribute","isFirstLevelAttributeUri","rest","request","isDataTenantEntity","getPagedEntity","undefined","response","loadedValue","finally","useEffect","useDidUpdateEffect","partitionByOv","partition","totalProp","has","RelationsViewStateContext","button","sortControls","alignItems","sortSelectorRoot","sortSelectorMenuItem","sortOrderButton","FilterButton","sortOrder","toggleSortOrder","sortOption","changeSortOption","sortOptions","hasSortOptions","isAsc","DropDownEditor","entries","menuItem","MenuProps","SmallIconButton","tooltipTitle","ArrowUpwardIcon","ArrowDownwardIcon","size","header","ImportDTContext","MAX","Math","pow","cursor","top","left","userSelect","badge","badgePosition","right","MultipleImportIcon","Badge","anchorOriginTopRightRectangle","badgeContent","CloudDownload","ImportFromDT","tenants","selectedTenant","onConfirmImport","onCancelConfirmation","onImportClick","dataTenants","reloadRelations","setTenants","setSelectedTenant","dtssPath","customerTenant","maxDtssImport","checkHasNonImportedConnections","importFromDT","Promise","all","hasNonImportedRelations","dataTenant","id","hasNonImportedConnections","modifiedTenants","importDTConnections","catch","error","ui","getRequestErrorMessage","useImportFromDTLoader","oneTenant","labelOnButton","indexOf","CloudDownloadIcon","DropDownMenuButton","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","menuItems","ConfirmationDialog","discardCaption","saveCaption","onDiscard","onSave","total","changeSearchQuery","tooltip","tooltipContent","secondaryLabel","progress","children","tooltipProps","setSecondaryLabel","onOpen","getDataTenantEntitySecondaryLabel","getEntitySecondaryLabel","CircularProgress","colorPrimary","Tooltip","disableFocusListener","useRelationInfo","connection","relation","getEntityType","entityLabel","getLabel","preparedUri","getEntityUriForLink","relationLabel","getRelationTypeLabelFromMetadata","relationType","container","SuggestedButtons","acceptRelation","ignoreRelation","alignSelf","row","minHeight","rowInactive","background","inactiveBackground","entityAvatar","entityLabelContainer","textDecoration","primary","main","editButtonsContent","editButtons","removed","editedLabel","fontStyle","EditableRelationItem","memo","showControls","onRemoveRelation","onEditRelation","onAcceptRelation","onIgnoreRelation","renderRelationArrowButton","checkRemoved","checkEdited","ignored","checkIgnored","isActive","isActiveObject","canRemove","canUpdate","Mode","isRemoved","relationTypeMetadata","getRelationType","checkMetadataForDelete","checkMetadataForUpdate","checkRelationPermission","handleRemoveRelation","relationUri","handleEditRelation","handleAcceptRelation","handleIgnoreRelation","suggested","EditIcon","DeleteIcon","suggustedButtonsContent","disabled","captionText","EntityTypeIcon","EntityUriLink","getFirstRelationTypeObject","inRelations","outRelations","prepareRelation","direction","relations","wrapInArrayIfNeeded","Directions","arrowIcon","RelationArrowButton","showSecondLevel","parentEntityUri","contentSecondLevel","checkNew","ArrowDropDown","ArrowRight","secondLevelContent","SecondLevelWrapper","connections","toggleShowSecondLevel","loadRelations","loading","relationActivityFilter","setShowSecondLevel","setLoading","activityFilter","requestConfig","returnObjects","returnDates","activeness","ActivityFilter","getRelationsForEntity","show","useSecondLevelConnections","entitiesMap","getEntitiesMapForConnections","EntitiesMapContext","RelationsContent","relationToAdd","relationsToEdit","checkIfCanAddRelations","onAddRelation","newConnection","createNewConnectionWithDefaultRelationType","connectionToRemove","defaultRelationTypeObject","connectionWithDefaultRelationType","evolve","object","relationDirection","newConnections","currentConnections","canAddRelations","isEmptyRelationList","getRelationEditableContent","openedRelation","allowOnlyCreateNew","itemKey","RelationEditor","shouldShowAddRelationButton","shouldShowRelationEditorToAdd","attributesList","RelationAttributes","currentEntityUri","firstLevelRelationAttrTypes","getRelationAttributesList","attributeListEntity","getActivenessAttributes","showAttributesList","getAttributesListForReadMode","objectIds","getAttributeValuesUris","getCommentsCount","CollaborationContext","isEmpty","additionalRelatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","RelatedObjectUrisContext","attrTypes","ShowDetailsButton","onToggle","tooltipPlacement","InfoIconSelected","InfoIcon","wordBreak","showDetails","suggestedWrapper","commentsContainer","additionalButtonsWrapper","labelWrapper","RelationItem","isSuggested","setShowDetails","relatedObjectUris","COMMENTS_CONTAINER_VISIBILITY_AREA","CommentsContainer","getConnectionRelationUriForLink","objectType","allowOnlyOneComment","getCountOfLikes","ratings","rating","getCountOfDislikes","calcWidthOfLikesScale","calcWidthOfDislikesScale","wrapper","averageRating","scale","likesScale","dislikesScale","counts","likesCount","Ratings","mean","calcAverageRating","toFixed","ThumbUp","ThumbDown","textTransform","likeButton","RatingsButtons","onAgree","onDisagree","ratingOfCurrentUser","user","endIcon","buttonContent","comment","entityTypeIcon","showDetailsButton","relationAttributes","RelationComplexItem","rateRelation","RelationsList","mainEnityUri","isComplex","relationTypeObject","ignoreSuggestedRelation","relatedEntityUri","startDate","endDate","isInDirection","startEntityUri","endEntityUri","createRelation","useSuggestedRelations","getRelationshipsObjectIdsForCollaboration","list","selectors","getEntity","getMode","RelationsView","getConnectionsWithDraftsByViewId","getTotalByViewId","sorting","order","field","queryClause","Maybe","filterValueToQueryStringWithQuotes","queryString","orSome","FilterBuilder","addClause","build","buildRelationsFilter","reload","useRelationsLoader","importDTContextValue","pick","Provider","TableAttributeContext","CHANGE_SEARCH_QUERY","actions","basicTableViewState","createStandardAction","reducer","action","payload","removedStyle","tableContainer","fontFamily","rowCell","transform","headCell","pointerEvents","withFilterAtBottom","DefaultHeadCellRenderer","getColumnsDataFromAttributes","attr","attributeUriToSearchUri","getAttrDataTypeDefinition","uniqBy","getColumnsData","getReadableAttributesList","getAttrPathFromColumnId","split","getNestedPathByColumnId","columnId","isAttributeSearchUri","attrPath","getBasicTableColumnsData","columnData","sortable","resizable","nestedPath","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","DefaultCellValueRenderer","onChangeSearchQuery","filtersEnabled","onToggleFilters","columnsData","selectedColumns","onChangeColumns","enabled","ColumnsSettings","withTableContext","deletedUris","rowValue","Boolean","cell","CellValueRenderer","isSorted","otherProps","index","onEdit","onRemove","onSort","filters","onFilter","tableRowsData","assoc","getOvAttributeValuesByPath","getAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","checkIsEditableMode","renderRowCell","hoverRowIndex","setHoverRowIndex","canDelete","useConfigPermissions","hideRightContent","checkCanDeleteAttribute","isReltioCrosswalk","canEdit","checkCanEditAttribute","checkCanEdit","handleEditAttribute","handleRemoveAttribute","hoveredRowRightContent","context","BasicTable","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","onRowHover","hoveredRowRightContentWrapper","hoveredRowRightContentContainer","actionButtons","AttributeEditing","hasChanges","expanded","addButton","editor","TableAttributeView","visibleColumns","showTable","allColumnsData","checkHasChanges","onStartEditing","modifiedValues","editingValues","newAttributeUri","setNewAttributeUri","originalValues","setOriginalValues","newAttribute","createDefaultValues","attributeTypes","prev","editingValueOriginal","attributeItem","without","original","both","not","useEditableAttribute","preparedValues","hasConfigToCreate","visibleColumnsData","nodeCounter","generateId","processResponse","fakeRoot","nodeId","parentPaths","i","nextRoot","j","nextParent","entities","isRoot","node","rootIndex","link","selected","avatar","treeContainer","maxHeight","tree","buttonsContainer","ConfigContext","onImageLoadFail","src","DEFAULT_ICON","Node","absoluteImagePath","uiPath","entityLink","getEntityLink","onTitleClick","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","Avatar","onError","Link","to","getNodeKey","lineBlock","lineChildren","verticalLine","horizontalLineRight","textAlign","boxSizing","whiteSpace","nodeContent","bottom","rowContents","borderLeft","verticalAlign","buttonWrapper","collapsedButton","expandedButton","borderRight","rowTitle","nodeContentRenderer","scaffoldBlockPxWidth","toggleChildrenVisibility","treeIndex","nodeTitle","showToggleChildrenButton","treeNodeRenderer","lowerSiblingCounts","scaffoldBlockCount","scaffold","forEach","lowerSiblingCount","shift","scaffoldWidth","nodeStyle","rowHeight","slideRegionSize","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","this","viewBox","version","xmlns","stroke","strokeWidth","fill","fillRule","fillOpacity","d","onGraphOpen","ShowGraphIcon","bodyWrapper","resizableHandleContainer","resizableHandleVisibilityArea","visibility","resizableHandle","dragIcon","Component","WithResizableHandle","DragIndicator","stubView","fullHeight","component","boxShadow","borderRadius","filterWrongLat","gt","lt","fullscreenBtn","ImageLineCaption","totalImages","photoWord","ImageAttributeViewEditableContent","requestNextPageOfAttributeValues","attributeValues","imageSize","IMAGE_SIZE","imageMargin","imageWidth","imageHeight","matchesContainer","footer","ActionButtons","match","onStartRequest","onFinishRequest","canMerge","canMark","getActionPermissionForMatch","matchRules","actionButtonProps","ActionButtonMode","onMergeFinish","MergeButton","NotMatchButton","MatchCard","ProfileMatchCard","createObjectIdForPM","matchEntityUri","DEFAULT_OPTIONS","showTransitiveMatches","showInactiveEntities","DEFAULT_SORTING","ComponentStates","ResizableStubView","withResizableHandle","ResizableProfileAttributesView","AttributesView","excludeUris","includeUris","attributesCount","pinnedAttributes","ResizableProfileSingleAttributeView","singleAttribute","setShowInactive","useSingleAttribute","ResizableProfileTableAttributeView","tableAttribute","initialState","useReducer","requestFilters","mdmFilters","columnFilter","columnFilterToMdmFilter","buildMDMFilters","reject","changePage","toggleSort","changeFilter","toggleFilters","changeColumns","useActions","useTableAttribute","ResizableProfileRelationsView","relationsState","setSortOrder","setSortOption","useRelationsState","ResizableCustomView","basicViewRef","defaultTooltip","html","visible","updatedTooltip","useAPI","innerHTML","childNodes","child","appendChild","ResizableHierarchyPathView","treeData","setTreeData","graphUri","forest","newTrees","updateTreesWithNewEntity","updatedTime","getPathsTree","console","warn","useLoadPaths","graph","openGraph","graphType","generateNodeProps","rowInfo","ReactSortableTree","isVirtualized","canDrag","ResizableProfilePotentialMatchesView","turnOnDisableSpinner","turnOffDisableSpinner","matches","loadMatches","useMatchesLoader","onStartLoading","onFinishLoading","onFinishMatchAction","openPotentialMatchPerspective","mdmModuleUi","perspectiveId","getPotentialMatchesObjectIdsForCollaboration","getEntityUriFromMatchObject","showSeeAll","Loading","NoData","Loaded","underline","ResizableHierarchyTreeView","importedModule","default","HierarchyTreeView","ResizableRelationshipsTableView","RelationshipsTableView","ResizableEntityMapView","isFullscreen","onToggleFullscreen","mapKey","markers","setMarkers","resolve","useMarkers","loadingElement","defaultCenter","lat","lng","mapOptions","mapTypeControl","FullscreenExitIcon","FullscreenIcon","ReltioMap","defaultZoom","mapContainerClassName","ResizableImageAttributeView","entityValues","ImageAttributesLine","ViewsFactory","ViewTypes","ProfileViewTypes","getComponentBy","propName","store","HierarchyTree","HierarchyPaths","RelationsTable","Relations","Attributes","MapView","CustomView","ImageAttributeView","PotentialMatchesView","getComponent","Fallback","ViewComponent","isAutosize","Suspense","fallback","basicView","fixedSizeContainer","omittingProps","ProfileLayoutItem","layoutItemConfig","views","ResizeComponent","AutosizeComponent","ReactReduxContext","isCustomView","class","platform","CustomScriptPlatform","ProfileLayout","layout","layoutOptions","onLayoutChanged","ReltioGridLayout","LayoutItem","draggableHandle","xmlnsXlink","xlinkHref","mask","editingButtons","searchResults","comments","SuggestIcon","SvgIcon","CopyIcon","filterGroupByPermissions","group","isTempEntity","isWorkflowEnabled","canStartProcessInstanceSearchQuery","permission","isSuggestMode","checkMetadataPermission","PerspectiveProfileBand","profileBandConfig","profileOperation","entityTypeUri","isOperationSaving","Operation","isDisabledButtons","openCloneConfirmationDialog","setOpenCloneConfirmationDialog","onCloneDiscard","onClone","cloneAction","cloneActionProp","relationTypes","isRelationSuitableForEntityType","isRelationWithEntityType","when","complement","either","modifiedRelationTypes","isReference","getRelationTypeUriFromAttrType","T","relationshipTypesToCopy","useCloneAction","OPTIONS_GROUP","ModeTypes","description","CreateIcon","VisibilityIcon","BUTTONS_GROUP","window","confirm","shouldShowSelect","MetadataPermissions","hasOnlyReadPermission","accessibleOptionsGroup","accessibleButtonsGroup","handleChange","handleSave","ProfileBand","showEntityId","mr","ProfileBandHistory","ProfileBandNavigation","ModeSwitcherSelect","optionsGroup","buttonsGroup","WorkflowButton","WorkflowTasksContext","Inbox","showMoreLink","showMoreIcon","CollaborationList","getComments","pageToken","useCommentsEntitiesMap","objectId","commentId","CollaborationItem","KeyboardArrowDown","WorkflowList","tasks","task","WorkflowTaskCard","taskId","CollaborationButton","commentsMap","calcTotalCommentItems","CollaborationIcon","SidePanelEmptyState","secondaryText","ActivePanel","getSecondTitle","RightSidePanel","isWorkflowSideViewEnabled","isCollaborationSideViewEnabled","isCollaborationEnabled","historyEvent","workflowTasksContext","collaborationContext","active","setActive","toggleActive","newId","resetActive","isHistoryTabActive","History","isHistoryEnabled","isProfilePersisted","useHistoryEnabled","historyFilter","onApplyFilter","historicUris","historyWithTotal","canLoadMore","onLoadMore","useHistory","enabledWorkflowButton","enabledCollaborationButton","collaborationTotal","elements","Workflow","headerProps","mainTitle","secondTitle","rightContent","AddWorkflowButton","Collaboration","HistoryIcon","HistoryView","contributorsUris","HistoryPanelEmptyState","HistoryHeader","visibleElements","SidePanel","SidePanelContentHeader","SideButtonsPanel","buttonsProps","onButtonClick","activeIndexId","accordionSummaryHeight","defaultBorderStyle","accordion","borderBottom","accordionExpanded","accordionSummary","accordionSummaryHeading","typography","pxToRem","fontWeightRegular","accordionSummaryExpanded","accordionSummaryContent","accordionDetails","parents","errorsAccordion","borderColor","errorsAccordionDetails","warningsAccordion","warningsAccordionDetails","errorIcon","warningIcon","ErrorsPanel","panels","expandedPanelId","ErrorComponent","accordionClassName","accordionDetailsClassName","Accordion","square","AccordionSummary","expandIcon","ExpandMore","AccordionDetails","clearError","Error","displayedMessage","ErrorType","ErrorSource","getDisplayedErrorMessage","displayedErrorPath","errorPath","AttributeValuePathItemType","getDisplayedErrorPath","ProfileErrorsPanel","cachedAllErrors","allErrors","cacheForAllErrors","errors1","errors2","areErrorsEqual","useCachedErrors","warnings","isCriticalError","setExpandedPanelId","number","panelId","event","isExpanded","perspectiveView","overflowX","overflowY","scrollWrapper","emptyState","profileWrapper","profileContainer","closeIcon","snackbar","flexWrap","Notification","notification","autoCloseInterval","autoHideDuration","setAction","setShow","closeSnackbar","_e","reason","cancelAction","onConfirm","applyAction","needConfirmation","CloseIcon","Portal","Snackbar","confirmationText","confirmationDescription","Notifications","notifications","n","ProfilePerspectiveView","saveState","getSavedState","getSavedStateAndFix","scrollWrapperRef","debouncedSaveState","debounce","isLoaded","savedState","updateSavedState","useSavedStateForEntityType","setLayout","setViews","configHash","hash","isHistoryActive","getProfileObjectIdsForCollaboration","collaboration","useCollaboration","emptyCollaboration","useUsers","workflowTasks","useWorkflowTasks","workflow","useHistorySlice","historyDiff","useHistoryDiff","isConfigChanged","fixedViews","fixedLayout","fixNonUniqViewsIds","sidePanelViews","scrollTop","isValidateReadMode","isDTEntity","profileViews","hasProfileViews","validate","needDispatch","useProfileValidation","handleLayoutChange","boundariesElement","popupBoundariesValue","element","priority","ProfilePerspectiveViewContext","UsersContext","profileBand","PopupBoundariesContext","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","EMPTY_STATE_VARIANTS","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","onResize","qxSandboxApi","getSavedStatePromisified","promisifyCallback","processedConfig","convertOldProfileConfig","SandboxAPIContext","StylesProvider","MuiPickersUtilsProvider","MomentUtils","handleHeight","floor","ErrorPopup","showErrorFromStore","titleContainer","textOverflow","totalNumber","TagListHeader","switchToProfile","ArrowForwardIosRounded","Spacer","toolbar","TagProfileBand","Toolbar","tagsContainer","tagsView","listContainer","entitiesList","ROWS_PER_PAGE_OPTIONS","TagPerspectiveView","tag","setRowsPerPage","globalSearchRequestOptions","safeRequestTotalPromise","safeRequestEntitiesPromise","setTotal","setEntities","requestEntities","requestTotal","getDataTenantFromEntityUri","fieldName","isDT","getEntities","requestOptions","select","getFilteredEntitiesFromDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","json","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","onChangeRowsPerPage"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"1406.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeSelector/AttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/DateIntervalSelector.tsx","webpack://@reltio/remotes/../components/src/components/UserSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/UserSelector/UserSelector.tsx","webpack://@reltio/remotes/../components/src/components/activityLog/types/ActivityTypes.ts","webpack://@reltio/remotes/../components/src/components/activityLog/utils/activities.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/CustomDateRangeEditor.tsx","webpack://@reltio/remotes/../components/src/types/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileAttributesView/ProfileAttributesView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/contexts/SingleAttributeContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/SingleAttributeHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/hooks/helpers/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/SingleAttributeEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/SingleAttributeReadableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/SingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useSingleAttributeLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/RelationsViewStateContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/ImportDTContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/hooks/useImportFromDTLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/MultipleImportIcon.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/ImportFromDT.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/RelationsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/RelationTooltip.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationInfo.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/SuggestedButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/EditableRelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/permissions.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/relation.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/RelationArrowButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/SecondLevelWrapper.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSecondLevelConnections.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/RelationsEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/RelationAttributes.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/ShowDetailsButton/ShowDetailsButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/RelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/ratings.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/Ratings.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/RatingsButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/RelationComplexItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationsList.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSuggestedRelations.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/RelationsContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/RelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/filters.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationsState.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/contexts/TableAttributeContext.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/reducer.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/HeadCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/helpers/tableAttributeHelpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/AttributeTableHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/RowCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/EditButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/AttributeTable.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/AttributeEditing.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/hooks/useEditableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/TableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useLoadPaths.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/ConfigContext.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/Node.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/helpers.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/node-content-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/index.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/tree-node-data-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/icons/ShowGraph.svg","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/Sandbox/styles.ts","webpack://@reltio/remotes/../profile/src/components/views/HOCs/styles.ts","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withResizableHandle.tsx","webpack://@reltio/remotes/../profile/src/components/views/styles.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/useMarkers.js","webpack://@reltio/remotes/../profile/src/components/EntityMapView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/ImageLineCaption.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeViewEditableContent/ImageAttributeViewEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ActionButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/MatchCard.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ProfilePotentialMatchesView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewsFactory.tsx","webpack://@reltio/remotes/../profile/src/components/views/StubView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/ProfileSingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/hooks/useSingleAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/ProfileTableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/useTableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/ProfileRelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/Sandbox/CustomView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsView.tsx","webpack://@reltio/remotes/../profile/src/components/EntityMapView/EntityMapView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewComponent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/ProfileLayoutItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayout/ProfileLayout.tsx","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/suggest.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/copy.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/hooks/useCloneAction.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/PerspectiveProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowButton/WorkflowButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/CollaborationList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/WorkflowList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/CollaborationIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationButton/CollaborationButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowPanelEmptyState/WorkflowPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationPanelEmptyState/CollaborationPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/components/ErrorsPanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/components/Error.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/useCachedErrors.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/ProfileErrorsPanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/Notifications/styles.ts","webpack://@reltio/remotes/../profile/src/components/Notifications/Notification.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/Notifications.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/ProfilePerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useProfileValidation.ts","webpack://@reltio/remotes/../profile/src/perspectives/ProfilePerspective.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/TagListHeader.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/TagProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTagsProvider.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/TagPerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTag.ts","webpack://@reltio/remotes/../profile/src/perspectives/TagPerspective.tsx"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n },\n noOptionsMessage: {\n fontSize: '14px'\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe, defaultTo} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {AttributeOption} from '../../types';\nimport mdmModule from '@reltio/mdm-module';\nimport {MultiValueProps, OptionProps} from 'react-select';\nimport {AttributeType, getAttributeTypeSubAttributes, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport MultiValue from '../ReactSelect/commonComponents/MultiValue';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n entityType: TEntityType;\n selectedAttributes: AttributeOption[];\n className?: string;\n onChange?: (attributes: AttributeOption[]) => void;\n title?: string;\n disableUnderline?: boolean;\n menuPlacement?: string;\n};\n\nconst AttributeSelector = ({\n entityType,\n selectedAttributes,\n className,\n onChange,\n title,\n disableUnderline,\n menuPlacement = 'bottom'\n}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const styles = useStyles();\n\n const prepareItems = useCallback(\n (data: AttributeType[], level = 0, prevLabel = ''): AttributeOption[] => {\n return data.reduce((acc, item) => {\n if (item.hidden) return acc;\n const chipLabel = `${prevLabel && prevLabel + ' / '}${item.label}`;\n acc.push({\n label: item.label,\n value: item.uri,\n attrType: item,\n chipLabel,\n level\n });\n const subAttributes = getAttributeTypeSubAttributes(metadata, item);\n return acc.concat(subAttributes ? prepareItems(subAttributes, level + 1, chipLabel) : []);\n }, []);\n },\n [metadata]\n );\n\n const options = useMemo(() => prepareItems(entityType?.attributes || []), [entityType, prepareItems]);\n\n const CustomOption = ({isFocused, isSelected, data, label, innerProps}: OptionProps<AttributeOption, true>) => (\n <div {...innerProps}>\n <AttributeListItem\n checked={isSelected}\n level={data.level}\n data={data}\n label={label}\n labelInText={label}\n isFocused={isFocused}\n />\n </div>\n );\n\n const CustomMultiValue = ({data, ...props}: MultiValueProps<AttributeOption>) => (\n <MultiValue {...props}>{data.chipLabel}</MultiValue>\n );\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {title || i18n.text('Attribute')}\n </Typography>\n <MultiSelect\n value={selectedAttributes}\n options={options}\n TextFieldProps={{\n InputProps: {disableUnderline},\n classes: {root: styles.dropDownInput}\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton,\n MultiValue: CustomMultiValue,\n Option: CustomOption\n }}\n onChange={pipe(defaultTo([]), onChange)}\n styles={customStyles}\n classes={styles}\n menuPlacement={menuPlacement}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default AttributeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flex: 1\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px',\n fontSize: '14px'\n },\n inputNumber: {\n minWidth: '60px',\n marginRight: 10,\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n inputUnit: {\n width: '100%'\n }\n});\n","import React from 'react';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport capitalize from '@material-ui/core/utils/capitalize';\nimport {TextField as TextField} from '@material-ui/core';\nimport SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {getValue} from '../../core/utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n interval: [number, string];\n onChange: ([number, string]) => void;\n onFocus?: () => void;\n};\n\nconst periods = [\n i18n.text('minutes'),\n i18n.text('hours'),\n i18n.text('days'),\n i18n.text('weeks'),\n i18n.text('months'),\n i18n.text('years')\n];\n\nconst DateIntervalSelector = ({interval: [value, unit], onChange, onFocus}: Props) => {\n const styles = useStyles();\n const getIntervalFromValue = (newValue: number) => [newValue, unit];\n const getIntervalFromUnit = ({value: newUnit}: {value: string}) => [value, newUnit];\n const onNumberChange = pipe(getValue, parseInt, getIntervalFromValue, onChange);\n const onUnitChange = pipe(getIntervalFromUnit, onChange);\n return (\n <div className={styles.root}>\n <TextField\n type=\"number\"\n value={value || ''}\n onChange={onNumberChange}\n inputProps={{min: 1, onFocus: onFocus}}\n InputProps={{classes: {root: styles.input}}}\n className={styles.inputNumber}\n />\n <SimpleDropDownSelector\n label={''}\n placeholder={capitalize(unit)}\n className={styles.inputUnit}\n value={{value: unit, label: capitalize(unit)}}\n options={periods.map((value) => ({\n value,\n label: capitalize(value)\n }))}\n onChange={onUnitChange}\n TextFieldProps={{\n inputProps: {onFocus: onFocus},\n InputProps: {classes: {root: styles.input}}\n }}\n />\n </div>\n );\n};\n\nexport default DateIntervalSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n loadingMessage: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n }\n});\n","import React, {useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {defaultTo, pipe, pluck, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getAllUsersForTenant, User, utils} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n selectedUsers: string[];\n onChange: (activities: string[]) => void;\n className?: string;\n disableUnderline?: boolean;\n};\n\nconst UserSelector = ({selectedUsers, onChange, className, disableUnderline}: Props) => {\n const styles = useStyles();\n\n const valueToOption = (value: string) => ({value, label: value});\n const prepareValues = (values: string[]) => values.map(valueToOption);\n const filterUsers = (inputValue) => (users) =>\n inputValue ? users.filter((username) => utils.strings.search(username, inputValue)) : users;\n\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n\n const cachedRequest = useRef<Promise<{array: User[]}>>();\n const getOptions = (inputValue) => {\n if (!cachedRequest.current) {\n cachedRequest.current = getAllUsersForTenant({tenant, servicesPath});\n }\n return cachedRequest.current.then(\n pipe(prop('array'), pluck('username'), filterUsers(inputValue), prepareValues)\n );\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('User')}\n </Typography>\n <MultiSelect\n value={prepareValues(selectedUsers)}\n onChange={pipe(defaultTo([]), pluck('value'), onChange)}\n defaultOptions={true}\n getOptions={getOptions}\n TextFieldProps={{\n InputProps: {disableUnderline},\n className: styles.dropDownInput\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default UserSelector;\n","export enum ActivityTypes {\n MODEL_UPDATED = 'MODEL_UPDATED',\n ENTITY_REMOVED = 'ENTITY_REMOVED',\n ENTITY_CREATED = 'ENTITY_CREATED',\n ENTITY_CHANGED = 'ENTITY_CHANGED',\n ENTITIES_MERGED = 'ENTITIES_MERGED',\n ENTITIES_SPLITTED = 'ENTITIES_SPLITTED',\n ENTITY_LOST_MERGE = 'ENTITY_LOST_MERGE',\n RELATIONSHIP_CREATED = 'RELATIONSHIP_CREATED',\n RELATIONSHIP_REMOVED = 'RELATIONSHIP_REMOVED',\n RELATIONSHIP_CHANGED = 'RELATIONSHIP_CHANGED',\n POTENTIAL_MATCHES_FOUND = 'POTENTIAL_MATCHES_FOUND',\n NOT_MATCHES_SET = 'NOT_MATCHES_SET',\n NOT_MATCHES_RESET = 'NOT_MATCHES_RESET',\n PERIODIC_TASK_SCHEDULED = 'PERIODIC_TASK_SCHEDULED',\n ENTITIES_MERGED_MANUALLY = 'ENTITIES_MERGED_MANUALLY',\n POTENTIAL_MATCHES_REMOVED = 'POTENTIAL_MATCHES_REMOVED',\n ENTITIES_MERGED_ON_THE_FLY = 'ENTITIES_MERGED_ON_THE_FLY',\n USER_LOGIN = 'USER_LOGIN',\n USER_LOGOUT = 'USER_LOGOUT',\n USER_SEARCH = 'USER_SEARCH',\n USER_PROFILE_VIEW = 'USER_PROFILE_VIEW',\n COMMENT_ADDED = 'COMMENT_ADDED',\n COMMENT_UPDATED = 'COMMENT_UPDATED',\n COMMENT_DELETED = 'COMMENT_DELETED',\n ANALYTICS_ATTRIBUTES_CHANGED = 'ANALYTICS_ATTRIBUTES_CHANGED',\n SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE = 'SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE',\n GROUP_CREATED = 'GROUP_CREATED',\n GROUP_REMOVED = 'GROUP_REMOVED',\n GROUP_CHANGED = 'GROUP_CHANGED'\n}\n","import {groupBy, ifElse, map, path, pipe, propOr, values, is, isNil, includes} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActivityData, ActivityTypes, DeltaValue} from '../types';\n\nconst getItemDataType = path(['data', 'type']);\n\nexport const getActivityType = (activity: ActivityData) => {\n const {items, label} = activity;\n const [firstItem] = items || [];\n return getItemDataType(firstItem) || label;\n};\n\nexport const isValidActivityType = (type: string): boolean => pipe(values, includes(type))(ActivityTypes);\n\nexport const isValidActivity = pipe(getActivityType, isValidActivityType);\n\nexport const splitActivityByType = (activity: ActivityData) => {\n return pipe(\n propOr([], 'items'),\n groupBy(getItemDataType),\n values,\n ifElse(\n ({length}) => length > 1,\n map((items) => ({\n ...activity,\n items,\n itemsTotal: items.length\n })),\n () => [activity]\n )\n )(activity);\n};\n\nexport const stringifyDeltaValue = (delta: string | Record<string, DeltaValue[]> | DeltaValue | DeltaValue[]) => {\n if (isNil(delta)) {\n return '';\n } else if (typeof delta === 'string') {\n return delta;\n } else if (Array.isArray(delta)) {\n return delta.map(stringifyDeltaValue).join(', ');\n } else if (is(Object, delta)) {\n return 'value' in delta ? stringifyDeltaValue(delta.value) : stringifyDeltaValue(Object.values(delta));\n } else {\n return delta.toString();\n }\n};\n\nexport const getActivityLabel = (type: ActivityTypes) => {\n const labels = {\n [ActivityTypes.COMMENT_ADDED]: i18n.text('Comment added'),\n [ActivityTypes.COMMENT_DELETED]: i18n.text('Comment deleted'),\n [ActivityTypes.COMMENT_UPDATED]: i18n.text('Comment updated'),\n [ActivityTypes.ENTITIES_MERGED]: i18n.text('Profile merged'),\n [ActivityTypes.ENTITIES_MERGED_MANUALLY]: i18n.text('Profile merged manually'),\n [ActivityTypes.ENTITIES_MERGED_ON_THE_FLY]: i18n.text('Profile merged on the fly'),\n [ActivityTypes.ENTITIES_SPLITTED]: i18n.text('Profile un-merged'),\n [ActivityTypes.ENTITY_CHANGED]: i18n.text('Profile updated'),\n [ActivityTypes.ENTITY_CREATED]: i18n.text('Profile created'),\n [ActivityTypes.ENTITY_LOST_MERGE]: i18n.text('Profile lost merge'),\n [ActivityTypes.ENTITY_REMOVED]: i18n.text('Profile removed'),\n [ActivityTypes.GROUP_CHANGED]: i18n.text('Group updated'),\n [ActivityTypes.GROUP_CREATED]: i18n.text('Group created'),\n [ActivityTypes.GROUP_REMOVED]: i18n.text('Group removed'),\n [ActivityTypes.MODEL_UPDATED]: i18n.text('Model was updated'),\n [ActivityTypes.NOT_MATCHES_RESET]: i18n.text('Not matches reset'),\n [ActivityTypes.NOT_MATCHES_SET]: i18n.text('Not matches set'),\n [ActivityTypes.PERIODIC_TASK_SCHEDULED]: i18n.text('Periodic task was scheduled'),\n [ActivityTypes.POTENTIAL_MATCHES_FOUND]: i18n.text('Potential matches found'),\n [ActivityTypes.POTENTIAL_MATCHES_REMOVED]: i18n.text('Potential matches removed'),\n [ActivityTypes.RELATIONSHIP_CHANGED]: i18n.text('Relationship updated'),\n [ActivityTypes.RELATIONSHIP_CREATED]: i18n.text('Relationship created'),\n [ActivityTypes.RELATIONSHIP_REMOVED]: i18n.text('Relationship removed'),\n [ActivityTypes.USER_LOGIN]: i18n.text('Logged in'),\n [ActivityTypes.USER_LOGOUT]: i18n.text('Logged out'),\n [ActivityTypes.USER_PROFILE_VIEW]: i18n.text('Profile viewed'),\n [ActivityTypes.USER_SEARCH]: i18n.text('Searched'),\n [ActivityTypes.ANALYTICS_ATTRIBUTES_CHANGED]: i18n.text('Analytics attribute changed'),\n [ActivityTypes.SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE]: i18n.text('SFDC connector synchronization issue')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n dropdownIndicator: {\n transition: 'transform .15s ease'\n },\n inputRoot: {\n fontSize: '14px',\n height: 46\n },\n input: {\n padding: '0 12px 0'\n },\n dateOptionLabel: {\n minWidth: '100px'\n },\n paper: {\n minWidth: '112px'\n }\n});\n","import React, {useCallback, useRef, useState} from 'react';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {DataTypes, formatDataTypeValue} from '@reltio/mdm-sdk';\n\nimport {TextField as TextField} from '@material-ui/core';\nimport {Menu as Menu} from '@material-ui/core';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport DateRangePicker from '../../DateRangePicker/DateRangePicker';\nimport {useStyles} from './styles';\n\ntype DateValues = [Date, Date];\ntype Props = {\n values: DateValues;\n onChange: (values: DateValues) => void;\n onFocus?: () => void;\n};\n\nconst localeFormat = moment.localeData().longDateFormat('L');\n\nconst formatValue = (value: Date, placeholder: string) => {\n return isNil(value)\n ? `${placeholder}`\n : `${formatDataTypeValue({dataTypeDefinition: {type: DataTypes.TYPE_ACTIVENESS_DATE}}, value)}`;\n};\n\nconst CustomDateRangeEditor = ({values, onChange, onFocus}: Props) => {\n const placeholder = localeFormat;\n const inputRef = useRef(null);\n const [open, setOpen] = useState(false);\n const styles = useStyles();\n\n const onApply = (values: DateValues) => {\n onChange(values);\n setOpen(false);\n };\n\n const handleToggle = useCallback(() => {\n setOpen((open) => !open);\n onFocus();\n }, [onFocus]);\n\n const onCancel = () => {\n setOpen(false);\n };\n\n return (\n <div className={styles.root}>\n <TextField\n fullWidth\n value={values.map((value) => formatValue(value, placeholder)).join(' \\u2014 ')}\n onClick={handleToggle}\n variant=\"filled\"\n ref={inputRef}\n InputProps={{\n endAdornment: (\n <DropdownIndicatorWithIconButton\n selectProps={{classes: styles, menuIsOpen: open}}\n innerProps={{}}\n />\n ),\n disableUnderline: isNil(values),\n readOnly: true,\n classes: {\n root: styles.inputRoot,\n input: styles.input\n }\n }}\n InputLabelProps={{\n shrink: false\n }}\n placeholder={i18n.text(`${placeholder} \\u2014 ${placeholder}`)}\n />\n <Menu\n variant=\"menu\"\n open={open}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={inputRef.current}\n onClose={onCancel}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{\n autoFocusItem: open,\n style: {width: '100%'}\n }}\n >\n <DateRangePicker\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n values={values}\n onCancel={onCancel}\n onApply={onApply}\n type={DataTypes.TYPE_ACTIVENESS_DATE}\n />\n </Menu>\n </div>\n );\n};\n\nexport default CustomDateRangeEditor;\n","import {AttributeType} from '@reltio/mdm-sdk';\n\nexport type ReactGridLayoutItem = {\n i: string;\n x: number;\n y: number;\n w: number;\n h: number;\n minW?: number;\n minH?: number;\n maxW?: number;\n maxH?: number;\n static?: boolean;\n};\n\nexport type ReltioGridLayoutItem = {\n id: string;\n x: number;\n y: number;\n width: number;\n height: number;\n minWidth?: number;\n minHeight?: number;\n maxWidth?: number;\n maxHeight?: number;\n isStatic?: boolean;\n autosizing?: boolean;\n};\n\nexport type AttributeOption = {\n label: string;\n value: string;\n attrType: AttributeType;\n chipLabel: string;\n level: number;\n};\n\nexport enum DateRangeTypes {\n WITHIN = 'within',\n AGO = 'ago',\n BETWEEN = 'between'\n}\n\nexport type DateRangeFilter = {\n type: DateRangeTypes;\n period: [number, string] | [Date, Date];\n};\n\nexport type QueryBuilderAttributeData = {\n title: string;\n pathToTitle: Array<string>;\n fieldName: string;\n entityTypeUri: string;\n attrType: AttributeType;\n uri: string;\n groupName: string;\n filterOptions: Array<string>;\n};\n\nexport type QueryBuilderAttribute = {\n id: string;\n values: Array<unknown>;\n data: QueryBuilderAttributeData;\n filter: string;\n operator: string;\n};\n\nexport type AttributeSelectorItem = {\n attrType: AttributeType;\n entityTypeUri: string;\n fieldName: string;\n groupName: string;\n title: string;\n uri: string;\n children?: AttributeSelectorItem[];\n pathToTitle?: string[];\n};\n\nexport type AttributeSelectorItemsGroup = {\n id?: string;\n title: string;\n attributes: AttributeSelectorItem[];\n};\n\nexport type AttributeSelectionInfo = {\n index: number;\n checked: boolean;\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n};\n\nexport type BasicAttributeSelectorProps = {\n className?: string;\n itemsGroups: AttributeSelectorItemsGroup[];\n value: AttributeSelectorItem;\n onSelect: (selectInfo: AttributeSelectionInfo) => void;\n onRestoreFocus?: () => void;\n onOpenPopup?: () => void;\n getLabel?: (value: {fieldName?: string; pathToTitle?: string[]; title: string}) => string;\n disableRestoreFocus?: boolean;\n disableEnforceFocus?: boolean;\n single?: boolean;\n ungroup?: boolean;\n disabled?: boolean;\n hideCheckBox?: boolean;\n};\nexport enum RequestStates {\n INIT = 'init',\n LOADING = 'loading',\n LOADED = 'loaded',\n ERROR = 'error'\n}\n","import React from 'react';\nimport {AttributesView} from '@reltio/components';\nimport {AttributeViewConfig} from '@reltio/mdm-sdk';\n\ntype ProfileAttributesViewProps = {\n config: AttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileAttributesView = ({className, config}: ProfileAttributesViewProps) => {\n return (\n <AttributesView\n className={className}\n caption={config.caption}\n excludeUris={config.excludeUris}\n includeUris={config.includeUris}\n attributesCount={config.attributesCount}\n pinnedAttributes={config.pinnedAttributes}\n />\n );\n};\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\n\nexport const SingleAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n showInactive?: boolean;\n toggleShowInactive?: (checked: boolean) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n attributeType: AttributeType;\n totalNonVisibleValues: number;\n nonVisibleValues: AttributeValue[];\n }>(null);\n\nSingleAttributeContext.displayName = 'SingleAttributeContext';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n triggerButton: {\n minWidth: 0,\n color: 'rgba(0,0,0,0.54)',\n width: '36px'\n },\n popupContent: {\n paddingTop: '19px',\n paddingBottom: '23px',\n paddingLeft: '23px',\n paddingRight: '23px',\n maxWidth: '180px',\n width: '40%'\n },\n checkboxControlRoot: {\n marginTop: '6px',\n marginLeft: '-12px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\n\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const {showInactive, toggleShowInactive} = useContext(SingleAttributeContext);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <Button ref={buttonRef} classes={{root: classnames(styles.triggerButton, className)}} onClick={togglePopup}>\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n root: styles.checkboxControlRoot,\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive}\n onChange={(e) => toggleShowInactive(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive values')}\n />\n </Popover>\n </>\n );\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 4px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n ovIcon: {\n marginTop: '2px',\n marginLeft: '5px'\n }\n}));\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {FacetViewHeader, HideOnShrink, ExpandableSearchInput, VerticalDivider, OvIcon} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport FilterButton from '../FilterButton/FilterButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n caption: string;\n totalVisibleValues: number;\n showInactiveValuesMenu: boolean;\n};\n\nexport const SingleAttributeHeader = ({caption, totalVisibleValues, showInactiveValuesMenu}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, setSearchQuery, setPage, totalNonVisibleValues, nonVisibleValues, attributeType} = useContext(\n SingleAttributeContext\n );\n\n const handleChangeSearchQuery = (query: string) => {\n setSearchQuery(query);\n setPage(0);\n };\n\n return (\n <FacetViewHeader title={i18n.text(caption)} className={styles.root}>\n <HideOnShrink widthToHide={500}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {i18n.number(totalVisibleValues)}{' '}\n {totalVisibleValues === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n </HideOnShrink>\n {\n <OvIcon\n nonOvTotal={totalNonVisibleValues}\n className={styles.ovIcon}\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n />\n }\n <ExpandableSearchInput query={searchQuery} onChange={handleChangeSearchQuery} />\n {showInactiveValuesMenu && <FilterButton />}\n </FacetViewHeader>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 -16px 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n ovFalse: theme.inactive,\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px 8px 0'\n }\n}));\n","import {equals, filter, identity, is, lensPath, omit, over, pipe, unless} from 'ramda';\nimport {\n AttributeValue,\n cleanAttributesWith,\n Entity,\n findAttributeValuesByTypeUri,\n getAttributeSource,\n getLastUriPart,\n isOv,\n Metadata,\n utils\n} from '@reltio/mdm-sdk';\n\nexport const getAttributeNameFromAttributeUri = getLastUriPart;\n\nexport const search = (value: AttributeValue['value'], searchQuery: string) => {\n switch (typeof value) {\n case 'object':\n return Object.values(value).some((value: AttributeValue[]) => {\n return value.some(({value}) => {\n return search(value, searchQuery);\n });\n });\n default:\n return utils.strings.search(String(value), searchQuery);\n }\n};\n\ntype Config = {\n metadata: Metadata;\n entity: Entity;\n attributeTypeUri: string;\n defaultMaxValues?: number;\n offset?: number;\n searchQuery?: string;\n};\n\nexport const getPagedLocalEntity = async ({\n metadata,\n entity,\n attributeTypeUri,\n defaultMaxValues = Infinity,\n offset = 0,\n searchQuery = ''\n}: Config) => {\n const values = pipe(\n findAttributeValuesByTypeUri,\n filter(({value}) => search(value, searchQuery))\n )(metadata, entity, attributeTypeUri);\n const ovValues = filter(isOv, values);\n\n return {\n [getAttributeSource(attributeTypeUri)]: {\n [getAttributeNameFromAttributeUri(attributeTypeUri)]: ovValues.slice(offset, offset + defaultMaxValues),\n paging: {\n [attributeTypeUri]: {\n totalOvValues: ovValues.length,\n totalValues: values.length\n }\n }\n }\n };\n};\n\nexport const areValuesEqual = (value1: AttributeValue, value2: AttributeValue): boolean => {\n const cleanser =\n is(Object, value1.value) || is(Object, value2.value)\n ? over(\n lensPath(['value']),\n cleanAttributesWith({\n valueTransformer: unless(isOv, omit(['value'])),\n deleteEmptyComplex: true\n })\n )\n : identity;\n return equals(cleanser(value1), cleanser(value2));\n};\n","import React, {useCallback, useContext, useRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, cond, map, pathOr, pipe, prop, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {CardinalityMessage, EditableAttribute, ErrorMessage, ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n AttributeValue,\n checkCanCreateAttribute,\n createNewAttribute,\n Entity,\n getAttributeOwnError,\n getAttributePagerActiveTypeErrorMessage,\n getAttributeSource,\n isComplexAttribute,\n isEmptyValue,\n isOv,\n isTempUri,\n AttributeItem\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport {areValuesEqual} from '../../../hooks/helpers';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n parentUri: string;\n showInactive: boolean;\n noDataText: string;\n};\n\nconst emptyArray = [];\n\nexport const SingleAttributeEditableContent = ({values, attributeType, parentUri, showInactive, noDataText}: Props) => {\n const styles = useStyles();\n\n const {uri: attributeTypeUri, required: isRequired, cardinality, name} = attributeType;\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType)\n );\n const errorMessage = useSelector((state) =>\n getAttributePagerActiveTypeErrorMessage(parentUri, attributeType, mdmModule.selectors.getProfileErrors(state))\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n const attributeSource = getAttributeSource(attributeType);\n const entityValuesUris: string[] = pipe(pathOr(emptyArray, [attributeSource, name]), map(prop('uri')))(entity);\n const modifiedEntityValues: AttributeValue[] = pathOr(emptyArray, [attributeSource, name], modifiedEntity);\n const modifiedEntityValuesUris: string[] = modifiedEntityValues.map(prop('uri'));\n const showEmptyEditors = isTempUri(entity.uri);\n\n const emptyEditorValue = useRef<AttributeValue>(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const isModifiedEntityValuesEmpty = isEmptyValue(modifiedEntityValues);\n const showEmpty = isRequired && isModifiedEntityValuesEmpty;\n\n const newValues = showEmpty\n ? [emptyEditorValue.current]\n : modifiedEntityValues.filter(pipe(prop('uri'), isTempUri));\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n const onAdd = useCallback(() => {\n const attribute: AttributeItem = {\n parentUri,\n attributeType\n };\n\n return onAddAttributes(\n showEmpty && !isComplexAttribute(attributeType.type) ? [attribute, attribute] : [attribute]\n );\n }, [onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n\n const commonProps = {\n attributeType: attributeType,\n errors,\n crosswalks: modifiedEntity.crosswalks,\n mode,\n onAddAttributes,\n onChangeAttribute,\n onDeactivateError,\n showNonOv: showInactive\n };\n const isEmptyAttributeList = newValues.length === 0 && values.length === 0;\n return (\n <div>\n <CardinalityMessage cardinality={cardinality} />\n <ErrorMessage message={errorMessage} />\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {newValues.map((value, idx) => (\n <EditableAttribute\n key={value.uri}\n {...commonProps}\n attributeValue={value}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n ownError={getAttributeOwnError(value, idx, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n />\n ))}\n {newValues.length > 0 && values.length > 0 && <Divider className={styles.divider} />}\n {values.map((originalValue) => {\n const modifiedEntityValue = modifiedEntityValues.find(propEq('uri', originalValue.uri));\n const value = modifiedEntityValue || originalValue;\n const deleted = entityValuesUris.includes(value.uri) && !modifiedEntityValuesUris.includes(value.uri);\n const edited = !deleted && modifiedEntityValue && !areValuesEqual(modifiedEntityValue, originalValue);\n const state = cond([\n [always(deleted), always('deleted')],\n [always(edited), always('edited')]\n ])();\n return (\n <div key={value.uri} className={classnames({[styles.ovFalse]: !isOv(value)})}>\n <EditableAttribute\n {...commonProps}\n attributeValue={value}\n ownError={getAttributeOwnError(value, null, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n state={state}\n />\n </div>\n );\n })}\n {isEmptyAttributeList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n ovFalse: theme.inactive\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {ReadOnlyAttribute} from '@reltio/components';\nimport {AttributeType, AttributeValue, isOv} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n showInactive: boolean;\n};\n\nexport const SingleAttributeReadableContent = ({values, attributeType, showInactive}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {values.map((value) => {\n return (\n <div key={value.uri} className={classnames({[styles.ovFalse]: !isOv(value)})}>\n <ReadOnlyAttribute\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showInactive}\n />\n </div>\n );\n })}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n },\n pagination: {\n flexGrow: 0,\n flexShrink: 0\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {PivotingAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {BasicView, BasicTablePagination, LinearLoadIndicator, PivotingAttributeContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeHeader} from '../SingleAttributeHeader/SingleAttributeHeader';\nimport {SingleAttributeEditableContent} from '../SingleAttributeEditableContent/SingleAttributeEditableContent';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {SingleAttributeReadableContent} from '../SingleAttributeReadableContent/SingleAttributeReadableContent';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const SingleAttributeView = ({config, className}: Props) => {\n const {caption, max, showInactiveValuesMenu} = config;\n\n const styles = useStyles();\n\n const {values, totalVisibleValues, page, setPage, isLoading, hasPaging, attributeType, showInactive} = useContext(\n SingleAttributeContext\n );\n\n const entityUri = useSelector(mdm.selectors.getEntityUri);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n const pivotingAttributes: PivotingAttribute[] = useSelector(mdm.selectors.getPivotingAttributes);\n\n const hasValues = values.length !== 0;\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const renderContent = () => {\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (attributeType) {\n if (isViewMode && hasValues) {\n const props = {\n values,\n attributeType,\n showInactive\n };\n return <SingleAttributeReadableContent {...props} />;\n } else if (isEditableMode) {\n const props = {\n values,\n attributeType,\n parentUri: entityUri,\n showInactive,\n noDataText\n };\n return <SingleAttributeEditableContent {...props} />;\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n\n return (\n <PivotingAttributeContext.Provider value={pivotingAttributes}>\n <BasicView className={classnames(styles.root, className)}>\n <SingleAttributeHeader\n totalVisibleValues={totalVisibleValues}\n caption={caption}\n showInactiveValuesMenu={showInactiveValuesMenu}\n />\n <Box className={styles.content}>{renderContent()}</Box>\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n page={page}\n rowsPerPage={max}\n rowsPerPageOptions={[]}\n onChangePage={setPage}\n classes={{root: styles.pagination}}\n />\n )}\n </BasicView>\n </PivotingAttributeContext.Provider>\n );\n};\n","import {useCallback, useState, useEffect, useMemo, useRef} from 'react';\nimport {ifElse, prop, always, has, pathOr, path, partition, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n isDataTenantEntity,\n getPagedEntity,\n getAttributeSource,\n AttributeValue,\n SearchFilter,\n findAttributeTypeByUri,\n isReadableAttribute,\n isTempUri,\n isOv,\n findAttributeValues,\n isFirstLevelAttributeUri,\n SingleAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useSafePromise, useDidUpdateEffect} from '@reltio/components';\nimport {getPagedLocalEntity, getAttributeNameFromAttributeUri} from './helpers';\n\ntype Params = {\n filters?: SearchFilter[];\n searchQuery?: string;\n sorting?: {\n field: string;\n order: string;\n };\n page: number;\n showInactive: boolean;\n};\n\nexport const useSingleAttributeLoader = (\n config: SingleAttributeViewConfig,\n params: Params,\n canShowHistoryDiff: boolean\n) => {\n const {attributeUri, max = 15} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const [values, setValues] = useState([]);\n const [paging, setPaging] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n const attributeValuesRef = useRef<AttributeValue[]>(null);\n\n const dispatch = useDispatch();\n const apiPath = useSelector(mdm.selectors.getApiPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n const entitySelector = canShowHistoryDiff ? mdm.selectors.getEntityWithDiff : mdm.selectors.getEntityWithoutDiff;\n const entity = useSelector(entitySelector);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const diff = useSelector(mdm.selectors.getHistoryDiff);\n\n const parentUri = entity.uri;\n const attributeTypeName = getAttributeNameFromAttributeUri(attributeUri);\n const attributeTypeSource = getAttributeSource(attributeUri);\n attributeValuesRef.current = findAttributeValues(entity, parentUri, attributeTypeName);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const {globalFilter} = useSelector(mdm.selectors.getGlobalSearchRequestOptions);\n const {showInactive} = params;\n const loadAttributes = useCallback(() => {\n if (\n attributeType &&\n isReadableAttribute(attributeType) &&\n !isTempUri(parentUri) &&\n isFirstLevelAttributeUri(attributeUri)\n ) {\n setIsLoading(true);\n const {page, showInactive, ...rest} = params;\n const request = isDataTenantEntity(entity) || isHistoryModeEnabled ? getPagedLocalEntity : getPagedEntity;\n safePromise(\n request({\n metadata,\n entity,\n apiPath,\n tenant,\n parentUri,\n defaultMaxValues: max,\n attributeTypeUri: attributeUri,\n offset: max * page,\n globalFilter,\n options: showInactive ? '' : undefined,\n ...rest\n })\n )\n .then((response) => {\n const attributes = path([attributeTypeSource], response);\n const values: AttributeValue[] = pathOr([], [attributeTypeName], attributes);\n if (!isHistoryModeEnabled) {\n dispatch(\n profile.actions.processNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeUri,\n attributeTypeName,\n values\n })\n );\n }\n setValues(\n values.map((loadedValue) => {\n const valueFromEntity = attributeValuesRef.current?.find(propEq('uri', loadedValue.uri));\n return valueFromEntity || loadedValue;\n })\n );\n setPaging(path(['paging', attributeUri], attributes));\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setValues([]);\n setPaging(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiPath,\n parentUri,\n tenant,\n attributeUri,\n max,\n metadata,\n params,\n globalFilter,\n attributeType,\n isHistoryModeEnabled,\n diff\n ]);\n\n useEffect(() => {\n loadAttributes();\n }, [loadAttributes]);\n\n useDidUpdateEffect(() => {\n if (isViewMode) {\n loadAttributes();\n }\n }, [isViewMode]);\n const partitionByOv = partition(isOv);\n const [, nonOvValues] = partitionByOv(attributeValuesRef.current || []);\n const nonVisibleValues = showInactive ? [] : nonOvValues;\n const totalProp = showInactive ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(values.length))(paging);\n const hasPaging = max < totalVisibleValues;\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n return {\n values,\n isLoading,\n hasPaging,\n totalVisibleValues,\n attributeType,\n totalNonVisibleValues,\n nonVisibleValues\n };\n};\n","import React from 'react';\nimport {RelationsViewState} from '../hooks/useRelationsState';\n\nexport const RelationsViewStateContext = React.createContext<RelationsViewState>(null);\n\nRelationsViewStateContext.displayName = 'RelationsViewStateContext';\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n button: {\n color: theme.palette.text.secondary,\n width: '36px',\n minWidth: '36px'\n },\n popupContent: {\n padding: `19px ${popupHorizontalPadding}`\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {DropDownEditor, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {Popover as Popover} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\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 ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport {RelationsViewStateContext} from '../../../contexts/RelationsViewStateContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const {\n showInactive,\n toggleShowInactive,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions\n } = useContext(RelationsViewStateContext);\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n const hasSortOptions = !isEmptyValue(sortOptions);\n\n const isAsc = sortOrder === 'asc';\n\n return (\n <>\n <Button\n ref={buttonRef}\n classes={{\n root: classnames(styles.button, className)\n }}\n onClick={togglePopup}\n >\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={toggleShowInactive}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n {hasSortOptions && (\n <>\n <Divider className={styles.divider} />\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={sortOptions}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortOption}\n onChange={changeSortOption}\n MenuProps={{\n getContentAnchorEl: null,\n anchorOrigin: {vertical: 'bottom', horizontal: 'left'}\n }}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </>\n )}\n </Popover>\n </>\n );\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 6px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n }\n});\n","import React from 'react';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ImportDTContext = React.createContext<{\n reloadRelations: () => void;\n config: Pick<RelationsViewConfig, 'content' | 'importFromDT' | 'maxDtssImport'>;\n }>(null);\n","import {useSelector, useDispatch} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {useCallback, useContext, useEffect, useState} from 'react';\nimport {getRequestErrorMessage, hasNonImportedRelations, importDTConnections, isTempUri} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {ImportDTContext} from '../../../../contexts/ImportDTContext';\nimport i18n from 'ui-i18n';\n\nconst MAX = Math.pow(2, 31) - 1;\ntype Tenant = {id: string; label: string};\n\nexport const useImportFromDTLoader = () => {\n const dataTenants: Array<Tenant> = useSelector(mdmModule.selectors.getDataTenants);\n const dispatch = useDispatch();\n const {config, reloadRelations} = useContext(ImportDTContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const [tenants, setTenants] = useState<Array<Tenant>>([]);\n const [selectedTenant, setSelectedTenant] = useState<Tenant>(null);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const customerTenant = useSelector(mdmModule.selectors.getTenant);\n const content = [{...config.content, offset: 0, max: config.maxDtssImport ?? MAX}];\n\n const checkHasNonImportedConnections = useCallback(() => {\n setTenants([]);\n if (config.importFromDT && !isTempUri(entityUri)) {\n Promise.all(\n (dataTenants || []).map((tenant) =>\n hasNonImportedRelations({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: tenant.id\n }).then(({hasNonImportedConnections}) => ({\n ...tenant,\n hasNonImportedConnections\n }))\n )\n )\n .then((modifiedTenants) => modifiedTenants.filter((tenant) => tenant.hasNonImportedConnections))\n .then(setTenants);\n }\n }, [entityUri, dtssPath, customerTenant, config, dataTenants]);\n\n const onConfirmImport = useCallback(() => {\n importDTConnections({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: selectedTenant.id\n })\n .then(() => {\n reloadRelations();\n checkHasNonImportedConnections();\n })\n .catch((error) =>\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))))\n );\n setSelectedTenant(null);\n }, [\n entityUri,\n dtssPath,\n customerTenant,\n config,\n checkHasNonImportedConnections,\n reloadRelations,\n selectedTenant,\n setSelectedTenant\n ]);\n\n useEffect(() => {\n checkHasNonImportedConnections();\n }, [checkHasNonImportedConnections]);\n const onCancelConfirmation = useCallback(() => setSelectedTenant(null), []);\n const onImportClick = useCallback((tenant: Tenant) => setSelectedTenant(tenant), []);\n return {\n tenants,\n selectedTenant,\n onConfirmImport,\n onCancelConfirmation,\n onImportClick\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n tenant: {\n backgroundColor: '#0000EE',\n cursor: 'pointer',\n position: 'absolute',\n top: '8px',\n left: '22px',\n width: '10px',\n height: '10px',\n color: 'white',\n fontSize: '10px',\n fontWeight: 'bold',\n userSelect: 'text',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n button: {\n position: 'relative'\n },\n badge: {\n fontSize: '10px',\n height: '14px',\n minWidth: '14px',\n width: '14px',\n fontWeight: 'bold',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px',\n top: '4px'\n }\n}));\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {Badge as Badge} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ninterface Props {\n label: number | string;\n}\n\nexport const MultipleImportIcon = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Badge\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n badgeContent={label}\n >\n <CloudDownloadIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {useImportFromDTLoader} from './hooks/useImportFromDTLoader';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {ConfirmationDialog} from '@reltio/components';\nimport {MultipleImportIcon} from './MultipleImportIcon';\n\nexport const ImportFromDT = () => {\n const {tenants, selectedTenant, onConfirmImport, onCancelConfirmation, onImportClick} = useImportFromDTLoader();\n const styles = useStyles();\n const oneTenant = tenants.length === 1;\n const labelOnButton = oneTenant\n ? tenants[0].label.indexOf('DT:') === 0\n ? tenants[0].label[3]\n : tenants[0].label[0]\n : tenants.length;\n return (\n <>\n {!!tenants.length && (\n <>\n {oneTenant ? (\n <div className={styles.button}>\n <SmallIconButtonWithTooltip\n size={'L'}\n icon={CloudDownloadIcon}\n tooltipTitle={i18n.text('Import connections from ${label}', {label: tenants[0].label})}\n onClick={() => onImportClick(tenants[0])}\n />\n <div className={classnames(styles.tenant)}>{labelOnButton}</div>\n </div>\n ) : (\n <DropDownMenuButton\n menuId={'importDT-table-actions'}\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n tooltipTitle: i18n.text('Import connections'),\n size: 'L',\n // eslint-disable-next-line react/display-name\n icon: () => <MultipleImportIcon label={labelOnButton} />\n }}\n menuItems={tenants.map((tenant) => ({\n onClick: () => {\n onImportClick(tenant);\n },\n text: tenant.label\n }))}\n />\n )}\n <ConfirmationDialog\n open={!!selectedTenant}\n title={i18n.text('Confirmation')}\n content={i18n.text('Import connections from ${label}?', {label: selectedTenant?.label})}\n discardCaption={i18n.text('Cancel')}\n saveCaption={i18n.text('Import')}\n onDiscard={onCancelConfirmation}\n onSave={onConfirmImport}\n />\n </>\n )}\n </>\n );\n};\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {ExpandableSearchInput, FacetViewHeader, HideOnShrink, VerticalDivider} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport FilterButton from './FilterButton/FilterButton';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {useStyles} from './styles';\nimport {ImportFromDT} from './ImportFromDT/ImportFromDT';\n\ntype Props = {\n title?: string;\n total?: number;\n};\n\nconst RelationsHeader = ({title, total}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, changeSearchQuery} = useContext(RelationsViewStateContext);\n\n return (\n <FacetViewHeader title={title || ''} className={styles.header}>\n {total > 0 && (\n <HideOnShrink widthToHide={400}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} items', {count: total})\n : i18n.text('${count} item', {count: total})}\n </Typography>\n </HideOnShrink>\n )}\n <ExpandableSearchInput query={searchQuery} onChange={changeSearchQuery} />\n <ImportFromDT />\n <FilterButton />\n </FacetViewHeader>\n );\n};\n\nexport default RelationsHeader;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n tooltip: theme.tooltip,\n tooltipContent: {\n minWidth: '165px',\n padding: '4px 2px 2px'\n },\n label: {\n fontSize: '11px',\n lineHeight: '13px',\n fontWeight: 500,\n margin: 0,\n color: 'white'\n },\n secondaryLabel: {\n color: 'rgba(255, 255, 255, 0.7)',\n fontSize: '10px',\n marginTop: '4px',\n fontWeight: 500,\n lineHeight: '11px'\n },\n progress: {\n marginTop: '4px',\n color: '#FFFFFF'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {isNil, ifElse} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n ConnectionEntity,\n getDataTenantEntitySecondaryLabel,\n getEntitySecondaryLabel,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useSafePromise} from '@reltio/components';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nconst PROGRESS_ICON_SIZE = 16;\n\ntype Props = {\n label: string;\n entity?: ConnectionEntity;\n children: React.ReactElement;\n};\n\nconst RelationTooltip = ({label, entity, children, ...tooltipProps}: Props) => {\n const styles = useStyles();\n const safePromise = useSafePromise();\n const tenant = useSelector(mdm.selectors.getTenant);\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const [isLoading, setIsLoading] = useState(false);\n const [secondaryLabel, setSecondaryLabel] = useState<string>(null);\n\n useEffect(() => {\n setSecondaryLabel(null);\n }, [entity]);\n\n const onOpen = useCallback(() => {\n if (entity?.entityUri && isNil(secondaryLabel)) {\n const request = ifElse(\n isDataTenantEntity,\n (entity: ConnectionEntity) =>\n getDataTenantEntitySecondaryLabel({\n entityUri: entity.entityUri,\n dataTenant: entity.dataTenant,\n customerTenant: tenant,\n dtssPath\n }),\n (entity: ConnectionEntity) => getEntitySecondaryLabel(entity.entityUri)\n );\n\n setIsLoading(true);\n safePromise(request(entity))\n .then(({secondaryLabel}) => {\n setSecondaryLabel(secondaryLabel);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [dtssPath, entity, tenant, safePromise, secondaryLabel]);\n\n const tooltipContent = (\n <div className={styles.tooltipContent}>\n <div className={styles.label}>{label}</div>\n {isLoading && <CircularProgress size={PROGRESS_ICON_SIZE} classes={{colorPrimary: styles.progress}} />}\n {secondaryLabel && <div className={styles.secondaryLabel}>{secondaryLabel}</div>}\n </div>\n );\n\n return (\n <Tooltip\n onOpen={onOpen}\n title={tooltipContent}\n disableFocusListener\n classes={{tooltip: styles.tooltip}}\n {...tooltipProps}\n >\n {children}\n </Tooltip>\n );\n};\n\nexport default RelationTooltip;\n","import {\n Connection,\n Metadata,\n getEntityType,\n getLabel,\n getEntityUriForLink,\n getRelationTypeLabelFromMetadata\n} from '@reltio/mdm-sdk';\n\nexport const useRelationInfo = (connection: Connection, metadata: Metadata) => {\n const {entity, relation} = connection;\n const entityType = getEntityType(metadata, entity?.entityType) as string;\n const entityLabel = getLabel(entity?.entityLabel) as string;\n const preparedUri = getEntityUriForLink({uri: entity?.entityUri, dataTenant: entity?.dataTenant}) as string;\n const relationLabel =\n relation?.relationLabel || (getRelationTypeLabelFromMetadata(metadata, relation?.relationType) as string);\n\n return {\n entityType,\n entityLabel,\n preparedUri,\n relationLabel\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button, {ButtonProps} from '@material-ui/core/Button';\nimport {useStyles} from './styles';\n\ntype Props = {\n acceptRelation: () => void;\n ignoreRelation: () => void;\n};\n\nexport const SuggestedButtons = ({acceptRelation, ignoreRelation, ...props}: Props & ButtonProps) => {\n const styles = useStyles();\n return (\n <div className={styles.container}>\n <Button onClick={acceptRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Accept')}\n </Button>\n <Button onClick={ignoreRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Ignore')}\n </Button>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n\n marginBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '24px',\n padding: '0 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n editButtonsContent: {\n marginLeft: 'auto',\n flex: '0 0 40px'\n },\n editButtons: {\n padding: 0\n },\n removed: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary,\n margin: '0 5px'\n }\n}));\n","import React, {memo, useCallback} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Connection, Metadata, isActiveObject, Mode, checkRemoved, checkEdited, checkIgnored} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, EntityUriLink, SmallIconButtonWithTooltip} from '@reltio/components';\nimport RelationTooltip from '../RelationTooltip/RelationTooltip';\nimport {useRelationInfo} from '../../hooks/useRelationInfo';\nimport {checkRelationPermission} from '../../helpers/permissions';\nimport {SuggestedButtons} from '../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n onRemoveRelation: (relationUri: string) => void;\n onEditRelation: (connection: Connection) => void;\n onAcceptRelation?: (connection: Connection) => void;\n onIgnoreRelation?: (connection: Connection) => void;\n metadata: Metadata;\n showControls: boolean;\n renderRelationArrowButton?: () => React.ReactNode;\n};\n\nconst EditableRelationItem = memo(\n ({\n connection,\n metadata,\n showControls,\n onRemoveRelation,\n onEditRelation,\n onAcceptRelation,\n onIgnoreRelation,\n renderRelationArrowButton\n }: Props) => {\n const styles = useStyles();\n\n const {entity, relation} = connection;\n const removed = checkRemoved(connection);\n const edited = checkEdited(connection);\n const ignored = checkIgnored(connection);\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode: Mode.Editing,\n onRemoveRelation,\n onEditRelation,\n metadata,\n connection\n });\n\n const handleRemoveRelation = useCallback(() => onRemoveRelation(connection.relation.relationUri), [\n onRemoveRelation,\n connection\n ]);\n\n const handleEditRelation = useCallback(() => onEditRelation(connection), [onEditRelation, connection]);\n\n const handleAcceptRelation = useCallback(() => {\n onAcceptRelation(connection);\n }, [onAcceptRelation, connection]);\n\n const handleIgnoreRelation = useCallback(() => onIgnoreRelation(connection), [onIgnoreRelation, connection]);\n\n const editButtonsContent =\n (canRemove || canUpdate) && showControls && !connection.suggested ? (\n <>\n {canUpdate && (\n <SmallIconButtonWithTooltip\n icon={EditIcon}\n size=\"XS\"\n onClick={handleEditRelation}\n tooltipTitle={i18n.text('Edit')}\n />\n )}\n {canRemove && (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n size=\"XS\"\n onClick={handleRemoveRelation}\n tooltipTitle={i18n.text('Remove')}\n />\n )}\n </>\n ) : undefined;\n\n const suggustedButtonsContent = connection.suggested ? (\n <SuggestedButtons\n acceptRelation={handleAcceptRelation}\n ignoreRelation={handleIgnoreRelation}\n size=\"small\"\n disabled={ignored}\n />\n ) : undefined;\n const captionText = ignored ? i18n.text('ignored') : i18n.text('edited');\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.removed]: removed || ignored}\n )}\n >\n <div className={styles.row}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {(edited || ignored) && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({captionText})\n </Typography>\n )}\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n\n <div className={styles.editButtonsContent}>{editButtonsContent}</div>\n {suggustedButtonsContent}\n </div>\n </div>\n );\n }\n);\n\nEditableRelationItem.displayName = 'EditableRelationItem';\n\nexport default EditableRelationItem;\n","import {checkMetadataForDelete, checkMetadataForUpdate, checkRemoved, getRelationType, Mode} from '@reltio/mdm-sdk';\n\nexport const checkRelationPermission = ({metadata, mode, connection, onRemoveRelation, onEditRelation}) => {\n const isEditableMode = mode === Mode.Editing || mode === Mode.Suggesting;\n if (isEditableMode && connection) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n","import {Directions, wrapInArrayIfNeeded, InOutRelation} from '@reltio/mdm-sdk';\n\nexport const getFirstRelationTypeObject = (inRelations: InOutRelation, outRelations: InOutRelation) => {\n const prepareRelation = (direction, relations) => {\n const relationsArr = relations ? wrapInArrayIfNeeded(relations) : [];\n return relationsArr.map((relation) => ({\n type: relation,\n direction: direction === Directions.IN ? Directions.IN : Directions.OUT\n }));\n };\n return prepareRelation(Directions.IN, inRelations).concat(prepareRelation(Directions.OUT, outRelations))[0];\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n arrowIcon: {\n fontSize: '16px',\n marginRight: '6px'\n }\n});\n","import React from 'react';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {checkNew, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n connection: Connection;\n config: RelationsViewConfig;\n showSecondLevel: boolean;\n};\n\nexport const RelationArrowButton = ({onClick, connection, config, showSecondLevel}: Props) => {\n const styles = useStyles();\n const {parentEntityUri} = connection;\n const {contentSecondLevel} = config;\n\n const props = {\n onClick,\n className: styles.arrowIcon\n };\n\n if (parentEntityUri || !contentSecondLevel || checkNew(connection)) {\n return null;\n }\n\n return showSecondLevel ? <ArrowDropDownIcon {...props} /> : <ArrowRightIcon {...props} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n row: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n secondLevelContent: {\n paddingLeft: '24px'\n }\n});\n","import React, {useContext, useMemo} from 'react';\nimport {Connection, ActivityFilter, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useSecondLevelConnections} from '../../hooks/useSecondLevelConnections';\nimport {RelationArrowButton} from '../RelationArrowButton/RelationArrowButton';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {useStyles} from './styles';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {EntitiesMapContext} from '@reltio/components';\n\ntype Props = {\n config: RelationsViewConfig;\n connection: Connection;\n children: (render: () => React.ReactNode) => React.ReactNode;\n};\n\nexport const SecondLevelWrapper = ({config, connection, children}: Props) => {\n const styles = useStyles();\n\n const {showInactive} = useContext(RelationsViewStateContext);\n\n const {\n connections,\n showSecondLevel,\n toggleShowSecondLevel,\n loadRelations,\n loading,\n total\n } = useSecondLevelConnections({\n config,\n connection,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const renderRelationArrowButton = () => {\n return (\n <RelationArrowButton\n onClick={toggleShowSecondLevel}\n connection={connection}\n config={config}\n showSecondLevel={showSecondLevel}\n />\n );\n };\n\n return (\n <>\n {children(renderRelationArrowButton)}\n {showSecondLevel && (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.secondLevelContent}>\n <RelationsContent\n isLoading={loading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n parentEntityUri={connection.entity.entityUri}\n />\n </div>\n </EntitiesMapContext.Provider>\n )}\n </>\n );\n};\n","import {useState, useCallback} from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {\n Connection,\n getRelationsForEntity,\n ActivityFilter,\n GlobalSearchRequestOptions,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\ntype Params = {\n config: RelationsViewConfig;\n connection: Connection;\n relationActivityFilter: ActivityFilter;\n};\n\nexport const useSecondLevelConnections = ({config, connection, relationActivityFilter}: Params) => {\n const dispatch = useDispatch();\n\n const [showSecondLevel, setShowSecondLevel] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const {contentSecondLevel} = config;\n const {entity} = connection;\n\n const connections =\n (useSelector((state) =>\n mdmModule.selectors.getConnectionsWithDraftsByViewId(state, config.id, entity.entityUri)\n ) as Connection[]) || [];\n\n const total = useSelector((state) => mdmModule.selectors.getTotalByViewId(state, config.id, entity.entityUri));\n const {activityFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n\n const loadRelations = useCallback(() => {\n const requestConfig = {\n ...contentSecondLevel,\n returnObjects: true,\n returnDates: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n }\n };\n\n setLoading(true);\n\n getRelationsForEntity(entity.entityUri, [requestConfig]).then((response) => {\n const {connections, total} = response[0];\n\n if (connections) {\n dispatch(\n profile.relations.actions.secondLevelRelationsLoaded({\n connections,\n parentEntityUri: entity.entityUri,\n id: config.id,\n total\n })\n );\n }\n\n setLoading(false);\n });\n }, [config.id, contentSecondLevel, dispatch, entity.entityUri, activityFilter, relationActivityFilter]);\n\n const toggleShowSecondLevel = useCallback(() => {\n if (!showSecondLevel && !connection.connections) {\n loadRelations();\n }\n\n setShowSecondLevel((show) => !show);\n }, [loadRelations, connection.connections, showSecondLevel]);\n\n return {connections, showSecondLevel, toggleShowSecondLevel, loadRelations, loading, total};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px',\n marginLeft: '16px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 0 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, partition, evolve, always, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n Connection,\n isTempUri,\n Mode,\n createNewConnectionWithDefaultRelationType,\n checkNew,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {RelationEditor} from '@reltio/components';\nimport EditableRelationItem from '../EditableRelationItem/EditableRelationItem';\nimport {getFirstRelationTypeObject} from '../../helpers/relation';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n noDataText: string;\n connections: Array<Connection>;\n config: RelationsViewConfig;\n mode: Mode;\n parentEntityUri?: string;\n};\n\nconst RelationsEditableContent = ({className, connections = [], config, mode, noDataText, parentEntityUri}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationToAdd = useSelector((state) => mdmModule.selectors.getRelationToAddByViewId(state, config.id));\n const relationsToEdit = useSelector((state) => mdmModule.selectors.getRelationsToEditByViewId(state, config.id));\n const entity = useSelector(mdmModule.selectors.getEntity);\n const checkIfCanAddRelations = useSelector((state) =>\n mdmModule.selectors.getCheckIfCanAddRelations(state, config.content)\n );\n\n const dispatch = useDispatch();\n const styles = useStyles();\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({config, mode, metadata, parentEntityUri});\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n }, [config, mode, metadata, dispatch, parentEntityUri]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n dispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n dispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => profile.relations.selectors.getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = profile.relations.selectors.getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n dispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, dispatch]\n );\n const content = config.content;\n const defaultRelationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const onAcceptRelation = useCallback(\n (connection) => {\n const connectionWithDefaultRelationType = pipe(\n omit(['suggested']),\n evolve({\n relation: {\n relationType: always(defaultRelationTypeObject.type),\n object: evolve({type: always(defaultRelationTypeObject.type), attributes: always(null)})\n }\n })\n )(connection);\n dispatch(profile.relations.actions.addRelation(config.id, connectionWithDefaultRelationType));\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const onIgnoreRelation = useCallback(\n (connection) => {\n dispatch(\n profile.relations.actions.ignoreRelation(config.id, {\n relationType: defaultRelationTypeObject.type,\n relationDirection: defaultRelationTypeObject.direction,\n entityUri: connection.entity.entityUri,\n relationUri: connection.relation.relationUri\n })\n );\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const [newConnections, currentConnections] = partition(checkNew, connections);\n const canAddRelations = entity && checkIfCanAddRelations;\n\n const isEmptyRelationList = newConnections.length === 0 && currentConnections.length === 0;\n\n const getRelationEditableContent = (connection: Connection) => {\n const openedRelation = relationsToEdit.find(\n (openedRelation) => openedRelation?.relation?.relationUri === connection?.relation?.relationUri\n );\n const showControls = !config.allowOnlyCreateNew || checkNew(connection);\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n return openedRelation ? (\n <RelationEditor connection={openedRelation} config={config} mode={mode} metadata={metadata} />\n ) : (\n <EditableRelationItem\n renderRelationArrowButton={renderRelationArrowButton}\n connection={connection}\n metadata={metadata}\n showControls={showControls}\n onRemoveRelation={onRemoveRelation}\n onEditRelation={pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)}\n onAcceptRelation={onAcceptRelation}\n onIgnoreRelation={onIgnoreRelation}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n };\n\n const shouldShowAddRelationButton =\n canAddRelations && (!relationToAdd || (relationToAdd && relationToAdd.parentEntityUri === parentEntityUri));\n\n const shouldShowRelationEditorToAdd = relationToAdd && relationToAdd.parentEntityUri === parentEntityUri;\n\n return (\n <div className={className}>\n {shouldShowAddRelationButton && (\n <Button color=\"primary\" onClick={onAddRelation} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {shouldShowRelationEditorToAdd && (\n <RelationEditor connection={relationToAdd} config={config} mode={mode} metadata={metadata} />\n )}\n {newConnections.map(getRelationEditableContent)}\n {newConnections.length > 0 && currentConnections.length > 0 && <Divider className={styles.divider} />}\n {currentConnections.map(getRelationEditableContent)}\n {isEmptyRelationList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n\nexport default RelationsEditableContent;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n attributesList: {\n paddingLeft: '46px',\n paddingRight: '16px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n }\n}));\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n CollaborationObjectTypes,\n Connection,\n createRelatedObjectUris,\n Entity,\n getActivenessAttributes,\n getAttributesListForReadMode,\n getAttributeValuesUris,\n getRelationAttributesList,\n isEmptyValue,\n Metadata\n} from '@reltio/mdm-sdk';\nimport {CollaborationContext, ReadOnlyAttributesList, RelatedObjectUrisContext} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {isEmpty} from 'ramda';\n\ntype Props = {\n connection: Connection;\n className?: string;\n};\n\nexport const RelationAttributes = ({connection, className}: Props) => {\n const styles = useStyles();\n\n const {relation} = connection;\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n\n const firstLevelRelationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relation?.relationType) as AttributeType[],\n [relation?.relationType, metadata]\n );\n\n const attributeListEntity = useMemo(\n () => ({\n attributes: {\n ...profile.relations.selectors.getRelationAttributesFromConnection(connection)\n },\n ...getActivenessAttributes(connection?.relation || {})\n }),\n [connection]\n );\n\n const attributesList = useMemo(\n () => getAttributesListForReadMode(firstLevelRelationAttrTypes, attributeListEntity as Entity),\n [firstLevelRelationAttrTypes, attributeListEntity]\n );\n\n const showAttributesList = attributesList.filter(({values}) => !isEmptyValue(values)).length > 0;\n\n const objectIds = useMemo(() => getAttributeValuesUris(attributeListEntity.attributes), [attributeListEntity]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n !isEmpty(objectIds) && getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const additionalRelatedObjectUris = useMemo(\n () => createRelatedObjectUris(CollaborationObjectTypes.RELATION, {entityUri: currentEntityUri, connection}),\n [connection, currentEntityUri]\n );\n\n return showAttributesList ? (\n <RelatedObjectUrisContext.Provider value={additionalRelatedObjectUris}>\n <ReadOnlyAttributesList\n className={classnames(styles.attributesList, className)}\n entity={attributeListEntity}\n attrTypes={firstLevelRelationAttrTypes}\n />\n </RelatedObjectUrisContext.Provider>\n ) : (\n <div className={classnames(styles.attributesList, className)}>{i18n.text('No attributes')}</div>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport InfoIconSelected from '@material-ui/icons/InfoRounded';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\n\ntype Props = {\n show: boolean;\n onToggle: () => void;\n className?: string;\n};\n\nexport const ShowDetailsButton = ({show, onToggle, className}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n className={className}\n tooltipTitle={\n show\n ? i18n.text('Hide attributes of the relationship')\n : i18n.text('Show attributes of the relationship')\n }\n tooltipPlacement=\"bottom-end\"\n size=\"XXS\"\n icon={show ? InfoIconSelected : InfoIcon}\n onClick={onToggle}\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string; suggested: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '16px',\n padding: '3px 11px 3px 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n wordBreak: 'break-all',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n showDetails: {\n marginLeft: 'auto',\n paddingRight: '5px'\n },\n attributesList: {\n paddingLeft: '46px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n },\n suggestedWrapper: {\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n marginLeft: 'auto',\n alignItems: 'center',\n '& + $showDetails': {\n marginLeft: '4px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n },\n labelWrapper: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n Connection,\n Metadata,\n isActiveObject,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {useStyles} from './styles';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\n\ntype Props = {\n connection: Connection;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nconst RelationItem = memo(({connection, renderRelationArrowButton, acceptRelation, ignoreRelation}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n const {entity, relation} = connection;\n const [showDetails, setShowDetails] = useState(false);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.suggestedWrapper]: isSuggested}\n )}\n >\n <div className={classnames(styles.row, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <div className={styles.labelWrapper}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n </div>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n size=\"small\"\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetails}\n />\n )}\n </div>\n </div>\n {showDetails && <RelationAttributes connection={connection} />}\n </div>\n );\n});\n\nRelationItem.displayName = 'RelationItem';\n\nexport default RelationItem;\n","import {pluck, mean, pipe, defaultTo} from 'ramda';\nimport {Rating} from '@reltio/mdm-sdk';\n\nexport const calcAverageRating = (ratings: Rating[]) => {\n return pipe(pluck('value'), mean, defaultTo(0))(ratings);\n};\n\nexport const getCountOfLikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 5).length;\n};\n\nexport const getCountOfDislikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 1).length;\n};\n\nexport const calcWidthOfLikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfLikes(ratings) / ratings.length) * 100 + '%';\n};\n\nexport const calcWidthOfDislikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfDislikes(ratings) / ratings.length) * 100 + '%';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end'\n },\n averageRating: {\n marginBottom: '7px',\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px',\n color: theme.palette.text.primary\n },\n scale: {\n display: 'flex',\n marginBottom: '6px',\n width: '128px',\n height: '4px'\n },\n likesScale: {\n height: '100%',\n backgroundColor: '#8CC152'\n },\n dislikesScale: {\n height: '100%',\n backgroundColor: 'rgb(255, 112, 112)'\n },\n counts: {\n display: 'flex'\n },\n likesCount: {\n marginRight: '32px'\n },\n count: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n icon: {\n marginRight: '4px',\n width: '14px',\n height: '14px',\n color: 'rgba(0,0,0,0.38)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\nimport ThumbDownIcon from '@material-ui/icons/ThumbDown';\nimport {\n calcAverageRating,\n calcWidthOfDislikesScale,\n calcWidthOfLikesScale,\n getCountOfDislikes,\n getCountOfLikes\n} from '../../../helpers/ratings';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n className?: string;\n};\n\nexport const Ratings = ({ratings, className}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, className)}>\n <Typography className={styles.averageRating}>{calcAverageRating(ratings).toFixed(1)}</Typography>\n <div className={styles.scale}>\n <div className={styles.likesScale} style={{width: calcWidthOfLikesScale(ratings)}} />\n <div className={styles.dislikesScale} style={{width: calcWidthOfDislikesScale(ratings)}} />\n </div>\n <div className={styles.counts}>\n <div className={classnames(styles.likesCount, styles.count)}>\n <ThumbUpIcon className={styles.icon} />\n {getCountOfLikes(ratings)}\n </div>\n <div className={styles.count}>\n <ThumbDownIcon className={styles.icon} />\n {getCountOfDislikes(ratings)}\n </div>\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex'\n },\n button: {\n fontSize: '14px',\n textTransform: 'none',\n color: theme.palette.text.secondary\n },\n likeButton: {\n marginLeft: '-12px',\n marginRight: '8px'\n },\n isActive: {\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {DropDownMenuButton} from '@reltio/components';\nimport {Button as Button} from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n onAgree: () => void;\n onDisagree: (comment: string) => void;\n};\n\nexport const RatingsButtons = ({ratings, onAgree, onDisagree}: Props) => {\n const styles = useStyles();\n\n const username = useSelector(mdmModule.selectors.getUserName) as string;\n const ratingOfCurrentUser = ratings.find(({user}) => user === username);\n\n const menuItems = [\n {\n text: i18n.text('Has left the practice'),\n onClick: () => onDisagree(i18n.text('Has left the practice'))\n },\n {\n text: i18n.text('Has moved away'),\n onClick: () => onDisagree(i18n.text('Has moved away'))\n },\n {\n text: i18n.text('Has passed away'),\n onClick: () => onDisagree(i18n.text('Has passed away'))\n },\n {\n text: i18n.text('Has retired'),\n onClick: () => onDisagree(i18n.text('Has retired'))\n },\n {\n text: i18n.text('Other'),\n onClick: () => onDisagree(i18n.text('Other'))\n }\n ];\n\n return (\n <div className={styles.wrapper}>\n <Button\n onClick={onAgree}\n variant=\"text\"\n size=\"small\"\n className={classnames(styles.button, styles.likeButton, {\n [styles.isActive]: ratingOfCurrentUser?.value === 5\n })}\n >\n Agree\n </Button>\n <DropDownMenuButton\n buttonProps={{\n endIcon: <ArrowDropDownIcon />,\n variant: 'text',\n size: 'small',\n className: classnames(styles.button, {\n [styles.isActive]: ratingOfCurrentUser?.value === 1\n })\n }}\n buttonContent={ratingOfCurrentUser?.value === 1 ? ratingOfCurrentUser.comment : 'Disagree'}\n menuItems={menuItems}\n menuId=\"disagree-dropdown-menu-button\"\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {suggested: string}) => ({\n wrapper: {\n padding: '6px 16px 6px'\n },\n entityTypeIcon: {\n marginRight: '16px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '14px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n entityLabelContainer: {\n wordBreak: 'break-all',\n textDecoration: 'none'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n ratings: {\n marginLeft: 'auto'\n },\n showDetailsButton: {\n marginLeft: '16px',\n marginTop: '18px'\n },\n relationAttributes: {\n paddingLeft: '60px'\n },\n suggestedWrapper: {\n padding: '6px 8px 6px 16px',\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n alignSelf: 'center',\n '& + $ratings': {\n marginLeft: '16px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n }\n}));\n","import React, {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n Metadata,\n Connection,\n rateRelation,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {Ratings} from '../Ratings/Ratings';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {RatingsButtons} from '../RatingsButtons/RatingsButtons';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n loadRelations: () => void;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nexport const RelationComplexItem = ({\n connection,\n loadRelations,\n renderRelationArrowButton,\n acceptRelation,\n ignoreRelation\n}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n\n const [showDetails, setShowDetails] = useState(false);\n\n const {entity, relation} = connection;\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityLabel, entityType, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const ratings = relation?.ratings || [];\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n\n const handleAgree = () => {\n rateRelation(relation?.relationUri, {\n comment: '',\n value: 5\n }).then(loadRelations);\n };\n\n const handleDisagree = (comment: string) => {\n rateRelation(relation?.relationUri, {\n comment,\n value: 1\n }).then(loadRelations);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n\n return (\n <div className={classnames(styles.wrapper, {[styles.suggestedWrapper]: isSuggested})}>\n <Box display=\"flex\" minHeight=\"44px\" className={COMMENTS_CONTAINER_VISIBILITY_AREA}>\n <Box display=\"flex\" alignItems=\"center\">\n <Box display=\"flex\" alignItems=\"center\">\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon entityType={entityType} className={styles.entityTypeIcon} />\n </Box>\n <Box display=\"flex\" flexDirection=\"column\">\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n </EntityUriLink>\n {relationLabel && <span className={styles.relationLabel}>{relationLabel}</span>}\n {!isSuggested && (\n <RatingsButtons ratings={ratings} onAgree={handleAgree} onDisagree={handleDisagree} />\n )}\n </Box>\n </Box>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <>\n <Ratings ratings={ratings} className={styles.ratings} />\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetailsButton}\n />\n </>\n )}\n </div>\n </Box>\n {showDetails && <RelationAttributes connection={connection} className={styles.relationAttributes} />}\n </div>\n );\n};\n","import React, {useMemo, useContext, useEffect} from 'react';\nimport {Connection, getRelationshipsObjectIdsForCollaboration, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {CollaborationContext} from '@reltio/components';\nimport RelationItem from './RelationItem/RelationItem';\nimport {RelationComplexItem} from './RelationCompexItem/RelationComplexItem';\nimport {useSuggestedRelations} from '../../hooks/useSuggestedRelations';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\n\ntype Props = {\n className?: string;\n connections: Array<Connection>;\n loadRelations: () => void;\n config?: RelationsViewConfig;\n mainEnityUri?: string;\n};\n\nconst RelationsList = ({className, connections = [], loadRelations, config, mainEnityUri}: Props) => {\n const {isComplex, content} = config;\n const {ignoreRelation, acceptRelation} = useSuggestedRelations(content, loadRelations, mainEnityUri);\n\n const objectIds = useMemo(() => {\n return getRelationshipsObjectIdsForCollaboration(connections);\n }, [connections]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n return (\n <div className={className}>\n {connections.map((connection) => {\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n if (isComplex) {\n return (\n <RelationComplexItem\n loadRelations={loadRelations}\n connection={connection}\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }\n\n return (\n <RelationItem\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n connection={connection}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n })}\n </div>\n );\n};\n\nRelationsList.displayName = 'RelationsList';\n\nexport default RelationsList;\n","import {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n Connection,\n ignoreSuggestedRelation,\n createRelation,\n getRequestErrorMessage,\n Directions,\n RelationsContent\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {getFirstRelationTypeObject} from '../helpers/relation';\n\nexport const useSuggestedRelations = (content: RelationsContent, loadRelations: () => void, mainEnityUri: string) => {\n const relationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const dispatch = useDispatch();\n const ignoreRelation = (connection: Connection) => () => {\n const {entity} = connection;\n ignoreSuggestedRelation(mainEnityUri, {\n relatedEntityUri: entity.entityUri,\n relationType: relationTypeObject.type,\n relationDirection: relationTypeObject.direction\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n const acceptRelation = (connection: Connection) => () => {\n const {entity, relation} = connection;\n const {startDate, endDate} = relation;\n const isInDirection = relationTypeObject.direction === Directions.IN;\n const startEntityUri = isInDirection ? entity.entityUri : mainEnityUri;\n const endEntityUri = isInDirection ? mainEnityUri : entity.entityUri;\n createRelation({\n startEntityUri,\n endEntityUri,\n relationType: relationTypeObject.type,\n attributes: null,\n startDate,\n endDate\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n return {\n ignoreRelation,\n acceptRelation\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n list: {\n paddingTop: '8px',\n paddingBottom: '10px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {isEditableMode, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport RelationsEditableContent from '../RelationsEditableContent/RelationsEditableContent';\nimport RelationsList from '../RelationsList/RelationsList';\nimport {useStyles} from './styles';\n\ntype Props = {\n isLoading: boolean;\n config: RelationsViewConfig;\n loadRelations: () => void;\n connections: Connection[];\n total: number;\n parentEntityUri?: string;\n};\n\nexport const RelationsContent = ({isLoading, config, loadRelations, connections, total, parentEntityUri}: Props) => {\n const styles = useStyles();\n\n const {selectors} = mdmModule;\n const entity = useSelector(selectors.getEntity);\n const mode = useSelector(selectors.getMode);\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (isEditableMode(mode)) {\n return (\n <RelationsEditableContent\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n config={config}\n mode={mode}\n noDataText={noDataText}\n parentEntityUri={parentEntityUri}\n />\n );\n }\n\n if (total > 0) {\n return (\n <RelationsList\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n mainEnityUri={entity.uri}\n />\n );\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0\n },\n content: {\n position: 'relative',\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: 0\n },\n pagination: {\n height: '52px',\n flexGrow: 0,\n flexShrink: 0\n }\n});\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {ActivityFilter, Connection, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, EntitiesMapContext, useRelationsLoader} from '@reltio/components';\nimport RelationsHeader from '../RelationsHeader/RelationsHeader';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {ImportDTContext} from '../../contexts/ImportDTContext';\nimport {buildRelationsFilter} from '../../helpers/filters';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {pick} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationsViewConfig;\n className?: string;\n};\n\nconst RelationsView = ({config, className}: Props) => {\n const styles = useStyles();\n\n const {\n page,\n setPage,\n rowsPerPage,\n sortOrder,\n sortOption,\n showInactive,\n searchQuery,\n changeSearchQuery\n } = useContext(RelationsViewStateContext);\n const {selectors} = mdmModule;\n const connections = useSelector((state) =>\n selectors.getConnectionsWithDraftsByViewId(state, config.id)\n ) as Connection[];\n const entity = useSelector(selectors.getEntity);\n const total = useSelector((state) => selectors.getTotalByViewId(state, config.id));\n const mode = useSelector(selectors.getMode);\n const sorting = useMemo(\n () => ({\n order: sortOrder,\n field: sortOption\n }),\n [sortOrder, sortOption]\n );\n\n useEffect(() => {\n changeSearchQuery('');\n }, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const filter = useMemo(() => buildRelationsFilter(searchQuery), [searchQuery]);\n\n const {isLoading, reload: loadRelations} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const importDTContextValue = useMemo(\n () => ({\n reloadRelations: loadRelations,\n config: pick(['content', 'importFromDT', 'maxDtssImport'], config)\n }),\n [loadRelations, config]\n );\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={className}>\n <div className={styles.container}>\n <ImportDTContext.Provider value={importDTContextValue}>\n <RelationsHeader title={config.caption} total={total} />\n </ImportDTContext.Provider>\n <div className={styles.content}>\n <RelationsContent\n isLoading={isLoading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n />\n {total > rowsPerPage && (\n <BasicTablePagination\n classes={{root: styles.pagination}}\n count={total}\n rowsPerPageOptions={[]}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n />\n )}\n </div>\n </div>\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n\nRelationsView.displayName = 'RelationsView';\n\nexport {RelationsView};\n","import {FilterBuilder, Maybe, filterValueToQueryStringWithQuotes} from '@reltio/mdm-sdk';\n\nconst buildRelationsFilter = (searchQuery) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n return new FilterBuilder().addClause(queryClause).build();\n};\n\nexport {buildRelationsFilter};\n","import {useCallback, useMemo, useState} from 'react';\nimport {RelationsViewConfig, SortOrder} from '@reltio/mdm-sdk';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Option = {\n value: string;\n label: string;\n};\n\nexport type RelationsViewState = {\n searchQuery: string;\n changeSearchQuery: (value: string) => void;\n sortOrder: SortOrder;\n toggleSortOrder: () => void;\n sortOption?: string;\n changeSortOption: (option: string) => void;\n sortOptions: Option[];\n page: number;\n setPage: (page: number) => void;\n rowsPerPage: number;\n showInactive: boolean;\n toggleShowInactive: () => void;\n};\n\nconst useRelationsState = (config: RelationsViewConfig): RelationsViewState => {\n const sortOptions = useMemo(\n () =>\n Object.entries(config.sortOptions || {}).map(([key, value]) => ({\n value: key,\n label: value\n })),\n [config.sortOptions]\n );\n\n const rowsPerPage = config.max || DEFAULT_ROWS_PER_PAGE;\n const [page, setPage] = useState(0);\n const [sortOrder, setSortOrder] = useState(config.sortOrder || DEFAULT_SORT_ORDER);\n const [sortOption, setSortOption] = useState(sortOptions[0]?.value);\n const [searchQuery, setSearchQuery] = useState('');\n const [showInactive, setShowInactive] = useState(DEFAULT_SHOW_INACTIVE);\n\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n const toggleSortOrder = useCallback(() => {\n setPage(0);\n setSortOrder((order) => {\n return order === 'asc' ? 'desc' : 'asc';\n });\n }, []);\n\n const changeSortOption = useCallback((option: string) => {\n setPage(0);\n setSortOption(option);\n }, []);\n\n const changeSearchQuery = useCallback((value: string) => {\n setPage(0);\n setSearchQuery(value);\n }, []);\n\n return {\n searchQuery,\n changeSearchQuery,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions,\n page,\n setPage,\n rowsPerPage,\n showInactive,\n toggleShowInactive\n };\n};\n\nexport default useRelationsState;\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\n\nexport const TableAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n visibleColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n onToggleFilters: () => void;\n onSort: (payload) => void;\n onFilter: (payload) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n showTable: boolean;\n filters: {\n [key: string]: {\n filter: string;\n values: [string];\n };\n };\n sorting: {\n order: 'desc' | 'asc';\n field: string;\n };\n attributeType: AttributeType;\n }>(null);\n\nTableAttributeContext.displayName = 'SingleAttributeContext';\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles(() => ({\n tableContainer: {\n height: '477px',\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > div': removedStyle\n }\n}));\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import {pipe, assoc, reduce, split, slice, map, path, uniqBy, prop} from 'ramda';\nimport {\n getReadableAttributesList,\n getOvAttributeValuesByPath,\n getAttrDataTypeDefinition,\n attributeUriToSearchUri,\n isAttributeSearchUri\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from '../components/AttributeTable/HeadCellRenderer';\nimport {DefaultCellValueRenderer} from '@reltio/components';\n\nexport const getColumnsDataFromAttributes = pipe(\n map((attr) => ({\n id: attributeUriToSearchUri(attr.uri),\n label: attr.label,\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n })),\n uniqBy(prop('id'))\n);\n\nexport const getColumnsData = pipe(getReadableAttributesList, getColumnsDataFromAttributes);\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getAttributeValues = (attrPath, value) => pipe(path(['value']), getOvAttributeValuesByPath(attrPath))(value);\n\nconst getRowValueByColumnId = (columnId, value) => {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getAttributeValues(attrPath, value);\n};\n\nexport const getBasicTableRowsData = (values, columnsData) =>\n values.map((value) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, value), acc), {}),\n assoc('value', value)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (isAttributeSearchUri(columnId)) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: DefaultCellValueRenderer\n});\n\nexport const getBasicTableColumnsData = map(getColumnDataByColumnId);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 4px 0 16px'\n }\n}));\n","import React from 'react';\nimport {\n FacetViewHeader,\n ColumnsSettings,\n FilterButton,\n VerticalDivider,\n ExpandableSearchInput\n} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {ColumnsDataType} from '../types';\n\ntype Props = {\n title: string;\n total: number;\n columnsData: ColumnsDataType;\n selectedColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n searchQuery: string;\n onChangeSearchQuery: (val: string) => void;\n filtersEnabled: boolean;\n onToggleFilters: () => void;\n};\nconst AttributeTableHeader = ({\n title,\n searchQuery,\n onChangeSearchQuery,\n filtersEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n onChangeColumns\n}: Props) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </FacetViewHeader>\n );\n};\n\nexport default AttributeTableHeader;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {withTableContext} from '@reltio/components';\n\ntype Props = {\n cell: {values: string[]};\n isSorted: boolean;\n CellValueRenderer: React.ElementType;\n isRemoved: boolean;\n};\nconst RowCellRenderer = ({cell, CellValueRenderer, isRemoved, isSorted, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({deletedUris}, {rowValue: {value}}) => ({\n isRemoved: Boolean(deletedUris.find((uri) => value.uri === uri))\n}))(RowCellRenderer);\n","import React from 'react';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\ntype Props = {\n onEdit?: () => void;\n onRemove?: () => void;\n};\n\nexport const EditButtons = ({onEdit, onRemove}: Props) => (\n <>\n {onEdit && (\n <SmallIconButtonWithTooltip tooltipTitle={i18n.text('Edit')} icon={EditIcon} size=\"L\" onClick={onEdit} />\n )}\n {onRemove && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Remove')}\n icon={DeleteIcon}\n size=\"L\"\n onClick={onRemove}\n />\n )}\n </>\n);\n\nexport default EditButtons;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport RowCellRenderer from './RowCellRenderer';\nimport {BasicTable, useConfigPermissions} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from '../../helpers/tableAttributeHelpers';\nimport {useStyles} from './styles';\nimport {\n AttributeValue,\n checkCanEditAttribute,\n checkCanDeleteAttribute,\n SearchFilter,\n isReltioCrosswalk,\n Entity,\n isEditableMode as checkIsEditableMode,\n AttributeItem,\n SingleAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../types';\nimport EditButtons from './EditButtons';\nimport {useSelector} from 'react-redux';\nimport {path, prop, pipe} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n columnsData: ColumnsDataType;\n values: AttributeValue[];\n filters?: {\n [key: string]: SearchFilter;\n };\n onFilter?: (payload) => void;\n sorting?:\n | {\n field: string;\n order: string;\n }\n | undefined;\n onSort?: (payload) => void;\n config: SingleAttributeViewConfig;\n onEdit: React.Dispatch<AttributeValue>;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n deletedUris: string[];\n};\n\nconst AttributeTable = ({\n columnsData,\n values,\n sorting,\n onSort,\n filters,\n onFilter,\n config,\n onEdit,\n onDeleteAttribute,\n deletedUris\n}: Props) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(values, columnsData), [values, columnsData]);\n\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const {attributeType} = useContext(TableAttributeContext);\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n\n const {canUpdate, canDelete} = useConfigPermissions();\n\n const checkCanEdit = (attributeValue: AttributeValue) =>\n canUpdate(config) &&\n checkCanEditAttribute({\n attributeType,\n mode,\n attributeValue,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n const checkCanRemove = (attributeValue: AttributeValue) =>\n canDelete(config) &&\n checkCanDeleteAttribute({\n attributeType,\n mode,\n attributeValue,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n\n const hideRightContent = useMemo(\n () =>\n typeof hoverRowIndex === 'number' && isEditableMode\n ? deletedUris.includes(pipe(path([hoverRowIndex]), prop('uri'))(values))\n : true,\n [hoverRowIndex, deletedUris, values, isEditableMode]\n );\n const canRemove = typeof hoverRowIndex === 'number' && checkCanRemove(path([hoverRowIndex], values));\n const canEdit = typeof hoverRowIndex === 'number' && checkCanEdit(path([hoverRowIndex], values));\n\n const handleEditAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canEdit) return;\n onEdit(attributeValue);\n }, [onEdit, hoverRowIndex, values, canEdit]);\n\n const handleRemoveAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canRemove) return;\n const attribute: AttributeItem = {\n parentUri: entityUri,\n attributeType,\n uri: attributeValue.uri,\n value: attributeValue\n };\n onDeleteAttribute(attribute);\n setHoverRowIndex(null);\n }, [hoverRowIndex, values, onDeleteAttribute, canRemove, attributeType, entityUri]);\n\n const hoveredRowRightContent =\n !hideRightContent && (canRemove || canEdit) ? (\n <EditButtons\n onEdit={canEdit ? handleEditAttribute : undefined}\n onRemove={canRemove ? handleRemoveAttribute : undefined}\n />\n ) : undefined;\n const context = useMemo(() => ({deletedUris}), [deletedUris]);\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n renderRowCell={renderRowCell}\n onRowHover={setHoverRowIndex}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n context={context}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n />\n </div>\n );\n};\n\nexport default AttributeTable;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\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 {Button as Button} from '@material-ui/core';\nimport React, {useCallback, useContext} from 'react';\nimport {useStyles} from './styles';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {AttributeValue, Entity, isTempUri, getAttributeOwnError, AttributeItem} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {EditableAttribute, ViewIdContext} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n hasChanges: boolean;\n onChangeAttribute: (attribute: AttributeItem) => void;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n onCancel: (attributeValue: AttributeValue) => void;\n onApply: (attributeValue: AttributeValue) => void;\n attributeValue: AttributeValue;\n};\n\nexport const AttributeEditing = ({\n onChangeAttribute,\n onCancel,\n onApply,\n onDeleteAttribute,\n hasChanges,\n attributeValue\n}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {attributeType} = useContext(TableAttributeContext);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const showEmptyEditors = isTempUri(entityUri);\n\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, entityUri, attributeType)\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n return (\n <>\n <EditableAttribute\n expanded\n attributeValue={attributeValue}\n showEmptyEditors={showEmptyEditors}\n onDeleteAttribute={onDeleteAttribute}\n onDeactivateError={onDeactivateError}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n mode={mode}\n crosswalks={modifiedEntity.crosswalks}\n errors={errors}\n attributeType={attributeType}\n ownError={getAttributeOwnError(attributeValue, null, attributeType.uri, errors)}\n />\n <div className={styles.actionButtons}>\n <Button\n onClick={() => {\n onCancel(attributeValue);\n }}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n color=\"primary\"\n disabled={!hasChanges}\n onClick={() => {\n onApply(attributeValue);\n }}\n >\n {i18n.text('Apply')}\n </Button>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n flex: 1,\n overflow: 'auto'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n\n tableContainer: {\n height: '477px',\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n header: {\n padding: '0 4px 0 16px'\n },\n\n addButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n padding: '4px 16px'\n }\n}));\n","import {useCallback, useContext, useState, useMemo, useEffect} from 'react';\nimport {\n AttributeValue,\n createNewAttribute,\n Entity,\n getAttributeSource,\n isEditableMode as checkIsEditableMode,\n NestedAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, pathOr, pipe, map, prop, equals, both, not, without, filter} from 'ramda';\nimport {TableAttributeContext} from '../../../contexts/TableAttributeContext';\nimport {isTempUri, createDefaultValues} from '@reltio/mdm-sdk';\n\nconst emptyArray = [];\n\nexport const useEditableAttribute = () => {\n const [newAttributeUri, setNewAttributeUri] = useState<string>();\n const [originalValues, setOriginalValues] = useState<AttributeValue[]>([]);\n const mode = useSelector(mdmModule.selectors.getMode);\n\n useEffect(() => {\n setOriginalValues([]);\n setNewAttributeUri(null);\n }, [mode]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const {attributeType, values} = useContext(TableAttributeContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => {\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n },\n [viewId, dispatch]\n );\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onAdd = useCallback(() => {\n const newAttribute = createNewAttribute({\n parentUri: entityUri,\n attributeType\n });\n setNewAttributeUri(newAttribute.uri);\n onChangeAttribute({\n ...newAttribute,\n value: createDefaultValues({\n attributeTypes: attributeType.attributes,\n parentUri: newAttribute.uri,\n mode,\n metadata\n }),\n attributeType\n });\n }, [entityUri, attributeType]);\n\n const onStartEditing = useCallback(\n (attributeValue: AttributeValue) => {\n setOriginalValues((prev) => {\n if (!prev.find(propEq('uri', attributeValue.uri))) {\n return [...prev, attributeValue];\n }\n return prev;\n });\n },\n [setOriginalValues]\n );\n\n const onCancel = useCallback(\n (attributeValue: AttributeValue) => {\n const editingValueOriginal = originalValues.find(propEq('uri', attributeValue.uri));\n if (editingValueOriginal) {\n const attributeItem = {\n ...attributeValue,\n value: editingValueOriginal,\n attributeType,\n uri: attributeValue.uri\n };\n setOriginalValues((prev) => without([editingValueOriginal], prev));\n onChangeAttribute(attributeItem);\n } else {\n const attributeItem = {\n value: attributeValue,\n attributeType,\n uri: attributeValue.uri\n };\n setNewAttributeUri(null);\n onDeleteAttribute(attributeItem);\n }\n },\n [onDeleteAttribute, onChangeAttribute, setOriginalValues, originalValues]\n );\n\n const onApply = useCallback(\n (attributeValue: AttributeValue) => {\n setNewAttributeUri(null);\n setOriginalValues((prev) => {\n const original = prev.find(propEq('uri', attributeValue.uri));\n return original ? without([original], prev) : prev;\n });\n },\n [setOriginalValues, setNewAttributeUri]\n );\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const isEditableMode = checkIsEditableMode(mode);\n const attributeSource = getAttributeSource(attributeType);\n\n const modifiedEntityValues: NestedAttributeValue[] = pathOr(\n emptyArray,\n [attributeSource, attributeType?.name],\n modifiedEntity\n );\n\n const modifiedValues = useMemo(() => {\n const newValues = modifiedEntityValues.filter(\n pipe(prop('uri'), both(isTempUri, pipe(equals(newAttributeUri), not)))\n );\n\n const oldValues = map(\n (originalValue) => modifiedEntityValues.find(propEq('uri', originalValue.uri)) || originalValue\n )(values);\n return [...newValues, ...oldValues].map((value) => originalValues.find(propEq('uri', value.uri)) ?? value);\n }, [modifiedEntityValues, originalValues, newAttributeUri, values]);\n\n const deletedUris = useMemo(\n () =>\n isEditableMode\n ? pipe(\n map(prop('uri')),\n filter((uri) => !modifiedEntityValues.find(propEq('uri', uri)))\n )(values)\n : [],\n [modifiedEntityValues, values]\n );\n\n const editingValues = modifiedEntityValues.filter(\n ({uri}) => uri === newAttributeUri || originalValues.find(propEq('uri', uri))\n );\n\n const checkHasChanges = (value) => originalValues.find(propEq('uri', value.uri)) !== value;\n\n return {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n };\n};\n","import React, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n BasicView,\n BasicTablePagination,\n LinearLoadIndicator,\n FacetViewHeader,\n useConfigPermissions\n} from '@reltio/components';\nimport {propEq} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport AttributeTableHeader from '../AttributeTableHeader/AttributeTableHeader';\nimport AttributeTable from '../AttributeTable/AttributeTable';\nimport {getColumnsData} from '../../helpers/tableAttributeHelpers';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {AttributeEditing} from '../AttributeEditing/AttributeEditing';\n\nimport {useStyles} from './styles';\nimport {\n checkCanCreateAttribute,\n isEditableMode as checkIsEditableMode,\n SingleAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useEditableAttribute} from './hooks/useEditableAttribute';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const TableAttributeView = ({config, className}: Props) => {\n const {caption, max} = config;\n const styles = useStyles();\n\n const {\n values,\n page,\n setPage,\n isLoading,\n searchQuery,\n setSearchQuery,\n visibleColumns,\n onFilter,\n onSort,\n onToggleFilters,\n onChangeColumns,\n filters,\n sorting,\n totalVisibleValues,\n hasPaging,\n attributeType,\n showTable\n } = useContext(TableAttributeContext);\n\n const allColumnsData = useMemo(() => getColumnsData(attributeType), [attributeType]);\n\n const {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n } = useEditableAttribute();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n\n const preparedValues = isEditableMode ? modifiedValues : values;\n\n const {canCreate: hasConfigToCreate} = useConfigPermissions();\n\n const canCreate =\n hasConfigToCreate(config) &&\n attributeType &&\n checkCanCreateAttribute({attributeType, mode}) &&\n !editingValues.length;\n\n const visibleColumnsData = useMemo(() => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))), [\n visibleColumns,\n allColumnsData\n ]);\n\n return (\n <BasicView className={classnames(styles.root, className)}>\n {showTable ? (\n <>\n <AttributeTableHeader\n title={caption}\n total={totalVisibleValues}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n searchQuery={searchQuery}\n onChangeSearchQuery={setSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={onToggleFilters}\n />\n <div style={{position: 'relative'}}>\n {isEditableMode && (\n <div className={styles.editor}>\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.addButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {editingValues.map((value) => (\n <AttributeEditing\n key={value.uri}\n attributeValue={value}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n onCancel={onCancel}\n onApply={onApply}\n hasChanges={checkHasChanges(value)}\n />\n ))}\n </div>\n )}\n <AttributeTable\n columnsData={visibleColumnsData}\n config={config}\n values={preparedValues}\n filters={filters}\n onFilter={onFilter}\n sorting={sorting}\n onSort={onSort}\n onEdit={onStartEditing}\n onDeleteAttribute={onDeleteAttribute}\n deletedUris={deletedUris}\n />\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n rowsPerPageOptions={[]}\n rowsPerPage={max}\n page={page}\n onChangePage={setPage}\n />\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </>\n ) : (\n <>\n <FacetViewHeader title={caption} className={styles.header} />\n <Typography className={styles.noData}>{i18n.text('No data')}</Typography>\n </>\n )}\n </BasicView>\n );\n};\n","import {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {pick, prop} from 'ramda';\nimport {Entity, getPathsTree, isTempUri, updateTreesWithNewEntity} from '@reltio/mdm-sdk';\nimport {useDidUpdateEffect, useSafePromise} from '@reltio/components';\nimport {Response, Node} from '../types';\n\nlet nodeCounter = 0;\nexport const generateId = () => nodeCounter++;\n\nconst processResponse = (response: Response) => {\n const fakeRoot = {\n children: [] as Node[],\n nodeId: generateId()\n };\n if (response.parentPaths) {\n for (let i = 0; i < response.parentPaths.length; i++) {\n const path = response.parentPaths[i];\n let nextRoot = fakeRoot;\n for (let j = path.length - 1; j >= 0; j--) {\n const nextParent = path[j];\n const entity = response.entities[nextParent.entityUri];\n const isRoot = j === path.length - 1;\n const node: Node = {\n entity,\n children: [],\n nodeId: generateId(),\n expanded: true,\n rootIndex: isRoot ? i + 1 : undefined\n };\n if (isRoot) {\n node.root = isRoot;\n }\n nextRoot.children.push(node);\n nextRoot = node;\n }\n }\n }\n return fakeRoot.children;\n};\nexport const useLoadPaths = (entityUri: string, graphUri: string) => {\n const safePromise = useSafePromise();\n const [treeData, setTreeData] = useState<Node[]>([]);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n useDidUpdateEffect(() => {\n const forest = treeData\n .map((tree, index) => ({tree, index}))\n .reduce((acc, tree) => ({...acc, [tree.index]: {root: tree.tree}}), {});\n const newTrees = updateTreesWithNewEntity(pick(['uri', 'label', 'secondaryLabel', 'type'], entity), forest);\n setTreeData(newTrees.map(prop('root')));\n }, [entity?.updatedTime]);\n useEffect(() => {\n if (!isTempUri(entityUri)) {\n safePromise(getPathsTree({uri: entityUri, graphUri}))\n .then(processResponse)\n .then(setTreeData)\n .catch((e) => {\n console.warn(e);\n });\n }\n return () => {\n setTreeData([]);\n };\n }, [entityUri, graphUri, safePromise]);\n return {treeData, setTreeData};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n minHeight: '15px',\n color: theme.palette.secondary.main,\n lineHeight: '15px'\n },\n link: {\n cursor: 'pointer',\n color: theme.palette.secondary.main,\n lineHeight: '15px'\n },\n selected: {\n fontWeight: 'bold'\n },\n wrapper: {\n width: '100%'\n },\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '8px',\n marginLeft: '8px'\n },\n header: {\n padding: '0 4px 0 16px'\n },\n treeContainer: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n minHeight: '372px',\n maxHeight: '507px',\n overflow: 'auto'\n },\n tree: {\n flexGrow: 1,\n height: 0\n },\n buttonsContainer: {\n flexShrink: 0,\n marginLeft: 'auto',\n '& > * + *': {\n marginLeft: '-4px'\n }\n },\n button: {\n padding: '8px'\n }\n}));\n","import React from 'react';\nimport {HierarchyPathsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ConfigContext = React.createContext<HierarchyPathsViewConfig>(null);\n","import React, {memo, useCallback, useContext} from 'react';\nimport classnames from 'classnames';\nimport {Avatar as Avatar} from '@material-ui/core';\nimport {useStyles} from './styles';\nimport DEFAULT_ICON from './defaultTypeIcon.png';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdm, {ui} from '@reltio/mdm-module';\nimport {ConfigContext} from './ConfigContext';\nimport {getAbsoluteImageUrl, getEntityType, getPropWithInheritance, getEntityLink} from '@reltio/mdm-sdk';\nimport {Link} from '@reltio/components';\nimport {Node as NodeType} from './types';\n\nconst onImageLoadFail = (e) => {\n e.target.src = DEFAULT_ICON;\n};\n\ntype Props = {\n node?: NodeType;\n};\n\nexport const Node = ({node}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const uri = node.entity.uri;\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const config = useContext(ConfigContext);\n const uiPath = useSelector(mdm.selectors.getUIPath);\n const {uri: currentEntityUri} = useSelector(mdm.selectors.getEntity);\n const entityLink = getEntityLink({uiPath, uri});\n const isSelected = uri === currentEntityUri;\n const onTitleClick = useCallback(() => {\n dispatch(ui.actions.openEntity({uri, viewId: config.id}));\n }, [dispatch, config, uri]);\n const {\n entity: {label: title},\n nodeId\n } = node;\n const entityType = getEntityType(metadata, node.entity.type) || {};\n const entityTypeGraphIcon = getPropWithInheritance(metadata, entityType, 'typeGraphIcon');\n const icon = entityTypeGraphIcon && getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n return (\n <div className={styles.wrapper} data-node-id={nodeId}>\n <div className={styles.container}>\n <Avatar className={classnames(styles.avatar)} src={icon || DEFAULT_ICON} onError={onImageLoadFail} />\n <span className={classnames(styles.link, {[styles.selected]: isSelected})}>\n <Link to={entityLink} onClick={onTitleClick}>\n {title}\n </Link>\n </span>\n </div>\n </div>\n );\n};\n\nexport default memo(Node);\n","export const getNodeKey = ({node}) => node.nodeId;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n lineBlock: {\n height: '100%',\n position: 'relative',\n display: 'inline-block'\n },\n lineChildren: {\n height: '100%',\n position: 'absolute',\n display: 'inline-block'\n },\n rootIndex: {\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.54)',\n height: '100%'\n },\n verticalLine: {\n width: '1px',\n left: '50%',\n top: 0,\n height: '50%',\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n horizontalLineRight: {\n height: '1px',\n top: '14px',\n left: '50%',\n width: '24%',\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n node: {\n minWidth: '100%',\n position: 'relative',\n textAlign: 'left',\n padding: '0 24px 0 18px',\n boxSizing: 'border-box',\n whiteSpace: 'normal',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)'\n }\n },\n nodeContent: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n paddingLeft: '18px',\n boxSizing: 'border-box'\n },\n row: {\n display: 'flex'\n },\n rowContents: {\n position: 'relative',\n borderLeft: 'none',\n paddingLeft: '4px',\n flex: '1 1 auto',\n width: 0,\n display: 'flex',\n verticalAlign: 'middle',\n boxSizing: 'border-box'\n },\n buttonWrapper: {\n display: 'flex',\n paddingTop: '13px',\n width: '12px',\n cursor: 'pointer'\n },\n collapsedButton: {\n transform: 'rotate(-90deg)'\n },\n expandedButton: {\n transform: 'rotate(0deg)'\n },\n button: {\n transition: 'transform .15s ease',\n width: 0,\n height: 0,\n borderLeft: '4px solid transparent',\n borderRight: '4px solid transparent',\n borderTop: '4px solid rgba(0, 0, 0, 0.54)'\n },\n rowTitle: {\n flex: '1 1 auto',\n width: 0,\n paddingRight: '11px'\n }\n}));\n","import React from 'react';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\nimport {omit} from 'ramda';\nimport {Node} from '../types';\n\ntype Props = {\n treeIndex: number;\n scaffoldBlockPxWidth: number;\n node: Node;\n path: Array<string | number>;\n style?: Record<string, unknown>;\n title: React.ReactElement;\n toggleChildrenVisibility: (props) => void;\n};\n\nconst NodeRendererDefault = (props: Props) => {\n const {scaffoldBlockPxWidth, toggleChildrenVisibility, node, title, path, treeIndex, style, ...otherProps} = omit(\n [\n 'connectDragPreview',\n 'connectDragSource',\n 'isDragging',\n 'canDrop',\n 'canDrag',\n 'draggedNode',\n 'isSearchMatch',\n 'isSearchFocus',\n 'buttons',\n 'didDrop',\n 'children',\n 'treeId',\n 'isOver',\n 'parentNode',\n 'rowDirection'\n ],\n props\n );\n const nodeTitle = title;\n\n const showToggleChildrenButton =\n toggleChildrenVisibility && !node.root && node.children && node.children.length > 0;\n\n const onToggle = () => {\n toggleChildrenVisibility({\n node,\n path,\n treeIndex\n });\n };\n const styles = useStyles();\n return (\n <div style={{height: '100%'}} {...otherProps} key={node.nodeId}>\n {showToggleChildrenButton && node.expanded && (\n <div style={{width: scaffoldBlockPxWidth - 2}} className={styles.lineChildren} />\n )}\n <div className={styles.row} style={style}>\n <div className={styles.rowContents}>\n {showToggleChildrenButton && (\n <div className={styles.buttonWrapper} onClick={onToggle}>\n <div\n aria-label={node.expanded ? 'Collapse' : 'Expand'}\n className={classnames(\n styles.button,\n node.expanded ? styles.expandedButton : styles.collapsedButton\n )}\n />\n </div>\n )}\n <div className={styles.rowTitle}>\n {typeof nodeTitle === 'function'\n ? nodeTitle({\n node,\n path,\n treeIndex\n })\n : nodeTitle}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default NodeRendererDefault;\n","import treeNodeRenderer from './tree-node-data-renderer';\nimport nodeContentRenderer from './node-content-renderer';\n\nconst scaffoldBlockPxWidth = 16;\nconst rowHeight = 28;\nconst slideRegionSize = 50;\n\nexport const theme = {nodeContentRenderer, treeNodeRenderer, scaffoldBlockPxWidth, rowHeight, slideRegionSize};\n","import React from 'react';\nimport {useStyles} from './styles';\nimport {omit} from 'ramda';\nimport {Node} from '../types';\n\nconst MIN_NODE_CONTENT_WIDTH = 250;\n\ntype Props = {\n scaffoldBlockPxWidth: number;\n lowerSiblingCounts: number[];\n\n node: Node;\n children: React.ReactElement;\n style?: Record<string, unknown>;\n};\n\nconst TreeNode = (props: Props) => {\n const {children, scaffoldBlockPxWidth, lowerSiblingCounts, node, ...otherProps} = omit(\n [\n 'listIndex',\n 'swapFrom',\n 'swapLength',\n 'swapDepth',\n 'draggedNode',\n 'getPrevRow',\n 'connectDropTarget',\n 'isOver',\n 'canDrop',\n 'treeIndex',\n 'treeId',\n 'path',\n 'rowDirection'\n ],\n props\n );\n const styles = useStyles();\n // Construct the scaffold representing the structure of the tree\n const scaffoldBlockCount = lowerSiblingCounts.length;\n const scaffold = [];\n lowerSiblingCounts.forEach((lowerSiblingCount, i) => {\n scaffold.push(\n <div key={`pre_${1 + i}`} style={{width: scaffoldBlockPxWidth}} className={styles.lineBlock}>\n {node.root && <div className={styles.rootIndex}>{node.rootIndex}.</div>}\n {i === scaffoldBlockCount - 1 && i !== 0 && (\n <>\n <div className={styles.verticalLine} />\n <div className={styles.horizontalLineRight} />\n </>\n )}\n </div>\n );\n });\n\n const shift = node.root ? scaffoldBlockPxWidth - 4 : 0; //4px - shifting for rootIndex\n const scaffoldWidth = scaffoldBlockPxWidth * scaffoldBlockCount - shift;\n const style = {left: scaffoldWidth, width: `calc(100% - ${scaffoldWidth}px`};\n const width = `${scaffoldWidth + MIN_NODE_CONTENT_WIDTH}px`;\n const nodeStyle = {...otherProps.style, width};\n return (\n <div {...otherProps} className={styles.node} style={nodeStyle}>\n {scaffold}\n\n <div className={styles.nodeContent} style={style}>\n {children}\n </div>\n </div>\n );\n};\n\nexport default TreeNode;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \".54\"\n}, React.createElement(\"path\", {\n d: \"M14.5 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm4 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm-17 1a1.5 1.5 0 110-3 1.5 1.5 0 010 3zM4 4a2 2 0 110-4 2 2 0 010 4zm1 16a2 2 0 110-4 2 2 0 010 4zm4.5-6a4.5 4.5 0 110-9 4.5 4.5 0 010 9zm0-2a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm6 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3z\",\n fill: \"#000\"\n}))));","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {FacetViewHeader, SmallIconButtonWithTooltip} from '@reltio/components';\nimport ShowGraphIcon from './icons/ShowGraph.svg';\nimport {useStyles} from './styles';\n\ntype Props = {\n title?: string;\n onGraphOpen: () => void;\n};\n\nconst HierarchyPathsHeader = ({title, onGraphOpen}: Props) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <div className={styles.buttonsContainer}>\n <SmallIconButtonWithTooltip\n className={styles.button}\n tooltipTitle={i18n.text('Show Graph')}\n icon={ShowGraphIcon}\n onClick={onGraphOpen}\n size=\"L\"\n />\n </div>\n </FacetViewHeader>\n );\n};\n\nexport default HierarchyPathsHeader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative'\n },\n bodyWrapper: {\n paddingTop: '21px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n resizableHandleContainer: {\n position: 'relative',\n width: '100%',\n height: 'inherit'\n },\n resizableHandleVisibilityArea: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '24px',\n zIndex: 11,\n '&:hover $resizableHandle': {\n visibility: 'visible'\n },\n '.react-grid-item.static &:hover $resizableHandle': {\n visibility: 'hidden'\n }\n },\n resizableHandle: {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n top: '-3px',\n zIndex: 11,\n cursor: 'move',\n visibility: 'hidden'\n },\n dragIcon: {\n transform: 'translateX(-50%) rotate(90deg)',\n color: 'rgba(0, 0, 0, 0.3)'\n }\n});\n","import React, {ComponentType} from 'react';\nimport classnames from 'classnames';\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\n\nimport {useStyles} from './styles';\n\nconst withResizableHandle = <P extends unknown>(Component: ComponentType<P>) => {\n const WithResizableHandle = (props: P) => {\n const styles = useStyles();\n return (\n <div className={styles.resizableHandleContainer}>\n <div className={styles.resizableHandleVisibilityArea}>\n <div className={classnames('viewDraggableHandle', styles.resizableHandle)}>\n <DragIndicatorIcon className={styles.dragIcon} />\n </div>\n </div>\n <Component {...props} />\n </div>\n );\n };\n\n WithResizableHandle.displayName = 'WithResizableHandle';\n return WithResizableHandle;\n};\n\nexport default withResizableHandle;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n stubView: {\n padding: '20px'\n },\n fullHeight: {\n height: '100%'\n },\n component: {\n boxSizing: 'border-box',\n overflow: 'auto',\n boxShadow: 'none',\n borderRadius: 'unset'\n }\n});\n","import {useEffect, useState} from 'react';\nimport {both, gt, lt, path, pipe} from 'ramda';\nimport {resolve} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nconst filterWrongLat = pipe(path(['point', 'lat']), both(gt(90), lt(-90)));\n\nexport const useMarkers = (entity, metadata, mapKey) => {\n const [markers, setMarkers] = useState([]);\n const [loading, setLoading] = useState(true);\n const safePromise = useSafePromise();\n useEffect(() => {\n setLoading(true);\n safePromise(resolve(metadata, [entity], mapKey))\n .then((markers) => {\n setMarkers(markers.filter(filterWrongLat));\n })\n .catch(() => {\n setMarkers([]);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [entity, metadata, mapKey, safePromise]);\n\n return {markers, loading};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n fullHeight: {\n height: '100%'\n },\n fullscreenBtn: {\n position: 'absolute',\n right: '5px',\n top: '5px',\n zIndex: 100\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n caption: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport useStyles from './styles';\n\ntype ImageLineCaptionProps = {\n totalImages: number;\n};\n\nexport const ImageLineCaption = ({totalImages}: ImageLineCaptionProps) => {\n const styles = useStyles();\n const photoWord = totalImages > 1 ? i18n.text('photos') : i18n.text('photo');\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {`${totalImages} ${photoWord}`}\n </Typography>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, pathOr} from 'ramda';\nimport {EditableImageAttributesLine} from '@reltio/components';\nimport {AttributeType, Entity, Paging, AttributeItem, ImageAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {IMAGE_SIZE} from '../ImageAttributeView';\nimport {ImageLineCaption} from '../ImageLineCaption/ImageLineCaption';\n\ntype ImageAttributeViewEditableContentProps = {\n config: ImageAttributeViewConfig;\n attributeType: AttributeType;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nexport const ImageAttributeViewEditableContent = ({\n config,\n attributeType,\n paging,\n requestNextPageOfAttributeValues\n}: ImageAttributeViewEditableContentProps) => {\n const dispatch = useDispatch();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const modifiedEntityValues = pathOr([], ['attributes', attributeType.name], modifiedEntity);\n const viewId = config.id;\n\n const onChangeAttribute = (params: AttributeItem) =>\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n\n const onDeleteAttribute = (params: AttributeItem) =>\n pipe(profile.actions.removeAttribute, dispatch)({...params, viewId});\n\n return (\n <>\n <EditableImageAttributesLine\n attributeValues={modifiedEntityValues}\n attributeType={attributeType}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={modifiedEntity.uri}\n onChangeAttribute={onChangeAttribute}\n imageSize={IMAGE_SIZE}\n paging={paging}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n />\n <ImageLineCaption totalImages={modifiedEntityValues.length} />\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: '8px 16px'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pathOr, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {BasicView, FacetViewHeader, ImageAttributesLine} from '@reltio/components';\nimport {findAttributeTypeByUri, isEditableMode, ImageAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {ImageAttributeViewEditableContent} from './ImageAttributeViewEditableContent/ImageAttributeViewEditableContent';\nimport {ImageLineCaption} from './ImageLineCaption/ImageLineCaption';\nimport useStyles from './styles';\n\ntype ImageAttributeViewProps = {\n config: ImageAttributeViewConfig;\n className?: string;\n};\n\nexport const IMAGE_SIZE = {\n imageMargin: 4,\n imageWidth: 162,\n imageHeight: 162\n};\n\nexport const ImageAttributeView = ({config, className}: ImageAttributeViewProps) => {\n const {attributeUri} = config;\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const entity = useSelector(mdmModule.selectors.getEntityWithDiff);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const attributeType = findAttributeTypeByUri(metadata, attributeUri);\n const entityValues = pathOr([], ['attributes', attributeType?.name], entity);\n const paging = path(['attributes', 'paging', attributeUri], entity);\n const totalValues = entityValues.length;\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const requestNextPageOfAttributeValues = useCallback(\n (payload: RequestNextPageOfAttributeValuesPayload) =>\n dispatch(profile.actions.requestNextPageOfAttributeValues(payload)),\n [dispatch]\n );\n\n const renderContent = () => {\n if (attributeType) {\n if (isEditableMode(mode)) {\n const props = {\n attributeType,\n config,\n paging,\n requestNextPageOfAttributeValues\n };\n return <ImageAttributeViewEditableContent {...props} />;\n }\n if (totalValues > 0) {\n const props = {\n attributeValues: entityValues,\n attributeType,\n imageSize: IMAGE_SIZE,\n paging,\n parentUri: entity.uri,\n requestNextPageOfAttributeValues\n };\n return (\n <>\n <ImageAttributesLine {...props} />\n <ImageLineCaption totalImages={totalValues} />\n </>\n );\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n return (\n <BasicView className={className}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.container}>{renderContent()}</div>\n </BasicView>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n matchesContainer: {\n position: 'relative'\n },\n footer: {\n display: 'flex',\n alignItems: 'end',\n flexGrow: 1,\n justifyContent: 'flex-start',\n borderTop: '1px solid rgba(0,0,0, 0.12)',\n padding: '8px 16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n noData: {\n paddingLeft: '16px',\n paddingBottom: '16px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n }\n}));\n","import {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {getActionPermissionForMatch, Match, ProfilePotentialMatchesViewConfig} from '@reltio/mdm-sdk';\nimport React, {useCallback, useContext, useMemo} from 'react';\nimport {ActionButtonMode, MergeButton, NotMatchButton, ViewIdContext} from '@reltio/components';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onStartRequest: () => void;\n onFinishRequest: () => void;\n};\nexport const ActionButtons = ({config, match, onStartRequest, onFinishRequest}: Props) => {\n const dispatch = useDispatch();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const {canMerge, canMark} = getActionPermissionForMatch(metadata, config, match.object, entity, match.matchRules);\n const entities = useMemo(() => {\n return [match.object];\n }, [match.object]);\n\n const actionButtonProps = {\n entity,\n entities,\n mode: ActionButtonMode.iconButton,\n onStartRequest\n };\n const viewId = useContext(ViewIdContext);\n const onMergeFinish = useCallback(() => {\n onFinishRequest();\n dispatch(profile.entity.actions.loadEntity({viewId, uri: entity.uri}));\n }, [dispatch, entity.uri, onFinishRequest, viewId]);\n return (\n <>\n {canMerge && <MergeButton {...actionButtonProps} onFinishRequest={onMergeFinish} />}\n {canMark && <NotMatchButton {...actionButtonProps} onFinishRequest={onFinishRequest} />}\n </>\n );\n};\n","import {\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n CommentsContainer,\n ProfileMatchCard,\n useMatchesLoader\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Match,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {ActionButtons} from './ActionButtons';\nimport React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = Pick<ReturnType<typeof useMatchesLoader>, 'entitiesMap'> & {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onFinishRequest: () => void;\n onStartRequest: () => void;\n};\n\nexport const MatchCard = ({config, entitiesMap, match, onFinishRequest, onStartRequest}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n return (\n <ProfileMatchCard\n match={match}\n entity={entity}\n entitiesMap={entitiesMap}\n metadata={metadata}\n className={COMMENTS_CONTAINER_VISIBILITY_AREA}\n >\n <CommentsContainer\n uri={createObjectIdForPM(entity.uri, match.object.uri)}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: match.object.uri\n })}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n />\n <ActionButtons\n match={match}\n config={config}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n />\n </ProfileMatchCard>\n );\n};\n","import React, {useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {isEmpty, map} from 'ramda';\nimport {Link as Link} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n BasicView,\n CollaborationContext,\n EntitiesMapContext,\n FacetViewHeader,\n LinearLoadIndicator,\n useMatchesLoader,\n ViewIdContext\n} from '@reltio/components';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n getEntityUriForLink,\n getEntityUriFromMatchObject,\n getPotentialMatchesObjectIdsForCollaboration,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\nimport {MatchCard} from './MatchCard';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n className?: string;\n};\n\nexport const DEFAULT_MATCHES_LIMIT = 3;\nexport const DEFAULT_OPTIONS = {\n showTransitiveMatches: true,\n showInactiveEntities: false\n};\nexport const DEFAULT_SORTING = {order: 'asc', field: 'score'};\nenum ComponentStates {\n Loading,\n NoData,\n Loaded\n}\nexport const ProfilePotentialMatchesView = ({config, className}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = getEntityUriForLink(entity);\n\n const [isLoading, setIsLoading] = useState(false);\n const turnOnDisableSpinner = useCallback(() => {\n setIsLoading(true);\n }, []);\n const turnOffDisableSpinner = useCallback(() => {\n setIsLoading(false);\n }, []);\n\n const {matches, entitiesMap, loadMatches, total} = useMatchesLoader({\n enabled: !!entityUri,\n entity,\n options: DEFAULT_OPTIONS,\n filter: '',\n page: 0,\n sorting: DEFAULT_SORTING,\n rowsPerPage: DEFAULT_MATCHES_LIMIT,\n onStartLoading: turnOnDisableSpinner,\n onFinishLoading: turnOffDisableSpinner\n });\n const onFinishMatchAction = useCallback(() => {\n loadMatches();\n }, [loadMatches]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const openPotentialMatchPerspective = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'potentialMatches', viewId}));\n }, [dispatch, viewId]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, map(getEntityUriFromMatchObject, matches)),\n [entityUri, matches]\n );\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const showSeeAll = total > DEFAULT_MATCHES_LIMIT && !isEmpty(matches);\n const getComponentState = () => {\n if (isLoading) {\n return ComponentStates.Loading;\n }\n if (isEmpty(matches)) {\n return ComponentStates.NoData;\n }\n return ComponentStates.Loaded;\n };\n const state = getComponentState();\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={classnames(styles.root, className)}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.matchesContainer}>\n {state === ComponentStates.Loading && <LinearLoadIndicator />}\n {state === ComponentStates.NoData && (\n <Typography className={styles.noData}>{i18n.text('No matches found')}</Typography>\n )}\n {state === ComponentStates.Loaded &&\n matches.map((match) => (\n <MatchCard\n config={config}\n entitiesMap={entitiesMap}\n match={match}\n onFinishRequest={onFinishMatchAction}\n onStartRequest={turnOnDisableSpinner}\n key={match.object.uri}\n />\n ))}\n </div>\n {showSeeAll && (\n <>\n <div className={styles.footer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n onClick={openPotentialMatchPerspective}\n underline=\"none\"\n >\n {i18n.text('See all')}\n </Link>\n </div>\n </>\n )}\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n","import React, {lazy} from 'react';\nimport {Store} from 'redux';\nimport {\n CustomViewConfig,\n ProfileViewConfig,\n ProfileViewTypes,\n AttributeViewConfig,\n EntityMapViewConfig,\n ProfilePotentialMatchesViewConfig,\n RelationsViewConfig,\n ImageAttributeViewConfig,\n SingleAttributeViewConfig,\n HierarchyPathsViewConfig\n} from '@reltio/mdm-sdk';\nimport {ProfileAttributesView} from '../ProfileAttributesView/ProfileAttributesView';\nimport {ProfileSingleAttributeView} from '../ProfileSingleAttributeView/ProfileSingleAttributeView';\nimport {ProfileRelationsView} from '../ProfileRelationsView/ProfileRelationsView';\nimport {ProfileTableAttributeView} from '../ProfileTableAttributeView/ProfileTableAttributeView';\nimport {HierarchyPathsView} from '../HierarchyPathsView';\nimport {CustomView} from '../Sandbox/CustomView';\nimport withResizableHandle from './HOCs/withResizableHandle';\nimport {StubView} from './StubView';\nimport EntityMapView from '../EntityMapView/EntityMapView';\nimport {ImageAttributeView} from '../ImageAttributeView/ImageAttributeView';\nimport {ProfilePotentialMatchesView} from '../ProfilePotentialMatchesView/ProfilePotentialMatchesView';\n\nconst ResizableStubView = withResizableHandle(StubView);\nexport const ResizableProfileAttributesView = withResizableHandle(ProfileAttributesView);\nexport const ResizableProfileSingleAttributeView = withResizableHandle(ProfileSingleAttributeView);\nexport const ResizableProfileTableAttributeView = withResizableHandle(ProfileTableAttributeView);\nexport const ResizableProfileRelationsView = withResizableHandle(ProfileRelationsView);\nexport const ResizableCustomView = withResizableHandle(CustomView);\nexport const ResizableHierarchyPathView = withResizableHandle(HierarchyPathsView);\nexport const ResizableProfilePotentialMatchesView = withResizableHandle(ProfilePotentialMatchesView);\n\nexport const ResizableHierarchyTreeView = lazy(() =>\n import('@reltio/hierarchy-tree').then((importedModule) => ({\n default: withResizableHandle(importedModule.HierarchyTreeView)\n }))\n);\n\nexport const ResizableRelationshipsTableView = lazy(() =>\n import('@reltio/relations-table').then((importedModule) => ({\n default: withResizableHandle(importedModule.RelationshipsTableView)\n }))\n);\nexport const ResizableEntityMapView = withResizableHandle(EntityMapView);\nexport const ResizableImageAttributeView = withResizableHandle(ImageAttributeView);\n\nexport type ViewComponentProps = {\n store: Store<unknown>;\n config:\n | ProfileViewConfig\n | AttributeViewConfig\n | SingleAttributeViewConfig\n | RelationsViewConfig\n | EntityMapViewConfig\n | ImageAttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n isAutosize?: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nclass ViewsFactory {\n static ViewTypes = ProfileViewTypes;\n static getComponentBy = (\n propName: string,\n {store, config, className, isFullscreen, onToggleFullscreen}: ViewComponentProps\n ) => {\n switch (config[propName]) {\n case ViewsFactory.ViewTypes.HierarchyTree:\n return <ResizableHierarchyTreeView config={config} store={store} className={className} />;\n case ViewsFactory.ViewTypes.HierarchyPaths:\n return <ResizableHierarchyPathView config={config as HierarchyPathsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.RelationsTable:\n return <ResizableRelationshipsTableView config={config} store={store} className={className} />;\n case ViewsFactory.ViewTypes.Relations:\n return <ResizableProfileRelationsView config={config as RelationsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.Attributes:\n return <ResizableProfileAttributesView className={className} config={config as AttributeViewConfig} />;\n case ViewsFactory.ViewTypes.SingleAttributeView:\n return (\n <ResizableProfileSingleAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.TableAttributeView:\n return (\n <ResizableProfileTableAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.MapView:\n return (\n <ResizableEntityMapView\n config={config as EntityMapViewConfig}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.CustomView:\n return <ResizableCustomView config={config as CustomViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.ImageAttributeView:\n return (\n <ResizableImageAttributeView config={config as ImageAttributeViewConfig} className={className} />\n );\n case ViewsFactory.ViewTypes.PotentialMatchesView:\n return (\n <ResizableProfilePotentialMatchesView\n config={config as ProfilePotentialMatchesViewConfig}\n className={className}\n />\n );\n }\n };\n static getComponent = (props: ViewComponentProps) => {\n return (\n ViewsFactory.getComponentBy('class', props) ||\n ViewsFactory.getComponentBy('react-class', props) || <ResizableStubView className={props.className} />\n );\n };\n}\n\nexport default ViewsFactory;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {BasicView} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst StubView = ({className}: Props) => {\n const styles = useStyles();\n return (\n <BasicView className={classnames(styles.stubView, 'viewDraggableHandle', className)}>NOT IMPLEMENTED</BasicView>\n );\n};\n\nexport {StubView};\n","import React from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {SingleAttributeContext} from './contexts/SingleAttributeContext';\nimport {SingleAttributeView} from './components/SingleAttributeView/SingleAttributeView';\nimport {useSingleAttribute} from './hooks/useSingleAttribute';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileSingleAttributeView = ({className, config}: Props) => {\n const singleAttribute = useSingleAttribute(config);\n\n return (\n <SingleAttributeContext.Provider value={singleAttribute}>\n <SingleAttributeView config={config} className={className} />\n </SingleAttributeContext.Provider>\n );\n};\n","import {useState, useMemo, useCallback} from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\n\nexport const useSingleAttribute = (config: SingleAttributeViewConfig) => {\n const [searchQuery, setSearchQuery] = useState('');\n const [page, setPage] = useState(0);\n const [showInactive, setShowInactive] = useState(false);\n const params = useMemo(() => ({page, searchQuery, showInactive}), [page, searchQuery, showInactive]);\n const attribute = useSingleAttributeLoader(config, params, true);\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n return {\n setSearchQuery,\n searchQuery,\n setPage,\n page,\n toggleShowInactive,\n showInactive,\n ...attribute\n };\n};\n","import React from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {TableAttributeContext} from './contexts/TableAttributeContext';\nimport {useTableAttribute} from './hooks/useTableAttribute';\nimport {TableAttributeView} from './components/TableAttributeView/TableAttributeView';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileTableAttributeView = ({config, className}: Props) => {\n const tableAttribute = useTableAttribute(config);\n\n return (\n <TableAttributeContext.Provider value={tableAttribute}>\n {config && <TableAttributeView config={config} className={className} />}\n </TableAttributeContext.Provider>\n );\n};\n","import {useMemo, useReducer} from 'react';\nimport {reject, isNil, pipe, not, prop} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {findAttributeTypeByUri, isComplexAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useActions} from '@reltio/components';\nimport reducer, {actions} from './reducer';\nimport {getColumnsData} from '../helpers/tableAttributeHelpers';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\nimport {buildMDMFilters} from './helpers';\n\nconst DEFAULT_COUNT_COLUMN = 5;\n\nexport const useTableAttribute = (config: SingleAttributeViewConfig) => {\n const {attributeUri} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const allColumnsData = useMemo(() => getColumnsData(attributeType), [attributeType]);\n const initialState = useMemo(\n () => ({\n searchQuery: '',\n filters: null,\n sorting: undefined,\n visibleColumns: allColumnsData\n .filter(pipe(prop('dataTypeDefinition'), isComplexAttribute, not))\n .map(({id}) => id)\n .slice(0, DEFAULT_COUNT_COLUMN),\n page: 0\n }),\n [allColumnsData]\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const {searchQuery, filters, sorting, page} = state;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n const requestFilters = useMemo(() => {\n const mdmFilters = buildMDMFilters(allColumnsData, filters);\n return mdmFilters.length ? mdmFilters : null;\n }, [filters, allColumnsData]);\n\n const params = useMemo(() => reject(isNil, {filters: requestFilters, page, sorting, searchQuery}), [\n requestFilters,\n page,\n sorting,\n searchQuery\n ]);\n const {changeSearchQuery, changePage, toggleSort, changeFilter, toggleFilters, changeColumns} = useActions({\n actions,\n dispatch\n });\n const attribute = useSingleAttributeLoader(config, params, false);\n const showTable = Boolean(\n (attribute?.values?.length || requestFilters || searchQuery || isEditableMode) &&\n attributeType &&\n !attributeType.hidden\n );\n return {\n ...state,\n setSearchQuery: changeSearchQuery,\n setPage: changePage,\n onSort: toggleSort,\n onFilter: changeFilter,\n onToggleFilters: toggleFilters,\n onChangeColumns: changeColumns,\n showTable,\n ...attribute\n };\n};\n","import {propEq} from 'ramda';\nimport {Maybe} from '@reltio/mdm-sdk';\nimport {ColumnData, ColumnFilter, columnFilterToMdmFilter} from '@reltio/components';\n\nexport const buildMDMFilters = (columnsData: ColumnData[], filters: {[key: string]: ColumnFilter}) =>\n Maybe.fromNull(filters)\n .map((filters) =>\n Object.entries(filters).map(([columnId, columnFilter]) => {\n const columnData = columnsData.find(propEq('id', columnId));\n return columnFilterToMdmFilter(columnData, columnFilter);\n })\n )\n .orSome([]);\n","import React from 'react';\nimport RelationsView from './components/RelationsView';\nimport {RelationsViewStateContext} from './contexts/RelationsViewStateContext';\nimport useRelationsState from './hooks/useRelationsState';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\ntype Props = {\n config: RelationsViewConfig;\n onResize?: (width: number, height: number) => void;\n className?: string;\n};\n\nexport const ProfileRelationsView = ({config, className}: Props) => {\n const relationsState = useRelationsState(config);\n return (\n <RelationsViewStateContext.Provider value={relationsState}>\n <RelationsView config={config} className={className} />\n </RelationsViewStateContext.Provider>\n );\n};\n","import React, {useRef, useEffect} from 'react';\nimport {useAPI} from '@reltio/components';\nimport {CustomViewConfig} from '@reltio/mdm-sdk';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {isNil, reject} from 'ramda';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: CustomViewConfig;\n className?: string;\n};\n\nexport const CustomView = ({config, className}: Props) => {\n const basicViewRef = useRef<HTMLDivElement>();\n const {height, width, tooltip: defaultTooltip} = config;\n const {html, visible, tooltip: updatedTooltip, customStyles} = useAPI(config);\n const styles = useStyles();\n const tooltip = updatedTooltip || defaultTooltip;\n useEffect(() => {\n if (basicViewRef.current && html) {\n basicViewRef.current.innerHTML = '';\n html.childNodes.forEach((child) => {\n basicViewRef.current.appendChild(child);\n });\n }\n }, [html]);\n if (!visible) return null;\n const style: {width?: number; height?: number} = reject(isNil, {width, height});\n const component = (\n <div ref={basicViewRef} style={{...style, ...customStyles}} className={classnames(styles.root, className)} />\n );\n return (\n <div className={styles.bodyWrapper}>{tooltip ? <Tooltip title={tooltip}>{component}</Tooltip> : component}</div>\n );\n};\n","import React, {useCallback} from 'react';\nimport {BasicView, ReactSortableTree} from '@reltio/components';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {useLoadPaths} from './hooks/useLoadPaths';\nimport {Node} from './Node';\nimport {useStyles} from './styles';\nimport {ConfigContext} from './ConfigContext';\nimport {HierarchyPathsViewConfig} from '@reltio/mdm-sdk';\nimport {getNodeKey} from './helpers';\nimport {theme} from './theme';\nimport HierarchyPathsHeader from './HierarchyPathsHeader';\n\ntype Props = {\n className?: string;\n config: HierarchyPathsViewConfig;\n};\n\nexport const HierarchyPathsView = ({config, className}: Props) => {\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {treeData, setTreeData} = useLoadPaths(entityUri, config.graph.type);\n const styles = useStyles();\n const dispatch = useDispatch();\n const {id, graph} = config;\n const openGraph = useCallback(() => {\n dispatch(ui.actions.openGraph({viewId: id, graphType: graph.type}));\n }, [dispatch, id, graph]);\n const generateNodeProps = useCallback(\n (rowInfo) => ({\n title: <Node node={rowInfo.node} />\n }),\n []\n );\n return (\n <BasicView className={className}>\n <HierarchyPathsHeader onGraphOpen={openGraph} title={config.caption} />\n <ConfigContext.Provider value={config}>\n <div className={styles.treeContainer}>\n <div className={styles.tree}>\n <ReactSortableTree\n isVirtualized={false}\n treeData={treeData}\n canDrag={false}\n theme={theme}\n generateNodeProps={generateNodeProps}\n onChange={setTreeData}\n getNodeKey={getNodeKey}\n />\n </div>\n </div>\n </ConfigContext.Provider>\n </BasicView>\n );\n};\n","import React, {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdm from '@reltio/mdm-module';\nimport FullscreenIcon from '@material-ui/icons/Fullscreen';\nimport FullscreenExitIcon from '@material-ui/icons/FullscreenExit';\nimport {BasicView, LinearLoadIndicator, ReltioMap} from '@reltio/components';\nimport {SmallIconButton} from '@reltio/components';\n\nimport {AttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useMarkers} from './useMarkers';\nimport useStyles from './styles';\n\ntype EntityMapViewProps = {\n config: AttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nexport const EntityMapView = ({config, isFullscreen, onToggleFullscreen, className}: EntityMapViewProps) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const entity = useSelector(mdm.selectors.getEntity);\n const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\n const {markers, loading} = useMarkers(entity, metadata, mapKey);\n const loadingElement = useMemo(\n () => (\n <div className={styles.fullHeight}>\n <LinearLoadIndicator />\n </div>\n ),\n [styles]\n );\n\n const defaultCenter = useMemo(() => ({lat: 0, lng: 0}), []);\n const mapOptions = useMemo(() => ({mapTypeControl: true}), []);\n\n return (\n mapKey && (\n <BasicView className={classnames(styles.root, className)}>\n {loading && <LinearLoadIndicator />}\n <SmallIconButton\n size=\"S\"\n icon={isFullscreen ? FullscreenExitIcon : FullscreenIcon}\n onClick={() => onToggleFullscreen(config.id)}\n className={styles.fullscreenBtn}\n />\n\n <ReltioMap\n loadingElement={loadingElement}\n defaultZoom={1}\n defaultCenter={defaultCenter}\n markers={markers}\n mapContainerClassName={styles.fullHeight}\n mapKey={mapKey}\n mapOptions={mapOptions}\n />\n </BasicView>\n )\n );\n};\n\nexport default EntityMapView;\n","import React, {memo, Suspense} from 'react';\nimport classnames from 'classnames';\nimport ViewsFactory, {ViewComponentProps} from './ViewsFactory';\nimport {useStyles} from './styles';\n\nconst Fallback = () => null;\n\nconst ViewComponent = memo(({config, store, isFullscreen, isAutosize, onToggleFullscreen}: ViewComponentProps) => {\n const styles = useStyles();\n return (\n <Suspense fallback={<Fallback />}>\n {ViewsFactory.getComponent({\n config,\n store,\n className: classnames(styles.component, {[styles.fullHeight]: !isAutosize}),\n isFullscreen,\n onToggleFullscreen\n })}\n </Suspense>\n );\n});\n\nViewComponent.displayName = 'ViewComponent';\n\nexport {ViewComponent};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {basicView: Record<string, string | number>}) => ({\n item: theme.basicView,\n fixedSizeContainer: {\n height: '100%'\n }\n}));\n","import React, {ReactChildren, ReactNode, useContext} from 'react';\nimport {omit} from 'ramda';\nimport {ReactReduxContext} from 'react-redux';\nimport {ReactGridLayoutItem} from '@reltio/components';\nimport {CustomScript, CustomScriptPlatform, ProfileViewConfig} from '@reltio/mdm-sdk';\nimport {ViewComponent} from '../views/ViewComponent';\nimport ViewsFactory from '../views/ViewsFactory';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n layoutItemConfig: ReactGridLayoutItem;\n views: ProfileViewConfig[];\n className?: string;\n children?: ReactChildren;\n style?: Record<string, unknown>;\n isFullscreen: boolean;\n onToggleFullscreen: (id: string) => void;\n AutosizeComponent?: ReactNode;\n};\n\nconst omittingProps = ['onConfigChanged', 'onRemove'];\n\nconst ProfileLayoutItem = ({\n layoutItemConfig,\n views,\n className,\n children: ResizeComponent,\n style,\n isFullscreen,\n onToggleFullscreen,\n AutosizeComponent,\n ...props\n}: Props) => {\n const config = views.find(({id}) => layoutItemConfig.i === id);\n const styles = useStyles();\n\n const {store} = useContext(ReactReduxContext);\n if (!config) {\n return null;\n }\n const isCustomView = config.class === ViewsFactory.ViewTypes.CustomView;\n if (isCustomView && (config?.action as CustomScript)?.platform === CustomScriptPlatform.CLASSIC) {\n return null;\n }\n\n return (\n <div\n {...omit(omittingProps, props)}\n style={style}\n className={classnames(className, {[styles.item]: !isCustomView})}\n >\n <div className={classnames({[styles.fixedSizeContainer]: !AutosizeComponent})}>\n {AutosizeComponent}\n <ViewComponent\n store={store}\n config={config}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n isAutosize={Boolean(AutosizeComponent)}\n />\n </div>\n {ResizeComponent}\n </div>\n );\n};\n\nexport {ProfileLayoutItem};\n","import React from 'react';\nimport {ReltioGridLayout} from '@reltio/components';\nimport {ProfileViewConfig} from '@reltio/mdm-sdk';\n\nimport {Layout} from '../../types';\nimport {ProfileLayoutItem} from '../ProfileLayoutItem';\n\ntype Props = {\n views: ProfileViewConfig[];\n layout?: Layout;\n layoutOptions?: Record<string, unknown>;\n onLayoutChanged: (layout: Layout) => void;\n};\n\nconst ProfileLayout = ({views, layout, layoutOptions, onLayoutChanged}: Props) => {\n return (\n <ReltioGridLayout\n LayoutItem={ProfileLayoutItem}\n views={views}\n layout={layout}\n layoutOptions={layoutOptions}\n onLayoutChanged={onLayoutChanged}\n draggableHandle=\".viewDraggableHandle\"\n />\n );\n};\n\nexport {ProfileLayout};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"19\",\n height: \"17\",\n viewBox: \"0 0 19 17\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M14 17v2H4v-2h10zm6-4v2H4v-2l12.884.001H17l.116-.002L20 13zm-8.457-2H4V9h5.82a8.465 8.465 0 001.723 2zM9.139 6.178l-.289.733.035.088L4 7V5l5.713-.002c-.22.375-.412.768-.574 1.18zM17 2.82a6.451 6.451 0 00-6 4.09 6.451 6.451 0 006 4.092 6.451 6.451 0 006-4.091 6.451 6.451 0 00-6-4.091zm0 6.815a2.728 2.728 0 010-5.455 2.728 2.728 0 010 5.455zm0-4.365c-.905 0-1.636.73-1.636 1.636 0 .906.73 1.637 1.636 1.637.905 0 1.636-.731 1.636-1.637 0-.905-.73-1.636-1.636-1.636z\",\n id: \"svg1467685497a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", {\n transform: \"translate(-4 -2.5)\"\n}, React.createElement(\"mask\", {\n id: \"svg1467685497b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1467685497a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1467685497b)\",\n d: \"M0 0h24v24H0z\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M20.222 6C21.21 6 22 6.8 22 7.778v12.444C22 21.2 21.209 22 20.222 22H7.778C6.79 22 6 21.2 6 20.222V7.778C6 6.8 6.791 6 7.778 6h12.444zM20 8H8v12h12V8zM4 18H2V4c0-1.1.9-2 2-2h14v2H4v14z\",\n id: \"svg2383396984a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2383396984b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2383396984a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2383396984b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n editingButtons: {\n display: 'flex',\n '& button + button': {\n width: '88px',\n marginLeft: '8px'\n }\n },\n searchResults: {\n width: '150px',\n height: '25px',\n backgroundColor: '#ccc'\n },\n comments: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '10px'\n }\n});\n","import {useCallback, useMemo} from 'react';\nimport {\n includes,\n pipe,\n isNil,\n propOr,\n filter,\n map,\n prop,\n cond,\n identity,\n omit,\n find,\n complement,\n when,\n either,\n pick,\n always,\n T\n} from 'ramda';\nimport {\n BaseCloneAction,\n CloneAction,\n Entity,\n getEntityType,\n isReference,\n isRelationWithEntityType,\n getRelationTypeUriFromAttrType\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\n\ntype Props = {\n cloneAction?: CloneAction[];\n onCloneDiscard: () => void;\n};\n\nexport const useCloneAction = ({cloneAction: cloneActionProp, onCloneDiscard}: Props) => {\n const entity: Entity = useSelector(mdm.selectors.getEntityWithoutDiff);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const dispatch = useDispatch();\n const entityTypeUri = entity?.type;\n const relationTypes = metadata.relationTypes;\n const isRelationSuitableForEntityType = useCallback(isRelationWithEntityType(metadata, entityTypeUri), [\n metadata,\n entityTypeUri\n ]);\n const entityType = getEntityType(metadata, entityTypeUri);\n const cloneAction = useMemo<BaseCloneAction>(\n () =>\n when(\n complement(isNil),\n pipe(\n find(pipe(propOr([], 'entityTypeUris'), either(includes(entityTypeUri), includes('*')))),\n when(complement(isNil), omit(['entityTypeUris']))\n )\n )(cloneActionProp),\n [cloneActionProp, entityTypeUri]\n );\n const onClone = useCallback(() => {\n if (cloneAction) {\n const modifiedRelationTypes: string[] = pipe(\n prop('relationshipTypesToCopy'),\n cond([\n [\n isNil,\n pipe(\n always(entityType),\n propOr([], 'attributes'),\n filter(isReference),\n map(getRelationTypeUriFromAttrType)\n )\n ],\n [\n includes('*'),\n pipe(always(relationTypes || []), map(prop('uri')), filter(isRelationSuitableForEntityType))\n ],\n [T, identity]\n ])\n )(cloneAction);\n dispatch(\n profile.entity.actions.entityCloneRequested({\n data: {\n ...pick(['attributeReplacementMapping'], cloneAction),\n relationshipTypesToCopy: modifiedRelationTypes\n },\n entityUri: entity.uri\n })\n );\n }\n onCloneDiscard();\n }, [cloneAction, onCloneDiscard, entityType, relationTypes, entity.uri, isRelationSuitableForEntityType]);\n return cloneAction ? onClone : undefined;\n};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {Box as Box} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {SvgIcon as SvgIcon} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport CreateIcon from '@material-ui/icons/Create';\n\nimport {\n getEntityType,\n Entity,\n checkMetadataPermission,\n isDataTenantEntity,\n isTempUri,\n MetadataPermissions,\n ModeTypes,\n Mode,\n isSuggestMode,\n isEditableMode,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Operation,\n ProfileBandConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n ProfileBand,\n ModeSwitcherSelect,\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ProfileBandNavigation,\n ProfileBandHistory,\n ConfirmationDialog\n} from '@reltio/components';\n\nimport SuggestSvg from './suggest.svg';\nimport CopySvg from './copy.svg';\n\nimport {useStyles} from './styles';\nimport {useCloneAction} from './hooks/useCloneAction';\n\ntype Props = {\n className?: string;\n profileBandConfig?: ProfileBandConfig;\n};\n\nconst SuggestIcon = (props) => (\n <SvgIcon {...props}>\n <SuggestSvg />\n </SvgIcon>\n);\n\nconst CopyIcon = (props) => (\n <SvgIcon {...props}>\n <CopySvg />\n </SvgIcon>\n);\n\ntype Group = {\n label: string;\n value: string;\n description: string;\n icon: React.ElementType;\n permission: string;\n onClick?: (value: string) => void;\n};\n\nconst filterGroupByPermissions = <T extends Group>(\n group: T[],\n entityType,\n isTempEntity: boolean,\n isWorkflowEnabled?: boolean,\n canStartProcessInstanceSearchQuery?: boolean\n): T[] =>\n group.filter(({value, permission}) => {\n if (isTempEntity && !isEditableMode(value)) return false;\n if ((!isWorkflowEnabled || !canStartProcessInstanceSearchQuery) && isSuggestMode(value)) return false;\n return checkMetadataPermission(permission, entityType);\n });\n\nconst hasOnlyReadPermission = (entityType) => {\n return (\n checkMetadataPermission(MetadataPermissions.READ, entityType) &&\n !checkMetadataPermission(MetadataPermissions.UPDATE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.DELETE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.INITIATE_CHANGE_REQUEST, entityType)\n );\n};\n\nexport const PerspectiveProfileBand = ({className, profileBandConfig}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const canStartProcessInstanceSearchQuery = useSelector(mdm.selectors.getCanUserStartProcessFromQuery);\n const entity = useSelector(mdm.selectors.getEntityWithoutDiff) as Entity;\n const modifiedEntity = useSelector((state) => mdm.selectors.getModifiedEntity(state, entity.uri));\n const metadata = useSelector(mdm.selectors.getMetadata);\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const mode = useSelector(mdm.selectors.getMode) as Mode;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode) as boolean;\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const profileOperation = useSelector(mdm.selectors.getProfileOperation);\n const entityTypeUri = entity?.type;\n const entityType = useMemo(() => getEntityType(metadata, entityTypeUri), [entityTypeUri, metadata]);\n const isOperationSaving = profileOperation === Operation.Saving;\n const isOperationCloning = profileOperation === Operation.Cloning;\n const isDisabledButtons = isOperationCloning || isOperationSaving;\n const [openCloneConfirmationDialog, setOpenCloneConfirmationDialog] = useState(false);\n const onCloneDiscard = useCallback(() => {\n setOpenCloneConfirmationDialog(false);\n }, []);\n const onClone = useCloneAction({cloneAction: profileBandConfig?.cloneAction, onCloneDiscard});\n const OPTIONS_GROUP = useMemo(\n () => [\n {\n label: i18n.text('Editing'),\n value: ModeTypes.EDITING,\n description: i18n.text('Edit profile directly'),\n icon: CreateIcon,\n permission: 'UPDATE'\n },\n {\n label: i18n.text('Suggesting'),\n value: ModeTypes.SUGGESTING,\n description: i18n.text('Suggest changes and initiate a workflow review'),\n icon: SuggestIcon,\n permission: 'INITIATE_CHANGE_REQUEST'\n },\n {\n label: i18n.text('Viewing'),\n value: ModeTypes.VIEWING,\n description: i18n.text('Suggest changes and initiate a workflow review'),\n icon: VisibilityIcon,\n permission: 'READ'\n }\n ],\n []\n );\n\n const BUTTONS_GROUP = useMemo(\n () => [\n ...(onClone\n ? [\n {\n label: i18n.text('Clone'),\n value: 'Clone',\n description: i18n.text('Create a copy of the profile'),\n icon: CopyIcon,\n onClick: () => setOpenCloneConfirmationDialog(true),\n permission: 'CREATE'\n }\n ]\n : []),\n {\n label: i18n.text('Delete'),\n value: 'Delete',\n description: i18n.text('Permanently delete profile'),\n icon: DeleteIcon,\n onClick: () => {\n const conf = window.confirm(i18n.text('Are you sure you want to delete this?'));\n if (conf) {\n dispatch(profile.entity.actions.entityRemoveRequested({entityUri: entity.uri}));\n }\n },\n permission: 'DELETE'\n }\n ],\n [dispatch, entity.uri, onClone]\n );\n\n const shouldShowSelect = !isHistoryModeEnabled && !isDataTenantEntity(entity) && !hasOnlyReadPermission(entityType);\n\n const isTempEntity = isTempUri(entity?.uri);\n\n const accessibleOptionsGroup = useMemo(() => {\n return filterGroupByPermissions(\n OPTIONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [OPTIONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n const accessibleButtonsGroup = useMemo(() => {\n return filterGroupByPermissions(\n BUTTONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [BUTTONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n\n const handleChange = useCallback(\n (value: Mode) => {\n dispatch(profile.mode.actions.modeUpdated(value));\n },\n [dispatch]\n );\n\n const onCancel = useCallback(() => {\n dispatch(profile.mode.actions.modeCancelEditing());\n }, [dispatch]);\n\n const handleSave = useCallback(() => {\n dispatch(profile.actions.saveProfile());\n }, [dispatch]);\n\n return (\n <>\n <ProfileBand\n className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)}\n entity={isEditableMode && modifiedEntity ? modifiedEntity : entity}\n showEntityId={profileBandConfig?.showEntityId}\n >\n <Box display=\"flex\" alignItems=\"center\">\n <Box mr={3}>\n {isEditableMode && (\n <Box className={styles.editingButtons}>\n <Button\n variant=\"outlined\"\n onClick={onCancel}\n data-reltio-id=\"reltio-profile-cancel-editing\"\n disabled={isDisabledButtons}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n data-reltio-id=\"reltio-profile-save-profile\"\n onClick={handleSave}\n disabled={isDisabledButtons}\n >\n {isSuggestMode(mode) ? i18n.text('Suggest') : i18n.text('Save')}\n </Button>\n </Box>\n )}\n {isHistoryModeEnabled && isViewMode ? (\n <ProfileBandHistory />\n ) : (\n isViewMode && <ProfileBandNavigation />\n )}\n </Box>\n {shouldShowSelect && (\n <ModeSwitcherSelect\n optionsGroup={accessibleOptionsGroup}\n buttonsGroup={accessibleButtonsGroup}\n value={mode}\n onChange={handleChange}\n disabled={isDisabledButtons}\n />\n )}\n </Box>\n <Box className={styles.comments}>\n <CommentsContainer\n uri={entity.uri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri: entity.uri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </Box>\n </ProfileBand>\n {!!onClone && (\n <ConfirmationDialog\n open={openCloneConfirmationDialog}\n title={i18n.text('Do you want to create a clone of the profile?')}\n content={i18n.text(\n 'Cloning will create a copy of the current profile. You can modify the cloned profile in the next step. Are you sure you want to proceed?'\n )}\n onSave={onClone}\n onDiscard={onCloneDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n )}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n },\n badge: {\n fontSize: '12px',\n height: '18px',\n minWidth: '18px',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px'\n }\n});\n","import React, {useContext, VFC} from 'react';\nimport {Badge as Badge} from '@material-ui/core';\nimport {WorkflowTasksContext} from '@reltio/components';\nimport InboxIcon from '@material-ui/icons/Inbox';\nimport {useStyles} from '../../styles';\n\nexport const WorkflowButton: VFC = () => {\n const {total} = useContext(WorkflowTasksContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={total}\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <InboxIcon />\n </Badge>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n paddingRight: '12px'\n },\n showMoreLink: {\n display: 'flex',\n margin: '16px'\n },\n showMoreIcon: {\n fontSize: '1rem'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CollaborationContext, CollaborationItem, EntitiesMapContext, useCommentsEntitiesMap} from '@reltio/components';\nimport {Box as Box} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport {useStyles} from './styles';\n\nexport const CollaborationList = () => {\n const styles = useStyles();\n const {getComments, comments, pageToken} = useContext(CollaborationContext);\n const entityUri = useSelector(mdm.selectors.getEntityUriWithDataTenant);\n\n useEffect(() => {\n getComments(entityUri);\n }, [getComments, entityUri]);\n\n const handleShowMoreComments = () => {\n getComments(entityUri, pageToken);\n };\n\n const entitiesMap = useCommentsEntitiesMap(comments);\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <Box className={styles.wrapper}>\n {comments.map((comment) => {\n const {objectId, relatedObjectUris, objectType, commentId} = comment;\n return (\n <CollaborationItem\n key={commentId}\n uri={objectId}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n })}\n {pageToken && (\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.showMoreLink}\n onClick={handleShowMoreComments}\n underline=\"none\"\n >\n <KeyboardArrowDownIcon className={styles.showMoreIcon} />\n {i18n.text('Show more')}\n </Link>\n )}\n </Box>\n </EntitiesMapContext.Provider>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n position: 'relative',\n height: '100%'\n }\n});\n","import React, {useContext} from 'react';\nimport {LinearLoadIndicator, WorkflowTaskCard, WorkflowTasksContext} from '@reltio/components';\nimport {useStyles} from './styles';\n\nexport const WorkflowList = () => {\n const styles = useStyles();\n const {tasks, loading} = useContext(WorkflowTasksContext);\n\n return (\n <div className={styles.wrapper}>\n {loading && <LinearLoadIndicator />}\n {tasks &&\n tasks.map((task) => {\n return <WorkflowTaskCard key={task.taskId} task={task} />;\n })}\n </div>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"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: \"svg2697213709a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", {\n transform: \"translate(-2 -2)\"\n}, React.createElement(\"mask\", {\n id: \"svg2697213709b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2697213709a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2697213709b)\",\n d: \"M0 0h24v24H0z\"\n}))))));","import React, {useContext, VFC} from 'react';\nimport {Badge as Badge} from '@material-ui/core';\nimport CollaborationIcon from '../../icons/CollaborationIcon.svg';\nimport {CollaborationContext} from '@reltio/components';\nimport {calcTotalCommentItems} from '@reltio/mdm-sdk';\nimport {useStyles} from '../../styles';\n\nexport const CollaborationButton: VFC = () => {\n const {commentsMap} = useContext(CollaborationContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={calcTotalCommentItems(commentsMap)}\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <CollaborationIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst WorkflowPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Ready to go with the flow?')}\n secondaryText={i18n.text(\n 'Suggest a change or submit a match review, and we’ll kick off a workflow task to get things going.'\n )}\n />\n);\n\nexport default WorkflowPanelEmptyState;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst CollaborationPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Care to join the conversation?')}\n secondaryText={i18n.text(\n 'Leave comments for team members anywhere in the Profile page, and we’ll record it here.'\n )}\n />\n);\n\nexport default CollaborationPanelEmptyState;\n","import React, {useCallback, useContext, useEffect, useState, VFC} from 'react';\nimport {pipe, propEq, reject, pluck} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {\n CollaborationContext,\n SideButtonsPanel,\n SidePanelContentHeader,\n SidePanel,\n WorkflowTasksContext,\n AddWorkflowButton,\n HistoryView,\n HistoryHeader,\n HistoryPanelEmptyState,\n useHistory,\n useHistoryEnabled\n} from '@reltio/components';\nimport {calcTotalCommentItems, Entity, getEntityType, isTempUri, Metadata} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent} from '@reltio/mdm-module';\nimport HistoryIcon from '@material-ui/icons/History';\nimport {WorkflowButton} from './components/WorkflowButton/WorkflowButton';\nimport {CollaborationList} from './components/CollaborationList/CollaborationList';\nimport {WorkflowList} from './components/WorkflowList/WorkflowList';\nimport {CollaborationButton} from './components/CollaborationButton/CollaborationButton';\nimport WorkflowPanelEmptyState from './components/WorkflowPanelEmptyState/WorkflowPanelEmptyState';\nimport CollaborationPanelEmptyState from './components/CollaborationPanelEmptyState/CollaborationPanelEmptyState';\n\nimport {useStyles} from './styles';\n\nconst DEFAULT_PANEL_WIDTH = 480;\nexport enum ActivePanel {\n Workflow,\n Collaboration,\n History\n}\nconst getSecondTitle = (total: number): string => {\n if (total) {\n return total === 1 ? i18n.text('${total} item', {total}) : i18n.text('${total} items', {total});\n }\n};\n\nexport const RightSidePanel: VFC = () => {\n const styles = useStyles();\n const isWorkflowSideViewEnabled = useSelector(mdm.selectors.isWorkflowSideViewEnabled) as boolean;\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const isCollaborationSideViewEnabled = useSelector(mdm.selectors.isCollaborationSideViewEnabled) as boolean;\n const isCollaborationEnabled = useSelector(mdm.selectors.isCollaborationEnabled) as boolean;\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n\n const workflowTasksContext = useContext(WorkflowTasksContext);\n const collaborationContext = useContext(CollaborationContext);\n\n const [active, setActive] = useState<ActivePanel>(null);\n const toggleActive = useCallback((newId: ActivePanel): void => {\n setActive((active) => (active === newId ? null : newId));\n }, []);\n const resetActive = useCallback((): void => {\n setActive(null);\n }, []);\n const isOpen = active !== null;\n const isHistoryTabActive = active === ActivePanel.History;\n const {isHistoryEnabled, isProfilePersisted} = useHistoryEnabled({isHistoryTabActive, entity});\n\n const {\n historyFilter,\n onApplyFilter,\n isLoading,\n historicUris,\n historyWithTotal,\n canLoadMore,\n onLoadMore\n } = useHistory({entity, enabled: isHistoryEnabled});\n\n const enabledWorkflowButton = isWorkflowSideViewEnabled && isWorkflowEnabled && !isTempUri(entity?.uri);\n const enabledCollaborationButton = isCollaborationSideViewEnabled && isCollaborationEnabled;\n const collaborationTotal = calcTotalCommentItems(collaborationContext?.commentsMap);\n\n const elements = [\n {\n buttonProps: {\n id: ActivePanel.Workflow,\n icon: WorkflowButton,\n tooltipTitle: i18n.text('Workflow')\n },\n content: workflowTasksContext?.total ? <WorkflowList /> : <WorkflowPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Workflow'),\n secondTitle: getSecondTitle(workflowTasksContext?.total),\n rightContent: <AddWorkflowButton />\n },\n hidden: !enabledWorkflowButton\n },\n {\n buttonProps: {\n id: ActivePanel.Collaboration,\n icon: CollaborationButton,\n tooltipTitle: i18n.text('Collaboration')\n },\n content: collaborationTotal ? <CollaborationList /> : <CollaborationPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Collaboration'),\n secondTitle: getSecondTitle(collaborationTotal)\n },\n hidden: !enabledCollaborationButton\n },\n {\n buttonProps: {\n id: ActivePanel.History,\n icon: HistoryIcon,\n tooltipTitle: i18n.text('History')\n },\n content: isProfilePersisted ? (\n <HistoryView\n isLoading={isLoading}\n historyWithTotal={historyWithTotal}\n contributorsUris={historicUris}\n entityUri={entity?.uri}\n historyEvent={historyEvent}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n />\n ) : (\n <HistoryPanelEmptyState />\n ),\n headerProps: {\n content: (\n <HistoryHeader\n total={isProfilePersisted ? (historicUris?.length || 0) + 1 : undefined}\n entityType={getEntityType(metadata, entity?.type)}\n filter={historyFilter}\n onApplyFilter={onApplyFilter}\n />\n )\n }\n }\n ];\n\n const visibleElements = reject(propEq('hidden', true))(elements);\n\n useEffect(() => {\n if (elements[active]?.hidden) {\n resetActive();\n }\n }, [active, elements, resetActive, visibleElements]);\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen} width={DEFAULT_PANEL_WIDTH}>\n {!elements[active]?.hidden && (\n <>\n <SidePanelContentHeader {...elements[active]?.headerProps} onClose={resetActive} />\n {elements[active]?.content}\n </>\n )}\n </SidePanel>\n <SideButtonsPanel\n buttonsProps={pipe(reject(propEq('hidden', true)), pluck('buttonProps'))(elements)}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst accordionSummaryHeight = '48px';\nconst defaultBorderStyle = '1px solid rgba(0, 0, 0, .125)';\n\nconst useStyles = makeStyles((theme) => ({\n accordion: {\n borderTop: defaultBorderStyle,\n borderBottom: defaultBorderStyle,\n fontSize: '13px',\n boxShadow: 'none',\n '&:not(:first-child)': {\n borderTop: 0\n },\n '&:before': {\n display: 'none'\n },\n '&$accordionExpanded': {\n margin: 'auto'\n }\n },\n accordionExpanded: {},\n accordionSummary: {\n display: 'flex',\n alignItems: 'center',\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight,\n '&$accordionSummaryExpanded': {\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight\n }\n },\n accordionSummaryHeading: {\n flex: 1,\n fontSize: theme.typography.pxToRem(13),\n fontWeight: theme.typography.fontWeightRegular\n },\n accordionSummaryExpanded: {},\n accordionSummaryContent: {\n display: 'flex',\n alignItems: 'center'\n },\n accordionDetails: {\n maxHeight: '21vh',\n overflow: 'auto',\n paddingTop: 0,\n paddingBottom: 0,\n '& ul': {\n paddingLeft: '23px',\n marginTop: '3px'\n },\n '& li': {\n paddingLeft: '9px',\n paddingBottom: '8px'\n }\n },\n parents: {\n color: theme.palette.text.primary\n },\n errorsAccordion: {\n backgroundColor: '#FFF4F6',\n borderColor: '#FFB8B3'\n },\n errorsAccordionDetails: {\n color: '#DD2C00'\n },\n warningsAccordion: {\n backgroundColor: '#FFF9ED',\n borderColor: '#FFDD91'\n },\n warningsAccordionDetails: {\n color: '#CC7500'\n },\n icon: {\n marginRight: '8px'\n },\n errorIcon: {\n fill: '#FF1744'\n },\n warningIcon: {\n fill: '#F9A825'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, ReactNode, ElementType} from 'react';\nimport classnames from 'classnames';\nimport {Accordion as Accordion} from '@material-ui/core';\nimport {AccordionSummary as AccordionSummary} from '@material-ui/core';\nimport {AccordionDetails as AccordionDetails} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport useStyles from '../styles';\n\nimport {AttributeError} from '@reltio/mdm-sdk';\n\ntype Props = {\n panels: {\n id: string;\n title: string;\n icon: ReactNode;\n items: AttributeError[];\n accordionClassName: string;\n accordionDetailsClassName: string;\n }[];\n expandedPanelId: string;\n onToggle: (id: string) => (e, isExpanded: boolean) => void;\n ErrorComponent: ElementType;\n};\n\nexport const ErrorsPanel = memo(({panels, expandedPanelId, onToggle, ErrorComponent}: Props) => {\n const styles = useStyles();\n\n return panels.length > 0 ? (\n <div>\n {panels.map(({id, icon, title, items, accordionClassName, accordionDetailsClassName}) => (\n <Accordion\n key={id}\n square\n expanded={expandedPanelId === id}\n onChange={onToggle(id)}\n className={accordionClassName}\n classes={{root: styles.accordion, expanded: styles.accordionExpanded}}\n >\n <AccordionSummary\n classes={{\n root: styles.accordionSummary,\n expanded: styles.accordionSummaryExpanded,\n content: styles.accordionSummaryContent\n }}\n expandIcon={<ExpandMoreIcon />}\n >\n {icon}\n <Typography className={styles.accordionSummaryHeading}>{title}</Typography>\n </AccordionSummary>\n <AccordionDetails className={classnames(styles.accordionDetails, accordionDetailsClassName)}>\n <ul>\n {items.map((error, i) => (\n <ErrorComponent key={i} error={error} />\n ))}\n </ul>\n </AccordionDetails>\n </Accordion>\n ))}\n </div>\n ) : null;\n});\n\nErrorsPanel.displayName = 'ErrorsPanel';\n","import {equals, identity, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n AttributeError,\n AttributeType,\n AttributeValuePathItemType,\n ErrorSource,\n ErrorType,\n findAttributeTypeByUri,\n Metadata\n} from '@reltio/mdm-sdk';\n\nconst clearError = omit(['deactivated', 'path']);\nexport const areErrorsEqual = (errors1: AttributeError[] = [], errors2: AttributeError[] = []) =>\n errors1.length === errors2.length && equals(errors1.map(clearError), errors2.map(clearError));\n\nexport const getDisplayedErrorMessage = (\n metadata: Metadata,\n {type, source, message, attributeTypeUri = '', attributeType}: AttributeError\n) => {\n if (type === ErrorType.missed && source === ErrorSource.local) {\n const attrType: AttributeType = attributeType || findAttributeTypeByUri(metadata, attributeTypeUri);\n return attrType ? i18n.text('${attribute} is required', {attribute: attrType.label}) : message;\n }\n return message;\n};\n\nexport const getDisplayedErrorPath = ({path: errorPath, uri}: AttributeError) => {\n return errorPath\n ?.slice(0, uri ? errorPath.length - 1 : errorPath.length)\n .filter(({type}) =>\n [AttributeValuePathItemType.attributeValue, AttributeValuePathItemType.relationConnection].includes(type)\n )\n .map(({label}) => label)\n .filter(identity)\n .join(' / ');\n};\n","import React, {memo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, Metadata} from '@reltio/mdm-sdk';\n\nimport useStyles from '../styles';\n\nimport {getDisplayedErrorMessage, getDisplayedErrorPath} from '../helpers';\n\ntype Props = {\n error: AttributeError;\n};\n\nexport const Error = memo(({error}: Props) => {\n const styles = useStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const displayedMessage = getDisplayedErrorMessage(metadata, error);\n const displayedErrorPath = getDisplayedErrorPath(error);\n return (\n <li>\n <span>{displayedMessage}</span>\n {displayedErrorPath && (\n <>\n <br />\n <span className={styles.parents}>{displayedErrorPath}</span>\n </>\n )}\n </li>\n );\n});\n\nError.displayName = 'Error';\n","import {useRef} from 'react';\nimport {areErrorsEqual} from './helpers';\n\nexport const useCachedErrors = (allErrors) => {\n const cacheForAllErrors = useRef(allErrors);\n const areEqualErrors = areErrorsEqual(allErrors, cacheForAllErrors.current);\n if (!areEqualErrors) {\n cacheForAllErrors.current = allErrors;\n }\n return cacheForAllErrors.current;\n};\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {partition} from 'ramda';\nimport ErrorIcon from '@material-ui/icons/Warning';\nimport WarningIcon from '@material-ui/icons/Error';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, isCriticalError} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\n\nimport {ErrorsPanel} from './components/ErrorsPanel';\nimport {Error} from './components/Error';\nimport {useCachedErrors} from './useCachedErrors';\n\nexport const ProfileErrorsPanel = () => {\n const styles = useStyles();\n const allErrors = useSelector(mdmModule.selectors.getProfileErrors);\n const cachedAllErrors = useCachedErrors(allErrors);\n\n const [errors, warnings]: [AttributeError[], AttributeError[]] = useMemo(\n () => partition(isCriticalError, cachedAllErrors),\n [cachedAllErrors]\n );\n const [expandedPanelId, setExpandedPanelId] = useState(null);\n const panels = useMemo(\n () =>\n [\n {\n id: 'errors',\n title: i18n.text('${number} ${errors}', {\n number: errors.length,\n errors: errors.length === 1 ? i18n.text('error') : i18n.text('errors')\n }),\n icon: <ErrorIcon className={classnames(styles.icon, styles.errorIcon)} />,\n items: errors,\n accordionClassName: styles.errorsAccordion,\n accordionDetailsClassName: styles.errorsAccordionDetails\n },\n {\n id: 'warnings',\n title: i18n.text('${number} ${warnings}', {\n number: warnings.length,\n warnings: warnings.length === 1 ? i18n.text('warning') : i18n.text('warnings')\n }),\n icon: <WarningIcon className={classnames(styles.icon, styles.warningIcon)} />,\n items: warnings,\n accordionClassName: styles.warningsAccordion,\n accordionDetailsClassName: styles.warningsAccordionDetails\n }\n ].filter(({items}) => items.length > 0),\n [errors, warnings, styles]\n );\n\n useEffect(() => {\n setExpandedPanelId('errors');\n }, [errors]);\n\n const handleChange = useCallback(\n (panelId: string) => (event, isExpanded: boolean) => {\n setExpandedPanelId(isExpanded ? panelId : null);\n },\n []\n );\n\n return panels.length > 0 ? (\n <ErrorsPanel panels={panels} expandedPanelId={expandedPanelId} onToggle={handleChange} ErrorComponent={Error} />\n ) : null;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Props = {\n maxWidth?: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n scrollWrapper: {\n flexGrow: 1,\n overflowY: 'auto'\n },\n emptyState: {\n backgroundColor: '#FAFAFA',\n height: '100%'\n },\n profileWrapper: ({maxWidth}: Props) => ({\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n maxWidth: maxWidth ? `${maxWidth}px` : '100%'\n }),\n profileContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n closeIcon: {\n paddingRight: '12px',\n boxSizing: 'content-box',\n '& path': {\n fill: '#fff'\n }\n },\n snackbar: {\n '& > div': {\n flexWrap: 'nowrap',\n alignItems: 'baseline'\n }\n }\n}));\n","import {Snackbar as Snackbar} from '@material-ui/core';\nimport {Portal as Portal} from '@material-ui/core';\nimport React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {ConfirmationDialog, SmallIconButton} from '@reltio/components';\nimport {NotificationItem, Action} from './types';\nimport {useStyles} from './styles';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\n\ntype Props = {\n notification: NotificationItem;\n};\n\nconst AUTO_HIDE_DURATION = 5000;\n\nexport const Notification = ({notification}: Props) => {\n const styles = useStyles({});\n const dispatch = useDispatch();\n const autoCloseInterval: number = useSelector(mdmModule.selectors.getAutoCloseInterval);\n const autoHideDuration =\n notification.autoHideDuration || (autoCloseInterval && autoCloseInterval * 1000) || AUTO_HIDE_DURATION;\n const [action, setAction] = useState<Action>();\n const [show, setShow] = useState(true);\n const closeSnackbar = useCallback(\n (_e?: unknown, reason?: string) => {\n if (reason !== 'clickaway') {\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n setShow(false);\n }\n },\n [notification]\n );\n const onDiscard = useCallback(() => {\n action.cancelAction && dispatch(action.cancelAction);\n setAction(undefined);\n }, [action]);\n const onConfirm = useCallback(() => {\n dispatch(action.applyAction);\n setAction(undefined);\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n }, [action, notification]);\n\n const actions = (\n <>\n {notification.actions.map((action) => (\n <Button\n key={action.label}\n color=\"primary\"\n size=\"small\"\n onClick={() => {\n if (action.needConfirmation) {\n setAction(action);\n } else {\n dispatch(action.applyAction);\n }\n setShow(false);\n }}\n >\n {action.label}\n </Button>\n ))}\n </>\n );\n const message = (\n <>\n <SmallIconButton className={styles.closeIcon} size=\"S\" icon={CloseIcon} onClick={closeSnackbar} />\n {notification.text}\n </>\n );\n\n return (\n <>\n <Portal container={document.body}>\n <Snackbar\n autoHideDuration={autoHideDuration}\n open={show}\n classes={{root: styles.snackbar}}\n action={actions}\n onClose={closeSnackbar}\n anchorOrigin={{vertical: 'bottom', horizontal: 'center'}}\n message={message}\n />\n </Portal>\n <ConfirmationDialog\n open={!!action}\n title={action?.confirmationText}\n content={action?.confirmationDescription}\n onSave={onConfirm}\n onDiscard={onDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n </>\n );\n};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {NotificationItem} from './types';\nimport {Notification} from './Notification';\n\nexport const Notifications = () => {\n const notifications: NotificationItem[] = useSelector(mdm.selectors.getNotifications);\n if (!notifications) return null;\n return (\n <>\n {notifications.slice(-1).map((n) => (\n <Notification key={n.id} notification={n} />\n ))}\n </>\n );\n};\n","import React, {memo, useCallback, useContext, useEffect, useMemo, useState, useRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch, useSelector} from 'react-redux';\nimport hash from 'object-hash';\nimport {\n debounce,\n Entity,\n fixNonUniqViewsIds,\n getProfileObjectIdsForCollaboration,\n ProfilePerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent, profile} from '@reltio/mdm-module';\nimport {\n CollaborationContext,\n WorkflowTasksContext,\n UsersContext,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n EmptyState,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n useSavedStateForEntityType,\n useCollaboration,\n useUsers,\n useWorkflowTasks,\n HistoryDiffContext,\n useHistoryDiff,\n useHistorySlice,\n PopupBoundariesContext\n} from '@reltio/components';\n\nimport {ProfileSavedState, Layout} from '../../types';\n\nimport {ProfileLayout} from '../ProfileLayout';\nimport {PerspectiveProfileBand} from '../PerspectiveProfileBand';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport {ProfileErrorsPanel} from '../ProfileErrorsPanel';\nimport {useProfileValidation} from '../hooks/useProfileValidation';\n\nimport {useStyles} from './styles';\nimport {Notifications} from '../Notifications';\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: () => Promise<Record<string, ProfileSavedState>>;\n};\n\nconst SAVE_STATE_DEBOUNCE_DELAY = 1000;\nconst emptyState = {} as ProfileSavedState;\nconst ProfilePerspectiveView = memo(({config, saveState, getSavedState}: Props) => {\n const styles = useStyles({maxWidth: config?.maxWidth});\n const dispatch = useDispatch();\n const getSavedStateAndFix = useCallback(() => {\n return getSavedState().then((state) => (state.layout ? {} : state));\n }, [getSavedState]);\n const scrollWrapperRef = useRef<HTMLDivElement>();\n const debouncedSaveState = useCallback(debounce(saveState, SAVE_STATE_DEBOUNCE_DELAY), [saveState]) as (\n state: Record<string, ProfileSavedState>\n ) => void;\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const entityTypeUri = entity ? entity.type : null;\n\n const {isLoaded, savedState = emptyState, updateSavedState} = useSavedStateForEntityType<ProfileSavedState>({\n getSavedState: getSavedStateAndFix,\n saveState: debouncedSaveState,\n entityTypeUri\n });\n const [layout, setLayout] = useState<Layout>([]);\n const [views, setViews] = useState<ProfilePerspectiveConfig['views']>([]);\n\n const configHash = useMemo(() => hash(config), [config]);\n\n const isHistoryActive = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const objectIds = useMemo(() => getProfileObjectIdsForCollaboration(entity), [entity]);\n const collaboration = useCollaboration({objectIds});\n const emptyCollaboration = useContext(CollaborationContext);\n const users = useUsers();\n const workflowTasks = useWorkflowTasks(config?.workflow);\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n useHistorySlice({entity, historyEvent});\n const historyDiff = useHistoryDiff();\n\n useEffect(() => {\n if (isLoaded) {\n const isConfigChanged = configHash !== savedState.configHash;\n const {views: fixedViews, layout: fixedLayout} = fixNonUniqViewsIds({\n views: isConfigChanged || !savedState.views ? config.views : savedState.views,\n layout: isConfigChanged ? config.layout : savedState.layout\n });\n setViews(fixedViews);\n setLayout(fixedLayout);\n }\n }, [isLoaded, savedState, entityTypeUri]); // eslint-disable-line\n\n useEffect(() => {\n dispatch(profile.views.actions.profileViewsSet(views));\n }, [dispatch, views]);\n\n useEffect(() => {\n if (config.sidePanelViews) {\n dispatch(profile.sidePanelViews.actions.sidePanelViewsLoaded(config.sidePanelViews));\n }\n }, [config]); // eslint-disable-line\n\n useEffect(() => {\n if (scrollWrapperRef.current) {\n scrollWrapperRef.current.scrollTop = 0;\n }\n }, [entity?.uri]);\n\n useProfileValidation();\n\n const handleLayoutChange = useCallback(\n (layout: Layout) => {\n updateSavedState({layout, views, configHash});\n setLayout(layout);\n },\n [updateSavedState, configHash, views]\n );\n const boundariesElement = scrollWrapperRef.current;\n\n const popupBoundariesValue = useMemo(\n () => ({\n element: boundariesElement,\n priority: ['top', 'bottom']\n }),\n [boundariesElement]\n );\n return (\n <ProfilePerspectiveViewContext.Provider value={true}>\n <UsersContext.Provider value={users}>\n <CollaborationContext.Provider value={isHistoryActive ? emptyCollaboration : collaboration}>\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <HistoryDiffContext.Provider value={historyDiff}>\n <div className={styles.perspectiveView}>\n {(!isLoaded || !entity?.uri) && <LinearLoadIndicator />}\n {isLoaded && entity?.uri ? (\n <div className={styles.profileContainer}>\n <div className={styles.profileWrapper}>\n <PerspectiveProfileBand profileBandConfig={config.profileBand} />\n {!isHistoryActive && <ProfileErrorsPanel />}\n <div ref={scrollWrapperRef} className={styles.scrollWrapper}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ProfileLayout\n layout={layout}\n onLayoutChanged={handleLayoutChange}\n views={views}\n />\n </PopupBoundariesContext.Provider>\n </div>\n </div>\n <RightSidePanel />\n </div>\n ) : (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.NO_DATA}\n text={i18n.text('No data to display.')}\n variant={EMPTY_STATE_VARIANTS.embedded}\n />\n </div>\n )}\n <Notifications />\n </div>\n </HistoryDiffContext.Provider>\n </WorkflowTasksContext.Provider>\n </CollaborationContext.Provider>\n </UsersContext.Provider>\n </ProfilePerspectiveViewContext.Provider>\n );\n});\n\nProfilePerspectiveView.displayName = 'ProfilePerspectiveView';\n\nexport {ProfilePerspectiveView};\n","import {useCallback, useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {debounce, Entity, isDataTenantEntity, isTempUri, Mode} from '@reltio/mdm-sdk';\n\nexport const useProfileValidation = () => {\n const dispatch = useDispatch();\n const isValidateReadMode: boolean = useSelector(mdmModule.selectors.getValidateReadMode);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const {uri, updatedTime} = entity;\n const isDTEntity = isDataTenantEntity(entity);\n const mode: Mode = useSelector(mdmModule.selectors.getMode);\n const profileViews = useSelector(mdmModule.selectors.getProfileViews);\n const hasProfileViews = profileViews && profileViews.length > 0;\n\n const validate = useCallback(\n debounce((needDispatch: boolean) => {\n if (needDispatch) {\n dispatch(profile.actions.validateProfile());\n }\n }, 500),\n [dispatch]\n );\n\n useEffect(() => {\n const needDispatch =\n isValidateReadMode && !isDTEntity && uri && !isTempUri(uri) && mode === Mode.Viewing && hasProfileViews;\n validate(needDispatch);\n }, [validate, isDTEntity, isValidateReadMode, updatedTime, uri, mode, hasProfileViews]);\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\nimport MomentUtils from '@date-io/moment';\nimport {identity} from 'ramda';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {ErrorPopup, SandboxAPIContext, ViewIdContext} from '@reltio/components';\nimport {convertOldProfileConfig, ProfilePerspectiveConfig, promisifyCallback} from '@reltio/mdm-sdk';\nimport {ProfileSavedState} from '../types';\nimport ProfilePerspectiveView from '../components/ProfilePerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'profilePerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: (clb: (state: Record<string, ProfileSavedState>) => void) => void;\n qxSandboxApi?: {\n getCurrentPerspectiveId: () => string;\n showPerspective: (perspective) => void;\n setEntityUri: (entityUri: string, listener: () => void) => void;\n };\n};\n\nconst ProfilePerspective = ({config, store, onResize = identity, saveState, getSavedState, qxSandboxApi}: Props) => {\n const getSavedStatePromisified: () => Promise<Record<string, ProfileSavedState>> = useCallback(\n promisifyCallback(getSavedState),\n [getSavedState]\n );\n\n const processedConfig = useMemo(() => config && convertOldProfileConfig(config), [config]);\n\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={processedConfig?.id}>\n <SandboxAPIContext.Provider value={qxSandboxApi}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {processedConfig && (\n <ProfilePerspectiveView\n config={processedConfig}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup showErrorFromStore={true} />\n </>\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </SandboxAPIContext.Provider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default ProfilePerspective;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n titleContainer: {\n overflow: 'hidden',\n fontSize: '16px',\n fontWeight: 'normal',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n alignItems: 'center',\n display: 'flex',\n minHeight: '48px',\n color: theme.palette.text.secondary\n },\n link: {\n fontSize: '16px',\n fontWeight: 'normal'\n },\n icon: {\n height: '18px',\n color: theme.palette.text.secondary\n },\n totalCaption: {\n lineHeight: 'inherit',\n fontSize: '14px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px'\n },\n totalNumber: {\n fontSize: '16px',\n color: 'rgba(0,0,0,0.87)',\n marginRight: '5px',\n fontWeight: 500\n }\n}));\n","import React, {useCallback, useContext} from 'react';\nimport {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {FacetViewHeader, Spacer, ViewIdContext} from '@reltio/components';\nimport {Link as Link} from '@material-ui/core';\nimport ArrowForwardIosRoundedIcon from '@material-ui/icons/ArrowForwardIosRounded';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total?: number;\n};\n\nexport const TagListHeader = ({total = 0}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const viewId = useContext(ViewIdContext);\n\n const switchToProfile = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'profile', viewId}));\n }, [dispatch, viewId]);\n\n return (\n <FacetViewHeader title=\"\">\n <div className={styles.titleContainer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.link}\n onClick={switchToProfile}\n underline=\"none\"\n >\n {i18n.text('Profile')}\n </Link>\n <ArrowForwardIosRoundedIcon className={styles.icon} />\n {i18n.text('Tags')}\n </div>\n <Spacer />\n <Typography className={styles.totalCaption} variant=\"caption\">\n <span className={styles.totalNumber}>{i18n.number(total, '0,0')}</span>\n {i18n.text('total profiles')}\n </Typography>\n </FacetViewHeader>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n toolbar: {\n display: 'flex',\n flexShrink: 0,\n background: 'white',\n borderBottom: '1px solid rgba(0,0,0,0.1)',\n boxSizing: 'border-box',\n paddingLeft: '16px'\n },\n avatar: {\n color: 'rgba(0, 0, 0, 0.38)',\n marginRight: '12px'\n },\n label: {\n fontSize: '20px',\n letterSpacing: '0.25px',\n lineHeight: '1.2',\n fontWeight: 500,\n color: theme.palette.text.primary,\n wordBreak: 'break-word'\n }\n}));\n","import React from 'react';\nimport TagIcon from '@material-ui/icons/LocalOffer';\nimport {Toolbar as Toolbar} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n};\n\nexport const TagProfileBand = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={styles.toolbar}>\n <TagIcon className={styles.avatar} />\n <Typography variant=\"h6\" className={styles.label}>\n {label}\n </Typography>\n </Toolbar>\n );\n};\n","import {useCallback, useMemo} from 'react';\nimport {map, assoc} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n Entity,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotals,\n getTotalFromDataTenant,\n TotalResponse,\n SearchFilter,\n GlobalSearchRequestOptions,\n getDataTenantFromEntityUri\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entityUri: string;\n tag: string;\n};\n\nexport const useTagsProvider = ({entityUri, tag}: Props) => {\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const dtssPath: string = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenant = useMemo(() => getDataTenantFromEntityUri(entityUri), [entityUri]);\n const filters: SearchFilter[] = useMemo(() => {\n return [\n {\n filter: 'equals',\n fieldName: 'tags',\n values: [tag]\n }\n ];\n }, [tag]);\n\n const isDT = !!dataTenant;\n\n const getEntities = useCallback(\n (filters: SearchFilter[] = [], options = {}): Promise<Entity[]> => {\n const requestOptions = {\n select: 'uri,label,type,secondaryLabel,defaultProfilePicValue,startDate,endDate',\n ...options\n };\n return isDT\n ? getFilteredEntitiesFromDataTenant({\n filters,\n options: requestOptions,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n }).then(map(assoc('dataTenant', dataTenant)))\n : getFilteredEntities(filters, requestOptions);\n },\n [isDT, dataTenant, tenant, dtssPath]\n );\n\n const requestEntities = useCallback(\n (max, offset): Promise<Entity[]> => {\n return getEntities(filters, {offset, max, ...globalSearchRequestOptions});\n },\n [filters, globalSearchRequestOptions, getEntities]\n );\n\n const requestTotal = useCallback((): Promise<number> => {\n const options = globalSearchRequestOptions;\n return (isDT\n ? getTotalFromDataTenant({\n filters,\n options,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n })\n : getTotals(filters, options)\n ).then((json) => (json as TotalResponse).total);\n }, [filters, globalSearchRequestOptions, isDT, dataTenant, tenant, dtssPath]);\n\n return {requestEntities, requestTotal};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n tagsContainer: {\n display: 'flex'\n },\n fullHeight: {\n flexGrow: 1,\n height: 0\n },\n tagsView: {\n margin: '16px',\n width: '100%',\n paddingTop: '4px'\n },\n listContainer: {\n flex: 1,\n display: 'flex',\n overflow: 'hidden',\n position: 'relative',\n flexDirection: 'column',\n minHeight: '4px'\n },\n entitiesList: {\n overflowY: 'auto',\n flexGrow: 1\n },\n pagination: {\n flexGrow: 0\n }\n}));\n","import React, {memo, useEffect, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdmModule from '@reltio/mdm-module';\nimport {GlobalSearchRequestOptions} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, LinearLoadIndicator, ProfilesList} from '@reltio/components';\nimport {TagListHeader} from './components/TagListHeader';\nimport {TagProfileBand} from './components/TagProfileBand';\nimport {useTag} from './hooks/useTag';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [25, 50, 100];\n\ntype Props = {\n tag?: string;\n entityUri?: string;\n};\n\nconst TagPerspectiveView = memo(({tag, entityUri}: Props) => {\n const styles = useStyles();\n\n const [rowsPerPage, setRowsPerPage] = useState(ROWS_PER_PAGE_OPTIONS[0]);\n const [page, setPage] = useState(0);\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n\n useEffect(() => {\n setPage(0);\n }, [tag, entityUri, globalSearchRequestOptions]);\n\n const {isLoading, total, entities} = useTag({tag, entityUri, page, rowsPerPage});\n const refScrollBlock = useRef(null);\n\n useEffect(() => {\n if (refScrollBlock.current) {\n refScrollBlock.current.scrollTop = 0;\n }\n }, [entities]);\n\n const hasPagination = total > ROWS_PER_PAGE_OPTIONS[0];\n\n return (\n <div className={styles.perspectiveView}>\n <TagProfileBand label={tag} />\n <div className={classnames(styles.tagsContainer, {[styles.fullHeight]: hasPagination})}>\n <BasicView className={styles.tagsView}>\n <TagListHeader total={total} />\n <div className={styles.listContainer}>\n {isLoading && <LinearLoadIndicator />}\n {total > 0 && (\n <div className={styles.entitiesList} ref={refScrollBlock}>\n <ProfilesList entities={entities} />\n </div>\n )}\n {hasPagination && (\n <div className={styles.pagination}>\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n onChangeRowsPerPage={setRowsPerPage}\n />\n </div>\n )}\n </div>\n </BasicView>\n </div>\n </div>\n );\n});\n\nTagPerspectiveView.displayName = 'TagPerspectiveView';\n\nexport {TagPerspectiveView};\n","import {useCallback, useEffect, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch} from 'react-redux';\nimport {useSafePromise} from '@reltio/components';\nimport {ui} from '@reltio/mdm-module';\nimport {Entity, getRequestErrorMessage} from '@reltio/mdm-sdk';\nimport {useTagsProvider} from './useTagsProvider';\n\ntype Props = {\n tag: string;\n entityUri: string;\n page: number;\n rowsPerPage: number;\n};\n\nexport const useTag = ({tag, entityUri, page = 0, rowsPerPage = 50}: Props) => {\n const dispatch = useDispatch();\n\n const safeRequestTotalPromise = useSafePromise();\n const safeRequestEntitiesPromise = useSafePromise();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [total, setTotal] = useState<number>(0);\n const [entities, setEntities] = useState<Entity[]>([]);\n\n const {requestEntities, requestTotal} = useTagsProvider({entityUri, tag});\n\n const onError = useCallback(\n (e) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(e, i18n.text('Something went wrong'))));\n setTotal(0);\n },\n [dispatch]\n );\n\n useEffect(() => {\n safeRequestTotalPromise(requestTotal()).then(setTotal).catch(onError);\n }, [requestTotal, safeRequestTotalPromise, onError]);\n\n useEffect(() => {\n setIsLoading(true);\n safeRequestEntitiesPromise(requestEntities(rowsPerPage, page * rowsPerPage))\n .then(setEntities)\n .catch(onError)\n .finally(() => setIsLoading(false));\n }, [page, rowsPerPage, requestEntities, safeRequestEntitiesPromise, onError]);\n\n return {isLoading, total, entities};\n};\n","import React from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\nimport {identity} from 'ramda';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {TagPerspectiveConfig} from '@reltio/mdm-sdk';\nimport TagPerspectiveView from '../components/TagPerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'tagPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: TagPerspectiveConfig;\n tag?: string;\n entityUri?: string;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n};\n\nconst TagPerspective = ({config, tag, entityUri, store, onResize = identity}: Props) => {\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <TagPerspectiveView tag={tag} entityUri={entityUri} />}\n <ErrorPopup showErrorFromStore={true} />\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default TagPerspective;\n"],"names":["customStyles","input","currentStyles","fontSize","menuPortal","zIndex","useStyles","makeStyles","root","flex","title","paddingBottom","paddingLeft","dropDownInput","width","justifyContent","backgroundColor","borderTop","option","height","noOptionsMessage","entityType","selectedAttributes","className","onChange","disableUnderline","menuPlacement","metadata","useSelector","mdmModule","styles","prepareItems","useCallback","data","level","prevLabel","reduce","acc","item","hidden","chipLabel","label","push","value","uri","attrType","subAttributes","getAttributeTypeSubAttributes","concat","options","useMemo","attributes","classnames","Typography","variant","i18n","MultiSelect","TextFieldProps","InputProps","classes","components","DropdownIndicator","DropdownIndicatorWithIconButton","MultiValue","props","Option","isFocused","isSelected","innerProps","AttributeListItem","checked","labelInText","pipe","defaultTo","menuPortalTarget","document","body","display","paddingRight","inputNumber","minWidth","marginRight","inputUnit","periods","interval","unit","onFocus","onNumberChange","getValue","parseInt","newValue","onUnitChange","newUnit","TextField","type","inputProps","min","SimpleDropDownSelector","placeholder","capitalize","map","loadingMessage","selectedUsers","valueToOption","prepareValues","values","tenant","servicesPath","cachedRequest","useRef","pluck","defaultOptions","getOptions","inputValue","current","getAllUsersForTenant","then","prop","users","filter","username","utils","filterUsers","ActivityTypes","getItemDataType","path","getActivityType","activity","items","firstItem","isValidActivity","includes","splitActivityByType","propOr","groupBy","ifElse","length","itemsTotal","stringifyDeltaValue","delta","isNil","Array","isArray","join","is","Object","toString","getActivityLabel","dropdownIndicator","transition","inputRoot","padding","dateOptionLabel","paper","localeFormat","moment","longDateFormat","inputRef","open","setOpen","useState","handleToggle","onCancel","fullWidth","formatDataTypeValue","dataTypeDefinition","DataTypes","formatValue","onClick","ref","endAdornment","selectProps","menuIsOpen","readOnly","InputLabelProps","shrink","Menu","autoFocus","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","style","DateRangePicker","onApply","DateRangeTypes","RequestStates","SingleAttributeContext","React","displayName","triggerButton","color","popupContent","paddingTop","maxWidth","checkboxControlRoot","marginTop","marginLeft","checkboxControlLabel","checkboxControlCheckbox","buttonRef","isOpen","setIsOpen","showInactive","toggleShowInactive","useContext","togglePopup","Button","Popover","FormControlLabel","control","Checkbox","e","target","totalCaption","lineHeight","letterSpacing","flexShrink","ovIcon","SingleAttributeHeader","caption","totalVisibleValues","showInactiveValuesMenu","searchQuery","setSearchQuery","setPage","totalNonVisibleValues","nonVisibleValues","attributeType","FacetViewHeader","HideOnShrink","widthToHide","VerticalDivider","margin","OvIcon","nonOvTotal","nonOvValues","ExpandableSearchInput","query","theme","moreButton","marginBottom","buttonLabel","fontWeight","icon","divider","ovFalse","inactive","noData","palette","text","secondary","getAttributeNameFromAttributeUri","getLastUriPart","search","some","String","getPagedLocalEntity","async","entity","attributeTypeUri","defaultMaxValues","Infinity","offset","findAttributeValuesByTypeUri","ovValues","isOv","getAttributeSource","slice","paging","totalOvValues","totalValues","emptyArray","SingleAttributeEditableContent","parentUri","noDataText","required","isRequired","cardinality","name","dispatch","useDispatch","viewId","ViewIdContext","modifiedEntity","state","errors","errorMessage","getAttributePagerActiveTypeErrorMessage","mode","attributeSource","entityValuesUris","pathOr","modifiedEntityValues","modifiedEntityValuesUris","showEmptyEditors","isTempUri","emptyEditorValue","createNewAttribute","isModifiedEntityValuesEmpty","isEmptyValue","showEmpty","newValues","onAddAttributes","params","profile","param","onChangeAttribute","onDeleteAttribute","onDeactivateError","onAdd","attribute","isComplexAttribute","canCreate","checkCanCreateAttribute","commonProps","crosswalks","showNonOv","isEmptyAttributeList","CardinalityMessage","ErrorMessage","message","Add","idx","key","attributeValue","lazy","ownError","getAttributeOwnError","Divider","originalValue","modifiedEntityValue","find","propEq","deleted","edited","value1","value2","cleanser","over","lensPath","cleanAttributesWith","valueTransformer","unless","omit","deleteEmptyComplex","identity","equals","areValuesEqual","cond","always","SingleAttributeReadableContent","flexDirection","content","position","overflow","flexGrow","pagination","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","isEditableMode","pivotingAttributes","hasValues","PivotingAttributeContext","BasicView","Box","LinearLoadIndicator","renderContent","BasicTablePagination","count","rowsPerPage","rowsPerPageOptions","onChangePage","useSingleAttributeLoader","canShowHistoryDiff","attributeUri","setValues","setPaging","setIsLoading","safePromise","useSafePromise","attributeValuesRef","apiPath","entitySelector","isHistoryModeEnabled","diff","attributeTypeName","attributeTypeSource","findAttributeValues","findAttributeTypeByUri","globalFilter","loadAttributes","isReadableAttribute","isFirstLevelAttributeUri","rest","request","isDataTenantEntity","getPagedEntity","undefined","response","loadedValue","finally","useEffect","useDidUpdateEffect","partitionByOv","partition","totalProp","has","RelationsViewStateContext","button","sortControls","alignItems","sortSelectorRoot","sortSelectorMenuItem","sortOrderButton","FilterButton","sortOrder","toggleSortOrder","sortOption","changeSortOption","sortOptions","hasSortOptions","isAsc","DropDownEditor","entries","menuItem","MenuProps","SmallIconButton","tooltipTitle","ArrowUpwardIcon","ArrowDownwardIcon","size","header","ImportDTContext","MAX","Math","pow","cursor","top","left","userSelect","badge","badgePosition","right","MultipleImportIcon","Badge","anchorOriginTopRightRectangle","badgeContent","CloudDownload","ImportFromDT","tenants","selectedTenant","onConfirmImport","onCancelConfirmation","onImportClick","dataTenants","reloadRelations","setTenants","setSelectedTenant","dtssPath","customerTenant","maxDtssImport","checkHasNonImportedConnections","importFromDT","Promise","all","hasNonImportedRelations","dataTenant","id","hasNonImportedConnections","modifiedTenants","importDTConnections","catch","error","ui","getRequestErrorMessage","useImportFromDTLoader","oneTenant","labelOnButton","indexOf","CloudDownloadIcon","DropDownMenuButton","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","menuItems","ConfirmationDialog","discardCaption","saveCaption","onDiscard","onSave","total","changeSearchQuery","tooltip","tooltipContent","secondaryLabel","progress","children","tooltipProps","setSecondaryLabel","onOpen","getDataTenantEntitySecondaryLabel","getEntitySecondaryLabel","CircularProgress","colorPrimary","Tooltip","disableFocusListener","useRelationInfo","connection","relation","getEntityType","entityLabel","getLabel","preparedUri","getEntityUriForLink","relationLabel","getRelationTypeLabelFromMetadata","relationType","container","SuggestedButtons","acceptRelation","ignoreRelation","alignSelf","row","minHeight","rowInactive","background","inactiveBackground","entityAvatar","entityLabelContainer","textDecoration","primary","main","editButtonsContent","editButtons","removed","editedLabel","fontStyle","EditableRelationItem","memo","showControls","onRemoveRelation","onEditRelation","onAcceptRelation","onIgnoreRelation","renderRelationArrowButton","checkRemoved","checkEdited","ignored","checkIgnored","isActive","isActiveObject","canRemove","canUpdate","Mode","isRemoved","relationTypeMetadata","getRelationType","checkMetadataForDelete","checkMetadataForUpdate","checkRelationPermission","handleRemoveRelation","relationUri","handleEditRelation","handleAcceptRelation","handleIgnoreRelation","suggested","EditIcon","DeleteIcon","suggustedButtonsContent","disabled","captionText","EntityTypeIcon","EntityUriLink","getFirstRelationTypeObject","inRelations","outRelations","prepareRelation","direction","relations","wrapInArrayIfNeeded","Directions","arrowIcon","RelationArrowButton","showSecondLevel","parentEntityUri","contentSecondLevel","checkNew","ArrowDropDown","ArrowRight","secondLevelContent","SecondLevelWrapper","connections","toggleShowSecondLevel","loadRelations","loading","relationActivityFilter","setShowSecondLevel","setLoading","activityFilter","requestConfig","returnObjects","returnDates","activeness","ActivityFilter","getRelationsForEntity","show","useSecondLevelConnections","entitiesMap","getEntitiesMapForConnections","EntitiesMapContext","RelationsContent","relationToAdd","relationsToEdit","checkIfCanAddRelations","onAddRelation","newConnection","createNewConnectionWithDefaultRelationType","connectionToRemove","defaultRelationTypeObject","connectionWithDefaultRelationType","evolve","object","relationDirection","newConnections","currentConnections","canAddRelations","isEmptyRelationList","getRelationEditableContent","openedRelation","allowOnlyCreateNew","itemKey","RelationEditor","shouldShowAddRelationButton","shouldShowRelationEditorToAdd","attributesList","RelationAttributes","currentEntityUri","firstLevelRelationAttrTypes","getRelationAttributesList","attributeListEntity","getActivenessAttributes","showAttributesList","getAttributesListForReadMode","objectIds","getAttributeValuesUris","getCommentsCount","CollaborationContext","isEmpty","additionalRelatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","RelatedObjectUrisContext","attrTypes","ShowDetailsButton","onToggle","tooltipPlacement","InfoIconSelected","InfoIcon","wordBreak","showDetails","suggestedWrapper","commentsContainer","additionalButtonsWrapper","labelWrapper","RelationItem","isSuggested","setShowDetails","relatedObjectUris","COMMENTS_CONTAINER_VISIBILITY_AREA","CommentsContainer","getConnectionRelationUriForLink","objectType","allowOnlyOneComment","getCountOfLikes","ratings","rating","getCountOfDislikes","calcWidthOfLikesScale","calcWidthOfDislikesScale","wrapper","averageRating","scale","likesScale","dislikesScale","counts","likesCount","Ratings","mean","calcAverageRating","toFixed","ThumbUp","ThumbDown","textTransform","likeButton","RatingsButtons","onAgree","onDisagree","ratingOfCurrentUser","user","endIcon","buttonContent","comment","entityTypeIcon","showDetailsButton","relationAttributes","RelationComplexItem","rateRelation","RelationsList","mainEnityUri","isComplex","relationTypeObject","ignoreSuggestedRelation","relatedEntityUri","startDate","endDate","isInDirection","startEntityUri","endEntityUri","createRelation","useSuggestedRelations","getRelationshipsObjectIdsForCollaboration","list","selectors","getEntity","getMode","RelationsView","getConnectionsWithDraftsByViewId","getTotalByViewId","sorting","order","field","queryClause","Maybe","filterValueToQueryStringWithQuotes","queryString","orSome","FilterBuilder","addClause","build","buildRelationsFilter","reload","useRelationsLoader","importDTContextValue","pick","Provider","TableAttributeContext","CHANGE_SEARCH_QUERY","actions","basicTableViewState","createStandardAction","reducer","action","payload","removedStyle","tableContainer","fontFamily","rowCell","transform","headCell","pointerEvents","withFilterAtBottom","DefaultHeadCellRenderer","getColumnsDataFromAttributes","attr","attributeUriToSearchUri","getAttrDataTypeDefinition","uniqBy","getColumnsData","getReadableAttributesList","getAttrPathFromColumnId","split","getNestedPathByColumnId","columnId","isAttributeSearchUri","attrPath","getBasicTableColumnsData","columnData","sortable","resizable","nestedPath","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","DefaultCellValueRenderer","onChangeSearchQuery","filtersEnabled","onToggleFilters","columnsData","selectedColumns","onChangeColumns","enabled","ColumnsSettings","withTableContext","deletedUris","rowValue","Boolean","cell","CellValueRenderer","isSorted","otherProps","index","onEdit","onRemove","onSort","filters","onFilter","tableRowsData","assoc","getOvAttributeValuesByPath","getAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","checkIsEditableMode","renderRowCell","hoverRowIndex","setHoverRowIndex","canDelete","useConfigPermissions","hideRightContent","checkCanDeleteAttribute","isReltioCrosswalk","canEdit","checkCanEditAttribute","checkCanEdit","handleEditAttribute","handleRemoveAttribute","hoveredRowRightContent","context","BasicTable","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","onRowHover","hoveredRowRightContentWrapper","hoveredRowRightContentContainer","actionButtons","AttributeEditing","hasChanges","expanded","addButton","editor","TableAttributeView","visibleColumns","showTable","allColumnsData","checkHasChanges","onStartEditing","modifiedValues","editingValues","newAttributeUri","setNewAttributeUri","originalValues","setOriginalValues","newAttribute","createDefaultValues","attributeTypes","prev","editingValueOriginal","attributeItem","without","original","both","not","useEditableAttribute","preparedValues","hasConfigToCreate","visibleColumnsData","nodeCounter","generateId","processResponse","fakeRoot","nodeId","parentPaths","i","nextRoot","j","nextParent","entities","isRoot","node","rootIndex","link","selected","avatar","treeContainer","maxHeight","tree","buttonsContainer","ConfigContext","onImageLoadFail","src","DEFAULT_ICON","Node","absoluteImagePath","uiPath","entityLink","getEntityLink","onTitleClick","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","Avatar","onError","Link","to","getNodeKey","lineBlock","lineChildren","verticalLine","horizontalLineRight","textAlign","boxSizing","whiteSpace","nodeContent","bottom","rowContents","borderLeft","verticalAlign","buttonWrapper","collapsedButton","expandedButton","borderRight","rowTitle","nodeContentRenderer","scaffoldBlockPxWidth","toggleChildrenVisibility","treeIndex","nodeTitle","showToggleChildrenButton","treeNodeRenderer","lowerSiblingCounts","scaffoldBlockCount","scaffold","forEach","lowerSiblingCount","shift","scaffoldWidth","nodeStyle","rowHeight","slideRegionSize","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","this","viewBox","version","xmlns","stroke","strokeWidth","fill","fillRule","fillOpacity","d","onGraphOpen","ShowGraphIcon","bodyWrapper","resizableHandleContainer","resizableHandleVisibilityArea","visibility","resizableHandle","dragIcon","Component","WithResizableHandle","DragIndicator","stubView","fullHeight","component","boxShadow","borderRadius","filterWrongLat","gt","lt","fullscreenBtn","ImageLineCaption","totalImages","photoWord","ImageAttributeViewEditableContent","requestNextPageOfAttributeValues","attributeValues","imageSize","IMAGE_SIZE","imageMargin","imageWidth","imageHeight","matchesContainer","footer","ActionButtons","match","onStartRequest","onFinishRequest","canMerge","canMark","getActionPermissionForMatch","matchRules","actionButtonProps","ActionButtonMode","onMergeFinish","MergeButton","NotMatchButton","MatchCard","ProfileMatchCard","createObjectIdForPM","matchEntityUri","DEFAULT_OPTIONS","showTransitiveMatches","showInactiveEntities","DEFAULT_SORTING","ComponentStates","ResizableStubView","withResizableHandle","ResizableProfileAttributesView","AttributesView","excludeUris","includeUris","attributesCount","pinnedAttributes","ResizableProfileSingleAttributeView","singleAttribute","setShowInactive","useSingleAttribute","ResizableProfileTableAttributeView","tableAttribute","initialState","useReducer","requestFilters","mdmFilters","columnFilter","columnFilterToMdmFilter","buildMDMFilters","reject","changePage","toggleSort","changeFilter","toggleFilters","changeColumns","useActions","useTableAttribute","ResizableProfileRelationsView","relationsState","setSortOrder","setSortOption","useRelationsState","ResizableCustomView","basicViewRef","defaultTooltip","html","visible","updatedTooltip","useAPI","innerHTML","childNodes","child","appendChild","ResizableHierarchyPathView","treeData","setTreeData","graphUri","forest","newTrees","updateTreesWithNewEntity","updatedTime","getPathsTree","console","warn","useLoadPaths","graph","openGraph","graphType","generateNodeProps","rowInfo","ReactSortableTree","isVirtualized","canDrag","ResizableProfilePotentialMatchesView","turnOnDisableSpinner","turnOffDisableSpinner","matches","loadMatches","useMatchesLoader","onStartLoading","onFinishLoading","onFinishMatchAction","openPotentialMatchPerspective","mdmModuleUi","perspectiveId","getPotentialMatchesObjectIdsForCollaboration","getEntityUriFromMatchObject","showSeeAll","Loading","NoData","Loaded","underline","ResizableHierarchyTreeView","importedModule","default","HierarchyTreeView","ResizableRelationshipsTableView","RelationshipsTableView","ResizableEntityMapView","isFullscreen","onToggleFullscreen","mapKey","markers","setMarkers","resolve","useMarkers","loadingElement","defaultCenter","lat","lng","mapOptions","mapTypeControl","FullscreenExitIcon","FullscreenIcon","ReltioMap","defaultZoom","mapContainerClassName","ResizableImageAttributeView","entityValues","ImageAttributesLine","ViewsFactory","ViewTypes","ProfileViewTypes","getComponentBy","propName","store","HierarchyTree","HierarchyPaths","RelationsTable","Relations","Attributes","MapView","CustomView","ImageAttributeView","PotentialMatchesView","getComponent","Fallback","ViewComponent","isAutosize","Suspense","fallback","basicView","fixedSizeContainer","omittingProps","ProfileLayoutItem","layoutItemConfig","views","ResizeComponent","AutosizeComponent","ReactReduxContext","isCustomView","class","platform","CustomScriptPlatform","ProfileLayout","layout","layoutOptions","onLayoutChanged","ReltioGridLayout","LayoutItem","draggableHandle","xmlnsXlink","xlinkHref","mask","editingButtons","searchResults","comments","SuggestIcon","SvgIcon","CopyIcon","filterGroupByPermissions","group","isTempEntity","isWorkflowEnabled","canStartProcessInstanceSearchQuery","permission","isSuggestMode","checkMetadataPermission","PerspectiveProfileBand","profileBandConfig","profileOperation","entityTypeUri","isOperationSaving","Operation","isDisabledButtons","openCloneConfirmationDialog","setOpenCloneConfirmationDialog","onCloneDiscard","onClone","cloneAction","cloneActionProp","relationTypes","isRelationSuitableForEntityType","isRelationWithEntityType","when","complement","either","modifiedRelationTypes","isReference","getRelationTypeUriFromAttrType","T","relationshipTypesToCopy","useCloneAction","OPTIONS_GROUP","ModeTypes","description","CreateIcon","VisibilityIcon","BUTTONS_GROUP","window","confirm","shouldShowSelect","MetadataPermissions","hasOnlyReadPermission","accessibleOptionsGroup","accessibleButtonsGroup","handleChange","handleSave","ProfileBand","showEntityId","mr","ProfileBandHistory","ProfileBandNavigation","ModeSwitcherSelect","optionsGroup","buttonsGroup","WorkflowButton","WorkflowTasksContext","Inbox","showMoreLink","showMoreIcon","CollaborationList","getComments","pageToken","useCommentsEntitiesMap","objectId","commentId","CollaborationItem","KeyboardArrowDown","WorkflowList","tasks","task","WorkflowTaskCard","taskId","CollaborationButton","commentsMap","calcTotalCommentItems","CollaborationIcon","SidePanelEmptyState","secondaryText","ActivePanel","getSecondTitle","RightSidePanel","isWorkflowSideViewEnabled","isCollaborationSideViewEnabled","isCollaborationEnabled","historyEvent","workflowTasksContext","collaborationContext","active","setActive","toggleActive","newId","resetActive","isHistoryTabActive","History","isHistoryEnabled","isProfilePersisted","useHistoryEnabled","historyFilter","onApplyFilter","historicUris","historyWithTotal","canLoadMore","onLoadMore","useHistory","enabledWorkflowButton","enabledCollaborationButton","collaborationTotal","elements","Workflow","headerProps","mainTitle","secondTitle","rightContent","AddWorkflowButton","Collaboration","HistoryIcon","HistoryView","contributorsUris","HistoryPanelEmptyState","HistoryHeader","visibleElements","SidePanel","SidePanelContentHeader","SideButtonsPanel","buttonsProps","onButtonClick","activeIndexId","accordionSummaryHeight","defaultBorderStyle","accordion","borderBottom","accordionExpanded","accordionSummary","accordionSummaryHeading","typography","pxToRem","fontWeightRegular","accordionSummaryExpanded","accordionSummaryContent","accordionDetails","parents","errorsAccordion","borderColor","errorsAccordionDetails","warningsAccordion","warningsAccordionDetails","errorIcon","warningIcon","ErrorsPanel","panels","expandedPanelId","ErrorComponent","accordionClassName","accordionDetailsClassName","Accordion","square","AccordionSummary","expandIcon","ExpandMore","AccordionDetails","clearError","Error","displayedMessage","ErrorType","ErrorSource","getDisplayedErrorMessage","displayedErrorPath","errorPath","AttributeValuePathItemType","getDisplayedErrorPath","ProfileErrorsPanel","cachedAllErrors","allErrors","cacheForAllErrors","errors1","errors2","areErrorsEqual","useCachedErrors","warnings","isCriticalError","setExpandedPanelId","number","panelId","event","isExpanded","perspectiveView","overflowX","overflowY","scrollWrapper","emptyState","profileWrapper","profileContainer","closeIcon","snackbar","flexWrap","Notification","notification","autoCloseInterval","autoHideDuration","setAction","setShow","closeSnackbar","_e","reason","cancelAction","onConfirm","applyAction","needConfirmation","CloseIcon","Portal","Snackbar","confirmationText","confirmationDescription","Notifications","notifications","n","ProfilePerspectiveView","saveState","getSavedState","getSavedStateAndFix","scrollWrapperRef","debouncedSaveState","debounce","isLoaded","savedState","updateSavedState","useSavedStateForEntityType","setLayout","setViews","configHash","hash","isHistoryActive","getProfileObjectIdsForCollaboration","collaboration","useCollaboration","emptyCollaboration","useUsers","workflowTasks","useWorkflowTasks","workflow","useHistorySlice","historyDiff","useHistoryDiff","isConfigChanged","fixedViews","fixedLayout","fixNonUniqViewsIds","sidePanelViews","scrollTop","isValidateReadMode","isDTEntity","profileViews","hasProfileViews","validate","needDispatch","useProfileValidation","handleLayoutChange","boundariesElement","popupBoundariesValue","element","priority","ProfilePerspectiveViewContext","UsersContext","profileBand","PopupBoundariesContext","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","EMPTY_STATE_VARIANTS","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","onResize","qxSandboxApi","getSavedStatePromisified","promisifyCallback","processedConfig","convertOldProfileConfig","SandboxAPIContext","StylesProvider","MuiPickersUtilsProvider","MomentUtils","handleHeight","floor","ErrorPopup","showErrorFromStore","titleContainer","textOverflow","totalNumber","TagListHeader","switchToProfile","ArrowForwardIosRounded","Spacer","toolbar","TagProfileBand","Toolbar","tagsContainer","tagsView","listContainer","entitiesList","ROWS_PER_PAGE_OPTIONS","TagPerspectiveView","tag","setRowsPerPage","globalSearchRequestOptions","safeRequestTotalPromise","safeRequestEntitiesPromise","setTotal","setEntities","requestEntities","requestTotal","getDataTenantFromEntityUri","fieldName","isDT","getEntities","requestOptions","select","getFilteredEntitiesFromDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","json","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","onChangeRowsPerPage"],"sourceRoot":""}
|