@reltio/remotes 1.4.1365 → 1.4.1367

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/1920.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"1920.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/HOCs/withAsyncMount/withAsyncMount.js","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/styles.ts","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/ArrowExpandButton.tsx","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/BasicViewHeader.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/utils/index.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/CommentTarget.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/CommentContent.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/Avatar.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/TextFieldWithMentions.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/SendMessageArea.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/Comment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/RepliedComment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CollaborationItem.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/styles.ts","webpack://@reltio/remotes/../components/src/icons/CommentBubble.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/styles.ts","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/CommentButton.tsx","webpack://@reltio/remotes/../components/src/icons/AddComment.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/AddCommentButton.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/CollaborationPopup.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/CommentsContainer.tsx","webpack://@reltio/remotes/../components/src/components/DragAndDrop/DragAndDrop.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/styles.ts","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/DropDownMenuButton.tsx","webpack://@reltio/remotes/../components/src/components/EntityAvatar/EntityAvatar.tsx","webpack://@reltio/remotes/../components/src/components/EntityAvatar/no-photo.svg.ts","webpack://@reltio/remotes/../components/src/components/EntityTypeIcon/EntityTypeIcon.js","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorMessage.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorWrapper.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/styles.ts","webpack://@reltio/remotes/../components/src/icons/DefaultImage.tsx","webpack://@reltio/remotes/../components/src/components/Image/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/Image.tsx","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/CheckedIcon.tsx","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/ImageActionsOverlay.tsx","webpack://@reltio/remotes/../components/src/icons/Details.tsx","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/ImageGalleryDialog.tsx","webpack://@reltio/remotes/../components/src/components/InternalLink/styles.ts","webpack://@reltio/remotes/../components/src/components/InternalLink/InternalLink.tsx","webpack://@reltio/remotes/../components/src/components/LinearLoadIndicator/styles.ts","webpack://@reltio/remotes/../components/src/components/LinearLoadIndicator/LinearLoadIndicator.tsx","webpack://@reltio/remotes/../components/src/components/ModeSwitcher/styles.ts","webpack://@reltio/remotes/../components/src/components/ModeSwitcher/ModeSwitcher.tsx","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/styles.ts","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/PopupWithArrow.tsx","webpack://@reltio/remotes/../components/src/components/SearchInput/SearchInput.tsx","webpack://@reltio/remotes/../components/src/components/SearchInput/styles.ts","webpack://@reltio/remotes/../components/src/components/SelectionPopup/SelectionPopup.tsx","webpack://@reltio/remotes/../components/src/components/SelectionPopup/helpers.ts","webpack://@reltio/remotes/../components/src/components/SelectionPopup/styles.js","webpack://@reltio/remotes/../components/src/components/Title/styles.ts","webpack://@reltio/remotes/../components/src/components/Title/Title.tsx","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/styles.js","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/VirtualGroupedList.js","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/helpers.js","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/BranchDecorator.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/Thumbnails.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/ImageDetailsViewCarousel.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/constants/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/MetaInfoHeader.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/MetaInfoItem.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoList.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/MetaInfoForm.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/hooks/useEditMetaInfo.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/theme/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfo/MetaInfo.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/ImageDetailsViewSidebar.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/GalleryView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/HeaderLeft.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/HeaderRight.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/ImageAttributesGallery.tsx","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/helpers/imageAttributes.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/constants.ts","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/OvIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/helpers.ts","webpack://@reltio/remotes/../components/src/icons/PivotingIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltipContent.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltip.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/AttributesList.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/CardinalityMessage.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/utils.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributeRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/EntityCreator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/EntityOption.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/SingleValue.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/ClearIndicator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/Group.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/EntitySelector.js","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/ImageByUrlField.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/constants/index.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/SelectImageButton/SelectImageButton.tsx","webpack://@reltio/remotes/../components/src/icons/UploadIcon.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/TargetBox.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/DividerWithText.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/ErrorSnackbar.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/UploadImageDialog.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/useMoreAttributesItems.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/MoreAttributesButton.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/parents.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/cache.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/SimpleAttributeEditor.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/getDependentLookupEditorContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/missedParentsMessage.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/utils.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/HasDeletionsContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/PinnedAttributesContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/helpers/attributesView.ts","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowLess.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowMore.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesList/AttributesList.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/OneLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/MultiLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/SpecialAttributesArray.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Role.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tag.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/cross.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/SimpleAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/helpers/commonStyles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/helpers/historyAppearance.ts","webpack://@reltio/remotes/../components/src/constants/attributes.ts","webpack://@reltio/remotes/../components/src/constants/classnames.ts","webpack://@reltio/remotes/../components/src/contexts/AsyncMountContext/index.js","webpack://@reltio/remotes/../components/src/contexts/BlockImageGalleryDialogContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/CollaborationContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntitiesMapContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntityContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HighlightedValuesContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HistoryAppearanceContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/PivotingAttributeContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/RelatedObjectUrisContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/UsersContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useAsyncMount.js","webpack://@reltio/remotes/../components/src/icons/Download.tsx"],"sourcesContent":["import React, {forwardRef} from 'react';\nimport {useAsyncMount} from '../../hooks/useAsyncMount';\n\nconst withAsyncMount = (Component, PlaceholderComponent = null) => {\n const WithAsyncMount = forwardRef((componentProps, ref) => {\n const shouldMount = useAsyncMount();\n return shouldMount ? (\n <Component {...componentProps} ref={ref} />\n ) : (\n PlaceholderComponent && <PlaceholderComponent {...componentProps} ref={ref} />\n );\n });\n\n WithAsyncMount.displayName = 'WithAsyncMount';\n return WithAsyncMount;\n};\n\nexport default withAsyncMount;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n expandButton: {\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n expandIcon: {\n transition: 'transform .15s ease'\n },\n expanded: {\n transform: 'rotate(90deg)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport SmallIconButton from '../SmallIconButton/SmallIconButton';\nimport ArrowRight from '@material-ui/icons/ArrowRight';\nimport {IconButtonProps} from '@material-ui/core/IconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n expanded: boolean;\n className?: string;\n} & Omit<IconButtonProps, 'size'>;\n\nconst ArrowExpandButton = (props: Props) => {\n const styles = useStyles();\n const {expanded, className, ...otherProps} = props;\n return (\n <SmallIconButton\n icon={ArrowRight}\n size=\"XXS\"\n disableRipple\n iconClassName={classnames(styles.expandIcon, {[styles.expanded]: expanded})}\n className={classnames(className, styles.expandButton)}\n {...otherProps}\n />\n );\n};\n\nexport default ArrowExpandButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n toolbar: {\n minHeight: '48px',\n padding: '8px 24px',\n lineHeight: '28px'\n },\n title: {\n fontSize: '18px',\n fontWeight: 'normal',\n lineHeight: 'inherit',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n});\n","import React from 'react';\nimport Toolbar, {ToolbarProps} from '@material-ui/core/Toolbar';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = ToolbarProps & {\n title?: string;\n classes?: Partial<Record<'root' | 'title', string>>;\n};\n\nconst BasicViewHeader = ({title, children = null, classes = {}, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={classes.root} classes={{root: styles.toolbar}} {...otherProps}>\n <Typography className={classes.title} classes={{root: styles.title}} variant=\"h6\">\n {title}\n </Typography>\n {children}\n </Toolbar>\n );\n};\n\nexport default BasicViewHeader;\n","import i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\n\nexport const getAbbreviationFromUserName = (username: string) =>\n username\n .split('.')\n .map((item) => item[0].toUpperCase())\n .join('');\n\nexport const getRelatedEntityUri = (comment: Pick<Comment, 'relatedObjectUris'>, entityUri: string) => {\n const index = comment.relatedObjectUris.indexOf(entityUri);\n if (index >= 0) return comment.relatedObjectUris[1 - index];\n};\n\nexport const formatDate = (time: number) => `${i18n.date(time, 'LT')} ${i18n.date(time, 'LL')}`;\n\nexport const processMentions = (\n text: string,\n mentions: string[],\n processor: (mention: string) => unknown = (value) => value,\n trigger = '+'\n) => {\n const arr = [];\n let currentStr = '';\n let process = false;\n\n for (let i = 0; i <= text.length; i++) {\n const currentCharacter = text[i];\n const nextCharacter = text[i + 1];\n const isLastCharacter = i === text.length - 1;\n\n currentStr += currentCharacter;\n\n if (currentCharacter === trigger && i === 0) {\n process = true;\n }\n if (process && mentions.includes(currentStr.slice(trigger.length))) {\n process = false;\n arr.push(processor(currentStr));\n currentStr = '';\n }\n\n if (nextCharacter === trigger) {\n process = true;\n arr.push(currentStr);\n currentStr = '';\n }\n\n if (isLastCharacter) {\n arr.push(currentStr);\n }\n }\n\n return arr;\n};\n\nexport const createNewCommentUri = () => 'comment/new';\nexport const createNewReplyUri = (comment: Pick<Comment, 'commentId'>) => `comment/${comment.commentId}/reply/new`;\nexport const createEditedCommentUri = (comment: Pick<Comment, 'commentId'>) => `comment/${comment.commentId}`;\nexport const createEditedReplyUri = (comment: Pick<Comment, 'commentId'>, reply: Pick<Reply, 'replyId'>) =>\n `comment/${comment.commentId}/reply/${reply.replyId}`;\n\ntype CreateCommentUriProps = {\n comment: Pick<Comment, 'commentId'> | null;\n reply: Pick<Reply, 'replyId'> | null;\n isEditingReply: boolean;\n isEditingComment: boolean;\n};\n\nexport const createCommentUri = ({comment, reply, isEditingComment, isEditingReply}: CreateCommentUriProps) => {\n if (isNil(comment)) {\n return createNewCommentUri();\n }\n if (isEditingComment) {\n return createEditedCommentUri(comment);\n }\n if (isEditingReply) {\n return createEditedReplyUri(comment, reply);\n }\n return createNewReplyUri(comment);\n};\n\nexport const transformPlainTextValueToValueWithMentions = (plainTextValue: string, mentions: string[]) => {\n let value = plainTextValue;\n for (const mention of mentions) {\n value = value.split(`+${mention}`).join(`@[${mention}](${mention})`);\n }\n return value;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n title: {\n marginBottom: '10px',\n color: theme.palette.divider,\n fontSize: '12px',\n lineHeight: '14px'\n },\n label: {\n paddingLeft: '9px',\n borderLeft: '1px solid #D8D8D8',\n fontSize: '13px',\n color: theme.palette.text.primary,\n lineHeight: '15px'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {startsWith} from 'ramda';\nimport mdm from '@reltio/mdm-module';\nimport {Comment, Entity, CollaborationObjectTypes} from '@reltio/mdm-sdk';\nimport {\n findAttributeTypeByUri,\n getLabel,\n getEntityUriForLink,\n getEntityId,\n getAttributeTypeUriByValueUri\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {EntitiesMapContext} from '../../../contexts';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport {getRelatedEntityUri} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n comment: Pick<Comment, 'objectType' | 'objectId' | 'relatedObjectUris'>;\n className?: string;\n};\n\nexport const CommentTarget = ({comment, className}: Props) => {\n const styles = useStyles();\n\n const entity = useSelector(mdm.selectors.getEntity) as Entity;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const entitiesMap = useContext(EntitiesMapContext);\n\n const getContent = () => {\n switch (comment.objectType) {\n case CollaborationObjectTypes.ENTITY_ATTRIBUTE: {\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, entity.type);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION_ATTRIBUTE: {\n const relationTypeUri = comment.relatedObjectUris.find(startsWith('configuration/relationTypes'));\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, relationTypeUri);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.ENTITY: {\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected profile:')}</Typography>\n <EntityUriLink\n className={classnames(styles.label, styles.link)}\n value={getEntityUriForLink(entity)}\n >\n {getLabel(entity.label)}\n </EntityUriLink>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n ...(entitiesMap[relatedEntityUri] || {}),\n uri: relatedEntityUri\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected relation:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {relatedEntityUri && (\n <>\n {` ${i18n.text('to')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n case CollaborationObjectTypes.POTENTIAL_MATCH: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n uri: relatedEntityUri,\n label: entitiesMap[relatedEntityUri]?.label\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected potential match:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n\n {relatedEntityUri && (\n <>\n {` ${i18n.text('and')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n default: {\n return null;\n }\n }\n };\n\n return <Box className={className}>{getContent()}</Box>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n wordBreak: 'break-word'\n }\n}));\n","import React, {Fragment, useContext} from 'react';\nimport classnames from 'classnames';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport {UsersContext} from '../../../contexts';\nimport {processMentions} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n comment: Pick<Comment, 'content' | 'namedUsers'>;\n};\n\nexport const CommentContent = ({comment, className}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n return (\n <Typography className={classnames(styles.root, className)}>\n {processMentions(comment.content, comment.namedUsers, (mention) => {\n const user = users.find((user) => user.username === mention.slice(1));\n return user ? <Link href={`mailto:${user.email}`}>{mention}</Link> : mention;\n }).map((el, idx) => (\n <Fragment key={idx}>{el}</Fragment>\n ))}\n </Typography>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '32px',\n height: '32px',\n fontSize: '12px',\n color: theme.palette.text.secondary,\n backgroundColor: 'rgba(144, 164, 174, 0.2)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport MUIAvatar, {AvatarProps} from '@material-ui/core/Avatar';\nimport {getAbbreviationFromUserName} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = Omit<AvatarProps, 'children'> & {\n children: string;\n};\n\nexport const Avatar = ({className, children, ...props}: Props) => {\n const styles = useStyles();\n return (\n <MUIAvatar {...props} className={classnames(styles.root, className)}>\n {getAbbreviationFromUserName(children)}\n </MUIAvatar>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n backgroundColor: '#fff',\n fontFamily: 'Roboto',\n '&__control': {\n fontSize: '13px'\n },\n '&__highlighter': {\n padding: '10px 22px',\n border: '1px solid transparent !important'\n },\n '&__input': {\n borderRadius: '2px',\n border: '1px solid rgba(0,0,0,0.12)',\n padding: '10px 22px',\n outline: 0,\n overflow: 'auto !important'\n },\n '&__suggestions': {\n padding: '8px 0',\n borderRadius: '4px',\n backgroundColor: '#fafafa !important',\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2)',\n transform: 'translateY(-100%)'\n },\n '&__suggestions__list': {\n maxHeight: '200px',\n overflowY: 'scroll'\n },\n '&__suggestions__item': {\n padding: '6px 12px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n transition: theme.transitions.create(['background-color']),\n '&:hover, &--focused': {\n backgroundColor: 'rgba(0,0,0,0.04)'\n }\n }\n },\n mention: {\n position: 'relative',\n zIndex: 1,\n color: theme.palette.primary.main,\n textShadow: '1px 1px 1px white, 1px -1px 1px white, -1px 1px 1px white, -1px -1px 1px white',\n pointerEvents: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {uniq} from 'ramda';\nimport {MentionsInput, Mention, MentionsInputProps, MentionItem} from 'react-mentions';\nimport {UsersContext} from '../../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = Omit<MentionsInputProps, 'children' | 'onChange'> & {\n onChange?: (value: string, plainTextValue: string, mentions: string[]) => void;\n};\n\nexport const TextFieldWithMentions = ({onChange, className, ...props}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n const handleChange = (\n _: React.ChangeEvent<HTMLInputElement>,\n value: string,\n plainTextValue: string,\n mentions: MentionItem[]\n ) => {\n onChange(value, plainTextValue, uniq(mentions.map(({display}) => display.slice(1))));\n };\n\n return (\n <MentionsInput {...props} onChange={handleChange} className={classnames(styles.root, className)}>\n <Mention\n trigger=\"+\"\n data={users.map(({username}) => ({id: username, display: username}))}\n displayTransform={(_, username) => `+${username}`}\n appendSpaceOnAdd={true}\n className={styles.mention}\n />\n </MentionsInput>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n isEditing?: boolean;\n};\n\nexport const useStyles = makeStyles({\n root: ({isEditing}: StylesProps) => ({\n padding: isEditing ? '6px 6px 6px 0' : ' 6px 6px 6px 8px',\n borderRadius: '4px',\n backgroundColor: isEditing ? 'transparent' : 'rgba(0,114,206,0.06)'\n }),\n textField: ({isEditing}: StylesProps) => ({\n maxWidth: isEditing ? '100%' : 'calc(100% - 40px)'\n }),\n form: {\n marginBottom: 0\n },\n main: {\n display: 'flex',\n alignItems: 'center'\n },\n avatar: {\n marginRight: '8px'\n },\n buttons: ({isEditing}: StylesProps) => ({marginLeft: isEditing ? '0' : '40px', marginTop: '8px'}),\n button: {\n '& + $button': {\n marginLeft: '8px'\n }\n }\n});\n","import React, {useState, useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {always, cond, T} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {TextFieldWithMentions} from '../TextFieldWithMentions/TextFieldWithMentions';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {createCommentUri, transformPlainTextValueToValueWithMentions} from '../utils';\nimport {useStyles} from './styles';\n\ntype Status = Comment['status'];\n\ntype Props = {\n inputRef: React.RefObject<HTMLInputElement>;\n className?: string;\n uri: string;\n objectType?: Comment['objectType'];\n relatedObjectUris?: Comment['relatedObjectUris'];\n popperRef?: React.RefObject<any>;\n comment?: Comment;\n reply?: Pick<Reply, 'content' | 'replyId' | 'namedUsers'>;\n isEditingComment?: boolean;\n isEditingReply?: boolean;\n onCancel?: () => void;\n};\n\nconst getPlaceholder = (status?: Status) => {\n switch (status) {\n case 'open':\n return i18n.text('Reply...');\n case 'resolved':\n return i18n.text('Adding a comment will re-open this');\n default:\n return '';\n }\n};\n\nconst getButtonText = (status?: Status, isEditingComment?: boolean, isEditingReply?: boolean) => {\n if (isEditingComment || isEditingReply) {\n return i18n.text('Edit');\n }\n if (status === 'open' || status === 'resolved') {\n return i18n.text('Reply');\n }\n\n return i18n.text('Comment');\n};\n\ntype GetDefaultCommentState = {\n comment: Comment;\n reply: Pick<Reply, 'content' | 'namedUsers'>;\n isEditingComment: boolean;\n isEditingReply: boolean;\n};\n\nconst getDefaultCommentState = ({comment, reply, isEditingComment, isEditingReply}: GetDefaultCommentState) => {\n const commentOrReply = isEditingComment ? comment : isEditingReply ? reply : null;\n const {content: plainTextValue = '', namedUsers: mentions = []} = commentOrReply || {};\n return {\n value: transformPlainTextValueToValueWithMentions(plainTextValue, mentions),\n plainTextValue,\n mentions\n };\n};\n\nexport const SendMessageArea = ({\n inputRef,\n className,\n uri,\n relatedObjectUris,\n objectType,\n popperRef,\n comment,\n reply,\n isEditingComment,\n isEditingReply,\n onCancel\n}: Props) => {\n const isEditing = isEditingComment || isEditingReply;\n const styles = useStyles({isEditing});\n\n const [focused, setFocused] = useState(false);\n const username = useSelector(mdm.selectors.getUserName) as string;\n const {\n createReply,\n createComment,\n sending,\n editComment,\n editReply,\n getCommentState,\n updateCommentState,\n clearCommentState\n } = useContext(CollaborationContext);\n\n const commentUri = createCommentUri({comment, reply, isEditingComment, isEditingReply});\n const defaultCommentState = getDefaultCommentState({comment, reply, isEditingComment, isEditingReply});\n const {\n value = defaultCommentState.value,\n plainTextValue = defaultCommentState.plainTextValue,\n mentions = defaultCommentState.mentions\n } = getCommentState(uri, commentUri);\n\n const hasValue = value.trim() !== '';\n const shouldShowButtons = focused || hasValue;\n const status = comment?.status;\n\n const clearValue = () => {\n onCancel?.();\n clearCommentState(uri, commentUri);\n };\n\n const handleChange = (value: string, plainTextValue: string, mentions: string[]) =>\n updateCommentState(uri, commentUri, {value, plainTextValue, mentions});\n const handleCancel = () => clearValue();\n const handleFocus = () => setFocused(true);\n const handleBlur = () => setFocused(false);\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const request = cond([\n [\n always(!comment),\n () =>\n createComment({\n content: plainTextValue,\n namedUsers: mentions,\n objectType: objectType,\n uri,\n relatedObjectUris\n })\n ],\n [\n always(isEditingComment),\n () =>\n editComment({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n objectType: objectType,\n replies: comment.replies,\n relatedObjectUris,\n uri\n })\n ],\n [\n always(isEditingReply),\n () =>\n editReply({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n replyId: reply.replyId\n })\n ],\n [\n T,\n () =>\n createReply({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n action: comment.status === 'open' ? 'none' : 'reopen',\n uri\n })\n ]\n ]);\n return request().then(clearValue).catch(console.log); //eslint-disable-line no-console\n };\n\n useEffect(() => {\n if (popperRef) {\n popperRef.current.update();\n }\n }, [popperRef, shouldShowButtons]);\n\n const buttonSize = isEditing ? 'small' : 'medium';\n\n return (\n <Box className={classnames(styles.root, className)}>\n <form onSubmit={handleSubmit} className={styles.form}>\n <Box className={styles.main}>\n {!isEditing && <Avatar classes={{root: styles.avatar}}>{username}</Avatar>}\n <TextFieldWithMentions\n className={styles.textField}\n disabled={sending}\n onChange={handleChange}\n inputRef={inputRef}\n value={value}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={getPlaceholder(status)}\n />\n </Box>\n {shouldShowButtons && (\n <Box className={styles.buttons}>\n <Button\n className={styles.button}\n variant=\"contained\"\n color=\"primary\"\n disabled={!hasValue || sending}\n type=\"submit\"\n size={buttonSize}\n >\n {getButtonText(status, isEditingComment, isEditingReply)}\n </Button>\n <Button\n disabled={sending}\n onClick={handleCancel}\n className={styles.button}\n variant=\"outlined\"\n color=\"primary\"\n size={buttonSize}\n >\n {i18n.text('Cancel')}\n </Button>\n </Box>\n )}\n </form>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n display: 'flex'\n },\n avatar: {\n marginRight: '8px'\n },\n username: {\n marginBottom: '1px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n createdAt: {\n marginTop: '3px',\n marginRight: '4px',\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n body: {\n marginLeft: '40px'\n },\n commentTarget: {\n marginTop: '-15px'\n },\n message: {\n marginTop: '12px'\n },\n dropdownMenu: {\n zIndex: '3000 !important' as any\n },\n buttons: {\n marginTop: '15px',\n marginBottom: '12px',\n display: 'flex',\n\n '& $button + $button': {\n marginLeft: '10px'\n }\n },\n button: {\n fontSize: '13px',\n lineHeight: '15px'\n }\n}));\n","import React, {useMemo, useContext, useRef, useEffect, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {CommentTarget} from '../CommentTarget/CommentTarget';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {createEditedCommentUri, formatDate} from '../utils';\nimport {SendMessageArea} from '../SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Props = {\n uri: string;\n onReply: () => void;\n className?: string;\n comment: CommentType;\n relatedObjectUris: CommentType['relatedObjectUris'];\n objectType: CommentType['objectType'];\n};\n\nexport const Comment = ({onReply, className, uri, comment, relatedObjectUris, objectType}: Props) => {\n const styles = useStyles();\n const inputRef = useRef<HTMLInputElement>();\n const username: string = useSelector(mdm.selectors.getUserName);\n const {commentId, createdBy, createdTime} = comment;\n const canChangeComment = createdBy === username;\n const {resolveThread, reOpenThread, sending, deleteComment, updateCommentState, getCommentState} =\n useContext(CollaborationContext);\n\n const commentUri = createEditedCommentUri(comment);\n const {isEditing} = getCommentState(uri, commentUri);\n\n const updateIsEditingComment = useCallback(\n (value: boolean) => updateCommentState(uri, commentUri, {isEditing: value}),\n [commentUri, updateCommentState, uri]\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current.focus();\n }\n }, [isEditing]);\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => updateIsEditingComment(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteComment({uri, commentId})\n }\n ],\n [deleteComment, uri, commentId, updateIsEditingComment]\n );\n\n const handleResolve = () => {\n resolveThread({commentId, uri});\n };\n\n const handleReOpen = () => {\n reOpenThread({commentId, uri});\n };\n const sendMessageArea = (\n <SendMessageArea\n inputRef={inputRef}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n onCancel={() => updateIsEditingComment(false)}\n isEditingComment={isEditing}\n comment={comment}\n />\n );\n return (\n <Box className={className}>\n <Box className={styles.header}>\n <Avatar classes={{root: styles.avatar}}>{createdBy}</Avatar>\n <Box width=\"100%\">\n <Typography className={styles.username}>{createdBy}</Typography>\n </Box>\n <Typography className={styles.createdAt}>{formatDate(createdTime)}</Typography>\n {canChangeComment && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n tooltipTitle: i18n.text('Open menu')\n }}\n popoverProps={{PopoverClasses: {root: styles.dropdownMenu}}}\n menuItems={menuItems}\n menuId=\"collaboration-comment-menu\"\n />\n )}\n </Box>\n <Box className={styles.body}>\n <CommentTarget comment={comment} className={styles.commentTarget} />\n {isEditing ? sendMessageArea : <CommentContent comment={comment} className={styles.message} />}\n <Box className={styles.buttons}>\n <Link className={styles.button} onClick={onReply} component=\"button\">\n {i18n.text('Reply')}\n </Link>\n {comment.status === 'open' && (\n <Link disabled={sending} className={styles.button} onClick={handleResolve} component=\"button\">\n {i18n.text('Resolve')}\n </Link>\n )}\n {comment.status === 'resolved' && (\n <Link disabled={sending} className={styles.button} onClick={handleReOpen} component=\"button\">\n {i18n.text('Re-open')}\n </Link>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n padding: '8px',\n borderRadius: '4px',\n backgroundColor: 'rgba(0,114,206,0.06)'\n },\n avatar: {\n marginRight: '8px'\n },\n header: {\n display: 'flex',\n marginBottom: '8px'\n },\n username: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n message: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px'\n },\n createdAt: {\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n marked: {\n marginLeft: '8px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n fontStyle: 'italic',\n lineHeight: '15px'\n }\n}));\n","import React, {useRef, useContext, useMemo, useEffect, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Reply, Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {createEditedReplyUri, formatDate} from '../utils';\nimport {CollaborationContext} from '../../../contexts';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {SendMessageArea} from '../SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n reply: Pick<Reply, 'createdTime' | 'content' | 'createdBy' | 'action' | 'namedUsers' | 'replyId'>;\n comment?: CommentType;\n uri: string;\n popperRef?: React.RefObject<any>;\n};\n\nexport const RepliedComment = ({className, reply, uri, comment, popperRef}: Props) => {\n const inputRef = useRef<HTMLInputElement>();\n const {createdBy, action, createdTime} = reply;\n const username: string = useSelector(mdm.selectors.getUserName);\n const canChangeReply = createdBy === username;\n\n const {deleteReply, updateCommentState, getCommentState} = useContext(CollaborationContext);\n\n const commentUri = createEditedReplyUri(comment, reply);\n const {isEditing} = getCommentState(uri, commentUri);\n\n const updateIsEditingReply = useCallback(\n (value: boolean) => updateCommentState(uri, commentUri, {isEditing: value}),\n [commentUri, updateCommentState, uri]\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current.focus();\n }\n }, [isEditing]);\n\n const styles = useStyles();\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => updateIsEditingReply(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteReply({uri, commentId: comment.commentId, reply})\n }\n ],\n [deleteReply, uri, comment.commentId, reply, updateIsEditingReply]\n );\n\n const sendMessageArea = (\n <SendMessageArea\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n onCancel={() => updateIsEditingReply(false)}\n isEditingReply={isEditing}\n reply={reply}\n comment={comment}\n />\n );\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Avatar classes={{root: styles.avatar}}>{createdBy}</Avatar>\n <Box flexGrow={1}>\n <Box className={styles.header}>\n <Typography className={styles.username}>{createdBy}</Typography>\n\n {action === 'resolve' && (\n <Typography className={styles.marked}>{i18n.text('Marked as resolved')}</Typography>\n )}\n {action === 'reopen' && <Typography className={styles.marked}>{i18n.text('Re-opened')}</Typography>}\n </Box>\n {action !== 'resolve' &&\n (isEditing ? sendMessageArea : <CommentContent className={styles.message} comment={reply} />)}\n <Typography className={styles.createdAt}>{formatDate(createdTime)}</Typography>\n </Box>\n {canChangeReply && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n tooltipTitle: i18n.text('Open menu')\n }}\n menuItems={menuItems}\n menuId=\"collaboration-comment-menu\"\n />\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n maxWidth: '100%',\n padding: '8px 4px 10px 16px'\n },\n messages: {},\n repliedComment: {\n marginBottom: '2px'\n },\n replies: {\n marginLeft: '40px'\n },\n sendMessageArea: {\n marginLeft: '40px'\n },\n comment: {}\n}));\n","import React, {useRef, memo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport {Comment} from './Comment/Comment';\nimport {RepliedComment} from './RepliedComment/RepliedComment';\nimport {SendMessageArea} from './SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Classes = Partial<ReturnType<typeof useStyles>>;\n\ntype Props = {\n classes?: Classes;\n uri: string;\n relatedObjectUris: CommentType['relatedObjectUris'];\n objectType: CommentType['objectType'];\n popperRef?: React.RefObject<any>;\n messagesRef?: React.RefCallback<HTMLDivElement>;\n comment?: CommentType;\n};\n\nexport const CollaborationItem = memo(\n ({uri, relatedObjectUris, objectType, classes, popperRef, messagesRef, comment}: Props) => {\n const inputRef = useRef<HTMLInputElement>();\n const styles = useStyles({classes});\n\n const handleReply = () => {\n inputRef.current.focus();\n };\n\n const sendMessageArea = (\n <SendMessageArea\n className={styles.sendMessageArea}\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n\n return (\n <Box className={styles.root}>\n {comment && (\n <>\n <div className={styles.messages} ref={messagesRef}>\n <Comment\n comment={comment}\n uri={uri}\n onReply={handleReply}\n className={styles.comment}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n />\n <Box className={styles.replies}>\n {comment.replies.map((reply) => (\n <RepliedComment\n key={reply.replyId}\n className={styles.repliedComment}\n reply={reply}\n uri={uri}\n comment={comment}\n />\n ))}\n </Box>\n </div>\n {sendMessageArea}\n </>\n )}\n {!comment && sendMessageArea}\n </Box>\n );\n }\n);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../constants/classnames';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n alignItems: 'start'\n },\n addButton: {\n visibility: 'hidden',\n '&$showAlways': {\n visibility: 'visible'\n },\n [`.${COMMENTS_CONTAINER_VISIBILITY_AREA}:hover &`]: {\n visibility: 'visible'\n }\n },\n showAlways: {}\n}));\n","import React from 'react';\n\nconst SvgCommentBubble: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 1h14.4c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1z\" />\n </svg>\n );\n};\n\nexport default SvgCommentBubble;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative',\n height: '18px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: '4px',\n cursor: 'pointer'\n },\n icon: {\n '&:hover': {\n fillOpacity: 0.7\n }\n },\n childrenWrapper: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n lineHeight: '15px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n top: '-2px',\n left: 0,\n right: 0,\n bottom: 0,\n color: 'white',\n fontSize: '10px',\n pointerEvents: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport CommentIcon from '../../../icons/CommentBubble';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst CommentButton = React.forwardRef(({children, onClick}: Props, ref: React.Ref<HTMLDivElement>) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Show comment')}>\n <div ref={ref} className={styles.root} onClick={onClick}>\n <CommentIcon className={styles.icon} />\n <div className={styles.childrenWrapper}>{children}</div>\n </div>\n </Tooltip>\n );\n});\n\nCommentButton.displayName = 'CommentButton';\n\nexport default CommentButton;\n","import React from 'react';\n\nconst SvgAddComment: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 14.653L3.853 13.6H17.2V2.8H2.8v11.853zM17.2 1c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1h14.4zm-6.3 3.6H9.1v2.699L6.4 7.3v1.8l2.7-.001V11.8h1.8V9.099l2.7.001V7.3l-2.7-.001V4.6z\" />\n </svg>\n );\n};\n\nexport default SvgAddComment;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport AddCommentIcon from '../../../icons/AddComment';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst AddCommentButton = ({className, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Add comment')}>\n <div className={classnames(styles.root, className)} onClick={onClick}>\n <AddCommentIcon className={styles.icon} />\n </div>\n </Tooltip>\n );\n};\n\nexport default AddCommentButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Props = {\n scrollWidth: number;\n hasScroll: boolean;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n paddingLeft: '16px',\n paddingRight: '8px'\n },\n headerInfo: {\n marginRight: 'auto',\n display: 'flex',\n alignItems: 'center'\n },\n title: {\n marginRight: '15px',\n color: theme.palette.text.primary,\n fontSize: '16px'\n },\n counter: {\n paddingLeft: '15px',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '24px'\n },\n resolveButton: {\n zIndex: 3000,\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n popper: {\n width: '424px',\n borderRadius: '0 0 4px 4px'\n },\n collaborationItem: {\n padding: '0 0 10px 0'\n },\n comment: ({hasScroll}: Props) => ({\n marginLeft: '16px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n replies: ({hasScroll}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n sendMessageArea: ({hasScroll, scrollWidth}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? scrollWidth + 2 : '8px'\n }),\n messages: {\n maxHeight: '400px',\n overflowY: 'auto'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport DoneIcon from '@material-ui/icons/Done';\nimport {CollaborationContext} from '../../contexts';\nimport {CollaborationItem} from '../CollaborationItem/CollaborationItem';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {PopupWithArrow} from '../PopupWithArrow/PopupWithArrow';\nimport {useStyles} from './styles';\n\ntype PopupWithArrowProps = React.ComponentPropsWithoutRef<typeof PopupWithArrow>;\n\ntype Props = Pick<PopupWithArrowProps, 'open' | 'anchorEl' | 'onClose'> & {\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n comment?: Comment;\n};\n\nexport const CollaborationPopup = ({uri, relatedObjectUris, objectType, anchorEl, onClose, open, comment}: Props) => {\n const [scrollWidth, setScrollWidth] = useState(0);\n const hasScroll = scrollWidth !== 0;\n const styles = useStyles({scrollWidth, hasScroll});\n\n const popperRef = useRef(null);\n const {resolveThread, loading, sending} = useContext(CollaborationContext);\n const itemsCount = 1 + comment?.replies.length;\n\n const handleResolve = () => {\n resolveThread({commentId: comment.commentId, uri});\n };\n\n return (\n <PopupWithArrow\n popperRef={popperRef}\n anchorEl={anchorEl}\n open={open}\n placement=\"right-start\"\n onClose={onClose}\n className={styles.popper}\n >\n <Box className={styles.header}>\n <Box className={styles.headerInfo}>\n <Typography className={styles.title}>{i18n.text('Comments')}</Typography>\n {comment && !loading && (\n <Typography className={styles.counter}>\n {i18n.number(itemsCount)} {itemsCount === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n )}\n </Box>\n {comment && !loading && (\n <SmallIconButtonWithTooltip\n className={styles.resolveButton}\n size=\"S\"\n onClick={handleResolve}\n disabled={sending}\n showForDisabled={true}\n tooltipTitle={i18n.text('Resolve')}\n icon={DoneIcon}\n color=\"primary\"\n />\n )}\n </Box>\n {!loading && (\n <CollaborationItem\n popperRef={popperRef}\n messagesRef={(node) => {\n if (node) {\n setScrollWidth(node.offsetWidth - node.clientWidth);\n }\n }}\n classes={{\n root: styles.collaborationItem,\n replies: styles.replies,\n sendMessageArea: styles.sendMessageArea,\n messages: styles.messages,\n comment: styles.comment\n }}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n )}\n </PopupWithArrow>\n );\n};\n","import React, {useContext, useMemo, useState} from 'react';\nimport {CollaborationObjectTypes, Comment} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nimport {useDidUpdateEffect} from '../../hooks';\nimport {CollaborationContext, RelatedObjectUrisContext} from '../../contexts';\nimport CommentButton from './buttons/CommentButton';\nimport AddCommentButton from './buttons/AddCommentButton';\nimport {CollaborationPopup} from '../CollaborationPopup/CollaborationPopup';\n\ntype Props = {\n className?: string;\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n allowOnlyOneComment?: boolean;\n showAlways?: boolean;\n onChangePopupVisibility?: (visibility: boolean) => void;\n};\n\nconst CommentsContainer = ({\n className,\n uri,\n objectType,\n relatedObjectUris,\n onChangePopupVisibility,\n allowOnlyOneComment = false,\n showAlways = false\n}: Props) => {\n const styles = useStyles();\n\n const [anchorEl, setAnchorEl] = useState<HTMLDivElement | null>(null);\n const [shouldOpenPopup, setShouldOpenPopup] = useState<boolean>(false);\n const isOpenPopup = shouldOpenPopup && Boolean(anchorEl);\n\n const {currentComment, commentsMap, getComment, clearCurrentComment, objectTypes} = useContext(\n CollaborationContext\n );\n const showComments =\n !!commentsMap && (!objectTypes || objectTypes.includes(objectType as CollaborationObjectTypes));\n const openComments = (commentsMap?.[uri] || []).filter(({status}) => status !== 'resolved').reverse();\n const shouldShowAddCommentButton = !allowOnlyOneComment || (allowOnlyOneComment && openComments.length === 0);\n const isOpenPopupWithNewComment = currentComment === null && isOpenPopup;\n\n const handleClickCommentButton = (commentId: string) => {\n getComment(commentId);\n setShouldOpenPopup(true);\n };\n\n const handleClickAddCommentButton = (event: React.MouseEvent<HTMLDivElement>) => {\n setAnchorEl(event.currentTarget);\n setShouldOpenPopup(true);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n clearCurrentComment();\n setShouldOpenPopup(false);\n };\n\n useDidUpdateEffect(() => {\n if (onChangePopupVisibility) {\n onChangePopupVisibility(isOpenPopup);\n }\n }, [isOpenPopup]);\n\n const additionalRelatedObjectUris = useContext(RelatedObjectUrisContext);\n const allRelatedObjectUris = useMemo(() => {\n return additionalRelatedObjectUris ? [...relatedObjectUris, ...additionalRelatedObjectUris] : relatedObjectUris;\n }, [additionalRelatedObjectUris, relatedObjectUris]);\n\n return (\n showComments && (\n <div className={classnames(styles.root, className)}>\n {shouldShowAddCommentButton && (\n <AddCommentButton\n className={classnames(styles.addButton, {\n [styles.showAlways]: showAlways || isOpenPopupWithNewComment\n })}\n onClick={handleClickAddCommentButton}\n />\n )}\n {openComments.map(({replies, commentId}) => {\n return (\n <CommentButton\n ref={commentId === currentComment?.commentId ? setAnchorEl : null}\n key={commentId}\n onClick={() => handleClickCommentButton(commentId)}\n >\n {1 + replies}\n </CommentButton>\n );\n })}\n <CollaborationPopup\n anchorEl={anchorEl}\n open={isOpenPopup}\n onClose={handleClose}\n uri={uri}\n relatedObjectUris={allRelatedObjectUris}\n objectType={objectType}\n comment={currentComment}\n />\n </div>\n )\n );\n};\n\nexport default CommentsContainer;\n","// This component fixes \"Cannot have two HTML5 backends at the same time\" error.\n// Check issue and solution https://github.com/react-dnd/react-dnd/issues/186#issuecomment-561631584\nimport {DndProvider, createDndContext} from 'react-dnd';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport React, {useRef} from 'react';\n\nconst RNDContext = createDndContext(HTML5Backend);\n\ntype Props = {\n children?: React.ReactNode;\n};\n\nconst useDNDProviderElement = (props: Props) => {\n const manager = useRef(RNDContext);\n\n if (!props.children) return null;\n\n return <DndProvider manager={manager.current.dragDropManager}>{props.children}</DndProvider>;\n};\n\nexport const DragAndDrop = (props: Props) => {\n const DNDElement = useDNDProviderElement(props);\n return <>{DNDElement}</>;\n};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n buttonRoot: {\n '&$selected': {\n color: theme.palette.action.active,\n backgroundColor: fade(theme.palette.action.active, 0.12),\n '&:hover': {\n backgroundColor: fade(theme.palette.action.active, 0.15)\n }\n }\n },\n selected: {},\n paper: {\n minWidth: '112px'\n },\n menuItem: {\n minHeight: '32px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n }\n}));\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport withTooltip from '../../HOCs/withTooltip/withTooltip';\nimport {DropDownMenuItem} from '../../types';\n\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\ntype Props = {\n item: DropDownMenuItem;\n onMenuClose?: (e) => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {disabled, text, tooltip, onClick, id = '', selectable, selected} = item;\n const handleClick = (e) => {\n onMenuClose(e);\n onClick(e);\n };\n\n return (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n data-modal\n data-reltio-id={`reltio-search-menu-item${id}`}\n >\n {selectable && <Checkbox checked={selected} color=\"primary\" />}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItemWithTooltip>\n );\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React, {useCallback, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport {identity} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport Menu, {MenuProps} from '@material-ui/core/Menu';\nimport {useDidUpdateEffect} from '../../hooks';\nimport DefaultMenuItemRenderer from './MenuItemRenderer';\nimport {useStyles} from './styles';\nimport {DropDownMenuItem} from '../../types';\n\ntype Props<T> = {\n className?: string;\n buttonComponent?: React.ElementType;\n buttonContent?: React.ReactNode;\n menuItems?: T[];\n buttonProps?: Record<string, unknown>;\n popoverProps?: Omit<MenuProps, 'open'>;\n menuId: string;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n MenuItemRenderer?: (props) => JSX.Element;\n};\n\nfunction DropDownMenuButton<T = DropDownMenuItem>({\n className,\n menuId,\n buttonComponent = Button,\n buttonContent,\n menuItems = [],\n buttonProps = {},\n popoverProps = {},\n onMenuOpen = identity,\n onMenuClose = identity,\n MenuItemRenderer = DefaultMenuItemRenderer\n}: Props<T>) {\n const ButtonComponent = buttonComponent;\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n useDidUpdateEffect(() => {\n isOpen ? onMenuOpen() : onMenuClose();\n }, [isOpen]);\n\n const handleToggle = useCallback((e) => {\n e?.stopPropagation();\n setIsOpen((open) => !open);\n }, []);\n\n const renderMenuItem = (item, index) => {\n return <MenuItemRenderer item={item} key={index} onMenuClose={handleToggle} />;\n };\n\n return (\n <>\n <ButtonComponent\n ref={buttonRef}\n className={classnames(\n styles.buttonRoot,\n {\n [styles.selected]: isOpen\n },\n className\n )}\n onClick={handleToggle}\n aria-pressed={isOpen}\n aria-controls={isOpen ? menuId : undefined}\n aria-haspopup=\"true\"\n {...buttonProps}\n >\n {buttonContent}\n </ButtonComponent>\n <Menu\n id={menuId}\n variant=\"menu\"\n open={isOpen}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={buttonRef.current}\n onClose={handleToggle}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{autoFocusItem: isOpen}}\n {...popoverProps}\n >\n {menuItems.map(renderMenuItem)}\n </Menu>\n </>\n );\n}\n\nDropDownMenuButton.displayName = 'DropDownMenuButton';\n\nexport default DropDownMenuButton;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\n\nimport {Avatar as Avatar} from '@material-ui/core';\nimport {DEFAULT_PROFILE_IMAGE} from './no-photo.svg';\nimport {getEntityImage, getEntityTypeImage, getAbsoluteImageUrl, Entity, svg2Url} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entity: Entity;\n avatarClassName?: string;\n imageClassName?: string;\n};\n\nconst EntityAvatar = ({entity, avatarClassName, imageClassName}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const absoluteImagePath = useSelector(mdmModule.selectors.getAbsoluteImagePath) || '';\n const entityImageSource = getEntityImage(metadata, absoluteImagePath, entity);\n const fallbackImage = getAbsoluteImageUrl(absoluteImagePath, getEntityTypeImage(metadata, entity.type));\n const onImageLoadFail = (e) => {\n e.target.onError = null;\n e.target.src = svg2Url(DEFAULT_PROFILE_IMAGE);\n };\n return (\n <Avatar\n className={classnames(avatarClassName, imageClassName)}\n src={entityImageSource}\n imgProps={{onError: onImageLoadFail}}\n >\n <img\n className={imageClassName}\n src={fallbackImage}\n alt=\"fallback entity avatar\"\n onError={onImageLoadFail}\n />\n </Avatar>\n );\n};\n\nexport default EntityAvatar;\n","export const DEFAULT_PROFILE_IMAGE = `\n<svg width=\"400px\" height=\"400px\" viewBox=\"0 0 400 400\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Group</title>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Group\" fill-rule=\"nonzero\">\n <rect id=\"Rectangle\" fill=\"#DFE5E9\" x=\"0\" y=\"0\" width=\"400\" height=\"400\"></rect>\n <path d=\"M0,387.023257 L0,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 0,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n <path d=\"M0,387.023257 L0,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 0,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n <path d=\"M5.68434189e-14,387.023257 L5.68434189e-14,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 5.68434189e-14,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n </g>\n </g>\n</svg>\n`;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport mdmModule from '@reltio/mdm-module';\nimport RC_EntityTypeIcon from 'react-components/dist/EntityTypeIcon/EntityTypeIcon';\n\nconst ensureSlashEnding = (str) => (str.endsWith('/') ? str : str + '/');\n\nconst EntityTypeIcon = (props) => {\n const absoluteImagePath = useSelector(mdmModule.selectors.getAbsoluteImagePath) || '';\n return <RC_EntityTypeIcon {...props} storagePath={ensureSlashEnding(absoluteImagePath)} />;\n};\n\nexport default EntityTypeIcon;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n message?: string;\n className?: string;\n};\n\nconst ErrorMessage = ({className, message}: Props) => {\n const styles = useStyles();\n if (!message) {\n return null;\n }\n\n return (\n <Typography variant=\"caption\" className={classnames(styles.caption, className)}>\n {message}\n </Typography>\n );\n};\n\nexport default ErrorMessage;\n","import classnames from 'classnames';\nimport ErrorMessage from './ErrorMessage';\nimport FormControl, {FormControlProps} from '@material-ui/core/FormControl';\nimport {FormHelperText as FormHelperText} from '@material-ui/core';\nimport React, {memo} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = FormControlProps & {\n errorMessage?: string;\n classes?: {\n root: string;\n helperText: string;\n };\n};\n\nconst ErrorWrapper = ({errorMessage, children, className, classes, ...otherProps}: Props) => {\n const styles = useStyles();\n const hasError = !!errorMessage;\n\n return (\n <FormControl className={classnames(styles.wrapper, className, classes?.root)} error {...otherProps}>\n {children}\n {hasError && (\n <FormHelperText className={classnames(styles.helperText, classes?.helperText)}>\n <ErrorMessage message={errorMessage} />\n </FormHelperText>\n )}\n </FormControl>\n );\n};\n\nexport default memo(ErrorWrapper);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n helperText: {\n margin: '3px 0 1px 12px'\n },\n caption: {\n display: 'flex',\n color: theme.palette.error.main,\n fontSize: '12px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\n\nconst SvgDefaultImage: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <path d=\"M0 0h24v24H0z\" />\n <path\n d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zm-4.5-9l2.5 3.096V18H5l4.5-5.5 2.5 3.01L16.5 10zm-8-4a1.5 1.5 0 110 3 1.5 1.5 0 010-3z\"\n fillOpacity={0.12}\n fill=\"#000\"\n fillRule=\"nonzero\"\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDefaultImage;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\nimport {ImageSizeType} from './Image';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative'\n },\n image: ({imageWidth, imageHeight}: ImageSizeType) => ({\n width: imageWidth,\n height: imageHeight,\n objectFit: 'cover',\n verticalAlign: 'bottom'\n }),\n defaultContainer: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: 'rgb(247, 247, 247)'\n },\n defaultImage: {\n width: '40px',\n height: '40px',\n marginLeft: 'auto',\n marginRight: 'auto',\n color: theme.palette.text.secondary\n },\n hideImage: {\n display: 'none'\n }\n}));\n","import React, {memo, useState, useEffect} from 'react';\nimport classnames from 'classnames';\nimport NotAvailableImage from '@material-ui/icons/BrokenImage';\nimport DefaultImage from '../../icons/DefaultImage';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst ImageLoadingState = {\n LOADING: 'loading',\n LOADED: 'loaded',\n ERROR: 'error'\n};\n\nexport const ImageSizesStyles = {\n SMALL: {\n imageWidth: 114,\n imageHeight: 114\n },\n MEDIUM: {\n imageWidth: 162,\n imageHeight: 162\n },\n LARGE: {\n imageWidth: 192,\n imageHeight: 192\n },\n OVERRIDE: {\n imageWidth: 'unset',\n imageHeight: 'unset'\n }\n};\n\nexport type ImageSizeType = {\n imageWidth: number | string;\n imageHeight: number | string;\n};\n\ntype Props = {\n src: string;\n className?: string;\n containerClassName?: string;\n size?: ImageSizeType;\n overlay?: React.ReactNode;\n onClick?: () => void;\n};\n\nconst Image = (props: Props) => {\n const {src, className, containerClassName, size = ImageSizesStyles.SMALL, overlay = null, ...otherProps} = props;\n\n const sizeStyles = size || ImageSizesStyles.SMALL;\n const styles = useStyles(sizeStyles);\n const [imageLoadingState, setImageLoadingState] = useState<string>(ImageLoadingState.LOADING);\n\n useEffect(() => {\n setImageLoadingState(ImageLoadingState.LOADING);\n }, [src]);\n\n const onImageLoadFail = () => {\n setImageLoadingState(ImageLoadingState.ERROR);\n };\n\n const onImageLoad = () => {\n setImageLoadingState(ImageLoadingState.LOADED);\n };\n\n const imageIsLoading = imageLoadingState === ImageLoadingState.LOADING;\n const imageIsLoaded = imageLoadingState === ImageLoadingState.LOADED;\n const imageLoadingError = imageLoadingState === ImageLoadingState.ERROR;\n\n return imageLoadingError ? (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <NotAvailableImage className={styles.defaultImage} />\n </div>\n ) : (\n <div className={classnames(styles.root, containerClassName)}>\n {!isEmptyValue(src) && (\n <img\n src={src}\n className={classnames(styles.image, className, {\n [styles.hideImage]: imageIsLoading\n })}\n onLoad={onImageLoad}\n onError={onImageLoadFail}\n alt={'image'}\n {...otherProps}\n />\n )}\n {imageIsLoading && (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <DefaultImage className={styles.defaultImage} />\n </div>\n )}\n {imageIsLoaded && overlay}\n </div>\n );\n};\n\nexport default memo(Image);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n fontSize: '24px',\n color: '#fff'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport {useStyles} from './styles';\n\ntype Props = {\n checked: boolean;\n className?: string;\n onClick: (e) => void;\n};\n\nexport const CheckedIcon = ({checked, className, onClick}: Props) => {\n const styles = useStyles();\n const Icon = checked ? CheckCircleIcon : RadioButtonUncheckedIcon;\n return <Icon className={classnames(styles.root, className)} onClick={onClick} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: '0.2s linear all',\n '&:not($selected):not($selectionMode):hover': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n },\n userSelect: 'none'\n },\n selected: {\n backgroundColor: 'rgba(0,114,206,0.6)'\n },\n selectionMode: {\n cursor: 'pointer',\n '&:not($selected)': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n }\n },\n button: {\n padding: 0,\n width: '100px',\n height: '36px',\n color: '#fff',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px',\n border: '1px solid rgba(255,255,255,0.25)',\n backgroundColor: 'rgba(98,2,238,0)'\n },\n checkedIcon: {\n position: 'absolute',\n left: '4px',\n top: '4px',\n cursor: 'pointer'\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n position: 'absolute',\n top: '4px',\n right: '4px'\n },\n actionButton: {\n color: '#fff',\n fontSize: '24px'\n },\n dropDownMenuButton: {\n margin: '0 2px 0 8px'\n }\n}));\n","import React, {memo, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {ifElse, equals, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {CheckedIcon} from '../CheckedIcon/CheckedIcon';\nimport DownloadIcon from '../../../icons/Download';\nimport {noop} from '../../../core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n id: string;\n canBeSelected?: boolean;\n selected?: boolean;\n selectionMode?: boolean;\n onDeselect?: () => void;\n onSelect?: () => void;\n onShareLink?: () => void;\n onSetAsDefault?: () => void;\n onDelete?: () => void;\n onDownload?: () => void;\n onClick?: () => void;\n};\n\nconst ImageActionsOverlay = (props: Props) => {\n const {\n id,\n canBeSelected = false,\n selected = false,\n selectionMode = false,\n onDeselect = noop,\n onSelect = noop,\n onShareLink,\n onSetAsDefault,\n onDelete,\n onDownload = noop,\n onClick\n } = props;\n\n const styles = useStyles();\n const [hovered, setHovered] = useState<boolean>(false);\n\n const menuItems = useMemo(\n () =>\n [\n {\n text: i18n.text('Share link'),\n onClick: onShareLink\n },\n {\n text: i18n.text('Set as default'),\n onClick: onSetAsDefault\n },\n {\n text: i18n.text('Delete'),\n onClick: onDelete\n }\n ].filter(prop('onClick')),\n [onShareLink, onSetAsDefault, onDelete]\n );\n\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n const toggleSelected = (selected: boolean) => () => ifElse(equals(true), onDeselect, onSelect)(selected);\n\n const showCheckBox = canBeSelected && (selected || hovered || selectionMode);\n const showActions = !selectionMode && !selected && hovered;\n const showDeselectButton = canBeSelected && selected;\n\n const handleClick = (event) => {\n if (event.currentTarget === event.target) onClick();\n };\n\n return (\n <div\n className={classnames(styles.overlay, {\n [styles.selected]: selected,\n [styles.selectionMode]: selectionMode\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={selectionMode ? toggleSelected(selected) : handleClick}\n >\n {showCheckBox && (\n <CheckedIcon className={styles.checkedIcon} checked={selected} onClick={toggleSelected(selected)} />\n )}\n {showActions && (\n <div className={styles.actions}>\n <SmallIconButton onClick={onDownload} className={styles.actionButton} icon={DownloadIcon} />\n <DropDownMenuButton\n menuId={`image-overlay-actions-${id}`}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n className: classnames(styles.actionButton, styles.dropDownMenuButton)\n }}\n menuItems={menuItems}\n />\n </div>\n )}\n {showDeselectButton && (\n <Button className={styles.button} variant=\"outlined\" onClick={onDeselect}>\n {i18n.text('Deselect')}\n </Button>\n )}\n </div>\n );\n};\n\nexport default memo(ImageActionsOverlay);\n","import React from 'react';\n\nconst SvgDetails: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M14 5a1 1 0 011 1v12a1 1 0 01-1 1H4a1 1 0 01-1-1V6a1 1 0 011-1h10zm6 12v2h-3v-2h3zm2-4v2h-5v-2h5zm0-4v2h-5V9h5zm0-4v2h-5V5h5z\"\n id=\"Details_svg__a\"\n />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fillRule=\"evenodd\">\n <mask id=\"Details_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Details_svg__a\" />\n </mask>\n <path mask=\"url(#Details_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDetails;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n paper: {\n backgroundColor: 'rgba(0, 0, 0, .85)'\n },\n backdrop: {\n backgroundColor: 'transparent'\n },\n toolbar: {\n paddingLeft: '20px',\n paddingRight: '20px'\n },\n appBar: {\n position: 'relative',\n background: 'linear-gradient(180deg, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0) 100%)'\n },\n closeButton: {\n marginRight: '28px'\n },\n closeIcon: {\n fontSize: '24px',\n color: '#fff'\n },\n headerLeft: {\n display: 'flex',\n alignItems: 'center',\n flex: 2\n },\n headerCenter: {\n display: 'flex',\n justifyContent: 'center',\n flex: 1\n },\n headerRight: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center'\n },\n modeSwitcher: {\n backgroundColor: '#fff'\n },\n content: {\n padding: 0\n }\n}));\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {AppBar as AppBar} from '@material-ui/core';\nimport {Toolbar as Toolbar} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ViewComfyIcon from '@material-ui/icons/ViewComfy';\nimport DetailsIcon from '../../icons/Details';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport ModeSwitcher from '../ModeSwitcher/ModeSwitcher';\nimport {useStyles} from './styles';\n\nexport enum Mode {\n GALLERY_MODE = 'gallery',\n DETAILS_MODE = 'details'\n}\n\nexport type Props = {\n open: boolean;\n mode: Mode;\n onClose?: () => void;\n onChangeMode?: (mode: Mode) => void;\n children: React.ReactNode;\n header?: {\n left?: React.ReactNode;\n right?: React.ReactNode;\n };\n};\n\nexport const ImageGalleryDialog = ({open, mode, children, header, onClose, onChangeMode}: Props) => {\n const styles = useStyles();\n\n const modes = useMemo(\n () => [\n {\n id: Mode.GALLERY_MODE,\n title: i18n.text('Gallery'),\n Icon: ViewComfyIcon\n },\n {\n id: Mode.DETAILS_MODE,\n title: i18n.text('Details'),\n Icon: DetailsIcon\n }\n ],\n []\n );\n\n return (\n <Dialog classes={{paper: styles.paper}} open={open} BackdropProps={{className: styles.backdrop}} fullScreen>\n <AppBar classes={{colorPrimary: styles.appBar}}>\n <Toolbar className={styles.toolbar}>\n <Box className={styles.headerLeft}>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Close')}\n onClick={onClose}\n className={styles.closeButton}\n iconClassName={styles.closeIcon}\n icon={CloseIcon}\n />\n {header?.left}\n </Box>\n <Box className={styles.headerCenter}>\n <ModeSwitcher<Mode>\n modes={modes}\n modeId={mode}\n onChange={onChangeMode}\n className={styles.modeSwitcher}\n />\n </Box>\n <Box className={styles.headerRight}>{header?.right}</Box>\n </Toolbar>\n </AppBar>\n <DialogContent className={styles.content}>{children}</DialogContent>\n </Dialog>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport {useInRouterContext, Link} from 'react-router-dom';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst InternalLink = (props: React.AnchorHTMLAttributes<HTMLAnchorElement>) => {\n const styles = useStyles();\n const inRouterContext = useInRouterContext();\n const {href, className, ...otherProps} = props;\n const linkClassName = classnames(styles.link, className);\n return inRouterContext && href ? (\n <Link to={href.replace(window.location.origin, '')} className={linkClassName} {...otherProps} />\n ) : (\n <a href={href} className={linkClassName} {...otherProps} />\n );\n};\n\nexport default InternalLink;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n loadingOverlay: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n opacity: 0.37,\n zIndex: 10,\n backgroundColor: '#fff'\n },\n transparent: {\n backgroundColor: 'transparent'\n },\n relativePosition: {\n '&$loadingOverlay': {\n position: 'relative'\n }\n }\n});\n","import React from 'react';\n\nimport classnames from 'classnames';\nimport {LinearProgress as LinearProgress} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n transparent?: boolean;\n relativePosition?: boolean;\n className?: string;\n};\n\nconst LinearLoadIndicator = ({transparent = false, relativePosition = false, className}: Props) => {\n const styles = useStyles();\n return (\n <>\n <div\n className={classnames(styles.loadingOverlay, className, {\n [styles.transparent]: transparent,\n [styles.relativePosition]: relativePosition\n })}\n >\n <LinearProgress color=\"secondary\" />\n </div>\n </>\n );\n};\n\nexport default LinearLoadIndicator;\n","import {Theme} from '@material-ui/core';\nimport {fade, makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n button: {\n minWidth: '30px',\n padding: '8px 8px',\n justifyContent: 'start',\n fill: 'rgba(0,0,0,0.54)',\n textTransform: 'none',\n borderColor: 'rgba(0,0,0,0.12)'\n },\n icon: {\n color: 'rgba(0,0,0,0.54)',\n width: '20px',\n height: '20px',\n marginRight: '8px'\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n },\n current: {\n '& $icon': {\n color: theme.palette.primary.main\n },\n backgroundColor: fade(theme.palette.primary.main, 0.12),\n fill: theme.palette.primary.main,\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.primary.main, 0.24)\n }\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport {Button as Button} from '@material-ui/core';\nimport {ButtonGroup as ButtonGroup} from '@material-ui/core';\nimport classnames from 'classnames';\nimport withTooltip from '../../HOCs/withTooltip/withTooltip';\nimport useStyles from './styles';\n\nconst ButtonWithTooltip = withTooltip(Button);\n\ntype Props<T> = {\n className: string;\n classes?: {\n button?: string;\n };\n modes: {\n id: T;\n title?: string;\n tooltipTitle?: string;\n Icon?: React.ElementType;\n disabled?: boolean;\n }[];\n modeId: T;\n onChange?: (mode: T) => void;\n};\n\nconst ModeSwitcher = <T extends unknown>({className, classes = {}, modes = [], modeId, onChange}: Props<T>) => {\n const styles = useStyles();\n\n const getChangeModeHandler = (newMode) => () => onChange(newMode);\n\n return (\n <ButtonGroup className={className}>\n {modes.map(({id, title, tooltipTitle, Icon, disabled}) => {\n return (\n <ButtonWithTooltip\n disabled={disabled}\n showForDisabled={disabled && !!tooltipTitle}\n key={String(id)}\n className={classnames(styles.button, {[styles.current]: modeId === id}, classes.button)}\n tooltipTitle={tooltipTitle}\n onClick={getChangeModeHandler(id)}\n data-reltio-id={`reltio-search-mode-${id}`}\n >\n {Icon && <Icon className={styles.icon} />}\n {title && <div className={styles.title}>{title}</div>}\n </ButtonWithTooltip>\n );\n })}\n </ButtonGroup>\n );\n};\n\nexport default ModeSwitcher;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => {\n const color = theme.palette.background.paper;\n return {\n popoverRoot: {\n backgroundColor: color,\n maxWidth: 1000\n },\n popper: {\n '&[x-placement*=\"bottom\"] $arrow': {\n top: 0,\n left: 0,\n marginTop: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n '&[x-placement*=\"top\"] $arrow': {\n bottom: 0,\n left: 0,\n marginBottom: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n '&[x-placement*=\"right\"] $arrow': {\n left: 0,\n marginLeft: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '100% 100%'\n }\n },\n '&[x-placement*=\"left\"] $arrow': {\n right: 0,\n marginRight: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '0 0'\n }\n }\n },\n arrow: {\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color,\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n boxShadow: theme.shadows[1],\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n }\n };\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Paper as Paper} from '@material-ui/core';\nimport {ClickAwayListener as ClickAwayListener} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport Popper from '../Popper/Popper';\nimport {useStyles} from './styles';\n\ntype PopperProps = React.ComponentPropsWithoutRef<typeof Popper>;\n\ntype Props = Pick<PopperProps, 'anchorEl' | 'open' | 'placement' | 'popperRef'> & {\n children: React.ReactNode;\n onClose?: () => void;\n arrow?: boolean;\n className?: string;\n};\n\nconst isChildOfPortalModal = (child) =>\n Array.from(document.querySelectorAll('[data-modal]')).some((el) => el.contains(child));\n\nexport const PopupWithArrow = ({\n anchorEl,\n placement = 'top',\n arrow = true,\n open,\n onClose = () => {},\n children,\n className,\n popperRef\n}: Props) => {\n const styles = useStyles();\n const [arrowRef, setArrowRef] = React.useState<HTMLElement | null>(null);\n const onClickOutside = (e: React.MouseEvent<Document>) => {\n if (!isChildOfPortalModal(e.target)) {\n onClose();\n }\n };\n return (\n <Popper\n anchorEl={anchorEl}\n placement={placement}\n className={classnames(styles.popper, className)}\n modifiers={{\n preventOverflow: {\n enabled: true,\n boundariesElement: 'window'\n },\n arrow: {\n enabled: arrow,\n element: arrowRef\n }\n }}\n open={open}\n modal={false}\n popperRef={popperRef}\n >\n <Box>\n <ClickAwayListener onClickAway={onClickOutside}>\n <Paper className={styles.popoverRoot}>\n {arrow ? <span className={styles.arrow} ref={setArrowRef} /> : null}\n <Box>{children}</Box>\n </Paper>\n </ClickAwayListener>\n </Box>\n </Popper>\n );\n};\n","import classNames from 'classnames';\nimport {isNil, pipe, tap} from 'ramda';\nimport React, {memo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport Input, {InputProps} from '@material-ui/core/Input';\nimport {InputAdornment as InputAdornment} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport SearchIcon from '@material-ui/icons/Search';\nimport {getValue, noop} from '../../core';\nimport SmallIconButton from '../SmallIconButton/SmallIconButton';\nimport {useStyles} from './styles';\n\nexport type SearchInputProps = InputProps & {\n value?: string;\n autofocus: boolean;\n onSearch: (value?: string) => void;\n rootRef?: React.MutableRefObject<HTMLInputElement>;\n height: number;\n placeholder?: string;\n};\n\nconst SearchInput = ({\n value,\n autofocus,\n onSearch = noop,\n rootRef,\n classes = {},\n height,\n placeholder = i18n.text('Search'),\n ...otherProps\n}: SearchInputProps) => {\n const styles = useStyles({height});\n\n const [localValue, setLocalValue] = useState('');\n\n const updateValue = pipe(tap(onSearch), setLocalValue);\n const clearValue = () => updateValue('');\n\n const inputValue = isNil(value) ? localValue : value;\n\n return (\n <Input\n startAdornment={\n <InputAdornment position=\"start\">\n <SearchIcon className={styles.icon} />\n </InputAdornment>\n }\n endAdornment={\n <InputAdornment position=\"end\">\n {inputValue.length > 0 && (\n <SmallIconButton icon={CloseIcon} className={styles.clearButton} onClick={clearValue} />\n )}\n </InputAdornment>\n }\n autoFocus={autofocus}\n classes={{\n ...classes,\n input: classNames(styles.input, classes.input),\n root: classNames(styles.container, classes.root)\n }}\n placeholder={placeholder}\n value={inputValue}\n onChange={pipe(getValue, updateValue)}\n disableUnderline={true}\n ref={rootRef}\n {...otherProps}\n />\n );\n};\n\nexport default memo(SearchInput);\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n height?: number;\n};\n\nexport const useStyles = makeStyles(() => ({\n container: ({height = 36}: StylesProps) => {\n return {\n height: height,\n borderRadius: '2px',\n alignItems: 'center',\n backgroundColor: 'rgba(0,0,0,0.03)',\n minWidth: '100px'\n };\n },\n icon: {\n opacity: 0.67,\n marginLeft: '10px',\n marginRight: '6px'\n },\n input: {\n fontSize: '13px',\n width: '100%'\n },\n clearButton: {\n marginRight: '10px'\n },\n white: {\n backgroundColor: 'rgb(255, 255, 255)',\n boxShadow: '0 1px 3px 0 rgba(0,0,0,0.24)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport Popover, {PopoverProps} from '@material-ui/core/Popover';\n\nimport useStyles from './styles.js';\nimport SearchInput from '../SearchInput/SearchInput';\n\ntype Props = {\n title: string;\n containerWidth: number;\n containerHeight: number;\n children: React.ReactNode;\n PaperProps?: Record<string, unknown>;\n searchInputOnKeyDown: (event: React.KeyboardEvent) => void;\n onSearch: (value?: string) => void;\n className?: string;\n hideTitle?: boolean;\n hideSearchInput?: boolean;\n headerPlacement?: 'top' | 'bottom';\n searchInputRef?: React.Ref<unknown>;\n} & PopoverProps;\n\nconst SelectionPopup = ({\n title,\n className,\n onSearch,\n hideTitle,\n hideSearchInput,\n headerPlacement = 'top',\n containerWidth,\n containerHeight,\n searchInputOnKeyDown,\n children,\n searchInputRef,\n anchorOrigin = {\n vertical: 'top',\n horizontal: 'right'\n },\n transformOrigin = {\n vertical: 'top',\n horizontal: 'right'\n },\n ...otherProps\n}: Props) => {\n const classes = useStyles({containerWidth, containerHeight});\n const header = (\n <>\n {!hideTitle && <div className={classes.header}>{title}</div>}\n {!hideSearchInput && (\n <SearchInput\n onSearch={onSearch}\n autofocus={true}\n onKeyDown={searchInputOnKeyDown}\n inputRef={searchInputRef}\n classes={{root: classes.searchInputContainer}}\n placeholder={i18n.text('Search & add attributes')}\n height={40}\n />\n )}\n </>\n );\n return (\n <Popover anchorOrigin={anchorOrigin} transformOrigin={transformOrigin} {...otherProps}>\n <div className={classnames(classes.container, className)} style={{width: containerWidth}}>\n {headerPlacement === 'top' && header}\n <div className={classes.list}>{children}</div>\n {headerPlacement === 'bottom' && header}\n </div>\n </Popover>\n );\n};\n\nexport default SelectionPopup;\n","import React, {useState, useEffect, useRef, useCallback} from 'react';\nimport {isNil} from 'ramda';\nimport {isTitleItem} from '../VirtualGroupedList/VirtualGroupedList';\n\ntype Item = {\n titleItemIndex?: number;\n index: number;\n item: {\n item: Record<string, unknown>;\n moveTo?: number;\n };\n};\n\ntype FocusIndex = number | null;\n\ntype Props = {\n items: Item[];\n open: boolean;\n onSelectFocusedItem: (item: {item: Item['item']['item']; groupData: Item['item']}) => void;\n selectedItems: string[];\n onClose: (event: React.KeyboardEvent) => void;\n};\n\nconst useKeyboardNavigation = ({items, open, onSelectFocusedItem, selectedItems, onClose}: Props) => {\n const [focusIndex, setFocusIndex] = useState<FocusIndex>(null);\n const restoreFocusIndex = useRef<boolean>(false);\n\n const increaseFocusIndex = useCallback(\n (currentIndex: FocusIndex): number => {\n let newIndex = currentIndex === null ? increaseFocusIndex(-1) : currentIndex;\n while (\n currentIndex !== null &&\n newIndex < items.length &&\n (newIndex <= currentIndex || (newIndex >= 0 && isTitleItem(items[newIndex])))\n ) {\n newIndex += 1;\n }\n return newIndex !== items.length ? newIndex : increaseFocusIndex(-1);\n },\n [items]\n );\n\n const decreaseFocusIndex = useCallback(\n (currentIndex: FocusIndex): number => {\n let newIndex = currentIndex === null ? items.length - 1 : currentIndex;\n while (\n currentIndex !== null &&\n newIndex >= 0 &&\n (newIndex >= currentIndex || isTitleItem(items[newIndex]))\n ) {\n newIndex -= 1;\n }\n return newIndex < 0 ? items.length - 1 : newIndex;\n },\n [items]\n );\n\n const handleSelectFocusedItem = useCallback(() => {\n if (!isNil(focusIndex)) {\n const item = items[focusIndex].item;\n !item.item.notSelectable && onSelectFocusedItem({item: item.item, groupData: item});\n }\n }, [onSelectFocusedItem, items, focusIndex]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (items.length === 0) {\n return;\n }\n switch (event.key) {\n case 'Down': // IE/Edge specific value\n case 'ArrowDown':\n setFocusIndex(increaseFocusIndex);\n event.preventDefault();\n return false;\n case 'Up': // IE/Edge specific value\n case 'ArrowUp':\n setFocusIndex(decreaseFocusIndex);\n event.preventDefault();\n return false;\n case 'Enter':\n restoreFocusIndex.current = true;\n handleSelectFocusedItem();\n break;\n case 'Tab':\n onClose && onClose(event);\n break;\n default:\n return;\n }\n },\n [items, increaseFocusIndex, decreaseFocusIndex, handleSelectFocusedItem, onClose]\n );\n\n useEffect(() => {\n if (restoreFocusIndex.current) {\n restoreFocusIndex.current = false;\n const moveIndex = items.findIndex((listItem) => listItem.item.moveTo);\n moveIndex > -1 && setFocusIndex(moveIndex);\n } else {\n setFocusIndex(null);\n }\n }, [items, open, selectedItems]);\n\n return {focusIndex, handleKeyDown};\n};\n\nexport {useKeyboardNavigation};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst margin = '16px';\nconst useStyles = makeStyles(() => ({\n container: ({containerHeight = 553, containerWidth}) => {\n return {\n display: 'flex',\n flexDirection: 'column',\n height: containerHeight,\n width: containerWidth,\n flexGrow: 1\n };\n },\n header: {\n marginLeft: margin,\n marginTop: '16px',\n marginBottom: '12px',\n fontSize: '16px',\n fontWeight: 500,\n letterSpacing: '0.15px',\n lineHeight: '24px'\n },\n searchInputContainer: {\n margin: `0 ${margin} 12px ${margin}`,\n flexShrink: '0'\n },\n list: {\n flexGrow: 1,\n height: 0,\n overflow: 'hidden',\n width: '100%',\n position: 'relative',\n\n '& ul': {\n paddingBottom: 0,\n paddingTop: 0\n }\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n label: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '13px',\n lineHeight: '15px'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport RequiredMark from '../RequiredMark/RequiredMark';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n isRequired?: boolean;\n className?: string;\n};\n\nconst Title = ({label, isRequired, className, ...otherProps}: Props) => {\n const styles = useStyles();\n\n return (\n <Typography className={classnames(styles.label, className)} component=\"span\" {...otherProps}>\n {label}\n {isRequired && <RequiredMark />}\n </Typography>\n );\n};\n\nexport default Title;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n stickyTitlesWrapper: {\n position: 'absolute',\n top: 0,\n '& > div': {\n zIndex: 1,\n position: 'absolute',\n top: 0,\n width: '100%',\n visibility: 'hidden'\n }\n }\n});\n","import React, {useCallback, useEffect, useRef, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {VariableSizeList as List} from 'react-window';\nimport ReactResizeDetector from 'react-resize-detector';\n\nimport {useStyles} from './styles';\nimport {useScrollToFocusItem} from './helpers';\n\n/*\nitems = [\n {\n item: {\n item: {},\n level: number\n },\n titleItemIndex: number,\n index: number,\n moveTo: true|false,\n items: [...]\n ...\n }\n]\n*/\nconst OVERSCAN_COUNT = 5;\n\nconst isTitleItem = (listItem) => listItem.titleItemIndex === listItem.index;\n\nconst VirtualGroupedList = ({\n items,\n getItemSize,\n renderItem,\n renderGroupTitle,\n width = '100%',\n height,\n fixedTitle = true,\n itemKey = (i) => i,\n disableHorizontalScrollbar,\n hideSubtitles,\n focusIndex = null,\n onInnerContainerResize\n}) => {\n const styles = useStyles();\n\n const listRef = useRef(null);\n const itemsRef = useRef(null);\n const titlesRef = useRef(null);\n\n const itemOffsets = useRef([0]);\n const stepCalcOffset = 10;\n const stickyItemClass = 'stickyTitleItem';\n const currentTitleParams = {\n topMargin: 0\n };\n const isGroupHasSubTitles = (groupedItems) => (groupedItems || []).some((item) => item.titleItemIndex !== null);\n\n const hasSubTitles = useMemo(() => !hideSubtitles || isGroupHasSubTitles(items), [items, hideSubtitles]);\n\n const calcOffsetsToIndex = useCallback(\n (index) => {\n const curItemsLength = itemOffsets.current.length;\n let prevItemSize = 0;\n items.slice(curItemsLength - 1, index + 1).forEach((listItem, i) => {\n const realIndex = curItemsLength + i - 1;\n if (i > 0) itemOffsets.current[realIndex] = itemOffsets.current[realIndex - 1] + prevItemSize;\n\n prevItemSize = getItemSize(realIndex, listItem.item);\n });\n },\n [getItemSize, items]\n );\n\n const getTitleByIndex = useCallback((index) => items[index].titleItemIndex, [items]);\n const getItemByIndex = useCallback((index) => items[index], [items]);\n\n useEffect(() => {\n requestAnimationFrame(() => {\n listRef.current && listRef.current.scrollTo(0);\n });\n }, [items.length]);\n\n useEffect(() => {\n const calcMoveToOffset = (items) => {\n const indexItem = items.findIndex((listItem) => listItem.item.moveTo);\n if (indexItem > -1) {\n calcOffsetsToIndex(indexItem);\n const titleIndex = getTitleByIndex(indexItem);\n return {\n offset: itemOffsets.current[indexItem],\n titleHeight: getItemSize(titleIndex, getItemByIndex(titleIndex).item)\n };\n }\n };\n\n listRef.current && listRef.current.resetAfterIndex(0);\n\n setTitleWidth();\n\n const scrollToOffset = calcMoveToOffset(items);\n if (scrollToOffset && scrollToOffset.offset && listRef.current) {\n const {titleHeight} = scrollToOffset;\n const offset = scrollToOffset.offset - titleHeight;\n if (offset < listRef.current.state.scrollOffset || offset > listRef.current.state.scrollOffset + height) {\n requestAnimationFrame(() => {\n listRef.current && listRef.current.scrollTo(offset - (height - titleHeight) / 2);\n });\n }\n }\n }, [calcOffsetsToIndex, getItemByIndex, getItemSize, getTitleByIndex, height, itemOffsets, items, listRef]);\n\n const setTitleWidth = () => {\n if (titlesRef.current && itemsRef.current) {\n titlesRef.current.style.width = itemsRef.current.offsetWidth + 'px';\n }\n };\n\n const getNextTitleIndex = (fromIndex) =>\n items.findIndex((listItem, index) => isTitleItem(listItem) && fromIndex < index);\n\n const getItemByOffset = useCallback(\n (scrollOffset) => {\n let result = null;\n let offset = 0;\n\n items.some((listItem, index) => {\n calcOffsetsToIndex(index + stepCalcOffset);\n const nextOffset = itemOffsets.current[index + 1];\n\n if (scrollOffset >= offset && scrollOffset < nextOffset)\n result = {\n index,\n offset,\n listItem\n };\n\n offset = nextOffset;\n return result;\n });\n return result;\n },\n [calcOffsetsToIndex, itemOffsets, items]\n );\n\n const setTitleTopMargin = (topMargin) => {\n if (titlesRef.current) {\n currentTitleParams.topMargin = -topMargin;\n titlesRef.current.style.top = -topMargin + 'px';\n }\n };\n\n const setTitleByIndex = (index) => {\n titlesRef.current &&\n [...titlesRef.current.querySelectorAll('.' + stickyItemClass)].forEach((title) => {\n if (title.dataset.index === index.toString()) {\n title.style.visibility = 'visible';\n currentTitleParams.index = index;\n } else title.style.visibility = 'hidden';\n });\n };\n\n const getOffsetByIndex = (index) => {\n calcOffsetsToIndex(index);\n\n return itemOffsets.current[index];\n };\n\n const onScroll = ({scrollOffset, scrollDirection}) => {\n if (!fixedTitle || !hasSubTitles) return;\n\n const topItem = getItemByOffset(scrollOffset);\n const currentTitleIndex = topItem && getTitleByIndex(topItem.index);\n\n currentTitleIndex !== null && setTitleByIndex(currentTitleIndex);\n\n setTitleWidth();\n\n const titleHeight =\n currentTitleIndex !== null && getItemSize(currentTitleIndex, getItemByIndex(currentTitleIndex).item);\n const itemAfterTitle = getItemByOffset(scrollOffset + titleHeight + currentTitleParams.topMargin);\n\n let topMargin = 0;\n if (itemAfterTitle) {\n switch (scrollDirection) {\n case 'forward':\n if (itemAfterTitle.offset - scrollOffset > 0 && isTitleItem(itemAfterTitle.listItem))\n topMargin = titleHeight - (itemAfterTitle.offset - scrollOffset);\n break;\n case 'backward':\n {\n const nextTitleIndex = currentTitleIndex > -1 && getNextTitleIndex(currentTitleIndex);\n const nextTitleOffset = getOffsetByIndex(nextTitleIndex);\n\n if (\n nextTitleIndex > -1 &&\n scrollOffset < nextTitleOffset &&\n titleHeight >= nextTitleOffset - scrollOffset\n )\n topMargin = titleHeight - (nextTitleOffset - scrollOffset);\n }\n break;\n }\n setTitleTopMargin(topMargin);\n }\n };\n\n const _getItemSize = useCallback((index) => getItemSize(index, getItemByIndex(index).item), [\n getItemByIndex,\n getItemSize\n ]);\n\n const render = useCallback(\n ({index, style, data}) => {\n const listItem = getItemByIndex(index);\n return (\n listItem.item &&\n ((isTitleItem(listItem) && renderGroupTitle(style, listItem.item)) ||\n renderItem(style, listItem.item, index, data))\n );\n },\n [getItemByIndex, renderGroupTitle, renderItem]\n );\n\n const {handleOnItemsRendered} = useScrollToFocusItem({items, focusIndex, listRef});\n const renderTitles = useCallback(() => {\n const renderTitle = (listItem) => (\n <div\n className={stickyItemClass}\n style={{visibility: 'hidden'}}\n data-index={listItem.index}\n key={listItem.index}\n >\n {renderGroupTitle({height: getItemSize(listItem.index, listItem.item)}, listItem.item)}\n </div>\n );\n\n return items.filter((listItem) => isTitleItem(listItem)).map((listItem) => renderTitle(listItem));\n }, [getItemSize, items, renderGroupTitle]);\n\n return (\n <>\n <div ref={titlesRef} className={styles.stickyTitlesWrapper}>\n {fixedTitle && renderTitles()}\n </div>\n {onInnerContainerResize && itemsRef.current && (\n <ReactResizeDetector handleHeight onResize={onInnerContainerResize} targetDomEl={itemsRef.current} />\n )}\n <List\n ref={listRef}\n itemCount={items.length}\n itemSize={_getItemSize}\n width={width}\n height={height}\n itemKey={itemKey}\n innerRef={itemsRef}\n onScroll={onScroll}\n style={disableHorizontalScrollbar ? {overflowX: 'hidden'} : undefined}\n overscanCount={OVERSCAN_COUNT}\n onItemsRendered={handleOnItemsRendered}\n >\n {render}\n </List>\n </>\n );\n};\n\nVirtualGroupedList.propTypes = {\n items: PropTypes.arrayOf(PropTypes.object).isRequired,\n getItemSize: PropTypes.func.isRequired,\n renderItem: PropTypes.func.isRequired,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.number.isRequired,\n renderGroupTitle: PropTypes.func,\n fixedTitle: PropTypes.bool,\n hideSubtitles: PropTypes.bool,\n itemKey: PropTypes.func,\n disableHorizontalScrollbar: PropTypes.bool,\n focusIndex: PropTypes.number,\n onInnerContainerResize: PropTypes.func\n};\n\nexport default VirtualGroupedList;\nexport {isTitleItem};\n","import {flatten} from 'ramda';\nimport {useCallback, useEffect, useRef} from 'react';\n\nexport const SCROLL_COUNT = 3;\n\nconst flattenGroupedItemsData = (groupedItems) => {\n const getFlattenedItems = (items) =>\n flatten(items.map((item) => [item].concat(item.items ? getFlattenedItems(item.items) : [])));\n\n let titleItemIndex = null;\n const items = getFlattenedItems(groupedItems).map((item, index) => {\n if (item && item.items) {\n titleItemIndex = index;\n }\n return {item, index, titleItemIndex};\n });\n return items;\n};\n\nconst useScrollToFocusItem = ({focusIndex, listRef, items}) => {\n const visibleStartIndexRef = useRef(null);\n const visibleStopIndexRef = useRef(null);\n const handleOnItemsRendered = useCallback(({visibleStartIndex, visibleStopIndex}) => {\n visibleStartIndexRef.current = visibleStartIndex;\n visibleStopIndexRef.current = visibleStopIndex;\n }, []);\n useEffect(() => {\n if (!listRef.current || focusIndex === null || items.length === 0) {\n return;\n }\n\n if (focusIndex < Math.max(visibleStartIndexRef.current + SCROLL_COUNT, 0)) {\n listRef.current.scrollToItem(Math.max(focusIndex - SCROLL_COUNT, 0), 'start');\n } else if (focusIndex > Math.min(visibleStopIndexRef.current - SCROLL_COUNT, items.length - 1)) {\n listRef.current.scrollToItem(Math.min(focusIndex + SCROLL_COUNT, items.length - 1), 'end');\n }\n }, [focusIndex, items.length, listRef]);\n return {handleOnItemsRendered};\n};\n\nexport {flattenGroupedItemsData, useScrollToFocusItem};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst lineStyle = '1px solid #AFD4E9';\n\nconst horizontalLineWidth = 5;\nconst verticalNodeGap = 14;\nconst arrowWidth = 16;\n\nexport const useStyles = makeStyles({\n decorator: {\n marginLeft: arrowWidth / 2,\n borderLeft: lineStyle,\n '&:last-child': {\n borderLeft: 'none',\n '&:before': {\n borderLeft: lineStyle\n }\n },\n '&:before': {\n top: 0,\n height: verticalNodeGap,\n width: horizontalLineWidth,\n borderBottom: lineStyle,\n content: '\"\"',\n display: 'block',\n left: '0'\n },\n '&$plain': {\n '&:before': {\n width: 0\n }\n }\n },\n plain: {},\n wrapper: {\n marginLeft: horizontalLineWidth + 11,\n marginTop: -8\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n plain?: boolean;\n enabled?: boolean;\n};\n\nconst BranchDecorator = ({className, children, plain = false, enabled = false}: Props) => {\n const styles = useStyles();\n return enabled ? (\n <div className={classnames(styles.decorator, {[styles.plain]: plain}, className)}>\n <div className={styles.wrapper}>{children}</div>\n </div>\n ) : (\n <>{children}</>\n );\n};\n\nexport default BranchDecorator;\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: 'flex',\n alignContent: 'center',\n flexDirection: 'column'\n },\n main: {\n position: 'relative',\n padding: '0 86px',\n marginTop: 'auto'\n },\n mainImageContainer: {\n display: 'flex',\n alignContent: 'center',\n height: '100%',\n width: '100%'\n },\n mainImage: {\n maxWidth: 'calc(100vw - 512px)',\n maxHeight: 'calc(100vh - 192px)',\n margin: '0 auto',\n userSelect: 'none'\n },\n arrowButton: {\n backgroundColor: theme.palette.divider,\n color: 'white',\n '&:hover': {\n backgroundColor: theme.palette.divider\n }\n },\n arrowButtonPrev: {\n position: 'absolute',\n top: '50%',\n left: '16px',\n transform: 'translateY(-50%)'\n },\n arrowButtonNext: {\n position: 'absolute',\n top: '50%',\n right: '16px',\n transform: 'translateY(-50%)'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n thumbnails: {\n marginLeft: '12px',\n marginBottom: '12px',\n marginTop: 'auto',\n width: 'calc(100vw - 364px)',\n overflowX: 'auto',\n overflowY: 'hidden'\n },\n gridContainer: {\n width: '100%'\n },\n thumb: {\n width: '96px',\n height: '96px',\n cursor: 'pointer',\n userSelect: 'none'\n },\n inactiveThumb: {\n filter: 'brightness(0.5)'\n }\n}));\n","import React, {useEffect, useRef} from 'react';\nimport {Grid as Grid} from '@material-ui/core';\nimport {getImageAttributeOvThumbnailUrl, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image from '../../../Image/Image';\nimport {useStyles} from './styles';\n\nexport const IMAGE_WIDTH = 96;\nexport const IMAGE_PADDING = 16;\nexport const CONTAINER_MARGIN = 12;\n\ntype Props = {\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const Thumbnails = ({attributeValues, setAttributeValueIndex, attributeValueIndex}: Props) => {\n const styles = useStyles();\n const gridRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (gridRef?.current) {\n const containerScrollLeft = gridRef.current.scrollLeft;\n const containerOffsetWidth = gridRef.current.offsetWidth;\n const containerWidth = containerOffsetWidth + containerScrollLeft;\n const currentElementPosition =\n attributeValueIndex * IMAGE_WIDTH + attributeValueIndex * IMAGE_PADDING + CONTAINER_MARGIN;\n if (containerWidth < currentElementPosition) {\n if (gridRef.current.scroll) {\n if (currentElementPosition > containerWidth + IMAGE_WIDTH + IMAGE_PADDING) {\n gridRef.current.scroll(currentElementPosition, 0);\n } else {\n gridRef.current.scroll(IMAGE_WIDTH + IMAGE_PADDING + containerScrollLeft, 0);\n }\n }\n } else if (containerScrollLeft + IMAGE_WIDTH > currentElementPosition) {\n if (gridRef.current.scroll) {\n gridRef.current.scroll(currentElementPosition - IMAGE_WIDTH, 0);\n }\n }\n }\n }, [attributeValueIndex, gridRef]);\n\n return (\n <div ref={gridRef} className={styles.thumbnails}>\n <Grid container wrap=\"nowrap\" direction=\"row\" spacing={1} className={styles.gridContainer}>\n {attributeValues.map(({uri, value}, index) => (\n <Grid item key={uri}>\n <Image\n onClick={() => setAttributeValueIndex(index)}\n className={classnames(styles.thumb, {\n [styles.inactiveThumb]: attributeValueIndex !== index\n })}\n src={getImageAttributeOvThumbnailUrl({value})}\n />\n </Grid>\n ))}\n </Grid>\n </div>\n );\n};\n","import React from 'react';\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport {ImageAttributeValue, getImageAttributeOvPreviewUrl} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport {useStyles} from './styles';\nimport {Thumbnails} from './Thumbnails/Thumbnails';\n\ntype Props = {\n className?: string;\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const ImageDetailsViewCarousel = ({\n className,\n attributeValues,\n attributeValueIndex,\n setAttributeValueIndex\n}: Props) => {\n const styles = useStyles();\n const attributeValue = attributeValues[attributeValueIndex];\n const mainImageSrc = getImageAttributeOvPreviewUrl(attributeValue);\n\n const onPrevImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex - 1);\n };\n\n const onNextImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex + 1);\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <div className={styles.main}>\n {attributeValueIndex > 0 && (\n <SmallIconButton\n icon={NavigateBeforeIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonPrev)}\n onClick={onPrevImageButtonClick}\n size=\"XL\"\n />\n )}\n <Image\n containerClassName={styles.mainImageContainer}\n className={styles.mainImage}\n size={mainImageSrc && ImageSizesStyles.OVERRIDE}\n src={mainImageSrc}\n />\n {attributeValueIndex !== attributeValues.length - 1 && (\n <SmallIconButton\n icon={NavigateNextIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonNext)}\n onClick={onNextImageButtonClick}\n size=\"XL\"\n />\n )}\n </div>\n <Thumbnails\n attributeValues={attributeValues}\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={setAttributeValueIndex}\n />\n </div>\n );\n};\n","import i18n from 'ui-i18n';\n\nexport const SYSTEM_ATTRIBUTES_TITLES = {\n get CreationTime() {\n return i18n.text('Creation Time');\n },\n get CreationDate() {\n return i18n.text('Creation Date');\n },\n get Dimensions() {\n return i18n.text('Dimensions');\n },\n get MimeType() {\n return i18n.text('Mime Type');\n },\n get Size() {\n return i18n.text('Size');\n },\n get Url() {\n return i18n.text('Full image URL (S3)');\n },\n get UrlPreview() {\n return i18n.text('Preview image URL (S3)');\n },\n get UrlThumbnail() {\n return i18n.text('Small image URL (S3)');\n },\n get CdnUrl() {\n return i18n.text('Full image URL (CDN)');\n },\n get CdnUrlPreview() {\n return i18n.text('Preview image URL (CDN)');\n },\n get CdnUrlThumbnail() {\n return i18n.text('Small image URL (CDN)');\n }\n};\n","import {path} from 'ramda';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {ImageAttributeValue, AttributeType} from '@reltio/mdm-sdk';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {SYSTEM_ATTRIBUTES_TITLES} from '../constants';\n\nexport const getFormattedSystemImageAttributeValue = (\n {value}: ImageAttributeValue = {} as ImageAttributeValue,\n name: string\n) => {\n if (\n ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail', 'MimeType'].includes(name)\n ) {\n return path([name, 0, 'value'], value);\n }\n\n if (name === 'CreationDate' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('MM-DD-YYYY');\n }\n\n if (name === 'CreationTime' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('HH:mm:ss');\n }\n\n if (name === 'Dimensions' && path(['Height', 0, 'value'], value) && path(['Width', 0, 'value'], value)) {\n return `${value.Height[0].value} x ${value.Width[0].value} ${i18n.text('pixels')}`;\n }\n\n if (name === 'Size' && path(['Size', 0, 'value'], value)) {\n const size = (Number(value.Size[0].value) / 1000).toFixed(2);\n return `${size} KB`;\n }\n};\n\nconst filterByNotSystemAttributeTypes = (attrTypes: AttributeType[] = []) => {\n return attrTypes.filter(({system}) => !system);\n};\n\nexport const filterByFieldsOrder = (keys: string[], fieldsOrder: ImageAttributeFieldsOrder) => {\n const {includeNames = [], excludeNames = [], order = []} = fieldsOrder;\n\n const filteredKeys = includeNames.length\n ? keys.filter((key) => includeNames.includes(key))\n : keys.filter((key) => !excludeNames.includes(key));\n\n if (order.length === 0) {\n return filteredKeys;\n }\n\n return filteredKeys.sort((a, b) => {\n const indA = order.indexOf(a);\n const indB = order.indexOf(b);\n if (indA === -1 && indB !== -1) return 1;\n if (indB === -1 && indA !== -1) return -1;\n return indA - indB;\n });\n};\n\nexport const getMoreAttrTypes = (attrType: AttributeType) => {\n return filterByNotSystemAttributeTypes(attrType.attributes);\n};\n\nexport const getSystemAttributesList = (attrValue: ImageAttributeValue, fieldsOrder: ImageAttributeFieldsOrder) => {\n return filterByFieldsOrder(Object.keys(SYSTEM_ATTRIBUTES_TITLES), fieldsOrder)\n .map((key) => {\n const value = getFormattedSystemImageAttributeValue(attrValue, key);\n\n if (!value) {\n return null;\n }\n\n return {\n title: SYSTEM_ATTRIBUTES_TITLES[key],\n value: getFormattedSystemImageAttributeValue(attrValue, key),\n isLink: isLink(key)\n };\n })\n .filter(Boolean);\n};\n\nexport const getNotSystemAttributesList = (\n attrValue: ImageAttributeValue = {} as ImageAttributeValue,\n attrType: AttributeType,\n fieldsOrder: ImageAttributeFieldsOrder\n) => {\n const notSystemAttrTypes = filterByNotSystemAttributeTypes(attrType.attributes);\n\n return filterByFieldsOrder(Object.keys(attrValue.value || {}), fieldsOrder).reduce((result, key) => {\n const attrType = notSystemAttrTypes.find(({name}) => name === key);\n return attrType ? [...result, {attrType: attrType, values: attrValue.value[key]}] : result;\n }, []);\n};\n\nexport const isLink = (key: string) => {\n return ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail'].includes(key);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n title: {\n marginBottom: '10px',\n color: 'white',\n fontSize: '18px',\n lineHeight: '21px',\n '&$canAdd': {\n marginBottom: '3px'\n }\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n canAdd: {}\n});\n","import React, {Fragment} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {AttributeType, AttributeItem} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport MoreAttributesButton from '../../attributes/editMode/MoreAttributesButton';\nimport {getMoreAttrTypes} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n uri: string;\n onAddAttributes?: (items: AttributeItem[]) => void;\n};\n\nexport const MetaInfoHeader = ({attributeType, onAddAttributes, uri}: Props) => {\n const styles = useStyles();\n const moreAttrTypes = getMoreAttrTypes(attributeType);\n const canAdd = Boolean(onAddAttributes);\n\n const handleApply = (attrTypes: AttributeType[]) => {\n if (onAddAttributes) {\n onAddAttributes(attrTypes.map((attributeType) => ({attributeType, parentUri: uri})));\n }\n };\n\n return (\n <Box>\n <Typography className={classnames(styles.title, {[styles.canAdd]: canAdd})}>\n {i18n.text('Meta info')}\n </Typography>\n {canAdd && (\n <Fragment>\n <MoreAttributesButton\n label={i18n.text('Attributes')}\n data={moreAttrTypes}\n dense={false}\n onApply={handleApply}\n />\n <Divider className={styles.divider} />\n </Fragment>\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n marginBottom: '11px'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n marginRight: '12px',\n float: 'left'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n content?: string;\n isLink?: boolean;\n children?: React.ReactNode;\n};\n\nexport const MetaInfoItem = ({title, content, isLink, children}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n <span className={styles.title}>{title}</span>\n {isLink ? (\n <a className={styles.link} href={content}>\n {i18n.text('link')}\n </a>\n ) : (\n <span className={styles.content}>{content || children}</span>\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n padding: '10px 0'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n fontSize: '13px'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport AttributesPager from '../../attributes/readMode/AttributesPager';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoItem} from './MetaInfoItem/MetaInfoItem';\nimport {getNotSystemAttributesList, getSystemAttributesList} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ImageAttributeValue;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n};\n\nexport const MetaInfoList = ({attributeValue, attributeType, imageAttributeFieldsOrder}: Props) => {\n const styles = useStyles();\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n\n const systemAttributesList = getSystemAttributesList(attributeValue, imageAttributeFieldsOrder);\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n\n return (\n <Box className={styles.root}>\n {systemAttributesList.map(({title, value, isLink}) => (\n <MetaInfoItem key={title} isLink={isLink} title={title} content={value} />\n ))}\n {isViewMode &&\n notSystemAttributesList.map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={false}\n values={values}\n titleClassName={styles.title}\n contentClassName={styles.content}\n parentUri={attributeValue.uri}\n />\n ))}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {},\n form: {\n padding: '10px 0'\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n actions: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '4px'\n },\n cancelButton: {\n color: 'white',\n marginRight: '8px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, ImageAttributeValue, Mode, isTempUri, AttributeItem} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport AttributesPager from '../../attributes/editMode/AttributesPager';\nimport {getNotSystemAttributesList} from '../helpers';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeValue: ImageAttributeValue;\n hasChanges: boolean;\n onDeleteAttribute: (item: AttributeItem) => void;\n onChangeAttribute: (item: AttributeItem) => void;\n onAddAttributes: (items: AttributeItem[]) => void;\n onCancel: () => void;\n onApply: () => void;\n mode: Mode;\n};\n\nexport const MetaInfoForm = ({\n attributeType,\n imageAttributeFieldsOrder,\n attributeValue,\n hasChanges,\n onDeleteAttribute,\n onChangeAttribute,\n onAddAttributes,\n onCancel,\n onApply,\n mode\n}: Props) => {\n const styles = useStyles();\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n const shouldShowActionButtons =\n notSystemAttributesList.length !== 0 || (notSystemAttributesList.length === 0 && hasChanges);\n\n return (\n <Box className={styles.root}>\n <Box className={styles.form}>\n {notSystemAttributesList.map(({attrType, values}) => {\n return (\n <AttributesPager\n key={attrType.uri}\n parentUri={attributeValue.uri}\n attributeType={attrType}\n values={values}\n showEmptyEditors={isTempUri(attributeValue.uri)}\n mode={mode}\n drawLines={false}\n onDeleteAttribute={onDeleteAttribute}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n />\n );\n })}\n </Box>\n {shouldShowActionButtons && (\n <>\n <Divider className={styles.divider} />\n <Box className={styles.actions}>\n <Button disabled={!hasChanges} onClick={onCancel} className={styles.cancelButton}>\n {i18n.text('Cancel')}\n </Button>\n <Button disabled={!hasChanges} onClick={onApply} color=\"primary\">\n {i18n.text('Apply')}\n </Button>\n </Box>\n </>\n )}\n </Box>\n );\n};\n","import {useEffect, useState, useContext, useCallback} from 'react';\nimport {equals} from 'ramda';\nimport {useDispatch} from 'react-redux';\nimport {profile} from '@reltio/mdm-module';\nimport {\n addAttribute,\n editAttribute,\n removeAttribute,\n AttributeType,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '../../../contexts';\n\ntype Params = {\n initialAttributeValue: ImageAttributeValue;\n attributeType: AttributeType;\n};\n\nexport const useEditMetaInfo = ({initialAttributeValue, attributeType}: Params) => {\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const [attributeValue, setAttributeValue] = useState(initialAttributeValue);\n\n useEffect(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const nestingLevel = 1;\n const hasChanges = !equals(attributeValue, initialAttributeValue);\n\n const addAttributes = useCallback((attributes: AttributeItem[]) => {\n setAttributeValue((prevAttrValue) => {\n return attributes.reduce((attrValue, attribute) => {\n const {attributeType, parentUri, index} = attribute;\n return addAttribute({\n entity: attrValue,\n attributeType,\n parentUri,\n index,\n nestingLevel\n }) as ImageAttributeValue;\n }, prevAttrValue);\n });\n }, []);\n\n const changeAttribute = useCallback(({value, attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n editAttribute({\n entity: prevAttrValue,\n attributeType,\n uri,\n value,\n nestingLevel\n }) as ImageAttributeValue\n );\n }, []);\n\n const deleteAttribute = useCallback(({attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n removeAttribute({entity: prevAttrValue, attributeType, uri, nestingLevel}) as ImageAttributeValue\n );\n }, []);\n\n const clearLocalChanges = useCallback(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const applyLocalChanges = useCallback(() => {\n dispatch(\n profile.actions.modifyAttribute({\n value: attributeValue,\n attributeType: attributeType,\n uri: attributeValue.uri,\n viewId\n })\n );\n }, [attributeValue, attributeType, viewId, dispatch]);\n\n return {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n };\n};\n","import {theme} from '@reltio/mdm-sdk';\n\nconst darkTheme = {\n palette: {\n type: 'dark',\n primary: theme.palette.primary,\n secondary: theme.palette.secondary\n }\n} as const;\n\nexport {darkTheme};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {MuiThemeProvider, createMuiTheme} from '@material-ui/core/styles';\nimport {Box as Box} from '@material-ui/core';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoHeader} from '../MetaInfoHeader/MetaInfoHeader';\nimport {MetaInfoList} from '../MetaInfoList/MetaInfoList';\nimport {MetaInfoForm} from '../MetaInfoForm/MetaInfoForm';\nimport {useEditMetaInfo} from '../hooks/useEditMetaInfo';\nimport {darkTheme} from '../theme';\n\nconst darkMuiTheme = createMuiTheme(darkTheme);\n\ntype Props = {\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n attributeValue: ImageAttributeValue;\n};\n\nexport const MetaInfo = ({imageAttributeFieldsOrder, attributeType, attributeValue: initialAttributeValue}: Props) => {\n const {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n } = useEditMetaInfo({attributeType, initialAttributeValue});\n const mode = useSelector(mdm.selectors.getMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n return (\n <MuiThemeProvider theme={darkMuiTheme}>\n <Box>\n <MetaInfoHeader\n attributeType={attributeType}\n uri={attributeValue?.uri}\n onAddAttributes={isEditableMode ? addAttributes : undefined}\n />\n <MetaInfoList\n attributeType={attributeType}\n attributeValue={attributeValue}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n />\n {isEditableMode && (\n <MetaInfoForm\n mode={mode}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeType={attributeType}\n attributeValue={attributeValue}\n hasChanges={hasChanges}\n onDeleteAttribute={deleteAttribute}\n onChangeAttribute={changeAttribute}\n onAddAttributes={addAttributes}\n onCancel={clearLocalChanges}\n onApply={applyLocalChanges}\n />\n )}\n </Box>\n </MuiThemeProvider>\n );\n};\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative',\n backgroundColor: '#333',\n maxHeight: 'calc(100vh - 64px)',\n overflow: 'hidden'\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n paddingLeft: '16px',\n boxShadow: `0 1px 0 0 ${theme.palette.divider}`\n },\n headerTitle: {\n color: 'rgba(255, 255, 255, 0.87)',\n fontSize: '16px',\n lineHeight: '19px'\n },\n bodyWrapper: {\n maxHeight: 'calc(100% - 56px)',\n overflow: 'auto'\n },\n body: {\n padding: '16px'\n },\n formControlLabel: {\n marginLeft: 0,\n marginBottom: '27px'\n },\n checkboxLabel: {\n marginLeft: '8px',\n color: 'rgba(255,255,255,0.87)',\n fontSize: '13px',\n lineHeight: '15px'\n },\n checkbox: {\n color: 'white',\n padding: 0\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, Entity, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {MetaInfo} from '../MetaInfo/MetaInfo';\nimport {useStyles} from './styles';\n\nexport type ImageAttributeFieldsOrder = {\n order?: string[];\n excludeNames?: string[];\n includeNames?: string[];\n};\n\ntype Props = {\n className?: string;\n attributeValue: ImageAttributeValue;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsViewSidebar = ({className, attributeValue, handleSetAsDefault, attributeType}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const modifiedEntity =\n useSelector((state) => mdm.selectors.getModifiedEntity(state, entity?.uri)) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const entityToShow = isViewMode ? entity : modifiedEntity;\n const imageAttributeConfig = useSelector(mdm.selectors.getImageAttributesFieldsOrder) || {};\n const imageAttributeFieldsOrder: ImageAttributeFieldsOrder =\n imageAttributeConfig[entity?.type] || imageAttributeConfig?.default || {};\n\n const [isDefault, setIsDefault] = useState<boolean>(false);\n useEffect(() => {\n setIsDefault(entityToShow?.defaultProfilePic === attributeValue?.uri);\n }, [attributeValue?.uri, entityToShow]);\n\n const handleChange = useCallback(() => {\n handleSetAsDefault(attributeValue.uri);\n }, [attributeValue?.uri]);\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.header}>\n <Typography className={styles.headerTitle}>{i18n.text('Details')}</Typography>\n </Box>\n <Box className={styles.bodyWrapper}>\n <Box className={styles.body}>\n <FormControlLabel\n classes={{root: styles.formControlLabel, label: styles.checkboxLabel}}\n control={\n <Checkbox\n className={styles.checkbox}\n checked={isDefault}\n onChange={handleChange}\n color=\"default\"\n />\n }\n label={i18n.text('Set as default')}\n />\n <MetaInfo\n attributeType={attributeType}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeValue={attributeValue}\n />\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n width: '100%',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n main: {\n flex: '1 0 auto'\n },\n details: {\n width: '340px'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {ImageDetailsViewCarousel} from './ImageDetailsViewCarousel/ImageDetailsViewCarousel';\nimport {ImageDetailsViewSidebar} from './ImageDetailsViewSidebar/ImageDetailsViewSidebar';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n currentAttributeValueUri: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsView = ({\n attributeValues = [],\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n handleSetAsDefault,\n attributeType\n}: Props) => {\n const [attributeValueIndex, setAttributeValueIndex] = useState<number>(0);\n useEffect(() => {\n if (!currentAttributeValueUri) {\n onChangeAttributeValueIndex(0);\n } else {\n onChangeAttributeValueIndex(attributeValues.findIndex((value) => value.uri === currentAttributeValueUri));\n }\n }, [currentAttributeValueUri, attributeValues]);\n\n const onChangeAttributeValueIndex = useCallback(\n (index: number) => {\n setAttributeValueIndex(index);\n setCurrentAttributeValueUri(attributeValues[index]?.uri);\n },\n [attributeValues]\n );\n const styles = useStyles();\n\n return (\n <Box className={styles.root}>\n <ImageDetailsViewCarousel\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={onChangeAttributeValueIndex}\n attributeValues={attributeValues}\n className={styles.main}\n />\n <ImageDetailsViewSidebar\n handleSetAsDefault={handleSetAsDefault}\n attributeValue={attributeValues[attributeValueIndex]}\n className={styles.details}\n attributeType={attributeType}\n />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 24px',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n item: {\n padding: '2px'\n }\n}));\n","import React from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Grid as Grid} from '@material-ui/core';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport ImageActionsOverlay from '../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {useStyles} from './styles';\n\nexport type ImageItem = {\n id: string;\n src: string;\n};\n\ntype Props = {\n items: ImageItem[];\n selectedItems: string[];\n onSelectImage: (id: string) => void;\n onDeselectImage: (id: string) => void;\n onShareLink?: (id: string) => void;\n onSetAsDefault?: (id: string) => void;\n onDownload: (id: string) => void;\n onClickImage: (id: string) => void;\n onDelete?: (id: string) => void;\n};\n\nexport const GalleryView = ({\n items,\n selectedItems,\n onSelectImage,\n onDeselectImage,\n onShareLink,\n onSetAsDefault,\n onDownload,\n onClickImage,\n onDelete\n}: Props) => {\n const styles = useStyles();\n\n const renderImageActionsOverlay = (id: string) => {\n return (\n <ImageActionsOverlay\n id={id}\n selected={selectedItems.includes(id)}\n selectionMode={selectedItems.length !== 0}\n onSelect={() => onSelectImage(id)}\n onDeselect={() => onDeselectImage(id)}\n onShareLink={() => onShareLink(id)}\n onSetAsDefault={() => onSetAsDefault(id)}\n onDownload={() => onDownload(id)}\n onClick={() => onClickImage(id)}\n onDelete={onDelete ? () => onDelete(id) : undefined}\n canBeSelected\n />\n );\n };\n\n return (\n <Box className={styles.root}>\n <Grid container>\n {items.map(({id, src}) => (\n <Grid key={id} classes={{item: styles.item}} item>\n <Image\n size={ImageSizesStyles.LARGE}\n onClick={() => onClickImage(id)}\n src={src}\n overlay={renderImageActionsOverlay(id)}\n />\n </Grid>\n ))}\n </Grid>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n selectButton: {\n fontSize: '14px',\n fontWeight: 500,\n color: theme.palette.primary.main,\n textTransform: 'uppercase'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nimport type {ImageItem} from '../GalleryView/GalleryView';\n\ntype Props = {\n onSelectAll: () => void;\n onClearAll: () => void;\n selectedItems: unknown[];\n items: ImageItem[];\n};\n\nexport const HeaderLeft = ({selectedItems, items, onSelectAll, onClearAll}: Props) => {\n const styles = useStyles();\n const selectedAllItems = selectedItems.length === items.length;\n\n return (\n <Link\n component=\"button\"\n underline=\"none\"\n classes={{button: styles.selectButton}}\n onClick={selectedAllItems ? onClearAll : onSelectAll}\n >\n {selectedAllItems ? i18n.text('Clear selection') : i18n.text('Select all images')}\n </Link>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n downloadButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '30px'\n },\n shareButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '21px'\n },\n deleteButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '24px'\n },\n divider: {\n height: '31px',\n width: '1px',\n marginLeft: '10px',\n backgroundColor: 'rgba(255,255,255,0.38)'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport LinkIcon from '@material-ui/icons/Link';\nimport DownloadIcon from '../../../icons/Download';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n onDownload?: () => void;\n onShare?: () => void;\n onUpload?: () => void;\n onDelete?: () => void;\n};\n\nexport const HeaderRight = ({onDownload, onShare, onUpload, onDelete}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {onUpload && (\n <Button variant=\"contained\" color=\"primary\" onClick={onUpload} startIcon={<CloudUploadIcon />}>\n {i18n.text('Upload')}\n </Button>\n )}\n {onDownload && onUpload && <div className={styles.divider} />}\n {onDownload && (\n <SmallIconButtonWithTooltip\n className={styles.downloadButton}\n tooltipTitle={i18n.text('Download selected items')}\n icon={DownloadIcon}\n onClick={onDownload}\n />\n )}\n {onShare && (\n <SmallIconButtonWithTooltip\n className={styles.shareButton}\n tooltipTitle={i18n.text('Copy link')}\n icon={LinkIcon}\n onClick={onShare}\n />\n )}\n {onDelete && (\n <SmallIconButtonWithTooltip\n className={styles.deleteButton}\n tooltipTitle={i18n.text('Delete selected items')}\n icon={DeleteIcon}\n onClick={onDelete}\n />\n )}\n </>\n );\n};\n","/* eslint-disable indent */\nimport React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {filter, pipe, pluck, propEq} from 'ramda';\nimport {\n AttributeType,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ImageDetailsView} from '../ImageDetailsView/ImageDetailsView';\nimport {ImageGalleryDialog, Mode} from '../ImageGalleryDialog/ImageGalleryDialog';\nimport {GalleryView} from './GalleryView/GalleryView';\nimport {HeaderLeft} from './HeaderLeft/HeaderLeft';\nimport {HeaderRight} from './HeaderRight/HeaderRight';\n\nexport type Props = {\n attributeValues: ImageAttributeValue[];\n open: boolean;\n onClose?: () => void;\n currentAttributeValueUri?: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n attributeType: AttributeType;\n onDownload: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n};\n\nconst ImageAttributesGallery = ({\n attributeValues,\n open,\n onClose,\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n attributeType,\n onDownload,\n onShareLink,\n onSetAsDefault,\n onUpload,\n onDeleteAttribute\n}: Props) => {\n const [selectedItems, setSelectedItems] = useState<string[]>([]);\n const [mode, setMode] = useState<Mode>(Mode.GALLERY_MODE);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n\n useEffect(() => {\n setMode(currentAttributeValueUri ? Mode.DETAILS_MODE : Mode.GALLERY_MODE);\n }, [currentAttributeValueUri]);\n\n const imageItems = attributeValues.map((attribute) => ({\n src: getImageAttributeOvThumbnailUrl(attribute) as string,\n downloadURL: getImageAttributeOvUrl(attribute) as string,\n id: attribute.uri\n }));\n\n const handleSelect = (id: string) => {\n setSelectedItems((items) => [...items, id]);\n };\n\n const handleDeselect = (id: string) => {\n setSelectedItems((items) => items.filter((item) => item !== id));\n };\n\n const handleSelectAll = () => {\n setSelectedItems(pluck('id', imageItems));\n };\n\n const handleClearAll = () => {\n setSelectedItems([]);\n };\n\n const handleDownloadSelectedItems = () => {\n const downloadURLs = isGalleryMode\n ? pipe(\n filter(({id}) => selectedItems.includes(id)),\n pluck('downloadURL')\n )(imageItems)\n : [imageItems.find(propEq('id', currentAttributeValueUri)).downloadURL];\n onDownload(downloadURLs);\n };\n\n const handleDownload = (id: string) => {\n onDownload([imageItems.find(propEq('id', id)).downloadURL]);\n };\n\n const handleShareLink = (id: string) => {\n onShareLink(imageItems.find(propEq('id', id)).downloadURL);\n };\n\n const handleSharedCurrentItem = () => {\n handleShareLink(currentAttributeValueUri);\n };\n\n const handleSetAsDefault = (id: string) => {\n const attributeValue = attributeValues.find(({uri}) => uri === id);\n onSetAsDefault(attributeValue);\n };\n\n const handleDelete = (id: string) => {\n onDeleteAttribute({uri: id, attributeType});\n };\n\n const handleDeleteSelectedItems = () => {\n const deleteUris = isGalleryMode ? selectedItems : [currentAttributeValueUri];\n deleteUris.forEach((uri) => {\n handleDelete(uri);\n });\n if (selectedItems.length) setSelectedItems([]);\n };\n\n const isGalleryMode = mode === Mode.GALLERY_MODE;\n const isDetailsMode = mode === Mode.DETAILS_MODE;\n const hasSelectedItems = selectedItems.length > 0;\n const isHasSelectedItemsOrDetailsMode = isDetailsMode || (isGalleryMode && hasSelectedItems);\n\n const isShowDeleteButton = !isViewMode && isHasSelectedItemsOrDetailsMode;\n const isShowUploadButton = !isViewMode && (isDetailsMode || (isGalleryMode && !hasSelectedItems));\n\n const headerLeft = isGalleryMode && hasSelectedItems && (\n <HeaderLeft\n items={imageItems}\n selectedItems={selectedItems}\n onClearAll={handleClearAll}\n onSelectAll={handleSelectAll}\n />\n );\n\n const headerRight = (\n <HeaderRight\n onDelete={isShowDeleteButton ? handleDeleteSelectedItems : undefined}\n onDownload={isHasSelectedItemsOrDetailsMode ? handleDownloadSelectedItems : undefined}\n onShare={isDetailsMode ? handleSharedCurrentItem : undefined}\n onUpload={isShowUploadButton ? onUpload : undefined}\n />\n );\n\n const handleClickByImage = (id: string) => {\n setCurrentAttributeValueUri(id);\n setMode(Mode.DETAILS_MODE);\n };\n\n return (\n <ImageGalleryDialog\n mode={mode}\n open={open}\n onChangeMode={setMode}\n header={{\n left: headerLeft,\n right: headerRight\n }}\n onClose={onClose}\n >\n {isGalleryMode && (\n <GalleryView\n items={imageItems}\n selectedItems={selectedItems}\n onSelectImage={handleSelect}\n onDeselectImage={handleDeselect}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onDownload={handleDownload}\n onClickImage={handleClickByImage}\n onDelete={!isViewMode ? handleDelete : undefined}\n />\n )}\n {isDetailsMode && (\n <ImageDetailsView\n handleSetAsDefault={handleSetAsDefault}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeValues={attributeValues}\n attributeType={attributeType}\n />\n )}\n </ImageGalleryDialog>\n );\n};\n\nexport default ImageAttributesGallery;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {fade} from '@material-ui/core';\n\nexport type SIZES_TYPE = {\n imageMargin: number;\n imageWidth: number;\n imageHeight: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n imageBox: {\n position: 'relative',\n display: 'flex',\n width: '100%',\n flexGrow: 1,\n flexShrink: 0,\n flexWrap: 'nowrap',\n marginTop: '2px',\n overflow: 'hidden'\n },\n\n moreButtonContainer: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n position: 'absolute',\n right: 0,\n cursor: 'pointer'\n };\n },\n moreButton: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: imageWidth,\n height: imageHeight,\n backgroundColor: fade(theme.palette.primary.main, 0.06)\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n ImageAttributeValue,\n insertDefaultImageByAttrUri,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {BlockImageGalleryDialogContext} from '../../../contexts';\nimport ImageAttributesGallery from '../../ImageAttributesGallery/ImageAttributesGallery';\nimport {downloadImagesByURLs} from '../helpers/imageAttributes';\nimport {DEFAULT_IMAGE_SIZE, IMAGE_MIN_VISIBLE_WIDTH} from './constants';\nimport {SIZES_TYPE, useStyles} from './styles';\n\nexport type ImageRenderProps = {\n onDownload?: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onOpenImageGalleryDialog: (uri?: string) => void;\n};\n\nexport type RenderImage = (imageRenderProps?: ImageRenderProps) => (attributeValue: ImageAttributeValue) => JSX.Element;\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n renderImage: RenderImage;\n overlay?: boolean;\n countFixedItems?: number;\n children?: React.ReactNode;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n parentUri?: string;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n renderImage,\n overlay = false,\n countFixedItems = 0,\n children,\n onUpload,\n onDeleteAttribute,\n imageSize = DEFAULT_IMAGE_SIZE,\n paging,\n parentUri,\n showNonOv,\n requestNextPageOfAttributeValues\n}: Props) => {\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const dispatch = useDispatch();\n const styles = useStyles(imageSize);\n useEffect(() => {\n if (paging && requestNextPageOfAttributeValues) {\n const totalVisibleValues = showNonOv ? paging.totalOvValues : paging.totalValues;\n if (totalVisibleValues > attributeValues.length) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values: [],\n defaultMaxValues: totalVisibleValues\n });\n }\n }\n }, [paging, requestNextPageOfAttributeValues, attributeType, parentUri, attributeValues.length, showNonOv]);\n\n const lastWidth = useRef<number | null>();\n const [maxItems, setMaxItems] = useState<number>(0);\n const [hiddenItemsLength, setHiddenItemsLength] = useState<number>(0);\n\n const isBlockImageGalleryDialog = useContext(BlockImageGalleryDialogContext);\n const [isOpenDialog, setIsOpenDialog] = useState<boolean>(false);\n const [currentAttributeValueUri, setCurrentAttributeValueUri] = useState<string>();\n\n const adjustMaxItemsToScreenWidth = useCallback(\n (width: number) => {\n const {imageMargin, imageWidth} = imageSize;\n const maxItemsPerScreen = Math.floor((width + imageMargin) / (imageWidth + imageMargin)) - countFixedItems;\n const hasHiddenImage =\n width + imageMargin - (maxItemsPerScreen + countFixedItems) * (imageWidth + imageMargin) <\n IMAGE_MIN_VISIBLE_WIDTH;\n setMaxItems(maxItemsPerScreen);\n if (attributeValues.length > maxItemsPerScreen) {\n setHiddenItemsLength(attributeValues.length - maxItemsPerScreen + (hasHiddenImage ? 1 : 0));\n } else {\n setHiddenItemsLength(0);\n }\n },\n [attributeValues.length, countFixedItems, imageSize]\n );\n\n const handleResize = useCallback(\n (width) => {\n adjustMaxItemsToScreenWidth(width);\n lastWidth.current = width;\n },\n [adjustMaxItemsToScreenWidth]\n );\n\n useEffect(() => {\n if (lastWidth.current) {\n adjustMaxItemsToScreenWidth(lastWidth.current);\n }\n }, [attributeValues.length, adjustMaxItemsToScreenWidth]);\n\n const handleOpenImageGalleryDialog = useCallback(\n (uri?: string) => {\n if (!isBlockImageGalleryDialog) {\n setCurrentAttributeValueUri(uri);\n setIsOpenDialog(true);\n }\n },\n [isBlockImageGalleryDialog]\n );\n\n const handleCloseImageGalleryDialog = useCallback(() => {\n setIsOpenDialog(false);\n }, []);\n\n const handleDownload = (urls: string[]) => downloadImagesByURLs(urls);\n const handleShareLink = (url: string) => navigator.clipboard.writeText(url);\n\n const handleSetAsDefault = useCallback(\n (attributeValue: ImageAttributeValue) => {\n if (isViewMode) {\n insertDefaultImageByAttrUri(entity.uri, attributeValue.uri).then(({status}) => {\n if (status === 'success') {\n dispatch(profile.entity.actions.setDefaultProfilePic(attributeValue));\n }\n });\n } else {\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: attributeValue\n })\n );\n }\n },\n [isViewMode, entity.uri, dispatch]\n );\n\n const renderImageProps = {\n onOpenImageGalleryDialog: handleOpenImageGalleryDialog,\n ...(overlay && {\n onDownload: handleDownload,\n onShareLink: handleShareLink,\n onSetAsDefault: handleSetAsDefault\n })\n };\n\n return (\n <>\n <ReactResizeDetector handleWidth={true} onResize={handleResize} />\n <ImageAttributesGallery\n attributeValues={attributeValues}\n open={isOpenDialog}\n onClose={handleCloseImageGalleryDialog}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeType={attributeType}\n onDownload={handleDownload}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onUpload={onUpload}\n onDeleteAttribute={onDeleteAttribute}\n />\n <div className={styles.imageBox}>\n {children}\n {attributeValues.slice(0, maxItems).map(renderImage(renderImageProps))}\n {hiddenItemsLength > 0 && (\n <div className={styles.moreButtonContainer}>\n <div className={styles.moreButton} onClick={() => handleOpenImageGalleryDialog()}>\n <Typography className={styles.number}>{`+${hiddenItemsLength}`}</Typography>\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport default ImageAttributesLine;\n","const getFilenameFromURL = (url: string) => url.split('/').pop();\nconst isAbsoluteUrl = (url: string) => url.indexOf('://') > 0 || url.indexOf('//') === 0;\n\nconst isExternalUrl = (url: string) => {\n if (!isAbsoluteUrl(url)) return false;\n\n const urlParts = new URL(url);\n return urlParts.host !== location.host;\n};\n\nconst REMOVE_IFRAME_DELAY = 30000;\n\nexport const downloadImagesByURLs = (urls: string[]) => {\n urls.forEach((url, index) => {\n try {\n if (isExternalUrl(url)) {\n const iframe = document.createElement('iframe');\n iframe.setAttribute('style', 'display: none;');\n iframe.setAttribute('src', url);\n document.body.appendChild(iframe);\n setTimeout(() => document.body.removeChild(iframe), (index + 1) * REMOVE_IFRAME_DELAY);\n } else {\n const link = document.createElement('a');\n link.href = url;\n link.download = getFilenameFromURL(url);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n } catch (e) {\n console.error(e);\n }\n });\n};\n","import {ImageSizesStyles} from '../../Image/Image';\n\nexport const IMAGE_WIDTH = ImageSizesStyles.SMALL.imageWidth;\nexport const IMAGE_HEIGHT = ImageSizesStyles.SMALL.imageHeight;\nexport const IMAGE_MARGIN = 4;\nexport const IMAGE_MIN_VISIBLE_WIDTH = 8;\n\nexport const DEFAULT_IMAGE_SIZE = {imageMargin: IMAGE_MARGIN, imageWidth: IMAGE_WIDTH, imageHeight: IMAGE_HEIGHT};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n height: '16px',\n borderColor: fade(theme.palette.primary.main, 0.54)\n },\n label: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px',\n lineHeight: '11px',\n color: theme.palette.primary.main\n }\n}));\n","import React, {useCallback} from 'react';\nimport classnames from 'classnames';\nimport {Chip as Chip} from '@material-ui/core';\nimport {\n getAttrDataTypeDefinition,\n getAttributeValue,\n isComplexAttribute,\n getLabel,\n AttributeType,\n SimpleAttributeValue,\n NestedAttributeValue,\n ReferenceAttributeValue,\n getEntityUriFromAttributeUri\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport DataTypeValue from '../../DataTypeValue/DataTypeValue';\nimport {withTooltip} from '../../../HOCs';\nimport {useDispatch} from 'react-redux';\n\nimport {useStyles} from './styles';\n\nexport const ChipWithTooltip = withTooltip(Chip);\n\ntype ComplexWithLabel = NestedAttributeValue | ReferenceAttributeValue;\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n nonOvValues: Array<SimpleAttributeValue | ComplexWithLabel>;\n nonOvTotal: number;\n};\nconst OvIcon = ({className, attributeType, nonOvValues = [], nonOvTotal}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const attributeUri = nonOvValues?.[0]?.uri;\n const onClick = useCallback(() => {\n const entityUri = attributeUri ? getEntityUriFromAttributeUri(attributeUri) : '';\n dispatch(ui.actions.openEntity({uri: entityUri, viewId: null, screen: 'sources'}));\n }, [attributeUri, dispatch]);\n\n if (!nonOvTotal) {\n return null;\n }\n\n const tooltipTitle = nonOvValues.length\n ? nonOvValues.map((value, i) => (\n <div key={i}>\n {isComplexAttribute(attributeType) ? (\n getLabel((value as ComplexWithLabel).label)\n ) : (\n <DataTypeValue\n value={getAttributeValue(value)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n rich={false}\n />\n )}\n </div>\n ))\n : null;\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n tooltipPlacement=\"top\"\n label={`+ ${nonOvTotal}`}\n variant=\"outlined\"\n onClick={onClick}\n classes={{\n root: classnames(styles.container, className),\n label: styles.label\n }}\n />\n );\n};\n\nexport default OvIcon;\n","import {\n AttributeType,\n AttributeValue,\n DataTypes,\n findAttributeTypeByUri,\n isOv,\n Metadata,\n PivotingAttribute,\n RecordAttributesType,\n PrimitiveValue,\n getLastUriPart,\n PivotingValue\n} from '@reltio/mdm-sdk';\n\nconst getPivotingChildrenUris = (attributeType: AttributeType, pivotingAttributes: PivotingAttribute[]) => {\n const pivotingAttribute = pivotingAttributes.find((attribute) => {\n return attribute.uri === attributeType.uri;\n });\n\n return pivotingAttribute && Array.isArray(pivotingAttribute.children) ? pivotingAttribute.children : [];\n};\n\nexport const generatePivotingValue = (\n attributeType: AttributeType,\n value: RecordAttributesType,\n pivotingAttributes: PivotingAttribute[],\n metadata: Metadata\n): PivotingValue[] => {\n const pivotingChildrenUris = getPivotingChildrenUris(attributeType, pivotingAttributes);\n let pivotingChildren = attributeType?.attributes || attributeType?.analyticsAttributes || [];\n if (pivotingChildrenUris.length) {\n pivotingChildren = pivotingChildren.filter((attrType) => pivotingChildrenUris.includes(attrType.uri));\n }\n\n return pivotingChildren.reduce((acc, attribute) => {\n const values = valueToString(value[attribute.name] as AttributeValue[], metadata, pivotingAttributes);\n if (values && values.length) {\n if (Array.isArray(values[0])) {\n acc.push({[attribute.uri]: values[0]});\n } else {\n acc.push({[attribute.uri]: values});\n }\n }\n return acc;\n }, []);\n};\n\nexport const convertSimpleAttributePivotingValue = (attrType: AttributeType, value: PrimitiveValue) => [\n {[attrType.name]: value}\n];\nexport const convertNestedAttributePivotingValue = (values: PivotingValue[]) => {\n return values.map((value) => {\n return Object.fromEntries(Object.entries(value).map(([key, value]) => [getLastUriPart(key), value]));\n });\n};\n\nconst valueToString = (values: AttributeValue[], metadata: Metadata, pivotingAttributes: PivotingAttribute[]) => {\n if (!values || values.length === 0) return;\n\n return values.reduce((acc, valueContainer) => {\n if ('type' in valueContainer && valueContainer.type) {\n const value = 'lookupCode' in valueContainer ? valueContainer.lookupCode : valueContainer.value;\n const attributeType = findAttributeTypeByUri(metadata, valueContainer.type);\n if (value && typeof value !== 'object' && isOv(valueContainer)) {\n acc.push(preparePivotingAttributeValue(value, attributeType));\n } else if (value && typeof value === 'object' && !Array.isArray(value)) {\n acc.push(generatePivotingValue(attributeType, value, pivotingAttributes, metadata));\n }\n }\n return acc;\n }, []);\n};\n\nexport const preparePivotingAttributeValue = (value: PrimitiveValue, attributeType: AttributeType) => {\n switch (attributeType?.type) {\n case DataTypes.TYPE_DATE:\n return new Date(value as number).getTime();\n case DataTypes.TYPE_TIMESTAMP: {\n if (!isNaN(Number(value))) {\n return new Date(Number(value)).getTime();\n } else {\n return new Date(value as number).getTime();\n }\n }\n default:\n return value;\n }\n};\n","import React from 'react';\n\nconst SvgPivotingIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={11} height={11} viewBox=\"0 0 11 11\" {...props}>\n <path\n d=\"M2.514 5h2.314V3l2.5 2.5-2.5 2.5V6h-3.8a4.5 4.5 0 10.73-3H.6a5.5 5.5 0 11-.577 3H0V5H2.514z\"\n fill=\"#6CACE4\"\n stroke=\"none\"\n strokeWidth={1}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n};\n\nexport default SvgPivotingIcon;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n container: {\n backgroundColor: 'white',\n width: '360px',\n minWidth: '360px',\n maxWidth: '720px'\n },\n header: {\n display: 'flex',\n height: '48px',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingLeft: '16px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px'\n },\n entityTypeLabel: {\n color: 'rgba(0,0,0,0.67)',\n fontSize: '14px',\n paddingLeft: '16px',\n paddingBottom: '12px',\n lineHeight: '16px'\n },\n divider: {\n height: '24px',\n width: '1px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n headerCount: {\n color: theme.palette.text.secondary,\n fontSize: '14px',\n letterSpacing: '0.24px',\n lineHeight: '28px',\n width: '210px'\n },\n body: {\n borderBottom: '1px solid rgba(0,0,0,0.12)',\n padding: '0 16px 8px'\n },\n footer: {\n display: 'flex',\n alignItems: 'center',\n height: '31px',\n paddingLeft: '16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n profileIcon: {\n height: '16px',\n width: '16px'\n },\n entityContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px',\n textDecoration: 'none',\n paddingLeft: '8px'\n },\n icon: {\n margin: 'auto 8px auto 0'\n },\n content: {\n color: theme.palette.primary.main,\n cursor: 'pointer'\n },\n seeAllButton: {\n cursor: 'pointer'\n }\n}));\n\nexport const usePivotingTooltipStyles = makeStyles({\n tooltip: {\n backgroundColor: 'white',\n boxShadow: '0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.2)',\n padding: 0,\n borderRadius: '4px',\n maxWidth: 'none'\n },\n arrow: {\n '&::before': {\n backgroundColor: 'white'\n }\n }\n});\n","import React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n getEntityUriForLink,\n getFilteredEntities,\n getLabel,\n getTotals,\n GlobalSearchRequestOptions,\n PrimitiveValue,\n PivotingValue,\n convertPivotingValueToSearchFilters\n} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport {useSafePromise} from '../../../hooks';\nimport {useStyles} from './styles';\n\nconst MAX_ENTITIES_PIVOTING_TOOLTIP = 6;\n\nexport type Props = {\n value: PivotingValue[] | PrimitiveValue;\n attributeType: AttributeType;\n config: {\n label?: string;\n entityType?: string;\n };\n onSeeAllClick: () => void;\n};\n\nexport const PivotingTooltipContent = ({value, attributeType, config = {}, onSeeAllClick}: Props) => {\n const [entities, setEntities] = useState<Entity[]>([]);\n const [total, setTotal] = useState(0);\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const safePromise = useSafePromise();\n const styles = useStyles();\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions =\n useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {};\n const entityType = config.entityType || entity.type;\n\n const shouldShowSeeAllButton = total > MAX_ENTITIES_PIVOTING_TOOLTIP;\n\n useEffect(() => {\n const filters = convertPivotingValueToSearchFilters({value, attributeType, entityType});\n const options = {\n max: MAX_ENTITIES_PIVOTING_TOOLTIP,\n ...globalSearchRequestOptions\n };\n safePromise(Promise.all([getFilteredEntities(filters, options), getTotals(filters, options)]))\n .then((results) => {\n const [entities, {total}] = results;\n setEntities(Array.isArray(entities) ? entities : []);\n setTotal(total);\n })\n .catch(() => {\n setEntities([]);\n setTotal(0);\n });\n }, []);\n\n const hasEntityTypeLabel = Boolean(config.label);\n return (\n <div className={styles.container}>\n <div className={styles.header}>\n <div className={styles.title}>{i18n.text('Pivot profiles')}</div>\n <div className={styles.divider} />\n <div className={styles.headerCount}>\n {i18n.number(total, '0,0') + ' ' + (total === 1 ? i18n.text('item') : i18n.text('items'))}\n </div>\n </div>\n {hasEntityTypeLabel && <div className={styles.entityTypeLabel}>{config.label}</div>}\n <div className={styles.body}>\n {entities.map((visibleEntity) => (\n <div key={visibleEntity.uri} className={styles.entityContainer}>\n <EntityAvatar entity={visibleEntity} avatarClassName={styles.profileIcon} />\n <EntityUriLink className={styles.entityLabel} value={getEntityUriForLink(visibleEntity)}>\n {getLabel(visibleEntity.label)}\n </EntityUriLink>\n </div>\n ))}\n </div>\n {shouldShowSeeAllButton && (\n <div className={styles.footer}>\n <a className={styles.seeAllButton} onClick={onSeeAllClick}>\n {i18n.text('See all')}\n </a>\n </div>\n )}\n </div>\n );\n};\n","import React, {useContext} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport mdm, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n AttributeType,\n isNested,\n NestedAttributeValue,\n PrimitiveValue,\n RecordAttributesType,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {isNil} from 'ramda';\n\nimport {PivotingAttributeContext} from '../../../contexts';\nimport {\n convertNestedAttributePivotingValue,\n convertSimpleAttributePivotingValue,\n generatePivotingValue,\n preparePivotingAttributeValue\n} from './helpers';\nimport PivotingIcon from '../../../icons/PivotingIcon';\nimport {PivotingTooltipContent} from './PivotingTooltipContent';\nimport {usePivotingTooltipStyles, useStyles} from './styles';\n\ntype Props = {\n value: SimpleAttributeValue | NestedAttributeValue;\n attributeType: AttributeType;\n children?: React.ReactNode;\n className?: string;\n};\nexport const PivotingTooltip = ({value, attributeType, children, className}: Props) => {\n const styles = usePivotingTooltipStyles();\n const contentStyles = useStyles();\n const dispatch = useDispatch();\n const pivotingAttributesList = useContext(PivotingAttributeContext) || [];\n const isNestedAttribute = isNested(attributeType);\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n\n const pivotingValue = isNestedAttribute\n ? generatePivotingValue(attributeType, value.value as RecordAttributesType, pivotingAttributesList, metadata)\n : preparePivotingAttributeValue(\n (value as SimpleAttributeValue).lookupCode || (value.value as PrimitiveValue),\n attributeType\n );\n\n const isPivotingAttribute =\n pivotingAttributesList.some(({uri}) => uri === attributeType.uri) &&\n ((Array.isArray(pivotingValue) && pivotingValue.length) ||\n (!Array.isArray(pivotingValue) && !isNil(pivotingValue)));\n\n const pivotingAttribute = pivotingAttributesList.find(({uri}) => uri === attributeType.uri);\n\n const handleSeeAllClick = () => {\n const generatedValue = Array.isArray(pivotingValue)\n ? convertNestedAttributePivotingValue(pivotingValue)\n : convertSimpleAttributePivotingValue(attributeType, pivotingValue);\n\n dispatch(mdmModuleUi.actions.openPivotingPerspective({value: generatedValue, attributeType}));\n };\n\n return isPivotingAttribute ? (\n <Tooltip\n interactive\n arrow\n placement=\"right-start\"\n classes={styles}\n title={\n <PivotingTooltipContent\n value={pivotingValue}\n attributeType={attributeType}\n config={pivotingAttribute.popup}\n onSeeAllClick={handleSeeAllClick}\n />\n }\n >\n <span className={className}>\n <PivotingIcon className={contentStyles.icon} />\n <span className={contentStyles.content} onClick={handleSeeAllClick}>\n {children}\n </span>\n </span>\n </Tooltip>\n ) : (\n <>{children}</>\n );\n};\n","import EditModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return EditModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes, isReltioCrosswalk} from '@reltio/mdm-sdk';\nimport SimpleAttributeEditor from '../SimpleAttributeEditor/SimpleAttributeEditor';\nimport NestedAttribute from '../NestedAttribute/NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class EditModeAttributesFactory {\n static build(attributeType, props = {}) {\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n showEmptyEditors,\n onAddAttributes,\n lazy,\n errors,\n crosswalks,\n showNonOv,\n expanded,\n ...propsForSimpleAttribute\n } = props;\n /* eslint-enable @typescript-eslint/no-unused-vars */\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return (\n <SimpleAttributeEditor\n isReltioCrosswalk={isReltioCrosswalk(crosswalks, props.attributeValue)}\n {...propsForSimpleAttribute}\n />\n );\n }\n }\n}\n","import React, {memo, useCallback, useContext, useMemo, useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {\n getCreatableAttributeTypes,\n getAttributesListForEditMode,\n ModeType,\n getParentUri,\n checkCanCreateAttribute\n} from '@reltio/mdm-sdk';\nimport {path} from 'ramda';\n\nimport AttributesPager from '../AttributesPager';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport MoreAttributesButton from '../MoreAttributesButton';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\nimport {getMoreAttrTypes} from './helpers';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\n\nconst AttributesList = ({\n parentAttributeType,\n attrTypes,\n entity,\n parentUri,\n showEmptyEditors,\n mode,\n crosswalks,\n drawLines,\n children,\n className,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n onAddAttributes,\n onChangeAttribute,\n onDeleteAttribute,\n additionalControlsRenderer,\n showNonOv\n}) => {\n const {attributes = {}} = entity;\n const [hasDeletionsMap, setHasDeletionsMap] = useState({});\n const setHasDeletions = useCallback((attrTypeUri, value) => {\n setHasDeletionsMap((prevMap) => ({\n ...prevMap,\n [attrTypeUri]: value\n }));\n }, []);\n useEffect(() => {\n setHasDeletionsMap({});\n }, [parentUri]);\n const canCreateParentAttrType = useMemo(\n () => parentAttributeType && checkCanCreateAttribute({attributeType: parentAttributeType, mode}),\n [parentAttributeType, mode]\n );\n const creatableAttrTypes = useMemo(() => getCreatableAttributeTypes(mode, attrTypes), [attrTypes, mode]);\n const moreAttrTypes = getMoreAttrTypes(creatableAttrTypes, entity, showEmptyEditors, hasDeletionsMap);\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const pagersData = useMemo(\n () => getAttributesListForEditMode(attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes),\n [attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes]\n );\n\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const onAddMoreAttributes = useCallback(\n (attributeTypes) => {\n onAddAttributes(\n attributeTypes.map((attributeType) => ({\n attributeType,\n parentUri: attributeType === parentAttributeType ? getParentUri(parentUri) : parentUri\n }))\n );\n },\n [onAddAttributes, parentUri, parentAttributeType]\n );\n\n const decoratorProps = {\n enabled: drawLines\n };\n const hasDeletionsContextValue = useMemo(\n () => ({\n hasDeletionsMap,\n setHasDeletions\n }),\n [hasDeletionsMap, setHasDeletions]\n );\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n <BranchDecorator {...decoratorProps} plain={true}>\n {moreAttrTypes.length > 0 && (\n <MoreAttributesButton\n label={i18n.text('More attributes')}\n onApply={onAddMoreAttributes}\n dense={drawLines}\n data={moreAttrTypes}\n parent={canCreateParentAttrType && parentAttributeType}\n />\n )}\n </BranchDecorator>\n <HasDeletionsContext.Provider value={hasDeletionsContextValue}>\n {regularPagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], attributes)}\n parentUri={parentUri}\n showEmptyEditors={showEmptyEditors}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n />\n ))}\n </HasDeletionsContext.Provider>\n </div>\n );\n};\n\nAttributesList.propTypes = {\n parentAttributeType: PropTypes.object,\n attrTypes: PropTypes.array,\n entity: PropTypes.object,\n parentUri: PropTypes.string,\n children: PropTypes.node,\n showEmptyEditors: PropTypes.bool,\n mode: ModeType,\n crosswalks: PropTypes.array,\n drawLines: PropTypes.bool,\n showNonOv: PropTypes.bool,\n className: PropTypes.string,\n alwaysVisibleTypeUris: PropTypes.array,\n onAddAttributes: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n additionalControlsRenderer: PropTypes.func\n};\n\nexport default memo(AttributesList);\n","import {always, both, cond, has, T} from 'ramda';\nimport {\n AttributeType,\n Entity,\n isAnalyticAttribute,\n isRoleAttrType,\n isSpecialAttribute,\n isTagAttrType\n} from '@reltio/mdm-sdk';\n\nconst getSource = (\n attrType: AttributeType,\n entity: Entity\n): Entity | Entity['analyticsAttributes'] | Entity['attributes'] => {\n const {attributes = {}, analyticsAttributes = {}} = entity;\n return cond([\n [isSpecialAttribute, always(entity)],\n [both(isAnalyticAttribute, always(analyticsAttributes)), always(analyticsAttributes)],\n [T, always(attributes)]\n ])(attrType);\n};\n\nconst getNameProp = (attrType: AttributeType): string => {\n return isSpecialAttribute(attrType) ? 'uri' : 'name';\n};\n\nexport const getMoreAttrTypes = (\n attrTypes: AttributeType[],\n entity: Entity,\n showEmptyEditors?: boolean,\n hasDeletionsMap?: {[attrTypeUri: string]: boolean}\n): AttributeType[] => {\n return attrTypes.filter((attrType) => {\n const source = getSource(attrType, entity);\n const nameProp = getNameProp(attrType);\n return !(\n (attrType.singleValue || isRoleAttrType(attrType) || isTagAttrType(attrType)) &&\n (has(attrType[nameProp])(source) || (showEmptyEditors && !hasDeletionsMap?.[attrType.uri]))\n );\n });\n};\n","import React from 'react';\nimport {CardinalityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {allPass, always, cond, isNil, has, not, pipe, propSatisfies, T} from 'ramda';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\n\nconst valueCaption = (value) =>\n i18n.text('${value}', {\n value: value === 1 ? i18n.text('value') : i18n.text('values')\n });\n\nconst hasMinValue = has('minValue');\nconst hasMaxValue = has('maxValue');\nconst noMaxValue = pipe(hasMaxValue, not);\nconst minValueIsOne = propSatisfies((minValue) => minValue === 1, 'minValue');\nconst exactCardinality = ({minValue, maxValue}) => minValue && minValue === maxValue;\n\nconst generateMinCardinality = ({minValue}) =>\n i18n.text('This attribute can have minimum ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMaxCardinality = ({maxValue}) =>\n i18n.text('This attribute can have maximum ${maxValue} ${maxValueCaption}', {\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst generateExactCardinality = ({minValue}) =>\n i18n.text('This attribute should have ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMinMaxCardinality = ({minValue, maxValue}) =>\n i18n.text('${minCardinality} and maximum ${maxValue} ${maxValueCaption}', {\n minCardinality: generateMinCardinality({minValue}),\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst getCardinalityMessage = cond([\n [isNil, always('')],\n [exactCardinality, generateExactCardinality],\n [allPass([minValueIsOne, hasMaxValue]), generateMaxCardinality],\n [allPass([minValueIsOne, noMaxValue]), always('')],\n [allPass([hasMinValue, hasMaxValue]), generateMinMaxCardinality],\n [hasMaxValue, generateMaxCardinality],\n [hasMinValue, generateMinCardinality],\n [T, always('')]\n]);\n\nconst CardinalityMessage = ({cardinality}) => {\n const styles = useStyles();\n\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {getCardinalityMessage(cardinality)}\n </Typography>\n );\n};\n\nCardinalityMessage.propTypes = {\n cardinality: CardinalityType\n};\n\nexport default CardinalityMessage;\n","import {filter, propSatisfies} from 'ramda';\nimport {isTempUri} from '@reltio/mdm-sdk';\n\nconst filterNewValues = filter(propSatisfies(isTempUri, 'uri'));\n\nexport {filterNewValues};\n","import React, {useCallback, useRef, useState, useContext, useMemo} from 'react';\nimport {\n AttributeValue,\n createNewAttribute,\n getAttributeOwnError,\n isComplexAttribute,\n isEditableMode as checkIsEditableMode,\n isEmptyValue,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {add, always, has, ifElse, min, pipe, prop, T} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Title from '../../../Title/Title';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Cardinality from './CardinalityMessage';\nimport {AttributePagerProps} from './index';\nimport {useStyles} from './styles';\nimport {filterNewValues} from './utils';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport OvIcon from '../../OvIcon';\n\ntype Props = Required<Omit<AttributePagerProps, 'values'>> & {\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n nonVisibleValues: AttributeValue[];\n};\n\nconst AttributeRenderer = ({\n max,\n values,\n attributeType,\n parentUri,\n mode,\n drawLines,\n showEmptyEditors,\n errorMessage,\n errors,\n paging,\n crosswalks,\n showNonOv,\n nonVisibleValues,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n const [hadDeletions, setHadDeletions] = useState(false);\n const {label, required: isRequired, cardinality, name, uri: attributeTypeUri} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const isPinned = useMemo(() => pinnedAttributes?.includes(attributeTypeUri), [attributeTypeUri, pinnedAttributes]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = ((!hadDeletions && showEmptyEditors) || isRequired || isPinned) && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const onAddOneMore = useCallback(() => {\n setVisibleValuesCount(visibleValuesCount + 1);\n\n const attribute = {\n parentUri,\n index: visibleValuesCount,\n attributeType\n } as AttributeItem;\n\n return onAddAttributes(\n showEmpty && !isComplexAttribute(attributeType.type) ? [attribute, attribute] : [attribute]\n );\n }, [visibleValuesCount, onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const onDelete = useCallback(pipe(onDeleteAttribute, T, setHadDeletions), [onDeleteAttribute, setHadDeletions]);\n\n if (isEmptyValues && !showEmpty) {\n return null;\n }\n\n if (showEmpty && isEmptyValues) {\n values = [emptyEditorValue.current];\n }\n\n if (isEmptyValue(values)) {\n return null;\n }\n\n const newValuesCount = (filterNewValues(values) || []).length;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(\n has(totalProp),\n pipe(prop(totalProp), add(newValuesCount)),\n always(values.length)\n )(paging);\n\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues?.length;\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri,\n attributeTypeName: name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const lastIndex = shownValues ? shownValues.length - 1 : 0;\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <BranchDecorator enabled={drawLines}>\n <div className={styles.wrapper}>\n <div className={styles.titleWrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} className={styles.typeError} />}\n <div className={styles.attributesWrapper}>\n {shownValues.map((value, idx) => (\n <Attribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n errors={errors}\n ownError={getAttributeOwnError(value, idx, attributeType.uri, errors)}\n mode={mode}\n crosswalks={crosswalks}\n onAddOneMore={lastIndex === idx ? onAddOneMore : null}\n onAddAttributes={onAddAttributes}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n onDeactivateError={onDeactivateError}\n additionalControlsRenderer={additionalControlsRenderer}\n />\n ))}\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n </div>\n </BranchDecorator>\n );\n};\n\nexport default AttributeRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n roleContainer: {\n width: '100%'\n },\n\n valueContainer: {\n marginLeft: '8px',\n width: 0\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {prop, propEq} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {Metadata, Entity, EntityAttrTypes, getRolesForEntityType, getLastUriPart, AttributeItem} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport SimpleDropDownSelector from '../../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {MultiValueChip} from '../../..';\nimport {useStyles} from './styles';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\ntype Props = {\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst components = {MultiValue: MultiValueChip};\n\nexport const Roles = ({values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = entity.uri;\n\n const options = getRolesForEntityType(metadata, entity.type).map((role) => ({\n value: role.uri,\n label: role.label\n }));\n\n const formattedValues = (values || []).map((value) => {\n const label = options.find(propEq('value', value))?.label;\n\n return {\n value,\n label: label || getLastUriPart(value)\n };\n });\n\n const handleChange = useCallback(\n (values) => {\n const roles = values?.map(prop('value')) || [];\n onChange({\n value: roles,\n attributeType: EntityAttrTypes.roles,\n uri: entityUri\n });\n },\n [entityUri, onChange]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.roles});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <SimpleDropDownSelector\n label={''}\n height={40}\n isMulti={true}\n options={options}\n value={formattedValues}\n onChange={handleChange}\n components={components}\n classes={styles}\n className={styles.roleContainer}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getFacets, EntityAttrTypes, buildFilterQueryString, AttributeItem} from '@reltio/mdm-sdk';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport TypeaheadEditor from '../../../editors/TypeaheadEditor/TypeaheadEditor';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst filtersWithSearch = (searchQuery) => [\n {\n filter: 'containsWordStartingWith',\n fieldName: 'tags',\n values: [searchQuery]\n }\n];\n\nconst getQuery = (searchQuery) =>\n searchQuery ? `?filter=${buildFilterQueryString()(filtersWithSearch(searchQuery))}` : '';\n\nconst body = [\n {\n fieldName: 'tags',\n orderType: 'reversedCount'\n }\n];\n\nconst getSuggestions = (searchQuery) =>\n getFacets({query: getQuery(searchQuery), body}).then((response) => Object.keys(response.tags));\n\nconst Tags = ({className, values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const handleChange = useCallback(\n (tags) => {\n onChange({\n value: tags,\n attributeType: EntityAttrTypes.tags,\n uri: entityUri\n });\n },\n [onChange, entityUri]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.tags});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <TypeaheadEditor\n fullWidth\n multiple\n variant=\"filled\"\n className={className}\n value={values || []}\n onChange={handleChange}\n getSuggestions={getSuggestions}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n\nexport default Tags;\n","import React, {useCallback, useRef, useState} from 'react';\nimport {\n AttributeType,\n createNewAttribute,\n EntityAttrTypes,\n isEditableMode as checkIsEditableMode,\n Mode,\n isEmptyValue,\n isActivenessAttrType,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {pipe, T} from 'ramda';\nimport {Box as Box} from '@material-ui/core';\nimport Title from '../../../Title/Title';\nimport Cardinality from './CardinalityMessage';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Attribute from '../AttributesFactory/Attribute';\nimport {Roles} from '../Roles/Roles';\nimport Tags from '../Tags';\nimport {useStyles} from './styles';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\nimport {withContext} from '../../../../HOCs';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n parentUri: string;\n mode: Mode;\n errorMessage?: string;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n showEmptyEditors?: boolean;\n hasDeletions?: boolean;\n setHasDeletions?: (attrTypeUri: string, value: boolean) => void;\n};\n\nexport const SpecialRenderer = ({\n values,\n attributeType,\n parentUri,\n mode,\n errorMessage,\n onDeleteAttribute,\n onChangeAttribute,\n showEmptyEditors,\n hasDeletions: hasDeletionsProp,\n setHasDeletions,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const {label, required: isRequired, cardinality} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n const [hasDeletionsState, setHasDeletionsState] = useState(false);\n const updateHasDeletions = useCallback(\n (value: boolean) => {\n setHasDeletionsState(value);\n setHasDeletions?.(attributeType.uri, value);\n },\n [attributeType.uri, setHasDeletions]\n );\n const hasDeletions = hasDeletionsProp !== undefined ? hasDeletionsProp : hasDeletionsState;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onDelete = useCallback(pipe(onDeleteAttribute, T, updateHasDeletions), [\n onDeleteAttribute,\n updateHasDeletions\n ]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = !hasDeletions && showEmptyEditors && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const renderValue = () => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n case EntityAttrTypes.roles.uri:\n return <Roles values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n default: {\n //startDate, endDate\n const value = {\n ...emptyEditorValue.current,\n value: values[0] || ''\n };\n return (\n <Attribute\n attributeValue={value}\n attributeType={attributeType}\n mode={mode}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n {...otherProps}\n />\n );\n }\n }\n };\n\n if (isActivenessAttrType(attributeType) && isEmptyValues && !showEmpty) {\n return null;\n }\n\n return (\n <Box className={styles.wrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} />}\n <Box className={styles.attributesWrapper}>{renderValue()}</Box>\n </Box>\n );\n};\n\nexport default withContext(\n HasDeletionsContext,\n (contextValue, {attributeType}) => {\n const {hasDeletionsMap, setHasDeletions} = contextValue || {};\n return {\n hasDeletions: hasDeletionsMap ? Boolean(hasDeletionsMap[attributeType?.uri]) : undefined,\n setHasDeletions\n };\n },\n SpecialRenderer\n);\n","import React, {memo} from 'react';\nimport {\n ImageAttributeValue,\n isImage,\n isOv,\n isSpecialAttribute,\n Mode,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {always, cond, T, partition} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport AttributeRenderer from './AttributeRenderer';\nimport {AttributePagerProps} from './index';\nimport SpecialRenderer from './SpecialRenderer';\nimport {useStyles} from './styles';\nimport Title from '../../../Title/Title';\n\nenum RENDERER_TYPES {\n imageLine = 'imageLine',\n special = 'special',\n default = 'default'\n}\n\nconst AttributesPager = ({\n values,\n attributeType,\n mode = Mode.Viewing,\n crosswalks,\n drawLines,\n paging = {},\n parentUri,\n errors,\n errorMessage,\n max = Infinity,\n showEmptyEditors,\n showNonOv,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: AttributePagerProps) => {\n const styles = useStyles();\n const partitionByOv = partition(isOv);\n const [ovValues, nonOvValues] = partitionByOv(values);\n\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n\n const commonProps = {\n errorMessage,\n errors,\n mode,\n parentUri,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n showEmptyEditors\n };\n\n const renderAttribute = () => {\n const type: RENDERER_TYPES = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [T, always(RENDERER_TYPES.default)]\n ])(attributeType);\n\n switch (type) {\n case RENDERER_TYPES.special: {\n return (\n <BranchDecorator enabled={drawLines}>\n <SpecialRenderer\n values={visibleValues as string[] | number[]}\n attributeType={attributeType}\n {...commonProps}\n />\n </BranchDecorator>\n );\n }\n case RENDERER_TYPES.imageLine:\n return (\n <BranchDecorator enabled={drawLines}>\n <div className={styles.wrapper}>\n <Title label={attributeType?.label} data-reltio-id=\"reltio-attribute-label\" />\n <ImageAttributesLine\n attributeValues={visibleValues as ImageAttributeValue[]}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={onChangeAttribute}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </div>\n </BranchDecorator>\n );\n default:\n return (\n <AttributeRenderer\n values={\n visibleValues as (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[]\n }\n attributeType={attributeType}\n max={max}\n paging={paging}\n crosswalks={crosswalks}\n drawLines={drawLines}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n nonVisibleValues={nonVisibleValues}\n {...commonProps}\n />\n );\n }\n };\n\n return renderAttribute();\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeError,\n AttributeType,\n Crosswalk,\n getAttributePagerActiveTypeErrorMessage,\n ImageAttributeValue,\n Mode,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport AttributesPager from './AttributesPager';\nimport CardinalityMessage from './CardinalityMessage';\n\ntype StateProps = {\n errorMessage: string;\n errors: AttributeError[];\n max: number;\n};\n\ntype DispatchProps = {\n onDeactivateError: (id: string) => void;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\ntype OwnProps = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | ImageAttributeValue\n | string\n | number\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n mode?: Mode;\n crosswalks?: Crosswalk[];\n parentUri: string;\n drawLines: boolean;\n max?: number;\n showEmptyEditors: boolean;\n showNonOv?: boolean;\n onAddAttributes: (params: AttributeItem[]) => void;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n additionalControlsRenderer?: (props) => JSX.Element;\n};\n\nexport type AttributePagerProps = StateProps & DispatchProps & OwnProps;\n\nconst mapStateToProps = (state, {parentUri, attributeType, max}: OwnProps): StateProps => ({\n errors: mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType),\n errorMessage: getAttributePagerActiveTypeErrorMessage(\n parentUri,\n attributeType,\n mdmModule.selectors.getProfileErrors(state)\n ),\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps: DispatchProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {AttributesPager, CardinalityMessage};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n caption: {\n fontSize: '0.7rem',\n opacity: 0.54\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start'\n },\n attributesWrapper: {\n width: '100%',\n marginBottom: '10px'\n },\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n },\n title: {\n fontSize: '12px',\n lineHeight: '14px',\n paddingLeft: '12px',\n color: theme.palette.text.secondary\n },\n typeError: {\n marginLeft: '12px'\n },\n ovIcon: {\n marginLeft: '8px',\n marginTop: '-1px',\n textIndent: 0\n },\n titleWrapper: {\n flex: 1,\n paddingBottom: '3px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n editor: {\n display: 'flex',\n flex: 1,\n height: '36px',\n alignItems: 'center'\n },\n label: {\n flex: 1,\n marginLeft: '2px',\n marginTop: '2px',\n fontSize: '13px',\n lineHeight: '15px'\n },\n actions: {\n display: 'flex',\n alignItems: 'center'\n },\n titleContainer: {\n display: 'flex',\n flex: 1,\n minHeight: '20px'\n },\n expandButton: {\n marginTop: '2px'\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n },\n errorWrapperHelperText: {\n marginLeft: 0\n }\n}));\n","import React, {useMemo, useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {\n checkCanDeleteAttribute,\n isReltioCrosswalk,\n isTempUri,\n ComplexAttributeType,\n ReferenceAttributeValueType,\n NestedAttributeValueType,\n AttributeTypeType,\n getErrorMessage,\n hasAttributeDescendantsWithErrors,\n isAnalyticAttribute\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport AttributesList from '../AttributesList/AttributesList';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\n\nconst ComplexAttribute = ({\n label,\n attributeTypesList,\n attributeType,\n attributeValue,\n children,\n errors,\n ownError,\n mode,\n metadata,\n crosswalks,\n lazy,\n showEmptyEditors,\n onAddOneMore,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n additionalControlsRenderer,\n hideDeleteButton,\n state,\n showNonOv,\n expanded: expandedProp = false\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const uri = attributeValue.uri;\n const isNew = isTempUri(uri);\n const defaultExpand = isNew || expandedProp;\n const [expanded, setExpanded] = useState(defaultExpand);\n useEffect(() => {\n setExpanded(defaultExpand);\n }, [defaultExpand]);\n const canDelete = useMemo(\n () =>\n checkCanDeleteAttribute({\n attributeType,\n attributeValue,\n mode,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, metadata, crosswalks]\n );\n const showDeleteButton = !deleted && !hideDeleteButton && !!onDeleteAttribute && canDelete;\n const onDeleteThis = () => onDeleteAttribute({uri, attributeType, attributeValue});\n\n const hasDescendantsWithErrors = useMemo(() => hasAttributeDescendantsWithErrors(attributeValue, errors), [\n errors,\n attributeValue\n ]);\n useEffect(() => {\n if (hasDescendantsWithErrors) {\n setExpanded(true);\n }\n }, [errors, hasDescendantsWithErrors]);\n useEffect(() => {\n if (deleted) {\n setExpanded(false);\n }\n }, [deleted]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null\n }),\n [attributeValue, hasAnalyticValue]\n );\n\n const errorMessage =\n getErrorMessage(ownError) || (hasDescendantsWithErrors && i18n.text('Has an incorrect value')) || '';\n\n return lazy ? (\n <Button variant=\"text\" color=\"primary\" onClick={onAddOneMore}>\n Create attribute\n </Button>\n ) : (\n <>\n <div className={styles.editor}>\n <div className={styles.titleContainer}>\n <ArrowExpandButton\n onClick={() => setExpanded((value) => !value)}\n expanded={expanded}\n className={styles.expandButton}\n disabled={deleted}\n />\n <ErrorWrapper errorMessage={errorMessage} classes={{helperText: styles.errorWrapperHelperText}}>\n <div\n className={classnames(styles.label, {[styles.deleted]: deleted})}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </div>\n </ErrorWrapper>\n </div>\n <div className={styles.actions}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && <SmallIconButton icon={DeleteIcon} onClick={onDeleteThis} size=\"L\" />}\n </div>\n </div>\n {expanded && (\n <AttributesList\n parentAttributeType={attributeType}\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n showEmptyEditors={showEmptyEditors || isNew}\n drawLines={true}\n parentUri={uri}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </>\n );\n};\n\nComplexAttribute.propTypes = {\n label: PropTypes.string,\n children: PropTypes.node,\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n ...ComplexAttributeType\n};\n\nexport default ComplexAttribute;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AttributesList from '../AttributesList';\nimport {ModeType} from '@reltio/mdm-sdk';\n\nconst defaultAttributeTypesSelectionStrategy = (entityType) => entityType && entityType.attributes;\n\nconst EntityCreator = ({\n entity,\n entityType,\n attributeTypesSelectionStrategy = defaultAttributeTypesSelectionStrategy,\n mode,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute\n}) => {\n const attributeTypes = useMemo(() => attributeTypesSelectionStrategy(entityType), [\n attributeTypesSelectionStrategy,\n entityType\n ]);\n return entity ? (\n <AttributesList\n key={entity.uri}\n attrTypes={attributeTypes}\n entity={entity}\n showEmptyEditors={true}\n drawLines={true}\n parentUri={entity.uri}\n mode={mode}\n crosswalks={entity.crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n ) : null;\n};\n\nEntityCreator.propTypes = {\n entityUri: PropTypes.string, // used for connect\n parentUri: PropTypes.string, // used for validation\n entity: PropTypes.object,\n entityType: PropTypes.object,\n attributeTypesSelectionStrategy: PropTypes.func,\n mode: ModeType,\n onAddAttributes: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func\n};\n\nexport default EntityCreator;\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport EntityCreator from './EntityCreator';\n\nconst mapStateToProps = (state, ownProps) => ({\n entity: ownProps.entityUri && mdmModule.selectors.getModifiedEntity(state, ownProps.entityUri)\n});\n\nconst mapDispatchToProps = {\n onAddAttributes: profile.actions.addAttributes,\n onDeleteAttribute: profile.actions.removeAttribute,\n onChangeAttribute: profile.actions.modifyAttribute\n};\n\nexport {EntityCreator};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EntityCreator);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n entityContainer: {\n display: 'flex',\n alignItems: 'center',\n height: '32px',\n minHeight: '32px',\n padding: 0\n },\n entityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.87)',\n cursor: 'pointer',\n lineHeight: '15px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n emptyEntityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.6)',\n lineHeight: '15px',\n marginLeft: '16px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n cursor: 'default'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '8px',\n marginRight: '11px'\n },\n entitySecondaryLabel: {\n color: 'rgba(0,0,0,0.6)'\n }\n});\n\nexport const useSingleValueStyles = makeStyles((theme) => ({\n singleValue: {\n color: 'rgba(0, 0, 0, 0.87)',\n fontSize: '14px',\n paddingTop: '18px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n linkValue: {\n cursor: 'pointer',\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n\nexport const useGroupStyles = makeStyles((theme) => ({\n addLabel: {\n color: theme.palette.primary.main,\n display: 'flex',\n fontWeight: '500',\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n groupHeading: {\n fontSize: '13px',\n height: '36px',\n padding: '0 16px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n addIcon: {\n height: '18px',\n width: '18px',\n padding: '0 9px'\n }\n}));\n\nexport const useClearIconStyles = makeStyles({\n clearIcon: {\n cursor: 'pointer',\n height: '20px',\n width: '20px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst EntityOption = ({innerRef, innerProps, selectOption, data}) => {\n const styles = useStyles();\n const {uri, entityType, label, secondaryLabel} = data;\n if (uri !== '') {\n return (\n <MenuItem\n className={styles.entityContainer}\n ref={innerRef}\n key={uri}\n onClick={() => selectOption({label, uri, entityType})}\n {...innerProps}\n >\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <span className={styles.entityLabel}>\n {label}\n {secondaryLabel && <span className={styles.entitySecondaryLabel}>, {secondaryLabel}</span>}\n </span>\n </MenuItem>\n );\n } else {\n return (\n <MenuItem className={styles.entityContainer} ref={innerRef} key={uri} {...innerProps} disabled={true}>\n <span className={styles.emptyEntityLabel}>{i18n.text('No results found')}</span>\n </MenuItem>\n );\n }\n};\n\nEntityOption.propTypes = {\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n innerProps: PropTypes.object.isRequired,\n selectOption: PropTypes.func.isRequired,\n data: PropTypes.shape({\n uri: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n entityType: EntityType.isRequired\n })\n};\n\nexport default EntityOption;\n","import React, {useContext} from 'react';\nimport {always, pipe} from 'ramda';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {useSingleValueStyles} from './styles';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getEntityLink, getLabel, isTempUri} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ViewIdContext} from '../../../../../contexts/ViewIdContext';\n\nconst SingleValue = (props) => {\n const {\n selectProps: {currentEntityType, menuIsOpen, disableLinkClick},\n children,\n data\n } = props;\n\n const styles = useSingleValueStyles();\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n\n const handleOnMouseDown = (event) => {\n event.stopPropagation();\n if (!disableLinkClick) {\n pipe(always({uri: data.entityUri, viewId}), ui.actions.openEntity, dispatch)();\n }\n };\n\n const valueProps = isTempUri(data.entityUri)\n ? {\n className: styles.singleValue,\n component: 'span'\n }\n : {\n className: classnames(styles.singleValue, styles.linkValue),\n onMouseDown: handleOnMouseDown,\n onClick: (e) => e.preventDefault(),\n href: getEntityLink({uiPath, uri: data.entityUri}),\n component: 'a'\n };\n\n return (\n !menuIsOpen && (\n <Typography {...valueProps}>\n {isTempUri(data.entityUri)\n ? i18n.text(`New ${currentEntityType.label} will be created`)\n : getLabel(children)}\n </Typography>\n )\n );\n};\n\nSingleValue.propTypes = {\n children: PropTypes.string,\n data: PropTypes.object.isRequired,\n selectProps: PropTypes.object.isRequired\n};\n\nexport default SingleValue;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport {useClearIconStyles} from './styles';\nimport {IconButton as IconButton} from '@material-ui/core';\n\nconst ClearIndicator = (props) => {\n const {\n selectProps: {onClear}\n } = props;\n\n const styles = useClearIconStyles();\n\n return (\n <IconButton onClick={onClear}>\n <ClearIcon className={styles.clearIcon} />\n </IconButton>\n );\n};\n\nClearIndicator.propTypes = {\n selectProps: PropTypes.object.isRequired\n};\n\nexport default ClearIndicator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {components} from 'react-select';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useGroupStyles} from './styles';\n\nconst {Group: ComponentsGroup} = components;\n\nconst Group = (props) => {\n const {\n selectProps: {inputValue, onCreate},\n data,\n children\n } = props;\n\n const styles = useGroupStyles();\n\n return (\n <ComponentsGroup {...props}>\n <div className={styles.groupHeading}>\n <span>{data.label}</span>\n {onCreate && (\n <span onClick={() => onCreate(inputValue, data.entityType)} className={styles.addLabel}>\n <AddIcon className={styles.addIcon} />\n {i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${data.label}`)}\n </span>\n )}\n </div>\n {children}\n </ComponentsGroup>\n );\n};\n\nGroup.propTypes = {\n selectProps: PropTypes.object.isRequired,\n data: PropTypes.object,\n children: PropTypes.array\n};\n\nexport default Group;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n creatorWrapper: {\n marginTop: '20px'\n }\n});\n","import React, {useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {isEmpty, prop} from 'ramda';\nimport {\n typeAheadSearch,\n getEntityType,\n MetadataType,\n ConnectionEntityType,\n ModeType,\n isTempUri,\n getLabel\n} from '@reltio/mdm-sdk';\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\nimport EntityOption from './components/EntityOption';\nimport SingleValue from './components/SingleValue';\nimport ClearIndicator from './components/ClearIndicator';\nimport EntityCreator from '../EntityCreator';\nimport {EmptyStub} from '../../../../core';\nimport Group from './components/Group';\nimport {useStyles} from './styles';\n\nconst buildEntityOptions = (entityTypes, onCreate) => (entities) => {\n const newOptions = entities.map((entity) => ({\n ...entity,\n label: getLabel(entity.label),\n entityType: entityTypes.find(({uri}) => uri === entity.type)\n }));\n\n const addDummyOptionToEmptyOptionList = (options) =>\n isEmpty(options)\n ? [\n {\n label: '',\n uri: '',\n entityType: {}\n }\n ]\n : options;\n\n const filteredEntityTypes = onCreate\n ? entityTypes\n : entityTypes.filter((type) => {\n return newOptions.some((option) => option.type === type.uri);\n });\n\n return filteredEntityTypes.length > 1\n ? filteredEntityTypes.map((type) => {\n return {\n label: type.label,\n entityType: type.uri,\n options: addDummyOptionToEmptyOptionList(newOptions.filter((option) => option.type === type.uri))\n };\n })\n : addDummyOptionToEmptyOptionList(newOptions);\n};\n\nconst EntitySelector = ({\n entity = {},\n entityTypesUris = [],\n mode,\n max,\n onChange,\n onCreate,\n metadata,\n globalSearchRequestOptions,\n attributeTypesSelectionStrategy,\n disableLinkClick = false,\n ...otherProps\n}) => {\n const styles = useStyles();\n const [inputValue, setInputValue] = useState('');\n\n const entityTypes = useMemo(() => entityTypesUris.map((type) => getEntityType(metadata, type)), [\n entityTypesUris,\n metadata\n ]);\n\n const options = {...globalSearchRequestOptions, max};\n\n const handleCreate = onCreate\n ? (value, entityTypeUri) => {\n onCreate(entityTypeUri || entityTypesUris[0], value);\n setInputValue('');\n }\n : undefined;\n\n const handleInputChange = (value) => {\n setInputValue(value);\n };\n\n const handleChange = (value) => {\n if (value !== null) {\n setInputValue('');\n onChange(value);\n }\n };\n\n const handleClear = () => {\n handleChange({});\n };\n\n const groupMode = useMemo(() => entityTypes.length !== 1, [entityTypes]);\n\n const getOptions = (value) =>\n typeAheadSearch(entityTypes, value, options).then(buildEntityOptions(entityTypes, onCreate));\n const currentEntityType = (isEmpty(entity) ? entityTypes[0] : getEntityType(metadata, entity.entityType)) || {};\n const createLabel =\n onCreate && i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${currentEntityType.label}`);\n const label = i18n.text(`Select ${entityTypes.length === 1 ? `${entityTypes[0].label} ` : ''}profile`);\n const isTempEntity = !isEmpty(entity) && isTempUri(entity.entityUri);\n const groupComponent = groupMode ? {Group, GroupHeading: EmptyStub} : {};\n const clearComponent = isTempEntity ? {ClearIndicator} : {};\n\n const {TextFieldProps, ...dropDownSelectorProps} = otherProps;\n\n const textFieldProps = useMemo(\n () => ({\n ...(TextFieldProps || {}),\n ['data-reltio-id']: 'reltio-entity-selector'\n }),\n [TextFieldProps]\n );\n return (\n <>\n <DropDownSelector\n value={!isEmpty(entity) ? entity : undefined}\n inputValue={inputValue}\n onInputChange={handleInputChange}\n getOptions={getOptions}\n getOptionLabel={prop('entityLabel')}\n onChange={handleChange}\n onCreate={handleCreate}\n onClear={handleClear}\n label={label}\n createLabel={createLabel}\n components={{\n Option: EntityOption,\n SingleValue: SingleValue,\n ...groupComponent,\n ...clearComponent\n }}\n currentEntityType={currentEntityType}\n isClearable={true}\n disableLinkClick={disableLinkClick}\n TextFieldProps={textFieldProps}\n {...dropDownSelectorProps}\n />\n {isTempEntity && (\n <div className={styles.creatorWrapper}>\n <EntityCreator\n mode={mode}\n attributeTypesSelectionStrategy={attributeTypesSelectionStrategy}\n entityType={currentEntityType}\n entityUri={entity.entityUri}\n />\n </div>\n )}\n </>\n );\n};\n\nEntitySelector.propTypes = {\n entity: ConnectionEntityType,\n entityTypesUris: PropTypes.arrayOf(PropTypes.string),\n max: PropTypes.number,\n mode: ModeType,\n dispatch: PropTypes.func,\n metadata: MetadataType,\n onChange: PropTypes.func.isRequired,\n onCreate: PropTypes.func,\n attributeTypesSelectionStrategy: PropTypes.func,\n globalSearchRequestOptions: PropTypes.object,\n disableLinkClick: PropTypes.bool\n};\n\nexport default EntitySelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '328px'\n },\n paper: {\n width: '100%',\n height: '40px',\n display: 'flex',\n alignItems: 'center',\n boxShadow: 'none',\n backgroundColor: 'rgba(0,0,0,0.03)'\n },\n inputRoot: {\n flex: 1\n },\n input: {\n padding: '0 12px',\n fontSize: '14px',\n '&:placeholder': {\n color: theme.palette.text.secondary\n }\n },\n errorMessage: {\n marginTop: '8px',\n fontSize: '12px',\n color: theme.palette.error.main\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Paper as Paper} from '@material-ui/core';\nimport {InputBase as InputBase} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n onSend: (url: string) => void;\n};\n\nconst isEmptyField = (value: string) => value.trim().length === 0;\n\nexport const ImageByUrlField = ({onSend}: Props) => {\n const styles = useStyles();\n\n const [value, setValue] = useState('');\n const [error, setError] = useState<string>(null);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n const regExp = new RegExp(/^(ftp|http|https):\\/\\/[^ \"]+$/);\n const isCorrectUrl = regExp.test(newValue);\n\n setValue(newValue);\n\n if (!isCorrectUrl && !isEmptyField(newValue)) {\n setError(i18n.text('URL is not correct'));\n } else {\n setError(null);\n }\n };\n\n const handleSend = () => {\n onSend(value);\n setValue('');\n setError(null);\n };\n\n return (\n <Box className={styles.root}>\n <Paper className={styles.paper}>\n <InputBase\n value={value}\n onChange={handleChange}\n classes={{root: styles.inputRoot, input: styles.input}}\n placeholder={i18n.text('Paste an image URL here')}\n />\n <Button\n disabled={Boolean(error) || isEmptyField(value)}\n variant=\"outlined\"\n color=\"primary\"\n onClick={handleSend}\n >\n {i18n.text('Send')}\n </Button>\n </Paper>\n {error && <Typography className={styles.errorMessage}>{error}</Typography>}\n </Box>\n );\n};\n","export const IMAGE_TYPES = ['image/png', 'image/jpeg', 'image/tiff', 'image/gif', 'image/bmp'];\nexport const MAX_IMAGE_SIZE = 20;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {IMAGE_TYPES} from '../constants';\n\ntype Props = {\n className?: string;\n onAppendFile?: (file: File) => void;\n};\n\nexport const SelectImageButton = ({className, onAppendFile}: Props) => {\n const handleInput = (e: React.FormEvent<HTMLInputElement>) => {\n if (onAppendFile) {\n onAppendFile(e.currentTarget.files[0]);\n }\n };\n\n return (\n <>\n <input\n onInput={handleInput}\n style={{display: 'none'}}\n accept={IMAGE_TYPES.join(',')}\n id=\"upload-image-button\"\n type=\"file\"\n />\n <label htmlFor=\"upload-image-button\">\n <Button className={className} variant=\"contained\" color=\"primary\" component=\"span\">\n {i18n.text('Select image')}\n </Button>\n </label>\n </>\n );\n};\n","import React from 'react';\n\nconst SvgUploadIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__c\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__d\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"67.572%\" y1=\"54.952%\" x2=\"15.212%\" y2=\"13.907%\" id=\"UploadIcon_svg__e\">\n <stop stopColor=\"#000\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#000\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__f\">\n <stop stopColor=\"#B8EDFF\" offset=\"0%\" />\n <stop stopColor=\"#53ACDE\" offset=\"100%\" />\n </linearGradient>\n <circle id=\"UploadIcon_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"UploadIcon_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#UploadIcon_svg__a\" />\n </mask>\n <use fillOpacity={0.1} fill=\"#0072CE\" xlinkHref=\"#UploadIcon_svg__a\" />\n <g mask=\"url(#UploadIcon_svg__b)\">\n <g strokeWidth={1} fill=\"none\" transform=\"translate(-1 9)\">\n <path\n d=\"M0 107.268c0 35.579 28.703 64.409 64.173 64.409h139.021c29.578 0 53.497-24.035 53.497-53.635 0-28.356-21.935-51.562-49.705-53.515C199.577 27.705 167.2 0 128.346 0 97.425 0 70.59 17.582 57.171 43.274 25.027 46.767 0 74.117 0 107.268z\"\n fill=\"#FFF\"\n opacity={0.3}\n />\n <ellipse\n fill=\"url(#UploadIcon_svg__c)\"\n opacity={0.4}\n cx={64.553}\n cy={107.664}\n rx={61.43}\n ry={62.336}\n />\n <path\n d=\"M127.979 8.91c38.773 0 70.206 31.895 70.206 71.24 0 39.346-31.433 71.241-70.206 71.241-6.067 0-11.954-.78-17.57-2.249 9.688-11.019 15.574-25.551 15.574-41.478 0-33.7-26.352-61.153-59.286-62.299C78.714 23.611 101.654 8.91 127.98 8.91z\"\n fill=\"url(#UploadIcon_svg__d)\"\n opacity={0.4}\n />\n </g>\n <path\n fill=\"url(#UploadIcon_svg__e)\"\n opacity={0.12}\n d=\"M82.093 128.474l38.374 37.966-10.666 18.958 72.714 71.94 63.578-57.537v-6.11l-71.107-70.352H97.22z\"\n transform=\"translate(-1 9)\"\n />\n <path\n fill=\"url(#UploadIcon_svg__f)\"\n d=\"M151.004 128.29v57.591h-40.836V128.29H81l49.5-49.409L180 128.29z\"\n transform=\"translate(-1 9)\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgUploadIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n padding: '36px 0 29px'\n },\n isActive: {\n backgroundColor: 'rgba(0,114,206,0.12)'\n },\n icon: {\n width: '190px',\n height: '190px',\n marginBottom: '24px'\n },\n title: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '24px'\n },\n description: {\n marginBottom: '24px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useDrop, DropTargetMonitor} from 'react-dnd';\nimport {NativeTypes} from 'react-dnd-html5-backend';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectImageButton} from '../SelectImageButton/SelectImageButton';\nimport UploadIcon from '../../../icons/UploadIcon';\nimport {MAX_IMAGE_SIZE} from '../constants';\nimport {useStyles} from './styles';\n\ntype Props = {\n onAppendFile: (file: File) => void;\n className?: string;\n};\n\nexport const TargetBox = ({onAppendFile, className}: Props) => {\n const styles = useStyles();\n\n const [{canDrop, isOver}, drop] = useDrop({\n accept: [NativeTypes.FILE],\n drop: (item) => {\n if (item) {\n // TODO remove after update react-dnd\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onAppendFile(item.files[0]);\n }\n },\n collect: (monitor: DropTargetMonitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n })\n });\n\n const isActive = canDrop && isOver;\n\n return (\n <div ref={drop} className={classnames(styles.root, {[styles.isActive]: isActive}, className)}>\n <UploadIcon className={styles.icon} />\n <Typography className={styles.title}>{i18n.text('Drag an image here')}</Typography>\n <Typography className={styles.description}>\n {i18n.text(\n 'Acceptable image types would include JPG, PNG, TIFF, GIF, BMP. Maximum image size: ${MAX_IMAGE_SIZE}Mb',\n {\n MAX_IMAGE_SIZE\n }\n )}\n </Typography>\n <SelectImageButton onAppendFile={onAppendFile} />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 30px',\n boxSizing: 'border-box'\n },\n border: {\n borderBottom: `1px solid ${theme.palette.text.primary}`,\n flex: 1,\n opacity: 0.12\n },\n text: {\n padding: '0 10px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: string;\n className?: string;\n};\n\nexport const DividerWithText = ({children, className}: Props) => {\n const styles = useStyles();\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.border} />\n <Typography className={styles.text}>{children}</Typography>\n <Box className={styles.border} />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n closeIcon: {\n color: '#fff'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {Snackbar as Snackbar} from '@material-ui/core';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n error: string | null;\n onClose?: () => void;\n};\n\nexport const ErrorSnackbar = ({error, onClose}: Props) => {\n const styles = useStyles();\n\n return (\n <Snackbar\n open={Boolean(error)}\n onClose={onClose}\n message={error}\n action={\n <SmallIconButtonWithTooltip\n className={styles.closeIcon}\n tooltipTitle={i18n.text('Close')}\n icon={CloseIcon}\n onClick={onClose}\n />\n }\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n dialogPaper: {\n position: 'relative',\n maxWidth: '480px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px',\n padding: '16px'\n },\n body: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '0 8px 49px',\n textAlign: 'center'\n },\n targetBox: {\n marginBottom: '8px'\n },\n divider: {\n marginBottom: '28px'\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {uploadImage as uploadImageRequest, ImageHostingItem} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport LinearLoadIndicator from '../LinearLoadIndicator/LinearLoadIndicator';\nimport {ImageByUrlField} from './ImageByUrlField/ImageByUrlField';\nimport {TargetBox} from './TargetBox/TargetBox';\nimport {DividerWithText} from './DividerWithText/DividerWithText';\nimport {ErrorSnackbar} from './ErrorSnackbar/ErrorSnackbar';\nimport {IMAGE_TYPES, MAX_IMAGE_SIZE} from './constants';\nimport {useStyles} from './styles';\nimport {DragAndDrop} from '../DragAndDrop/DragAndDrop';\n\ntype Props = {\n open: boolean;\n onUpload: (image: ImageHostingItem) => void;\n onClose?: () => void;\n};\n\nexport const UploadImageDialog = ({open, onClose, onUpload}: Props) => {\n const styles = useStyles();\n\n const imageServicePath = useSelector(mdm.selectors.getImageServicePath) as string;\n const environment = useSelector(mdm.selectors.getEnvironment) as string;\n const tenant = useSelector(mdm.selectors.getTenant) as string;\n\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string>(null);\n\n const uploadImage = (image: File | string) => {\n setLoading(true);\n uploadImageRequest({image, imageServicePath, environment, tenant})\n .then((res) => {\n onUpload(res);\n onClose();\n })\n .catch((err) => setError(err?.errorMessage || i18n.text('Something went wrong')))\n .finally(() => setLoading(false));\n };\n\n const handleAppendImage = (image: File) => {\n const size = Number((image.size / 1024 / 1024).toFixed(2));\n const isCorrectType = IMAGE_TYPES.includes(image.type);\n\n if (size > MAX_IMAGE_SIZE) {\n setError(i18n.text('File size exceeds configured max file size.'));\n } else if (!isCorrectType) {\n setError(i18n.text('File format is not supported.'));\n } else {\n uploadImage(image);\n }\n };\n\n const handleSendImage = (url: string) => {\n uploadImage(url);\n };\n\n return (\n <DragAndDrop>\n <Dialog open={open} onClose={onClose} classes={{paper: styles.dialogPaper}}>\n <Typography className={styles.title}>{i18n.text('Add new image')}</Typography>\n <Box className={styles.body}>\n <TargetBox className={styles.targetBox} onAppendFile={handleAppendImage} />\n <DividerWithText className={styles.divider}>{i18n.text('or')}</DividerWithText>\n <ImageByUrlField onSend={handleSendImage} />\n </Box>\n {loading && <LinearLoadIndicator />}\n <ErrorSnackbar error={error} onClose={() => setError(null)} />\n </Dialog>\n </DragAndDrop>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n width: '100%',\n marginBottom: '10px'\n },\n image: ({imageMargin}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n uploadContainer: ({imageMargin, imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n border: '1px dashed #0072CE',\n boxSizing: 'border-box',\n marginRight: imageMargin,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0\n };\n },\n uploadButton: {\n width: '50px',\n height: '50px'\n },\n uploadIcon: {\n fontSize: '36px'\n }\n}));\n","import ImageAttributesLine from './ImageAttributesLine';\n\nexport default ImageAttributesLine;\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n generateUri,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n ImageHostingItem,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport Image from '../../../Image/Image';\nimport ImageActionsOverlay from '../../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {SmallIconButton} from '../../../SmallIconButton';\nimport {UploadImageDialog} from '../../../UploadImageDialog/UploadImageDialog';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {ImageRenderProps, RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n parentUri: string;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType = {} as AttributeType,\n attributeValues = [],\n onDeleteAttribute,\n onChangeAttribute,\n requestNextPageOfAttributeValues,\n parentUri,\n paging,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const defaultProfilePic = useSelector((state) =>\n mdmModule.selectors.getModifiedEntityDefaultProfilePic(state, entity.uri)\n );\n const dispatch = useDispatch();\n const [isVisibleUploadDialog, setIsVisibleUploadDialog] = useState(false);\n\n const toggleVisibilityUploadDialog = useCallback(() => {\n setIsVisibleUploadDialog((visible) => !visible);\n }, []);\n\n const handleAddAttributes = useCallback(\n (image: ImageHostingItem) => {\n const uri = generateUri(parentUri, attributeType.name);\n const attributeValue: ImageAttributeValue['value'] = {};\n for (const key in image) {\n const attribute = (attributeType.attributes || []).find(({name}) => name === key);\n if (attribute) {\n attributeValue[key] = [\n {\n uri: generateUri(uri, attribute.name),\n ov: true,\n value: image[key],\n type: attribute.uri\n }\n ];\n }\n }\n onChangeAttribute({attributeType, uri, value: attributeValue});\n },\n [onChangeAttribute, parentUri, attributeType]\n );\n\n const handleDeleteAttribute = useCallback(\n (param: AttributeItem) => {\n onDeleteAttribute(param);\n if (defaultProfilePic === param.uri) {\n const newDefaultPic = attributeValues[0]?.uri === param.uri ? attributeValues[1] : attributeValues[0];\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: newDefaultPic || ({} as ImageAttributeValue)\n })\n );\n }\n },\n [onDeleteAttribute, entity, defaultProfilePic, attributeValues]\n );\n\n const renderImageActionsOverlay = (methods: ImageRenderProps, attribute: ImageAttributeValue) => {\n const {onOpenImageGalleryDialog, onDownload, onShareLink, onSetAsDefault} = methods;\n const imageUrl = getImageAttributeOvUrl(attribute);\n const {uri} = attribute;\n\n return (\n <ImageActionsOverlay\n id={uri}\n onShareLink={() => onShareLink(imageUrl)}\n onSetAsDefault={() => onSetAsDefault(attribute)}\n onDelete={() => handleDeleteAttribute({uri, attributeType})}\n onDownload={() => onDownload([imageUrl])}\n onClick={() => onOpenImageGalleryDialog(uri)}\n />\n );\n };\n\n const renderImage: RenderImage = (methods: ImageRenderProps) => {\n const renderImage = (attribute: ImageAttributeValue = {} as ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const {onOpenImageGalleryDialog} = methods;\n\n return (\n <div className={styles.image} key={uri}>\n <Image\n src={src}\n overlay={renderImageActionsOverlay(methods, attribute)}\n onClick={() => onOpenImageGalleryDialog(uri)}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n data-reltio-id=\"reltio-attribute-value\"\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <div className={styles.root}>\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n overlay\n countFixedItems={1}\n onUpload={toggleVisibilityUploadDialog}\n onDeleteAttribute={handleDeleteAttribute}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n >\n <div className={styles.uploadContainer} onClick={toggleVisibilityUploadDialog}>\n <SmallIconButton\n className={styles.uploadButton}\n iconClassName={styles.uploadIcon}\n icon={CloudUploadIcon}\n />\n </div>\n </ImageAttributesLineCommon>\n <UploadImageDialog\n open={isVisibleUploadDialog}\n onUpload={handleAddAttributes}\n onClose={toggleVisibilityUploadDialog}\n />\n </div>\n );\n};\n\nexport default ImageAttributesLine;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n moreAttributes: {\n display: 'flex',\n paddingBottom: '6px',\n '&$dense': {\n padding: 0\n }\n },\n dense: {},\n popupContainer: {},\n moreAttributesPopup: {\n '&$popupContainer': {}\n },\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n subHeader: {\n backgroundColor: 'rgb(245, 245, 245)',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n },\n noResultsCaptionContainer: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n }\n});\n","import {AttributeType} from '@reltio/mdm-sdk';\nimport {curry, filter, map, pipe} from 'ramda';\nimport {GroupedItem} from './useMoreAttributesItems';\n\nconst filterItems = curry((filterText: string, items: AttributeType[]): AttributeType[] => {\n return filter((item: AttributeType) => item.label.toLowerCase().includes(filterText.toLowerCase()))(items);\n});\n\ntype Props = {\n attrTypes: AttributeType[];\n filter?: string;\n};\n\nconst preparedGroupedItems = ({attrTypes, filter = ''}: Props): GroupedItem[] =>\n pipe(\n filterItems(filter),\n map((attrType: AttributeType) => ({\n item: {\n id: attrType.uri,\n label: attrType.label,\n attrType\n }\n }))\n )(attrTypes);\n\nexport {preparedGroupedItems};\n","import {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport {flattenGroupedItemsData} from '../../../VirtualGroupedList/helpers';\nimport {preparedGroupedItems} from './helpers';\n\nenum GROUP_NAMES {\n parent = 'parent',\n attributes = 'attributes'\n}\n\ntype Props = {\n data: AttributeType[];\n parent?: AttributeType;\n filter?: string;\n};\n\ntype Item = {\n id: string;\n label: string;\n attrType?: AttributeType;\n};\n\nexport type GroupedItem = {\n item: Item;\n items?: GroupedItem[];\n};\n\nexport const useMoreAttributesItems = ({data, parent, filter}: Props) => {\n const hasGroups = Boolean(parent);\n\n const preparedParentGroupItem = useMemo(\n () => (hasGroups ? preparedGroupedItems({attrTypes: [parent], filter}) : []),\n [hasGroups, parent, filter]\n );\n const parentGroup: GroupedItem[] = useMemo(\n () =>\n hasGroups && preparedParentGroupItem?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.parent,\n label: i18n.text('Parent')\n },\n items: preparedParentGroupItem\n }\n ]\n : [],\n [hasGroups, preparedParentGroupItem]\n );\n\n const preparedAttributesGroupItems = useMemo(\n () =>\n preparedGroupedItems({\n attrTypes: data,\n filter\n }),\n [data, filter]\n );\n\n const attributesGroup = useMemo(\n () =>\n hasGroups && preparedAttributesGroupItems?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.attributes,\n label: i18n.text('Attributes')\n },\n items: preparedAttributesGroupItems\n }\n ]\n : preparedAttributesGroupItems,\n [hasGroups, preparedAttributesGroupItems]\n );\n\n const items = useMemo(() => flattenGroupedItemsData((parentGroup || []).concat(attributesGroup)), [\n parentGroup,\n attributesGroup\n ]);\n\n const parentGroupLength = parentGroup.length;\n const attributesGroupLength = attributesGroup.length;\n return {items, hasGroups, parentGroupLength, attributesGroupLength};\n};\n","import React, {useCallback, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport {always, any, append, ifElse, not, pipe, pluck, propEq, reject} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nimport SelectionPopup from '../../../SelectionPopup/SelectionPopup';\nimport AttributeListItem from '../../../AttributeListItem/AttributeListItem';\n\nimport VirtualGroupedList from '../../../VirtualGroupedList/VirtualGroupedList';\nimport {useKeyboardNavigation} from '../../../SelectionPopup/helpers';\nimport AddIcon from '@material-ui/icons/Add';\nimport Highlighter from '../../../Highlighter/Highlighter';\nimport {useMoreAttributesItems} from './useMoreAttributesItems';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\nconst LIST_CONTAINER_WIDTH = 320;\nconst MAX_LIST_CONTAINER_HEIGHT = 255;\nconst MIN_CONTAINER_HEIGHT = 140;\nconst CONTAINER_HEADER_HEIGHT = 112;\n\nconst MoreAttributesButton = ({label, popupTitle = label, data, parent, dense, onApply}) => {\n const styles = useStyles();\n const inputRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const togglePopupOpen = () => setIsOpen(!isOpen);\n const closePopup = () => setIsOpen(false);\n\n const [filter, setFilter] = useState('');\n const clearFilter = () => setFilter('');\n\n const [selectedItems, setSelectedItems] = useState([]);\n const clearSelectedItems = () => setSelectedItems([]);\n\n const {items, hasGroups, parentGroupLength, attributesGroupLength} = useMoreAttributesItems({data, parent, filter});\n\n const addSelectedAttributes = () => {\n if (selectedItems.length > 0) {\n onApply(pluck('attrType', selectedItems));\n }\n };\n\n const handleListItemClick = useCallback(\n (item, checked) => {\n setSelectedItems(ifElse(always(checked), append(item), reject(propEq('id', item.id)))(selectedItems));\n },\n [selectedItems]\n );\n\n const getItemSize = useCallback((i, item) => (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT), []);\n\n const handleSearchOnEnter = useCallback(\n ({item}) => {\n handleListItemClick(item, not(any(propEq('id', item.id))(selectedItems)));\n },\n [handleListItemClick, selectedItems]\n );\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems\n });\n\n const focusIndexRef = useRef(null);\n focusIndexRef.current = focusIndex;\n\n const groupsCount = hasGroups ? (parentGroupLength ? 1 : 0) + (attributesGroupLength ? 1 : 0) : 0;\n const itemsCount = items.length - groupsCount;\n\n const listHeight = Math.min(\n MAX_LIST_CONTAINER_HEIGHT,\n ITEM_HEIGHT * itemsCount + ITEM_GROUP_TITLE_HEIGHT * groupsCount\n );\n const containerHeight = Math.max(MIN_CONTAINER_HEIGHT, listHeight + CONTAINER_HEADER_HEIGHT);\n\n const listItemRenderer = useCallback(\n (style, {item, level = 0}, index) => {\n const isChecked = any(propEq('id', item.id))(selectedItems);\n const isFocused = focusIndexRef.current === index;\n\n return (\n <AttributeListItem\n key={item.uri}\n onClick={handleListItemClick}\n checked={isChecked}\n level={level}\n data={item}\n label={<Highlighter text={item.label} highlight={filter} />}\n labelInText={item.label}\n style={style}\n isFocused={isFocused}\n isRequired={!!item.attrType?.required}\n LogoIcon={item.LogoIcon}\n />\n );\n },\n [filter, handleListItemClick, selectedItems]\n );\n\n const renderGroupTitle = useCallback(\n (style, item) => (\n <ListItem component={'div'} className={styles.subHeader} style={style} key={`group-${item.item.id}`}>\n {item.item.label}\n </ListItem>\n ),\n []\n );\n\n return (\n <div className={classnames(styles.moreAttributes, {[styles.dense]: dense})}>\n <Button color=\"primary\" onClick={togglePopupOpen} ref={inputRef} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{label}</div>\n </Button>\n <SelectionPopup\n open={isOpen}\n className={classnames(styles.moreAttributesPopup, styles.popupContainer)}\n anchorEl={inputRef.current}\n onClose={pipe(addSelectedAttributes, closePopup, clearFilter, clearSelectedItems)}\n onSearch={setFilter}\n containerHeight={containerHeight}\n title={popupTitle}\n containerWidth={LIST_CONTAINER_WIDTH}\n searchInputOnKeyDown={handleKeyDown}\n >\n <VirtualGroupedList\n getItemSize={getItemSize}\n renderItem={listItemRenderer}\n renderGroupTitle={renderGroupTitle}\n items={items}\n height={listHeight}\n containerWidth={LIST_CONTAINER_WIDTH}\n focusIndex={focusIndex}\n />\n {items.length === 0 && (\n <div className={styles.noResultsCaptionContainer}>\n <Typography variant=\"caption\" display=\"block\" gutterBottom>\n {i18n.text('No results found')}\n </Typography>\n </div>\n )}\n </SelectionPopup>\n </div>\n );\n};\n\nMoreAttributesButton.propTypes = {\n label: PropTypes.string,\n popupTitle: PropTypes.string,\n data: PropTypes.array,\n parent: PropTypes.object,\n dense: PropTypes.bool,\n onApply: PropTypes.func\n};\n\nexport default MoreAttributesButton;\n","import React, {memo} from 'react';\nimport {evaluateDeepEntityLabel, getLabel, NestedAttributeType} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\n\nconst NestedAttribute = (props) => {\n const {attributeValue, attributeType} = props;\n const label = evaluateDeepEntityLabel(attributeValue, attributeType.dataLabelPattern);\n\n return (\n <ComplexAttribute\n label={getLabel(label)}\n attributeTypesList={attributeType.attributes || attributeType.analyticsAttributes}\n {...props}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n item: {\n marginBottom: '20px'\n },\n dense: {\n marginBottom: 0\n }\n});\n","import React, {memo, useMemo, useCallback, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {identity, pipe, isEmpty} from 'ramda';\nimport {\n evaluateDeepEntityLabel,\n ReferenceAttributeType,\n referencedEntityAttributeTypesSelectionStrategy,\n getEntityType,\n getReferencedEntityFromAttrValue,\n getReferencedRelationFromAttrValue,\n getReferencedEntityUri,\n getReferencedEntityTypeUri,\n getReferencedEntityTypeUriFromAttrType,\n getReferencedRelationAttrTypesUris,\n findAttributeTypeByUri,\n getCreatableAttributeTypes,\n createTemporaryEntity,\n convertReferencedEntityForAttrValue,\n createReferencedRelationForAttrValue,\n addReferencedRelationCrosswalks,\n getReferencedEntityUriFromAttrValue,\n checkCanEditAttribute,\n checkMetadataForCreate,\n isReltioCrosswalk,\n getErrorMessage,\n EntityType,\n MetadataType,\n getErrorId,\n getReferencedEntityActiveError,\n isTempUri,\n getLabel\n} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport EntitySelector from '../EntitySelector/EntitySelector';\nimport {ErrorWrapper} from '../../../index';\nimport {useStyles} from './styles';\n\nconst ReferenceAttribute = (props) => {\n const styles = useStyles();\n const {\n modifiedEntity,\n metadata,\n globalSearchRequestOptions,\n onDeleteModifiedEntity,\n onUpdateModifiedEntity,\n onDeactivateError,\n ...ownProps\n } = props;\n const {attributeValue, attributeType, mode, crosswalks, errors, onChangeAttribute} = ownProps;\n const initialAttributeValue = useRef(attributeValue);\n const referencedEntity = getReferencedEntityFromAttrValue(attributeValue);\n const referencedRelation = getReferencedRelationFromAttrValue(attributeValue);\n const referencedEntityTypeUri = getReferencedEntityTypeUriFromAttrType(attributeType);\n const referencedEntityType = getEntityType(metadata, referencedEntityTypeUri);\n const label = modifiedEntity\n ? evaluateDeepEntityLabel(modifiedEntity, referencedEntityType.dataLabelPattern)\n : attributeValue.label;\n const entityTypesUris = useMemo(() => [referencedEntityTypeUri], [referencedEntityTypeUri]);\n\n const allCrosswalks = useMemo(() => addReferencedRelationCrosswalks(crosswalks, referencedRelation), [\n crosswalks,\n referencedRelation\n ]);\n\n const referencedEntityMissedError = useMemo(() => getReferencedEntityActiveError(attributeValue, errors), [\n attributeValue,\n errors\n ]);\n\n const selectedEntity = useMemo(\n () =>\n referencedEntity && {\n entityUri: getReferencedEntityUri(referencedEntity),\n entityType: getReferencedEntityTypeUri(referencedEntity),\n entityLabel: attributeValue.label\n },\n [referencedEntity, attributeValue.label]\n );\n\n const editableAttrTypes = useMemo(\n () =>\n getReferencedRelationAttrTypesUris(attributeType)\n .map((attrTypeUri) => findAttributeTypeByUri(metadata, attrTypeUri))\n .filter(identity),\n [attributeType, metadata]\n );\n\n const newEntityAttrTypesSelectionStrategy = useCallback(\n (entityType) => referencedEntityAttributeTypesSelectionStrategy(attributeType, entityType),\n [attributeType]\n );\n\n const onChangeEntity = useCallback(\n (entity) => {\n if (modifiedEntity) {\n onDeleteModifiedEntity(modifiedEntity.uri);\n }\n const initialAttrValue = initialAttributeValue.current;\n const isInitialEntity =\n !isEmpty(entity) && entity.uri === getReferencedEntityUriFromAttrValue(initialAttrValue);\n const modifiedValue = {\n ...attributeValue,\n label: entity.label,\n refEntity: isInitialEntity ? initialAttrValue.refEntity : convertReferencedEntityForAttrValue(entity),\n refRelation: isInitialEntity\n ? initialAttrValue.refRelation\n : createReferencedRelationForAttrValue(attributeValue)\n };\n onChangeAttribute({value: modifiedValue, attributeType, uri: attributeValue.uri});\n if (referencedEntityMissedError) {\n onDeactivateError(getErrorId(referencedEntityMissedError));\n }\n },\n [\n attributeValue,\n attributeType,\n modifiedEntity,\n onChangeAttribute,\n onDeleteModifiedEntity,\n onDeactivateError,\n referencedEntityMissedError\n ]\n );\n\n const onCreateEntity = useCallback(\n (entityTypeUri, initValue) => {\n const newEntityAttrTypes = pipe(\n newEntityAttrTypesSelectionStrategy,\n getCreatableAttributeTypes(mode)\n )(referencedEntityType);\n const newEntity = createTemporaryEntity({\n entityTypeUri,\n initValue,\n attributeTypes: newEntityAttrTypes,\n metadata,\n mode\n });\n onChangeEntity(newEntity);\n onUpdateModifiedEntity(newEntity);\n },\n [\n newEntityAttrTypesSelectionStrategy,\n mode,\n referencedEntityType,\n metadata,\n onChangeEntity,\n onUpdateModifiedEntity\n ]\n );\n\n const canChangeReferencedEntity = useMemo(\n () =>\n checkCanEditAttribute({\n attributeType,\n attributeValue,\n mode,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, crosswalks]\n );\n const canCreateReferencedEntity = useMemo(() => checkMetadataForCreate(mode, referencedEntityType), [\n mode,\n referencedEntityType\n ]);\n\n const errorMessage = getErrorMessage(referencedEntityMissedError);\n\n return (\n <ComplexAttribute\n {...ownProps}\n label={getLabel(label)}\n attributeTypesList={editableAttrTypes}\n crosswalks={allCrosswalks}\n metadata={metadata}\n >\n <ErrorWrapper errorMessage={errorMessage}>\n <EntitySelector\n className={classnames(styles.item, {\n [styles.dense]: errorMessage || (selectedEntity && isTempUri(selectedEntity.entityUri))\n })}\n entity={selectedEntity || {}}\n entityTypesUris={entityTypesUris}\n max={20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n mode={mode}\n onChange={canChangeReferencedEntity ? onChangeEntity : undefined}\n onCreate={canCreateReferencedEntity ? onCreateEntity : undefined}\n metadata={metadata}\n attributeTypesSelectionStrategy={newEntityAttrTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </ComplexAttribute>\n );\n};\n\nReferenceAttribute.propTypes = {\n ...ReferenceAttributeType,\n modifiedEntity: EntityType,\n metadata: MetadataType,\n globalSearchRequestOptions: PropTypes.object,\n onDeleteModifiedEntity: PropTypes.func,\n onUpdateModifiedEntity: PropTypes.func,\n onDeactivateError: PropTypes.func\n};\n\nexport default memo(ReferenceAttribute);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport {isTempUri, getReferencedEntityUriFromAttrValue} from '@reltio/mdm-sdk';\n\nconst mapStateToProps = (state, ownProps) => {\n const entityUri = getReferencedEntityUriFromAttrValue(ownProps.attributeValue);\n return {\n modifiedEntity: isTempUri(entityUri) ? mdmModule.selectors.getModifiedEntity(state, entityUri) : null,\n metadata: mdmModule.selectors.getMetadata(state),\n globalSearchRequestOptions: mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n };\n};\n\nconst mapDispatchToProps = {\n onDeleteModifiedEntity: profile.modifiedEntities.actions.entityDeleted,\n onUpdateModifiedEntity: profile.modifiedEntities.actions.entityCreated,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReferenceAttribute);\n","import {defaultTo, isNil, map, path, pipe, prepend, reject, uniq} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n areOneHierarchyUris,\n DependentLookupsParentForApi,\n DependentLookupsStructureNode,\n filterRelatedParentValuesForDependentLookupValueUri,\n getAttributeValuePath,\n getBaseUri\n} from '@reltio/mdm-sdk';\n\nimport {ExtendedParentValue} from '../types';\n\nexport const getParents = (state, valueUri: string, node: DependentLookupsStructureNode) => {\n const parentNodesValues: ExtendedParentValue[] = node.parents.flatMap((type) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, type);\n return parentNode.values.map((value) => ({\n ...value,\n type,\n dependentLookupCode: parentNode.attrType.dependentLookupCode\n }));\n });\n const modifiedEntities = mdmModule.selectors.getModifiedEntities(state);\n const entityUri = mdmModule.selectors.getEntityUri(state);\n const connections = mdmModule.selectors.getAllRelationsToAddAndEdit(state);\n const metadata = mdmModule.selectors.getMetadata(state);\n const ownParentNodesValues = filterRelatedParentValuesForDependentLookupValueUri<ExtendedParentValue>({\n parentValues: parentNodesValues,\n valueUri,\n entityUri,\n modifiedEntities,\n connections\n });\n const possibleParentBaseTypeUris: string[] = pipe(\n getAttributeValuePath,\n defaultTo([]),\n map(pipe(path(['valueType', 'uri']), getBaseUri)),\n prepend(modifiedEntities[entityUri]?.type),\n reject(isNil),\n uniq\n )(\n {\n entityUri,\n entitiesMap: modifiedEntities,\n connections,\n metadata\n },\n valueUri\n );\n const neededParentsAttributeTypes = node.parents\n .filter((typeUri) => possibleParentBaseTypeUris.some(areOneHierarchyUris(typeUri)))\n .map((typeUri) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, typeUri);\n return parentNode.attrType;\n });\n const missedParentsAttributeTypes = neededParentsAttributeTypes.filter(\n (attrType) => !ownParentNodesValues.some(({type, value}) => value && type === attrType.uri)\n );\n const parents = Object.values<DependentLookupsParentForApi>(\n ownParentNodesValues.reduce(\n (typesMap, parent) => ({\n ...typesMap,\n [parent.dependentLookupCode]: {\n type: parent.dependentLookupCode,\n codeValues: uniq([parent.value, ...(typesMap[parent.dependentLookupCode]?.codeValues || [])])\n .filter(Boolean)\n .sort()\n }\n }),\n {}\n )\n );\n return {parents, missedParentsAttributeTypes};\n};\n","import {equals} from 'ramda';\nimport {DependentLookupEditorContext} from '../types';\n\nconst DLEditorContextCache: {\n [valueUri: string]: DependentLookupEditorContext;\n} = {};\n\nexport const fromCache = (valueUri, context) => {\n const cachedContext = DLEditorContextCache[valueUri];\n if (equals(context, cachedContext)) {\n return cachedContext;\n } else {\n if (equals(cachedContext?.parents, context.parents)) {\n context.parents = cachedContext.parents;\n }\n DLEditorContextCache[valueUri] = context;\n return context;\n }\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst marginBottom = 10;\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n errorWrapper: {\n alignSelf: 'stretch'\n },\n editor: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: `${marginBottom}px`\n },\n 'editor-value': {\n flex: '1 1 auto'\n },\n 'editor-read-only-value': {\n marginLeft: '12px',\n display: 'flex',\n alignItems: 'center'\n },\n 'editor-actions': {\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '8px'\n },\n addButton: {\n marginRight: '-8px'\n },\n button: {\n color: theme.palette.text.secondary\n },\n placeholder: {\n height: `${40 + marginBottom}px`\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport AddIcon from '@material-ui/icons/Add';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {\n AttributeErrorType,\n AttributeTypeType,\n attributeUriToSearchUri,\n checkCanCreateAttribute,\n checkCanDeleteAttribute,\n checkCanEditAttribute,\n ErrorType,\n getAttributeValue,\n getAttrDataTypeDefinition,\n getErrorId,\n getErrorMessage,\n getErrorType,\n isDependentLookupAttrType,\n isEditableMode as checkIsEditableMode,\n ModeType,\n SimpleAttributeValueType\n} from '@reltio/mdm-sdk';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport DataTypeValueEditor from '../../../editors/DataTypeValueEditor/DataTypeValueEditor';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {attributeValueToEditorValue, prepareChangeData} from './utils';\nimport withAsyncMount from '../../../../HOCs/withAsyncMount/withAsyncMount';\nimport {getDependentLookupEditorContext} from './selectors/getDependentLookupEditorContext';\n\nimport {useStyles} from './styles';\n\nconst AsyncMountPlaceholder = () => {\n const styles = useStyles();\n return <div className={styles.placeholder} />;\n};\n\nconst SimpleAttributeEditor = ({\n className,\n attributeValue,\n attributeType,\n isReltioCrosswalk,\n ownError,\n mode,\n onAddOneMore,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n state,\n ...otherProps\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const isEditableMode = checkIsEditableMode(mode);\n const dataTypeDefinition = getAttrDataTypeDefinition(attributeType);\n const value = attributeValueToEditorValue(attributeValue, dataTypeDefinition);\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n const canEdit = checkCanEditAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const canDelete = checkCanDeleteAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const showToEdit = canEdit && isEditableMode;\n const errorMessage = getErrorMessage(ownError);\n const dependentLookupEditorContext = useSelector((state) =>\n isDependentLookupAttrType(attributeType)\n ? getDependentLookupEditorContext(state, attributeValue, attributeType?.uri)\n : null\n );\n const onDelete = () => {\n onDeleteAttribute({uri: attributeValue.uri, attributeType});\n if (getErrorType(ownError) !== ErrorType.missed) {\n deactivateError();\n }\n };\n\n const deactivateError = () => {\n if (ownError) {\n onDeactivateError(getErrorId(ownError));\n }\n };\n\n const showAddButton = !!onAddOneMore && canCreate && !attributeType.singleValue;\n const showDeleteButton = !deleted && !!onDeleteAttribute && canDelete;\n const hasError = !!errorMessage;\n const deletedProps = deleted ? {disabled: true} : {};\n\n return (\n <div className={classnames(styles.editor, className)}>\n <ErrorWrapper errorMessage={errorMessage} className={styles.errorWrapper}>\n <div\n className={classnames(\n styles['editor-value'],\n {[styles.deleted]: deleted},\n {[styles['editor-read-only-value']]: !showToEdit}\n )}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {showToEdit ? (\n <DataTypeValueEditor\n fieldName={attributeUriToSearchUri(attributeType.uri)}\n value={value}\n dataTypeDefinition={dataTypeDefinition}\n error={hasError}\n onChange={pipe(\n prepareChangeData(attributeValue, attributeType),\n onChangeAttribute,\n deactivateError\n )}\n fullWidth\n {...dependentLookupEditorContext}\n {...otherProps}\n {...deletedProps}\n />\n ) : (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={dataTypeDefinition}\n />\n )}\n </div>\n </ErrorWrapper>\n <div className={styles['editor-actions']}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {showAddButton && (\n <SmallIconButton\n icon={AddIcon}\n onClick={onAddOneMore}\n size=\"L\"\n className={classnames(styles.addButton, styles.button)}\n />\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && (\n <SmallIconButton className={styles.button} icon={DeleteIcon} onClick={onDelete} size=\"L\" />\n )}\n </div>\n </div>\n );\n};\n\nSimpleAttributeEditor.propTypes = {\n className: PropTypes.string,\n attributeValue: SimpleAttributeValueType,\n attributeType: AttributeTypeType,\n ownError: AttributeErrorType,\n isReltioCrosswalk: PropTypes.bool,\n state: PropTypes.oneOf(['deleted', 'edited']),\n mode: ModeType,\n onAddOneMore: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeactivateError: PropTypes.func,\n additionalControlsRenderer: PropTypes.func\n};\n\nexport default memo(withAsyncMount(SimpleAttributeEditor, AsyncMountPlaceholder));\n","import {DependentLookupsStructureNode, isAutopopulationEnabled, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\n\nimport {DependentLookupEditorContext} from './types';\nimport {getParents} from './helpers/parents';\nimport {buildMissedParentsMessage} from './helpers/missedParentsMessage';\nimport {fromCache} from './helpers/cache';\n\nexport const getDependentLookupEditorContext = (\n state,\n attributeValue: SimpleAttributeValue,\n attributeTypeUri: string\n) => {\n const node: DependentLookupsStructureNode = mdmModule.selectors.getDependentLookupsStructureNode(\n state,\n attributeTypeUri\n );\n if (node) {\n const valueUri = attributeValue.uri;\n const {parents, missedParentsAttributeTypes} = getParents(state, valueUri, node);\n const {isBlocked = false} = mdmModule.selectors.getDependentLookupEditorState(state, valueUri) || {};\n const missedParentsMessage = buildMissedParentsMessage(missedParentsAttributeTypes);\n const autocompleteConfig = mdmModule.selectors.getLookupAutocomplete(state);\n const autopopulationEnabled = isAutopopulationEnabled(autocompleteConfig, attributeTypeUri);\n const isEmptyValue = !attributeValue?.lookupCode && !attributeValue?.value;\n const placeholder =\n (isEmptyValue && isBlocked && i18n.text('Populating values...')) ||\n (isEmptyValue && missedParentsMessage) ||\n '';\n const context: DependentLookupEditorContext = {\n parents: missedParentsMessage ? null : parents,\n disabled: (!!missedParentsMessage && isEmptyValue) || isBlocked,\n placeholder,\n autopopulationId: autopopulationEnabled ? valueUri : null\n };\n if (placeholder) {\n context.value = null;\n }\n return fromCache(valueUri, context);\n }\n};\n","import {pipe, prop} from 'ramda';\nimport i18n from 'ui-i18n';\n\nconst joinWords = (words) =>\n words.reduce((result, word, i) => [result, word].join(i === words.length - 1 ? ` ${i18n.text('and')} ` : ', '));\n\nexport const buildMissedParentsMessage = (missedAttributeTypes) =>\n missedAttributeTypes.length\n ? i18n.text('Please select value for ${labels} ${attributes}.', {\n labels: joinWords(missedAttributeTypes.map(pipe(prop('label'), (label) => `'${label}'`))),\n attributes: missedAttributeTypes.length === 1 ? i18n.text('attribute') : i18n.text('attributes')\n })\n : '';\n","import moment from 'moment';\nimport {DataTypes, getAttrDataTypeDefinition, parseBoolean} from '@reltio/mdm-sdk';\nimport {curry} from 'ramda';\nimport {utils} from '@reltio/mdm-sdk';\n\nconst attributeValueToEditorValue = (attributeValue = {}, {type}) => {\n const {value, lookupCode} = attributeValue;\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED: {\n return parseBoolean(value);\n }\n case DataTypes.TYPE_DATE:\n return (value && utils.dates.toLocalDate(value)) || null;\n case DataTypes.TYPE_LOCAL_DATE:\n case DataTypes.TYPE_TIMESTAMP:\n case DataTypes.TYPE_ACTIVENESS_DATE: {\n return (value && new Date(value)) || null;\n }\n case DataTypes.TYPE_DEPENDENT_LOOKUP:\n case DataTypes.TYPE_LOOKUP: {\n return {value, lookupCode};\n }\n default:\n return value;\n }\n};\n\nconst editorValueToAttributeValue = (attributeType, editorValue) => {\n const {type} = getAttrDataTypeDefinition(attributeType);\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED:\n return editorValue.toString();\n case DataTypes.TYPE_DATE:\n return (editorValue && moment(editorValue).format('YYYY-MM-DD')) || '';\n case DataTypes.TYPE_TIMESTAMP: {\n return (editorValue && moment(editorValue).format()) || '';\n }\n case DataTypes.TYPE_ACTIVENESS_DATE:\n case DataTypes.TYPE_LOCAL_DATE:\n return editorValue && editorValue.valueOf();\n default:\n return editorValue || '';\n }\n};\n\nconst prepareChangeData = curry((attributeValue, attributeType, editorValue) => {\n const value = editorValueToAttributeValue(attributeType, editorValue);\n return {\n value,\n uri: attributeValue.uri,\n attributeType\n };\n});\n\nexport {attributeValueToEditorValue, editorValueToAttributeValue, prepareChangeData};\n","import React from 'react';\n\nexport const HasDeletionsContext = React.createContext<{\n hasDeletionsMap: {[attrTypeUri: string]: boolean};\n setHasDeletions: (attrTypeUri: string, value: boolean) => void;\n }>(null);\n","import React from 'react';\n\nexport const PinnedAttributesContext = React.createContext<string[]>(null);\n","import {\n __,\n concat,\n defaultTo,\n flatten,\n includes,\n isNil,\n partition,\n path,\n pipe,\n props,\n propEq,\n reject,\n values\n} from 'ramda';\nimport {\n AttributeType,\n EntityAttrTypes,\n getEntityType,\n Metadata,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\n\nexport const getFilteredAttrTypes = (\n metadata: Metadata,\n type: string,\n includeUris: string[],\n excludeUris: string[]\n) => {\n const attrTypes = pipe(\n getEntityType,\n defaultTo({}),\n props(['attributes', 'analyticsAttributes']),\n reject(isNil),\n flatten,\n concat(__, pipe(values, reject(propEq('uri', EntityAttrTypes.id.uri)))(EntityAttrTypes))\n )(metadata, type);\n\n return includeUris.length\n ? attrTypes.filter(({uri}) => includeUris.includes(uri))\n : attrTypes.filter(({uri}) => !excludeUris.includes(uri));\n};\n\ntype PagersData = {\n attrType: AttributeType;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue | string | number)[];\n};\n\nexport const splitPagersData = (\n alwaysVisibleTypeUris: string[],\n pagersData: PagersData[]\n): [PagersData[], PagersData[]] =>\n partition(pipe(path(['attrType', 'uri']), includes(__, alwaysVisibleTypeUris)), pagersData);\n","import KeyboardArrowUp from '@material-ui/icons/KeyboardArrowUp';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n};\n\nconst ShowLess = ({onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowUp className={styles['svg-icon__root']} />\n {i18n.text('Show less')}\n </Link>\n );\n};\n\nexport default ShowLess;\n","import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n moreNumber?: number;\n valueNumber?: number;\n onClick: () => void;\n};\n\nconst ShowMore = ({moreNumber, valueNumber, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowDownIcon className={styles['svg-icon__root']} />\n {moreNumber && valueNumber\n ? i18n.text('Show ${moreNumber} more of remaining ${valueNumber} value', {moreNumber, valueNumber})\n : i18n.text('Show more')}\n </Link>\n );\n};\n\nexport default ShowMore;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n }\n});\n","import ReadModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return ReadModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport SimpleAttribute from '../SimpleAttribute';\nimport NestedAttribute from '../NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class ReadModeAttributesFactory {\n static build(attributeType, props = {}) {\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return <SimpleAttribute {...props} />;\n }\n }\n}\n","import React, {memo, useMemo, useState} from 'react';\nimport {path} from 'ramda';\nimport {AttributeType, Entity, getAttributesListForReadMode, Relation} from '@reltio/mdm-sdk';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport AttributesPager from '../AttributesPager';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\n\ntype Props = {\n attrTypes: AttributeType[];\n entity: Partial<Entity> | Partial<Relation>;\n parentUri?: string;\n drawLines?: boolean;\n children?: React.ReactNode;\n className?: string;\n max?: number;\n alwaysVisibleTypeUris?: string[];\n showNonOv?: boolean;\n};\n\nconst AttributesList = ({\n attrTypes,\n entity,\n parentUri,\n drawLines,\n children,\n className,\n max,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n showNonOv\n}: Props) => {\n const [visibleValuesCount, setVisibleValuesCount] = useState(max || Infinity);\n const pagersData = useMemo(() => getAttributesListForReadMode(attrTypes, entity, showNonOv), [\n attrTypes,\n entity,\n showNonOv\n ]);\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const visibleAttributePagersData = regularPagersData.slice(0, visibleValuesCount);\n const showMore = max && visibleAttributePagersData.length < regularPagersData.length;\n const showLess =\n max && visibleAttributePagersData.length >= regularPagersData.length && max < visibleAttributePagersData.length;\n\n const decoratorProps = {\n enabled: drawLines\n };\n\n const onShowMore = () => {\n setVisibleValuesCount(Infinity);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n {visibleAttributePagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], entity.attributes)}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n ))}\n {showMore && <ShowMore onClick={onShowMore} />}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default memo(AttributesList);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst fontSize = '13px';\nconst lineHeight = '15px';\n\nconst commonStyles = {\n titleRow: {\n display: 'block',\n minHeight: '16px',\n textIndent: '-1em',\n paddingLeft: '1em'\n },\n title: {\n whiteSpace: 'nowrap'\n },\n ovIcon: {\n marginLeft: '8px',\n marginRight: '-3px',\n marginTop: '-1px',\n textIndent: 0\n }\n};\n\nexport const useStyles = makeStyles({\n paddingWrapper: {\n paddingTop: '3px',\n paddingBottom: '5px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n },\n paddingWrapperWithLines: {\n paddingBottom: '1px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n }\n});\n\nexport const useOneLineStyles = makeStyles({\n wrapper: {\n fontSize,\n lineHeight,\n flex: 1\n },\n collaborationWrapper: {\n display: 'flex',\n alignItems: 'start',\n minHeight: '18px'\n },\n attribute: {\n marginLeft: '8px',\n paddingLeft: '4px',\n paddingRight: '4px',\n display: 'inline',\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n titleIcon: {\n width: '16px',\n height: '16px',\n marginBottom: '-3px',\n marginRight: '8px',\n marginLeft: '1px',\n color: 'rgba(0, 0, 0, 0.38)'\n },\n ...commonStyles\n});\n\nexport const useMultiLineStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n fontSize,\n lineHeight\n },\n attribute: {\n '&:last-child': {\n marginBottom: 0\n },\n paddingLeft: '4px',\n paddingRight: '4px',\n marginLeft: '5px',\n marginBottom: '4px',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n attributes: {\n alignSelf: 'stretch'\n },\n ...commonStyles,\n titleRow: {\n ...commonStyles.titleRow,\n marginBottom: '3px'\n }\n});\n","import React from 'react';\nimport {\n AttributeType,\n AttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isRelationAttrType\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport Title from '../../../Title/Title';\nimport OvIcon from '../../OvIcon';\nimport Attribute from '../AttributesFactory/Attribute';\nimport {useOneLineStyles} from './styles';\n\ntype Props = {\n value: AttributeValue;\n attributeType: AttributeType;\n nonVisibleValues: AttributeValue[];\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n totalNonVisibleValues: number;\n};\n\nconst OneLineRenderer = ({\n value,\n nonVisibleValues,\n attributeType,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useOneLineStyles();\n const {label} = attributeType;\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={classnames(styles.collaborationWrapper, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n <Attribute\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n inlined\n />\n </div>\n <CommentsContainer\n uri={value.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: value.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default OneLineRenderer;\n","import React, {useState} from 'react';\nimport {min} from 'ramda';\nimport classnames from 'classnames';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {AttributeType, NestedAttributeValue, ReferenceAttributeValue, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport {useMultiLineStyles} from './styles';\n\nimport Attribute from '../AttributesFactory/Attribute';\nimport Title from '../../../Title/Title';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport OvIcon from '../../OvIcon';\n\ntype Props = {\n max: number;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n attributeType: AttributeType;\n totalVisibleValues: number;\n totalNonVisibleValues: number;\n nonVisibleValues: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n parentUri: string;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n};\n\nconst MultiLineRenderer = ({\n max,\n values,\n nonVisibleValues,\n totalVisibleValues,\n attributeType,\n parentUri,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useMultiLineStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n const {label} = attributeType;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.titleRow}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n <div className={styles.attributes}>\n {shownValues.map((value) => (\n <Attribute\n key={value.uri}\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n />\n ))}\n </div>\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default MultiLineRenderer;\n","import React, {Fragment} from 'react';\n\ntype Props = {\n className?: string;\n values: string[];\n Component: React.ElementType;\n dataReltioId?: string;\n};\n\nconst SpecialAttributesArray = ({className, values, Component, dataReltioId}: Props) => {\n return (\n <div className={className} data-reltio-id={dataReltioId}>\n {values.map((value, index) => (\n <Fragment key={value}>\n <Component value={value} />\n {index < values.length - 1 && ', '}\n </Fragment>\n ))}\n </div>\n );\n};\n\nexport default SpecialAttributesArray;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nexport const useCommonStyles = makeStyles({\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n});\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getRoleLabel, Metadata} from '@reltio/mdm-sdk';\n\nimport {HistoryDiffContext} from '../../../../../contexts/HistoryAppearanceContext';\nimport {\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '../../helpers/historyAppearance';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Role = ({value}: Props) => {\n const styles = useCommonStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('roles', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return <span className={styles[historyClassName]}>{getRoleLabel(metadata, value)}</span>;\n};\n\nexport default Role;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Role from './Role';\n\ntype Props = {\n className?: string;\n values: string[];\n};\n\nconst Roles = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Role}\n />\n);\n\nexport default Roles;\n","import React, {useContext} from 'react';\nimport InternalLink from '../../../../InternalLink/InternalLink';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getDataTenantEntityUri, getTagLink} from '@reltio/mdm-sdk';\n\nimport {EntityContext, HistoryDiffContext} from '../../../../../contexts';\nimport {\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '../../helpers/historyAppearance';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Tag = ({value}: Props) => {\n const styles = useCommonStyles();\n const uiPath: string = useSelector(mdmModule.selectors.getUIPath);\n const ownEntity: Entity = useContext(EntityContext);\n const currentEntity: Entity = useSelector(mdmModule.selectors.getEntity);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('tags', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const entity = ownEntity || currentEntity;\n\n return (\n <InternalLink\n className={styles[historyClassName]}\n href={getTagLink({\n uiPath,\n tag: value,\n entityUri: entity.dataTenant ? getDataTenantEntityUri(entity) : entity.uri\n })}\n >\n {value}\n </InternalLink>\n );\n};\n\nexport default Tag;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Tag from './Tag';\n\ntype Props = {\n className?: string;\n values: string[];\n dataReltioId?: string;\n};\n\nconst Tags = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Tag}\n />\n);\n\nexport default Tags;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {AttributeType, EntityAttrTypes} from '@reltio/mdm-sdk';\nimport TagIcon from '@material-ui/icons/LocalOffer';\n\nimport {useOneLineStyles} from './styles';\n\nimport Title from '../../../Title/Title';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Roles from '../SpecialAttributes/Roles';\nimport Tags from '../SpecialAttributes/Tags';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n};\n\nconst SpecialRenderer = ({values, attributeType}: Props) => {\n const styles = useOneLineStyles();\n const {label} = attributeType;\n\n const renderIcon = (className) => {\n return attributeType.uri === EntityAttrTypes.tags.uri ? <TagIcon className={className} /> : null;\n };\n\n const renderValue = (className) => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags className={className} values={values as string[]} />;\n case EntityAttrTypes.roles.uri: {\n return <Roles className={className} values={values as string[]} />;\n }\n default: {\n //startDate, endDate, \"crosswalk\" fake nested subattibutes\n return (\n <Attribute\n className={className}\n attributeValue={{value: values[0]}}\n attributeType={attributeType}\n inlined\n />\n );\n }\n }\n };\n\n return (\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n {renderIcon(styles.titleIcon)}\n <Title label={label} className={styles.title} data-reltio-id=\"reltio-attribute-label\" />\n {renderValue(styles.attribute)}\n </div>\n );\n};\n\nexport default SpecialRenderer;\n","import classnames from 'classnames';\nimport React, {memo} from 'react';\nimport {always, cond, has, ifElse, partition, prop, T} from 'ramda';\nimport {\n AttributeType,\n isComplexAttribute,\n isImage,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n isSpecialAttribute,\n isOv,\n ImageAttributeValue,\n AttributeValue\n} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {useStyles} from './styles';\nimport Title from '../../../Title/Title';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport OneLineRenderer from './OneLineRenderer';\nimport MultiLineRenderer from './MultiLineRenderer';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport SpecialRenderer from './SpecialRenderer';\n\nconst RENDERER_TYPES = {\n oneLine: 'oneLine',\n multiLine: 'multiLine',\n imageLine: 'imageLine',\n special: 'special'\n};\n\ntype Props = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | string\n | number\n | ImageAttributeValue\n | AttributeValue\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n parentUri?: string;\n drawLines: boolean;\n max?: number;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv?: boolean;\n};\n\nconst AttributesPager = ({\n values,\n attributeType,\n drawLines,\n paging = {},\n parentUri,\n max = Infinity,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n const partitionByOv = partition(isOv);\n if (!values || !values.length) {\n return null;\n }\n const [ovValues, nonOvValues] = partitionByOv(values);\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(visibleValues.length))(paging);\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n const isOneLineRender = totalVisibleValues === 1 && !isComplexAttribute(attributeType);\n\n const render = () => {\n const type = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [always(isOneLineRender), always(RENDERER_TYPES.oneLine)],\n [T, always(RENDERER_TYPES.multiLine)]\n ])(attributeType);\n switch (type) {\n case RENDERER_TYPES.oneLine:\n return (\n <OneLineRenderer\n value={visibleValues[0]}\n nonVisibleValues={nonVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.multiLine:\n return (\n <MultiLineRenderer\n values={visibleValues}\n nonVisibleValues={nonVisibleValues}\n totalVisibleValues={totalVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n parentUri={parentUri}\n max={max}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.imageLine:\n return (\n <>\n <Title label={attributeType?.label} data-reltio-id=\"reltio-attribute-label\" />\n <ImageAttributesLine\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </>\n );\n case RENDERER_TYPES.special:\n return <SpecialRenderer values={visibleValues} attributeType={attributeType} />;\n }\n };\n\n return (\n <BranchDecorator enabled={drawLines} className={classnames({[styles.paddingWrapperWithLines]: drawLines})}>\n <div className={classnames({[styles.paddingWrapper]: !drawLines})}>{render()}</div>\n </BranchDecorator>\n );\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\nimport AttributesPager from './AttributesPager';\n\nconst mapStateToProps = (state, {max = undefined}) => ({\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues\n};\n\nexport {AttributesPager};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n complexContainer: {\n marginTop: '1px'\n },\n labelContainer: {\n display: 'flex',\n minHeight: '18px'\n },\n label: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 'normal',\n paddingTop: '1px',\n marginLeft: '2px'\n },\n spacer: {\n flex: 1\n }\n});\n","import React, {useContext, useEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {\n AttributeTypeType,\n isAnalyticAttribute,\n NestedAttributeValueType,\n ReferenceAttributeValueType,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType,\n isSpecialAttribute\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport AttributesList from '../AttributesList/AttributesList';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\nimport {useStyles} from './styles';\n\nconst ComplexAttribute = ({\n attributeTypesList,\n attributeValue,\n label,\n expanded: expandedProp = false,\n children,\n showNonOv,\n attributeType,\n LabelRenderer,\n RightSlot\n}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const uri = attributeValue.uri;\n const [expanded, setExpanded] = useState(false);\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n useEffect(() => {\n setExpanded(expandedProp);\n }, [expandedProp]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null,\n ...(isSpecialAttribute(attributeType) ? attributeValue.value : {})\n }),\n [attributeValue, hasAnalyticValue, attributeType]\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={styles.complexContainer}>\n <div className={classnames(styles.labelContainer, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <ArrowExpandButton onClick={() => setExpanded((value) => !value)} expanded={expanded} />\n {LabelRenderer ? (\n <LabelRenderer attributeType={attributeType} attributeValue={attributeValue} />\n ) : (\n <>\n <Typography\n component=\"span\"\n variant=\"body2\"\n classes={{body2: styles.label}}\n className={classnames({\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri),\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </Typography>\n <div className={styles.spacer} />\n {RightSlot && <RightSlot attributeType={attributeType} attributeValue={attributeValue} />}\n <CommentsContainer\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </>\n )}\n </div>\n {expanded && (\n <AttributesList\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n drawLines={true}\n parentUri={uri}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </div>\n );\n};\n\nComplexAttribute.propTypes = {\n children: PropTypes.node,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n expanded: PropTypes.bool,\n showNonOv: PropTypes.bool,\n attributeType: AttributeTypeType,\n LabelRenderer: PropTypes.elementType,\n RightSlot: PropTypes.elementType\n};\n\nexport default ComplexAttribute;\n","export const CROSS_ICON = `<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke: #D1051E; stroke-width: 1\" viewBox=\"0 0 114 114\">\n\t<line x1=\"5\" y1=\"109\" x2=\"109\" y2=\"5\" />\n</svg>`;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {CROSS_ICON} from './cross.inline.svg';\nimport {svg2Url} from '@reltio/mdm-sdk';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nconst BORDER_WIDTH = '3px';\n\nexport const useStyles = makeStyles((theme) => ({\n image: ({imageMargin, imageHeight, imageWidth}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n deleteAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n background: `url('${svg2Url(CROSS_ICON)}') no-repeat`,\n backgroundColor: historyPalettes[HistoryOperations.deleteAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n updateAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n backgroundColor: historyPalettes[HistoryOperations.updateAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n deleteAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.deleteAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n insertAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.insertAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n updateAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.updateAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n padding: '36px 8px',\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useContext} from 'react';\nimport {AttributeType, getImageAttributeOvThumbnailUrl, ImageAttributeValue, Paging} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport classnames from 'classnames';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport Image from '../../../Image/Image';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n parentUri?: string;\n showNonOv?: boolean;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n paging,\n parentUri,\n requestNextPageOfAttributeValues,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const {appearance} = useContext(HistoryDiffContext);\n\n const renderImage: RenderImage = ({onOpenImageGalleryDialog}) => {\n const renderImage = (attribute: ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const imageAppearance = getHistoryAppearanceByUri(uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(imageAppearance);\n return (\n <div\n className={classnames(styles.image, {\n [styles[historyAttributesClassName + 'Image']]: historyAttributesClassName\n })}\n key={uri}\n data-reltio-id=\"reltio-attribute-value\"\n >\n <Image\n onClick={() => onOpenImageGalleryDialog(uri)}\n className={styles[historyAttributesClassName]}\n src={src}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n );\n};\n\nexport default ImageAttributesLine;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nconst styles = makeStyles({\n label: {\n textDecoration: 'none'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n },\n pivotingTooltip: {\n marginLeft: '4px'\n }\n});\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {evaluateDeepEntityLabel, getAttributeTypeSubAttributes, getLabel, NestedAttributeType} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\nimport SearchHighlighter from '../../../SearchHighlighter/SearchHighlighter';\n\nimport useStyles from './styles';\n\nconst NestedAttribute = ({attributeValue, attributeType, ...otherProps}) => {\n const styles = useStyles();\n\n const {appearance} = useContext(HistoryDiffContext);\n\n const attributeLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const label = attributeValue.label\n ? attributeValue.label\n : evaluateDeepEntityLabel(attributeValue, attributeType.dataLabelPattern);\n\n return (\n <PivotingTooltip className={styles.pivotingTooltip} value={attributeValue} attributeType={attributeType}>\n <Box component=\"span\" className={classnames(styles[historyAttributesClassName], styles.label)}>\n <SearchHighlighter text={getLabel(label)} />\n </Box>\n </PivotingTooltip>\n );\n }, [appearance, styles, attributeValue, attributeType]);\n\n return (\n <ComplexAttribute\n label={attributeLabel}\n attributeValue={attributeValue}\n attributeTypesList={getAttributeTypeSubAttributes({}, attributeType)}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nconst styles = makeStyles((theme) => ({\n relationshipLabel: {\n marginLeft: '4px',\n color: theme.palette.text.primary\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n}));\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n getAttributeTypeSubAttributes,\n getEntityLink,\n getLabel,\n getReferencedEntityUriFromAttrValue,\n isEmptyValue,\n isOv,\n ReferenceAttributeType\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport InternalLink from '../../../InternalLink/InternalLink';\nimport SearchHighlighter from '../../../SearchHighlighter/SearchHighlighter';\n\nimport {useOvValueStyles} from '../helpers/commonStyles';\nimport useStyles from './styles';\n\nconst ReferenceAttribute = ({attributeValue, metadata, attributeType, uiPath, ...otherProps}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const refEntityURI = getReferencedEntityUriFromAttrValue(attributeValue);\n const attributeTypeList = useMemo(() => getAttributeTypeSubAttributes(metadata, attributeType), [\n attributeType,\n metadata\n ]);\n\n const {appearance} = useContext(HistoryDiffContext);\n\n const entityLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return (\n <InternalLink\n href={isEmptyValue(appearance) ? getEntityLink({uiPath, uri: refEntityURI}) : undefined}\n className={classnames(styles[historyAttributesClassName], {\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n >\n <SearchHighlighter text={getLabel(attributeValue.label)} />\n {attributeValue.relationshipLabel && (\n <span className={styles.relationshipLabel}>\n <SearchHighlighter text={attributeValue.relationshipLabel} />\n </span>\n )}\n </InternalLink>\n );\n }, [attributeValue, appearance, uiPath, refEntityURI, styles, ovValueStyles.ovFalse]);\n\n return (\n <ComplexAttribute\n attributeTypesList={attributeTypeList}\n attributeValue={attributeValue}\n label={entityLabel}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nReferenceAttribute.propTypes = ReferenceAttributeType;\n\nexport default memo(ReferenceAttribute);\n","import {connect} from 'react-redux';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport mdmModule from '@reltio/mdm-module';\n\nconst mapStateToProps = (state) => {\n return {\n metadata: mdmModule.selectors.getMetadata(state),\n uiPath: mdmModule.selectors.getUIPath(state)\n };\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps)(ReferenceAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'start',\n justifyContent: 'space-between'\n },\n commentsContainer: {\n height: '15px',\n marginRight: '-4px' // AttributesPager padding compensation\n },\n attributeValue: {\n flex: 1,\n wordBreak: 'break-all'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.updateAttribute].color\n }\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.insertAttribute].color\n }\n },\n deleteAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n textDecoration: 'line-through',\n ...historyPalettes[HistoryOperations.deleteAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.deleteAttribute].color\n }\n },\n multilineAttribute: {\n width: 'fit-content'\n }\n});\n","import React, {useContext} from 'react';\nimport {\n AttributeType,\n getAttrDataTypeDefinition,\n getAttributeValue,\n SimpleAttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\nimport {HistoryDiffContext} from '../../../../contexts/HistoryAppearanceContext';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport {useStyles} from './styles';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\ntype Props = {\n className?: string;\n attributeValue: SimpleAttributeValue;\n attributeType: AttributeType;\n inlined?: boolean;\n};\n\nconst SimpleAttribute = ({className, attributeType = null, attributeValue, inlined}: Props) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const dataTypeValue = (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n />\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return inlined || historyClassName ? (\n <div\n className={classnames(className, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip\n value={attributeValue}\n attributeType={attributeType}\n key={attributeValue.uri}\n className={classnames({[styles.multilineAttribute]: !inlined})}\n >\n <span\n className={classnames(styles[historyClassName], {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n </div>\n ) : (\n <div\n className={classnames(className, styles.root, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip value={attributeValue} attributeType={attributeType} key={attributeValue.uri}>\n <span\n className={classnames(styles.attributeValue, {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n <CommentsContainer\n className={styles.commentsContainer}\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default SimpleAttribute;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useOvValueStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n ovFalse: theme.inactive\n}));\n","import {\n any,\n cond,\n curry,\n has,\n isNil,\n join,\n keys,\n lte,\n pipe,\n prop,\n propSatisfies,\n split,\n slice,\n startsWith\n} from 'ramda';\nimport {HistoryAppearanceActions, HistoryDiff} from '@reltio/mdm-sdk';\n\ntype historyColors = {\n backgroundColor?: string;\n color: string;\n};\n\nexport enum HistoryOperations {\n insertAttribute = 'insertAttribute',\n updateAttribute = 'updateAttribute',\n deleteAttribute = 'deleteAttribute'\n}\n\nexport const historyPalettes: {[key: string]: historyColors} = {\n [HistoryOperations.insertAttribute]: {\n color: '#599E0E'\n },\n [HistoryOperations.updateAttribute]: {\n backgroundColor: 'rgba(255, 187, 0, 0.12)',\n color: '#CC7500'\n },\n [HistoryOperations.deleteAttribute]: {\n backgroundColor: 'rgba(255, 50, 0, 0.2)',\n color: '#CF0E26'\n }\n};\n\nexport const getHistoryAttributeClassName = (type: HistoryAppearanceActions) => {\n switch (type) {\n case 'UPDATE_ATTRIBUTE':\n return HistoryOperations.updateAttribute;\n case 'UNDO_IGNORE_ATTRIBUTE':\n case 'INSERT_ATTRIBUTE':\n return HistoryOperations.insertAttribute;\n case 'IGNORE_ATTRIBUTE':\n case 'DELETE_ATTRIBUTE':\n return HistoryOperations.deleteAttribute;\n default:\n return '';\n }\n};\n\nconst ATTRIBUTE_DELIMITER = '/';\n\nconst hasParent = pipe(split(ATTRIBUTE_DELIMITER), propSatisfies(lte(2), 'length'));\n\nconst getParentUri = pipe(split(ATTRIBUTE_DELIMITER), slice(0, -2), join(ATTRIBUTE_DELIMITER));\n\nconst getParentHistoryAppearanceByUri = curry((uri: string, history: HistoryDiff['appearance']) => {\n return cond([\n [has(uri), prop(uri)],\n [() => hasParent(uri), getParentHistoryAppearanceByUri(getParentUri(uri))]\n ])(history);\n});\n\nconst hasModifiedChildren = (uri: string) => pipe(keys, any(startsWith(uri + ATTRIBUTE_DELIMITER)));\n\nexport const getHistoryAppearanceByUri = (uri = '', history: HistoryDiff['appearance'] = {}) => {\n const state = getParentHistoryAppearanceByUri(uri, history);\n if (isNil(state)) {\n return hasModifiedChildren(uri)(history) ? 'UPDATE_ATTRIBUTE' : '';\n }\n return state;\n};\n\nexport const getHistoryAppearanceBySpecialAttributeValue = (\n name: string,\n value: string,\n history: HistoryDiff['appearance'] = {}\n) => history?.[name]?.[value];\n","import {EntityAttrTypes} from '@reltio/mdm-sdk';\n\nexport const ALWAYS_VISIBLE_TYPE_URIS = [EntityAttrTypes.roles.uri, EntityAttrTypes.tags.uri];\n","export const COMMENTS_CONTAINER_VISIBILITY_AREA = 'commentsContainerVisibilityArea';\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const AsyncMountContext = React.createContext({\n enabled: false,\n queueSizeThreshold: 0\n});\n\nAsyncMountContext.Provider.propTypes = {\n value: PropTypes.shape({\n enabled: PropTypes.bool,\n queueSizeThreshold: PropTypes.number\n })\n};\n\nAsyncMountContext.displayName = 'AsyncMountContext';\n","import React from 'react';\n\nexport const BlockImageGalleryDialogContext = React.createContext(false);\n\nBlockImageGalleryDialogContext.displayName = 'BlockImageGalleryDialogContext';\n","import React from 'react';\nimport {CollaborationObjectTypes, Comment, CommentsMap, CommentState, Reply} from '@reltio/mdm-sdk';\n\nconst noop = () => {};\n\nexport const CollaborationContext = React.createContext<{\n objectTypes?: CollaborationObjectTypes[];\n commentsMap: CommentsMap;\n comments: Comment[];\n currentComment: Comment;\n updateCommentState: (uri: string, commentUri: string, newState: CommentState) => void;\n clearCommentState: (uri: string, commentUri: string) => void;\n getCommentState: (uri: string, commentUri: string) => CommentState;\n getComments: (uri: string, pageToken?: string) => void;\n getCommentsCount: (objectIds: string[]) => void;\n getComment: (commentId: Comment['commentId']) => void;\n createComment: (\n params: Pick<Comment, 'content' | 'namedUsers' | 'objectType' | 'relatedObjectUris'> & {uri: string}\n ) => Promise<void>;\n editComment: (\n params: Pick<\n Comment,\n 'content' | 'namedUsers' | 'objectType' | 'relatedObjectUris' | 'commentId' | 'replies'\n > & {uri: string}\n ) => Promise<void>;\n editReply: (params: Pick<Reply, 'content' | 'namedUsers' | 'replyId'> & {commentId: string}) => Promise<void>;\n deleteComment: (params: Pick<Comment, 'commentId'> & {uri: string}) => void;\n deleteReply: (params: {uri: string; commentId: string; reply: Pick<Reply, 'action' | 'replyId'>}) => void;\n createReply: (\n params: Pick<Reply, 'content' | 'namedUsers' | 'action'> & {uri: string; commentId: string}\n ) => Promise<void>;\n resolveThread: (params: {uri: string; commentId: string}) => void;\n reOpenThread: (params: {uri: string; commentId: string}) => void;\n clearCurrentComment: () => void;\n sending: boolean;\n loading: boolean;\n pageToken: string;\n }>({\n comments: [],\n commentsMap: null,\n currentComment: null,\n updateCommentState: noop,\n clearCommentState: noop,\n getCommentState: () => ({}),\n getComment: noop,\n getComments: () => new Promise<void>(noop),\n getCommentsCount: noop,\n createComment: () => new Promise<void>(noop),\n editComment: () => new Promise<void>(noop),\n createReply: () => new Promise<void>(noop),\n resolveThread: noop,\n reOpenThread: noop,\n clearCurrentComment: noop,\n deleteComment: noop,\n sending: false,\n loading: false,\n pageToken: null,\n deleteReply: noop,\n editReply: () => new Promise<void>(noop)\n });\n\nCollaborationContext.displayName = 'CollaborationContext';\n","import {EntitiesMap} from '@reltio/mdm-sdk';\nimport React from 'react';\n\nexport const EntitiesMapContext = React.createContext<EntitiesMap>({});\n\nEntitiesMapContext.displayName = 'EntitiesMapContext';\n","import React from 'react';\nimport {Entity} from '@reltio/mdm-sdk';\n\nexport const EntityContext = React.createContext<Entity>(null);\n\nEntityContext.displayName = 'EntityContext';\n","import React from 'react';\n\nexport const HighlightedValuesContext = React.createContext<{\n highlightedValuesUris: string[];\n highlightedClassName: string;\n}>({\n highlightedValuesUris: [],\n highlightedClassName: ''\n});\n\nHighlightedValuesContext.displayName = 'HighlightedValuesContext';\n","import React from 'react';\nimport {HistoryDiff} from '@reltio/mdm-sdk';\n\nexport const HistoryDiffContext = React.createContext<HistoryDiff>({\n appearance: undefined,\n attributes: undefined,\n roles: undefined,\n tags: undefined\n});\n\nHistoryDiffContext.displayName = 'HistoryDiffContext';\n","import React from 'react';\nimport {PivotingAttribute} from '@reltio/mdm-sdk';\n\nexport const PivotingAttributeContext = React.createContext<PivotingAttribute[]>([]);\n","import React from 'react';\n\nexport const RelatedObjectUrisContext = React.createContext<string[]>([]);\n\nRelatedObjectUrisContext.displayName = 'RelatedObjectUrisContext';\n","import React from 'react';\nimport {User} from '@reltio/mdm-sdk';\n\nexport const UsersContext = React.createContext<User[]>([]);\n\nUsersContext.displayName = 'UsersContext';\n","import {useContext, useEffect, useState, useRef} from 'react';\n\nimport {AsyncMountContext} from '../contexts/AsyncMountContext';\n\nlet queueSize = 0;\n\nexport const useAsyncMount = () => {\n const isFirstRunRef = useRef(true);\n const {enabled, queueSizeThreshold = 0} = useContext(AsyncMountContext);\n const [shouldMount, setShouldMount] = useState(!enabled || (enabled && queueSize < queueSizeThreshold));\n if (isFirstRunRef.current) {\n queueSize++;\n }\n const timerRef = useRef();\n useEffect(() => {\n queueSize--;\n if (!shouldMount) {\n timerRef.current = setTimeout(() => {\n setShouldMount(true);\n }, 0);\n return () => clearTimeout(timerRef.current);\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n isFirstRunRef.current = false;\n return shouldMount;\n};\n","import React from 'react';\n\nconst SvgDownload: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 18 18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M19 16v3H5v-3H3v3c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-3h-2zm-6-3.33l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2v9.67z\"\n id=\"Download_svg__a\"\n />\n </defs>\n <g transform=\"translate(-3 -3)\" stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"Download_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Download_svg__a\" />\n </mask>\n <path fillOpacity={0.54} fill=\"#fff\" mask=\"url(#Download_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDownload;\n"],"names":["Component","PlaceholderComponent","WithAsyncMount","forwardRef","componentProps","ref","useAsyncMount","displayName","useStyles","makeStyles","expandButton","backgroundColor","expandIcon","transition","expanded","transform","props","styles","className","otherProps","SmallIconButton","icon","ArrowRight","size","disableRipple","iconClassName","classnames","toolbar","minHeight","padding","lineHeight","title","fontSize","fontWeight","whiteSpace","overflow","textOverflow","children","classes","Toolbar","root","Typography","variant","getRelatedEntityUri","comment","entityUri","index","relatedObjectUris","indexOf","formatDate","time","i18n","createEditedCommentUri","commentId","createEditedReplyUri","reply","replyId","transformPlainTextValueToValueWithMentions","plainTextValue","mentions","value","mention","split","join","theme","marginBottom","color","palette","divider","label","paddingLeft","borderLeft","text","primary","link","main","textDecoration","CommentTarget","entity","useSelector","mdm","metadata","entitiesMap","useContext","EntitiesMapContext","Box","objectType","CollaborationObjectTypes","attributeTypeUri","getAttributeTypeUriByValueUri","objectId","type","attributeType","findAttributeTypeByUri","relationTypeUri","find","startsWith","EntityUriLink","getEntityUriForLink","getLabel","relatedEntityUri","uri","relatedEntity","getEntityId","getContent","wordBreak","CommentContent","users","UsersContext","processor","trigger","arr","currentStr","process","i","length","currentCharacter","nextCharacter","isLastCharacter","includes","slice","push","processMentions","content","namedUsers","user","username","Link","href","email","map","el","idx","Fragment","key","width","height","secondary","Avatar","item","toUpperCase","fontFamily","border","borderRadius","outline","boxShadow","maxHeight","overflowY","transitions","create","position","zIndex","textShadow","pointerEvents","TextFieldWithMentions","onChange","_","uniq","display","data","id","displayTransform","appendSpaceOnAdd","isEditing","textField","maxWidth","form","alignItems","avatar","marginRight","buttons","marginLeft","marginTop","button","getPlaceholder","status","SendMessageArea","inputRef","popperRef","isEditingComment","isEditingReply","onCancel","focused","setFocused","useState","createReply","createComment","sending","editComment","editReply","getCommentState","updateCommentState","clearCommentState","CollaborationContext","commentUri","isNil","createNewReplyUri","createCommentUri","defaultCommentState","commentOrReply","getDefaultCommentState","hasValue","trim","shouldShowButtons","clearValue","useEffect","current","update","buttonSize","onSubmit","e","preventDefault","cond","always","replies","T","action","request","then","catch","console","log","disabled","onFocus","onBlur","placeholder","Button","getButtonText","onClick","header","createdAt","body","commentTarget","message","dropdownMenu","Comment","onReply","useRef","createdBy","createdTime","canChangeComment","resolveThread","reOpenThread","deleteComment","updateIsEditingComment","useCallback","focus","menuItems","useMemo","sendMessageArea","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","tooltipTitle","popoverProps","PopoverClasses","menuId","component","marked","fontStyle","RepliedComment","canChangeReply","deleteReply","updateIsEditingReply","flexGrow","messages","repliedComment","CollaborationItem","memo","messagesRef","addButton","visibility","COMMENTS_CONTAINER_VISIBILITY_AREA","showAlways","fillOpacity","fill","fillRule","viewBox","xmlns","d","justifyContent","cursor","childrenWrapper","top","left","right","bottom","CommentButton","React","Tooltip","AddComment","paddingRight","headerInfo","counter","resolveButton","popper","collaborationItem","hasScroll","scrollWidth","CollaborationPopup","anchorEl","onClose","open","setScrollWidth","loading","itemsCount","PopupWithArrow","placement","showForDisabled","DoneIcon","node","offsetWidth","clientWidth","onChangePopupVisibility","allowOnlyOneComment","setAnchorEl","shouldOpenPopup","setShouldOpenPopup","isOpenPopup","Boolean","currentComment","commentsMap","getComment","clearCurrentComment","objectTypes","showComments","openComments","filter","reverse","shouldShowAddCommentButton","isOpenPopupWithNewComment","useDidUpdateEffect","additionalRelatedObjectUris","RelatedObjectUrisContext","allRelatedObjectUris","event","currentTarget","handleClickCommentButton","RNDContext","createDndContext","HTML5Backend","DragAndDrop","DNDElement","manager","DndProvider","dragDropManager","useDNDProviderElement","buttonRoot","active","fade","selected","paper","minWidth","menuItem","menuText","letterSpacing","MenuItemWithTooltip","withTooltip","MenuItem","MenuItemRenderer","onMenuClose","identity","tooltip","selectable","Checkbox","checked","buttonContent","onMenuOpen","DefaultMenuItemRenderer","ButtonComponent","buttonRef","isOpen","setIsOpen","handleToggle","stopPropagation","undefined","Menu","autoFocus","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","avatarClassName","imageClassName","mdmModule","absoluteImagePath","entityImageSource","getEntityImage","fallbackImage","getAbsoluteImageUrl","getEntityTypeImage","onImageLoadFail","target","onError","src","svg2Url","imgProps","alt","storagePath","str","endsWith","caption","errorMessage","hasError","wrapper","error","FormHelperText","helperText","margin","stroke","strokeWidth","image","imageWidth","imageHeight","objectFit","verticalAlign","defaultContainer","defaultImage","hideImage","ImageLoadingState","ImageSizesStyles","SMALL","MEDIUM","LARGE","OVERRIDE","containerClassName","overlay","sizeStyles","imageLoadingState","setImageLoadingState","imageIsLoading","imageIsLoaded","isEmptyValue","onLoad","DefaultImage","CheckedIcon","Icon","CheckCircleIcon","RadioButtonUncheckedIcon","userSelect","selectionMode","checkedIcon","actions","actionButton","dropDownMenuButton","canBeSelected","onDeselect","noop","onSelect","onShareLink","onSetAsDefault","onDelete","onDownload","hovered","setHovered","prop","toggleSelected","ifElse","equals","showCheckBox","showActions","showDeselectButton","onMouseEnter","onMouseLeave","DownloadIcon","xmlnsXlink","xlinkHref","mask","backdrop","appBar","background","closeButton","closeIcon","headerLeft","flex","headerCenter","headerRight","modeSwitcher","Mode","ImageGalleryDialog","mode","onChangeMode","modes","GALLERY_MODE","ViewComfyIcon","DETAILS_MODE","DetailsIcon","Dialog","BackdropProps","fullScreen","AppBar","colorPrimary","CloseIcon","ModeSwitcher","modeId","DialogContent","inRouterContext","useInRouterContext","linkClassName","to","replace","window","location","origin","loadingOverlay","opacity","transparent","relativePosition","LinearProgress","textTransform","borderColor","ButtonWithTooltip","ButtonGroup","String","newMode","popoverRoot","arrow","boxSizing","shadows","arrowRef","setArrowRef","Popper","modifiers","preventOverflow","enabled","boundariesElement","element","modal","ClickAwayListener","onClickAway","child","Array","from","document","querySelectorAll","some","contains","Paper","autofocus","onSearch","rootRef","localValue","setLocalValue","updateValue","pipe","tap","inputValue","startAdornment","InputAdornment","endAdornment","clearButton","input","classNames","container","getValue","disableUnderline","white","hideTitle","hideSearchInput","headerPlacement","containerWidth","containerHeight","searchInputOnKeyDown","searchInputRef","onKeyDown","searchInputContainer","style","list","useKeyboardNavigation","items","onSelectFocusedItem","selectedItems","focusIndex","setFocusIndex","restoreFocusIndex","increaseFocusIndex","currentIndex","newIndex","isTitleItem","decreaseFocusIndex","handleSelectFocusedItem","notSelectable","groupData","handleKeyDown","moveIndex","findIndex","listItem","moveTo","flexDirection","flexShrink","paddingBottom","paddingTop","isRequired","RequiredMark","stickyTitlesWrapper","titleItemIndex","VirtualGroupedList","getItemSize","renderItem","renderGroupTitle","fixedTitle","itemKey","disableHorizontalScrollbar","hideSubtitles","onInnerContainerResize","listRef","itemsRef","titlesRef","itemOffsets","currentTitleParams","topMargin","hasSubTitles","calcOffsetsToIndex","curItemsLength","prevItemSize","forEach","realIndex","getTitleByIndex","getItemByIndex","requestAnimationFrame","scrollTo","resetAfterIndex","setTitleWidth","scrollToOffset","indexItem","titleIndex","offset","titleHeight","calcMoveToOffset","state","scrollOffset","getItemByOffset","result","nextOffset","_getItemSize","render","handleOnItemsRendered","useScrollToFocusItem","renderTitles","renderTitle","handleHeight","onResize","targetDomEl","itemCount","itemSize","innerRef","onScroll","scrollDirection","topItem","currentTitleIndex","dataset","toString","itemAfterTitle","nextTitleIndex","fromIndex","nextTitleOffset","getOffsetByIndex","setTitleTopMargin","overflowX","overscanCount","onItemsRendered","propTypes","PropTypes","flattenGroupedItemsData","groupedItems","getFlattenedItems","flatten","concat","visibleStartIndexRef","visibleStopIndexRef","visibleStartIndex","visibleStopIndex","Math","max","scrollToItem","min","lineStyle","decorator","arrowWidth","borderBottom","plain","horizontalLineWidth","alignContent","mainImageContainer","mainImage","arrowButton","arrowButtonPrev","arrowButtonNext","thumbnails","gridContainer","thumb","inactiveThumb","Thumbnails","attributeValues","setAttributeValueIndex","attributeValueIndex","gridRef","containerScrollLeft","scrollLeft","currentElementPosition","scroll","IMAGE_WIDTH","Grid","wrap","direction","spacing","Image","getImageAttributeOvThumbnailUrl","ImageDetailsViewCarousel","attributeValue","mainImageSrc","getImageAttributeOvPreviewUrl","NavigateBeforeIcon","NavigateNextIcon","SYSTEM_ATTRIBUTES_TITLES","CreationTime","CreationDate","Dimensions","MimeType","Size","Url","UrlPreview","UrlThumbnail","CdnUrl","CdnUrlPreview","CdnUrlThumbnail","getFormattedSystemImageAttributeValue","name","path","moment","CreationTimestamp","format","Height","Width","Number","toFixed","filterByNotSystemAttributeTypes","attrTypes","system","filterByFieldsOrder","keys","fieldsOrder","includeNames","excludeNames","order","filteredKeys","sort","a","b","indA","indB","getNotSystemAttributesList","attrValue","attrType","notSystemAttrTypes","attributes","Object","reduce","values","isLink","canAdd","MetaInfoHeader","onAddAttributes","moreAttrTypes","MoreAttributesButton","dense","onApply","parentUri","Divider","float","wordWrap","MetaInfoItem","MetaInfoList","imageAttributeFieldsOrder","isViewMode","systemAttributesList","notSystemAttributesList","AttributesPager","drawLines","titleClassName","contentClassName","cancelButton","MetaInfoForm","hasChanges","onDeleteAttribute","onChangeAttribute","shouldShowActionButtons","showEmptyEditors","isTempUri","darkTheme","darkMuiTheme","createMuiTheme","MetaInfo","initialAttributeValue","addAttributes","changeAttribute","deleteAttribute","clearLocalChanges","applyLocalChanges","dispatch","useDispatch","viewId","ViewIdContext","setAttributeValue","prevAttrValue","attribute","addAttribute","nestingLevel","editAttribute","removeAttribute","profile","useEditMetaInfo","isEditableMode","headerTitle","bodyWrapper","formControlLabel","checkboxLabel","checkbox","ImageDetailsViewSidebar","handleSetAsDefault","modifiedEntity","entityToShow","imageAttributeConfig","default","isDefault","setIsDefault","defaultProfilePic","handleChange","FormControlLabel","control","details","ImageDetailsView","currentAttributeValueUri","setCurrentAttributeValueUri","onChangeAttributeValueIndex","GalleryView","onSelectImage","onDeselectImage","onClickImage","renderImageActionsOverlay","ImageActionsOverlay","selectButton","HeaderLeft","onSelectAll","onClearAll","selectedAllItems","underline","downloadButton","shareButton","deleteButton","HeaderRight","onShare","onUpload","startIcon","CloudUpload","LinkIcon","DeleteIcon","setSelectedItems","setMode","imageItems","downloadURL","getImageAttributeOvUrl","handleShareLink","propEq","handleDelete","isGalleryMode","isDetailsMode","hasSelectedItems","isHasSelectedItemsOrDetailsMode","isShowDeleteButton","isShowUploadButton","pluck","downloadURLs","imageBox","flexWrap","moreButtonContainer","moreButton","number","textAlign","renderImage","countFixedItems","imageSize","DEFAULT_IMAGE_SIZE","paging","showNonOv","requestNextPageOfAttributeValues","totalVisibleValues","totalOvValues","totalValues","attributeTypeName","defaultMaxValues","lastWidth","maxItems","setMaxItems","hiddenItemsLength","setHiddenItemsLength","isBlockImageGalleryDialog","BlockImageGalleryDialogContext","isOpenDialog","setIsOpenDialog","adjustMaxItemsToScreenWidth","imageMargin","maxItemsPerScreen","floor","hasHiddenImage","IMAGE_MIN_VISIBLE_WIDTH","handleResize","handleOpenImageGalleryDialog","handleCloseImageGalleryDialog","handleDownload","urls","url","isAbsoluteUrl","URL","host","isExternalUrl","iframe","createElement","setAttribute","appendChild","setTimeout","removeChild","download","pop","getFilenameFromURL","click","downloadImagesByURLs","navigator","clipboard","writeText","insertDefaultImageByAttrUri","renderImageProps","onOpenImageGalleryDialog","handleWidth","IMAGE_HEIGHT","ChipWithTooltip","Chip","nonOvValues","nonOvTotal","attributeUri","getEntityUriFromAttributeUri","ui","screen","isComplexAttribute","DataTypeValue","getAttributeValue","dataTypeDefinition","getAttrDataTypeDefinition","rich","tooltipPlacement","generatePivotingValue","pivotingAttributes","pivotingChildrenUris","pivotingAttribute","isArray","getPivotingChildrenUris","pivotingChildren","analyticsAttributes","acc","valueToString","valueContainer","lookupCode","isOv","preparePivotingAttributeValue","DataTypes","Date","getTime","isNaN","entityTypeLabel","headerCount","footer","profileIcon","entityContainer","entityLabel","seeAllButton","usePivotingTooltipStyles","PivotingTooltipContent","config","onSeeAllClick","entities","setEntities","total","setTotal","safePromise","useSafePromise","globalSearchRequestOptions","entityType","shouldShowSeeAllButton","filters","convertPivotingValueToSearchFilters","options","Promise","all","getFilteredEntities","getTotals","results","hasEntityTypeLabel","visibleEntity","EntityAvatar","PivotingTooltip","contentStyles","pivotingAttributesList","PivotingAttributeContext","isNestedAttribute","isNested","pivotingValue","isPivotingAttribute","handleSeeAllClick","generatedValue","fromEntries","entries","getLastUriPart","convertSimpleAttributePivotingValue","mdmModuleUi","interactive","popup","PivotingIcon","lazy","errors","crosswalks","propsForSimpleAttribute","NestedAttribute","ReferenceAttribute","SimpleAttributeEditor","isReltioCrosswalk","build","AttributesList","parentAttributeType","alwaysVisibleTypeUris","ALWAYS_VISIBLE_TYPE_URIS","additionalControlsRenderer","hasDeletionsMap","setHasDeletionsMap","setHasDeletions","attrTypeUri","prevMap","canCreateParentAttrType","checkCanCreateAttribute","source","isSpecialAttribute","both","isAnalyticAttribute","getSource","nameProp","getNameProp","singleValue","isRoleAttrType","isTagAttrType","has","getMoreAttrTypes","getCreatableAttributeTypes","pinnedAttributes","PinnedAttributesContext","pagersData","getAttributesListForEditMode","alwaysVisiblePagersData","regularPagersData","splitPagersData","onAddMoreAttributes","attributeTypes","getParentUri","decoratorProps","hasDeletionsContextValue","BranchDecorator","parent","HasDeletionsContext","ModeType","valueCaption","hasMinValue","hasMaxValue","noMaxValue","not","minValueIsOne","propSatisfies","minValue","generateMinCardinality","minValueCaption","generateMaxCardinality","maxValue","maxValueCaption","getCardinalityMessage","allPass","minCardinality","CardinalityMessage","cardinality","CardinalityType","filterNewValues","nonVisibleValues","onDeactivateError","visibleValuesCount","setVisibleValuesCount","hadDeletions","setHadDeletions","required","checkIsEditableMode","isPinned","isEmptyValues","showEmpty","emptyEditorValue","createNewAttribute","onAddOneMore","newValuesCount","totalProp","add","totalNonVisibleValues","hasPaging","showMore","showLess","shownValues","lastIndex","hiddenValuesCount","titleWrapper","Title","OvIcon","ovIcon","ErrorMessage","typeError","attributesWrapper","Attribute","ownError","getAttributeOwnError","ShowMore","moreNumber","valueNumber","ShowLess","roleContainer","components","MultiValue","MultiValueChip","Roles","getRolesForEntityType","role","formattedValues","roles","EntityAttrTypes","SimpleDropDownSelector","isMulti","getQuery","searchQuery","buildFilterQueryString","fieldName","filtersWithSearch","orderType","getSuggestions","getFacets","query","response","tags","TypeaheadEditor","fullWidth","multiple","withContext","contextValue","hasDeletions","hasDeletionsProp","hasDeletionsState","setHasDeletionsState","updateHasDeletions","isActivenessAttrType","renderValue","RENDERER_TYPES","Infinity","partitionByOv","partition","ovValues","visibleValues","commonProps","special","isImage","imageLine","ImageAttributesLine","renderAttribute","mapDispatchToProps","connect","getAttributePagerActiveTypeErrorMessage","textIndent","editor","titleContainer","deleted","editedLabel","errorWrapperHelperText","ComplexAttribute","attributeTypesList","hideDeleteButton","expandedProp","edited","isNew","defaultExpand","setExpanded","canDelete","checkCanDeleteAttribute","showDeleteButton","hasDescendantsWithErrors","hasAttributeDescendantsWithErrors","hasAnalyticValue","attributeListEntity","getErrorMessage","ArrowExpandButton","ErrorWrapper","AttributeTypeType","NestedAttributeValueType","ReferenceAttributeValueType","ComplexAttributeType","defaultAttributeTypesSelectionStrategy","EntityCreator","attributeTypesSelectionStrategy","ownProps","emptyEntityLabel","entityAvatar","entitySecondaryLabel","useSingleValueStyles","linkValue","useGroupStyles","addLabel","groupHeading","addIcon","useClearIconStyles","clearIcon","EntityOption","innerProps","selectOption","secondaryLabel","EntityTypeIcon","EntityType","SingleValue","selectProps","currentEntityType","menuIsOpen","disableLinkClick","uiPath","valueProps","onMouseDown","getEntityLink","ClearIndicator","onClear","IconButton","Clear","Group","ComponentsGroup","onCreate","Add","creatorWrapper","EntitySelector","entityTypesUris","setInputValue","entityTypes","getEntityType","handleCreate","entityTypeUri","groupMode","isEmpty","createLabel","isTempEntity","groupComponent","GroupHeading","EmptyStub","clearComponent","TextFieldProps","dropDownSelectorProps","textFieldProps","DropDownSelector","onInputChange","getOptions","typeAheadSearch","newOptions","addDummyOptionToEmptyOptionList","filteredEntityTypes","option","buildEntityOptions","getOptionLabel","Option","isClearable","ConnectionEntityType","MetadataType","inputRoot","isEmptyField","ImageByUrlField","onSend","setValue","setError","InputBase","newValue","isCorrectUrl","RegExp","test","IMAGE_TYPES","SelectImageButton","onAppendFile","onInput","files","accept","htmlFor","x1","y1","x2","y2","stopColor","stopOpacity","cx","cy","r","rx","ry","isActive","description","TargetBox","canDrop","isOver","drop","useDrop","NativeTypes","FILE","collect","monitor","UploadIcon","MAX_IMAGE_SIZE","DividerWithText","ErrorSnackbar","Snackbar","dialogPaper","targetBox","UploadImageDialog","imageServicePath","environment","tenant","setLoading","uploadImage","uploadImageRequest","res","err","finally","isCorrectType","LinearLoadIndicator","uploadContainer","uploadButton","uploadIcon","isVisibleUploadDialog","setIsVisibleUploadDialog","toggleVisibilityUploadDialog","visible","handleAddAttributes","generateUri","ov","handleDeleteAttribute","param","newDefaultPic","methods","imageUrl","CloudUploadIcon","moreAttributes","popupContainer","moreAttributesPopup","buttonLabel","subHeader","noResultsCaptionContainer","filterItems","curry","filterText","toLowerCase","preparedGroupedItems","GROUP_NAMES","popupTitle","setFilter","hasGroups","parentGroupLength","attributesGroupLength","preparedParentGroupItem","parentGroup","preparedAttributesGroupItems","attributesGroup","useMoreAttributesItems","handleListItemClick","append","reject","handleSearchOnEnter","any","focusIndexRef","groupsCount","listHeight","listItemRenderer","level","isChecked","isFocused","AttributeListItem","Highlighter","highlight","labelInText","LogoIcon","ListItem","SelectionPopup","gutterBottom","evaluateDeepEntityLabel","dataLabelPattern","NestedAttributeType","onDeleteModifiedEntity","onUpdateModifiedEntity","referencedEntity","getReferencedEntityFromAttrValue","referencedRelation","getReferencedRelationFromAttrValue","referencedEntityTypeUri","getReferencedEntityTypeUriFromAttrType","referencedEntityType","allCrosswalks","addReferencedRelationCrosswalks","referencedEntityMissedError","getReferencedEntityActiveError","selectedEntity","getReferencedEntityUri","getReferencedEntityTypeUri","editableAttrTypes","getReferencedRelationAttrTypesUris","newEntityAttrTypesSelectionStrategy","referencedEntityAttributeTypesSelectionStrategy","onChangeEntity","initialAttrValue","isInitialEntity","getReferencedEntityUriFromAttrValue","modifiedValue","refEntity","convertReferencedEntityForAttrValue","refRelation","createReferencedRelationForAttrValue","getErrorId","onCreateEntity","initValue","newEntityAttrTypes","newEntity","createTemporaryEntity","canChangeReferencedEntity","checkCanEditAttribute","canCreateReferencedEntity","checkMetadataForCreate","ReferenceAttributeType","DLEditorContextCache","errorWrapper","alignSelf","attributeValueToEditorValue","canCreate","canEdit","showToEdit","dependentLookupEditorContext","isDependentLookupAttrType","valueUri","parents","missedParentsAttributeTypes","parentNodesValues","flatMap","parentNode","dependentLookupCode","modifiedEntities","connections","ownParentNodesValues","filterRelatedParentValuesForDependentLookupValueUri","parentValues","possibleParentBaseTypeUris","getAttributeValuePath","defaultTo","getBaseUri","prepend","typeUri","areOneHierarchyUris","typesMap","codeValues","getParents","isBlocked","missedParentsMessage","missedAttributeTypes","labels","words","word","autocompleteConfig","autopopulationEnabled","isAutopopulationEnabled","context","autopopulationId","cachedContext","fromCache","getDependentLookupEditorContext","deactivateError","showAddButton","deletedProps","DataTypeValueEditor","attributeUriToSearchUri","prepareChangeData","AddIcon","getErrorType","ErrorType","SimpleAttributeValueType","AttributeErrorType","withAsyncMount","parseBoolean","utils","editorValueToAttributeValue","editorValue","valueOf","getFilteredAttrTypes","includeUris","excludeUris","__","SimpleAttribute","getAttributesListForReadMode","visibleAttributePagersData","commonStyles","titleRow","paddingWrapper","paddingWrapperWithLines","useOneLineStyles","collaborationWrapper","titleIcon","useMultiLineStyles","isRelationAttrType","inlined","CommentsContainer","createRelatedObjectUris","dataReltioId","useCommonStyles","insertAttribute","historyPalettes","HistoryOperations","appearance","HistoryDiffContext","attributeAppearance","getHistoryAppearanceBySpecialAttributeValue","historyClassName","getHistoryAttributeClassName","getRoleLabel","Role","ownEntity","EntityContext","currentEntity","InternalLink","getTagLink","tag","dataTenant","getDataTenantEntityUri","Tag","isOneLineRender","complexContainer","labelContainer","spacer","LabelRenderer","RightSlot","ovValueStyles","useOvValueStyles","highlightedValuesUris","highlightedClassName","HighlightedValuesContext","body2","ovFalse","deleteAttributeImage","updateAttributeImage","outlineOffset","updateAttribute","imageAppearance","getHistoryAppearanceByUri","historyAttributesClassName","pivotingTooltip","attributeLabel","SearchHighlighter","getAttributeTypeSubAttributes","relationshipLabel","refEntityURI","attributeTypeList","commentsContainer","multilineAttribute","dataTypeValue","inactive","ATTRIBUTE_DELIMITER","hasParent","lte","getParentHistoryAppearanceByUri","history","hasModifiedChildren","AsyncMountContext","queueSizeThreshold","Provider","comments","getComments","getCommentsCount","pageToken","queueSize","isFirstRunRef","shouldMount","setShouldMount","timerRef","clearTimeout"],"sourceRoot":""}
1
+ {"version":3,"file":"1920.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/HOCs/withAsyncMount/withAsyncMount.js","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/styles.ts","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/ArrowExpandButton.tsx","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/BasicViewHeader.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/utils/index.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/CommentTarget.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/CommentContent.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/Avatar.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/TextFieldWithMentions.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/SendMessageArea.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/Comment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/RepliedComment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CollaborationItem.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/styles.ts","webpack://@reltio/remotes/../components/src/icons/CommentBubble.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/styles.ts","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/CommentButton.tsx","webpack://@reltio/remotes/../components/src/icons/AddComment.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/AddCommentButton.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/CollaborationPopup.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/CommentsContainer.tsx","webpack://@reltio/remotes/../components/src/components/DragAndDrop/DragAndDrop.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/styles.ts","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/DropDownMenuButton.tsx","webpack://@reltio/remotes/../components/src/components/EntityAvatar/EntityAvatar.tsx","webpack://@reltio/remotes/../components/src/components/EntityAvatar/no-photo.svg.ts","webpack://@reltio/remotes/../components/src/components/EntityTypeIcon/EntityTypeIcon.js","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorMessage.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorWrapper.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/styles.ts","webpack://@reltio/remotes/../components/src/icons/DefaultImage.tsx","webpack://@reltio/remotes/../components/src/components/Image/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/Image.tsx","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/CheckedIcon.tsx","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/ImageActionsOverlay.tsx","webpack://@reltio/remotes/../components/src/icons/Details.tsx","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/ImageGalleryDialog.tsx","webpack://@reltio/remotes/../components/src/components/InternalLink/styles.ts","webpack://@reltio/remotes/../components/src/components/InternalLink/InternalLink.tsx","webpack://@reltio/remotes/../components/src/components/LinearLoadIndicator/styles.ts","webpack://@reltio/remotes/../components/src/components/LinearLoadIndicator/LinearLoadIndicator.tsx","webpack://@reltio/remotes/../components/src/components/ModeSwitcher/styles.ts","webpack://@reltio/remotes/../components/src/components/ModeSwitcher/ModeSwitcher.tsx","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/styles.ts","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/PopupWithArrow.tsx","webpack://@reltio/remotes/../components/src/components/SearchInput/SearchInput.tsx","webpack://@reltio/remotes/../components/src/components/SearchInput/styles.ts","webpack://@reltio/remotes/../components/src/components/SelectionPopup/SelectionPopup.tsx","webpack://@reltio/remotes/../components/src/components/SelectionPopup/helpers.ts","webpack://@reltio/remotes/../components/src/components/SelectionPopup/styles.js","webpack://@reltio/remotes/../components/src/components/Title/styles.ts","webpack://@reltio/remotes/../components/src/components/Title/Title.tsx","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/styles.js","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/VirtualGroupedList.js","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/helpers.js","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/BranchDecorator.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/Thumbnails.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/ImageDetailsViewCarousel.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/constants/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/MetaInfoHeader.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/MetaInfoItem.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoList.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/MetaInfoForm.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/hooks/useEditMetaInfo.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/theme/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfo/MetaInfo.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/ImageDetailsViewSidebar.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/GalleryView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/HeaderLeft.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/HeaderRight.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/ImageAttributesGallery.tsx","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/helpers/imageAttributes.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/constants.ts","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/OvIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/helpers.ts","webpack://@reltio/remotes/../components/src/icons/PivotingIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltipContent.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltip.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/AttributesList.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/CardinalityMessage.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/utils.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributeRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/EntityCreator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/EntityOption.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/SingleValue.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/ClearIndicator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/Group.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/EntitySelector.js","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/ImageByUrlField.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/constants/index.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/SelectImageButton/SelectImageButton.tsx","webpack://@reltio/remotes/../components/src/icons/UploadIcon.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/TargetBox.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/DividerWithText.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/ErrorSnackbar.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/UploadImageDialog.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/useMoreAttributesItems.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/MoreAttributesButton.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/parents.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/cache.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/SimpleAttributeEditor.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/getDependentLookupEditorContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/missedParentsMessage.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/utils.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/HasDeletionsContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/PinnedAttributesContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/helpers/attributesView.ts","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowLess.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowMore.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesList/AttributesList.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/OneLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/MultiLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/SpecialAttributesArray.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Role.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tag.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/cross.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/SimpleAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/helpers/commonStyles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/helpers/historyAppearance.ts","webpack://@reltio/remotes/../components/src/constants/attributes.ts","webpack://@reltio/remotes/../components/src/constants/classnames.ts","webpack://@reltio/remotes/../components/src/contexts/AsyncMountContext/index.js","webpack://@reltio/remotes/../components/src/contexts/BlockImageGalleryDialogContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/CollaborationContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntitiesMapContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntityContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HighlightedValuesContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HistoryAppearanceContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/PivotingAttributeContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/RelatedObjectUrisContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/UsersContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useAsyncMount.js","webpack://@reltio/remotes/../components/src/icons/Download.tsx"],"sourcesContent":["import React, {forwardRef} from 'react';\nimport {useAsyncMount} from '../../hooks/useAsyncMount';\n\nconst withAsyncMount = (Component, PlaceholderComponent = null) => {\n const WithAsyncMount = forwardRef((componentProps, ref) => {\n const shouldMount = useAsyncMount();\n return shouldMount ? (\n <Component {...componentProps} ref={ref} />\n ) : (\n PlaceholderComponent && <PlaceholderComponent {...componentProps} ref={ref} />\n );\n });\n\n WithAsyncMount.displayName = 'WithAsyncMount';\n return WithAsyncMount;\n};\n\nexport default withAsyncMount;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n expandButton: {\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n expandIcon: {\n transition: 'transform .15s ease'\n },\n expanded: {\n transform: 'rotate(90deg)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport SmallIconButton from '../SmallIconButton/SmallIconButton';\nimport ArrowRight from '@material-ui/icons/ArrowRight';\nimport {IconButtonProps} from '@material-ui/core/IconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n expanded: boolean;\n className?: string;\n} & Omit<IconButtonProps, 'size'>;\n\nconst ArrowExpandButton = (props: Props) => {\n const styles = useStyles();\n const {expanded, className, ...otherProps} = props;\n return (\n <SmallIconButton\n icon={ArrowRight}\n size=\"XXS\"\n disableRipple\n iconClassName={classnames(styles.expandIcon, {[styles.expanded]: expanded})}\n className={classnames(className, styles.expandButton)}\n {...otherProps}\n />\n );\n};\n\nexport default ArrowExpandButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n toolbar: {\n minHeight: '48px',\n padding: '8px 24px',\n lineHeight: '28px'\n },\n title: {\n fontSize: '18px',\n fontWeight: 'normal',\n lineHeight: 'inherit',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n});\n","import React from 'react';\nimport Toolbar, {ToolbarProps} from '@material-ui/core/Toolbar';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = ToolbarProps & {\n title?: string;\n classes?: Partial<Record<'root' | 'title', string>>;\n};\n\nconst BasicViewHeader = ({title, children = null, classes = {}, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={classes.root} classes={{root: styles.toolbar}} {...otherProps}>\n <Typography className={classes.title} classes={{root: styles.title}} variant=\"h6\">\n {title}\n </Typography>\n {children}\n </Toolbar>\n );\n};\n\nexport default BasicViewHeader;\n","import i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\n\nexport const getAbbreviationFromUserName = (username: string) =>\n username\n .split('.')\n .map((item) => item[0].toUpperCase())\n .join('');\n\nexport const getRelatedEntityUri = (comment: Pick<Comment, 'relatedObjectUris'>, entityUri: string) => {\n const index = comment.relatedObjectUris.indexOf(entityUri);\n if (index >= 0) return comment.relatedObjectUris[1 - index];\n};\n\nexport const formatDate = (time: number) => `${i18n.date(time, 'LT')} ${i18n.date(time, 'LL')}`;\n\nexport const processMentions = (\n text: string,\n mentions: string[],\n processor: (mention: string) => unknown = (value) => value,\n trigger = '+'\n) => {\n const arr = [];\n let currentStr = '';\n let process = false;\n\n for (let i = 0; i <= text.length; i++) {\n const currentCharacter = text[i];\n const nextCharacter = text[i + 1];\n const isLastCharacter = i === text.length - 1;\n\n currentStr += currentCharacter;\n\n if (currentCharacter === trigger && i === 0) {\n process = true;\n }\n if (process && mentions.includes(currentStr.slice(trigger.length))) {\n process = false;\n arr.push(processor(currentStr));\n currentStr = '';\n }\n\n if (nextCharacter === trigger) {\n process = true;\n arr.push(currentStr);\n currentStr = '';\n }\n\n if (isLastCharacter) {\n arr.push(currentStr);\n }\n }\n\n return arr;\n};\n\nexport const createNewCommentUri = () => 'comment/new';\nexport const createNewReplyUri = (comment: Pick<Comment, 'commentId'>) => `comment/${comment.commentId}/reply/new`;\nexport const createEditedCommentUri = (comment: Pick<Comment, 'commentId'>) => `comment/${comment.commentId}`;\nexport const createEditedReplyUri = (comment: Pick<Comment, 'commentId'>, reply: Pick<Reply, 'replyId'>) =>\n `comment/${comment.commentId}/reply/${reply.replyId}`;\n\ntype CreateCommentUriProps = {\n comment: Pick<Comment, 'commentId'> | null;\n reply: Pick<Reply, 'replyId'> | null;\n isEditingReply: boolean;\n isEditingComment: boolean;\n};\n\nexport const createCommentUri = ({comment, reply, isEditingComment, isEditingReply}: CreateCommentUriProps) => {\n if (isNil(comment)) {\n return createNewCommentUri();\n }\n if (isEditingComment) {\n return createEditedCommentUri(comment);\n }\n if (isEditingReply) {\n return createEditedReplyUri(comment, reply);\n }\n return createNewReplyUri(comment);\n};\n\nexport const transformPlainTextValueToValueWithMentions = (plainTextValue: string, mentions: string[]) => {\n let value = plainTextValue;\n for (const mention of mentions) {\n value = value.split(`+${mention}`).join(`@[${mention}](${mention})`);\n }\n return value;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n title: {\n marginBottom: '10px',\n color: theme.palette.divider,\n fontSize: '12px',\n lineHeight: '14px'\n },\n label: {\n paddingLeft: '9px',\n borderLeft: '1px solid #D8D8D8',\n fontSize: '13px',\n color: theme.palette.text.primary,\n lineHeight: '15px'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {startsWith} from 'ramda';\nimport mdm from '@reltio/mdm-module';\nimport {Comment, Entity, CollaborationObjectTypes} from '@reltio/mdm-sdk';\nimport {\n findAttributeTypeByUri,\n getLabel,\n getEntityUriForLink,\n getEntityId,\n getAttributeTypeUriByValueUri\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {EntitiesMapContext} from '../../../contexts';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport {getRelatedEntityUri} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n comment: Pick<Comment, 'objectType' | 'objectId' | 'relatedObjectUris'>;\n className?: string;\n};\n\nexport const CommentTarget = ({comment, className}: Props) => {\n const styles = useStyles();\n\n const entity = useSelector(mdm.selectors.getEntity) as Entity;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const entitiesMap = useContext(EntitiesMapContext);\n\n const getContent = () => {\n switch (comment.objectType) {\n case CollaborationObjectTypes.ENTITY_ATTRIBUTE: {\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, entity.type);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION_ATTRIBUTE: {\n const relationTypeUri = comment.relatedObjectUris.find(startsWith('configuration/relationTypes'));\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, relationTypeUri);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.ENTITY: {\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected profile:')}</Typography>\n <EntityUriLink\n className={classnames(styles.label, styles.link)}\n value={getEntityUriForLink(entity)}\n >\n {getLabel(entity.label)}\n </EntityUriLink>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n ...(entitiesMap[relatedEntityUri] || {}),\n uri: relatedEntityUri\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected relation:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {relatedEntityUri && (\n <>\n {` ${i18n.text('to')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n case CollaborationObjectTypes.POTENTIAL_MATCH: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n uri: relatedEntityUri,\n label: entitiesMap[relatedEntityUri]?.label\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected potential match:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n\n {relatedEntityUri && (\n <>\n {` ${i18n.text('and')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n default: {\n return null;\n }\n }\n };\n\n return <Box className={className}>{getContent()}</Box>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n wordBreak: 'break-word'\n }\n}));\n","import React, {Fragment, useContext} from 'react';\nimport classnames from 'classnames';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport {UsersContext} from '../../../contexts';\nimport {processMentions} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n comment: Pick<Comment, 'content' | 'namedUsers'>;\n};\n\nexport const CommentContent = ({comment, className}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n return (\n <Typography className={classnames(styles.root, className)}>\n {processMentions(comment.content, comment.namedUsers, (mention) => {\n const user = users.find((user) => user.username === mention.slice(1));\n return user ? <Link href={`mailto:${user.email}`}>{mention}</Link> : mention;\n }).map((el, idx) => (\n <Fragment key={idx}>{el}</Fragment>\n ))}\n </Typography>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '32px',\n height: '32px',\n fontSize: '12px',\n color: theme.palette.text.secondary,\n backgroundColor: 'rgba(144, 164, 174, 0.2)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport MUIAvatar, {AvatarProps} from '@material-ui/core/Avatar';\nimport {getAbbreviationFromUserName} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = Omit<AvatarProps, 'children'> & {\n children: string;\n};\n\nexport const Avatar = ({className, children, ...props}: Props) => {\n const styles = useStyles();\n return (\n <MUIAvatar {...props} className={classnames(styles.root, className)}>\n {getAbbreviationFromUserName(children)}\n </MUIAvatar>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n backgroundColor: '#fff',\n fontFamily: 'Roboto',\n '&__control': {\n fontSize: '13px'\n },\n '&__highlighter': {\n padding: '10px 22px',\n border: '1px solid transparent !important'\n },\n '&__input': {\n borderRadius: '2px',\n border: '1px solid rgba(0,0,0,0.12)',\n padding: '10px 22px',\n outline: 0,\n overflow: 'auto !important'\n },\n '&__suggestions': {\n padding: '8px 0',\n borderRadius: '4px',\n backgroundColor: '#fafafa !important',\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2)',\n transform: 'translateY(-100%)'\n },\n '&__suggestions__list': {\n maxHeight: '200px',\n overflowY: 'scroll'\n },\n '&__suggestions__item': {\n padding: '6px 12px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n transition: theme.transitions.create(['background-color']),\n '&:hover, &--focused': {\n backgroundColor: 'rgba(0,0,0,0.04)'\n }\n }\n },\n mention: {\n position: 'relative',\n zIndex: 1,\n color: theme.palette.primary.main,\n textShadow: '1px 1px 1px white, 1px -1px 1px white, -1px 1px 1px white, -1px -1px 1px white',\n pointerEvents: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {uniq} from 'ramda';\nimport {MentionsInput, Mention, MentionsInputProps, MentionItem} from 'react-mentions';\nimport {UsersContext} from '../../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = Omit<MentionsInputProps, 'children' | 'onChange'> & {\n onChange?: (value: string, plainTextValue: string, mentions: string[]) => void;\n};\n\nexport const TextFieldWithMentions = ({onChange, className, ...props}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n const handleChange = (\n _: React.ChangeEvent<HTMLInputElement>,\n value: string,\n plainTextValue: string,\n mentions: MentionItem[]\n ) => {\n onChange(value, plainTextValue, uniq(mentions.map(({display}) => display.slice(1))));\n };\n\n return (\n <MentionsInput {...props} onChange={handleChange} className={classnames(styles.root, className)}>\n <Mention\n trigger=\"+\"\n data={users.map(({username}) => ({id: username, display: username}))}\n displayTransform={(_, username) => `+${username}`}\n appendSpaceOnAdd={true}\n className={styles.mention}\n />\n </MentionsInput>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n isEditing?: boolean;\n};\n\nexport const useStyles = makeStyles({\n root: ({isEditing}: StylesProps) => ({\n padding: isEditing ? '6px 6px 6px 0' : ' 6px 6px 6px 8px',\n borderRadius: '4px',\n backgroundColor: isEditing ? 'transparent' : 'rgba(0,114,206,0.06)'\n }),\n textField: ({isEditing}: StylesProps) => ({\n maxWidth: isEditing ? '100%' : 'calc(100% - 40px)'\n }),\n form: {\n marginBottom: 0\n },\n main: {\n display: 'flex',\n alignItems: 'center'\n },\n avatar: {\n marginRight: '8px'\n },\n buttons: ({isEditing}: StylesProps) => ({marginLeft: isEditing ? '0' : '40px', marginTop: '8px'}),\n button: {\n '& + $button': {\n marginLeft: '8px'\n }\n }\n});\n","import React, {useState, useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {always, cond, T} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {TextFieldWithMentions} from '../TextFieldWithMentions/TextFieldWithMentions';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {createCommentUri, transformPlainTextValueToValueWithMentions} from '../utils';\nimport {useStyles} from './styles';\n\ntype Status = Comment['status'];\n\ntype Props = {\n inputRef: React.RefObject<HTMLInputElement>;\n className?: string;\n uri: string;\n objectType?: Comment['objectType'];\n relatedObjectUris?: Comment['relatedObjectUris'];\n popperRef?: React.RefObject<any>;\n comment?: Comment;\n reply?: Pick<Reply, 'content' | 'replyId' | 'namedUsers'>;\n isEditingComment?: boolean;\n isEditingReply?: boolean;\n onCancel?: () => void;\n};\n\nconst getPlaceholder = (status?: Status) => {\n switch (status) {\n case 'open':\n return i18n.text('Reply...');\n case 'resolved':\n return i18n.text('Adding a comment will re-open this');\n default:\n return '';\n }\n};\n\nconst getButtonText = (status?: Status, isEditingComment?: boolean, isEditingReply?: boolean) => {\n if (isEditingComment || isEditingReply) {\n return i18n.text('Edit');\n }\n if (status === 'open' || status === 'resolved') {\n return i18n.text('Reply');\n }\n\n return i18n.text('Comment');\n};\n\ntype GetDefaultCommentState = {\n comment: Comment;\n reply: Pick<Reply, 'content' | 'namedUsers'>;\n isEditingComment: boolean;\n isEditingReply: boolean;\n};\n\nconst getDefaultCommentState = ({comment, reply, isEditingComment, isEditingReply}: GetDefaultCommentState) => {\n const commentOrReply = isEditingComment ? comment : isEditingReply ? reply : null;\n const {content: plainTextValue = '', namedUsers: mentions = []} = commentOrReply || {};\n return {\n value: transformPlainTextValueToValueWithMentions(plainTextValue, mentions),\n plainTextValue,\n mentions\n };\n};\n\nexport const SendMessageArea = ({\n inputRef,\n className,\n uri,\n relatedObjectUris,\n objectType,\n popperRef,\n comment,\n reply,\n isEditingComment,\n isEditingReply,\n onCancel\n}: Props) => {\n const isEditing = isEditingComment || isEditingReply;\n const styles = useStyles({isEditing});\n\n const [focused, setFocused] = useState(false);\n const username = useSelector(mdm.selectors.getUserName) as string;\n const {\n createReply,\n createComment,\n sending,\n editComment,\n editReply,\n getCommentState,\n updateCommentState,\n clearCommentState\n } = useContext(CollaborationContext);\n\n const commentUri = createCommentUri({comment, reply, isEditingComment, isEditingReply});\n const defaultCommentState = getDefaultCommentState({comment, reply, isEditingComment, isEditingReply});\n const {\n value = defaultCommentState.value,\n plainTextValue = defaultCommentState.plainTextValue,\n mentions = defaultCommentState.mentions\n } = getCommentState(uri, commentUri);\n\n const hasValue = value.trim() !== '';\n const shouldShowButtons = focused || hasValue;\n const status = comment?.status;\n\n const clearValue = () => {\n onCancel?.();\n clearCommentState(uri, commentUri);\n };\n\n const handleChange = (value: string, plainTextValue: string, mentions: string[]) =>\n updateCommentState(uri, commentUri, {value, plainTextValue, mentions});\n const handleCancel = () => clearValue();\n const handleFocus = () => setFocused(true);\n const handleBlur = () => setFocused(false);\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const request = cond([\n [\n always(!comment),\n () =>\n createComment({\n content: plainTextValue,\n namedUsers: mentions,\n objectType: objectType,\n uri,\n relatedObjectUris\n })\n ],\n [\n always(isEditingComment),\n () =>\n editComment({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n objectType: objectType,\n replies: comment.replies,\n relatedObjectUris,\n uri\n })\n ],\n [\n always(isEditingReply),\n () =>\n editReply({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n replyId: reply.replyId\n })\n ],\n [\n T,\n () =>\n createReply({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n action: comment.status === 'open' ? 'none' : 'reopen',\n uri\n })\n ]\n ]);\n return request().then(clearValue).catch(console.log); //eslint-disable-line no-console\n };\n\n useEffect(() => {\n if (popperRef) {\n popperRef.current.update();\n }\n }, [popperRef, shouldShowButtons]);\n\n const buttonSize = isEditing ? 'small' : 'medium';\n\n return (\n <Box className={classnames(styles.root, className)}>\n <form onSubmit={handleSubmit} className={styles.form}>\n <Box className={styles.main}>\n {!isEditing && <Avatar classes={{root: styles.avatar}}>{username}</Avatar>}\n <TextFieldWithMentions\n className={styles.textField}\n disabled={sending}\n onChange={handleChange}\n inputRef={inputRef}\n value={value}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={getPlaceholder(status)}\n />\n </Box>\n {shouldShowButtons && (\n <Box className={styles.buttons}>\n <Button\n className={styles.button}\n variant=\"contained\"\n color=\"primary\"\n disabled={!hasValue || sending}\n type=\"submit\"\n size={buttonSize}\n >\n {getButtonText(status, isEditingComment, isEditingReply)}\n </Button>\n <Button\n disabled={sending}\n onClick={handleCancel}\n className={styles.button}\n variant=\"outlined\"\n color=\"primary\"\n size={buttonSize}\n >\n {i18n.text('Cancel')}\n </Button>\n </Box>\n )}\n </form>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n display: 'flex'\n },\n avatar: {\n marginRight: '8px'\n },\n username: {\n marginBottom: '1px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n createdAt: {\n marginTop: '3px',\n marginRight: '4px',\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n body: {\n marginLeft: '40px'\n },\n commentTarget: {\n marginTop: '-15px'\n },\n message: {\n marginTop: '12px'\n },\n dropdownMenu: {\n zIndex: '3000 !important' as any\n },\n buttons: {\n marginTop: '15px',\n marginBottom: '12px',\n display: 'flex',\n\n '& $button + $button': {\n marginLeft: '10px'\n }\n },\n button: {\n fontSize: '13px',\n lineHeight: '15px'\n }\n}));\n","import React, {useMemo, useContext, useRef, useEffect, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {CommentTarget} from '../CommentTarget/CommentTarget';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {createEditedCommentUri, formatDate} from '../utils';\nimport {SendMessageArea} from '../SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Props = {\n uri: string;\n onReply: () => void;\n className?: string;\n comment: CommentType;\n relatedObjectUris: CommentType['relatedObjectUris'];\n objectType: CommentType['objectType'];\n};\n\nexport const Comment = ({onReply, className, uri, comment, relatedObjectUris, objectType}: Props) => {\n const styles = useStyles();\n const inputRef = useRef<HTMLInputElement>();\n const username: string = useSelector(mdm.selectors.getUserName);\n const {commentId, createdBy, createdTime} = comment;\n const canChangeComment = createdBy === username;\n const {resolveThread, reOpenThread, sending, deleteComment, updateCommentState, getCommentState} =\n useContext(CollaborationContext);\n\n const commentUri = createEditedCommentUri(comment);\n const {isEditing} = getCommentState(uri, commentUri);\n\n const updateIsEditingComment = useCallback(\n (value: boolean) => updateCommentState(uri, commentUri, {isEditing: value}),\n [commentUri, updateCommentState, uri]\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current.focus();\n }\n }, [isEditing]);\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => updateIsEditingComment(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteComment({uri, commentId})\n }\n ],\n [deleteComment, uri, commentId, updateIsEditingComment]\n );\n\n const handleResolve = () => {\n resolveThread({commentId, uri});\n };\n\n const handleReOpen = () => {\n reOpenThread({commentId, uri});\n };\n const sendMessageArea = (\n <SendMessageArea\n inputRef={inputRef}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n onCancel={() => updateIsEditingComment(false)}\n isEditingComment={isEditing}\n comment={comment}\n />\n );\n return (\n <Box className={className}>\n <Box className={styles.header}>\n <Avatar classes={{root: styles.avatar}}>{createdBy}</Avatar>\n <Box width=\"100%\">\n <Typography className={styles.username}>{createdBy}</Typography>\n </Box>\n <Typography className={styles.createdAt}>{formatDate(createdTime)}</Typography>\n {canChangeComment && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n tooltipTitle: i18n.text('Open menu')\n }}\n popoverProps={{PopoverClasses: {root: styles.dropdownMenu}}}\n menuItems={menuItems}\n menuId=\"collaboration-comment-menu\"\n />\n )}\n </Box>\n <Box className={styles.body}>\n <CommentTarget comment={comment} className={styles.commentTarget} />\n {isEditing ? sendMessageArea : <CommentContent comment={comment} className={styles.message} />}\n <Box className={styles.buttons}>\n <Link className={styles.button} onClick={onReply} component=\"button\">\n {i18n.text('Reply')}\n </Link>\n {comment.status === 'open' && (\n <Link disabled={sending} className={styles.button} onClick={handleResolve} component=\"button\">\n {i18n.text('Resolve')}\n </Link>\n )}\n {comment.status === 'resolved' && (\n <Link disabled={sending} className={styles.button} onClick={handleReOpen} component=\"button\">\n {i18n.text('Re-open')}\n </Link>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n padding: '8px',\n borderRadius: '4px',\n backgroundColor: 'rgba(0,114,206,0.06)'\n },\n avatar: {\n marginRight: '8px'\n },\n header: {\n display: 'flex',\n marginBottom: '8px'\n },\n username: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n message: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px'\n },\n createdAt: {\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n marked: {\n marginLeft: '8px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n fontStyle: 'italic',\n lineHeight: '15px'\n }\n}));\n","import React, {useRef, useContext, useMemo, useEffect, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Reply, Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {createEditedReplyUri, formatDate} from '../utils';\nimport {CollaborationContext} from '../../../contexts';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {SendMessageArea} from '../SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n reply: Pick<Reply, 'createdTime' | 'content' | 'createdBy' | 'action' | 'namedUsers' | 'replyId'>;\n comment?: CommentType;\n uri: string;\n popperRef?: React.RefObject<any>;\n};\n\nexport const RepliedComment = ({className, reply, uri, comment, popperRef}: Props) => {\n const inputRef = useRef<HTMLInputElement>();\n const {createdBy, action, createdTime} = reply;\n const username: string = useSelector(mdm.selectors.getUserName);\n const canChangeReply = createdBy === username;\n\n const {deleteReply, updateCommentState, getCommentState} = useContext(CollaborationContext);\n\n const commentUri = createEditedReplyUri(comment, reply);\n const {isEditing} = getCommentState(uri, commentUri);\n\n const updateIsEditingReply = useCallback(\n (value: boolean) => updateCommentState(uri, commentUri, {isEditing: value}),\n [commentUri, updateCommentState, uri]\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current.focus();\n }\n }, [isEditing]);\n\n const styles = useStyles();\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => updateIsEditingReply(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteReply({uri, commentId: comment.commentId, reply})\n }\n ],\n [deleteReply, uri, comment.commentId, reply, updateIsEditingReply]\n );\n\n const sendMessageArea = (\n <SendMessageArea\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n onCancel={() => updateIsEditingReply(false)}\n isEditingReply={isEditing}\n reply={reply}\n comment={comment}\n />\n );\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Avatar classes={{root: styles.avatar}}>{createdBy}</Avatar>\n <Box flexGrow={1}>\n <Box className={styles.header}>\n <Typography className={styles.username}>{createdBy}</Typography>\n\n {action === 'resolve' && (\n <Typography className={styles.marked}>{i18n.text('Marked as resolved')}</Typography>\n )}\n {action === 'reopen' && <Typography className={styles.marked}>{i18n.text('Re-opened')}</Typography>}\n </Box>\n {action !== 'resolve' &&\n (isEditing ? sendMessageArea : <CommentContent className={styles.message} comment={reply} />)}\n <Typography className={styles.createdAt}>{formatDate(createdTime)}</Typography>\n </Box>\n {canChangeReply && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n tooltipTitle: i18n.text('Open menu')\n }}\n menuItems={menuItems}\n menuId=\"collaboration-comment-menu\"\n />\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n maxWidth: '100%',\n padding: '8px 4px 10px 16px'\n },\n messages: {},\n repliedComment: {\n marginBottom: '2px'\n },\n replies: {\n marginLeft: '40px'\n },\n sendMessageArea: {\n marginLeft: '40px'\n },\n comment: {}\n}));\n","import React, {useRef, memo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport {Comment} from './Comment/Comment';\nimport {RepliedComment} from './RepliedComment/RepliedComment';\nimport {SendMessageArea} from './SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Classes = Partial<ReturnType<typeof useStyles>>;\n\ntype Props = {\n classes?: Classes;\n uri: string;\n relatedObjectUris: CommentType['relatedObjectUris'];\n objectType: CommentType['objectType'];\n popperRef?: React.RefObject<any>;\n messagesRef?: React.RefCallback<HTMLDivElement>;\n comment?: CommentType;\n};\n\nexport const CollaborationItem = memo(\n ({uri, relatedObjectUris, objectType, classes, popperRef, messagesRef, comment}: Props) => {\n const inputRef = useRef<HTMLInputElement>();\n const styles = useStyles({classes});\n\n const handleReply = () => {\n inputRef.current.focus();\n };\n\n const sendMessageArea = (\n <SendMessageArea\n className={styles.sendMessageArea}\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n\n return (\n <Box className={styles.root}>\n {comment && (\n <>\n <div className={styles.messages} ref={messagesRef}>\n <Comment\n comment={comment}\n uri={uri}\n onReply={handleReply}\n className={styles.comment}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n />\n <Box className={styles.replies}>\n {comment.replies.map((reply) => (\n <RepliedComment\n key={reply.replyId}\n className={styles.repliedComment}\n reply={reply}\n uri={uri}\n comment={comment}\n />\n ))}\n </Box>\n </div>\n {sendMessageArea}\n </>\n )}\n {!comment && sendMessageArea}\n </Box>\n );\n }\n);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../constants/classnames';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n alignItems: 'start'\n },\n addButton: {\n visibility: 'hidden',\n '&$showAlways': {\n visibility: 'visible'\n },\n [`.${COMMENTS_CONTAINER_VISIBILITY_AREA}:hover &`]: {\n visibility: 'visible'\n }\n },\n showAlways: {}\n}));\n","import React from 'react';\n\nconst SvgCommentBubble: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 1h14.4c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1z\" />\n </svg>\n );\n};\n\nexport default SvgCommentBubble;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative',\n height: '18px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: '4px',\n cursor: 'pointer'\n },\n icon: {\n '&:hover': {\n fillOpacity: 0.7\n }\n },\n childrenWrapper: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n lineHeight: '15px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n top: '-2px',\n left: 0,\n right: 0,\n bottom: 0,\n color: 'white',\n fontSize: '10px',\n pointerEvents: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport CommentIcon from '../../../icons/CommentBubble';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst CommentButton = React.forwardRef(({children, onClick}: Props, ref: React.Ref<HTMLDivElement>) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Show comment')}>\n <div ref={ref} className={styles.root} onClick={onClick}>\n <CommentIcon className={styles.icon} />\n <div className={styles.childrenWrapper}>{children}</div>\n </div>\n </Tooltip>\n );\n});\n\nCommentButton.displayName = 'CommentButton';\n\nexport default CommentButton;\n","import React from 'react';\n\nconst SvgAddComment: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 14.653L3.853 13.6H17.2V2.8H2.8v11.853zM17.2 1c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1h14.4zm-6.3 3.6H9.1v2.699L6.4 7.3v1.8l2.7-.001V11.8h1.8V9.099l2.7.001V7.3l-2.7-.001V4.6z\" />\n </svg>\n );\n};\n\nexport default SvgAddComment;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport AddCommentIcon from '../../../icons/AddComment';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst AddCommentButton = ({className, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Add comment')}>\n <div className={classnames(styles.root, className)} onClick={onClick}>\n <AddCommentIcon className={styles.icon} />\n </div>\n </Tooltip>\n );\n};\n\nexport default AddCommentButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Props = {\n scrollWidth: number;\n hasScroll: boolean;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n paddingLeft: '16px',\n paddingRight: '8px'\n },\n headerInfo: {\n marginRight: 'auto',\n display: 'flex',\n alignItems: 'center'\n },\n title: {\n marginRight: '15px',\n color: theme.palette.text.primary,\n fontSize: '16px'\n },\n counter: {\n paddingLeft: '15px',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '24px'\n },\n resolveButton: {\n zIndex: 3000,\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n popper: {\n width: '424px',\n borderRadius: '0 0 4px 4px'\n },\n collaborationItem: {\n padding: '0 0 10px 0'\n },\n comment: ({hasScroll}: Props) => ({\n marginLeft: '16px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n replies: ({hasScroll}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n sendMessageArea: ({hasScroll, scrollWidth}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? scrollWidth + 2 : '8px'\n }),\n messages: {\n maxHeight: '400px',\n overflowY: 'auto'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport DoneIcon from '@material-ui/icons/Done';\nimport {CollaborationContext} from '../../contexts';\nimport {CollaborationItem} from '../CollaborationItem/CollaborationItem';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {PopupWithArrow} from '../PopupWithArrow/PopupWithArrow';\nimport {useStyles} from './styles';\n\ntype PopupWithArrowProps = React.ComponentPropsWithoutRef<typeof PopupWithArrow>;\n\ntype Props = Pick<PopupWithArrowProps, 'open' | 'anchorEl' | 'onClose'> & {\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n comment?: Comment;\n};\n\nexport const CollaborationPopup = ({uri, relatedObjectUris, objectType, anchorEl, onClose, open, comment}: Props) => {\n const [scrollWidth, setScrollWidth] = useState(0);\n const hasScroll = scrollWidth !== 0;\n const styles = useStyles({scrollWidth, hasScroll});\n\n const popperRef = useRef(null);\n const {resolveThread, loading, sending} = useContext(CollaborationContext);\n const itemsCount = 1 + comment?.replies.length;\n\n const handleResolve = () => {\n resolveThread({commentId: comment.commentId, uri});\n };\n\n return (\n <PopupWithArrow\n popperRef={popperRef}\n anchorEl={anchorEl}\n open={open}\n placement=\"right-start\"\n onClose={onClose}\n className={styles.popper}\n >\n <Box className={styles.header}>\n <Box className={styles.headerInfo}>\n <Typography className={styles.title}>{i18n.text('Comments')}</Typography>\n {comment && !loading && (\n <Typography className={styles.counter}>\n {i18n.number(itemsCount)} {itemsCount === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n )}\n </Box>\n {comment && !loading && (\n <SmallIconButtonWithTooltip\n className={styles.resolveButton}\n size=\"S\"\n onClick={handleResolve}\n disabled={sending}\n showForDisabled={true}\n tooltipTitle={i18n.text('Resolve')}\n icon={DoneIcon}\n color=\"primary\"\n />\n )}\n </Box>\n {!loading && (\n <CollaborationItem\n popperRef={popperRef}\n messagesRef={(node) => {\n if (node) {\n setScrollWidth(node.offsetWidth - node.clientWidth);\n }\n }}\n classes={{\n root: styles.collaborationItem,\n replies: styles.replies,\n sendMessageArea: styles.sendMessageArea,\n messages: styles.messages,\n comment: styles.comment\n }}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n )}\n </PopupWithArrow>\n );\n};\n","import React, {useContext, useMemo, useState} from 'react';\nimport {CollaborationObjectTypes, Comment} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nimport {useDidUpdateEffect} from '../../hooks';\nimport {CollaborationContext, RelatedObjectUrisContext} from '../../contexts';\nimport CommentButton from './buttons/CommentButton';\nimport AddCommentButton from './buttons/AddCommentButton';\nimport {CollaborationPopup} from '../CollaborationPopup/CollaborationPopup';\n\ntype Props = {\n className?: string;\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n allowOnlyOneComment?: boolean;\n showAlways?: boolean;\n onChangePopupVisibility?: (visibility: boolean) => void;\n};\n\nconst CommentsContainer = ({\n className,\n uri,\n objectType,\n relatedObjectUris,\n onChangePopupVisibility,\n allowOnlyOneComment = false,\n showAlways = false\n}: Props) => {\n const styles = useStyles();\n\n const [anchorEl, setAnchorEl] = useState<HTMLDivElement | null>(null);\n const [shouldOpenPopup, setShouldOpenPopup] = useState<boolean>(false);\n const isOpenPopup = shouldOpenPopup && Boolean(anchorEl);\n\n const {currentComment, commentsMap, getComment, clearCurrentComment, objectTypes} = useContext(\n CollaborationContext\n );\n const showComments =\n !!commentsMap && (!objectTypes || objectTypes.includes(objectType as CollaborationObjectTypes));\n const openComments = (commentsMap?.[uri] || []).filter(({status}) => status !== 'resolved').reverse();\n const shouldShowAddCommentButton = !allowOnlyOneComment || (allowOnlyOneComment && openComments.length === 0);\n const isOpenPopupWithNewComment = currentComment === null && isOpenPopup;\n\n const handleClickCommentButton = (commentId: string) => {\n getComment(commentId);\n setShouldOpenPopup(true);\n };\n\n const handleClickAddCommentButton = (event: React.MouseEvent<HTMLDivElement>) => {\n setAnchorEl(event.currentTarget);\n setShouldOpenPopup(true);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n clearCurrentComment();\n setShouldOpenPopup(false);\n };\n\n useDidUpdateEffect(() => {\n if (onChangePopupVisibility) {\n onChangePopupVisibility(isOpenPopup);\n }\n }, [isOpenPopup]);\n\n const additionalRelatedObjectUris = useContext(RelatedObjectUrisContext);\n const allRelatedObjectUris = useMemo(() => {\n return additionalRelatedObjectUris ? [...relatedObjectUris, ...additionalRelatedObjectUris] : relatedObjectUris;\n }, [additionalRelatedObjectUris, relatedObjectUris]);\n\n return (\n showComments && (\n <div className={classnames(styles.root, className)}>\n {shouldShowAddCommentButton && (\n <AddCommentButton\n className={classnames(styles.addButton, {\n [styles.showAlways]: showAlways || isOpenPopupWithNewComment\n })}\n onClick={handleClickAddCommentButton}\n />\n )}\n {openComments.map(({replies, commentId}) => {\n return (\n <CommentButton\n ref={commentId === currentComment?.commentId ? setAnchorEl : null}\n key={commentId}\n onClick={() => handleClickCommentButton(commentId)}\n >\n {1 + replies}\n </CommentButton>\n );\n })}\n <CollaborationPopup\n anchorEl={anchorEl}\n open={isOpenPopup}\n onClose={handleClose}\n uri={uri}\n relatedObjectUris={allRelatedObjectUris}\n objectType={objectType}\n comment={currentComment}\n />\n </div>\n )\n );\n};\n\nexport default CommentsContainer;\n","// This component fixes \"Cannot have two HTML5 backends at the same time\" error.\n// Check issue and solution https://github.com/react-dnd/react-dnd/issues/186#issuecomment-561631584\nimport {DndProvider, createDndContext} from 'react-dnd';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport React, {useRef} from 'react';\n\nconst RNDContext = createDndContext(HTML5Backend);\n\ntype Props = {\n children?: React.ReactNode;\n};\n\nconst useDNDProviderElement = (props: Props) => {\n const manager = useRef(RNDContext);\n\n if (!props.children) return null;\n\n return <DndProvider manager={manager.current.dragDropManager}>{props.children}</DndProvider>;\n};\n\nexport const DragAndDrop = (props: Props) => {\n const DNDElement = useDNDProviderElement(props);\n return <>{DNDElement}</>;\n};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n buttonRoot: {\n '&$selected': {\n color: theme.palette.action.active,\n backgroundColor: fade(theme.palette.action.active, 0.12),\n '&:hover': {\n backgroundColor: fade(theme.palette.action.active, 0.15)\n }\n }\n },\n selected: {},\n paper: {\n minWidth: '112px'\n },\n menuItem: {\n minHeight: '32px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n }\n}));\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport withTooltip from '../../HOCs/withTooltip/withTooltip';\nimport {DropDownMenuItem} from '../../types';\n\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\ntype Props = {\n item: DropDownMenuItem;\n onMenuClose?: (e) => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {disabled, text, tooltip, onClick, id = '', selectable, selected} = item;\n const handleClick = (e) => {\n onMenuClose(e);\n onClick(e);\n };\n\n return (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n data-modal\n data-reltio-id={`reltio-search-menu-item${id}`}\n >\n {selectable && <Checkbox checked={selected} color=\"primary\" />}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItemWithTooltip>\n );\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React, {useCallback, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport {identity} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport Menu, {MenuProps} from '@material-ui/core/Menu';\nimport {useDidUpdateEffect} from '../../hooks';\nimport DefaultMenuItemRenderer from './MenuItemRenderer';\nimport {useStyles} from './styles';\nimport {DropDownMenuItem} from '../../types';\n\ntype Props<T> = {\n className?: string;\n buttonComponent?: React.ElementType;\n buttonContent?: React.ReactNode;\n menuItems?: T[];\n buttonProps?: Record<string, unknown>;\n popoverProps?: Omit<MenuProps, 'open'>;\n menuId: string;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n MenuItemRenderer?: (props) => JSX.Element;\n};\n\nfunction DropDownMenuButton<T = DropDownMenuItem>({\n className,\n menuId,\n buttonComponent = Button,\n buttonContent,\n menuItems = [],\n buttonProps = {},\n popoverProps = {},\n onMenuOpen = identity,\n onMenuClose = identity,\n MenuItemRenderer = DefaultMenuItemRenderer\n}: Props<T>) {\n const ButtonComponent = buttonComponent;\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n useDidUpdateEffect(() => {\n isOpen ? onMenuOpen() : onMenuClose();\n }, [isOpen]);\n\n const handleToggle = useCallback((e) => {\n e?.stopPropagation();\n setIsOpen((open) => !open);\n }, []);\n\n const renderMenuItem = (item, index) => {\n return <MenuItemRenderer item={item} key={index} onMenuClose={handleToggle} />;\n };\n\n return (\n <>\n <ButtonComponent\n ref={buttonRef}\n className={classnames(\n styles.buttonRoot,\n {\n [styles.selected]: isOpen\n },\n className\n )}\n onClick={handleToggle}\n aria-pressed={isOpen}\n aria-controls={isOpen ? menuId : undefined}\n aria-haspopup=\"true\"\n {...buttonProps}\n >\n {buttonContent}\n </ButtonComponent>\n <Menu\n id={menuId}\n variant=\"menu\"\n open={isOpen}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={buttonRef.current}\n onClose={handleToggle}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{autoFocusItem: isOpen}}\n {...popoverProps}\n >\n {menuItems.map(renderMenuItem)}\n </Menu>\n </>\n );\n}\n\nDropDownMenuButton.displayName = 'DropDownMenuButton';\n\nexport default DropDownMenuButton;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\n\nimport {Avatar as Avatar} from '@material-ui/core';\nimport {DEFAULT_PROFILE_IMAGE} from './no-photo.svg';\nimport {getEntityImage, getEntityTypeImage, getAbsoluteImageUrl, Entity, svg2Url} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entity: Entity;\n avatarClassName?: string;\n imageClassName?: string;\n};\n\nconst EntityAvatar = ({entity, avatarClassName, imageClassName}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const absoluteImagePath = useSelector(mdmModule.selectors.getAbsoluteImagePath) || '';\n const entityImageSource = getEntityImage(metadata, absoluteImagePath, entity);\n const fallbackImage = getAbsoluteImageUrl(absoluteImagePath, getEntityTypeImage(metadata, entity.type));\n const onImageLoadFail = (e) => {\n e.target.onError = null;\n e.target.src = svg2Url(DEFAULT_PROFILE_IMAGE);\n };\n return (\n <Avatar\n className={classnames(avatarClassName, imageClassName)}\n src={entityImageSource}\n imgProps={{onError: onImageLoadFail}}\n >\n <img\n className={imageClassName}\n src={fallbackImage}\n alt=\"fallback entity avatar\"\n onError={onImageLoadFail}\n />\n </Avatar>\n );\n};\n\nexport default EntityAvatar;\n","export const DEFAULT_PROFILE_IMAGE = `\n<svg width=\"400px\" height=\"400px\" viewBox=\"0 0 400 400\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Group</title>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Group\" fill-rule=\"nonzero\">\n <rect id=\"Rectangle\" fill=\"#DFE5E9\" x=\"0\" y=\"0\" width=\"400\" height=\"400\"></rect>\n <path d=\"M0,387.023257 L0,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 0,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n <path d=\"M0,387.023257 L0,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 0,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n <path d=\"M5.68434189e-14,387.023257 L5.68434189e-14,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 5.68434189e-14,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n </g>\n </g>\n</svg>\n`;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport mdmModule from '@reltio/mdm-module';\nimport RC_EntityTypeIcon from 'react-components/dist/EntityTypeIcon/EntityTypeIcon';\n\nconst ensureSlashEnding = (str) => (str.endsWith('/') ? str : str + '/');\n\nconst EntityTypeIcon = (props) => {\n const absoluteImagePath = useSelector(mdmModule.selectors.getAbsoluteImagePath) || '';\n return <RC_EntityTypeIcon {...props} storagePath={ensureSlashEnding(absoluteImagePath)} />;\n};\n\nexport default EntityTypeIcon;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n message?: string;\n className?: string;\n};\n\nconst ErrorMessage = ({className, message}: Props) => {\n const styles = useStyles();\n if (!message) {\n return null;\n }\n\n return (\n <Typography variant=\"caption\" className={classnames(styles.caption, className)}>\n {message}\n </Typography>\n );\n};\n\nexport default ErrorMessage;\n","import classnames from 'classnames';\nimport ErrorMessage from './ErrorMessage';\nimport FormControl, {FormControlProps} from '@material-ui/core/FormControl';\nimport {FormHelperText as FormHelperText} from '@material-ui/core';\nimport React, {memo} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = FormControlProps & {\n errorMessage?: string;\n classes?: {\n root: string;\n helperText: string;\n };\n};\n\nconst ErrorWrapper = ({errorMessage, children, className, classes, ...otherProps}: Props) => {\n const styles = useStyles();\n const hasError = !!errorMessage;\n\n return (\n <FormControl className={classnames(styles.wrapper, className, classes?.root)} error {...otherProps}>\n {children}\n {hasError && (\n <FormHelperText className={classnames(styles.helperText, classes?.helperText)}>\n <ErrorMessage message={errorMessage} />\n </FormHelperText>\n )}\n </FormControl>\n );\n};\n\nexport default memo(ErrorWrapper);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n helperText: {\n margin: '3px 0 1px 12px'\n },\n caption: {\n display: 'flex',\n color: theme.palette.error.main,\n fontSize: '12px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\n\nconst SvgDefaultImage: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <path d=\"M0 0h24v24H0z\" />\n <path\n d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zm-4.5-9l2.5 3.096V18H5l4.5-5.5 2.5 3.01L16.5 10zm-8-4a1.5 1.5 0 110 3 1.5 1.5 0 010-3z\"\n fillOpacity={0.12}\n fill=\"#000\"\n fillRule=\"nonzero\"\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDefaultImage;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\nimport {ImageSizeType} from './Image';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative'\n },\n image: ({imageWidth, imageHeight}: ImageSizeType) => ({\n width: imageWidth,\n height: imageHeight,\n objectFit: 'cover',\n verticalAlign: 'bottom'\n }),\n defaultContainer: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: 'rgb(247, 247, 247)'\n },\n defaultImage: {\n width: '40px',\n height: '40px',\n marginLeft: 'auto',\n marginRight: 'auto',\n color: theme.palette.text.secondary\n },\n hideImage: {\n display: 'none'\n }\n}));\n","import React, {memo, useState, useEffect} from 'react';\nimport classnames from 'classnames';\nimport NotAvailableImage from '@material-ui/icons/BrokenImage';\nimport DefaultImage from '../../icons/DefaultImage';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst ImageLoadingState = {\n LOADING: 'loading',\n LOADED: 'loaded',\n ERROR: 'error'\n};\n\nexport const ImageSizesStyles = {\n SMALL: {\n imageWidth: 114,\n imageHeight: 114\n },\n MEDIUM: {\n imageWidth: 162,\n imageHeight: 162\n },\n LARGE: {\n imageWidth: 192,\n imageHeight: 192\n },\n OVERRIDE: {\n imageWidth: 'unset',\n imageHeight: 'unset'\n }\n};\n\nexport type ImageSizeType = {\n imageWidth: number | string;\n imageHeight: number | string;\n};\n\ntype Props = {\n src: string;\n className?: string;\n containerClassName?: string;\n size?: ImageSizeType;\n overlay?: React.ReactNode;\n onClick?: () => void;\n};\n\nconst Image = (props: Props) => {\n const {src, className, containerClassName, size = ImageSizesStyles.SMALL, overlay = null, ...otherProps} = props;\n\n const sizeStyles = size || ImageSizesStyles.SMALL;\n const styles = useStyles(sizeStyles);\n const [imageLoadingState, setImageLoadingState] = useState<string>(ImageLoadingState.LOADING);\n\n useEffect(() => {\n setImageLoadingState(ImageLoadingState.LOADING);\n }, [src]);\n\n const onImageLoadFail = () => {\n setImageLoadingState(ImageLoadingState.ERROR);\n };\n\n const onImageLoad = () => {\n setImageLoadingState(ImageLoadingState.LOADED);\n };\n\n const imageIsLoading = imageLoadingState === ImageLoadingState.LOADING;\n const imageIsLoaded = imageLoadingState === ImageLoadingState.LOADED;\n const imageLoadingError = imageLoadingState === ImageLoadingState.ERROR;\n\n return imageLoadingError ? (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <NotAvailableImage className={styles.defaultImage} />\n </div>\n ) : (\n <div className={classnames(styles.root, containerClassName)}>\n {!isEmptyValue(src) && (\n <img\n src={src}\n className={classnames(styles.image, className, {\n [styles.hideImage]: imageIsLoading\n })}\n onLoad={onImageLoad}\n onError={onImageLoadFail}\n alt={'image'}\n {...otherProps}\n />\n )}\n {imageIsLoading && (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <DefaultImage className={styles.defaultImage} />\n </div>\n )}\n {imageIsLoaded && overlay}\n </div>\n );\n};\n\nexport default memo(Image);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n fontSize: '24px',\n color: '#fff'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport {useStyles} from './styles';\n\ntype Props = {\n checked: boolean;\n className?: string;\n onClick: (e) => void;\n};\n\nexport const CheckedIcon = ({checked, className, onClick}: Props) => {\n const styles = useStyles();\n const Icon = checked ? CheckCircleIcon : RadioButtonUncheckedIcon;\n return <Icon className={classnames(styles.root, className)} onClick={onClick} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: '0.2s linear all',\n '&:not($selected):not($selectionMode):hover': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n },\n userSelect: 'none'\n },\n selected: {\n backgroundColor: 'rgba(0,114,206,0.6)'\n },\n selectionMode: {\n cursor: 'pointer',\n '&:not($selected)': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n }\n },\n button: {\n padding: 0,\n width: '100px',\n height: '36px',\n color: '#fff',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px',\n border: '1px solid rgba(255,255,255,0.25)',\n backgroundColor: 'rgba(98,2,238,0)'\n },\n checkedIcon: {\n position: 'absolute',\n left: '4px',\n top: '4px',\n cursor: 'pointer'\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n position: 'absolute',\n top: '4px',\n right: '4px'\n },\n actionButton: {\n color: '#fff',\n fontSize: '24px'\n },\n dropDownMenuButton: {\n margin: '0 2px 0 8px'\n }\n}));\n","import React, {memo, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {ifElse, equals, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {CheckedIcon} from '../CheckedIcon/CheckedIcon';\nimport DownloadIcon from '../../../icons/Download';\nimport {noop} from '../../../core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n id: string;\n canBeSelected?: boolean;\n selected?: boolean;\n selectionMode?: boolean;\n onDeselect?: () => void;\n onSelect?: () => void;\n onShareLink?: () => void;\n onSetAsDefault?: () => void;\n onDelete?: () => void;\n onDownload?: () => void;\n onClick?: () => void;\n};\n\nconst ImageActionsOverlay = (props: Props) => {\n const {\n id,\n canBeSelected = false,\n selected = false,\n selectionMode = false,\n onDeselect = noop,\n onSelect = noop,\n onShareLink,\n onSetAsDefault,\n onDelete,\n onDownload = noop,\n onClick\n } = props;\n\n const styles = useStyles();\n const [hovered, setHovered] = useState<boolean>(false);\n\n const menuItems = useMemo(\n () =>\n [\n {\n text: i18n.text('Share link'),\n onClick: onShareLink\n },\n {\n text: i18n.text('Set as default'),\n onClick: onSetAsDefault\n },\n {\n text: i18n.text('Delete'),\n onClick: onDelete\n }\n ].filter(prop('onClick')),\n [onShareLink, onSetAsDefault, onDelete]\n );\n\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n const toggleSelected = (selected: boolean) => () => ifElse(equals(true), onDeselect, onSelect)(selected);\n\n const showCheckBox = canBeSelected && (selected || hovered || selectionMode);\n const showActions = !selectionMode && !selected && hovered;\n const showDeselectButton = canBeSelected && selected;\n\n const handleClick = (event) => {\n if (event.currentTarget === event.target) onClick();\n };\n\n return (\n <div\n className={classnames(styles.overlay, {\n [styles.selected]: selected,\n [styles.selectionMode]: selectionMode\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={selectionMode ? toggleSelected(selected) : handleClick}\n >\n {showCheckBox && (\n <CheckedIcon className={styles.checkedIcon} checked={selected} onClick={toggleSelected(selected)} />\n )}\n {showActions && (\n <div className={styles.actions}>\n <SmallIconButton onClick={onDownload} className={styles.actionButton} icon={DownloadIcon} />\n <DropDownMenuButton\n menuId={`image-overlay-actions-${id}`}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n className: classnames(styles.actionButton, styles.dropDownMenuButton)\n }}\n menuItems={menuItems}\n />\n </div>\n )}\n {showDeselectButton && (\n <Button className={styles.button} variant=\"outlined\" onClick={onDeselect}>\n {i18n.text('Deselect')}\n </Button>\n )}\n </div>\n );\n};\n\nexport default memo(ImageActionsOverlay);\n","import React from 'react';\n\nconst SvgDetails: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M14 5a1 1 0 011 1v12a1 1 0 01-1 1H4a1 1 0 01-1-1V6a1 1 0 011-1h10zm6 12v2h-3v-2h3zm2-4v2h-5v-2h5zm0-4v2h-5V9h5zm0-4v2h-5V5h5z\"\n id=\"Details_svg__a\"\n />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fillRule=\"evenodd\">\n <mask id=\"Details_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Details_svg__a\" />\n </mask>\n <path mask=\"url(#Details_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDetails;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n paper: {\n backgroundColor: 'rgba(0, 0, 0, .85)'\n },\n backdrop: {\n backgroundColor: 'transparent'\n },\n toolbar: {\n paddingLeft: '20px',\n paddingRight: '20px'\n },\n appBar: {\n position: 'relative',\n background: 'linear-gradient(180deg, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0) 100%)'\n },\n closeButton: {\n marginRight: '28px'\n },\n closeIcon: {\n fontSize: '24px',\n color: '#fff'\n },\n headerLeft: {\n display: 'flex',\n alignItems: 'center',\n flex: 2\n },\n headerCenter: {\n display: 'flex',\n justifyContent: 'center',\n flex: 1\n },\n headerRight: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center'\n },\n modeSwitcher: {\n backgroundColor: '#fff'\n },\n content: {\n padding: 0\n }\n}));\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {AppBar as AppBar} from '@material-ui/core';\nimport {Toolbar as Toolbar} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ViewComfyIcon from '@material-ui/icons/ViewComfy';\nimport DetailsIcon from '../../icons/Details';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport ModeSwitcher from '../ModeSwitcher/ModeSwitcher';\nimport {useStyles} from './styles';\n\nexport enum Mode {\n GALLERY_MODE = 'gallery',\n DETAILS_MODE = 'details'\n}\n\nexport type Props = {\n open: boolean;\n mode: Mode;\n onClose?: () => void;\n onChangeMode?: (mode: Mode) => void;\n children: React.ReactNode;\n header?: {\n left?: React.ReactNode;\n right?: React.ReactNode;\n };\n};\n\nexport const ImageGalleryDialog = ({open, mode, children, header, onClose, onChangeMode}: Props) => {\n const styles = useStyles();\n\n const modes = useMemo(\n () => [\n {\n id: Mode.GALLERY_MODE,\n title: i18n.text('Gallery'),\n Icon: ViewComfyIcon\n },\n {\n id: Mode.DETAILS_MODE,\n title: i18n.text('Details'),\n Icon: DetailsIcon\n }\n ],\n []\n );\n\n return (\n <Dialog classes={{paper: styles.paper}} open={open} BackdropProps={{className: styles.backdrop}} fullScreen>\n <AppBar classes={{colorPrimary: styles.appBar}}>\n <Toolbar className={styles.toolbar}>\n <Box className={styles.headerLeft}>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Close')}\n onClick={onClose}\n className={styles.closeButton}\n iconClassName={styles.closeIcon}\n icon={CloseIcon}\n />\n {header?.left}\n </Box>\n <Box className={styles.headerCenter}>\n <ModeSwitcher<Mode>\n modes={modes}\n modeId={mode}\n onChange={onChangeMode}\n className={styles.modeSwitcher}\n />\n </Box>\n <Box className={styles.headerRight}>{header?.right}</Box>\n </Toolbar>\n </AppBar>\n <DialogContent className={styles.content}>{children}</DialogContent>\n </Dialog>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport {useInRouterContext, Link} from 'react-router-dom';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst InternalLink = (props: React.AnchorHTMLAttributes<HTMLAnchorElement>) => {\n const styles = useStyles();\n const inRouterContext = useInRouterContext();\n const {href, className, ...otherProps} = props;\n const linkClassName = classnames(styles.link, className);\n return inRouterContext && href ? (\n <Link to={href.replace(window.location.origin, '')} className={linkClassName} {...otherProps} />\n ) : (\n <a href={href} className={linkClassName} {...otherProps} />\n );\n};\n\nexport default InternalLink;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n loadingOverlay: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n opacity: 0.37,\n zIndex: 10,\n backgroundColor: '#fff'\n },\n transparent: {\n backgroundColor: 'transparent'\n },\n relativePosition: {\n '&$loadingOverlay': {\n position: 'relative'\n }\n }\n});\n","import React from 'react';\n\nimport classnames from 'classnames';\nimport {LinearProgress as LinearProgress} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n transparent?: boolean;\n relativePosition?: boolean;\n className?: string;\n};\n\nconst LinearLoadIndicator = ({transparent = false, relativePosition = false, className}: Props) => {\n const styles = useStyles();\n return (\n <>\n <div\n className={classnames(styles.loadingOverlay, className, {\n [styles.transparent]: transparent,\n [styles.relativePosition]: relativePosition\n })}\n >\n <LinearProgress color=\"secondary\" />\n </div>\n </>\n );\n};\n\nexport default LinearLoadIndicator;\n","import {Theme} from '@material-ui/core';\nimport {fade, makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n button: {\n minWidth: '30px',\n padding: '8px 8px',\n justifyContent: 'start',\n fill: 'rgba(0,0,0,0.54)',\n textTransform: 'none',\n borderColor: 'rgba(0,0,0,0.12)'\n },\n icon: {\n color: 'rgba(0,0,0,0.54)',\n width: '20px',\n height: '20px',\n marginRight: '8px'\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n },\n current: {\n '& $icon': {\n color: theme.palette.primary.main\n },\n backgroundColor: fade(theme.palette.primary.main, 0.12),\n fill: theme.palette.primary.main,\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.primary.main, 0.24)\n }\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport {Button as Button} from '@material-ui/core';\nimport {ButtonGroup as ButtonGroup} from '@material-ui/core';\nimport classnames from 'classnames';\nimport withTooltip from '../../HOCs/withTooltip/withTooltip';\nimport useStyles from './styles';\n\nconst ButtonWithTooltip = withTooltip(Button);\n\ntype Props<T> = {\n className: string;\n classes?: {\n button?: string;\n };\n modes: {\n id: T;\n title?: string;\n tooltipTitle?: string;\n Icon?: React.ElementType;\n disabled?: boolean;\n }[];\n modeId: T;\n onChange?: (mode: T) => void;\n};\n\nconst ModeSwitcher = <T extends unknown>({className, classes = {}, modes = [], modeId, onChange}: Props<T>) => {\n const styles = useStyles();\n\n const getChangeModeHandler = (newMode) => () => onChange(newMode);\n\n return (\n <ButtonGroup className={className}>\n {modes.map(({id, title, tooltipTitle, Icon, disabled}) => {\n return (\n <ButtonWithTooltip\n disabled={disabled}\n showForDisabled={disabled && !!tooltipTitle}\n key={String(id)}\n className={classnames(styles.button, {[styles.current]: modeId === id}, classes.button)}\n tooltipTitle={tooltipTitle}\n onClick={getChangeModeHandler(id)}\n data-reltio-id={`reltio-search-mode-${id}`}\n >\n {Icon && <Icon className={styles.icon} />}\n {title && <div className={styles.title}>{title}</div>}\n </ButtonWithTooltip>\n );\n })}\n </ButtonGroup>\n );\n};\n\nexport default ModeSwitcher;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => {\n const color = theme.palette.background.paper;\n return {\n popoverRoot: {\n backgroundColor: color,\n maxWidth: 1000\n },\n popper: {\n '&[x-placement*=\"bottom\"] $arrow': {\n top: 0,\n left: 0,\n marginTop: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n '&[x-placement*=\"top\"] $arrow': {\n bottom: 0,\n left: 0,\n marginBottom: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n '&[x-placement*=\"right\"] $arrow': {\n left: 0,\n marginLeft: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '100% 100%'\n }\n },\n '&[x-placement*=\"left\"] $arrow': {\n right: 0,\n marginRight: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '0 0'\n }\n }\n },\n arrow: {\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color,\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n boxShadow: theme.shadows[1],\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n }\n };\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Paper as Paper} from '@material-ui/core';\nimport {ClickAwayListener as ClickAwayListener} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport Popper from '../Popper/Popper';\nimport {useStyles} from './styles';\n\ntype PopperProps = React.ComponentPropsWithoutRef<typeof Popper>;\n\ntype Props = Pick<PopperProps, 'anchorEl' | 'open' | 'placement' | 'popperRef'> & {\n children: React.ReactNode;\n onClose?: () => void;\n arrow?: boolean;\n className?: string;\n};\n\nconst isChildOfPortalModal = (child) =>\n Array.from(document.querySelectorAll('[data-modal]')).some((el) => el.contains(child));\n\nexport const PopupWithArrow = ({\n anchorEl,\n placement = 'top',\n arrow = true,\n open,\n onClose = () => {},\n children,\n className,\n popperRef\n}: Props) => {\n const styles = useStyles();\n const [arrowRef, setArrowRef] = React.useState<HTMLElement | null>(null);\n const onClickOutside = (e: React.MouseEvent<Document>) => {\n if (!isChildOfPortalModal(e.target)) {\n onClose();\n }\n };\n return (\n <Popper\n anchorEl={anchorEl}\n placement={placement}\n className={classnames(styles.popper, className)}\n modifiers={{\n preventOverflow: {\n enabled: true,\n boundariesElement: 'window'\n },\n arrow: {\n enabled: arrow,\n element: arrowRef\n }\n }}\n open={open}\n modal={false}\n popperRef={popperRef}\n >\n <Box>\n <ClickAwayListener onClickAway={onClickOutside}>\n <Paper className={styles.popoverRoot}>\n {arrow ? <span className={styles.arrow} ref={setArrowRef} /> : null}\n <Box>{children}</Box>\n </Paper>\n </ClickAwayListener>\n </Box>\n </Popper>\n );\n};\n","import classNames from 'classnames';\nimport {isNil, pipe, tap} from 'ramda';\nimport React, {memo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport Input, {InputProps} from '@material-ui/core/Input';\nimport {InputAdornment as InputAdornment} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport SearchIcon from '@material-ui/icons/Search';\nimport {getValue, noop} from '../../core';\nimport SmallIconButton from '../SmallIconButton/SmallIconButton';\nimport {useStyles} from './styles';\n\nexport type SearchInputProps = InputProps & {\n value?: string;\n autofocus: boolean;\n onSearch: (value?: string) => void;\n rootRef?: React.MutableRefObject<HTMLInputElement>;\n height: number;\n placeholder?: string;\n};\n\nconst SearchInput = ({\n value,\n autofocus,\n onSearch = noop,\n rootRef,\n classes = {},\n height,\n placeholder = i18n.text('Search'),\n ...otherProps\n}: SearchInputProps) => {\n const styles = useStyles({height});\n\n const [localValue, setLocalValue] = useState('');\n\n const updateValue = pipe(tap(onSearch), setLocalValue);\n const clearValue = () => updateValue('');\n\n const inputValue = isNil(value) ? localValue : value;\n\n return (\n <Input\n startAdornment={\n <InputAdornment position=\"start\">\n <SearchIcon className={styles.icon} />\n </InputAdornment>\n }\n endAdornment={\n <InputAdornment position=\"end\">\n {inputValue.length > 0 && (\n <SmallIconButton icon={CloseIcon} className={styles.clearButton} onClick={clearValue} />\n )}\n </InputAdornment>\n }\n autoFocus={autofocus}\n classes={{\n ...classes,\n input: classNames(styles.input, classes.input),\n root: classNames(styles.container, classes.root)\n }}\n placeholder={placeholder}\n value={inputValue}\n onChange={pipe(getValue, updateValue)}\n disableUnderline={true}\n ref={rootRef}\n {...otherProps}\n />\n );\n};\n\nexport default memo(SearchInput);\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n height?: number;\n};\n\nexport const useStyles = makeStyles(() => ({\n container: ({height = 36}: StylesProps) => {\n return {\n height: height,\n borderRadius: '2px',\n alignItems: 'center',\n backgroundColor: 'rgba(0,0,0,0.03)',\n minWidth: '100px'\n };\n },\n icon: {\n opacity: 0.67,\n marginLeft: '10px',\n marginRight: '6px'\n },\n input: {\n fontSize: '13px',\n width: '100%'\n },\n clearButton: {\n marginRight: '10px'\n },\n white: {\n backgroundColor: 'rgb(255, 255, 255)',\n boxShadow: '0 1px 3px 0 rgba(0,0,0,0.24)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport Popover, {PopoverProps} from '@material-ui/core/Popover';\n\nimport useStyles from './styles.js';\nimport SearchInput from '../SearchInput/SearchInput';\n\ntype Props = {\n title: string;\n containerWidth: number;\n containerHeight: number;\n children: React.ReactNode;\n PaperProps?: Record<string, unknown>;\n searchInputOnKeyDown: (event: React.KeyboardEvent) => void;\n onSearch: (value?: string) => void;\n className?: string;\n hideTitle?: boolean;\n hideSearchInput?: boolean;\n headerPlacement?: 'top' | 'bottom';\n searchInputRef?: React.Ref<unknown>;\n} & PopoverProps;\n\nconst SelectionPopup = ({\n title,\n className,\n onSearch,\n hideTitle,\n hideSearchInput,\n headerPlacement = 'top',\n containerWidth,\n containerHeight,\n searchInputOnKeyDown,\n children,\n searchInputRef,\n anchorOrigin = {\n vertical: 'top',\n horizontal: 'right'\n },\n transformOrigin = {\n vertical: 'top',\n horizontal: 'right'\n },\n ...otherProps\n}: Props) => {\n const classes = useStyles({containerWidth, containerHeight});\n const header = (\n <>\n {!hideTitle && <div className={classes.header}>{title}</div>}\n {!hideSearchInput && (\n <SearchInput\n onSearch={onSearch}\n autofocus={true}\n onKeyDown={searchInputOnKeyDown}\n inputRef={searchInputRef}\n classes={{root: classes.searchInputContainer}}\n placeholder={i18n.text('Search & add attributes')}\n height={40}\n />\n )}\n </>\n );\n return (\n <Popover anchorOrigin={anchorOrigin} transformOrigin={transformOrigin} {...otherProps}>\n <div className={classnames(classes.container, className)} style={{width: containerWidth}}>\n {headerPlacement === 'top' && header}\n <div className={classes.list}>{children}</div>\n {headerPlacement === 'bottom' && header}\n </div>\n </Popover>\n );\n};\n\nexport default SelectionPopup;\n","import React, {useState, useEffect, useRef, useCallback} from 'react';\nimport {isNil} from 'ramda';\nimport {isTitleItem} from '../VirtualGroupedList/VirtualGroupedList';\n\ntype Item = {\n titleItemIndex?: number;\n index: number;\n item: {\n item: Record<string, unknown>;\n moveTo?: number;\n };\n};\n\ntype FocusIndex = number | null;\n\ntype Props = {\n items: Item[];\n open: boolean;\n onSelectFocusedItem: (item: {item: Item['item']['item']; groupData: Item['item']}) => void;\n selectedItems: string[];\n onClose: (event: React.KeyboardEvent) => void;\n};\n\nconst useKeyboardNavigation = ({items, open, onSelectFocusedItem, selectedItems, onClose}: Props) => {\n const [focusIndex, setFocusIndex] = useState<FocusIndex>(null);\n const restoreFocusIndex = useRef<boolean>(false);\n\n const increaseFocusIndex = useCallback(\n (currentIndex: FocusIndex): number => {\n let newIndex = currentIndex === null ? increaseFocusIndex(-1) : currentIndex;\n while (\n currentIndex !== null &&\n newIndex < items.length &&\n (newIndex <= currentIndex || (newIndex >= 0 && isTitleItem(items[newIndex])))\n ) {\n newIndex += 1;\n }\n return newIndex !== items.length ? newIndex : increaseFocusIndex(-1);\n },\n [items]\n );\n\n const decreaseFocusIndex = useCallback(\n (currentIndex: FocusIndex): number => {\n let newIndex = currentIndex === null ? items.length - 1 : currentIndex;\n while (\n currentIndex !== null &&\n newIndex >= 0 &&\n (newIndex >= currentIndex || isTitleItem(items[newIndex]))\n ) {\n newIndex -= 1;\n }\n return newIndex < 0 ? items.length - 1 : newIndex;\n },\n [items]\n );\n\n const handleSelectFocusedItem = useCallback(() => {\n if (!isNil(focusIndex)) {\n const item = items[focusIndex].item;\n !item.item.notSelectable && onSelectFocusedItem({item: item.item, groupData: item});\n }\n }, [onSelectFocusedItem, items, focusIndex]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (items.length === 0) {\n return;\n }\n switch (event.key) {\n case 'Down': // IE/Edge specific value\n case 'ArrowDown':\n setFocusIndex(increaseFocusIndex);\n event.preventDefault();\n return false;\n case 'Up': // IE/Edge specific value\n case 'ArrowUp':\n setFocusIndex(decreaseFocusIndex);\n event.preventDefault();\n return false;\n case 'Enter':\n restoreFocusIndex.current = true;\n handleSelectFocusedItem();\n break;\n case 'Tab':\n onClose && onClose(event);\n break;\n default:\n return;\n }\n },\n [items, increaseFocusIndex, decreaseFocusIndex, handleSelectFocusedItem, onClose]\n );\n\n useEffect(() => {\n if (restoreFocusIndex.current) {\n restoreFocusIndex.current = false;\n const moveIndex = items.findIndex((listItem) => listItem.item.moveTo);\n moveIndex > -1 && setFocusIndex(moveIndex);\n } else {\n setFocusIndex(null);\n }\n }, [items, open, selectedItems]);\n\n return {focusIndex, handleKeyDown};\n};\n\nexport {useKeyboardNavigation};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst margin = '16px';\nconst useStyles = makeStyles(() => ({\n container: ({containerHeight = 553, containerWidth}) => {\n return {\n display: 'flex',\n flexDirection: 'column',\n height: containerHeight,\n width: containerWidth,\n flexGrow: 1\n };\n },\n header: {\n marginLeft: margin,\n marginTop: '16px',\n marginBottom: '12px',\n fontSize: '16px',\n fontWeight: 500,\n letterSpacing: '0.15px',\n lineHeight: '24px'\n },\n searchInputContainer: {\n margin: `0 ${margin} 12px ${margin}`,\n flexShrink: '0'\n },\n list: {\n flexGrow: 1,\n height: 0,\n overflow: 'hidden',\n width: '100%',\n position: 'relative',\n\n '& ul': {\n paddingBottom: 0,\n paddingTop: 0\n }\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n label: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '13px',\n lineHeight: '15px'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport RequiredMark from '../RequiredMark/RequiredMark';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n isRequired?: boolean;\n className?: string;\n};\n\nconst Title = ({label, isRequired, className, ...otherProps}: Props) => {\n const styles = useStyles();\n\n return (\n <Typography className={classnames(styles.label, className)} component=\"span\" {...otherProps}>\n {label}\n {isRequired && <RequiredMark />}\n </Typography>\n );\n};\n\nexport default Title;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n stickyTitlesWrapper: {\n position: 'absolute',\n top: 0,\n '& > div': {\n zIndex: 1,\n position: 'absolute',\n top: 0,\n width: '100%',\n visibility: 'hidden'\n }\n }\n});\n","import React, {useCallback, useEffect, useRef, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {VariableSizeList as List} from 'react-window';\nimport ReactResizeDetector from 'react-resize-detector';\n\nimport {useStyles} from './styles';\nimport {useScrollToFocusItem} from './helpers';\n\n/*\nitems = [\n {\n item: {\n item: {},\n level: number\n },\n titleItemIndex: number,\n index: number,\n moveTo: true|false,\n items: [...]\n ...\n }\n]\n*/\nconst OVERSCAN_COUNT = 5;\n\nconst isTitleItem = (listItem) => listItem.titleItemIndex === listItem.index;\n\nconst VirtualGroupedList = ({\n items,\n getItemSize,\n renderItem,\n renderGroupTitle,\n width = '100%',\n height,\n fixedTitle = true,\n itemKey = (i) => i,\n disableHorizontalScrollbar,\n hideSubtitles,\n focusIndex = null,\n onInnerContainerResize\n}) => {\n const styles = useStyles();\n\n const listRef = useRef(null);\n const itemsRef = useRef(null);\n const titlesRef = useRef(null);\n\n const itemOffsets = useRef([0]);\n const stepCalcOffset = 10;\n const stickyItemClass = 'stickyTitleItem';\n const currentTitleParams = {\n topMargin: 0\n };\n const isGroupHasSubTitles = (groupedItems) => (groupedItems || []).some((item) => item.titleItemIndex !== null);\n\n const hasSubTitles = useMemo(() => !hideSubtitles || isGroupHasSubTitles(items), [items, hideSubtitles]);\n\n const calcOffsetsToIndex = useCallback(\n (index) => {\n const curItemsLength = itemOffsets.current.length;\n let prevItemSize = 0;\n items.slice(curItemsLength - 1, index + 1).forEach((listItem, i) => {\n const realIndex = curItemsLength + i - 1;\n if (i > 0) itemOffsets.current[realIndex] = itemOffsets.current[realIndex - 1] + prevItemSize;\n\n prevItemSize = getItemSize(realIndex, listItem.item);\n });\n },\n [getItemSize, items]\n );\n\n const getTitleByIndex = useCallback((index) => items[index].titleItemIndex, [items]);\n const getItemByIndex = useCallback((index) => items[index], [items]);\n\n useEffect(() => {\n requestAnimationFrame(() => {\n listRef.current && listRef.current.scrollTo(0);\n });\n }, [items.length]);\n\n useEffect(() => {\n const calcMoveToOffset = (items) => {\n const indexItem = items.findIndex((listItem) => listItem.item.moveTo);\n if (indexItem > -1) {\n calcOffsetsToIndex(indexItem);\n const titleIndex = getTitleByIndex(indexItem);\n return {\n offset: itemOffsets.current[indexItem],\n titleHeight: getItemSize(titleIndex, getItemByIndex(titleIndex).item)\n };\n }\n };\n\n listRef.current && listRef.current.resetAfterIndex(0);\n\n setTitleWidth();\n\n const scrollToOffset = calcMoveToOffset(items);\n if (scrollToOffset && scrollToOffset.offset && listRef.current) {\n const {titleHeight} = scrollToOffset;\n const offset = scrollToOffset.offset - titleHeight;\n if (offset < listRef.current.state.scrollOffset || offset > listRef.current.state.scrollOffset + height) {\n requestAnimationFrame(() => {\n listRef.current && listRef.current.scrollTo(offset - (height - titleHeight) / 2);\n });\n }\n }\n }, [calcOffsetsToIndex, getItemByIndex, getItemSize, getTitleByIndex, height, itemOffsets, items, listRef]);\n\n const setTitleWidth = () => {\n if (titlesRef.current && itemsRef.current) {\n titlesRef.current.style.width = itemsRef.current.offsetWidth + 'px';\n }\n };\n\n const getNextTitleIndex = (fromIndex) =>\n items.findIndex((listItem, index) => isTitleItem(listItem) && fromIndex < index);\n\n const getItemByOffset = useCallback(\n (scrollOffset) => {\n let result = null;\n let offset = 0;\n\n items.some((listItem, index) => {\n calcOffsetsToIndex(index + stepCalcOffset);\n const nextOffset = itemOffsets.current[index + 1];\n\n if (scrollOffset >= offset && scrollOffset < nextOffset)\n result = {\n index,\n offset,\n listItem\n };\n\n offset = nextOffset;\n return result;\n });\n return result;\n },\n [calcOffsetsToIndex, itemOffsets, items]\n );\n\n const setTitleTopMargin = (topMargin) => {\n if (titlesRef.current) {\n currentTitleParams.topMargin = -topMargin;\n titlesRef.current.style.top = -topMargin + 'px';\n }\n };\n\n const setTitleByIndex = (index) => {\n titlesRef.current &&\n [...titlesRef.current.querySelectorAll('.' + stickyItemClass)].forEach((title) => {\n if (title.dataset.index === index.toString()) {\n title.style.visibility = 'visible';\n currentTitleParams.index = index;\n } else title.style.visibility = 'hidden';\n });\n };\n\n const getOffsetByIndex = (index) => {\n calcOffsetsToIndex(index);\n\n return itemOffsets.current[index];\n };\n\n const onScroll = ({scrollOffset, scrollDirection}) => {\n if (!fixedTitle || !hasSubTitles) return;\n\n const topItem = getItemByOffset(scrollOffset);\n const currentTitleIndex = topItem && getTitleByIndex(topItem.index);\n\n currentTitleIndex !== null && setTitleByIndex(currentTitleIndex);\n\n setTitleWidth();\n\n const titleHeight =\n currentTitleIndex !== null && getItemSize(currentTitleIndex, getItemByIndex(currentTitleIndex).item);\n const itemAfterTitle = getItemByOffset(scrollOffset + titleHeight + currentTitleParams.topMargin);\n\n let topMargin = 0;\n if (itemAfterTitle) {\n switch (scrollDirection) {\n case 'forward':\n if (itemAfterTitle.offset - scrollOffset > 0 && isTitleItem(itemAfterTitle.listItem))\n topMargin = titleHeight - (itemAfterTitle.offset - scrollOffset);\n break;\n case 'backward':\n {\n const nextTitleIndex = currentTitleIndex > -1 && getNextTitleIndex(currentTitleIndex);\n const nextTitleOffset = getOffsetByIndex(nextTitleIndex);\n\n if (\n nextTitleIndex > -1 &&\n scrollOffset < nextTitleOffset &&\n titleHeight >= nextTitleOffset - scrollOffset\n )\n topMargin = titleHeight - (nextTitleOffset - scrollOffset);\n }\n break;\n }\n setTitleTopMargin(topMargin);\n }\n };\n\n const _getItemSize = useCallback((index) => getItemSize(index, getItemByIndex(index).item), [\n getItemByIndex,\n getItemSize\n ]);\n\n const render = useCallback(\n ({index, style, data}) => {\n const listItem = getItemByIndex(index);\n return (\n listItem.item &&\n ((isTitleItem(listItem) && renderGroupTitle(style, listItem.item)) ||\n renderItem(style, listItem.item, index, data))\n );\n },\n [getItemByIndex, renderGroupTitle, renderItem]\n );\n\n const {handleOnItemsRendered} = useScrollToFocusItem({items, focusIndex, listRef});\n const renderTitles = useCallback(() => {\n const renderTitle = (listItem) => (\n <div\n className={stickyItemClass}\n style={{visibility: 'hidden'}}\n data-index={listItem.index}\n key={listItem.index}\n >\n {renderGroupTitle({height: getItemSize(listItem.index, listItem.item)}, listItem.item)}\n </div>\n );\n\n return items.filter((listItem) => isTitleItem(listItem)).map((listItem) => renderTitle(listItem));\n }, [getItemSize, items, renderGroupTitle]);\n\n return (\n <>\n <div ref={titlesRef} className={styles.stickyTitlesWrapper}>\n {fixedTitle && renderTitles()}\n </div>\n {onInnerContainerResize && itemsRef.current && (\n <ReactResizeDetector handleHeight onResize={onInnerContainerResize} targetDomEl={itemsRef.current} />\n )}\n <List\n ref={listRef}\n itemCount={items.length}\n itemSize={_getItemSize}\n width={width}\n height={height}\n itemKey={itemKey}\n innerRef={itemsRef}\n onScroll={onScroll}\n style={disableHorizontalScrollbar ? {overflowX: 'hidden'} : undefined}\n overscanCount={OVERSCAN_COUNT}\n onItemsRendered={handleOnItemsRendered}\n >\n {render}\n </List>\n </>\n );\n};\n\nVirtualGroupedList.propTypes = {\n items: PropTypes.arrayOf(PropTypes.object).isRequired,\n getItemSize: PropTypes.func.isRequired,\n renderItem: PropTypes.func.isRequired,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.number.isRequired,\n renderGroupTitle: PropTypes.func,\n fixedTitle: PropTypes.bool,\n hideSubtitles: PropTypes.bool,\n itemKey: PropTypes.func,\n disableHorizontalScrollbar: PropTypes.bool,\n focusIndex: PropTypes.number,\n onInnerContainerResize: PropTypes.func\n};\n\nexport default VirtualGroupedList;\nexport {isTitleItem};\n","import {flatten} from 'ramda';\nimport {useCallback, useEffect, useRef} from 'react';\n\nexport const SCROLL_COUNT = 3;\n\nconst flattenGroupedItemsData = (groupedItems) => {\n const getFlattenedItems = (items) =>\n flatten(items.map((item) => [item].concat(item.items ? getFlattenedItems(item.items) : [])));\n\n let titleItemIndex = null;\n const items = getFlattenedItems(groupedItems).map((item, index) => {\n if (item && item.items) {\n titleItemIndex = index;\n }\n return {item, index, titleItemIndex};\n });\n return items;\n};\n\nconst useScrollToFocusItem = ({focusIndex, listRef, items}) => {\n const visibleStartIndexRef = useRef(null);\n const visibleStopIndexRef = useRef(null);\n const handleOnItemsRendered = useCallback(({visibleStartIndex, visibleStopIndex}) => {\n visibleStartIndexRef.current = visibleStartIndex;\n visibleStopIndexRef.current = visibleStopIndex;\n }, []);\n useEffect(() => {\n if (!listRef.current || focusIndex === null || items.length === 0) {\n return;\n }\n\n if (focusIndex < Math.max(visibleStartIndexRef.current + SCROLL_COUNT, 0)) {\n listRef.current.scrollToItem(Math.max(focusIndex - SCROLL_COUNT, 0), 'start');\n } else if (focusIndex > Math.min(visibleStopIndexRef.current - SCROLL_COUNT, items.length - 1)) {\n listRef.current.scrollToItem(Math.min(focusIndex + SCROLL_COUNT, items.length - 1), 'end');\n }\n }, [focusIndex, items.length, listRef]);\n return {handleOnItemsRendered};\n};\n\nexport {flattenGroupedItemsData, useScrollToFocusItem};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst lineStyle = '1px solid #AFD4E9';\n\nconst horizontalLineWidth = 5;\nconst verticalNodeGap = 14;\nconst arrowWidth = 16;\n\nexport const useStyles = makeStyles({\n decorator: {\n marginLeft: arrowWidth / 2,\n borderLeft: lineStyle,\n '&:last-child': {\n borderLeft: 'none',\n '&:before': {\n borderLeft: lineStyle\n }\n },\n '&:before': {\n top: 0,\n height: verticalNodeGap,\n width: horizontalLineWidth,\n borderBottom: lineStyle,\n content: '\"\"',\n display: 'block',\n left: '0'\n },\n '&$plain': {\n '&:before': {\n width: 0\n }\n }\n },\n plain: {},\n wrapper: {\n marginLeft: horizontalLineWidth + 11,\n marginTop: -8\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n plain?: boolean;\n enabled?: boolean;\n};\n\nconst BranchDecorator = ({className, children, plain = false, enabled = false}: Props) => {\n const styles = useStyles();\n return enabled ? (\n <div className={classnames(styles.decorator, {[styles.plain]: plain}, className)}>\n <div className={styles.wrapper}>{children}</div>\n </div>\n ) : (\n <>{children}</>\n );\n};\n\nexport default BranchDecorator;\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: 'flex',\n alignContent: 'center',\n flexDirection: 'column'\n },\n main: {\n position: 'relative',\n padding: '0 86px',\n marginTop: 'auto'\n },\n mainImageContainer: {\n display: 'flex',\n alignContent: 'center',\n height: '100%',\n width: '100%'\n },\n mainImage: {\n maxWidth: 'calc(100vw - 512px)',\n maxHeight: 'calc(100vh - 192px)',\n margin: '0 auto',\n userSelect: 'none'\n },\n arrowButton: {\n backgroundColor: theme.palette.divider,\n color: 'white',\n '&:hover': {\n backgroundColor: theme.palette.divider\n }\n },\n arrowButtonPrev: {\n position: 'absolute',\n top: '50%',\n left: '16px',\n transform: 'translateY(-50%)'\n },\n arrowButtonNext: {\n position: 'absolute',\n top: '50%',\n right: '16px',\n transform: 'translateY(-50%)'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n thumbnails: {\n marginLeft: '12px',\n marginBottom: '12px',\n marginTop: 'auto',\n width: 'calc(100vw - 364px)',\n overflowX: 'auto',\n overflowY: 'hidden'\n },\n gridContainer: {\n width: '100%'\n },\n thumb: {\n width: '96px',\n height: '96px',\n cursor: 'pointer',\n userSelect: 'none'\n },\n inactiveThumb: {\n filter: 'brightness(0.5)'\n }\n}));\n","import React, {useEffect, useRef} from 'react';\nimport {Grid as Grid} from '@material-ui/core';\nimport {getImageAttributeOvThumbnailUrl, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image from '../../../Image/Image';\nimport {useStyles} from './styles';\n\nexport const IMAGE_WIDTH = 96;\nexport const IMAGE_PADDING = 16;\nexport const CONTAINER_MARGIN = 12;\n\ntype Props = {\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const Thumbnails = ({attributeValues, setAttributeValueIndex, attributeValueIndex}: Props) => {\n const styles = useStyles();\n const gridRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (gridRef?.current) {\n const containerScrollLeft = gridRef.current.scrollLeft;\n const containerOffsetWidth = gridRef.current.offsetWidth;\n const containerWidth = containerOffsetWidth + containerScrollLeft;\n const currentElementPosition =\n attributeValueIndex * IMAGE_WIDTH + attributeValueIndex * IMAGE_PADDING + CONTAINER_MARGIN;\n if (containerWidth < currentElementPosition) {\n if (gridRef.current.scroll) {\n if (currentElementPosition > containerWidth + IMAGE_WIDTH + IMAGE_PADDING) {\n gridRef.current.scroll(currentElementPosition, 0);\n } else {\n gridRef.current.scroll(IMAGE_WIDTH + IMAGE_PADDING + containerScrollLeft, 0);\n }\n }\n } else if (containerScrollLeft + IMAGE_WIDTH > currentElementPosition) {\n if (gridRef.current.scroll) {\n gridRef.current.scroll(currentElementPosition - IMAGE_WIDTH, 0);\n }\n }\n }\n }, [attributeValueIndex, gridRef]);\n\n return (\n <div ref={gridRef} className={styles.thumbnails}>\n <Grid container wrap=\"nowrap\" direction=\"row\" spacing={1} className={styles.gridContainer}>\n {attributeValues.map(({uri, value}, index) => (\n <Grid item key={uri}>\n <Image\n onClick={() => setAttributeValueIndex(index)}\n className={classnames(styles.thumb, {\n [styles.inactiveThumb]: attributeValueIndex !== index\n })}\n src={getImageAttributeOvThumbnailUrl({value})}\n />\n </Grid>\n ))}\n </Grid>\n </div>\n );\n};\n","import React from 'react';\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport {ImageAttributeValue, getImageAttributeOvPreviewUrl} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport {useStyles} from './styles';\nimport {Thumbnails} from './Thumbnails/Thumbnails';\n\ntype Props = {\n className?: string;\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const ImageDetailsViewCarousel = ({\n className,\n attributeValues,\n attributeValueIndex,\n setAttributeValueIndex\n}: Props) => {\n const styles = useStyles();\n const attributeValue = attributeValues[attributeValueIndex];\n const mainImageSrc = getImageAttributeOvPreviewUrl(attributeValue);\n\n const onPrevImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex - 1);\n };\n\n const onNextImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex + 1);\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <div className={styles.main}>\n {attributeValueIndex > 0 && (\n <SmallIconButton\n icon={NavigateBeforeIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonPrev)}\n onClick={onPrevImageButtonClick}\n size=\"XL\"\n />\n )}\n <Image\n containerClassName={styles.mainImageContainer}\n className={styles.mainImage}\n size={mainImageSrc && ImageSizesStyles.OVERRIDE}\n src={mainImageSrc}\n />\n {attributeValueIndex !== attributeValues.length - 1 && (\n <SmallIconButton\n icon={NavigateNextIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonNext)}\n onClick={onNextImageButtonClick}\n size=\"XL\"\n />\n )}\n </div>\n <Thumbnails\n attributeValues={attributeValues}\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={setAttributeValueIndex}\n />\n </div>\n );\n};\n","import i18n from 'ui-i18n';\n\nexport const SYSTEM_ATTRIBUTES_TITLES = {\n get CreationTime() {\n return i18n.text('Creation Time');\n },\n get CreationDate() {\n return i18n.text('Creation Date');\n },\n get Dimensions() {\n return i18n.text('Dimensions');\n },\n get MimeType() {\n return i18n.text('Mime Type');\n },\n get Size() {\n return i18n.text('Size');\n },\n get Url() {\n return i18n.text('Full image URL (S3)');\n },\n get UrlPreview() {\n return i18n.text('Preview image URL (S3)');\n },\n get UrlThumbnail() {\n return i18n.text('Small image URL (S3)');\n },\n get CdnUrl() {\n return i18n.text('Full image URL (CDN)');\n },\n get CdnUrlPreview() {\n return i18n.text('Preview image URL (CDN)');\n },\n get CdnUrlThumbnail() {\n return i18n.text('Small image URL (CDN)');\n }\n};\n","import {path} from 'ramda';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {ImageAttributeValue, AttributeType} from '@reltio/mdm-sdk';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {SYSTEM_ATTRIBUTES_TITLES} from '../constants';\n\nexport const getFormattedSystemImageAttributeValue = (\n {value}: ImageAttributeValue = {} as ImageAttributeValue,\n name: string\n) => {\n if (\n ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail', 'MimeType'].includes(name)\n ) {\n return path([name, 0, 'value'], value);\n }\n\n if (name === 'CreationDate' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('MM-DD-YYYY');\n }\n\n if (name === 'CreationTime' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('HH:mm:ss');\n }\n\n if (name === 'Dimensions' && path(['Height', 0, 'value'], value) && path(['Width', 0, 'value'], value)) {\n return `${value.Height[0].value} x ${value.Width[0].value} ${i18n.text('pixels')}`;\n }\n\n if (name === 'Size' && path(['Size', 0, 'value'], value)) {\n const size = (Number(value.Size[0].value) / 1000).toFixed(2);\n return `${size} KB`;\n }\n};\n\nconst filterByNotSystemAttributeTypes = (attrTypes: AttributeType[] = []) => {\n return attrTypes.filter(({system}) => !system);\n};\n\nexport const filterByFieldsOrder = (keys: string[], fieldsOrder: ImageAttributeFieldsOrder) => {\n const {includeNames = [], excludeNames = [], order = []} = fieldsOrder;\n\n const filteredKeys = includeNames.length\n ? keys.filter((key) => includeNames.includes(key))\n : keys.filter((key) => !excludeNames.includes(key));\n\n if (order.length === 0) {\n return filteredKeys;\n }\n\n return filteredKeys.sort((a, b) => {\n const indA = order.indexOf(a);\n const indB = order.indexOf(b);\n if (indA === -1 && indB !== -1) return 1;\n if (indB === -1 && indA !== -1) return -1;\n return indA - indB;\n });\n};\n\nexport const getMoreAttrTypes = (attrType: AttributeType) => {\n return filterByNotSystemAttributeTypes(attrType.attributes);\n};\n\nexport const getSystemAttributesList = (attrValue: ImageAttributeValue, fieldsOrder: ImageAttributeFieldsOrder) => {\n return filterByFieldsOrder(Object.keys(SYSTEM_ATTRIBUTES_TITLES), fieldsOrder)\n .map((key) => {\n const value = getFormattedSystemImageAttributeValue(attrValue, key);\n\n if (!value) {\n return null;\n }\n\n return {\n title: SYSTEM_ATTRIBUTES_TITLES[key],\n value: getFormattedSystemImageAttributeValue(attrValue, key),\n isLink: isLink(key)\n };\n })\n .filter(Boolean);\n};\n\nexport const getNotSystemAttributesList = (\n attrValue: ImageAttributeValue = {} as ImageAttributeValue,\n attrType: AttributeType,\n fieldsOrder: ImageAttributeFieldsOrder\n) => {\n const notSystemAttrTypes = filterByNotSystemAttributeTypes(attrType.attributes);\n\n return filterByFieldsOrder(Object.keys(attrValue.value || {}), fieldsOrder).reduce((result, key) => {\n const attrType = notSystemAttrTypes.find(({name}) => name === key);\n return attrType ? [...result, {attrType: attrType, values: attrValue.value[key]}] : result;\n }, []);\n};\n\nexport const isLink = (key: string) => {\n return ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail'].includes(key);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n title: {\n marginBottom: '10px',\n color: 'white',\n fontSize: '18px',\n lineHeight: '21px',\n '&$canAdd': {\n marginBottom: '3px'\n }\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n canAdd: {}\n});\n","import React, {Fragment} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {AttributeType, AttributeItem} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport MoreAttributesButton from '../../attributes/editMode/MoreAttributesButton';\nimport {getMoreAttrTypes} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n uri: string;\n onAddAttributes?: (items: AttributeItem[]) => void;\n};\n\nexport const MetaInfoHeader = ({attributeType, onAddAttributes, uri}: Props) => {\n const styles = useStyles();\n const moreAttrTypes = getMoreAttrTypes(attributeType);\n const canAdd = Boolean(onAddAttributes);\n\n const handleApply = (attrTypes: AttributeType[]) => {\n if (onAddAttributes) {\n onAddAttributes(attrTypes.map((attributeType) => ({attributeType, parentUri: uri})));\n }\n };\n\n return (\n <Box>\n <Typography className={classnames(styles.title, {[styles.canAdd]: canAdd})}>\n {i18n.text('Meta info')}\n </Typography>\n {canAdd && (\n <Fragment>\n <MoreAttributesButton\n label={i18n.text('Attributes')}\n data={moreAttrTypes}\n dense={false}\n onApply={handleApply}\n />\n <Divider className={styles.divider} />\n </Fragment>\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n marginBottom: '11px'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n marginRight: '12px',\n float: 'left'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n content?: string;\n isLink?: boolean;\n children?: React.ReactNode;\n};\n\nexport const MetaInfoItem = ({title, content, isLink, children}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n <span className={styles.title}>{title}</span>\n {isLink ? (\n <a className={styles.link} href={content}>\n {i18n.text('link')}\n </a>\n ) : (\n <span className={styles.content}>{content || children}</span>\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n padding: '10px 0'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n fontSize: '13px'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport AttributesPager from '../../attributes/readMode/AttributesPager';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoItem} from './MetaInfoItem/MetaInfoItem';\nimport {getNotSystemAttributesList, getSystemAttributesList} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ImageAttributeValue;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n};\n\nexport const MetaInfoList = ({attributeValue, attributeType, imageAttributeFieldsOrder}: Props) => {\n const styles = useStyles();\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n\n const systemAttributesList = getSystemAttributesList(attributeValue, imageAttributeFieldsOrder);\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n\n return (\n <Box className={styles.root}>\n {systemAttributesList.map(({title, value, isLink}) => (\n <MetaInfoItem key={title} isLink={isLink} title={title} content={value} />\n ))}\n {isViewMode &&\n notSystemAttributesList.map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={false}\n values={values}\n titleClassName={styles.title}\n contentClassName={styles.content}\n parentUri={attributeValue.uri}\n />\n ))}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {},\n form: {\n padding: '10px 0'\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n actions: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '4px'\n },\n cancelButton: {\n color: 'white',\n marginRight: '8px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, ImageAttributeValue, Mode, isTempUri, AttributeItem} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport AttributesPager from '../../attributes/editMode/AttributesPager';\nimport {getNotSystemAttributesList} from '../helpers';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeValue: ImageAttributeValue;\n hasChanges: boolean;\n onDeleteAttribute: (item: AttributeItem) => void;\n onChangeAttribute: (item: AttributeItem) => void;\n onAddAttributes: (items: AttributeItem[]) => void;\n onCancel: () => void;\n onApply: () => void;\n mode: Mode;\n};\n\nexport const MetaInfoForm = ({\n attributeType,\n imageAttributeFieldsOrder,\n attributeValue,\n hasChanges,\n onDeleteAttribute,\n onChangeAttribute,\n onAddAttributes,\n onCancel,\n onApply,\n mode\n}: Props) => {\n const styles = useStyles();\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n const shouldShowActionButtons =\n notSystemAttributesList.length !== 0 || (notSystemAttributesList.length === 0 && hasChanges);\n\n return (\n <Box className={styles.root}>\n <Box className={styles.form}>\n {notSystemAttributesList.map(({attrType, values}) => {\n return (\n <AttributesPager\n key={attrType.uri}\n parentUri={attributeValue.uri}\n attributeType={attrType}\n values={values}\n showEmptyEditors={isTempUri(attributeValue.uri)}\n mode={mode}\n drawLines={false}\n onDeleteAttribute={onDeleteAttribute}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n />\n );\n })}\n </Box>\n {shouldShowActionButtons && (\n <>\n <Divider className={styles.divider} />\n <Box className={styles.actions}>\n <Button disabled={!hasChanges} onClick={onCancel} className={styles.cancelButton}>\n {i18n.text('Cancel')}\n </Button>\n <Button disabled={!hasChanges} onClick={onApply} color=\"primary\">\n {i18n.text('Apply')}\n </Button>\n </Box>\n </>\n )}\n </Box>\n );\n};\n","import {useEffect, useState, useContext, useCallback} from 'react';\nimport {equals} from 'ramda';\nimport {useDispatch} from 'react-redux';\nimport {profile} from '@reltio/mdm-module';\nimport {\n addAttribute,\n editAttribute,\n removeAttribute,\n AttributeType,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '../../../contexts';\n\ntype Params = {\n initialAttributeValue: ImageAttributeValue;\n attributeType: AttributeType;\n};\n\nexport const useEditMetaInfo = ({initialAttributeValue, attributeType}: Params) => {\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const [attributeValue, setAttributeValue] = useState(initialAttributeValue);\n\n useEffect(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const nestingLevel = 1;\n const hasChanges = !equals(attributeValue, initialAttributeValue);\n\n const addAttributes = useCallback((attributes: AttributeItem[]) => {\n setAttributeValue((prevAttrValue) => {\n return attributes.reduce((attrValue, attribute) => {\n const {attributeType, parentUri, index} = attribute;\n return addAttribute({\n entity: attrValue,\n attributeType,\n parentUri,\n index,\n nestingLevel\n }) as ImageAttributeValue;\n }, prevAttrValue);\n });\n }, []);\n\n const changeAttribute = useCallback(({value, attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n editAttribute({\n entity: prevAttrValue,\n attributeType,\n uri,\n value,\n nestingLevel\n }) as ImageAttributeValue\n );\n }, []);\n\n const deleteAttribute = useCallback(({attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n removeAttribute({entity: prevAttrValue, attributeType, uri, nestingLevel}) as ImageAttributeValue\n );\n }, []);\n\n const clearLocalChanges = useCallback(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const applyLocalChanges = useCallback(() => {\n dispatch(\n profile.actions.modifyAttribute({\n value: attributeValue,\n attributeType: attributeType,\n uri: attributeValue.uri,\n viewId\n })\n );\n }, [attributeValue, attributeType, viewId, dispatch]);\n\n return {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n };\n};\n","import {theme} from '@reltio/mdm-sdk';\n\nconst darkTheme = {\n palette: {\n type: 'dark',\n primary: theme.palette.primary,\n secondary: theme.palette.secondary\n }\n} as const;\n\nexport {darkTheme};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {MuiThemeProvider, createMuiTheme} from '@material-ui/core/styles';\nimport {Box as Box} from '@material-ui/core';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoHeader} from '../MetaInfoHeader/MetaInfoHeader';\nimport {MetaInfoList} from '../MetaInfoList/MetaInfoList';\nimport {MetaInfoForm} from '../MetaInfoForm/MetaInfoForm';\nimport {useEditMetaInfo} from '../hooks/useEditMetaInfo';\nimport {darkTheme} from '../theme';\n\nconst darkMuiTheme = createMuiTheme(darkTheme);\n\ntype Props = {\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n attributeValue: ImageAttributeValue;\n};\n\nexport const MetaInfo = ({imageAttributeFieldsOrder, attributeType, attributeValue: initialAttributeValue}: Props) => {\n const {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n } = useEditMetaInfo({attributeType, initialAttributeValue});\n const mode = useSelector(mdm.selectors.getMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n return (\n <MuiThemeProvider theme={darkMuiTheme}>\n <Box>\n <MetaInfoHeader\n attributeType={attributeType}\n uri={attributeValue?.uri}\n onAddAttributes={isEditableMode ? addAttributes : undefined}\n />\n <MetaInfoList\n attributeType={attributeType}\n attributeValue={attributeValue}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n />\n {isEditableMode && (\n <MetaInfoForm\n mode={mode}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeType={attributeType}\n attributeValue={attributeValue}\n hasChanges={hasChanges}\n onDeleteAttribute={deleteAttribute}\n onChangeAttribute={changeAttribute}\n onAddAttributes={addAttributes}\n onCancel={clearLocalChanges}\n onApply={applyLocalChanges}\n />\n )}\n </Box>\n </MuiThemeProvider>\n );\n};\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative',\n backgroundColor: '#333',\n maxHeight: 'calc(100vh - 64px)',\n overflow: 'hidden'\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n paddingLeft: '16px',\n boxShadow: `0 1px 0 0 ${theme.palette.divider}`\n },\n headerTitle: {\n color: 'rgba(255, 255, 255, 0.87)',\n fontSize: '16px',\n lineHeight: '19px'\n },\n bodyWrapper: {\n maxHeight: 'calc(100% - 56px)',\n overflow: 'auto'\n },\n body: {\n padding: '16px'\n },\n formControlLabel: {\n marginLeft: 0,\n marginBottom: '27px'\n },\n checkboxLabel: {\n marginLeft: '8px',\n color: 'rgba(255,255,255,0.87)',\n fontSize: '13px',\n lineHeight: '15px'\n },\n checkbox: {\n color: 'white',\n padding: 0\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, Entity, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {MetaInfo} from '../MetaInfo/MetaInfo';\nimport {useStyles} from './styles';\n\nexport type ImageAttributeFieldsOrder = {\n order?: string[];\n excludeNames?: string[];\n includeNames?: string[];\n};\n\ntype Props = {\n className?: string;\n attributeValue: ImageAttributeValue;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsViewSidebar = ({className, attributeValue, handleSetAsDefault, attributeType}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const modifiedEntity =\n useSelector((state) => mdm.selectors.getModifiedEntity(state, entity?.uri)) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const entityToShow = isViewMode ? entity : modifiedEntity;\n const imageAttributeConfig = useSelector(mdm.selectors.getImageAttributesFieldsOrder) || {};\n const imageAttributeFieldsOrder: ImageAttributeFieldsOrder =\n imageAttributeConfig[entity?.type] || imageAttributeConfig?.default || {};\n\n const [isDefault, setIsDefault] = useState<boolean>(false);\n useEffect(() => {\n setIsDefault(entityToShow?.defaultProfilePic === attributeValue?.uri);\n }, [attributeValue?.uri, entityToShow]);\n\n const handleChange = useCallback(() => {\n handleSetAsDefault(attributeValue.uri);\n }, [attributeValue?.uri]);\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.header}>\n <Typography className={styles.headerTitle}>{i18n.text('Details')}</Typography>\n </Box>\n <Box className={styles.bodyWrapper}>\n <Box className={styles.body}>\n <FormControlLabel\n classes={{root: styles.formControlLabel, label: styles.checkboxLabel}}\n control={\n <Checkbox\n className={styles.checkbox}\n checked={isDefault}\n onChange={handleChange}\n color=\"default\"\n />\n }\n label={i18n.text('Set as default')}\n />\n <MetaInfo\n attributeType={attributeType}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeValue={attributeValue}\n />\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n width: '100%',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n main: {\n flex: '1 0 auto'\n },\n details: {\n width: '340px'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {ImageDetailsViewCarousel} from './ImageDetailsViewCarousel/ImageDetailsViewCarousel';\nimport {ImageDetailsViewSidebar} from './ImageDetailsViewSidebar/ImageDetailsViewSidebar';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n currentAttributeValueUri: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsView = ({\n attributeValues = [],\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n handleSetAsDefault,\n attributeType\n}: Props) => {\n const [attributeValueIndex, setAttributeValueIndex] = useState<number>(0);\n useEffect(() => {\n if (!currentAttributeValueUri) {\n onChangeAttributeValueIndex(0);\n } else {\n onChangeAttributeValueIndex(attributeValues.findIndex((value) => value.uri === currentAttributeValueUri));\n }\n }, [currentAttributeValueUri, attributeValues]);\n\n const onChangeAttributeValueIndex = useCallback(\n (index: number) => {\n setAttributeValueIndex(index);\n setCurrentAttributeValueUri(attributeValues[index]?.uri);\n },\n [attributeValues]\n );\n const styles = useStyles();\n\n return (\n <Box className={styles.root}>\n <ImageDetailsViewCarousel\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={onChangeAttributeValueIndex}\n attributeValues={attributeValues}\n className={styles.main}\n />\n <ImageDetailsViewSidebar\n handleSetAsDefault={handleSetAsDefault}\n attributeValue={attributeValues[attributeValueIndex]}\n className={styles.details}\n attributeType={attributeType}\n />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 24px',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n item: {\n padding: '2px'\n }\n}));\n","import React from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Grid as Grid} from '@material-ui/core';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport ImageActionsOverlay from '../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {useStyles} from './styles';\n\nexport type ImageItem = {\n id: string;\n src: string;\n};\n\ntype Props = {\n items: ImageItem[];\n selectedItems: string[];\n onSelectImage: (id: string) => void;\n onDeselectImage: (id: string) => void;\n onShareLink?: (id: string) => void;\n onSetAsDefault?: (id: string) => void;\n onDownload: (id: string) => void;\n onClickImage: (id: string) => void;\n onDelete?: (id: string) => void;\n};\n\nexport const GalleryView = ({\n items,\n selectedItems,\n onSelectImage,\n onDeselectImage,\n onShareLink,\n onSetAsDefault,\n onDownload,\n onClickImage,\n onDelete\n}: Props) => {\n const styles = useStyles();\n\n const renderImageActionsOverlay = (id: string) => {\n return (\n <ImageActionsOverlay\n id={id}\n selected={selectedItems.includes(id)}\n selectionMode={selectedItems.length !== 0}\n onSelect={() => onSelectImage(id)}\n onDeselect={() => onDeselectImage(id)}\n onShareLink={() => onShareLink(id)}\n onSetAsDefault={() => onSetAsDefault(id)}\n onDownload={() => onDownload(id)}\n onClick={() => onClickImage(id)}\n onDelete={onDelete ? () => onDelete(id) : undefined}\n canBeSelected\n />\n );\n };\n\n return (\n <Box className={styles.root}>\n <Grid container>\n {items.map(({id, src}) => (\n <Grid key={id} classes={{item: styles.item}} item>\n <Image\n size={ImageSizesStyles.LARGE}\n onClick={() => onClickImage(id)}\n src={src}\n overlay={renderImageActionsOverlay(id)}\n />\n </Grid>\n ))}\n </Grid>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n selectButton: {\n fontSize: '14px',\n fontWeight: 500,\n color: theme.palette.primary.main,\n textTransform: 'uppercase'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nimport type {ImageItem} from '../GalleryView/GalleryView';\n\ntype Props = {\n onSelectAll: () => void;\n onClearAll: () => void;\n selectedItems: unknown[];\n items: ImageItem[];\n};\n\nexport const HeaderLeft = ({selectedItems, items, onSelectAll, onClearAll}: Props) => {\n const styles = useStyles();\n const selectedAllItems = selectedItems.length === items.length;\n\n return (\n <Link\n component=\"button\"\n underline=\"none\"\n classes={{button: styles.selectButton}}\n onClick={selectedAllItems ? onClearAll : onSelectAll}\n >\n {selectedAllItems ? i18n.text('Clear selection') : i18n.text('Select all images')}\n </Link>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n downloadButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '30px'\n },\n shareButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '21px'\n },\n deleteButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '24px'\n },\n divider: {\n height: '31px',\n width: '1px',\n marginLeft: '10px',\n backgroundColor: 'rgba(255,255,255,0.38)'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport LinkIcon from '@material-ui/icons/Link';\nimport DownloadIcon from '../../../icons/Download';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n onDownload?: () => void;\n onShare?: () => void;\n onUpload?: () => void;\n onDelete?: () => void;\n};\n\nexport const HeaderRight = ({onDownload, onShare, onUpload, onDelete}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {onUpload && (\n <Button variant=\"contained\" color=\"primary\" onClick={onUpload} startIcon={<CloudUploadIcon />}>\n {i18n.text('Upload')}\n </Button>\n )}\n {onDownload && onUpload && <div className={styles.divider} />}\n {onDownload && (\n <SmallIconButtonWithTooltip\n className={styles.downloadButton}\n tooltipTitle={i18n.text('Download selected items')}\n icon={DownloadIcon}\n onClick={onDownload}\n />\n )}\n {onShare && (\n <SmallIconButtonWithTooltip\n className={styles.shareButton}\n tooltipTitle={i18n.text('Copy link')}\n icon={LinkIcon}\n onClick={onShare}\n />\n )}\n {onDelete && (\n <SmallIconButtonWithTooltip\n className={styles.deleteButton}\n tooltipTitle={i18n.text('Delete selected items')}\n icon={DeleteIcon}\n onClick={onDelete}\n />\n )}\n </>\n );\n};\n","/* eslint-disable indent */\nimport React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {filter, pipe, pluck, propEq} from 'ramda';\nimport {\n AttributeType,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ImageDetailsView} from '../ImageDetailsView/ImageDetailsView';\nimport {ImageGalleryDialog, Mode} from '../ImageGalleryDialog/ImageGalleryDialog';\nimport {GalleryView} from './GalleryView/GalleryView';\nimport {HeaderLeft} from './HeaderLeft/HeaderLeft';\nimport {HeaderRight} from './HeaderRight/HeaderRight';\n\nexport type Props = {\n attributeValues: ImageAttributeValue[];\n open: boolean;\n onClose?: () => void;\n currentAttributeValueUri?: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n attributeType: AttributeType;\n onDownload: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n};\n\nconst ImageAttributesGallery = ({\n attributeValues,\n open,\n onClose,\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n attributeType,\n onDownload,\n onShareLink,\n onSetAsDefault,\n onUpload,\n onDeleteAttribute\n}: Props) => {\n const [selectedItems, setSelectedItems] = useState<string[]>([]);\n const [mode, setMode] = useState<Mode>(Mode.GALLERY_MODE);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n\n useEffect(() => {\n setMode(currentAttributeValueUri ? Mode.DETAILS_MODE : Mode.GALLERY_MODE);\n }, [currentAttributeValueUri]);\n\n const imageItems = attributeValues.map((attribute) => ({\n src: getImageAttributeOvThumbnailUrl(attribute) as string,\n downloadURL: getImageAttributeOvUrl(attribute) as string,\n id: attribute.uri\n }));\n\n const handleSelect = (id: string) => {\n setSelectedItems((items) => [...items, id]);\n };\n\n const handleDeselect = (id: string) => {\n setSelectedItems((items) => items.filter((item) => item !== id));\n };\n\n const handleSelectAll = () => {\n setSelectedItems(pluck('id', imageItems));\n };\n\n const handleClearAll = () => {\n setSelectedItems([]);\n };\n\n const handleDownloadSelectedItems = () => {\n const downloadURLs = isGalleryMode\n ? pipe(\n filter(({id}) => selectedItems.includes(id)),\n pluck('downloadURL')\n )(imageItems)\n : [imageItems.find(propEq('id', currentAttributeValueUri)).downloadURL];\n onDownload(downloadURLs);\n };\n\n const handleDownload = (id: string) => {\n onDownload([imageItems.find(propEq('id', id)).downloadURL]);\n };\n\n const handleShareLink = (id: string) => {\n onShareLink(imageItems.find(propEq('id', id)).downloadURL);\n };\n\n const handleSharedCurrentItem = () => {\n handleShareLink(currentAttributeValueUri);\n };\n\n const handleSetAsDefault = (id: string) => {\n const attributeValue = attributeValues.find(({uri}) => uri === id);\n onSetAsDefault(attributeValue);\n };\n\n const handleDelete = (id: string) => {\n onDeleteAttribute({uri: id, attributeType});\n };\n\n const handleDeleteSelectedItems = () => {\n const deleteUris = isGalleryMode ? selectedItems : [currentAttributeValueUri];\n deleteUris.forEach((uri) => {\n handleDelete(uri);\n });\n if (selectedItems.length) setSelectedItems([]);\n };\n\n const isGalleryMode = mode === Mode.GALLERY_MODE;\n const isDetailsMode = mode === Mode.DETAILS_MODE;\n const hasSelectedItems = selectedItems.length > 0;\n const isHasSelectedItemsOrDetailsMode = isDetailsMode || (isGalleryMode && hasSelectedItems);\n\n const isShowDeleteButton = !isViewMode && isHasSelectedItemsOrDetailsMode;\n const isShowUploadButton = !isViewMode && (isDetailsMode || (isGalleryMode && !hasSelectedItems));\n\n const headerLeft = isGalleryMode && hasSelectedItems && (\n <HeaderLeft\n items={imageItems}\n selectedItems={selectedItems}\n onClearAll={handleClearAll}\n onSelectAll={handleSelectAll}\n />\n );\n\n const headerRight = (\n <HeaderRight\n onDelete={isShowDeleteButton ? handleDeleteSelectedItems : undefined}\n onDownload={isHasSelectedItemsOrDetailsMode ? handleDownloadSelectedItems : undefined}\n onShare={isDetailsMode ? handleSharedCurrentItem : undefined}\n onUpload={isShowUploadButton ? onUpload : undefined}\n />\n );\n\n const handleClickByImage = (id: string) => {\n setCurrentAttributeValueUri(id);\n setMode(Mode.DETAILS_MODE);\n };\n\n return (\n <ImageGalleryDialog\n mode={mode}\n open={open}\n onChangeMode={setMode}\n header={{\n left: headerLeft,\n right: headerRight\n }}\n onClose={onClose}\n >\n {isGalleryMode && (\n <GalleryView\n items={imageItems}\n selectedItems={selectedItems}\n onSelectImage={handleSelect}\n onDeselectImage={handleDeselect}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onDownload={handleDownload}\n onClickImage={handleClickByImage}\n onDelete={!isViewMode ? handleDelete : undefined}\n />\n )}\n {isDetailsMode && (\n <ImageDetailsView\n handleSetAsDefault={handleSetAsDefault}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeValues={attributeValues}\n attributeType={attributeType}\n />\n )}\n </ImageGalleryDialog>\n );\n};\n\nexport default ImageAttributesGallery;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {fade} from '@material-ui/core';\n\nexport type SIZES_TYPE = {\n imageMargin: number;\n imageWidth: number;\n imageHeight: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n imageBox: {\n position: 'relative',\n display: 'flex',\n width: '100%',\n flexGrow: 1,\n flexShrink: 0,\n flexWrap: 'nowrap',\n marginTop: '2px',\n overflow: 'hidden'\n },\n\n moreButtonContainer: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n position: 'absolute',\n right: 0,\n cursor: 'pointer'\n };\n },\n moreButton: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: imageWidth,\n height: imageHeight,\n backgroundColor: fade(theme.palette.primary.main, 0.06)\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n ImageAttributeValue,\n insertDefaultImageByAttrUri,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {BlockImageGalleryDialogContext} from '../../../contexts';\nimport ImageAttributesGallery from '../../ImageAttributesGallery/ImageAttributesGallery';\nimport {downloadImagesByURLs} from '../helpers/imageAttributes';\nimport {DEFAULT_IMAGE_SIZE, IMAGE_MIN_VISIBLE_WIDTH} from './constants';\nimport {SIZES_TYPE, useStyles} from './styles';\n\nexport type ImageRenderProps = {\n onDownload?: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onOpenImageGalleryDialog: (uri?: string) => void;\n};\n\nexport type RenderImage = (imageRenderProps?: ImageRenderProps) => (attributeValue: ImageAttributeValue) => JSX.Element;\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n renderImage: RenderImage;\n overlay?: boolean;\n countFixedItems?: number;\n children?: React.ReactNode;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n parentUri?: string;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n renderImage,\n overlay = false,\n countFixedItems = 0,\n children,\n onUpload,\n onDeleteAttribute,\n imageSize = DEFAULT_IMAGE_SIZE,\n paging,\n parentUri,\n showNonOv,\n requestNextPageOfAttributeValues\n}: Props) => {\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const dispatch = useDispatch();\n const styles = useStyles(imageSize);\n useEffect(() => {\n if (paging && requestNextPageOfAttributeValues) {\n const totalVisibleValues = showNonOv ? paging.totalOvValues : paging.totalValues;\n if (totalVisibleValues > attributeValues.length) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values: [],\n defaultMaxValues: totalVisibleValues\n });\n }\n }\n }, [paging, requestNextPageOfAttributeValues, attributeType, parentUri, attributeValues.length, showNonOv]);\n\n const lastWidth = useRef<number | null>();\n const [maxItems, setMaxItems] = useState<number>(0);\n const [hiddenItemsLength, setHiddenItemsLength] = useState<number>(0);\n\n const isBlockImageGalleryDialog = useContext(BlockImageGalleryDialogContext);\n const [isOpenDialog, setIsOpenDialog] = useState<boolean>(false);\n const [currentAttributeValueUri, setCurrentAttributeValueUri] = useState<string>();\n\n const adjustMaxItemsToScreenWidth = useCallback(\n (width: number) => {\n const {imageMargin, imageWidth} = imageSize;\n const maxItemsPerScreen = Math.floor((width + imageMargin) / (imageWidth + imageMargin)) - countFixedItems;\n const hasHiddenImage =\n width + imageMargin - (maxItemsPerScreen + countFixedItems) * (imageWidth + imageMargin) <\n IMAGE_MIN_VISIBLE_WIDTH;\n setMaxItems(maxItemsPerScreen);\n if (attributeValues.length > maxItemsPerScreen) {\n setHiddenItemsLength(attributeValues.length - maxItemsPerScreen + (hasHiddenImage ? 1 : 0));\n } else {\n setHiddenItemsLength(0);\n }\n },\n [attributeValues.length, countFixedItems, imageSize]\n );\n\n const handleResize = useCallback(\n (width) => {\n adjustMaxItemsToScreenWidth(width);\n lastWidth.current = width;\n },\n [adjustMaxItemsToScreenWidth]\n );\n\n useEffect(() => {\n if (lastWidth.current) {\n adjustMaxItemsToScreenWidth(lastWidth.current);\n }\n }, [attributeValues.length, adjustMaxItemsToScreenWidth]);\n\n const handleOpenImageGalleryDialog = useCallback(\n (uri?: string) => {\n if (!isBlockImageGalleryDialog) {\n setCurrentAttributeValueUri(uri);\n setIsOpenDialog(true);\n }\n },\n [isBlockImageGalleryDialog]\n );\n\n const handleCloseImageGalleryDialog = useCallback(() => {\n setIsOpenDialog(false);\n }, []);\n\n const handleDownload = (urls: string[]) => downloadImagesByURLs(urls);\n const handleShareLink = (url: string) => navigator.clipboard.writeText(url);\n\n const handleSetAsDefault = useCallback(\n (attributeValue: ImageAttributeValue) => {\n if (isViewMode) {\n insertDefaultImageByAttrUri(entity.uri, attributeValue.uri).then(({status}) => {\n if (status === 'success') {\n dispatch(profile.entity.actions.setDefaultProfilePic(attributeValue));\n }\n });\n } else {\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: attributeValue\n })\n );\n }\n },\n [isViewMode, entity.uri, dispatch]\n );\n\n const renderImageProps = {\n onOpenImageGalleryDialog: handleOpenImageGalleryDialog,\n ...(overlay && {\n onDownload: handleDownload,\n onShareLink: handleShareLink,\n onSetAsDefault: handleSetAsDefault\n })\n };\n\n return (\n <>\n <ReactResizeDetector handleWidth={true} onResize={handleResize} />\n <ImageAttributesGallery\n attributeValues={attributeValues}\n open={isOpenDialog}\n onClose={handleCloseImageGalleryDialog}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeType={attributeType}\n onDownload={handleDownload}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onUpload={onUpload}\n onDeleteAttribute={onDeleteAttribute}\n />\n <div className={styles.imageBox}>\n {children}\n {attributeValues.slice(0, maxItems).map(renderImage(renderImageProps))}\n {hiddenItemsLength > 0 && (\n <div className={styles.moreButtonContainer}>\n <div className={styles.moreButton} onClick={() => handleOpenImageGalleryDialog()}>\n <Typography className={styles.number}>{`+${hiddenItemsLength}`}</Typography>\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport default ImageAttributesLine;\n","const getFilenameFromURL = (url: string) => url.split('/').pop();\nconst isAbsoluteUrl = (url: string) => url.indexOf('://') > 0 || url.indexOf('//') === 0;\n\nconst isExternalUrl = (url: string) => {\n if (!isAbsoluteUrl(url)) return false;\n\n const urlParts = new URL(url);\n return urlParts.host !== location.host;\n};\n\nconst REMOVE_IFRAME_DELAY = 30000;\n\nexport const downloadImagesByURLs = (urls: string[]) => {\n urls.forEach((url, index) => {\n try {\n if (isExternalUrl(url)) {\n const iframe = document.createElement('iframe');\n iframe.setAttribute('style', 'display: none;');\n iframe.setAttribute('src', url);\n document.body.appendChild(iframe);\n setTimeout(() => document.body.removeChild(iframe), (index + 1) * REMOVE_IFRAME_DELAY);\n } else {\n const link = document.createElement('a');\n link.href = url;\n link.download = getFilenameFromURL(url);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n } catch (e) {\n console.error(e);\n }\n });\n};\n","import {ImageSizesStyles} from '../../Image/Image';\n\nexport const IMAGE_WIDTH = ImageSizesStyles.SMALL.imageWidth;\nexport const IMAGE_HEIGHT = ImageSizesStyles.SMALL.imageHeight;\nexport const IMAGE_MARGIN = 4;\nexport const IMAGE_MIN_VISIBLE_WIDTH = 8;\n\nexport const DEFAULT_IMAGE_SIZE = {imageMargin: IMAGE_MARGIN, imageWidth: IMAGE_WIDTH, imageHeight: IMAGE_HEIGHT};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n height: '16px',\n borderColor: fade(theme.palette.primary.main, 0.54)\n },\n label: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px',\n lineHeight: '11px',\n color: theme.palette.primary.main\n }\n}));\n","import React, {useCallback} from 'react';\nimport classnames from 'classnames';\nimport {Chip as Chip} from '@material-ui/core';\nimport {\n getAttrDataTypeDefinition,\n getAttributeValue,\n isComplexAttribute,\n getLabel,\n AttributeType,\n SimpleAttributeValue,\n NestedAttributeValue,\n ReferenceAttributeValue,\n getEntityUriFromAttributeUri\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport DataTypeValue from '../../DataTypeValue/DataTypeValue';\nimport {withTooltip} from '../../../HOCs';\nimport {useDispatch} from 'react-redux';\n\nimport {useStyles} from './styles';\n\nexport const ChipWithTooltip = withTooltip(Chip);\n\ntype ComplexWithLabel = NestedAttributeValue | ReferenceAttributeValue;\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n nonOvValues: Array<SimpleAttributeValue | ComplexWithLabel>;\n nonOvTotal: number;\n};\nconst OvIcon = ({className, attributeType, nonOvValues = [], nonOvTotal}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const attributeUri = nonOvValues?.[0]?.uri;\n const onClick = useCallback(() => {\n const entityUri = attributeUri ? getEntityUriFromAttributeUri(attributeUri) : '';\n dispatch(ui.actions.openEntity({uri: entityUri, viewId: null, screen: 'sources'}));\n }, [attributeUri, dispatch]);\n\n if (!nonOvTotal) {\n return null;\n }\n\n const tooltipTitle = nonOvValues.length\n ? nonOvValues.map((value, i) => (\n <div key={i}>\n {isComplexAttribute(attributeType) ? (\n getLabel((value as ComplexWithLabel).label)\n ) : (\n <DataTypeValue\n value={getAttributeValue(value)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n rich={false}\n />\n )}\n </div>\n ))\n : null;\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n tooltipPlacement=\"top\"\n label={`+ ${nonOvTotal}`}\n variant=\"outlined\"\n onClick={onClick}\n classes={{\n root: classnames(styles.container, className),\n label: styles.label\n }}\n />\n );\n};\n\nexport default OvIcon;\n","import {\n AttributeType,\n AttributeValue,\n DataTypes,\n findAttributeTypeByUri,\n isOv,\n Metadata,\n PivotingAttribute,\n RecordAttributesType,\n PrimitiveValue,\n getLastUriPart,\n PivotingValue\n} from '@reltio/mdm-sdk';\n\nconst getPivotingChildrenUris = (attributeType: AttributeType, pivotingAttributes: PivotingAttribute[]) => {\n const pivotingAttribute = pivotingAttributes.find((attribute) => {\n return attribute.uri === attributeType.uri;\n });\n\n return pivotingAttribute && Array.isArray(pivotingAttribute.children) ? pivotingAttribute.children : [];\n};\n\nexport const generatePivotingValue = (\n attributeType: AttributeType,\n value: RecordAttributesType,\n pivotingAttributes: PivotingAttribute[],\n metadata: Metadata\n): PivotingValue[] => {\n const pivotingChildrenUris = getPivotingChildrenUris(attributeType, pivotingAttributes);\n let pivotingChildren = attributeType?.attributes || attributeType?.analyticsAttributes || [];\n if (pivotingChildrenUris.length) {\n pivotingChildren = pivotingChildren.filter((attrType) => pivotingChildrenUris.includes(attrType.uri));\n }\n\n return pivotingChildren.reduce((acc, attribute) => {\n const values = valueToString(value[attribute.name] as AttributeValue[], metadata, pivotingAttributes);\n if (values && values.length) {\n if (Array.isArray(values[0])) {\n acc.push({[attribute.uri]: values[0]});\n } else {\n acc.push({[attribute.uri]: values});\n }\n }\n return acc;\n }, []);\n};\n\nexport const convertSimpleAttributePivotingValue = (attrType: AttributeType, value: PrimitiveValue) => [\n {[attrType.name]: value}\n];\nexport const convertNestedAttributePivotingValue = (values: PivotingValue[]) => {\n return values.map((value) => {\n return Object.fromEntries(Object.entries(value).map(([key, value]) => [getLastUriPart(key), value]));\n });\n};\n\nconst valueToString = (values: AttributeValue[], metadata: Metadata, pivotingAttributes: PivotingAttribute[]) => {\n if (!values || values.length === 0) return;\n\n return values.reduce((acc, valueContainer) => {\n if ('type' in valueContainer && valueContainer.type) {\n const value = 'lookupCode' in valueContainer ? valueContainer.lookupCode : valueContainer.value;\n const attributeType = findAttributeTypeByUri(metadata, valueContainer.type);\n if (value && typeof value !== 'object' && isOv(valueContainer)) {\n acc.push(preparePivotingAttributeValue(value, attributeType));\n } else if (value && typeof value === 'object' && !Array.isArray(value)) {\n acc.push(generatePivotingValue(attributeType, value, pivotingAttributes, metadata));\n }\n }\n return acc;\n }, []);\n};\n\nexport const preparePivotingAttributeValue = (value: PrimitiveValue, attributeType: AttributeType) => {\n switch (attributeType?.type) {\n case DataTypes.TYPE_DATE:\n return new Date(value as number).getTime();\n case DataTypes.TYPE_TIMESTAMP: {\n if (!isNaN(Number(value))) {\n return new Date(Number(value)).getTime();\n } else {\n return new Date(value as number).getTime();\n }\n }\n default:\n return value;\n }\n};\n","import React from 'react';\n\nconst SvgPivotingIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={11} height={11} viewBox=\"0 0 11 11\" {...props}>\n <path\n d=\"M2.514 5h2.314V3l2.5 2.5-2.5 2.5V6h-3.8a4.5 4.5 0 10.73-3H.6a5.5 5.5 0 11-.577 3H0V5H2.514z\"\n fill=\"#6CACE4\"\n stroke=\"none\"\n strokeWidth={1}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n};\n\nexport default SvgPivotingIcon;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n container: {\n backgroundColor: 'white',\n width: '360px',\n minWidth: '360px',\n maxWidth: '720px'\n },\n header: {\n display: 'flex',\n height: '48px',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingLeft: '16px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px'\n },\n entityTypeLabel: {\n color: 'rgba(0,0,0,0.67)',\n fontSize: '14px',\n paddingLeft: '16px',\n paddingBottom: '12px',\n lineHeight: '16px'\n },\n divider: {\n height: '24px',\n width: '1px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n headerCount: {\n color: theme.palette.text.secondary,\n fontSize: '14px',\n letterSpacing: '0.24px',\n lineHeight: '28px',\n width: '210px'\n },\n body: {\n borderBottom: '1px solid rgba(0,0,0,0.12)',\n padding: '0 16px 8px'\n },\n footer: {\n display: 'flex',\n alignItems: 'center',\n height: '31px',\n paddingLeft: '16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n profileIcon: {\n height: '16px',\n width: '16px'\n },\n entityContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px',\n textDecoration: 'none',\n paddingLeft: '8px'\n },\n icon: {\n margin: 'auto 8px auto 0'\n },\n content: {\n color: theme.palette.primary.main,\n cursor: 'pointer'\n },\n seeAllButton: {\n cursor: 'pointer'\n }\n}));\n\nexport const usePivotingTooltipStyles = makeStyles({\n tooltip: {\n backgroundColor: 'white',\n boxShadow: '0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.2)',\n padding: 0,\n borderRadius: '4px',\n maxWidth: 'none'\n },\n arrow: {\n '&::before': {\n backgroundColor: 'white'\n }\n }\n});\n","import React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n getEntityUriForLink,\n getFilteredEntities,\n getLabel,\n getTotals,\n GlobalSearchRequestOptions,\n PrimitiveValue,\n PivotingValue,\n convertPivotingValueToSearchFilters\n} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport {useSafePromise} from '../../../hooks';\nimport {useStyles} from './styles';\n\nconst MAX_ENTITIES_PIVOTING_TOOLTIP = 6;\n\nexport type Props = {\n value: PivotingValue[] | PrimitiveValue;\n attributeType: AttributeType;\n config: {\n label?: string;\n entityType?: string;\n };\n onSeeAllClick: () => void;\n};\n\nexport const PivotingTooltipContent = ({value, attributeType, config = {}, onSeeAllClick}: Props) => {\n const [entities, setEntities] = useState<Entity[]>([]);\n const [total, setTotal] = useState(0);\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const safePromise = useSafePromise();\n const styles = useStyles();\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions =\n useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {};\n const entityType = config.entityType || entity.type;\n\n const shouldShowSeeAllButton = total > MAX_ENTITIES_PIVOTING_TOOLTIP;\n\n useEffect(() => {\n const filters = convertPivotingValueToSearchFilters({value, attributeType, entityType});\n const options = {\n max: MAX_ENTITIES_PIVOTING_TOOLTIP,\n ...globalSearchRequestOptions\n };\n safePromise(Promise.all([getFilteredEntities(filters, options), getTotals(filters, options)]))\n .then((results) => {\n const [entities, {total}] = results;\n setEntities(Array.isArray(entities) ? entities : []);\n setTotal(total);\n })\n .catch(() => {\n setEntities([]);\n setTotal(0);\n });\n }, []);\n\n const hasEntityTypeLabel = Boolean(config.label);\n return (\n <div className={styles.container}>\n <div className={styles.header}>\n <div className={styles.title}>{i18n.text('Pivot profiles')}</div>\n <div className={styles.divider} />\n <div className={styles.headerCount}>\n {i18n.number(total, '0,0') + ' ' + (total === 1 ? i18n.text('item') : i18n.text('items'))}\n </div>\n </div>\n {hasEntityTypeLabel && <div className={styles.entityTypeLabel}>{config.label}</div>}\n <div className={styles.body}>\n {entities.map((visibleEntity) => (\n <div key={visibleEntity.uri} className={styles.entityContainer}>\n <EntityAvatar entity={visibleEntity} avatarClassName={styles.profileIcon} />\n <EntityUriLink className={styles.entityLabel} value={getEntityUriForLink(visibleEntity)}>\n {getLabel(visibleEntity.label)}\n </EntityUriLink>\n </div>\n ))}\n </div>\n {shouldShowSeeAllButton && (\n <div className={styles.footer}>\n <a className={styles.seeAllButton} onClick={onSeeAllClick}>\n {i18n.text('See all')}\n </a>\n </div>\n )}\n </div>\n );\n};\n","import React, {useContext} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport mdm, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n AttributeType,\n isNested,\n NestedAttributeValue,\n PrimitiveValue,\n RecordAttributesType,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {isNil} from 'ramda';\n\nimport {PivotingAttributeContext} from '../../../contexts';\nimport {\n convertNestedAttributePivotingValue,\n convertSimpleAttributePivotingValue,\n generatePivotingValue,\n preparePivotingAttributeValue\n} from './helpers';\nimport PivotingIcon from '../../../icons/PivotingIcon';\nimport {PivotingTooltipContent} from './PivotingTooltipContent';\nimport {usePivotingTooltipStyles, useStyles} from './styles';\n\ntype Props = {\n value: SimpleAttributeValue | NestedAttributeValue;\n attributeType: AttributeType;\n children?: React.ReactNode;\n className?: string;\n};\nexport const PivotingTooltip = ({value, attributeType, children, className}: Props) => {\n const styles = usePivotingTooltipStyles();\n const contentStyles = useStyles();\n const dispatch = useDispatch();\n const pivotingAttributesList = useContext(PivotingAttributeContext) || [];\n const isNestedAttribute = isNested(attributeType);\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n\n const pivotingValue = isNestedAttribute\n ? generatePivotingValue(attributeType, value.value as RecordAttributesType, pivotingAttributesList, metadata)\n : preparePivotingAttributeValue(\n (value as SimpleAttributeValue).lookupCode || (value.value as PrimitiveValue),\n attributeType\n );\n\n const isPivotingAttribute =\n pivotingAttributesList.some(({uri}) => uri === attributeType.uri) &&\n ((Array.isArray(pivotingValue) && pivotingValue.length) ||\n (!Array.isArray(pivotingValue) && !isNil(pivotingValue)));\n\n const pivotingAttribute = pivotingAttributesList.find(({uri}) => uri === attributeType.uri);\n\n const handleSeeAllClick = () => {\n const generatedValue = Array.isArray(pivotingValue)\n ? convertNestedAttributePivotingValue(pivotingValue)\n : convertSimpleAttributePivotingValue(attributeType, pivotingValue);\n\n dispatch(mdmModuleUi.actions.openPivotingPerspective({value: generatedValue, attributeType}));\n };\n\n return isPivotingAttribute ? (\n <Tooltip\n interactive\n arrow\n placement=\"right-start\"\n classes={styles}\n title={\n <PivotingTooltipContent\n value={pivotingValue}\n attributeType={attributeType}\n config={pivotingAttribute.popup}\n onSeeAllClick={handleSeeAllClick}\n />\n }\n >\n <span className={className}>\n <PivotingIcon className={contentStyles.icon} />\n <span className={contentStyles.content} onClick={handleSeeAllClick}>\n {children}\n </span>\n </span>\n </Tooltip>\n ) : (\n <>{children}</>\n );\n};\n","import EditModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return EditModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes, isReltioCrosswalk} from '@reltio/mdm-sdk';\nimport SimpleAttributeEditor from '../SimpleAttributeEditor/SimpleAttributeEditor';\nimport NestedAttribute from '../NestedAttribute/NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class EditModeAttributesFactory {\n static build(attributeType, props = {}) {\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n showEmptyEditors,\n onAddAttributes,\n lazy,\n errors,\n crosswalks,\n showNonOv,\n expanded,\n ...propsForSimpleAttribute\n } = props;\n /* eslint-enable @typescript-eslint/no-unused-vars */\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return (\n <SimpleAttributeEditor\n isReltioCrosswalk={isReltioCrosswalk(crosswalks, props.attributeValue)}\n {...propsForSimpleAttribute}\n />\n );\n }\n }\n}\n","import React, {memo, useCallback, useContext, useMemo, useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {\n getCreatableAttributeTypes,\n getAttributesListForEditMode,\n ModeType,\n getParentUri,\n checkCanCreateAttribute\n} from '@reltio/mdm-sdk';\nimport {path} from 'ramda';\n\nimport AttributesPager from '../AttributesPager';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport MoreAttributesButton from '../MoreAttributesButton';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\nimport {getMoreAttrTypes} from './helpers';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\n\nconst AttributesList = ({\n parentAttributeType,\n attrTypes,\n entity,\n parentUri,\n showEmptyEditors,\n mode,\n crosswalks,\n drawLines,\n children,\n className,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n onAddAttributes,\n onChangeAttribute,\n onDeleteAttribute,\n additionalControlsRenderer,\n showNonOv\n}) => {\n const {attributes = {}} = entity;\n const [hasDeletionsMap, setHasDeletionsMap] = useState({});\n const setHasDeletions = useCallback((attrTypeUri, value) => {\n setHasDeletionsMap((prevMap) => ({\n ...prevMap,\n [attrTypeUri]: value\n }));\n }, []);\n useEffect(() => {\n setHasDeletionsMap({});\n }, [parentUri]);\n const canCreateParentAttrType = useMemo(\n () => parentAttributeType && checkCanCreateAttribute({attributeType: parentAttributeType, mode}),\n [parentAttributeType, mode]\n );\n const creatableAttrTypes = useMemo(() => getCreatableAttributeTypes(mode, attrTypes), [attrTypes, mode]);\n const moreAttrTypes = getMoreAttrTypes(creatableAttrTypes, entity, showEmptyEditors, hasDeletionsMap);\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const pagersData = useMemo(\n () => getAttributesListForEditMode(attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes),\n [attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes]\n );\n\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const onAddMoreAttributes = useCallback(\n (attributeTypes) => {\n onAddAttributes(\n attributeTypes.map((attributeType) => ({\n attributeType,\n parentUri: attributeType === parentAttributeType ? getParentUri(parentUri) : parentUri\n }))\n );\n },\n [onAddAttributes, parentUri, parentAttributeType]\n );\n\n const decoratorProps = {\n enabled: drawLines\n };\n const hasDeletionsContextValue = useMemo(\n () => ({\n hasDeletionsMap,\n setHasDeletions\n }),\n [hasDeletionsMap, setHasDeletions]\n );\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n <BranchDecorator {...decoratorProps} plain={true}>\n {moreAttrTypes.length > 0 && (\n <MoreAttributesButton\n label={i18n.text('More attributes')}\n onApply={onAddMoreAttributes}\n dense={drawLines}\n data={moreAttrTypes}\n parent={canCreateParentAttrType && parentAttributeType}\n />\n )}\n </BranchDecorator>\n <HasDeletionsContext.Provider value={hasDeletionsContextValue}>\n {regularPagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], attributes)}\n parentUri={parentUri}\n showEmptyEditors={showEmptyEditors}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n />\n ))}\n </HasDeletionsContext.Provider>\n </div>\n );\n};\n\nAttributesList.propTypes = {\n parentAttributeType: PropTypes.object,\n attrTypes: PropTypes.array,\n entity: PropTypes.object,\n parentUri: PropTypes.string,\n children: PropTypes.node,\n showEmptyEditors: PropTypes.bool,\n mode: ModeType,\n crosswalks: PropTypes.array,\n drawLines: PropTypes.bool,\n showNonOv: PropTypes.bool,\n className: PropTypes.string,\n alwaysVisibleTypeUris: PropTypes.array,\n onAddAttributes: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n additionalControlsRenderer: PropTypes.func\n};\n\nexport default memo(AttributesList);\n","import {always, both, cond, has, T} from 'ramda';\nimport {\n AttributeType,\n Entity,\n isAnalyticAttribute,\n isRoleAttrType,\n isSpecialAttribute,\n isTagAttrType\n} from '@reltio/mdm-sdk';\n\nconst getSource = (\n attrType: AttributeType,\n entity: Entity\n): Entity | Entity['analyticsAttributes'] | Entity['attributes'] => {\n const {attributes = {}, analyticsAttributes = {}} = entity;\n return cond([\n [isSpecialAttribute, always(entity)],\n [both(isAnalyticAttribute, always(analyticsAttributes)), always(analyticsAttributes)],\n [T, always(attributes)]\n ])(attrType);\n};\n\nconst getNameProp = (attrType: AttributeType): string => {\n return isSpecialAttribute(attrType) ? 'uri' : 'name';\n};\n\nexport const getMoreAttrTypes = (\n attrTypes: AttributeType[],\n entity: Entity,\n showEmptyEditors?: boolean,\n hasDeletionsMap?: {[attrTypeUri: string]: boolean}\n): AttributeType[] => {\n return attrTypes.filter((attrType) => {\n const source = getSource(attrType, entity);\n const nameProp = getNameProp(attrType);\n return !(\n (attrType.singleValue || isRoleAttrType(attrType) || isTagAttrType(attrType)) &&\n (has(attrType[nameProp])(source) || (showEmptyEditors && !hasDeletionsMap?.[attrType.uri]))\n );\n });\n};\n","import React from 'react';\nimport {CardinalityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {allPass, always, cond, isNil, has, not, pipe, propSatisfies, T} from 'ramda';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\n\nconst valueCaption = (value) =>\n i18n.text('${value}', {\n value: value === 1 ? i18n.text('value') : i18n.text('values')\n });\n\nconst hasMinValue = has('minValue');\nconst hasMaxValue = has('maxValue');\nconst noMaxValue = pipe(hasMaxValue, not);\nconst minValueIsOne = propSatisfies((minValue) => minValue === 1, 'minValue');\nconst exactCardinality = ({minValue, maxValue}) => minValue && minValue === maxValue;\n\nconst generateMinCardinality = ({minValue}) =>\n i18n.text('This attribute can have minimum ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMaxCardinality = ({maxValue}) =>\n i18n.text('This attribute can have maximum ${maxValue} ${maxValueCaption}', {\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst generateExactCardinality = ({minValue}) =>\n i18n.text('This attribute should have ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMinMaxCardinality = ({minValue, maxValue}) =>\n i18n.text('${minCardinality} and maximum ${maxValue} ${maxValueCaption}', {\n minCardinality: generateMinCardinality({minValue}),\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst getCardinalityMessage = cond([\n [isNil, always('')],\n [exactCardinality, generateExactCardinality],\n [allPass([minValueIsOne, hasMaxValue]), generateMaxCardinality],\n [allPass([minValueIsOne, noMaxValue]), always('')],\n [allPass([hasMinValue, hasMaxValue]), generateMinMaxCardinality],\n [hasMaxValue, generateMaxCardinality],\n [hasMinValue, generateMinCardinality],\n [T, always('')]\n]);\n\nconst CardinalityMessage = ({cardinality}) => {\n const styles = useStyles();\n\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {getCardinalityMessage(cardinality)}\n </Typography>\n );\n};\n\nCardinalityMessage.propTypes = {\n cardinality: CardinalityType\n};\n\nexport default CardinalityMessage;\n","import {filter, propSatisfies} from 'ramda';\nimport {isTempUri} from '@reltio/mdm-sdk';\n\nconst filterNewValues = filter(propSatisfies(isTempUri, 'uri'));\n\nexport {filterNewValues};\n","import React, {useCallback, useRef, useState, useContext, useMemo} from 'react';\nimport {\n AttributeValue,\n createNewAttribute,\n getAttributeOwnError,\n isComplexAttribute,\n isEditableMode as checkIsEditableMode,\n isEmptyValue,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {add, always, has, ifElse, min, pipe, prop, T} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Title from '../../../Title/Title';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Cardinality from './CardinalityMessage';\nimport {AttributePagerProps} from './index';\nimport {useStyles} from './styles';\nimport {filterNewValues} from './utils';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport OvIcon from '../../OvIcon';\n\ntype Props = Required<Omit<AttributePagerProps, 'values'>> & {\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n nonVisibleValues: AttributeValue[];\n};\n\nconst AttributeRenderer = ({\n max,\n values,\n attributeType,\n parentUri,\n mode,\n drawLines,\n showEmptyEditors,\n errorMessage,\n errors,\n paging,\n crosswalks,\n showNonOv,\n nonVisibleValues,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n const [hadDeletions, setHadDeletions] = useState(false);\n const {label, required: isRequired, cardinality, name, uri: attributeTypeUri} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const isPinned = useMemo(() => pinnedAttributes?.includes(attributeTypeUri), [attributeTypeUri, pinnedAttributes]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = ((!hadDeletions && showEmptyEditors) || isRequired || isPinned) && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const onAddOneMore = useCallback(() => {\n setVisibleValuesCount(visibleValuesCount + 1);\n\n const attribute = {\n parentUri,\n index: visibleValuesCount,\n attributeType\n } as AttributeItem;\n\n return onAddAttributes(\n showEmpty && !isComplexAttribute(attributeType.type) ? [attribute, attribute] : [attribute]\n );\n }, [visibleValuesCount, onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const onDelete = useCallback(pipe(onDeleteAttribute, T, setHadDeletions), [onDeleteAttribute, setHadDeletions]);\n\n if (isEmptyValues && !showEmpty) {\n return null;\n }\n\n if (showEmpty && isEmptyValues) {\n values = [emptyEditorValue.current];\n }\n\n if (isEmptyValue(values)) {\n return null;\n }\n\n const newValuesCount = (filterNewValues(values) || []).length;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(\n has(totalProp),\n pipe(prop(totalProp), add(newValuesCount)),\n always(values.length)\n )(paging);\n\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues?.length;\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri,\n attributeTypeName: name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const lastIndex = shownValues ? shownValues.length - 1 : 0;\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <BranchDecorator enabled={drawLines}>\n <div className={styles.wrapper}>\n <div className={styles.titleWrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} className={styles.typeError} />}\n <div className={styles.attributesWrapper}>\n {shownValues.map((value, idx) => (\n <Attribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n errors={errors}\n ownError={getAttributeOwnError(value, idx, attributeType.uri, errors)}\n mode={mode}\n crosswalks={crosswalks}\n onAddOneMore={lastIndex === idx ? onAddOneMore : null}\n onAddAttributes={onAddAttributes}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n onDeactivateError={onDeactivateError}\n additionalControlsRenderer={additionalControlsRenderer}\n />\n ))}\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n </div>\n </BranchDecorator>\n );\n};\n\nexport default AttributeRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n roleContainer: {\n width: '100%'\n },\n\n valueContainer: {\n marginLeft: '8px',\n width: 0\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {prop, propEq} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {Metadata, Entity, EntityAttrTypes, getRolesForEntityType, getLastUriPart, AttributeItem} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport SimpleDropDownSelector from '../../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {MultiValueChip} from '../../..';\nimport {useStyles} from './styles';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\ntype Props = {\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst components = {MultiValue: MultiValueChip};\n\nexport const Roles = ({values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = entity.uri;\n\n const options = getRolesForEntityType(metadata, entity.type).map((role) => ({\n value: role.uri,\n label: role.label\n }));\n\n const formattedValues = (values || []).map((value) => {\n const label = options.find(propEq('value', value))?.label;\n\n return {\n value,\n label: label || getLastUriPart(value)\n };\n });\n\n const handleChange = useCallback(\n (values) => {\n const roles = values?.map(prop('value')) || [];\n onChange({\n value: roles,\n attributeType: EntityAttrTypes.roles,\n uri: entityUri\n });\n },\n [entityUri, onChange]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.roles});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <SimpleDropDownSelector\n label={''}\n height={40}\n isMulti={true}\n options={options}\n value={formattedValues}\n onChange={handleChange}\n components={components}\n classes={styles}\n className={styles.roleContainer}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getFacets, EntityAttrTypes, buildFilterQueryString, AttributeItem} from '@reltio/mdm-sdk';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport TypeaheadEditor from '../../../editors/TypeaheadEditor/TypeaheadEditor';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst filtersWithSearch = (searchQuery) => [\n {\n filter: 'containsWordStartingWith',\n fieldName: 'tags',\n values: [searchQuery]\n }\n];\n\nconst getQuery = (searchQuery) =>\n searchQuery ? `?filter=${buildFilterQueryString()(filtersWithSearch(searchQuery))}` : '';\n\nconst body = [\n {\n fieldName: 'tags',\n orderType: 'reversedCount'\n }\n];\n\nconst getSuggestions = (searchQuery) =>\n getFacets({query: getQuery(searchQuery), body}).then((response) => Object.keys(response.tags));\n\nconst Tags = ({className, values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const handleChange = useCallback(\n (tags) => {\n onChange({\n value: tags,\n attributeType: EntityAttrTypes.tags,\n uri: entityUri\n });\n },\n [onChange, entityUri]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.tags});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <TypeaheadEditor\n fullWidth\n multiple\n variant=\"filled\"\n className={className}\n value={values || []}\n onChange={handleChange}\n getSuggestions={getSuggestions}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n\nexport default Tags;\n","import React, {useCallback, useRef, useState} from 'react';\nimport {\n AttributeType,\n createNewAttribute,\n EntityAttrTypes,\n isEditableMode as checkIsEditableMode,\n Mode,\n isEmptyValue,\n isActivenessAttrType,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {pipe, T} from 'ramda';\nimport {Box as Box} from '@material-ui/core';\nimport Title from '../../../Title/Title';\nimport Cardinality from './CardinalityMessage';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Attribute from '../AttributesFactory/Attribute';\nimport {Roles} from '../Roles/Roles';\nimport Tags from '../Tags';\nimport {useStyles} from './styles';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\nimport {withContext} from '../../../../HOCs';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n parentUri: string;\n mode: Mode;\n errorMessage?: string;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n showEmptyEditors?: boolean;\n hasDeletions?: boolean;\n setHasDeletions?: (attrTypeUri: string, value: boolean) => void;\n};\n\nexport const SpecialRenderer = ({\n values,\n attributeType,\n parentUri,\n mode,\n errorMessage,\n onDeleteAttribute,\n onChangeAttribute,\n showEmptyEditors,\n hasDeletions: hasDeletionsProp,\n setHasDeletions,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const {label, required: isRequired, cardinality} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n const [hasDeletionsState, setHasDeletionsState] = useState(false);\n const updateHasDeletions = useCallback(\n (value: boolean) => {\n setHasDeletionsState(value);\n setHasDeletions?.(attributeType.uri, value);\n },\n [attributeType.uri, setHasDeletions]\n );\n const hasDeletions = hasDeletionsProp !== undefined ? hasDeletionsProp : hasDeletionsState;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onDelete = useCallback(pipe(onDeleteAttribute, T, updateHasDeletions), [\n onDeleteAttribute,\n updateHasDeletions\n ]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = !hasDeletions && showEmptyEditors && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const renderValue = () => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n case EntityAttrTypes.roles.uri:\n return <Roles values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n default: {\n //startDate, endDate\n const value = {\n ...emptyEditorValue.current,\n value: values[0] || ''\n };\n return (\n <Attribute\n attributeValue={value}\n attributeType={attributeType}\n mode={mode}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n {...otherProps}\n />\n );\n }\n }\n };\n\n if (isActivenessAttrType(attributeType) && isEmptyValues && !showEmpty) {\n return null;\n }\n\n return (\n <Box className={styles.wrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} />}\n <Box className={styles.attributesWrapper}>{renderValue()}</Box>\n </Box>\n );\n};\n\nexport default withContext(\n HasDeletionsContext,\n (contextValue, {attributeType}) => {\n const {hasDeletionsMap, setHasDeletions} = contextValue || {};\n return {\n hasDeletions: hasDeletionsMap ? Boolean(hasDeletionsMap[attributeType?.uri]) : undefined,\n setHasDeletions\n };\n },\n SpecialRenderer\n);\n","import React, {memo} from 'react';\nimport {\n ImageAttributeValue,\n isImage,\n isOv,\n isSpecialAttribute,\n Mode,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {always, cond, T, partition} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport AttributeRenderer from './AttributeRenderer';\nimport {AttributePagerProps} from './index';\nimport SpecialRenderer from './SpecialRenderer';\nimport {useStyles} from './styles';\nimport Title from '../../../Title/Title';\n\nenum RENDERER_TYPES {\n imageLine = 'imageLine',\n special = 'special',\n default = 'default'\n}\n\nconst AttributesPager = ({\n values,\n attributeType,\n mode = Mode.Viewing,\n crosswalks,\n drawLines,\n paging = {},\n parentUri,\n errors,\n errorMessage,\n max = Infinity,\n showEmptyEditors,\n showNonOv,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: AttributePagerProps) => {\n const styles = useStyles();\n const partitionByOv = partition(isOv);\n const [ovValues, nonOvValues] = partitionByOv(values);\n\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n\n const commonProps = {\n errorMessage,\n errors,\n mode,\n parentUri,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n showEmptyEditors\n };\n\n const renderAttribute = () => {\n const type: RENDERER_TYPES = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [T, always(RENDERER_TYPES.default)]\n ])(attributeType);\n\n switch (type) {\n case RENDERER_TYPES.special: {\n return (\n <BranchDecorator enabled={drawLines}>\n <SpecialRenderer\n values={visibleValues as string[] | number[]}\n attributeType={attributeType}\n {...commonProps}\n />\n </BranchDecorator>\n );\n }\n case RENDERER_TYPES.imageLine:\n return (\n <BranchDecorator enabled={drawLines}>\n <div className={styles.wrapper}>\n <Title label={attributeType?.label} data-reltio-id=\"reltio-attribute-label\" />\n <ImageAttributesLine\n attributeValues={visibleValues as ImageAttributeValue[]}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={onChangeAttribute}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </div>\n </BranchDecorator>\n );\n default:\n return (\n <AttributeRenderer\n values={\n visibleValues as (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[]\n }\n attributeType={attributeType}\n max={max}\n paging={paging}\n crosswalks={crosswalks}\n drawLines={drawLines}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n nonVisibleValues={nonVisibleValues}\n {...commonProps}\n />\n );\n }\n };\n\n return renderAttribute();\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeError,\n AttributeType,\n Crosswalk,\n getAttributePagerActiveTypeErrorMessage,\n ImageAttributeValue,\n Mode,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport AttributesPager from './AttributesPager';\nimport CardinalityMessage from './CardinalityMessage';\n\ntype StateProps = {\n errorMessage: string;\n errors: AttributeError[];\n max: number;\n};\n\ntype DispatchProps = {\n onDeactivateError: (id: string) => void;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\ntype OwnProps = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | ImageAttributeValue\n | string\n | number\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n mode?: Mode;\n crosswalks?: Crosswalk[];\n parentUri: string;\n drawLines: boolean;\n max?: number;\n showEmptyEditors: boolean;\n showNonOv?: boolean;\n onAddAttributes: (params: AttributeItem[]) => void;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n additionalControlsRenderer?: (props) => JSX.Element;\n};\n\nexport type AttributePagerProps = StateProps & DispatchProps & OwnProps;\n\nconst mapStateToProps = (state, {parentUri, attributeType, max}: OwnProps): StateProps => ({\n errors: mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType),\n errorMessage: getAttributePagerActiveTypeErrorMessage(\n parentUri,\n attributeType,\n mdmModule.selectors.getProfileErrors(state)\n ),\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps: DispatchProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {AttributesPager, CardinalityMessage};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n caption: {\n fontSize: '0.7rem',\n opacity: 0.54\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start'\n },\n attributesWrapper: {\n width: '100%',\n marginBottom: '10px'\n },\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n },\n title: {\n fontSize: '12px',\n lineHeight: '14px',\n paddingLeft: '12px',\n color: theme.palette.text.secondary\n },\n typeError: {\n marginLeft: '12px'\n },\n ovIcon: {\n marginLeft: '8px',\n marginTop: '-1px',\n textIndent: 0\n },\n titleWrapper: {\n flex: 1,\n paddingBottom: '3px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n editor: {\n display: 'flex',\n flex: 1,\n height: '36px',\n alignItems: 'center'\n },\n label: {\n flex: 1,\n marginLeft: '2px',\n marginTop: '2px',\n fontSize: '13px',\n lineHeight: '15px'\n },\n actions: {\n display: 'flex',\n alignItems: 'center'\n },\n titleContainer: {\n display: 'flex',\n flex: 1,\n minHeight: '20px'\n },\n expandButton: {\n marginTop: '2px'\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n },\n errorWrapperHelperText: {\n marginLeft: 0\n }\n}));\n","import React, {useMemo, useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {\n checkCanDeleteAttribute,\n isReltioCrosswalk,\n isTempUri,\n ComplexAttributeType,\n ReferenceAttributeValueType,\n NestedAttributeValueType,\n AttributeTypeType,\n getErrorMessage,\n hasAttributeDescendantsWithErrors,\n isAnalyticAttribute\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport AttributesList from '../AttributesList/AttributesList';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\n\nconst ComplexAttribute = ({\n label,\n attributeTypesList,\n attributeType,\n attributeValue,\n children,\n errors,\n ownError,\n mode,\n metadata,\n crosswalks,\n lazy,\n showEmptyEditors,\n onAddOneMore,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n additionalControlsRenderer,\n hideDeleteButton,\n state,\n showNonOv,\n expanded: expandedProp = false\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const uri = attributeValue.uri;\n const isNew = isTempUri(uri);\n const defaultExpand = isNew || expandedProp;\n const [expanded, setExpanded] = useState(defaultExpand);\n useEffect(() => {\n setExpanded(defaultExpand);\n }, [defaultExpand]);\n const canDelete = useMemo(\n () =>\n checkCanDeleteAttribute({\n attributeType,\n attributeValue,\n mode,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, metadata, crosswalks]\n );\n const showDeleteButton = !deleted && !hideDeleteButton && !!onDeleteAttribute && canDelete;\n const onDeleteThis = () => onDeleteAttribute({uri, attributeType, attributeValue});\n\n const hasDescendantsWithErrors = useMemo(() => hasAttributeDescendantsWithErrors(attributeValue, errors), [\n errors,\n attributeValue\n ]);\n useEffect(() => {\n if (hasDescendantsWithErrors) {\n setExpanded(true);\n }\n }, [errors, hasDescendantsWithErrors]);\n useEffect(() => {\n if (deleted) {\n setExpanded(false);\n }\n }, [deleted]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null\n }),\n [attributeValue, hasAnalyticValue]\n );\n\n const errorMessage =\n getErrorMessage(ownError) || (hasDescendantsWithErrors && i18n.text('Has an incorrect value')) || '';\n\n return lazy ? (\n <Button variant=\"text\" color=\"primary\" onClick={onAddOneMore}>\n Create attribute\n </Button>\n ) : (\n <>\n <div className={styles.editor}>\n <div className={styles.titleContainer}>\n <ArrowExpandButton\n onClick={() => setExpanded((value) => !value)}\n expanded={expanded}\n className={styles.expandButton}\n disabled={deleted}\n />\n <ErrorWrapper errorMessage={errorMessage} classes={{helperText: styles.errorWrapperHelperText}}>\n <div\n className={classnames(styles.label, {[styles.deleted]: deleted})}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </div>\n </ErrorWrapper>\n </div>\n <div className={styles.actions}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && <SmallIconButton icon={DeleteIcon} onClick={onDeleteThis} size=\"L\" />}\n </div>\n </div>\n {expanded && (\n <AttributesList\n parentAttributeType={attributeType}\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n showEmptyEditors={showEmptyEditors || isNew}\n drawLines={true}\n parentUri={uri}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </>\n );\n};\n\nComplexAttribute.propTypes = {\n label: PropTypes.string,\n children: PropTypes.node,\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n ...ComplexAttributeType\n};\n\nexport default ComplexAttribute;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AttributesList from '../AttributesList';\nimport {ModeType} from '@reltio/mdm-sdk';\n\nconst defaultAttributeTypesSelectionStrategy = (entityType) => entityType && entityType.attributes;\n\nconst EntityCreator = ({\n entity,\n entityType,\n attributeTypesSelectionStrategy = defaultAttributeTypesSelectionStrategy,\n mode,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute\n}) => {\n const attributeTypes = useMemo(() => attributeTypesSelectionStrategy(entityType), [\n attributeTypesSelectionStrategy,\n entityType\n ]);\n return entity ? (\n <AttributesList\n key={entity.uri}\n attrTypes={attributeTypes}\n entity={entity}\n showEmptyEditors={true}\n drawLines={true}\n parentUri={entity.uri}\n mode={mode}\n crosswalks={entity.crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n ) : null;\n};\n\nEntityCreator.propTypes = {\n entityUri: PropTypes.string, // used for connect\n parentUri: PropTypes.string, // used for validation\n entity: PropTypes.object,\n entityType: PropTypes.object,\n attributeTypesSelectionStrategy: PropTypes.func,\n mode: ModeType,\n onAddAttributes: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func\n};\n\nexport default EntityCreator;\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport EntityCreator from './EntityCreator';\n\nconst mapStateToProps = (state, ownProps) => ({\n entity: ownProps.entityUri && mdmModule.selectors.getModifiedEntity(state, ownProps.entityUri)\n});\n\nconst mapDispatchToProps = {\n onAddAttributes: profile.actions.addAttributes,\n onDeleteAttribute: profile.actions.removeAttribute,\n onChangeAttribute: profile.actions.modifyAttribute\n};\n\nexport {EntityCreator};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EntityCreator);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n entityContainer: {\n display: 'flex',\n alignItems: 'center',\n height: '32px',\n minHeight: '32px',\n padding: 0\n },\n entityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.87)',\n cursor: 'pointer',\n lineHeight: '15px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n emptyEntityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.6)',\n lineHeight: '15px',\n marginLeft: '16px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n cursor: 'default'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '8px',\n marginRight: '11px'\n },\n entitySecondaryLabel: {\n color: 'rgba(0,0,0,0.6)'\n }\n});\n\nexport const useSingleValueStyles = makeStyles((theme) => ({\n singleValue: {\n color: 'rgba(0, 0, 0, 0.87)',\n fontSize: '14px',\n paddingTop: '18px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n linkValue: {\n cursor: 'pointer',\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n\nexport const useGroupStyles = makeStyles((theme) => ({\n addLabel: {\n color: theme.palette.primary.main,\n display: 'flex',\n fontWeight: '500',\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n groupHeading: {\n fontSize: '13px',\n height: '36px',\n padding: '0 16px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n addIcon: {\n height: '18px',\n width: '18px',\n padding: '0 9px'\n }\n}));\n\nexport const useClearIconStyles = makeStyles({\n clearIcon: {\n cursor: 'pointer',\n height: '20px',\n width: '20px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst EntityOption = ({innerRef, innerProps, selectOption, data}) => {\n const styles = useStyles();\n const {uri, entityType, label, secondaryLabel} = data;\n if (uri !== '') {\n return (\n <MenuItem\n className={styles.entityContainer}\n ref={innerRef}\n key={uri}\n onClick={() => selectOption({label, uri, entityType})}\n {...innerProps}\n >\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <span className={styles.entityLabel}>\n {label}\n {secondaryLabel && <span className={styles.entitySecondaryLabel}>, {secondaryLabel}</span>}\n </span>\n </MenuItem>\n );\n } else {\n return (\n <MenuItem className={styles.entityContainer} ref={innerRef} key={uri} {...innerProps} disabled={true}>\n <span className={styles.emptyEntityLabel}>{i18n.text('No results found')}</span>\n </MenuItem>\n );\n }\n};\n\nEntityOption.propTypes = {\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n innerProps: PropTypes.object.isRequired,\n selectOption: PropTypes.func.isRequired,\n data: PropTypes.shape({\n uri: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n entityType: EntityType.isRequired\n })\n};\n\nexport default EntityOption;\n","import React, {useContext} from 'react';\nimport {always, pipe} from 'ramda';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {useSingleValueStyles} from './styles';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getEntityLink, getLabel, isTempUri} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ViewIdContext} from '../../../../../contexts/ViewIdContext';\n\nconst SingleValue = (props) => {\n const {\n selectProps: {currentEntityType, menuIsOpen, disableLinkClick},\n children,\n data\n } = props;\n\n const styles = useSingleValueStyles();\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n\n const handleOnMouseDown = (event) => {\n event.stopPropagation();\n if (!disableLinkClick) {\n pipe(always({uri: data.entityUri, viewId}), ui.actions.openEntity, dispatch)();\n }\n };\n\n const valueProps = isTempUri(data.entityUri)\n ? {\n className: styles.singleValue,\n component: 'span'\n }\n : {\n className: classnames(styles.singleValue, styles.linkValue),\n onMouseDown: handleOnMouseDown,\n onClick: (e) => e.preventDefault(),\n href: getEntityLink({uiPath, uri: data.entityUri}),\n component: 'a'\n };\n\n return (\n !menuIsOpen && (\n <Typography {...valueProps}>\n {isTempUri(data.entityUri)\n ? i18n.text(`New ${currentEntityType.label} will be created`)\n : getLabel(children)}\n </Typography>\n )\n );\n};\n\nSingleValue.propTypes = {\n children: PropTypes.string,\n data: PropTypes.object.isRequired,\n selectProps: PropTypes.object.isRequired\n};\n\nexport default SingleValue;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport {useClearIconStyles} from './styles';\nimport {IconButton as IconButton} from '@material-ui/core';\n\nconst ClearIndicator = (props) => {\n const {\n selectProps: {onClear}\n } = props;\n\n const styles = useClearIconStyles();\n\n return (\n <IconButton onClick={onClear}>\n <ClearIcon className={styles.clearIcon} />\n </IconButton>\n );\n};\n\nClearIndicator.propTypes = {\n selectProps: PropTypes.object.isRequired\n};\n\nexport default ClearIndicator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {components} from 'react-select';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useGroupStyles} from './styles';\n\nconst {Group: ComponentsGroup} = components;\n\nconst Group = (props) => {\n const {\n selectProps: {inputValue, onCreate},\n data,\n children\n } = props;\n\n const styles = useGroupStyles();\n\n return (\n <ComponentsGroup {...props}>\n <div className={styles.groupHeading}>\n <span>{data.label}</span>\n {onCreate && (\n <span onClick={() => onCreate(inputValue, data.entityType)} className={styles.addLabel}>\n <AddIcon className={styles.addIcon} />\n {i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${data.label}`)}\n </span>\n )}\n </div>\n {children}\n </ComponentsGroup>\n );\n};\n\nGroup.propTypes = {\n selectProps: PropTypes.object.isRequired,\n data: PropTypes.object,\n children: PropTypes.array\n};\n\nexport default Group;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n creatorWrapper: {\n marginTop: '20px'\n }\n});\n","import React, {useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {isEmpty, prop} from 'ramda';\nimport {\n typeAheadSearch,\n getEntityType,\n MetadataType,\n ConnectionEntityType,\n ModeType,\n isTempUri,\n getLabel\n} from '@reltio/mdm-sdk';\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\nimport EntityOption from './components/EntityOption';\nimport SingleValue from './components/SingleValue';\nimport ClearIndicator from './components/ClearIndicator';\nimport EntityCreator from '../EntityCreator';\nimport {EmptyStub} from '../../../../core';\nimport Group from './components/Group';\nimport {useStyles} from './styles';\n\nconst buildEntityOptions = (entityTypes, onCreate) => (entities) => {\n const newOptions = entities.map((entity) => ({\n ...entity,\n label: getLabel(entity.label),\n entityType: entityTypes.find(({uri}) => uri === entity.type)\n }));\n\n const addDummyOptionToEmptyOptionList = (options) =>\n isEmpty(options)\n ? [\n {\n label: '',\n uri: '',\n entityType: {}\n }\n ]\n : options;\n\n const filteredEntityTypes = onCreate\n ? entityTypes\n : entityTypes.filter((type) => {\n return newOptions.some((option) => option.type === type.uri);\n });\n\n return filteredEntityTypes.length > 1\n ? filteredEntityTypes.map((type) => {\n return {\n label: type.label,\n entityType: type.uri,\n options: addDummyOptionToEmptyOptionList(newOptions.filter((option) => option.type === type.uri))\n };\n })\n : addDummyOptionToEmptyOptionList(newOptions);\n};\n\nconst EntitySelector = ({\n entity = {},\n entityTypesUris = [],\n mode,\n max,\n onChange,\n onCreate,\n metadata,\n globalSearchRequestOptions,\n attributeTypesSelectionStrategy,\n disableLinkClick = false,\n ...otherProps\n}) => {\n const styles = useStyles();\n const [inputValue, setInputValue] = useState('');\n\n const entityTypes = useMemo(() => entityTypesUris.map((type) => getEntityType(metadata, type)), [\n entityTypesUris,\n metadata\n ]);\n\n const options = {...globalSearchRequestOptions, max};\n\n const handleCreate = onCreate\n ? (value, entityTypeUri) => {\n onCreate(entityTypeUri || entityTypesUris[0], value);\n setInputValue('');\n }\n : undefined;\n\n const handleInputChange = (value) => {\n setInputValue(value);\n };\n\n const handleChange = (value) => {\n if (value !== null) {\n setInputValue('');\n onChange(value);\n }\n };\n\n const handleClear = () => {\n handleChange({});\n };\n\n const groupMode = useMemo(() => entityTypes.length !== 1, [entityTypes]);\n\n const getOptions = (value) =>\n typeAheadSearch(entityTypes, value, options).then(buildEntityOptions(entityTypes, onCreate));\n const currentEntityType = (isEmpty(entity) ? entityTypes[0] : getEntityType(metadata, entity.entityType)) || {};\n const createLabel =\n onCreate && i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${currentEntityType.label}`);\n const label = i18n.text(`Select ${entityTypes.length === 1 ? `${entityTypes[0].label} ` : ''}profile`);\n const isTempEntity = !isEmpty(entity) && isTempUri(entity.entityUri);\n const groupComponent = groupMode ? {Group, GroupHeading: EmptyStub} : {};\n const clearComponent = isTempEntity ? {ClearIndicator} : {};\n\n const {TextFieldProps, ...dropDownSelectorProps} = otherProps;\n\n const textFieldProps = useMemo(\n () => ({\n ...(TextFieldProps || {}),\n ['data-reltio-id']: 'reltio-entity-selector'\n }),\n [TextFieldProps]\n );\n return (\n <>\n <DropDownSelector\n value={!isEmpty(entity) ? entity : undefined}\n inputValue={inputValue}\n onInputChange={handleInputChange}\n getOptions={getOptions}\n getOptionLabel={prop('entityLabel')}\n onChange={handleChange}\n onCreate={handleCreate}\n onClear={handleClear}\n label={label}\n createLabel={createLabel}\n components={{\n Option: EntityOption,\n SingleValue: SingleValue,\n ...groupComponent,\n ...clearComponent\n }}\n currentEntityType={currentEntityType}\n isClearable={true}\n disableLinkClick={disableLinkClick}\n TextFieldProps={textFieldProps}\n {...dropDownSelectorProps}\n />\n {isTempEntity && (\n <div className={styles.creatorWrapper}>\n <EntityCreator\n mode={mode}\n attributeTypesSelectionStrategy={attributeTypesSelectionStrategy}\n entityType={currentEntityType}\n entityUri={entity.entityUri}\n />\n </div>\n )}\n </>\n );\n};\n\nEntitySelector.propTypes = {\n entity: ConnectionEntityType,\n entityTypesUris: PropTypes.arrayOf(PropTypes.string),\n max: PropTypes.number,\n mode: ModeType,\n dispatch: PropTypes.func,\n metadata: MetadataType,\n onChange: PropTypes.func.isRequired,\n onCreate: PropTypes.func,\n attributeTypesSelectionStrategy: PropTypes.func,\n globalSearchRequestOptions: PropTypes.object,\n disableLinkClick: PropTypes.bool\n};\n\nexport default EntitySelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '328px'\n },\n paper: {\n width: '100%',\n height: '40px',\n display: 'flex',\n alignItems: 'center',\n boxShadow: 'none',\n backgroundColor: 'rgba(0,0,0,0.03)'\n },\n inputRoot: {\n flex: 1\n },\n input: {\n padding: '0 12px',\n fontSize: '14px',\n '&:placeholder': {\n color: theme.palette.text.secondary\n }\n },\n errorMessage: {\n marginTop: '8px',\n fontSize: '12px',\n color: theme.palette.error.main\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Paper as Paper} from '@material-ui/core';\nimport {InputBase as InputBase} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n onSend: (url: string) => void;\n};\n\nconst isEmptyField = (value: string) => value.trim().length === 0;\n\nexport const ImageByUrlField = ({onSend}: Props) => {\n const styles = useStyles();\n\n const [value, setValue] = useState('');\n const [error, setError] = useState<string>(null);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n const regExp = new RegExp(/^(ftp|http|https):\\/\\/[^ \"]+$/);\n const isCorrectUrl = regExp.test(newValue);\n\n setValue(newValue);\n\n if (!isCorrectUrl && !isEmptyField(newValue)) {\n setError(i18n.text('URL is not correct'));\n } else {\n setError(null);\n }\n };\n\n const handleSend = () => {\n onSend(value);\n setValue('');\n setError(null);\n };\n\n return (\n <Box className={styles.root}>\n <Paper className={styles.paper}>\n <InputBase\n value={value}\n onChange={handleChange}\n classes={{root: styles.inputRoot, input: styles.input}}\n placeholder={i18n.text('Paste an image URL here')}\n />\n <Button\n disabled={Boolean(error) || isEmptyField(value)}\n variant=\"outlined\"\n color=\"primary\"\n onClick={handleSend}\n >\n {i18n.text('Send')}\n </Button>\n </Paper>\n {error && <Typography className={styles.errorMessage}>{error}</Typography>}\n </Box>\n );\n};\n","export const IMAGE_TYPES = ['image/png', 'image/jpeg', 'image/tiff', 'image/gif', 'image/bmp'];\nexport const MAX_IMAGE_SIZE = 20;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {IMAGE_TYPES} from '../constants';\n\ntype Props = {\n className?: string;\n onAppendFile?: (file: File) => void;\n};\n\nexport const SelectImageButton = ({className, onAppendFile}: Props) => {\n const handleInput = (e: React.FormEvent<HTMLInputElement>) => {\n if (onAppendFile) {\n onAppendFile(e.currentTarget.files[0]);\n }\n };\n\n return (\n <>\n <input\n onInput={handleInput}\n style={{display: 'none'}}\n accept={IMAGE_TYPES.join(',')}\n id=\"upload-image-button\"\n type=\"file\"\n />\n <label htmlFor=\"upload-image-button\">\n <Button className={className} variant=\"contained\" color=\"primary\" component=\"span\">\n {i18n.text('Select image')}\n </Button>\n </label>\n </>\n );\n};\n","import React from 'react';\n\nconst SvgUploadIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__c\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__d\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"67.572%\" y1=\"54.952%\" x2=\"15.212%\" y2=\"13.907%\" id=\"UploadIcon_svg__e\">\n <stop stopColor=\"#000\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#000\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__f\">\n <stop stopColor=\"#B8EDFF\" offset=\"0%\" />\n <stop stopColor=\"#53ACDE\" offset=\"100%\" />\n </linearGradient>\n <circle id=\"UploadIcon_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"UploadIcon_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#UploadIcon_svg__a\" />\n </mask>\n <use fillOpacity={0.1} fill=\"#0072CE\" xlinkHref=\"#UploadIcon_svg__a\" />\n <g mask=\"url(#UploadIcon_svg__b)\">\n <g strokeWidth={1} fill=\"none\" transform=\"translate(-1 9)\">\n <path\n d=\"M0 107.268c0 35.579 28.703 64.409 64.173 64.409h139.021c29.578 0 53.497-24.035 53.497-53.635 0-28.356-21.935-51.562-49.705-53.515C199.577 27.705 167.2 0 128.346 0 97.425 0 70.59 17.582 57.171 43.274 25.027 46.767 0 74.117 0 107.268z\"\n fill=\"#FFF\"\n opacity={0.3}\n />\n <ellipse\n fill=\"url(#UploadIcon_svg__c)\"\n opacity={0.4}\n cx={64.553}\n cy={107.664}\n rx={61.43}\n ry={62.336}\n />\n <path\n d=\"M127.979 8.91c38.773 0 70.206 31.895 70.206 71.24 0 39.346-31.433 71.241-70.206 71.241-6.067 0-11.954-.78-17.57-2.249 9.688-11.019 15.574-25.551 15.574-41.478 0-33.7-26.352-61.153-59.286-62.299C78.714 23.611 101.654 8.91 127.98 8.91z\"\n fill=\"url(#UploadIcon_svg__d)\"\n opacity={0.4}\n />\n </g>\n <path\n fill=\"url(#UploadIcon_svg__e)\"\n opacity={0.12}\n d=\"M82.093 128.474l38.374 37.966-10.666 18.958 72.714 71.94 63.578-57.537v-6.11l-71.107-70.352H97.22z\"\n transform=\"translate(-1 9)\"\n />\n <path\n fill=\"url(#UploadIcon_svg__f)\"\n d=\"M151.004 128.29v57.591h-40.836V128.29H81l49.5-49.409L180 128.29z\"\n transform=\"translate(-1 9)\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgUploadIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n padding: '36px 0 29px'\n },\n isActive: {\n backgroundColor: 'rgba(0,114,206,0.12)'\n },\n icon: {\n width: '190px',\n height: '190px',\n marginBottom: '24px'\n },\n title: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '24px'\n },\n description: {\n marginBottom: '24px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useDrop, DropTargetMonitor} from 'react-dnd';\nimport {NativeTypes} from 'react-dnd-html5-backend';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectImageButton} from '../SelectImageButton/SelectImageButton';\nimport UploadIcon from '../../../icons/UploadIcon';\nimport {MAX_IMAGE_SIZE} from '../constants';\nimport {useStyles} from './styles';\n\ntype Props = {\n onAppendFile: (file: File) => void;\n className?: string;\n};\n\nexport const TargetBox = ({onAppendFile, className}: Props) => {\n const styles = useStyles();\n\n const [{canDrop, isOver}, drop] = useDrop({\n accept: [NativeTypes.FILE],\n drop: (item) => {\n if (item) {\n // TODO remove after update react-dnd\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onAppendFile(item.files[0]);\n }\n },\n collect: (monitor: DropTargetMonitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n })\n });\n\n const isActive = canDrop && isOver;\n\n return (\n <div ref={drop} className={classnames(styles.root, {[styles.isActive]: isActive}, className)}>\n <UploadIcon className={styles.icon} />\n <Typography className={styles.title}>{i18n.text('Drag an image here')}</Typography>\n <Typography className={styles.description}>\n {i18n.text(\n 'Acceptable image types would include JPG, PNG, TIFF, GIF, BMP. Maximum image size: ${MAX_IMAGE_SIZE}Mb',\n {\n MAX_IMAGE_SIZE\n }\n )}\n </Typography>\n <SelectImageButton onAppendFile={onAppendFile} />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 30px',\n boxSizing: 'border-box'\n },\n border: {\n borderBottom: `1px solid ${theme.palette.text.primary}`,\n flex: 1,\n opacity: 0.12\n },\n text: {\n padding: '0 10px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: string;\n className?: string;\n};\n\nexport const DividerWithText = ({children, className}: Props) => {\n const styles = useStyles();\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.border} />\n <Typography className={styles.text}>{children}</Typography>\n <Box className={styles.border} />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n closeIcon: {\n color: '#fff'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {Snackbar as Snackbar} from '@material-ui/core';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n error: string | null;\n onClose?: () => void;\n};\n\nexport const ErrorSnackbar = ({error, onClose}: Props) => {\n const styles = useStyles();\n\n return (\n <Snackbar\n open={Boolean(error)}\n onClose={onClose}\n message={error}\n action={\n <SmallIconButtonWithTooltip\n className={styles.closeIcon}\n tooltipTitle={i18n.text('Close')}\n icon={CloseIcon}\n onClick={onClose}\n />\n }\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n dialogPaper: {\n position: 'relative',\n maxWidth: '480px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px',\n padding: '16px'\n },\n body: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '0 8px 49px',\n textAlign: 'center'\n },\n targetBox: {\n marginBottom: '8px'\n },\n divider: {\n marginBottom: '28px'\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {uploadImage as uploadImageRequest, ImageHostingItem} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport LinearLoadIndicator from '../LinearLoadIndicator/LinearLoadIndicator';\nimport {ImageByUrlField} from './ImageByUrlField/ImageByUrlField';\nimport {TargetBox} from './TargetBox/TargetBox';\nimport {DividerWithText} from './DividerWithText/DividerWithText';\nimport {ErrorSnackbar} from './ErrorSnackbar/ErrorSnackbar';\nimport {IMAGE_TYPES, MAX_IMAGE_SIZE} from './constants';\nimport {useStyles} from './styles';\nimport {DragAndDrop} from '../DragAndDrop/DragAndDrop';\n\ntype Props = {\n open: boolean;\n onUpload: (image: ImageHostingItem) => void;\n onClose?: () => void;\n};\n\nexport const UploadImageDialog = ({open, onClose, onUpload}: Props) => {\n const styles = useStyles();\n\n const imageServicePath = useSelector(mdm.selectors.getImageServicePath) as string;\n const environment = useSelector(mdm.selectors.getEnvironment) as string;\n const tenant = useSelector(mdm.selectors.getTenant) as string;\n\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string>(null);\n\n const uploadImage = (image: File | string) => {\n setLoading(true);\n uploadImageRequest({image, imageServicePath, environment, tenant})\n .then((res) => {\n onUpload(res);\n onClose();\n })\n .catch((err) => setError(err?.errorMessage || i18n.text('Something went wrong')))\n .finally(() => setLoading(false));\n };\n\n const handleAppendImage = (image: File) => {\n const size = Number((image.size / 1024 / 1024).toFixed(2));\n const isCorrectType = IMAGE_TYPES.includes(image.type);\n\n if (size > MAX_IMAGE_SIZE) {\n setError(i18n.text('File size exceeds configured max file size.'));\n } else if (!isCorrectType) {\n setError(i18n.text('File format is not supported.'));\n } else {\n uploadImage(image);\n }\n };\n\n const handleSendImage = (url: string) => {\n uploadImage(url);\n };\n\n return (\n <DragAndDrop>\n <Dialog open={open} onClose={onClose} classes={{paper: styles.dialogPaper}}>\n <Typography className={styles.title}>{i18n.text('Add new image')}</Typography>\n <Box className={styles.body}>\n <TargetBox className={styles.targetBox} onAppendFile={handleAppendImage} />\n <DividerWithText className={styles.divider}>{i18n.text('or')}</DividerWithText>\n <ImageByUrlField onSend={handleSendImage} />\n </Box>\n {loading && <LinearLoadIndicator />}\n <ErrorSnackbar error={error} onClose={() => setError(null)} />\n </Dialog>\n </DragAndDrop>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n width: '100%',\n marginBottom: '10px'\n },\n image: ({imageMargin}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n uploadContainer: ({imageMargin, imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n border: '1px dashed #0072CE',\n boxSizing: 'border-box',\n marginRight: imageMargin,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0\n };\n },\n uploadButton: {\n width: '50px',\n height: '50px'\n },\n uploadIcon: {\n fontSize: '36px'\n }\n}));\n","import ImageAttributesLine from './ImageAttributesLine';\n\nexport default ImageAttributesLine;\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n generateUri,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n ImageHostingItem,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport Image from '../../../Image/Image';\nimport ImageActionsOverlay from '../../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {SmallIconButton} from '../../../SmallIconButton';\nimport {UploadImageDialog} from '../../../UploadImageDialog/UploadImageDialog';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {ImageRenderProps, RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n parentUri: string;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType = {} as AttributeType,\n attributeValues = [],\n onDeleteAttribute,\n onChangeAttribute,\n requestNextPageOfAttributeValues,\n parentUri,\n paging,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const defaultProfilePic = useSelector((state) =>\n mdmModule.selectors.getModifiedEntityDefaultProfilePic(state, entity.uri)\n );\n const dispatch = useDispatch();\n const [isVisibleUploadDialog, setIsVisibleUploadDialog] = useState(false);\n\n const toggleVisibilityUploadDialog = useCallback(() => {\n setIsVisibleUploadDialog((visible) => !visible);\n }, []);\n\n const handleAddAttributes = useCallback(\n (image: ImageHostingItem) => {\n const uri = generateUri(parentUri, attributeType.name);\n const attributeValue: ImageAttributeValue['value'] = {};\n for (const key in image) {\n const attribute = (attributeType.attributes || []).find(({name}) => name === key);\n if (attribute) {\n attributeValue[key] = [\n {\n uri: generateUri(uri, attribute.name),\n ov: true,\n value: image[key],\n type: attribute.uri\n }\n ];\n }\n }\n onChangeAttribute({attributeType, uri, value: attributeValue});\n },\n [onChangeAttribute, parentUri, attributeType]\n );\n\n const handleDeleteAttribute = useCallback(\n (param: AttributeItem) => {\n onDeleteAttribute(param);\n if (defaultProfilePic === param.uri) {\n const newDefaultPic = attributeValues[0]?.uri === param.uri ? attributeValues[1] : attributeValues[0];\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: newDefaultPic || ({} as ImageAttributeValue)\n })\n );\n }\n },\n [onDeleteAttribute, entity, defaultProfilePic, attributeValues]\n );\n\n const renderImageActionsOverlay = (methods: ImageRenderProps, attribute: ImageAttributeValue) => {\n const {onOpenImageGalleryDialog, onDownload, onShareLink, onSetAsDefault} = methods;\n const imageUrl = getImageAttributeOvUrl(attribute);\n const {uri} = attribute;\n\n return (\n <ImageActionsOverlay\n id={uri}\n onShareLink={() => onShareLink(imageUrl)}\n onSetAsDefault={() => onSetAsDefault(attribute)}\n onDelete={() => handleDeleteAttribute({uri, attributeType})}\n onDownload={() => onDownload([imageUrl])}\n onClick={() => onOpenImageGalleryDialog(uri)}\n />\n );\n };\n\n const renderImage: RenderImage = (methods: ImageRenderProps) => {\n const renderImage = (attribute: ImageAttributeValue = {} as ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const {onOpenImageGalleryDialog} = methods;\n\n return (\n <div className={styles.image} key={uri}>\n <Image\n src={src}\n overlay={renderImageActionsOverlay(methods, attribute)}\n onClick={() => onOpenImageGalleryDialog(uri)}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n data-reltio-id=\"reltio-attribute-value\"\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <div className={styles.root}>\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n overlay\n countFixedItems={1}\n onUpload={toggleVisibilityUploadDialog}\n onDeleteAttribute={handleDeleteAttribute}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n >\n <div className={styles.uploadContainer} onClick={toggleVisibilityUploadDialog}>\n <SmallIconButton\n className={styles.uploadButton}\n iconClassName={styles.uploadIcon}\n icon={CloudUploadIcon}\n />\n </div>\n </ImageAttributesLineCommon>\n <UploadImageDialog\n open={isVisibleUploadDialog}\n onUpload={handleAddAttributes}\n onClose={toggleVisibilityUploadDialog}\n />\n </div>\n );\n};\n\nexport default ImageAttributesLine;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n moreAttributes: {\n display: 'flex',\n paddingBottom: '6px',\n '&$dense': {\n padding: 0\n }\n },\n dense: {},\n popupContainer: {},\n moreAttributesPopup: {\n '&$popupContainer': {}\n },\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n subHeader: {\n backgroundColor: 'rgb(245, 245, 245)',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n },\n noResultsCaptionContainer: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n }\n});\n","import {AttributeType} from '@reltio/mdm-sdk';\nimport {curry, filter, map, pipe} from 'ramda';\nimport {GroupedItem} from './useMoreAttributesItems';\n\nconst filterItems = curry((filterText: string, items: AttributeType[]): AttributeType[] => {\n return filter((item: AttributeType) => (item.label || item.name).toLowerCase().includes(filterText.toLowerCase()))(\n items\n );\n});\n\ntype Props = {\n attrTypes: AttributeType[];\n filter?: string;\n};\n\nconst preparedGroupedItems = ({attrTypes, filter = ''}: Props): GroupedItem[] =>\n pipe(\n filterItems(filter),\n map((attrType: AttributeType) => ({\n item: {\n id: attrType.uri,\n label: attrType.label || attrType.name,\n attrType\n }\n }))\n )(attrTypes);\n\nexport {preparedGroupedItems};\n","import {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport {flattenGroupedItemsData} from '../../../VirtualGroupedList/helpers';\nimport {preparedGroupedItems} from './helpers';\n\nenum GROUP_NAMES {\n parent = 'parent',\n attributes = 'attributes'\n}\n\ntype Props = {\n data: AttributeType[];\n parent?: AttributeType;\n filter?: string;\n};\n\ntype Item = {\n id: string;\n label: string;\n attrType?: AttributeType;\n};\n\nexport type GroupedItem = {\n item: Item;\n items?: GroupedItem[];\n};\n\nexport const useMoreAttributesItems = ({data, parent, filter}: Props) => {\n const hasGroups = Boolean(parent);\n\n const preparedParentGroupItem = useMemo(\n () => (hasGroups ? preparedGroupedItems({attrTypes: [parent], filter}) : []),\n [hasGroups, parent, filter]\n );\n const parentGroup: GroupedItem[] = useMemo(\n () =>\n hasGroups && preparedParentGroupItem?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.parent,\n label: i18n.text('Parent')\n },\n items: preparedParentGroupItem\n }\n ]\n : [],\n [hasGroups, preparedParentGroupItem]\n );\n\n const preparedAttributesGroupItems = useMemo(\n () =>\n preparedGroupedItems({\n attrTypes: data,\n filter\n }),\n [data, filter]\n );\n\n const attributesGroup = useMemo(\n () =>\n hasGroups && preparedAttributesGroupItems?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.attributes,\n label: i18n.text('Attributes')\n },\n items: preparedAttributesGroupItems\n }\n ]\n : preparedAttributesGroupItems,\n [hasGroups, preparedAttributesGroupItems]\n );\n\n const items = useMemo(() => flattenGroupedItemsData((parentGroup || []).concat(attributesGroup)), [\n parentGroup,\n attributesGroup\n ]);\n\n const parentGroupLength = parentGroup.length;\n const attributesGroupLength = attributesGroup.length;\n return {items, hasGroups, parentGroupLength, attributesGroupLength};\n};\n","import React, {useCallback, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport {always, any, append, ifElse, not, pipe, pluck, propEq, reject} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nimport SelectionPopup from '../../../SelectionPopup/SelectionPopup';\nimport AttributeListItem from '../../../AttributeListItem/AttributeListItem';\n\nimport VirtualGroupedList from '../../../VirtualGroupedList/VirtualGroupedList';\nimport {useKeyboardNavigation} from '../../../SelectionPopup/helpers';\nimport AddIcon from '@material-ui/icons/Add';\nimport Highlighter from '../../../Highlighter/Highlighter';\nimport {useMoreAttributesItems} from './useMoreAttributesItems';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\nconst LIST_CONTAINER_WIDTH = 320;\nconst MAX_LIST_CONTAINER_HEIGHT = 255;\nconst MIN_CONTAINER_HEIGHT = 140;\nconst CONTAINER_HEADER_HEIGHT = 112;\n\nconst MoreAttributesButton = ({label, popupTitle = label, data, parent, dense, onApply}) => {\n const styles = useStyles();\n const inputRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const togglePopupOpen = () => setIsOpen(!isOpen);\n const closePopup = () => setIsOpen(false);\n\n const [filter, setFilter] = useState('');\n const clearFilter = () => setFilter('');\n\n const [selectedItems, setSelectedItems] = useState([]);\n const clearSelectedItems = () => setSelectedItems([]);\n\n const {items, hasGroups, parentGroupLength, attributesGroupLength} = useMoreAttributesItems({data, parent, filter});\n\n const addSelectedAttributes = () => {\n if (selectedItems.length > 0) {\n onApply(pluck('attrType', selectedItems));\n }\n };\n\n const handleListItemClick = useCallback(\n (item, checked) => {\n setSelectedItems(ifElse(always(checked), append(item), reject(propEq('id', item.id)))(selectedItems));\n },\n [selectedItems]\n );\n\n const getItemSize = useCallback((i, item) => (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT), []);\n\n const handleSearchOnEnter = useCallback(\n ({item}) => {\n handleListItemClick(item, not(any(propEq('id', item.id))(selectedItems)));\n },\n [handleListItemClick, selectedItems]\n );\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems\n });\n\n const focusIndexRef = useRef(null);\n focusIndexRef.current = focusIndex;\n\n const groupsCount = hasGroups ? (parentGroupLength ? 1 : 0) + (attributesGroupLength ? 1 : 0) : 0;\n const itemsCount = items.length - groupsCount;\n\n const listHeight = Math.min(\n MAX_LIST_CONTAINER_HEIGHT,\n ITEM_HEIGHT * itemsCount + ITEM_GROUP_TITLE_HEIGHT * groupsCount\n );\n const containerHeight = Math.max(MIN_CONTAINER_HEIGHT, listHeight + CONTAINER_HEADER_HEIGHT);\n\n const listItemRenderer = useCallback(\n (style, {item, level = 0}, index) => {\n const isChecked = any(propEq('id', item.id))(selectedItems);\n const isFocused = focusIndexRef.current === index;\n\n return (\n <AttributeListItem\n key={item.uri}\n onClick={handleListItemClick}\n checked={isChecked}\n level={level}\n data={item}\n label={<Highlighter text={item.label} highlight={filter} />}\n labelInText={item.label}\n style={style}\n isFocused={isFocused}\n isRequired={!!item.attrType?.required}\n LogoIcon={item.LogoIcon}\n />\n );\n },\n [filter, handleListItemClick, selectedItems]\n );\n\n const renderGroupTitle = useCallback(\n (style, item) => (\n <ListItem component={'div'} className={styles.subHeader} style={style} key={`group-${item.item.id}`}>\n {item.item.label}\n </ListItem>\n ),\n []\n );\n\n return (\n <div className={classnames(styles.moreAttributes, {[styles.dense]: dense})}>\n <Button color=\"primary\" onClick={togglePopupOpen} ref={inputRef} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{label}</div>\n </Button>\n <SelectionPopup\n open={isOpen}\n className={classnames(styles.moreAttributesPopup, styles.popupContainer)}\n anchorEl={inputRef.current}\n onClose={pipe(addSelectedAttributes, closePopup, clearFilter, clearSelectedItems)}\n onSearch={setFilter}\n containerHeight={containerHeight}\n title={popupTitle}\n containerWidth={LIST_CONTAINER_WIDTH}\n searchInputOnKeyDown={handleKeyDown}\n >\n <VirtualGroupedList\n getItemSize={getItemSize}\n renderItem={listItemRenderer}\n renderGroupTitle={renderGroupTitle}\n items={items}\n height={listHeight}\n containerWidth={LIST_CONTAINER_WIDTH}\n focusIndex={focusIndex}\n />\n {items.length === 0 && (\n <div className={styles.noResultsCaptionContainer}>\n <Typography variant=\"caption\" display=\"block\" gutterBottom>\n {i18n.text('No results found')}\n </Typography>\n </div>\n )}\n </SelectionPopup>\n </div>\n );\n};\n\nMoreAttributesButton.propTypes = {\n label: PropTypes.string,\n popupTitle: PropTypes.string,\n data: PropTypes.array,\n parent: PropTypes.object,\n dense: PropTypes.bool,\n onApply: PropTypes.func\n};\n\nexport default MoreAttributesButton;\n","import React, {memo} from 'react';\nimport {evaluateDeepEntityLabel, getLabel, NestedAttributeType} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\n\nconst NestedAttribute = (props) => {\n const {attributeValue, attributeType} = props;\n const label = evaluateDeepEntityLabel(attributeValue, attributeType.dataLabelPattern);\n\n return (\n <ComplexAttribute\n label={getLabel(label)}\n attributeTypesList={attributeType.attributes || attributeType.analyticsAttributes}\n {...props}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n item: {\n marginBottom: '20px'\n },\n dense: {\n marginBottom: 0\n }\n});\n","import React, {memo, useMemo, useCallback, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {identity, pipe, isEmpty} from 'ramda';\nimport {\n evaluateDeepEntityLabel,\n ReferenceAttributeType,\n referencedEntityAttributeTypesSelectionStrategy,\n getEntityType,\n getReferencedEntityFromAttrValue,\n getReferencedRelationFromAttrValue,\n getReferencedEntityUri,\n getReferencedEntityTypeUri,\n getReferencedEntityTypeUriFromAttrType,\n getReferencedRelationAttrTypesUris,\n findAttributeTypeByUri,\n getCreatableAttributeTypes,\n createTemporaryEntity,\n convertReferencedEntityForAttrValue,\n createReferencedRelationForAttrValue,\n addReferencedRelationCrosswalks,\n getReferencedEntityUriFromAttrValue,\n checkCanEditAttribute,\n checkMetadataForCreate,\n isReltioCrosswalk,\n getErrorMessage,\n EntityType,\n MetadataType,\n getErrorId,\n getReferencedEntityActiveError,\n isTempUri,\n getLabel\n} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport EntitySelector from '../EntitySelector/EntitySelector';\nimport {ErrorWrapper} from '../../../index';\nimport {useStyles} from './styles';\n\nconst ReferenceAttribute = (props) => {\n const styles = useStyles();\n const {\n modifiedEntity,\n metadata,\n globalSearchRequestOptions,\n onDeleteModifiedEntity,\n onUpdateModifiedEntity,\n onDeactivateError,\n ...ownProps\n } = props;\n const {attributeValue, attributeType, mode, crosswalks, errors, onChangeAttribute} = ownProps;\n const initialAttributeValue = useRef(attributeValue);\n const referencedEntity = getReferencedEntityFromAttrValue(attributeValue);\n const referencedRelation = getReferencedRelationFromAttrValue(attributeValue);\n const referencedEntityTypeUri = getReferencedEntityTypeUriFromAttrType(attributeType);\n const referencedEntityType = getEntityType(metadata, referencedEntityTypeUri);\n const label = modifiedEntity\n ? evaluateDeepEntityLabel(modifiedEntity, referencedEntityType.dataLabelPattern)\n : attributeValue.label;\n const entityTypesUris = useMemo(() => [referencedEntityTypeUri], [referencedEntityTypeUri]);\n\n const allCrosswalks = useMemo(() => addReferencedRelationCrosswalks(crosswalks, referencedRelation), [\n crosswalks,\n referencedRelation\n ]);\n\n const referencedEntityMissedError = useMemo(() => getReferencedEntityActiveError(attributeValue, errors), [\n attributeValue,\n errors\n ]);\n\n const selectedEntity = useMemo(\n () =>\n referencedEntity && {\n entityUri: getReferencedEntityUri(referencedEntity),\n entityType: getReferencedEntityTypeUri(referencedEntity),\n entityLabel: attributeValue.label\n },\n [referencedEntity, attributeValue.label]\n );\n\n const editableAttrTypes = useMemo(\n () =>\n getReferencedRelationAttrTypesUris(attributeType)\n .map((attrTypeUri) => findAttributeTypeByUri(metadata, attrTypeUri))\n .filter(identity),\n [attributeType, metadata]\n );\n\n const newEntityAttrTypesSelectionStrategy = useCallback(\n (entityType) => referencedEntityAttributeTypesSelectionStrategy(attributeType, entityType),\n [attributeType]\n );\n\n const onChangeEntity = useCallback(\n (entity) => {\n if (modifiedEntity) {\n onDeleteModifiedEntity(modifiedEntity.uri);\n }\n const initialAttrValue = initialAttributeValue.current;\n const isInitialEntity =\n !isEmpty(entity) && entity.uri === getReferencedEntityUriFromAttrValue(initialAttrValue);\n const modifiedValue = {\n ...attributeValue,\n label: entity.label,\n refEntity: isInitialEntity ? initialAttrValue.refEntity : convertReferencedEntityForAttrValue(entity),\n refRelation: isInitialEntity\n ? initialAttrValue.refRelation\n : createReferencedRelationForAttrValue(attributeValue)\n };\n onChangeAttribute({value: modifiedValue, attributeType, uri: attributeValue.uri});\n if (referencedEntityMissedError) {\n onDeactivateError(getErrorId(referencedEntityMissedError));\n }\n },\n [\n attributeValue,\n attributeType,\n modifiedEntity,\n onChangeAttribute,\n onDeleteModifiedEntity,\n onDeactivateError,\n referencedEntityMissedError\n ]\n );\n\n const onCreateEntity = useCallback(\n (entityTypeUri, initValue) => {\n const newEntityAttrTypes = pipe(\n newEntityAttrTypesSelectionStrategy,\n getCreatableAttributeTypes(mode)\n )(referencedEntityType);\n const newEntity = createTemporaryEntity({\n entityTypeUri,\n initValue,\n attributeTypes: newEntityAttrTypes,\n metadata,\n mode\n });\n onChangeEntity(newEntity);\n onUpdateModifiedEntity(newEntity);\n },\n [\n newEntityAttrTypesSelectionStrategy,\n mode,\n referencedEntityType,\n metadata,\n onChangeEntity,\n onUpdateModifiedEntity\n ]\n );\n\n const canChangeReferencedEntity = useMemo(\n () =>\n checkCanEditAttribute({\n attributeType,\n attributeValue,\n mode,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, crosswalks]\n );\n const canCreateReferencedEntity = useMemo(() => checkMetadataForCreate(mode, referencedEntityType), [\n mode,\n referencedEntityType\n ]);\n\n const errorMessage = getErrorMessage(referencedEntityMissedError);\n\n return (\n <ComplexAttribute\n {...ownProps}\n label={getLabel(label)}\n attributeTypesList={editableAttrTypes}\n crosswalks={allCrosswalks}\n metadata={metadata}\n >\n <ErrorWrapper errorMessage={errorMessage}>\n <EntitySelector\n className={classnames(styles.item, {\n [styles.dense]: errorMessage || (selectedEntity && isTempUri(selectedEntity.entityUri))\n })}\n entity={selectedEntity || {}}\n entityTypesUris={entityTypesUris}\n max={20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n mode={mode}\n onChange={canChangeReferencedEntity ? onChangeEntity : undefined}\n onCreate={canCreateReferencedEntity ? onCreateEntity : undefined}\n metadata={metadata}\n attributeTypesSelectionStrategy={newEntityAttrTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </ComplexAttribute>\n );\n};\n\nReferenceAttribute.propTypes = {\n ...ReferenceAttributeType,\n modifiedEntity: EntityType,\n metadata: MetadataType,\n globalSearchRequestOptions: PropTypes.object,\n onDeleteModifiedEntity: PropTypes.func,\n onUpdateModifiedEntity: PropTypes.func,\n onDeactivateError: PropTypes.func\n};\n\nexport default memo(ReferenceAttribute);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport {isTempUri, getReferencedEntityUriFromAttrValue} from '@reltio/mdm-sdk';\n\nconst mapStateToProps = (state, ownProps) => {\n const entityUri = getReferencedEntityUriFromAttrValue(ownProps.attributeValue);\n return {\n modifiedEntity: isTempUri(entityUri) ? mdmModule.selectors.getModifiedEntity(state, entityUri) : null,\n metadata: mdmModule.selectors.getMetadata(state),\n globalSearchRequestOptions: mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n };\n};\n\nconst mapDispatchToProps = {\n onDeleteModifiedEntity: profile.modifiedEntities.actions.entityDeleted,\n onUpdateModifiedEntity: profile.modifiedEntities.actions.entityCreated,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReferenceAttribute);\n","import {defaultTo, isNil, map, path, pipe, prepend, reject, uniq} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n areOneHierarchyUris,\n DependentLookupsParentForApi,\n DependentLookupsStructureNode,\n filterRelatedParentValuesForDependentLookupValueUri,\n getAttributeValuePath,\n getBaseUri\n} from '@reltio/mdm-sdk';\n\nimport {ExtendedParentValue} from '../types';\n\nexport const getParents = (state, valueUri: string, node: DependentLookupsStructureNode) => {\n const parentNodesValues: ExtendedParentValue[] = node.parents.flatMap((type) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, type);\n return parentNode.values.map((value) => ({\n ...value,\n type,\n dependentLookupCode: parentNode.attrType.dependentLookupCode\n }));\n });\n const modifiedEntities = mdmModule.selectors.getModifiedEntities(state);\n const entityUri = mdmModule.selectors.getEntityUri(state);\n const connections = mdmModule.selectors.getAllRelationsToAddAndEdit(state);\n const metadata = mdmModule.selectors.getMetadata(state);\n const ownParentNodesValues = filterRelatedParentValuesForDependentLookupValueUri<ExtendedParentValue>({\n parentValues: parentNodesValues,\n valueUri,\n entityUri,\n modifiedEntities,\n connections\n });\n const possibleParentBaseTypeUris: string[] = pipe(\n getAttributeValuePath,\n defaultTo([]),\n map(pipe(path(['valueType', 'uri']), getBaseUri)),\n prepend(modifiedEntities[entityUri]?.type),\n reject(isNil),\n uniq\n )(\n {\n entityUri,\n entitiesMap: modifiedEntities,\n connections,\n metadata\n },\n valueUri\n );\n const neededParentsAttributeTypes = node.parents\n .filter((typeUri) => possibleParentBaseTypeUris.some(areOneHierarchyUris(typeUri)))\n .map((typeUri) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, typeUri);\n return parentNode.attrType;\n });\n const missedParentsAttributeTypes = neededParentsAttributeTypes.filter(\n (attrType) => !ownParentNodesValues.some(({type, value}) => value && type === attrType.uri)\n );\n const parents = Object.values<DependentLookupsParentForApi>(\n ownParentNodesValues.reduce(\n (typesMap, parent) => ({\n ...typesMap,\n [parent.dependentLookupCode]: {\n type: parent.dependentLookupCode,\n codeValues: uniq([parent.value, ...(typesMap[parent.dependentLookupCode]?.codeValues || [])])\n .filter(Boolean)\n .sort()\n }\n }),\n {}\n )\n );\n return {parents, missedParentsAttributeTypes};\n};\n","import {equals} from 'ramda';\nimport {DependentLookupEditorContext} from '../types';\n\nconst DLEditorContextCache: {\n [valueUri: string]: DependentLookupEditorContext;\n} = {};\n\nexport const fromCache = (valueUri, context) => {\n const cachedContext = DLEditorContextCache[valueUri];\n if (equals(context, cachedContext)) {\n return cachedContext;\n } else {\n if (equals(cachedContext?.parents, context.parents)) {\n context.parents = cachedContext.parents;\n }\n DLEditorContextCache[valueUri] = context;\n return context;\n }\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst marginBottom = 10;\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n errorWrapper: {\n alignSelf: 'stretch'\n },\n editor: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: `${marginBottom}px`\n },\n 'editor-value': {\n flex: '1 1 auto'\n },\n 'editor-read-only-value': {\n marginLeft: '12px',\n display: 'flex',\n alignItems: 'center'\n },\n 'editor-actions': {\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '8px'\n },\n addButton: {\n marginRight: '-8px'\n },\n button: {\n color: theme.palette.text.secondary\n },\n placeholder: {\n height: `${40 + marginBottom}px`\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport AddIcon from '@material-ui/icons/Add';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {\n AttributeErrorType,\n AttributeTypeType,\n attributeUriToSearchUri,\n checkCanCreateAttribute,\n checkCanDeleteAttribute,\n checkCanEditAttribute,\n ErrorType,\n getAttributeValue,\n getAttrDataTypeDefinition,\n getErrorId,\n getErrorMessage,\n getErrorType,\n isDependentLookupAttrType,\n isEditableMode as checkIsEditableMode,\n ModeType,\n SimpleAttributeValueType\n} from '@reltio/mdm-sdk';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport DataTypeValueEditor from '../../../editors/DataTypeValueEditor/DataTypeValueEditor';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {attributeValueToEditorValue, prepareChangeData} from './utils';\nimport withAsyncMount from '../../../../HOCs/withAsyncMount/withAsyncMount';\nimport {getDependentLookupEditorContext} from './selectors/getDependentLookupEditorContext';\n\nimport {useStyles} from './styles';\n\nconst AsyncMountPlaceholder = () => {\n const styles = useStyles();\n return <div className={styles.placeholder} />;\n};\n\nconst SimpleAttributeEditor = ({\n className,\n attributeValue,\n attributeType,\n isReltioCrosswalk,\n ownError,\n mode,\n onAddOneMore,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n state,\n ...otherProps\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const isEditableMode = checkIsEditableMode(mode);\n const dataTypeDefinition = getAttrDataTypeDefinition(attributeType);\n const value = attributeValueToEditorValue(attributeValue, dataTypeDefinition);\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n const canEdit = checkCanEditAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const canDelete = checkCanDeleteAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const showToEdit = canEdit && isEditableMode;\n const errorMessage = getErrorMessage(ownError);\n const dependentLookupEditorContext = useSelector((state) =>\n isDependentLookupAttrType(attributeType)\n ? getDependentLookupEditorContext(state, attributeValue, attributeType?.uri)\n : null\n );\n const onDelete = () => {\n onDeleteAttribute({uri: attributeValue.uri, attributeType});\n if (getErrorType(ownError) !== ErrorType.missed) {\n deactivateError();\n }\n };\n\n const deactivateError = () => {\n if (ownError) {\n onDeactivateError(getErrorId(ownError));\n }\n };\n\n const showAddButton = !!onAddOneMore && canCreate && !attributeType.singleValue;\n const showDeleteButton = !deleted && !!onDeleteAttribute && canDelete;\n const hasError = !!errorMessage;\n const deletedProps = deleted ? {disabled: true} : {};\n\n return (\n <div className={classnames(styles.editor, className)}>\n <ErrorWrapper errorMessage={errorMessage} className={styles.errorWrapper}>\n <div\n className={classnames(\n styles['editor-value'],\n {[styles.deleted]: deleted},\n {[styles['editor-read-only-value']]: !showToEdit}\n )}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {showToEdit ? (\n <DataTypeValueEditor\n fieldName={attributeUriToSearchUri(attributeType.uri)}\n value={value}\n dataTypeDefinition={dataTypeDefinition}\n error={hasError}\n onChange={pipe(\n prepareChangeData(attributeValue, attributeType),\n onChangeAttribute,\n deactivateError\n )}\n fullWidth\n {...dependentLookupEditorContext}\n {...otherProps}\n {...deletedProps}\n />\n ) : (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={dataTypeDefinition}\n />\n )}\n </div>\n </ErrorWrapper>\n <div className={styles['editor-actions']}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {showAddButton && (\n <SmallIconButton\n icon={AddIcon}\n onClick={onAddOneMore}\n size=\"L\"\n className={classnames(styles.addButton, styles.button)}\n />\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && (\n <SmallIconButton className={styles.button} icon={DeleteIcon} onClick={onDelete} size=\"L\" />\n )}\n </div>\n </div>\n );\n};\n\nSimpleAttributeEditor.propTypes = {\n className: PropTypes.string,\n attributeValue: SimpleAttributeValueType,\n attributeType: AttributeTypeType,\n ownError: AttributeErrorType,\n isReltioCrosswalk: PropTypes.bool,\n state: PropTypes.oneOf(['deleted', 'edited']),\n mode: ModeType,\n onAddOneMore: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeactivateError: PropTypes.func,\n additionalControlsRenderer: PropTypes.func\n};\n\nexport default memo(withAsyncMount(SimpleAttributeEditor, AsyncMountPlaceholder));\n","import {DependentLookupsStructureNode, isAutopopulationEnabled, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\n\nimport {DependentLookupEditorContext} from './types';\nimport {getParents} from './helpers/parents';\nimport {buildMissedParentsMessage} from './helpers/missedParentsMessage';\nimport {fromCache} from './helpers/cache';\n\nexport const getDependentLookupEditorContext = (\n state,\n attributeValue: SimpleAttributeValue,\n attributeTypeUri: string\n) => {\n const node: DependentLookupsStructureNode = mdmModule.selectors.getDependentLookupsStructureNode(\n state,\n attributeTypeUri\n );\n if (node) {\n const valueUri = attributeValue.uri;\n const {parents, missedParentsAttributeTypes} = getParents(state, valueUri, node);\n const {isBlocked = false} = mdmModule.selectors.getDependentLookupEditorState(state, valueUri) || {};\n const missedParentsMessage = buildMissedParentsMessage(missedParentsAttributeTypes);\n const autocompleteConfig = mdmModule.selectors.getLookupAutocomplete(state);\n const autopopulationEnabled = isAutopopulationEnabled(autocompleteConfig, attributeTypeUri);\n const isEmptyValue = !attributeValue?.lookupCode && !attributeValue?.value;\n const placeholder =\n (isEmptyValue && isBlocked && i18n.text('Populating values...')) ||\n (isEmptyValue && missedParentsMessage) ||\n '';\n const context: DependentLookupEditorContext = {\n parents: missedParentsMessage ? null : parents,\n disabled: (!!missedParentsMessage && isEmptyValue) || isBlocked,\n placeholder,\n autopopulationId: autopopulationEnabled ? valueUri : null\n };\n if (placeholder) {\n context.value = null;\n }\n return fromCache(valueUri, context);\n }\n};\n","import {pipe, prop} from 'ramda';\nimport i18n from 'ui-i18n';\n\nconst joinWords = (words) =>\n words.reduce((result, word, i) => [result, word].join(i === words.length - 1 ? ` ${i18n.text('and')} ` : ', '));\n\nexport const buildMissedParentsMessage = (missedAttributeTypes) =>\n missedAttributeTypes.length\n ? i18n.text('Please select value for ${labels} ${attributes}.', {\n labels: joinWords(missedAttributeTypes.map(pipe(prop('label'), (label) => `'${label}'`))),\n attributes: missedAttributeTypes.length === 1 ? i18n.text('attribute') : i18n.text('attributes')\n })\n : '';\n","import moment from 'moment';\nimport {DataTypes, getAttrDataTypeDefinition, parseBoolean} from '@reltio/mdm-sdk';\nimport {curry} from 'ramda';\nimport {utils} from '@reltio/mdm-sdk';\n\nconst attributeValueToEditorValue = (attributeValue = {}, {type}) => {\n const {value, lookupCode} = attributeValue;\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED: {\n return parseBoolean(value);\n }\n case DataTypes.TYPE_DATE:\n return (value && utils.dates.toLocalDate(value)) || null;\n case DataTypes.TYPE_LOCAL_DATE:\n case DataTypes.TYPE_TIMESTAMP:\n case DataTypes.TYPE_ACTIVENESS_DATE: {\n return (value && new Date(value)) || null;\n }\n case DataTypes.TYPE_DEPENDENT_LOOKUP:\n case DataTypes.TYPE_LOOKUP: {\n return {value, lookupCode};\n }\n default:\n return value;\n }\n};\n\nconst editorValueToAttributeValue = (attributeType, editorValue) => {\n const {type} = getAttrDataTypeDefinition(attributeType);\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED:\n return editorValue.toString();\n case DataTypes.TYPE_DATE:\n return (editorValue && moment(editorValue).format('YYYY-MM-DD')) || '';\n case DataTypes.TYPE_TIMESTAMP: {\n return (editorValue && moment(editorValue).format()) || '';\n }\n case DataTypes.TYPE_ACTIVENESS_DATE:\n case DataTypes.TYPE_LOCAL_DATE:\n return editorValue && editorValue.valueOf();\n default:\n return editorValue || '';\n }\n};\n\nconst prepareChangeData = curry((attributeValue, attributeType, editorValue) => {\n const value = editorValueToAttributeValue(attributeType, editorValue);\n return {\n value,\n uri: attributeValue.uri,\n attributeType\n };\n});\n\nexport {attributeValueToEditorValue, editorValueToAttributeValue, prepareChangeData};\n","import React from 'react';\n\nexport const HasDeletionsContext = React.createContext<{\n hasDeletionsMap: {[attrTypeUri: string]: boolean};\n setHasDeletions: (attrTypeUri: string, value: boolean) => void;\n }>(null);\n","import React from 'react';\n\nexport const PinnedAttributesContext = React.createContext<string[]>(null);\n","import {\n __,\n concat,\n defaultTo,\n flatten,\n includes,\n isNil,\n partition,\n path,\n pipe,\n props,\n propEq,\n reject,\n values\n} from 'ramda';\nimport {\n AttributeType,\n EntityAttrTypes,\n getEntityType,\n Metadata,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\n\nexport const getFilteredAttrTypes = (\n metadata: Metadata,\n type: string,\n includeUris: string[],\n excludeUris: string[]\n) => {\n const attrTypes = pipe(\n getEntityType,\n defaultTo({}),\n props(['attributes', 'analyticsAttributes']),\n reject(isNil),\n flatten,\n concat(__, pipe(values, reject(propEq('uri', EntityAttrTypes.id.uri)))(EntityAttrTypes))\n )(metadata, type);\n\n return includeUris.length\n ? attrTypes.filter(({uri}) => includeUris.includes(uri))\n : attrTypes.filter(({uri}) => !excludeUris.includes(uri));\n};\n\ntype PagersData = {\n attrType: AttributeType;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue | string | number)[];\n};\n\nexport const splitPagersData = (\n alwaysVisibleTypeUris: string[],\n pagersData: PagersData[]\n): [PagersData[], PagersData[]] =>\n partition(pipe(path(['attrType', 'uri']), includes(__, alwaysVisibleTypeUris)), pagersData);\n","import KeyboardArrowUp from '@material-ui/icons/KeyboardArrowUp';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n};\n\nconst ShowLess = ({onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowUp className={styles['svg-icon__root']} />\n {i18n.text('Show less')}\n </Link>\n );\n};\n\nexport default ShowLess;\n","import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n moreNumber?: number;\n valueNumber?: number;\n onClick: () => void;\n};\n\nconst ShowMore = ({moreNumber, valueNumber, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowDownIcon className={styles['svg-icon__root']} />\n {moreNumber && valueNumber\n ? i18n.text('Show ${moreNumber} more of remaining ${valueNumber} value', {moreNumber, valueNumber})\n : i18n.text('Show more')}\n </Link>\n );\n};\n\nexport default ShowMore;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n }\n});\n","import ReadModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return ReadModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport SimpleAttribute from '../SimpleAttribute';\nimport NestedAttribute from '../NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class ReadModeAttributesFactory {\n static build(attributeType, props = {}) {\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return <SimpleAttribute {...props} />;\n }\n }\n}\n","import React, {memo, useMemo, useState} from 'react';\nimport {path} from 'ramda';\nimport {AttributeType, Entity, getAttributesListForReadMode, Relation} from '@reltio/mdm-sdk';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport AttributesPager from '../AttributesPager';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\n\ntype Props = {\n attrTypes: AttributeType[];\n entity: Partial<Entity> | Partial<Relation>;\n parentUri?: string;\n drawLines?: boolean;\n children?: React.ReactNode;\n className?: string;\n max?: number;\n alwaysVisibleTypeUris?: string[];\n showNonOv?: boolean;\n};\n\nconst AttributesList = ({\n attrTypes,\n entity,\n parentUri,\n drawLines,\n children,\n className,\n max,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n showNonOv\n}: Props) => {\n const [visibleValuesCount, setVisibleValuesCount] = useState(max || Infinity);\n const pagersData = useMemo(() => getAttributesListForReadMode(attrTypes, entity, showNonOv), [\n attrTypes,\n entity,\n showNonOv\n ]);\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const visibleAttributePagersData = regularPagersData.slice(0, visibleValuesCount);\n const showMore = max && visibleAttributePagersData.length < regularPagersData.length;\n const showLess =\n max && visibleAttributePagersData.length >= regularPagersData.length && max < visibleAttributePagersData.length;\n\n const decoratorProps = {\n enabled: drawLines\n };\n\n const onShowMore = () => {\n setVisibleValuesCount(Infinity);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n {visibleAttributePagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], entity.attributes)}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n ))}\n {showMore && <ShowMore onClick={onShowMore} />}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default memo(AttributesList);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst fontSize = '13px';\nconst lineHeight = '15px';\n\nconst commonStyles = {\n titleRow: {\n display: 'block',\n minHeight: '16px',\n textIndent: '-1em',\n paddingLeft: '1em'\n },\n title: {\n whiteSpace: 'nowrap'\n },\n ovIcon: {\n marginLeft: '8px',\n marginRight: '-3px',\n marginTop: '-1px',\n textIndent: 0\n }\n};\n\nexport const useStyles = makeStyles({\n paddingWrapper: {\n paddingTop: '3px',\n paddingBottom: '5px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n },\n paddingWrapperWithLines: {\n paddingBottom: '1px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n }\n});\n\nexport const useOneLineStyles = makeStyles({\n wrapper: {\n fontSize,\n lineHeight,\n flex: 1\n },\n collaborationWrapper: {\n display: 'flex',\n alignItems: 'start',\n minHeight: '18px'\n },\n attribute: {\n marginLeft: '8px',\n paddingLeft: '4px',\n paddingRight: '4px',\n display: 'inline',\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n titleIcon: {\n width: '16px',\n height: '16px',\n marginBottom: '-3px',\n marginRight: '8px',\n marginLeft: '1px',\n color: 'rgba(0, 0, 0, 0.38)'\n },\n ...commonStyles\n});\n\nexport const useMultiLineStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n fontSize,\n lineHeight\n },\n attribute: {\n '&:last-child': {\n marginBottom: 0\n },\n paddingLeft: '4px',\n paddingRight: '4px',\n marginLeft: '5px',\n marginBottom: '4px',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n attributes: {\n alignSelf: 'stretch'\n },\n ...commonStyles,\n titleRow: {\n ...commonStyles.titleRow,\n marginBottom: '3px'\n }\n});\n","import React from 'react';\nimport {\n AttributeType,\n AttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isRelationAttrType\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport Title from '../../../Title/Title';\nimport OvIcon from '../../OvIcon';\nimport Attribute from '../AttributesFactory/Attribute';\nimport {useOneLineStyles} from './styles';\n\ntype Props = {\n value: AttributeValue;\n attributeType: AttributeType;\n nonVisibleValues: AttributeValue[];\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n totalNonVisibleValues: number;\n};\n\nconst OneLineRenderer = ({\n value,\n nonVisibleValues,\n attributeType,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useOneLineStyles();\n const {label} = attributeType;\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={classnames(styles.collaborationWrapper, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n <Attribute\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n inlined\n />\n </div>\n <CommentsContainer\n uri={value.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: value.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default OneLineRenderer;\n","import React, {useState} from 'react';\nimport {min} from 'ramda';\nimport classnames from 'classnames';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {AttributeType, NestedAttributeValue, ReferenceAttributeValue, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport {useMultiLineStyles} from './styles';\n\nimport Attribute from '../AttributesFactory/Attribute';\nimport Title from '../../../Title/Title';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport OvIcon from '../../OvIcon';\n\ntype Props = {\n max: number;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n attributeType: AttributeType;\n totalVisibleValues: number;\n totalNonVisibleValues: number;\n nonVisibleValues: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n parentUri: string;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n};\n\nconst MultiLineRenderer = ({\n max,\n values,\n nonVisibleValues,\n totalVisibleValues,\n attributeType,\n parentUri,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useMultiLineStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n const {label} = attributeType;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.titleRow}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n <div className={styles.attributes}>\n {shownValues.map((value) => (\n <Attribute\n key={value.uri}\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n />\n ))}\n </div>\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default MultiLineRenderer;\n","import React, {Fragment} from 'react';\n\ntype Props = {\n className?: string;\n values: string[];\n Component: React.ElementType;\n dataReltioId?: string;\n};\n\nconst SpecialAttributesArray = ({className, values, Component, dataReltioId}: Props) => {\n return (\n <div className={className} data-reltio-id={dataReltioId}>\n {values.map((value, index) => (\n <Fragment key={value}>\n <Component value={value} />\n {index < values.length - 1 && ', '}\n </Fragment>\n ))}\n </div>\n );\n};\n\nexport default SpecialAttributesArray;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nexport const useCommonStyles = makeStyles({\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n});\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getRoleLabel, Metadata} from '@reltio/mdm-sdk';\n\nimport {HistoryDiffContext} from '../../../../../contexts/HistoryAppearanceContext';\nimport {\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '../../helpers/historyAppearance';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Role = ({value}: Props) => {\n const styles = useCommonStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('roles', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return <span className={styles[historyClassName]}>{getRoleLabel(metadata, value)}</span>;\n};\n\nexport default Role;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Role from './Role';\n\ntype Props = {\n className?: string;\n values: string[];\n};\n\nconst Roles = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Role}\n />\n);\n\nexport default Roles;\n","import React, {useContext} from 'react';\nimport InternalLink from '../../../../InternalLink/InternalLink';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getDataTenantEntityUri, getTagLink} from '@reltio/mdm-sdk';\n\nimport {EntityContext, HistoryDiffContext} from '../../../../../contexts';\nimport {\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '../../helpers/historyAppearance';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Tag = ({value}: Props) => {\n const styles = useCommonStyles();\n const uiPath: string = useSelector(mdmModule.selectors.getUIPath);\n const ownEntity: Entity = useContext(EntityContext);\n const currentEntity: Entity = useSelector(mdmModule.selectors.getEntity);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('tags', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const entity = ownEntity || currentEntity;\n\n return (\n <InternalLink\n className={styles[historyClassName]}\n href={getTagLink({\n uiPath,\n tag: value,\n entityUri: entity.dataTenant ? getDataTenantEntityUri(entity) : entity.uri\n })}\n >\n {value}\n </InternalLink>\n );\n};\n\nexport default Tag;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Tag from './Tag';\n\ntype Props = {\n className?: string;\n values: string[];\n dataReltioId?: string;\n};\n\nconst Tags = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Tag}\n />\n);\n\nexport default Tags;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {AttributeType, EntityAttrTypes} from '@reltio/mdm-sdk';\nimport TagIcon from '@material-ui/icons/LocalOffer';\n\nimport {useOneLineStyles} from './styles';\n\nimport Title from '../../../Title/Title';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Roles from '../SpecialAttributes/Roles';\nimport Tags from '../SpecialAttributes/Tags';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n};\n\nconst SpecialRenderer = ({values, attributeType}: Props) => {\n const styles = useOneLineStyles();\n const {label} = attributeType;\n\n const renderIcon = (className) => {\n return attributeType.uri === EntityAttrTypes.tags.uri ? <TagIcon className={className} /> : null;\n };\n\n const renderValue = (className) => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags className={className} values={values as string[]} />;\n case EntityAttrTypes.roles.uri: {\n return <Roles className={className} values={values as string[]} />;\n }\n default: {\n //startDate, endDate, \"crosswalk\" fake nested subattibutes\n return (\n <Attribute\n className={className}\n attributeValue={{value: values[0]}}\n attributeType={attributeType}\n inlined\n />\n );\n }\n }\n };\n\n return (\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n {renderIcon(styles.titleIcon)}\n <Title label={label} className={styles.title} data-reltio-id=\"reltio-attribute-label\" />\n {renderValue(styles.attribute)}\n </div>\n );\n};\n\nexport default SpecialRenderer;\n","import classnames from 'classnames';\nimport React, {memo} from 'react';\nimport {always, cond, has, ifElse, partition, prop, T} from 'ramda';\nimport {\n AttributeType,\n isComplexAttribute,\n isImage,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n isSpecialAttribute,\n isOv,\n ImageAttributeValue,\n AttributeValue\n} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {useStyles} from './styles';\nimport Title from '../../../Title/Title';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport OneLineRenderer from './OneLineRenderer';\nimport MultiLineRenderer from './MultiLineRenderer';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport SpecialRenderer from './SpecialRenderer';\n\nconst RENDERER_TYPES = {\n oneLine: 'oneLine',\n multiLine: 'multiLine',\n imageLine: 'imageLine',\n special: 'special'\n};\n\ntype Props = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | string\n | number\n | ImageAttributeValue\n | AttributeValue\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n parentUri?: string;\n drawLines: boolean;\n max?: number;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv?: boolean;\n};\n\nconst AttributesPager = ({\n values,\n attributeType,\n drawLines,\n paging = {},\n parentUri,\n max = Infinity,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n const partitionByOv = partition(isOv);\n if (!values || !values.length) {\n return null;\n }\n const [ovValues, nonOvValues] = partitionByOv(values);\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(visibleValues.length))(paging);\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n const isOneLineRender = totalVisibleValues === 1 && !isComplexAttribute(attributeType);\n\n const render = () => {\n const type = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [always(isOneLineRender), always(RENDERER_TYPES.oneLine)],\n [T, always(RENDERER_TYPES.multiLine)]\n ])(attributeType);\n switch (type) {\n case RENDERER_TYPES.oneLine:\n return (\n <OneLineRenderer\n value={visibleValues[0]}\n nonVisibleValues={nonVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.multiLine:\n return (\n <MultiLineRenderer\n values={visibleValues}\n nonVisibleValues={nonVisibleValues}\n totalVisibleValues={totalVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n parentUri={parentUri}\n max={max}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.imageLine:\n return (\n <>\n <Title label={attributeType?.label} data-reltio-id=\"reltio-attribute-label\" />\n <ImageAttributesLine\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </>\n );\n case RENDERER_TYPES.special:\n return <SpecialRenderer values={visibleValues} attributeType={attributeType} />;\n }\n };\n\n return (\n <BranchDecorator enabled={drawLines} className={classnames({[styles.paddingWrapperWithLines]: drawLines})}>\n <div className={classnames({[styles.paddingWrapper]: !drawLines})}>{render()}</div>\n </BranchDecorator>\n );\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\nimport AttributesPager from './AttributesPager';\n\nconst mapStateToProps = (state, {max = undefined}) => ({\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues\n};\n\nexport {AttributesPager};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n complexContainer: {\n marginTop: '1px'\n },\n labelContainer: {\n display: 'flex',\n minHeight: '18px'\n },\n label: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 'normal',\n paddingTop: '1px',\n marginLeft: '2px'\n },\n spacer: {\n flex: 1\n }\n});\n","import React, {useContext, useEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {\n AttributeTypeType,\n isAnalyticAttribute,\n NestedAttributeValueType,\n ReferenceAttributeValueType,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType,\n isSpecialAttribute\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport AttributesList from '../AttributesList/AttributesList';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\nimport {useStyles} from './styles';\n\nconst ComplexAttribute = ({\n attributeTypesList,\n attributeValue,\n label,\n expanded: expandedProp = false,\n children,\n showNonOv,\n attributeType,\n LabelRenderer,\n RightSlot\n}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const uri = attributeValue.uri;\n const [expanded, setExpanded] = useState(false);\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n useEffect(() => {\n setExpanded(expandedProp);\n }, [expandedProp]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null,\n ...(isSpecialAttribute(attributeType) ? attributeValue.value : {})\n }),\n [attributeValue, hasAnalyticValue, attributeType]\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={styles.complexContainer}>\n <div className={classnames(styles.labelContainer, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <ArrowExpandButton onClick={() => setExpanded((value) => !value)} expanded={expanded} />\n {LabelRenderer ? (\n <LabelRenderer attributeType={attributeType} attributeValue={attributeValue} />\n ) : (\n <>\n <Typography\n component=\"span\"\n variant=\"body2\"\n classes={{body2: styles.label}}\n className={classnames({\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri),\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </Typography>\n <div className={styles.spacer} />\n {RightSlot && <RightSlot attributeType={attributeType} attributeValue={attributeValue} />}\n <CommentsContainer\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </>\n )}\n </div>\n {expanded && (\n <AttributesList\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n drawLines={true}\n parentUri={uri}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </div>\n );\n};\n\nComplexAttribute.propTypes = {\n children: PropTypes.node,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n expanded: PropTypes.bool,\n showNonOv: PropTypes.bool,\n attributeType: AttributeTypeType,\n LabelRenderer: PropTypes.elementType,\n RightSlot: PropTypes.elementType\n};\n\nexport default ComplexAttribute;\n","export const CROSS_ICON = `<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke: #D1051E; stroke-width: 1\" viewBox=\"0 0 114 114\">\n\t<line x1=\"5\" y1=\"109\" x2=\"109\" y2=\"5\" />\n</svg>`;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {CROSS_ICON} from './cross.inline.svg';\nimport {svg2Url} from '@reltio/mdm-sdk';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nconst BORDER_WIDTH = '3px';\n\nexport const useStyles = makeStyles((theme) => ({\n image: ({imageMargin, imageHeight, imageWidth}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n deleteAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n background: `url('${svg2Url(CROSS_ICON)}') no-repeat`,\n backgroundColor: historyPalettes[HistoryOperations.deleteAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n updateAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n backgroundColor: historyPalettes[HistoryOperations.updateAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n deleteAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.deleteAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n insertAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.insertAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n updateAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.updateAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n padding: '36px 8px',\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useContext} from 'react';\nimport {AttributeType, getImageAttributeOvThumbnailUrl, ImageAttributeValue, Paging} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport classnames from 'classnames';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport Image from '../../../Image/Image';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n parentUri?: string;\n showNonOv?: boolean;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n paging,\n parentUri,\n requestNextPageOfAttributeValues,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const {appearance} = useContext(HistoryDiffContext);\n\n const renderImage: RenderImage = ({onOpenImageGalleryDialog}) => {\n const renderImage = (attribute: ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const imageAppearance = getHistoryAppearanceByUri(uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(imageAppearance);\n return (\n <div\n className={classnames(styles.image, {\n [styles[historyAttributesClassName + 'Image']]: historyAttributesClassName\n })}\n key={uri}\n data-reltio-id=\"reltio-attribute-value\"\n >\n <Image\n onClick={() => onOpenImageGalleryDialog(uri)}\n className={styles[historyAttributesClassName]}\n src={src}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n );\n};\n\nexport default ImageAttributesLine;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nconst styles = makeStyles({\n label: {\n textDecoration: 'none'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n },\n pivotingTooltip: {\n marginLeft: '4px'\n }\n});\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {evaluateDeepEntityLabel, getAttributeTypeSubAttributes, getLabel, NestedAttributeType} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\nimport SearchHighlighter from '../../../SearchHighlighter/SearchHighlighter';\n\nimport useStyles from './styles';\n\nconst NestedAttribute = ({attributeValue, attributeType, ...otherProps}) => {\n const styles = useStyles();\n\n const {appearance} = useContext(HistoryDiffContext);\n\n const attributeLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const label = attributeValue.label\n ? attributeValue.label\n : evaluateDeepEntityLabel(attributeValue, attributeType.dataLabelPattern);\n\n return (\n <PivotingTooltip className={styles.pivotingTooltip} value={attributeValue} attributeType={attributeType}>\n <Box component=\"span\" className={classnames(styles[historyAttributesClassName], styles.label)}>\n <SearchHighlighter text={getLabel(label)} />\n </Box>\n </PivotingTooltip>\n );\n }, [appearance, styles, attributeValue, attributeType]);\n\n return (\n <ComplexAttribute\n label={attributeLabel}\n attributeValue={attributeValue}\n attributeTypesList={getAttributeTypeSubAttributes({}, attributeType)}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nconst styles = makeStyles((theme) => ({\n relationshipLabel: {\n marginLeft: '4px',\n color: theme.palette.text.primary\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n}));\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n getAttributeTypeSubAttributes,\n getEntityLink,\n getLabel,\n getReferencedEntityUriFromAttrValue,\n isEmptyValue,\n isOv,\n ReferenceAttributeType\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport InternalLink from '../../../InternalLink/InternalLink';\nimport SearchHighlighter from '../../../SearchHighlighter/SearchHighlighter';\n\nimport {useOvValueStyles} from '../helpers/commonStyles';\nimport useStyles from './styles';\n\nconst ReferenceAttribute = ({attributeValue, metadata, attributeType, uiPath, ...otherProps}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const refEntityURI = getReferencedEntityUriFromAttrValue(attributeValue);\n const attributeTypeList = useMemo(() => getAttributeTypeSubAttributes(metadata, attributeType), [\n attributeType,\n metadata\n ]);\n\n const {appearance} = useContext(HistoryDiffContext);\n\n const entityLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return (\n <InternalLink\n href={isEmptyValue(appearance) ? getEntityLink({uiPath, uri: refEntityURI}) : undefined}\n className={classnames(styles[historyAttributesClassName], {\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n >\n <SearchHighlighter text={getLabel(attributeValue.label)} />\n {attributeValue.relationshipLabel && (\n <span className={styles.relationshipLabel}>\n <SearchHighlighter text={attributeValue.relationshipLabel} />\n </span>\n )}\n </InternalLink>\n );\n }, [attributeValue, appearance, uiPath, refEntityURI, styles, ovValueStyles.ovFalse]);\n\n return (\n <ComplexAttribute\n attributeTypesList={attributeTypeList}\n attributeValue={attributeValue}\n label={entityLabel}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nReferenceAttribute.propTypes = ReferenceAttributeType;\n\nexport default memo(ReferenceAttribute);\n","import {connect} from 'react-redux';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport mdmModule from '@reltio/mdm-module';\n\nconst mapStateToProps = (state) => {\n return {\n metadata: mdmModule.selectors.getMetadata(state),\n uiPath: mdmModule.selectors.getUIPath(state)\n };\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps)(ReferenceAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'start',\n justifyContent: 'space-between'\n },\n commentsContainer: {\n height: '15px',\n marginRight: '-4px' // AttributesPager padding compensation\n },\n attributeValue: {\n flex: 1,\n wordBreak: 'break-all'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.updateAttribute].color\n }\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.insertAttribute].color\n }\n },\n deleteAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n textDecoration: 'line-through',\n ...historyPalettes[HistoryOperations.deleteAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.deleteAttribute].color\n }\n },\n multilineAttribute: {\n width: 'fit-content'\n }\n});\n","import React, {useContext} from 'react';\nimport {\n AttributeType,\n getAttrDataTypeDefinition,\n getAttributeValue,\n SimpleAttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\nimport {HistoryDiffContext} from '../../../../contexts/HistoryAppearanceContext';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport {useStyles} from './styles';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\ntype Props = {\n className?: string;\n attributeValue: SimpleAttributeValue;\n attributeType: AttributeType;\n inlined?: boolean;\n};\n\nconst SimpleAttribute = ({className, attributeType = null, attributeValue, inlined}: Props) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const dataTypeValue = (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n />\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return inlined || historyClassName ? (\n <div\n className={classnames(className, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip\n value={attributeValue}\n attributeType={attributeType}\n key={attributeValue.uri}\n className={classnames({[styles.multilineAttribute]: !inlined})}\n >\n <span\n className={classnames(styles[historyClassName], {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n </div>\n ) : (\n <div\n className={classnames(className, styles.root, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip value={attributeValue} attributeType={attributeType} key={attributeValue.uri}>\n <span\n className={classnames(styles.attributeValue, {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n <CommentsContainer\n className={styles.commentsContainer}\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default SimpleAttribute;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useOvValueStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n ovFalse: theme.inactive\n}));\n","import {\n any,\n cond,\n curry,\n has,\n isNil,\n join,\n keys,\n lte,\n pipe,\n prop,\n propSatisfies,\n split,\n slice,\n startsWith\n} from 'ramda';\nimport {HistoryAppearanceActions, HistoryDiff} from '@reltio/mdm-sdk';\n\ntype historyColors = {\n backgroundColor?: string;\n color: string;\n};\n\nexport enum HistoryOperations {\n insertAttribute = 'insertAttribute',\n updateAttribute = 'updateAttribute',\n deleteAttribute = 'deleteAttribute'\n}\n\nexport const historyPalettes: {[key: string]: historyColors} = {\n [HistoryOperations.insertAttribute]: {\n color: '#599E0E'\n },\n [HistoryOperations.updateAttribute]: {\n backgroundColor: 'rgba(255, 187, 0, 0.12)',\n color: '#CC7500'\n },\n [HistoryOperations.deleteAttribute]: {\n backgroundColor: 'rgba(255, 50, 0, 0.2)',\n color: '#CF0E26'\n }\n};\n\nexport const getHistoryAttributeClassName = (type: HistoryAppearanceActions) => {\n switch (type) {\n case 'UPDATE_ATTRIBUTE':\n return HistoryOperations.updateAttribute;\n case 'UNDO_IGNORE_ATTRIBUTE':\n case 'INSERT_ATTRIBUTE':\n return HistoryOperations.insertAttribute;\n case 'IGNORE_ATTRIBUTE':\n case 'DELETE_ATTRIBUTE':\n return HistoryOperations.deleteAttribute;\n default:\n return '';\n }\n};\n\nconst ATTRIBUTE_DELIMITER = '/';\n\nconst hasParent = pipe(split(ATTRIBUTE_DELIMITER), propSatisfies(lte(2), 'length'));\n\nconst getParentUri = pipe(split(ATTRIBUTE_DELIMITER), slice(0, -2), join(ATTRIBUTE_DELIMITER));\n\nconst getParentHistoryAppearanceByUri = curry((uri: string, history: HistoryDiff['appearance']) => {\n return cond([\n [has(uri), prop(uri)],\n [() => hasParent(uri), getParentHistoryAppearanceByUri(getParentUri(uri))]\n ])(history);\n});\n\nconst hasModifiedChildren = (uri: string) => pipe(keys, any(startsWith(uri + ATTRIBUTE_DELIMITER)));\n\nexport const getHistoryAppearanceByUri = (uri = '', history: HistoryDiff['appearance'] = {}) => {\n const state = getParentHistoryAppearanceByUri(uri, history);\n if (isNil(state)) {\n return hasModifiedChildren(uri)(history) ? 'UPDATE_ATTRIBUTE' : '';\n }\n return state;\n};\n\nexport const getHistoryAppearanceBySpecialAttributeValue = (\n name: string,\n value: string,\n history: HistoryDiff['appearance'] = {}\n) => history?.[name]?.[value];\n","import {EntityAttrTypes} from '@reltio/mdm-sdk';\n\nexport const ALWAYS_VISIBLE_TYPE_URIS = [EntityAttrTypes.roles.uri, EntityAttrTypes.tags.uri];\n","export const COMMENTS_CONTAINER_VISIBILITY_AREA = 'commentsContainerVisibilityArea';\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const AsyncMountContext = React.createContext({\n enabled: false,\n queueSizeThreshold: 0\n});\n\nAsyncMountContext.Provider.propTypes = {\n value: PropTypes.shape({\n enabled: PropTypes.bool,\n queueSizeThreshold: PropTypes.number\n })\n};\n\nAsyncMountContext.displayName = 'AsyncMountContext';\n","import React from 'react';\n\nexport const BlockImageGalleryDialogContext = React.createContext(false);\n\nBlockImageGalleryDialogContext.displayName = 'BlockImageGalleryDialogContext';\n","import React from 'react';\nimport {CollaborationObjectTypes, Comment, CommentsMap, CommentState, Reply} from '@reltio/mdm-sdk';\n\nconst noop = () => {};\n\nexport const CollaborationContext = React.createContext<{\n objectTypes?: CollaborationObjectTypes[];\n commentsMap: CommentsMap;\n comments: Comment[];\n currentComment: Comment;\n updateCommentState: (uri: string, commentUri: string, newState: CommentState) => void;\n clearCommentState: (uri: string, commentUri: string) => void;\n getCommentState: (uri: string, commentUri: string) => CommentState;\n getComments: (uri: string, pageToken?: string) => void;\n getCommentsCount: (objectIds: string[]) => void;\n getComment: (commentId: Comment['commentId']) => void;\n createComment: (\n params: Pick<Comment, 'content' | 'namedUsers' | 'objectType' | 'relatedObjectUris'> & {uri: string}\n ) => Promise<void>;\n editComment: (\n params: Pick<\n Comment,\n 'content' | 'namedUsers' | 'objectType' | 'relatedObjectUris' | 'commentId' | 'replies'\n > & {uri: string}\n ) => Promise<void>;\n editReply: (params: Pick<Reply, 'content' | 'namedUsers' | 'replyId'> & {commentId: string}) => Promise<void>;\n deleteComment: (params: Pick<Comment, 'commentId'> & {uri: string}) => void;\n deleteReply: (params: {uri: string; commentId: string; reply: Pick<Reply, 'action' | 'replyId'>}) => void;\n createReply: (\n params: Pick<Reply, 'content' | 'namedUsers' | 'action'> & {uri: string; commentId: string}\n ) => Promise<void>;\n resolveThread: (params: {uri: string; commentId: string}) => void;\n reOpenThread: (params: {uri: string; commentId: string}) => void;\n clearCurrentComment: () => void;\n sending: boolean;\n loading: boolean;\n pageToken: string;\n }>({\n comments: [],\n commentsMap: null,\n currentComment: null,\n updateCommentState: noop,\n clearCommentState: noop,\n getCommentState: () => ({}),\n getComment: noop,\n getComments: () => new Promise<void>(noop),\n getCommentsCount: noop,\n createComment: () => new Promise<void>(noop),\n editComment: () => new Promise<void>(noop),\n createReply: () => new Promise<void>(noop),\n resolveThread: noop,\n reOpenThread: noop,\n clearCurrentComment: noop,\n deleteComment: noop,\n sending: false,\n loading: false,\n pageToken: null,\n deleteReply: noop,\n editReply: () => new Promise<void>(noop)\n });\n\nCollaborationContext.displayName = 'CollaborationContext';\n","import {EntitiesMap} from '@reltio/mdm-sdk';\nimport React from 'react';\n\nexport const EntitiesMapContext = React.createContext<EntitiesMap>({});\n\nEntitiesMapContext.displayName = 'EntitiesMapContext';\n","import React from 'react';\nimport {Entity} from '@reltio/mdm-sdk';\n\nexport const EntityContext = React.createContext<Entity>(null);\n\nEntityContext.displayName = 'EntityContext';\n","import React from 'react';\n\nexport const HighlightedValuesContext = React.createContext<{\n highlightedValuesUris: string[];\n highlightedClassName: string;\n}>({\n highlightedValuesUris: [],\n highlightedClassName: ''\n});\n\nHighlightedValuesContext.displayName = 'HighlightedValuesContext';\n","import React from 'react';\nimport {HistoryDiff} from '@reltio/mdm-sdk';\n\nexport const HistoryDiffContext = React.createContext<HistoryDiff>({\n appearance: undefined,\n attributes: undefined,\n roles: undefined,\n tags: undefined\n});\n\nHistoryDiffContext.displayName = 'HistoryDiffContext';\n","import React from 'react';\nimport {PivotingAttribute} from '@reltio/mdm-sdk';\n\nexport const PivotingAttributeContext = React.createContext<PivotingAttribute[]>([]);\n","import React from 'react';\n\nexport const RelatedObjectUrisContext = React.createContext<string[]>([]);\n\nRelatedObjectUrisContext.displayName = 'RelatedObjectUrisContext';\n","import React from 'react';\nimport {User} from '@reltio/mdm-sdk';\n\nexport const UsersContext = React.createContext<User[]>([]);\n\nUsersContext.displayName = 'UsersContext';\n","import {useContext, useEffect, useState, useRef} from 'react';\n\nimport {AsyncMountContext} from '../contexts/AsyncMountContext';\n\nlet queueSize = 0;\n\nexport const useAsyncMount = () => {\n const isFirstRunRef = useRef(true);\n const {enabled, queueSizeThreshold = 0} = useContext(AsyncMountContext);\n const [shouldMount, setShouldMount] = useState(!enabled || (enabled && queueSize < queueSizeThreshold));\n if (isFirstRunRef.current) {\n queueSize++;\n }\n const timerRef = useRef();\n useEffect(() => {\n queueSize--;\n if (!shouldMount) {\n timerRef.current = setTimeout(() => {\n setShouldMount(true);\n }, 0);\n return () => clearTimeout(timerRef.current);\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n isFirstRunRef.current = false;\n return shouldMount;\n};\n","import React from 'react';\n\nconst SvgDownload: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 18 18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M19 16v3H5v-3H3v3c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-3h-2zm-6-3.33l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2v9.67z\"\n id=\"Download_svg__a\"\n />\n </defs>\n <g transform=\"translate(-3 -3)\" stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"Download_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Download_svg__a\" />\n </mask>\n <path fillOpacity={0.54} fill=\"#fff\" mask=\"url(#Download_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDownload;\n"],"names":["Component","PlaceholderComponent","WithAsyncMount","forwardRef","componentProps","ref","useAsyncMount","displayName","useStyles","makeStyles","expandButton","backgroundColor","expandIcon","transition","expanded","transform","props","styles","className","otherProps","SmallIconButton","icon","ArrowRight","size","disableRipple","iconClassName","classnames","toolbar","minHeight","padding","lineHeight","title","fontSize","fontWeight","whiteSpace","overflow","textOverflow","children","classes","Toolbar","root","Typography","variant","getRelatedEntityUri","comment","entityUri","index","relatedObjectUris","indexOf","formatDate","time","i18n","createEditedCommentUri","commentId","createEditedReplyUri","reply","replyId","transformPlainTextValueToValueWithMentions","plainTextValue","mentions","value","mention","split","join","theme","marginBottom","color","palette","divider","label","paddingLeft","borderLeft","text","primary","link","main","textDecoration","CommentTarget","entity","useSelector","mdm","metadata","entitiesMap","useContext","EntitiesMapContext","Box","objectType","CollaborationObjectTypes","attributeTypeUri","getAttributeTypeUriByValueUri","objectId","type","attributeType","findAttributeTypeByUri","relationTypeUri","find","startsWith","EntityUriLink","getEntityUriForLink","getLabel","relatedEntityUri","uri","relatedEntity","getEntityId","getContent","wordBreak","CommentContent","users","UsersContext","processor","trigger","arr","currentStr","process","i","length","currentCharacter","nextCharacter","isLastCharacter","includes","slice","push","processMentions","content","namedUsers","user","username","Link","href","email","map","el","idx","Fragment","key","width","height","secondary","Avatar","item","toUpperCase","fontFamily","border","borderRadius","outline","boxShadow","maxHeight","overflowY","transitions","create","position","zIndex","textShadow","pointerEvents","TextFieldWithMentions","onChange","_","uniq","display","data","id","displayTransform","appendSpaceOnAdd","isEditing","textField","maxWidth","form","alignItems","avatar","marginRight","buttons","marginLeft","marginTop","button","getPlaceholder","status","SendMessageArea","inputRef","popperRef","isEditingComment","isEditingReply","onCancel","focused","setFocused","useState","createReply","createComment","sending","editComment","editReply","getCommentState","updateCommentState","clearCommentState","CollaborationContext","commentUri","isNil","createNewReplyUri","createCommentUri","defaultCommentState","commentOrReply","getDefaultCommentState","hasValue","trim","shouldShowButtons","clearValue","useEffect","current","update","buttonSize","onSubmit","e","preventDefault","cond","always","replies","T","action","request","then","catch","console","log","disabled","onFocus","onBlur","placeholder","Button","getButtonText","onClick","header","createdAt","body","commentTarget","message","dropdownMenu","Comment","onReply","useRef","createdBy","createdTime","canChangeComment","resolveThread","reOpenThread","deleteComment","updateIsEditingComment","useCallback","focus","menuItems","useMemo","sendMessageArea","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","tooltipTitle","popoverProps","PopoverClasses","menuId","component","marked","fontStyle","RepliedComment","canChangeReply","deleteReply","updateIsEditingReply","flexGrow","messages","repliedComment","CollaborationItem","memo","messagesRef","addButton","visibility","COMMENTS_CONTAINER_VISIBILITY_AREA","showAlways","fillOpacity","fill","fillRule","viewBox","xmlns","d","justifyContent","cursor","childrenWrapper","top","left","right","bottom","CommentButton","React","Tooltip","AddComment","paddingRight","headerInfo","counter","resolveButton","popper","collaborationItem","hasScroll","scrollWidth","CollaborationPopup","anchorEl","onClose","open","setScrollWidth","loading","itemsCount","PopupWithArrow","placement","showForDisabled","DoneIcon","node","offsetWidth","clientWidth","onChangePopupVisibility","allowOnlyOneComment","setAnchorEl","shouldOpenPopup","setShouldOpenPopup","isOpenPopup","Boolean","currentComment","commentsMap","getComment","clearCurrentComment","objectTypes","showComments","openComments","filter","reverse","shouldShowAddCommentButton","isOpenPopupWithNewComment","useDidUpdateEffect","additionalRelatedObjectUris","RelatedObjectUrisContext","allRelatedObjectUris","event","currentTarget","handleClickCommentButton","RNDContext","createDndContext","HTML5Backend","DragAndDrop","DNDElement","manager","DndProvider","dragDropManager","useDNDProviderElement","buttonRoot","active","fade","selected","paper","minWidth","menuItem","menuText","letterSpacing","MenuItemWithTooltip","withTooltip","MenuItem","MenuItemRenderer","onMenuClose","identity","tooltip","selectable","Checkbox","checked","buttonContent","onMenuOpen","DefaultMenuItemRenderer","ButtonComponent","buttonRef","isOpen","setIsOpen","handleToggle","stopPropagation","undefined","Menu","autoFocus","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","avatarClassName","imageClassName","mdmModule","absoluteImagePath","entityImageSource","getEntityImage","fallbackImage","getAbsoluteImageUrl","getEntityTypeImage","onImageLoadFail","target","onError","src","svg2Url","imgProps","alt","storagePath","str","endsWith","caption","errorMessage","hasError","wrapper","error","FormHelperText","helperText","margin","stroke","strokeWidth","image","imageWidth","imageHeight","objectFit","verticalAlign","defaultContainer","defaultImage","hideImage","ImageLoadingState","ImageSizesStyles","SMALL","MEDIUM","LARGE","OVERRIDE","containerClassName","overlay","sizeStyles","imageLoadingState","setImageLoadingState","imageIsLoading","imageIsLoaded","isEmptyValue","onLoad","DefaultImage","CheckedIcon","Icon","CheckCircleIcon","RadioButtonUncheckedIcon","userSelect","selectionMode","checkedIcon","actions","actionButton","dropDownMenuButton","canBeSelected","onDeselect","noop","onSelect","onShareLink","onSetAsDefault","onDelete","onDownload","hovered","setHovered","prop","toggleSelected","ifElse","equals","showCheckBox","showActions","showDeselectButton","onMouseEnter","onMouseLeave","DownloadIcon","xmlnsXlink","xlinkHref","mask","backdrop","appBar","background","closeButton","closeIcon","headerLeft","flex","headerCenter","headerRight","modeSwitcher","Mode","ImageGalleryDialog","mode","onChangeMode","modes","GALLERY_MODE","ViewComfyIcon","DETAILS_MODE","DetailsIcon","Dialog","BackdropProps","fullScreen","AppBar","colorPrimary","CloseIcon","ModeSwitcher","modeId","DialogContent","inRouterContext","useInRouterContext","linkClassName","to","replace","window","location","origin","loadingOverlay","opacity","transparent","relativePosition","LinearProgress","textTransform","borderColor","ButtonWithTooltip","ButtonGroup","String","newMode","popoverRoot","arrow","boxSizing","shadows","arrowRef","setArrowRef","Popper","modifiers","preventOverflow","enabled","boundariesElement","element","modal","ClickAwayListener","onClickAway","child","Array","from","document","querySelectorAll","some","contains","Paper","autofocus","onSearch","rootRef","localValue","setLocalValue","updateValue","pipe","tap","inputValue","startAdornment","InputAdornment","endAdornment","clearButton","input","classNames","container","getValue","disableUnderline","white","hideTitle","hideSearchInput","headerPlacement","containerWidth","containerHeight","searchInputOnKeyDown","searchInputRef","onKeyDown","searchInputContainer","style","list","useKeyboardNavigation","items","onSelectFocusedItem","selectedItems","focusIndex","setFocusIndex","restoreFocusIndex","increaseFocusIndex","currentIndex","newIndex","isTitleItem","decreaseFocusIndex","handleSelectFocusedItem","notSelectable","groupData","handleKeyDown","moveIndex","findIndex","listItem","moveTo","flexDirection","flexShrink","paddingBottom","paddingTop","isRequired","RequiredMark","stickyTitlesWrapper","titleItemIndex","VirtualGroupedList","getItemSize","renderItem","renderGroupTitle","fixedTitle","itemKey","disableHorizontalScrollbar","hideSubtitles","onInnerContainerResize","listRef","itemsRef","titlesRef","itemOffsets","currentTitleParams","topMargin","hasSubTitles","calcOffsetsToIndex","curItemsLength","prevItemSize","forEach","realIndex","getTitleByIndex","getItemByIndex","requestAnimationFrame","scrollTo","resetAfterIndex","setTitleWidth","scrollToOffset","indexItem","titleIndex","offset","titleHeight","calcMoveToOffset","state","scrollOffset","getItemByOffset","result","nextOffset","_getItemSize","render","handleOnItemsRendered","useScrollToFocusItem","renderTitles","renderTitle","handleHeight","onResize","targetDomEl","itemCount","itemSize","innerRef","onScroll","scrollDirection","topItem","currentTitleIndex","dataset","toString","itemAfterTitle","nextTitleIndex","fromIndex","nextTitleOffset","getOffsetByIndex","setTitleTopMargin","overflowX","overscanCount","onItemsRendered","propTypes","PropTypes","flattenGroupedItemsData","groupedItems","getFlattenedItems","flatten","concat","visibleStartIndexRef","visibleStopIndexRef","visibleStartIndex","visibleStopIndex","Math","max","scrollToItem","min","lineStyle","decorator","arrowWidth","borderBottom","plain","horizontalLineWidth","alignContent","mainImageContainer","mainImage","arrowButton","arrowButtonPrev","arrowButtonNext","thumbnails","gridContainer","thumb","inactiveThumb","Thumbnails","attributeValues","setAttributeValueIndex","attributeValueIndex","gridRef","containerScrollLeft","scrollLeft","currentElementPosition","scroll","IMAGE_WIDTH","Grid","wrap","direction","spacing","Image","getImageAttributeOvThumbnailUrl","ImageDetailsViewCarousel","attributeValue","mainImageSrc","getImageAttributeOvPreviewUrl","NavigateBeforeIcon","NavigateNextIcon","SYSTEM_ATTRIBUTES_TITLES","CreationTime","CreationDate","Dimensions","MimeType","Size","Url","UrlPreview","UrlThumbnail","CdnUrl","CdnUrlPreview","CdnUrlThumbnail","getFormattedSystemImageAttributeValue","name","path","moment","CreationTimestamp","format","Height","Width","Number","toFixed","filterByNotSystemAttributeTypes","attrTypes","system","filterByFieldsOrder","keys","fieldsOrder","includeNames","excludeNames","order","filteredKeys","sort","a","b","indA","indB","getNotSystemAttributesList","attrValue","attrType","notSystemAttrTypes","attributes","Object","reduce","values","isLink","canAdd","MetaInfoHeader","onAddAttributes","moreAttrTypes","MoreAttributesButton","dense","onApply","parentUri","Divider","float","wordWrap","MetaInfoItem","MetaInfoList","imageAttributeFieldsOrder","isViewMode","systemAttributesList","notSystemAttributesList","AttributesPager","drawLines","titleClassName","contentClassName","cancelButton","MetaInfoForm","hasChanges","onDeleteAttribute","onChangeAttribute","shouldShowActionButtons","showEmptyEditors","isTempUri","darkTheme","darkMuiTheme","createMuiTheme","MetaInfo","initialAttributeValue","addAttributes","changeAttribute","deleteAttribute","clearLocalChanges","applyLocalChanges","dispatch","useDispatch","viewId","ViewIdContext","setAttributeValue","prevAttrValue","attribute","addAttribute","nestingLevel","editAttribute","removeAttribute","profile","useEditMetaInfo","isEditableMode","headerTitle","bodyWrapper","formControlLabel","checkboxLabel","checkbox","ImageDetailsViewSidebar","handleSetAsDefault","modifiedEntity","entityToShow","imageAttributeConfig","default","isDefault","setIsDefault","defaultProfilePic","handleChange","FormControlLabel","control","details","ImageDetailsView","currentAttributeValueUri","setCurrentAttributeValueUri","onChangeAttributeValueIndex","GalleryView","onSelectImage","onDeselectImage","onClickImage","renderImageActionsOverlay","ImageActionsOverlay","selectButton","HeaderLeft","onSelectAll","onClearAll","selectedAllItems","underline","downloadButton","shareButton","deleteButton","HeaderRight","onShare","onUpload","startIcon","CloudUpload","LinkIcon","DeleteIcon","setSelectedItems","setMode","imageItems","downloadURL","getImageAttributeOvUrl","handleShareLink","propEq","handleDelete","isGalleryMode","isDetailsMode","hasSelectedItems","isHasSelectedItemsOrDetailsMode","isShowDeleteButton","isShowUploadButton","pluck","downloadURLs","imageBox","flexWrap","moreButtonContainer","moreButton","number","textAlign","renderImage","countFixedItems","imageSize","DEFAULT_IMAGE_SIZE","paging","showNonOv","requestNextPageOfAttributeValues","totalVisibleValues","totalOvValues","totalValues","attributeTypeName","defaultMaxValues","lastWidth","maxItems","setMaxItems","hiddenItemsLength","setHiddenItemsLength","isBlockImageGalleryDialog","BlockImageGalleryDialogContext","isOpenDialog","setIsOpenDialog","adjustMaxItemsToScreenWidth","imageMargin","maxItemsPerScreen","floor","hasHiddenImage","IMAGE_MIN_VISIBLE_WIDTH","handleResize","handleOpenImageGalleryDialog","handleCloseImageGalleryDialog","handleDownload","urls","url","isAbsoluteUrl","URL","host","isExternalUrl","iframe","createElement","setAttribute","appendChild","setTimeout","removeChild","download","pop","getFilenameFromURL","click","downloadImagesByURLs","navigator","clipboard","writeText","insertDefaultImageByAttrUri","renderImageProps","onOpenImageGalleryDialog","handleWidth","IMAGE_HEIGHT","ChipWithTooltip","Chip","nonOvValues","nonOvTotal","attributeUri","getEntityUriFromAttributeUri","ui","screen","isComplexAttribute","DataTypeValue","getAttributeValue","dataTypeDefinition","getAttrDataTypeDefinition","rich","tooltipPlacement","generatePivotingValue","pivotingAttributes","pivotingChildrenUris","pivotingAttribute","isArray","getPivotingChildrenUris","pivotingChildren","analyticsAttributes","acc","valueToString","valueContainer","lookupCode","isOv","preparePivotingAttributeValue","DataTypes","Date","getTime","isNaN","entityTypeLabel","headerCount","footer","profileIcon","entityContainer","entityLabel","seeAllButton","usePivotingTooltipStyles","PivotingTooltipContent","config","onSeeAllClick","entities","setEntities","total","setTotal","safePromise","useSafePromise","globalSearchRequestOptions","entityType","shouldShowSeeAllButton","filters","convertPivotingValueToSearchFilters","options","Promise","all","getFilteredEntities","getTotals","results","hasEntityTypeLabel","visibleEntity","EntityAvatar","PivotingTooltip","contentStyles","pivotingAttributesList","PivotingAttributeContext","isNestedAttribute","isNested","pivotingValue","isPivotingAttribute","handleSeeAllClick","generatedValue","fromEntries","entries","getLastUriPart","convertSimpleAttributePivotingValue","mdmModuleUi","interactive","popup","PivotingIcon","lazy","errors","crosswalks","propsForSimpleAttribute","NestedAttribute","ReferenceAttribute","SimpleAttributeEditor","isReltioCrosswalk","build","AttributesList","parentAttributeType","alwaysVisibleTypeUris","ALWAYS_VISIBLE_TYPE_URIS","additionalControlsRenderer","hasDeletionsMap","setHasDeletionsMap","setHasDeletions","attrTypeUri","prevMap","canCreateParentAttrType","checkCanCreateAttribute","source","isSpecialAttribute","both","isAnalyticAttribute","getSource","nameProp","getNameProp","singleValue","isRoleAttrType","isTagAttrType","has","getMoreAttrTypes","getCreatableAttributeTypes","pinnedAttributes","PinnedAttributesContext","pagersData","getAttributesListForEditMode","alwaysVisiblePagersData","regularPagersData","splitPagersData","onAddMoreAttributes","attributeTypes","getParentUri","decoratorProps","hasDeletionsContextValue","BranchDecorator","parent","HasDeletionsContext","ModeType","valueCaption","hasMinValue","hasMaxValue","noMaxValue","not","minValueIsOne","propSatisfies","minValue","generateMinCardinality","minValueCaption","generateMaxCardinality","maxValue","maxValueCaption","getCardinalityMessage","allPass","minCardinality","CardinalityMessage","cardinality","CardinalityType","filterNewValues","nonVisibleValues","onDeactivateError","visibleValuesCount","setVisibleValuesCount","hadDeletions","setHadDeletions","required","checkIsEditableMode","isPinned","isEmptyValues","showEmpty","emptyEditorValue","createNewAttribute","onAddOneMore","newValuesCount","totalProp","add","totalNonVisibleValues","hasPaging","showMore","showLess","shownValues","lastIndex","hiddenValuesCount","titleWrapper","Title","OvIcon","ovIcon","ErrorMessage","typeError","attributesWrapper","Attribute","ownError","getAttributeOwnError","ShowMore","moreNumber","valueNumber","ShowLess","roleContainer","components","MultiValue","MultiValueChip","Roles","getRolesForEntityType","role","formattedValues","roles","EntityAttrTypes","SimpleDropDownSelector","isMulti","getQuery","searchQuery","buildFilterQueryString","fieldName","filtersWithSearch","orderType","getSuggestions","getFacets","query","response","tags","TypeaheadEditor","fullWidth","multiple","withContext","contextValue","hasDeletions","hasDeletionsProp","hasDeletionsState","setHasDeletionsState","updateHasDeletions","isActivenessAttrType","renderValue","RENDERER_TYPES","Infinity","partitionByOv","partition","ovValues","visibleValues","commonProps","special","isImage","imageLine","ImageAttributesLine","renderAttribute","mapDispatchToProps","connect","getAttributePagerActiveTypeErrorMessage","textIndent","editor","titleContainer","deleted","editedLabel","errorWrapperHelperText","ComplexAttribute","attributeTypesList","hideDeleteButton","expandedProp","edited","isNew","defaultExpand","setExpanded","canDelete","checkCanDeleteAttribute","showDeleteButton","hasDescendantsWithErrors","hasAttributeDescendantsWithErrors","hasAnalyticValue","attributeListEntity","getErrorMessage","ArrowExpandButton","ErrorWrapper","AttributeTypeType","NestedAttributeValueType","ReferenceAttributeValueType","ComplexAttributeType","defaultAttributeTypesSelectionStrategy","EntityCreator","attributeTypesSelectionStrategy","ownProps","emptyEntityLabel","entityAvatar","entitySecondaryLabel","useSingleValueStyles","linkValue","useGroupStyles","addLabel","groupHeading","addIcon","useClearIconStyles","clearIcon","EntityOption","innerProps","selectOption","secondaryLabel","EntityTypeIcon","EntityType","SingleValue","selectProps","currentEntityType","menuIsOpen","disableLinkClick","uiPath","valueProps","onMouseDown","getEntityLink","ClearIndicator","onClear","IconButton","Clear","Group","ComponentsGroup","onCreate","Add","creatorWrapper","EntitySelector","entityTypesUris","setInputValue","entityTypes","getEntityType","handleCreate","entityTypeUri","groupMode","isEmpty","createLabel","isTempEntity","groupComponent","GroupHeading","EmptyStub","clearComponent","TextFieldProps","dropDownSelectorProps","textFieldProps","DropDownSelector","onInputChange","getOptions","typeAheadSearch","newOptions","addDummyOptionToEmptyOptionList","filteredEntityTypes","option","buildEntityOptions","getOptionLabel","Option","isClearable","ConnectionEntityType","MetadataType","inputRoot","isEmptyField","ImageByUrlField","onSend","setValue","setError","InputBase","newValue","isCorrectUrl","RegExp","test","IMAGE_TYPES","SelectImageButton","onAppendFile","onInput","files","accept","htmlFor","x1","y1","x2","y2","stopColor","stopOpacity","cx","cy","r","rx","ry","isActive","description","TargetBox","canDrop","isOver","drop","useDrop","NativeTypes","FILE","collect","monitor","UploadIcon","MAX_IMAGE_SIZE","DividerWithText","ErrorSnackbar","Snackbar","dialogPaper","targetBox","UploadImageDialog","imageServicePath","environment","tenant","setLoading","uploadImage","uploadImageRequest","res","err","finally","isCorrectType","LinearLoadIndicator","uploadContainer","uploadButton","uploadIcon","isVisibleUploadDialog","setIsVisibleUploadDialog","toggleVisibilityUploadDialog","visible","handleAddAttributes","generateUri","ov","handleDeleteAttribute","param","newDefaultPic","methods","imageUrl","CloudUploadIcon","moreAttributes","popupContainer","moreAttributesPopup","buttonLabel","subHeader","noResultsCaptionContainer","filterItems","curry","filterText","toLowerCase","preparedGroupedItems","GROUP_NAMES","popupTitle","setFilter","hasGroups","parentGroupLength","attributesGroupLength","preparedParentGroupItem","parentGroup","preparedAttributesGroupItems","attributesGroup","useMoreAttributesItems","handleListItemClick","append","reject","handleSearchOnEnter","any","focusIndexRef","groupsCount","listHeight","listItemRenderer","level","isChecked","isFocused","AttributeListItem","Highlighter","highlight","labelInText","LogoIcon","ListItem","SelectionPopup","gutterBottom","evaluateDeepEntityLabel","dataLabelPattern","NestedAttributeType","onDeleteModifiedEntity","onUpdateModifiedEntity","referencedEntity","getReferencedEntityFromAttrValue","referencedRelation","getReferencedRelationFromAttrValue","referencedEntityTypeUri","getReferencedEntityTypeUriFromAttrType","referencedEntityType","allCrosswalks","addReferencedRelationCrosswalks","referencedEntityMissedError","getReferencedEntityActiveError","selectedEntity","getReferencedEntityUri","getReferencedEntityTypeUri","editableAttrTypes","getReferencedRelationAttrTypesUris","newEntityAttrTypesSelectionStrategy","referencedEntityAttributeTypesSelectionStrategy","onChangeEntity","initialAttrValue","isInitialEntity","getReferencedEntityUriFromAttrValue","modifiedValue","refEntity","convertReferencedEntityForAttrValue","refRelation","createReferencedRelationForAttrValue","getErrorId","onCreateEntity","initValue","newEntityAttrTypes","newEntity","createTemporaryEntity","canChangeReferencedEntity","checkCanEditAttribute","canCreateReferencedEntity","checkMetadataForCreate","ReferenceAttributeType","DLEditorContextCache","errorWrapper","alignSelf","attributeValueToEditorValue","canCreate","canEdit","showToEdit","dependentLookupEditorContext","isDependentLookupAttrType","valueUri","parents","missedParentsAttributeTypes","parentNodesValues","flatMap","parentNode","dependentLookupCode","modifiedEntities","connections","ownParentNodesValues","filterRelatedParentValuesForDependentLookupValueUri","parentValues","possibleParentBaseTypeUris","getAttributeValuePath","defaultTo","getBaseUri","prepend","typeUri","areOneHierarchyUris","typesMap","codeValues","getParents","isBlocked","missedParentsMessage","missedAttributeTypes","labels","words","word","autocompleteConfig","autopopulationEnabled","isAutopopulationEnabled","context","autopopulationId","cachedContext","fromCache","getDependentLookupEditorContext","deactivateError","showAddButton","deletedProps","DataTypeValueEditor","attributeUriToSearchUri","prepareChangeData","AddIcon","getErrorType","ErrorType","SimpleAttributeValueType","AttributeErrorType","withAsyncMount","parseBoolean","utils","editorValueToAttributeValue","editorValue","valueOf","getFilteredAttrTypes","includeUris","excludeUris","__","SimpleAttribute","getAttributesListForReadMode","visibleAttributePagersData","commonStyles","titleRow","paddingWrapper","paddingWrapperWithLines","useOneLineStyles","collaborationWrapper","titleIcon","useMultiLineStyles","isRelationAttrType","inlined","CommentsContainer","createRelatedObjectUris","dataReltioId","useCommonStyles","insertAttribute","historyPalettes","HistoryOperations","appearance","HistoryDiffContext","attributeAppearance","getHistoryAppearanceBySpecialAttributeValue","historyClassName","getHistoryAttributeClassName","getRoleLabel","Role","ownEntity","EntityContext","currentEntity","InternalLink","getTagLink","tag","dataTenant","getDataTenantEntityUri","Tag","isOneLineRender","complexContainer","labelContainer","spacer","LabelRenderer","RightSlot","ovValueStyles","useOvValueStyles","highlightedValuesUris","highlightedClassName","HighlightedValuesContext","body2","ovFalse","deleteAttributeImage","updateAttributeImage","outlineOffset","updateAttribute","imageAppearance","getHistoryAppearanceByUri","historyAttributesClassName","pivotingTooltip","attributeLabel","SearchHighlighter","getAttributeTypeSubAttributes","relationshipLabel","refEntityURI","attributeTypeList","commentsContainer","multilineAttribute","dataTypeValue","inactive","ATTRIBUTE_DELIMITER","hasParent","lte","getParentHistoryAppearanceByUri","history","hasModifiedChildren","AsyncMountContext","queueSizeThreshold","Provider","comments","getComments","getCommentsCount","pageToken","queueSize","isFirstRunRef","shouldMount","setShouldMount","timerRef","clearTimeout"],"sourceRoot":""}