@reltio/remotes 1.4.1304 → 1.4.1306

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/6217.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"6217.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/BasicView/styles.js","webpack://@reltio/remotes/../components/src/components/BasicView/BasicView.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/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((theme) => ({\n 'basic-view__paper': {\n display: 'flex',\n flexDirection: 'column',\n ...theme.basicView\n }\n}));\n","import Paper, {PaperProps} from '@material-ui/core/Paper';\nimport PropTypes from 'prop-types';\nimport React, {forwardRef, Ref} from 'react';\nimport {useStyles} from './styles';\n\nconst BasicView = forwardRef<Ref<typeof Paper>, PaperProps>(({children, className, ...otherProps}, ref) => {\n const styles = useStyles();\n return (\n <Paper ref={ref} className={className} classes={{root: styles['basic-view__paper']}} {...otherProps}>\n {children}\n </Paper>\n );\n});\n\nBasicView.displayName = 'BasicView';\n\nBasicView.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n};\n\nexport default BasicView;\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 {filter, groupBy, ifElse, map, path, pipe, propOr, values, is, isNil, includes, reject} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActivityData, ActivityItem, 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 removeIgnoredItems = (activity: ActivityData): ActivityData => {\n const {items, label} = activity;\n const isImplementedItem = (item: ActivityItem): boolean => isValidActivityType(getItemDataType(item) || label);\n const filteredItems = filter(isImplementedItem)(items);\n if (items.length !== filteredItems.length) {\n console.error('Activities not implemented:', reject(isImplementedItem)(items));\n }\n return {\n ...activity,\n items: filteredItems,\n itemsTotal: filteredItems.length\n };\n};\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 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\nexport type SelectableItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selected?: boolean;\n};\n\nexport type DropDownMenuItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selectable?: boolean;\n selected?: boolean;\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={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 React from 'react';\nimport {ReadOnlyAttribute} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n showInactive: boolean;\n};\n\nexport const SingleAttributeReadableContent = ({values, attributeType, showInactive}: Props) => {\n return (\n <>\n {values.map((value) => {\n return (\n <ReadOnlyAttribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showInactive}\n />\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 = Number(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 display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)',\n marginBottom: '15px'\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 TableAttributeViewConfig\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\nconst MAX_HEIGHT = 477;\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: TableAttributeViewConfig;\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 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 autosizing\n maxHeight={MAX_HEIGHT}\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 resizeDebounceDelay={150}\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 TableAttributeViewConfig\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: TableAttributeViewConfig;\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 ProfileViewConfig,\n ProfileViewTypes,\n AttributeViewConfig,\n EntityMapViewConfig,\n ProfilePotentialMatchesViewConfig,\n RelationsViewConfig,\n ImageAttributeViewConfig,\n SingleAttributeViewConfig,\n HierarchyPathsViewConfig,\n HierarchyTreeViewConfig,\n CustomActionViewConfig\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 (\n <ResizableHierarchyTreeView\n config={config as HierarchyTreeViewConfig}\n store={store}\n className={className}\n />\n );\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 CustomActionViewConfig} 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 {TableAttributeViewConfig} 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: TableAttributeViewConfig;\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, useState} from 'react';\nimport {useAPI} from '@reltio/components';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {isNil, reject} from 'ramda';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: CustomActionViewConfig;\n className?: string;\n};\n\nexport const CustomView = ({config, className}: Props) => {\n const basicViewRef = useRef<HTMLDivElement>();\n const dialogRef = useRef<HTMLDivElement>();\n const [showModal, setShowModal] = useState<boolean>(false);\n const {height, width, tooltip: defaultTooltip} = config;\n const {html, visible, tooltip: updatedTooltip, customStyles, popup} = useAPI(config);\n const styles = useStyles();\n const tooltip = updatedTooltip || defaultTooltip;\n useEffect(() => {\n if (basicViewRef.current && html) {\n basicViewRef.current.innerHTML = '';\n Array.from(html.childNodes).forEach((child) => {\n basicViewRef.current.appendChild(child);\n });\n }\n }, [html]);\n useEffect(() => {\n setShowModal(!!popup);\n }, [popup]);\n\n useEffect(() => {\n if (showModal && dialogRef.current) {\n dialogRef.current.innerHTML = '';\n if (popup) {\n Array.from(popup.childNodes).forEach((child) => {\n dialogRef.current.appendChild(child);\n });\n }\n }\n }, [showModal, popup]);\n\n const style: {width?: number; height?: number} = reject(isNil, {width, height});\n return visible ? (\n <div className={styles.bodyWrapper}>\n <Dialog ref={dialogRef} open={!!popup} />\n <Tooltip title={tooltip || ''}>\n <div\n ref={basicViewRef}\n style={{...style, ...customStyles}}\n className={classnames(styles.root, className)}\n />\n </Tooltip>\n </div>\n ) : null;\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, useSelector} from 'react-redux';\nimport {ReactGridLayoutItem} from '@reltio/components';\nimport {CustomScript, CustomScriptPlatform, ProfileViewConfig} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\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 const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\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 const isMapView = config.class === ViewsFactory.ViewTypes.MapView;\n if (isMapView && !mapKey) {\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 >\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 PopupBoundariesContext,\n SearchValueContext,\n useSavedStateForEntityType,\n useCollaboration,\n useUsers,\n useWorkflowTasks,\n HistoryDiffContext,\n useHistoryDiff,\n useHistorySlice\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 nestedRoute = config?.nestedRoute ? `/${config.nestedRoute}` : '';\n const entityTypeUri = entity ? entity.type : null;\n const savedStateKey = entityTypeUri && config ? entityTypeUri + nestedRoute : null;\n\n const {isLoaded, savedState = emptyState, updateSavedState} = useSavedStateForEntityType<ProfileSavedState>({\n getSavedState: getSavedStateAndFix,\n saveState: debouncedSaveState,\n entityTypeUri: savedStateKey\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 const keywordValue = useSelector(mdm.selectors.getSearchKeyword)?.value || '';\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, savedStateKey]); // 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 <SearchValueContext.Provider value={keywordValue}>\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 </SearchValueContext.Provider>\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, SnackbarContext, useSnackbar, ViewIdContext} from '@reltio/components';\nimport {convertOldProfileConfig, InterceptHandlers, 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 interceptors: InterceptHandlers;\n getCurrentPerspectiveId: () => string;\n showPerspective: (perspective: string) => 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 const {SnackbarRenderer, showSnackbarMessage} = useSnackbar();\n\n const processedConfig = useMemo(() => config && convertOldProfileConfig(config), [config]);\n\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={processedConfig?.id}>\n <SnackbarContext.Provider value={showSnackbarMessage}>\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 <SnackbarRenderer />\n </>\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </SandboxAPIContext.Provider>\n </SnackbarContext.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} 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 enrichEntityWithDataTenant\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(enrichEntityWithDataTenant(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","theme","display","flexDirection","basicView","BasicView","forwardRef","ref","children","otherProps","Paper","displayName","propTypes","PropTypes","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","removeIgnoredItems","isImplementedItem","isValidActivityType","includes","filteredItems","length","console","error","reject","itemsTotal","splitActivityByType","propOr","groupBy","ifElse","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","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","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","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","content","position","overflow","flexGrow","pagination","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","isEditableMode","pivotingAttributes","hasValues","PivotingAttributeContext","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","ui","getRequestErrorMessage","useImportFromDTLoader","oneTenant","labelOnButton","indexOf","CloudDownloadIcon","DropDownMenuButton","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","menuItems","ConfirmationDialog","discardCaption","saveCaption","onDiscard","onSave","total","changeSearchQuery","tooltip","tooltipContent","secondaryLabel","progress","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","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","autosizing","maxHeight","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","resizeDebounceDelay","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","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","changePage","toggleSort","changeFilter","toggleFilters","changeColumns","useActions","useTableAttribute","ResizableProfileRelationsView","relationsState","Number","setSortOrder","setSortOption","useRelationsState","ResizableCustomView","basicViewRef","dialogRef","showModal","setShowModal","defaultTooltip","html","visible","updatedTooltip","popup","useAPI","innerHTML","from","childNodes","child","appendChild","Dialog","ResizableHierarchyPathView","treeData","setTreeData","graphUri","forest","newTrees","updateTreesWithNewEntity","updatedTime","getPathsTree","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","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","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","nestedRoute","savedStateKey","isLoaded","savedState","updateSavedState","useSavedStateForEntityType","setLayout","setViews","configHash","hash","isHistoryActive","getProfileObjectIdsForCollaboration","collaboration","useCollaboration","emptyCollaboration","useUsers","workflowTasks","useWorkflowTasks","workflow","useHistorySlice","historyDiff","useHistoryDiff","keywordValue","isConfigChanged","fixedViews","fixedLayout","fixNonUniqViewsIds","sidePanelViews","scrollTop","isValidateReadMode","isDTEntity","profileViews","hasProfileViews","validate","needDispatch","useProfileValidation","handleLayoutChange","boundariesElement","popupBoundariesValue","element","priority","ProfilePerspectiveViewContext","UsersContext","SearchValueContext","profileBand","PopupBoundariesContext","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","EMPTY_STATE_VARIANTS","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","onResize","qxSandboxApi","getSavedStatePromisified","promisifyCallback","SnackbarRenderer","showSnackbarMessage","useSnackbar","processedConfig","convertOldProfileConfig","SnackbarContext","S","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","enrichEntityWithDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","json","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","onChangeRowsPerPage"],"sourceRoot":""}
1
+ {"version":3,"file":"6217.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/BasicView/styles.js","webpack://@reltio/remotes/../components/src/components/BasicView/BasicView.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/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((theme) => ({\n 'basic-view__paper': {\n display: 'flex',\n flexDirection: 'column',\n ...theme.basicView\n }\n}));\n","import Paper, {PaperProps} from '@material-ui/core/Paper';\nimport PropTypes from 'prop-types';\nimport React, {forwardRef, Ref} from 'react';\nimport {useStyles} from './styles';\n\nconst BasicView = forwardRef<Ref<typeof Paper>, PaperProps>(({children, className, ...otherProps}, ref) => {\n const styles = useStyles();\n return (\n <Paper ref={ref} className={className} classes={{root: styles['basic-view__paper']}} {...otherProps}>\n {children}\n </Paper>\n );\n});\n\nBasicView.displayName = 'BasicView';\n\nBasicView.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n};\n\nexport default BasicView;\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 {filter, groupBy, ifElse, map, path, pipe, propOr, values, is, isNil, includes, reject} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActivityData, ActivityItem, 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 removeIgnoredItems = (activity: ActivityData): ActivityData => {\n const {items, label} = activity;\n const isImplementedItem = (item: ActivityItem): boolean => isValidActivityType(getItemDataType(item) || label);\n const filteredItems = filter(isImplementedItem)(items);\n if (items.length !== filteredItems.length) {\n console.error('Activities not implemented:', reject(isImplementedItem)(items));\n }\n return {\n ...activity,\n items: filteredItems,\n itemsTotal: filteredItems.length\n };\n};\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 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\nexport type SelectableItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selected?: boolean;\n};\n\nexport type DropDownMenuItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selectable?: boolean;\n selected?: boolean;\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={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 React from 'react';\nimport {ReadOnlyAttribute} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n showInactive: boolean;\n};\n\nexport const SingleAttributeReadableContent = ({values, attributeType, showInactive}: Props) => {\n return (\n <>\n {values.map((value) => {\n return (\n <ReadOnlyAttribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showInactive}\n />\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 = Number(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 display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)',\n marginBottom: '15px'\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 TableAttributeViewConfig\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\nconst MAX_HEIGHT = 477;\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: TableAttributeViewConfig;\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 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 autosizing\n maxHeight={MAX_HEIGHT}\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 resizeDebounceDelay={150}\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 TableAttributeViewConfig\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: TableAttributeViewConfig;\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 Order,\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: 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 ProfileViewConfig,\n ProfileViewTypes,\n AttributeViewConfig,\n EntityMapViewConfig,\n ProfilePotentialMatchesViewConfig,\n RelationsViewConfig,\n ImageAttributeViewConfig,\n SingleAttributeViewConfig,\n HierarchyPathsViewConfig,\n HierarchyTreeViewConfig,\n CustomActionViewConfig\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 (\n <ResizableHierarchyTreeView\n config={config as HierarchyTreeViewConfig}\n store={store}\n className={className}\n />\n );\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 CustomActionViewConfig} 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 {TableAttributeViewConfig} 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: TableAttributeViewConfig;\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, useState} from 'react';\nimport {useAPI} from '@reltio/components';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {isNil, reject} from 'ramda';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: CustomActionViewConfig;\n className?: string;\n};\n\nexport const CustomView = ({config, className}: Props) => {\n const basicViewRef = useRef<HTMLDivElement>();\n const dialogRef = useRef<HTMLDivElement>();\n const [showModal, setShowModal] = useState<boolean>(false);\n const {height, width, tooltip: defaultTooltip} = config;\n const {html, visible, tooltip: updatedTooltip, customStyles, popup} = useAPI(config);\n const styles = useStyles();\n const tooltip = updatedTooltip || defaultTooltip;\n useEffect(() => {\n if (basicViewRef.current && html) {\n basicViewRef.current.innerHTML = '';\n Array.from(html.childNodes).forEach((child) => {\n basicViewRef.current.appendChild(child);\n });\n }\n }, [html]);\n useEffect(() => {\n setShowModal(!!popup);\n }, [popup]);\n\n useEffect(() => {\n if (showModal && dialogRef.current) {\n dialogRef.current.innerHTML = '';\n if (popup) {\n Array.from(popup.childNodes).forEach((child) => {\n dialogRef.current.appendChild(child);\n });\n }\n }\n }, [showModal, popup]);\n\n const style: {width?: number; height?: number} = reject(isNil, {width, height});\n return visible ? (\n <div className={styles.bodyWrapper}>\n <Dialog ref={dialogRef} open={!!popup} />\n <Tooltip title={tooltip || ''}>\n <div\n ref={basicViewRef}\n style={{...style, ...customStyles}}\n className={classnames(styles.root, className)}\n />\n </Tooltip>\n </div>\n ) : null;\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, entityUri}));\n }, [dispatch, id, graph, entityUri]);\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, useSelector} from 'react-redux';\nimport {ReactGridLayoutItem} from '@reltio/components';\nimport {CustomScript, CustomScriptPlatform, ProfileViewConfig} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\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 const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\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 const isMapView = config.class === ViewsFactory.ViewTypes.MapView;\n if (isMapView && !mapKey) {\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 >\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 PopupBoundariesContext,\n SearchValueContext,\n useSavedStateForEntityType,\n useCollaboration,\n useUsers,\n useWorkflowTasks,\n HistoryDiffContext,\n useHistoryDiff,\n useHistorySlice\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 nestedRoute = config?.nestedRoute ? `/${config.nestedRoute}` : '';\n const entityTypeUri = entity ? entity.type : null;\n const savedStateKey = entityTypeUri && config ? entityTypeUri + nestedRoute : null;\n\n const {isLoaded, savedState = emptyState, updateSavedState} = useSavedStateForEntityType<ProfileSavedState>({\n getSavedState: getSavedStateAndFix,\n saveState: debouncedSaveState,\n entityTypeUri: savedStateKey\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 const keywordValue = useSelector(mdm.selectors.getSearchKeyword)?.value || '';\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, savedStateKey]); // 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 <SearchValueContext.Provider value={keywordValue}>\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 </SearchValueContext.Provider>\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, SnackbarContext, useSnackbar, ViewIdContext} from '@reltio/components';\nimport {convertOldProfileConfig, InterceptHandlers, 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 interceptors: InterceptHandlers;\n getCurrentPerspectiveId: () => string;\n showPerspective: (perspective: string) => 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 const {SnackbarRenderer, showSnackbarMessage} = useSnackbar();\n\n const processedConfig = useMemo(() => config && convertOldProfileConfig(config), [config]);\n\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={processedConfig?.id}>\n <SnackbarContext.Provider value={showSnackbarMessage}>\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 <SnackbarRenderer />\n </>\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </SandboxAPIContext.Provider>\n </SnackbarContext.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} 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 enrichEntityWithDataTenant\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(enrichEntityWithDataTenant(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","theme","display","flexDirection","basicView","BasicView","forwardRef","ref","children","otherProps","Paper","displayName","propTypes","PropTypes","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","removeIgnoredItems","isImplementedItem","isValidActivityType","includes","filteredItems","length","console","error","reject","itemsTotal","splitActivityByType","propOr","groupBy","ifElse","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","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","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","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","content","position","overflow","flexGrow","pagination","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","isEditableMode","pivotingAttributes","hasValues","PivotingAttributeContext","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","ui","getRequestErrorMessage","useImportFromDTLoader","oneTenant","labelOnButton","indexOf","CloudDownloadIcon","DropDownMenuButton","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","menuItems","ConfirmationDialog","discardCaption","saveCaption","onDiscard","onSave","total","changeSearchQuery","tooltip","tooltipContent","secondaryLabel","progress","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","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","autosizing","maxHeight","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","resizeDebounceDelay","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","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","Order","ComponentStates","ResizableStubView","withResizableHandle","ResizableProfileAttributesView","AttributesView","excludeUris","includeUris","attributesCount","pinnedAttributes","ResizableProfileSingleAttributeView","singleAttribute","setShowInactive","useSingleAttribute","ResizableProfileTableAttributeView","tableAttribute","initialState","useReducer","requestFilters","mdmFilters","columnFilter","columnFilterToMdmFilter","buildMDMFilters","changePage","toggleSort","changeFilter","toggleFilters","changeColumns","useActions","useTableAttribute","ResizableProfileRelationsView","relationsState","Number","setSortOrder","setSortOption","useRelationsState","ResizableCustomView","basicViewRef","dialogRef","showModal","setShowModal","defaultTooltip","html","visible","updatedTooltip","popup","useAPI","innerHTML","from","childNodes","child","appendChild","Dialog","ResizableHierarchyPathView","treeData","setTreeData","graphUri","forest","newTrees","updateTreesWithNewEntity","updatedTime","getPathsTree","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","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","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","nestedRoute","savedStateKey","isLoaded","savedState","updateSavedState","useSavedStateForEntityType","setLayout","setViews","configHash","hash","isHistoryActive","getProfileObjectIdsForCollaboration","collaboration","useCollaboration","emptyCollaboration","useUsers","workflowTasks","useWorkflowTasks","workflow","useHistorySlice","historyDiff","useHistoryDiff","keywordValue","isConfigChanged","fixedViews","fixedLayout","fixNonUniqViewsIds","sidePanelViews","scrollTop","isValidateReadMode","isDTEntity","profileViews","hasProfileViews","validate","needDispatch","useProfileValidation","handleLayoutChange","boundariesElement","popupBoundariesValue","element","priority","ProfilePerspectiveViewContext","UsersContext","SearchValueContext","profileBand","PopupBoundariesContext","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","EMPTY_STATE_VARIANTS","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","onResize","qxSandboxApi","getSavedStatePromisified","promisifyCallback","SnackbarRenderer","showSnackbarMessage","useSnackbar","processedConfig","convertOldProfileConfig","SnackbarContext","S","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","enrichEntityWithDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","json","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","onChangeRowsPerPage"],"sourceRoot":""}