@reltio/remotes 1.4.1721 → 1.4.1722
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/1088.js +1 -1
- package/1148.js +1 -1
- package/1215.js +1 -1
- package/1334.js +1 -1
- package/1425.js +1 -1
- package/1550.js +1 -1
- package/1664.js +1 -1
- package/1707.js +1 -1
- package/1840.js +1 -1
- package/2066.js +1 -1
- package/2345.js +1 -1
- package/2400.js +1 -1
- package/2617.js +1 -1
- package/2825.js +3 -0
- package/2825.js.map +1 -0
- package/2857.js +1 -1
- package/3004.js +1 -1
- package/3042.js +1 -1
- package/3096.js +1 -1
- package/3104.js +2 -0
- package/3104.js.map +1 -0
- package/3144.js +1 -1
- package/3191.js +1 -1
- package/3348.js +1 -1
- package/3381.js +1 -1
- package/3383.js +1 -1
- package/3463.js +1 -1
- package/3469.js +1 -1
- package/3538.js +1 -1
- package/3639.js +1 -1
- package/393.js +1 -1
- package/393.js.map +1 -1
- package/4038.js +1 -1
- package/415.js +1 -1
- package/4212.js +1 -1
- package/{3209.css → 4265.css} +1 -1
- package/{3209.css.map → 4265.css.map} +1 -1
- package/4265.js +2 -0
- package/4265.js.map +1 -0
- package/{829.css → 4390.css} +1 -1
- package/4390.css.map +1 -0
- package/4390.js +2 -0
- package/4390.js.map +1 -0
- package/4444.js +1 -1
- package/4481.js +1 -1
- package/4780.js +2 -0
- package/4780.js.map +1 -0
- package/4787.js +1 -1
- package/4838.js +1 -1
- package/4969.js +1 -1
- package/50.js +1 -1
- package/5039.js +1 -1
- package/5177.js +1 -1
- package/5201.js +1 -1
- package/5292.js +1 -1
- package/5368.js +2 -0
- package/{4143.js.map → 5368.js.map} +1 -1
- package/5383.js +1 -1
- package/5738.js +1 -1
- package/5738.js.map +1 -1
- package/5769.js +1 -1
- package/6012.js +76 -0
- package/{2966.js.LICENSE.txt → 6012.js.LICENSE.txt} +0 -10
- package/6012.js.map +1 -0
- package/6287.js +1 -1
- package/6422.js +1 -1
- package/6506.js +1 -1
- package/6578.js +1 -1
- package/6578.js.map +1 -1
- package/658.js +1 -1
- package/6799.js +1 -1
- package/6807.js +2 -0
- package/6807.js.map +1 -0
- package/6844.js +1 -1
- package/6903.js +1 -1
- package/7074.js +1 -1
- package/7119.js +1 -1
- package/7237.js +1 -1
- package/7340.js +1 -1
- package/735.js +1 -1
- package/7401.js +2 -0
- package/7401.js.map +1 -0
- package/7407.js +1 -1
- package/7422.js +1 -1
- package/7468.js +1 -1
- package/7626.js +1 -1
- package/7719.js +1 -1
- package/7744.js +1 -1
- package/7744.js.map +1 -1
- package/7896.js +1 -1
- package/820.js +1 -1
- package/8207.js +1 -1
- package/8216.js +1 -1
- package/8741.js +1 -1
- package/8786.js +1 -1
- package/9016.js +1 -1
- package/9032.js +1 -1
- package/9050.js +1 -1
- package/913.js +56 -0
- package/913.js.LICENSE.txt +9 -0
- package/913.js.map +1 -0
- package/9283.js +1 -1
- package/9328.js +1 -1
- package/9387.js +1 -1
- package/9719.js +1 -1
- package/main.js +1 -1
- package/main.js.map +1 -1
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/2383.js +0 -3
- package/2383.js.map +0 -1
- package/2966.js +0 -129
- package/2966.js.map +0 -1
- package/3209.js +0 -2
- package/3209.js.map +0 -1
- package/3785.js +0 -2
- package/3785.js.map +0 -1
- package/4143.js +0 -2
- package/829.css.map +0 -1
- package/829.js +0 -2
- package/829.js.map +0 -1
- package/9109.js +0 -2
- package/9109.js.map +0 -1
- /package/{2383.js.LICENSE.txt → 2825.js.LICENSE.txt} +0 -0
package/7744.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"7744.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.tsx","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/icons/Description.tsx","webpack://@reltio/remotes/../components/src/components/attributes/DescriptionIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/DescriptionIcon/DescriptionIcon.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.ts","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/OvIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/heplers.ts","webpack://@reltio/remotes/../components/src/hooks/usePivotingDataLoader/usePivotingDataLoader.ts","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/helpers.ts","webpack://@reltio/remotes/../components/src/icons/PivotingIcon.tsx","webpack://@reltio/remotes/../components/src/components/PivotingUriLink/styles.ts","webpack://@reltio/remotes/../components/src/components/PivotingUriLink/PivotingUriLink.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.tsx","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/utils.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/hooks/useScrollToAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/hooks/useScrollToAttribute/useScrollToAttribute.ts","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/ImageLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/CardinalityMessage.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/EntityCreator.tsx","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/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/index.ts","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/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/MoreAttributesButton.tsx","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/SimpleAttributeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/SimpleAttributeEditor.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/useAutopopulationContextValue.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.ts","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/ImageLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/styles.ts","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.ts","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.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/index.ts","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/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.tsx","webpack://@reltio/remotes/../components/src/contexts/EntitiesMapContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntityContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/FeaturesContext/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/ProfilePerspectiveViewContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/RelatedObjectUrisContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/ScrollToElementContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/UsersContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useAsyncMount.js","webpack://@reltio/remotes/../components/src/hooks/useAutoFocus.ts","webpack://@reltio/remotes/../components/src/hooks/useScrollToAttributeError/styles.ts","webpack://@reltio/remotes/../components/src/hooks/useScrollToAttributeError/useScrollToAttributeError.ts","webpack://@reltio/remotes/../components/src/hooks/useUsers.ts","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 '@mui/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 '@mui/icons-material/ArrowRight';\nimport {IconButtonProps} from '@mui/material/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 data-reltio-id=\"arrow-expand-button\"\n {...otherProps}\n />\n );\n};\n\nexport default ArrowExpandButton;\n","import {makeStyles} from '@mui/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 minWidth: '20px',\n fontWeight: 'normal',\n lineHeight: 'inherit',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Toolbar, {ToolbarProps} from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\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 {i18n.text(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 '@mui/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 i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {startsWith} from 'ramda';\nimport {Comment, CollaborationObjectTypes} from '@reltio/mdm-sdk';\nimport {\n findAttributeTypeByUri,\n getLabel,\n getEntityUriForLink,\n getEntityId,\n getAttributeTypeUriByValueUri\n} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport {EntitiesMapContext, useMdmEntity, useMdmMetadata} 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 const entitiesMap = useContext(EntitiesMapContext);\n const metadata = useMdmMetadata();\n const entity = useMdmEntity();\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 '@mui/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 from '@mui/material/Typography';\nimport Link from '@mui/material/Link';\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 ? (\n <Link href={`mailto:${user.email}`} underline=\"hover\">\n {mention}\n </Link>\n ) : (\n mention\n );\n }).map((el, idx) => (\n <Fragment key={idx}>{el}</Fragment>\n ))}\n </Typography>\n );\n};\n","import {makeStyles} from '@mui/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 '@mui/material/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 '@mui/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 '@mui/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 {always, cond, T} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport {TextFieldWithMentions} from '../TextFieldWithMentions/TextFieldWithMentions';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext, useMdmUsername} 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 {\n createReply,\n createComment,\n sending,\n editComment,\n editReply,\n getCommentState,\n updateCommentState,\n clearCommentState\n } = useContext(CollaborationContext);\n const username = useMdmUsername();\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.forceUpdate();\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 '@mui/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, useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport Link from '@mui/material/Link';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\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, useMdmUsername} from '../../../contexts';\nimport {useAutoFocus} from '../../../hooks';\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 = useMdmUsername();\n const {commentId, createdBy, createdTime, status} = comment;\n const isResolved = status === 'resolved';\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 useAutoFocus(inputRef, isEditing);\n\n const menuItems = useMemo(\n () =>\n isResolved\n ? [\n {\n text: i18n.text('Delete'),\n onClick: () => deleteComment({uri, commentId})\n }\n ]\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 [commentId, deleteComment, isResolved, updateIsEditingComment, uri]\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\" underline=\"hover\">\n {i18n.text('Reply')}\n </Link>\n {!isResolved && (\n <Link\n disabled={sending}\n className={styles.button}\n onClick={handleResolve}\n component=\"button\"\n underline=\"hover\"\n >\n {i18n.text('Resolve')}\n </Link>\n )}\n {isResolved && (\n <Link\n disabled={sending}\n className={styles.button}\n onClick={handleReOpen}\n component=\"button\"\n underline=\"hover\"\n >\n {i18n.text('Re-open')}\n </Link>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@mui/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, useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Reply, Comment as CommentType} from '@reltio/mdm-sdk';\nimport Box from '@mui/material/Box';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport Typography from '@mui/material/Typography';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {createEditedReplyUri, formatDate} from '../utils';\nimport {CollaborationContext, useMdmUsername} from '../../../contexts';\nimport {useAutoFocus} from '../../../hooks';\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 username = useMdmUsername();\n const {createdBy, action, createdTime} = reply;\n const canChangeReply = createdBy === username && comment.status !== 'resolved';\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 useAutoFocus(inputRef, 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 '@mui/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 from '@mui/material/Box';\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 '@mui/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 '@mui/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 from '@mui/material/Tooltip';\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 from '@mui/material/Tooltip';\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 '@mui/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 from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport DoneIcon from '@mui/icons-material/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 {alpha} from '@mui/material/styles';\nimport {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n buttonRoot: {\n '&$selected': {\n color: theme.palette.action.active,\n backgroundColor: alpha(theme.palette.action.active, 0.12),\n '&:hover': {\n backgroundColor: alpha(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 from '@mui/material/Checkbox';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\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 from '@mui/material/Button';\nimport Menu, {MenuProps} from '@mui/material/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 data-reltio-id={'drop-down-menu-button'}\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 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 classnames from 'classnames';\nimport {getEntityImage, getEntityTypeImage, getAbsoluteImageUrl, Entity, svg2Url} from '@reltio/mdm-sdk';\nimport Avatar from '@mui/material/Avatar';\nimport {DEFAULT_PROFILE_IMAGE} from './no-photo.svg';\nimport {useMdmAbsoluteImagePath, useMdmMetadata} from '../../contexts';\n\ntype Props = {\n entity: Entity;\n avatarClassName?: string;\n imageClassName?: string;\n};\n\nconst EntityAvatar = ({entity, avatarClassName, imageClassName}: Props) => {\n const metadata = useMdmMetadata();\n const absoluteImagePath = useMdmAbsoluteImagePath() || '';\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 {TEntityType} from '@reltio/mdm-sdk';\nimport RC_EntityTypeIcon from 'react-components/dist/EntityTypeIcon/EntityTypeIcon';\nimport {useMdmAbsoluteImagePath} from '../../contexts';\n\nconst ensureSlashEnding = (str) => (str.endsWith('/') ? str : str + '/');\n\ntype Props = {\n entityType: TEntityType;\n className?: string;\n classes?: Record<string, unknown>;\n backgroundColor?: string;\n color?: string;\n};\n\nconst EntityTypeIcon = (props: Props) => {\n const absoluteImagePath = useMdmAbsoluteImagePath() || '';\n return <RC_EntityTypeIcon {...props} storagePath={ensureSlashEnding(absoluteImagePath)} />;\n};\n\nexport default EntityTypeIcon;\n","import React from 'react';\nimport classnames from 'classnames';\nimport Typography from '@mui/material/Typography';\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 '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\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\n variant=\"standard\"\n className={classnames(styles.wrapper, className, classes?.root)}\n error\n {...otherProps}\n >\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 '@mui/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} from '@mui/styles';\nimport {ImageSizeType} from './Image';\n\nexport const useStyles = makeStyles((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 '@mui/icons-material/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 '@mui/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 '@mui/icons-material/RadioButtonUnchecked';\nimport CheckCircleIcon from '@mui/icons-material/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 '@mui/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 from '@mui/material/Button';\nimport MoreVertIcon from '@mui/icons-material/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 '@mui/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 from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport AppBar from '@mui/material/AppBar';\nimport Toolbar from '@mui/material/Toolbar';\nimport Box from '@mui/material/Box';\nimport CloseIcon from '@mui/icons-material/Close';\nimport ViewCompactIcon from '@mui/icons-material/ViewCompact';\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: ViewCompactIcon\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 '@mui/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 '@mui/styles';\n\nexport const useStyles = makeStyles({\n loadingOverlay: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 10,\n backgroundColor: 'rgba(255, 255, 255, 0.37)'\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 from '@mui/material/LinearProgress';\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 data-reltio-id=\"reltio-linear-load-indicator\"\n className={classnames(styles.loadingOverlay, className, {\n [styles.transparent]: transparent,\n [styles.relativePosition]: relativePosition\n })}\n >\n <LinearProgress color=\"primary\" />\n </div>\n </>\n );\n};\n\nexport default LinearLoadIndicator;\n","import {alpha} from '@mui/material/styles';\nimport {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n '&.MuiButtonGroup-grouped': {\n minWidth: '30px',\n padding: '8px 8px',\n justifyContent: 'start',\n fill: 'rgba(0,0,0,0.54)',\n textTransform: 'none',\n color: 'rgba(0,0,0,0.87)',\n borderColor: 'rgba(0,0,0,0.12)',\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)'\n },\n '&:not(:last-of-type):hover': {\n borderRightColor: 'transparent'\n },\n '&$current': {\n '& $icon': {\n color: theme.palette.primary.main\n },\n backgroundColor: alpha(theme.palette.primary.main, 0.12),\n fill: theme.palette.primary.main,\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.24),\n borderRightColor: 'transparent'\n }\n }\n }\n },\n icon: {\n color: 'rgba(0,0,0,0.54)',\n width: '20px',\n height: '20px',\n '& + $title': {\n marginLeft: '8px'\n }\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n },\n current: {}\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport Button from '@mui/material/Button';\nimport ButtonGroup from '@mui/material/ButtonGroup';\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 '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => {\n const color = theme.palette.background.paper;\n return {\n paper: {\n backgroundColor: color,\n maxWidth: 1000\n },\n popper: {\n '&[data-popper-placement*=\"bottom\"] $arrow': {\n top: 0,\n marginTop: '-0.71em',\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n '&[data-popper-placement*=\"top\"] $arrow': {\n bottom: 0,\n marginBottom: '-0.71em',\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n '&[data-popper-placement*=\"right\"] $arrow': {\n left: 0,\n marginLeft: '-0.71em',\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '100% 100%'\n }\n },\n '&[data-popper-placement*=\"left\"] $arrow': {\n right: 0,\n marginRight: '-0.71em',\n height: '1em',\n width: '0.71em',\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, {useState} from 'react';\nimport classnames from 'classnames';\nimport Paper from '@mui/material/Paper';\nimport Fade from '@mui/material/Fade';\nimport Popper from '../Popper/Popper';\n\nimport {useStyles} from './styles';\n\ntype Props = React.ComponentPropsWithoutRef<typeof Popper> & {\n classes?: {\n root?: string;\n arrow?: string;\n };\n};\n\nexport const PopupWithArrow = ({children, className, classes, transition, ...otherProps}: Props) => {\n const styles = useStyles();\n\n const AnimationWrapper = transition ? Fade : React.Fragment;\n const [arrowRef, setArrowRef] = useState<HTMLElement | null>(null);\n\n return (\n <Popper\n className={classnames(styles.popper, className)}\n modifiers={[\n {\n name: 'preventOverflow',\n enabled: true,\n options: {\n rootBoundary: 'viewport',\n padding: 14,\n altAxis: true\n }\n },\n {\n name: 'arrow',\n enabled: true,\n options: {\n element: arrowRef,\n padding: 4\n }\n }\n ]}\n transition={transition}\n excludeAnchorFromBackdrop={false}\n {...otherProps}\n >\n {({TransitionProps}) => (\n <AnimationWrapper {...TransitionProps}>\n <Paper className={classnames(styles.paper, classes?.root)}>\n <span className={classnames(styles.arrow, classes?.arrow)} ref={setArrowRef} />\n {children}\n </Paper>\n </AnimationWrapper>\n )}\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 '@mui/material/Input';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport CloseIcon from '@mui/icons-material/Close';\nimport SearchIcon from '@mui/icons-material/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 '@mui/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 '@mui/material/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 '@mui/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 '@mui/styles';\n\nexport const useStyles = makeStyles({\n label: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '13px',\n lineHeight: '16px'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport RequiredMark from '../RequiredMark/RequiredMark';\nimport Typography from '@mui/material/Typography';\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 '@mui/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(\n (index) => getItemSize(index, getItemByIndex(index).item),\n [getItemByIndex, 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 '@mui/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 React from 'react';\n\nconst SvgDescription: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={12} height={12} viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M5.417 9.5h1.166V8.333H5.417V9.5zM6 .167A5.835 5.835 0 00.167 6 5.835 5.835 0 006 11.833 5.835 5.835 0 0011.833 6 5.835 5.835 0 006 .167zm0 10.5A4.673 4.673 0 011.333 6 4.673 4.673 0 016 1.333 4.673 4.673 0 0110.667 6 4.673 4.673 0 016 10.667zM6 2.5a2.333 2.333 0 00-2.333 2.333h1.166A1.17 1.17 0 016 3.667a1.17 1.17 0 011.167 1.166c0 1.167-1.75 1.021-1.75 2.917h1.166c0-1.313 1.75-1.458 1.75-2.917A2.333 2.333 0 006 2.5z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgDescription;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n icon: {\n display: 'inline-flex',\n marginLeft: '8px',\n verticalAlign: 'middle'\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport Tooltip from '@mui/material/Tooltip';\nimport {FeaturesContext} from '../../../contexts';\nimport Description from '../../../icons/Description';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n description?: string;\n showDescription?: boolean;\n};\nconst DescriptionIcon = ({className, description}: Props) => {\n const {showDescription} = useContext(FeaturesContext);\n const styles = useStyles();\n\n if (!description || !showDescription) {\n return null;\n }\n\n return (\n <Tooltip title={description} placement=\"bottom\">\n <span data-reltio-id=\"reltio-description-icon\" className={classnames(styles.icon, className)}>\n <Description />\n </span>\n </Tooltip>\n );\n};\n\nexport default DescriptionIcon;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((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 '@mui/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 from '@mui/material/Grid';\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 '@mui/icons-material/NavigateBefore';\nimport NavigateNextIcon from '@mui/icons-material/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 '@mui/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 borderColor: '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 from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\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 '@mui/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 '@mui/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 {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport Box from '@mui/material/Box';\nimport AttributesPager from '../../attributes/readMode/AttributesPager/AttributesPager';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoItem} from './MetaInfoItem/MetaInfoItem';\nimport {getNotSystemAttributesList, getSystemAttributesList} from '../helpers';\nimport {useMdmIsViewMode} from '../../../contexts';\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\n const isViewMode = useMdmIsViewMode();\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 '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {},\n form: {\n padding: '10px 0'\n },\n divider: {\n width: '100%',\n height: '1px',\n borderColor: '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 from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\nimport Button from '@mui/material/Button';\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 {\n addAttribute,\n editAttribute,\n removeAttribute,\n AttributeType,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext, useMdmAction} from '../../../contexts';\n\ntype Params = {\n initialAttributeValue: ImageAttributeValue;\n attributeType: AttributeType;\n};\n\nexport const useEditMetaInfo = ({initialAttributeValue, attributeType}: Params) => {\n const viewId = useContext(ViewIdContext);\n const modifyAttribute = useMdmAction('modifyAttribute');\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 modifyAttribute({value: attributeValue, attributeType: attributeType, uri: attributeValue.uri, viewId});\n }, [attributeValue, attributeType, viewId, modifyAttribute]);\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';\nimport {ThemeOptions} from '@mui/material/styles';\n\nconst darkTheme: ThemeOptions = {\n palette: {\n mode: 'dark',\n primary: theme.palette.primary,\n secondary: theme.palette.secondary\n }\n};\n\nexport {darkTheme};\n","import React from 'react';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {ThemeProvider, createTheme} from '@mui/material/styles';\nimport Box from '@mui/material/Box';\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';\nimport {useMdmIsEditableMode, useMdmMode} from '../../../contexts';\n\nconst darkMuiTheme = createTheme(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 mode = useMdmMode();\n const isEditableMode = useMdmIsEditableMode();\n const {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n } = useEditMetaInfo({attributeType, initialAttributeValue});\n\n return (\n <ThemeProvider 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 </ThemeProvider>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((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 i18n from 'ui-i18n';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Typography from '@mui/material/Typography';\nimport {AttributeType, Entity, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {MetaInfo} from '../MetaInfo/MetaInfo';\nimport {\n useMdmEntity,\n useMdmImageAttributesFieldsOrder,\n useMdmIsViewMode,\n useMdmModifiedEntity\n} from '../../../contexts';\nimport {useStyles} from './styles';\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\n const [isDefault, setIsDefault] = useState<boolean>(false);\n\n const entity = useMdmEntity() || ({} as Entity);\n const modifiedEntity = useMdmModifiedEntity(entity?.uri) || ({} as Entity);\n const isViewMode = useMdmIsViewMode();\n const imageAttributeConfig = useMdmImageAttributesFieldsOrder() || {};\n\n const entityToShow = isViewMode ? entity : modifiedEntity;\n const imageAttributeFieldsOrder = imageAttributeConfig[entity?.type] || imageAttributeConfig?.default || {};\n\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={<Checkbox className={styles.checkbox} checked={isDefault} onChange={handleChange} />}\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 '@mui/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 from '@mui/material/Box';\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 '@mui/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 from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\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 '@mui/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 from '@mui/material/Link';\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 '@mui/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 from '@mui/material/Button';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport LinkIcon from '@mui/icons-material/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 {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';\nimport {useMdmIsViewMode} from '../../contexts';\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\n const isViewMode = useMdmIsViewMode();\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 '@mui/styles';\nimport {alpha} from '@mui/material/styles';\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: alpha(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 ReactResizeDetector from 'react-resize-detector';\nimport Typography from '@mui/material/Typography';\nimport {\n AttributeType,\n Entity,\n ImageAttributeValue,\n insertDefaultImageByAttrUri,\n Paging,\n AttributeItem,\n RequestNextPageOfAttributeValuesPayload\n} from '@reltio/mdm-sdk';\nimport {BlockImageGalleryDialogContext, useMdmAction, useMdmEntity, useMdmIsViewMode} 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 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 setDefaultProfilePicForEntity = useMdmAction('setDefaultProfilePicForEntity');\n const setDefaultProfilePicForModifiedEntity = useMdmAction('setDefaultProfilePicForModifiedEntity');\n const entity = useMdmEntity() || ({} as Entity);\n const isViewMode = useMdmIsViewMode();\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 setDefaultProfilePicForEntity(attributeValue);\n }\n });\n } else {\n setDefaultProfilePicForModifiedEntity({\n entityUri: entity.uri,\n value: attributeValue\n });\n }\n },\n [isViewMode, entity.uri, setDefaultProfilePicForEntity, setDefaultProfilePicForModifiedEntity]\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 {alpha} from '@mui/material/styles';\n\nimport {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n height: '16px',\n borderColor: alpha(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, useContext} from 'react';\nimport classnames from 'classnames';\nimport {\n getAttrDataTypeDefinition,\n getAttributeValue,\n isComplexAttribute,\n getLabel,\n AttributeType,\n SimpleAttributeValue,\n NestedAttributeValue,\n ReferenceAttributeValue\n} from '@reltio/mdm-sdk';\nimport Chip from '@mui/material/Chip';\nimport DataTypeValue from '../../DataTypeValue/DataTypeValue';\nimport {withTooltip} from '../../../HOCs';\nimport {EntityContext, useMdmAction} from '../../../contexts';\nimport {getEntityUri} from './heplers';\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};\n\nconst OvIcon = ({className, attributeType, nonOvValues = [], nonOvTotal}: Props) => {\n const styles = useStyles();\n const openEntity = useMdmAction('openEntity');\n const entity = useContext(EntityContext);\n const entityUri = getEntityUri(entity, nonOvValues);\n\n const onClick = useCallback(() => {\n openEntity({uri: entityUri, viewId: null, screen: 'sources'});\n }, [openEntity, entityUri]);\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=\"bottom\"\n label={`+ ${nonOvTotal}`}\n variant=\"outlined\"\n onClick={entityUri ? onClick : undefined}\n classes={{\n root: classnames(styles.container, className),\n label: styles.label\n }}\n />\n );\n};\n\nexport default OvIcon;\n","import {\n getEntityUriFromAttributeUri,\n isEntityUri,\n Entity,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\n\ntype NonOvValues = Array<SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue>;\n\nexport const getEntityUri = (entity: Entity, nonOvValues: NonOvValues) => {\n const attributeUri = nonOvValues?.[0]?.uri;\n const entityOrRelationUri = attributeUri ? getEntityUriFromAttributeUri(attributeUri) : null;\n return entityOrRelationUri && isEntityUri(entityOrRelationUri) ? entityOrRelationUri : entity?.uri;\n};\n","import {useCallback, useState, useMemo} from 'react';\n\nimport {\n AttributeType,\n convertPivotingValueToSearchFilters,\n Entity,\n getFilteredEntities,\n getTotals,\n PivotingValue,\n PrimitiveValue\n} from '@reltio/mdm-sdk';\n\nimport {useMdmEntity, useMdmGlobalSearchRequestOptions} from '../../contexts';\nimport {useSafePromise} from '../useSafePromise';\n\nexport const MAX_ENTITIES_PIVOTING_TOOLTIP = 6;\n\nexport type Props = {\n value: PivotingValue[] | PrimitiveValue;\n attributeType: AttributeType;\n config: {entityType?: string};\n};\n\nexport const usePivotingDataLoader = ({value, attributeType, config = {}}: Props) => {\n const [entities, setEntities] = useState<Entity[]>([]);\n const [total, setTotal] = useState(0);\n const safePromise = useSafePromise();\n const entity = useMdmEntity() || ({} as Entity);\n const globalSearchRequestOptions = useMdmGlobalSearchRequestOptions();\n const entityType = config.entityType || entity.type;\n const filters = useMemo(\n () => convertPivotingValueToSearchFilters({value, attributeType, entityType}),\n [attributeType, entityType, value]\n );\n const options = useMemo(\n () => ({\n max: MAX_ENTITIES_PIVOTING_TOOLTIP,\n sort: 'label',\n ...(globalSearchRequestOptions || {})\n }),\n [globalSearchRequestOptions]\n );\n\n const loadPivotingData = useCallback(() => {\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 }, [filters, options, safePromise]);\n return {entities, total, loadPivotingData};\n};\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} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React, {forwardRef, useContext} from 'react';\nimport classnames from 'classnames';\nimport {AttributeType, PivotingValue} from '@reltio/mdm-sdk';\nimport {UrlGeneratorsContext, useMdmUiPath} from '../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n value: PivotingValue[];\n children: React.ReactNode;\n attributeType: AttributeType;\n onClick: () => void;\n};\n\nconst PivotingUriLink = forwardRef(\n ({value, attributeType, children, className, onClick}: Props, ref: React.Ref<HTMLAnchorElement>) => {\n const styles = useStyles();\n const {generatePivotingUrl} = useContext(UrlGeneratorsContext);\n const uiPath = useMdmUiPath();\n const url = generatePivotingUrl({uiPath, uri: attributeType.uri, value: JSON.stringify(value)});\n\n return (\n <a\n ref={ref}\n href={url}\n onClick={(e) => {\n onClick();\n e.stopPropagation();\n e.preventDefault();\n }}\n className={classnames(styles.link, className)}\n >\n {children}\n </a>\n );\n }\n);\n\nPivotingUriLink.displayName = 'PivotingUriLink';\n\nexport default PivotingUriLink;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((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: '32px',\n paddingLeft: '16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '16px'\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 wordBreak: 'break-word'\n },\n icon: {\n marginRight: '8px',\n verticalAlign: 'middle',\n width: '12px',\n height: '12px'\n },\n content: {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n lineHeight: '16px'\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 from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, Entity, getEntityUriForLink, getLabel, PivotingValue} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport PivotingUriLink from '../../PivotingUriLink/PivotingUriLink';\nimport {MAX_ENTITIES_PIVOTING_TOOLTIP} from '../../../hooks/usePivotingDataLoader/usePivotingDataLoader';\nimport {useStyles} from './styles';\n\nexport type Props = {\n attributeType: AttributeType;\n config: {label?: string};\n entities: Entity[];\n generatedValue: PivotingValue[];\n onSeeAllClick: () => void;\n total: number;\n};\n\nexport const PivotingTooltipContent = ({\n attributeType,\n config = {},\n entities,\n generatedValue,\n onSeeAllClick,\n total\n}: Props) => {\n const styles = useStyles();\n const shouldShowSeeAllButton = total > MAX_ENTITIES_PIVOTING_TOOLTIP;\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 <PivotingUriLink\n value={generatedValue}\n attributeType={attributeType}\n className={styles.seeAllButton}\n onClick={onSeeAllClick}\n >\n {i18n.text('See all')}\n </PivotingUriLink>\n </div>\n )}\n </div>\n );\n};\n","import React, {useContext} from 'react';\nimport Tooltip from '@mui/material/Tooltip';\nimport {\n AttributeType,\n isNested,\n Metadata,\n NestedAttributeValue,\n PrimitiveValue,\n RecordAttributesType,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {isNil} from 'ramda';\n\nimport {PivotingAttributeContext, useMdmAction, useMdmMetadata} from '../../../contexts';\nimport {usePivotingDataLoader} from '../../../hooks/usePivotingDataLoader/usePivotingDataLoader';\nimport {\n convertNestedAttributePivotingValue,\n convertSimpleAttributePivotingValue,\n generatePivotingValue,\n preparePivotingAttributeValue\n} from './helpers';\nimport PivotingIcon from '../../../icons/PivotingIcon';\nimport {PivotingTooltipContent} from './PivotingTooltipContent';\nimport PivotingUriLink from '../../PivotingUriLink/PivotingUriLink';\nimport {usePivotingTooltipStyles, useStyles} from './styles';\n\ntype Props = {\n value: SimpleAttributeValue | NestedAttributeValue;\n attributeType: AttributeType;\n children?: React.ReactNode;\n className?: string;\n};\n\nexport const PivotingTooltip = ({value, attributeType, children, className}: Props) => {\n const styles = usePivotingTooltipStyles();\n const contentStyles = useStyles();\n const pivotingAttributesList = useContext(PivotingAttributeContext) || [];\n const openPivotingPerspective = useMdmAction('openPivotingPerspective');\n const metadata = useMdmMetadata() || ({} as Metadata);\n const isNestedAttribute = isNested(attributeType);\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 convertPivotingValue = () =>\n Array.isArray(pivotingValue)\n ? convertNestedAttributePivotingValue(pivotingValue)\n : convertSimpleAttributePivotingValue(attributeType, pivotingValue);\n\n const generatedValue = isPivotingAttribute ? convertPivotingValue() : undefined;\n const handleSeeAllClick = () => {\n openPivotingPerspective({value: generatedValue, attributeType});\n };\n const {entities, total, loadPivotingData} = usePivotingDataLoader({\n value: pivotingValue,\n attributeType,\n config: pivotingAttribute?.popup\n });\n return isPivotingAttribute ? (\n <Tooltip\n arrow\n placement=\"right-start\"\n classes={styles}\n disableInteractive={false}\n onOpen={loadPivotingData}\n title={\n <PivotingTooltipContent\n generatedValue={generatedValue}\n attributeType={attributeType}\n config={pivotingAttribute.popup}\n onSeeAllClick={handleSeeAllClick}\n entities={entities}\n total={total}\n />\n }\n >\n <span className={className}>\n <PivotingIcon className={contentStyles.icon} />\n <PivotingUriLink\n onClick={handleSeeAllClick}\n className={contentStyles.content}\n value={generatedValue}\n attributeType={attributeType}\n >\n {children}\n </PivotingUriLink>\n </span>\n </Tooltip>\n ) : (\n <>{children}</>\n );\n};\n","import {AttributeType} from '@reltio/mdm-sdk';\nimport React, {forwardRef} from 'react';\nimport EditModeAttributesFactory from './AttributesFactory';\n\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n} & Record<string, unknown>;\n\nconst Attribute = forwardRef((props: Props, ref: React.MutableRefObject<HTMLDivElement>) => {\n const {className, ...otherProps} = props;\n return (\n <div ref={ref} data-reltio-id=\"reltio-edit-attribute\" className={className}>\n {EditModeAttributesFactory.build(props.attributeType, otherProps)}\n </div>\n );\n});\n\nAttribute.displayName = 'Attribute';\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/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, {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 {last, 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';\nimport {withContext} from '../../../../HOCs';\nimport {ScrollType, ScrollToElementContext} from '../../../../contexts';\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 highlightAttribute\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 highlightAttribute(last(attributeTypes), ScrollType.NewAttribute);\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}_${parentUri}`}\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 highlightAttribute: PropTypes.func\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue) => {\n const {highlightAttribute} = contextValue || {};\n return {highlightAttribute};\n },\n AttributesList\n);\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 {filter, propSatisfies} from 'ramda';\nimport {isTempUri} from '@reltio/mdm-sdk';\n\nconst filterNewValues = filter(propSatisfies(isTempUri, 'uri'));\n\nexport {filterNewValues};\n","import {makeStyles} from '@mui/styles';\n\nconst highlightBeforeStyles = {\n content: '\"\"',\n position: 'absolute',\n left: '-1000px',\n top: '-4px',\n width: '5000px',\n height: 'calc(100% + 8px)',\n animationName: '$highlightAnimation',\n animationDuration: '2s',\n animationIterationCount: 1,\n opacity: 0\n};\n\nexport const useStyles = makeStyles(() => ({\n '@keyframes highlightAnimation': {\n '0%': {opacity: 0},\n '50%': {opacity: 1},\n '100%': {opacity: 0}\n },\n highlighted: {\n '&::before': {\n ...highlightBeforeStyles,\n background: 'rgba(228, 151, 0, 0.08)'\n },\n position: 'relative'\n }\n}));\n","import {ContextType, useEffect, useRef} from 'react';\nimport {ScrollToElementContext} from '../../../../../contexts';\n\nimport {useStyles} from './styles';\n\nexport const useScrollToAttribute = (context?: ContextType<typeof ScrollToElementContext>) => {\n const styles = useStyles();\n\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (context) {\n context.scrollIntoRef(ref);\n }\n }, [context]);\n\n return context ? {ref, highlightedClassName: styles.highlighted} : {ref};\n};\n","import React, {useCallback, useRef, useState, useContext, useMemo, memo} from 'react';\nimport classNames from 'classnames';\nimport {\n AttributeValue,\n createNewAttribute,\n getAttributeOwnError,\n isComplexAttribute,\n isEditableMode as checkIsEditableMode,\n isEmptyValue,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem,\n AttributeType,\n AttributeError,\n RequestNextPageOfAttributeValuesPayload\n} from '@reltio/mdm-sdk';\nimport {add, always, has, ifElse, min, pipe, prop, T, omit} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Title from '../../../Title/Title';\nimport OvIcon from '../../OvIcon';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Cardinality from './CardinalityMessage';\nimport {AttributePagerProps} from './types';\nimport {filterNewValues} from './utils';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport {useScrollToAttributeError} from '../../../../hooks';\nimport DescriptionIcon from '../../DescriptionIcon/DescriptionIcon';\nimport {useScrollToAttribute} from '../hooks/useScrollToAttribute/useScrollToAttribute';\nimport {useStyles} from './styles';\n\ntype Props = Omit<AttributePagerProps, 'values'> & {\n values?: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n nonVisibleValues: AttributeValue[];\n errorMessage?: string;\n errors?: AttributeError[];\n max?: number;\n onDeactivateError?: (id: string) => void;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\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 highlightedError,\n highlightedAttribute,\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, description} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n const {ref: errorRef, errorClassName} = useScrollToAttributeError({highlightedError});\n const {ref: attributeRef, highlightedClassName} = useScrollToAttribute(highlightedAttribute);\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: omit(['defaultValue'], attributeType)\n })\n );\n\n const onAddOneMore = useCallback(() => {\n setVisibleValuesCount(visibleValuesCount + 1);\n\n const createAttribute = (attributeType: AttributeType): AttributeItem => ({\n parentUri,\n index: visibleValuesCount,\n attributeType\n });\n\n if (showEmpty && !isComplexAttribute(attributeType.type)) {\n const attributes = [createAttribute(omit(['defaultValue'], attributeType)), createAttribute(attributeType)];\n return onAddAttributes(attributes);\n }\n\n return onAddAttributes([createAttribute(attributeType)]);\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 ref={errorRef} className={classNames(styles.wrapper, errorClassName)}>\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 <DescriptionIcon description={description} />\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 className={idx === 0 ? highlightedClassName : null}\n ref={idx === 0 ? attributeRef : null}\n isEmptyEditor={showEmpty}\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\nAttributeRenderer.displayName = 'AttributeRenderer';\n\nexport default memo(AttributeRenderer);\n","import {makeStyles} from '@mui/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 {EntityAttrTypes, getRolesForEntityType, getLastUriPart, AttributeItem} from '@reltio/mdm-sdk';\nimport SimpleDropDownSelector from '../../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {MultiValueChip} from '../../..';\nimport {useStyles} from './styles';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport {useMdmEntity, useMdmMetadata} from '../../../../contexts';\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 const metadata = useMdmMetadata();\n const entity = useMdmEntity();\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\n data-reltio-id=\"reltio-roles-delete-button\"\n className={styles.deleteButton}\n icon={DeleteIcon}\n onClick={handleDelete}\n size=\"L\"\n />\n )}\n </div>\n );\n};\n","import {makeStyles} from '@mui/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 {EntityAttrTypes, AttributeItem, getFacetedAttributeData} from '@reltio/mdm-sdk';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport TypeaheadEditor from '../../../editors/TypeaheadEditor/TypeaheadEditor';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {useMdmEntityUri, useMdmGlobalSearchRequestOptions} from '../../../../contexts';\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 Tags = ({className, values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n const entityUri = useMdmEntityUri();\n const globalSearchRequestOptions = useMdmGlobalSearchRequestOptions();\n\n const getSuggestions = useCallback(\n async (searchValue: string, max: number, pageNo: number) => {\n const response = await getFacetedAttributeData({\n fieldName: 'tags',\n searchValue,\n options: {...globalSearchRequestOptions, max, pageNo}\n });\n return Object.keys(response.tags);\n },\n [globalSearchRequestOptions]\n );\n\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\n data-reltio-id=\"reltio-tags-delete-button\"\n className={styles.deleteButton}\n icon={DeleteIcon}\n onClick={handleDelete}\n size=\"L\"\n />\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 classnames from 'classnames';\nimport {pipe, T} from 'ramda';\nimport Box from '@mui/material/Box';\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';\nimport {ScrollToElementContext} from '../../../../contexts';\nimport {useScrollToAttribute} from '../hooks/useScrollToAttribute/useScrollToAttribute';\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 highlightedAttribute?: React.ContextType<typeof ScrollToElementContext>;\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 highlightedAttribute,\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 {ref, highlightedClassName} = useScrollToAttribute(highlightedAttribute);\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 <div ref={ref} className={classnames(highlightedClassName, styles.wrapper)}>\n <Title\n label={label}\n isRequired={isRequired}\n className={classnames(styles.title, styles.titleWrapper)}\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 </div>\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, {useCallback} from 'react';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport {\n AttributeError,\n AttributeItem,\n AttributeType,\n ImageAttributeValue,\n Paging,\n RequestNextPageOfAttributeValuesPayload,\n getErrorId\n} from '@reltio/mdm-sdk';\nimport Title from '../../../Title/Title';\nimport DescriptionIcon from '../../DescriptionIcon';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport {ScrollToElementContext} from '../../../../contexts';\nimport {useScrollToAttribute} from '../hooks/useScrollToAttribute/useScrollToAttribute';\nimport {useScrollToAttributeError} from '../../../../hooks';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n paging?: Paging;\n parentUri?: string;\n showNonOv?: boolean;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n highlightedAttribute?: React.ContextType<typeof ScrollToElementContext>;\n error?: AttributeError;\n highlightedError?: React.ContextType<typeof ScrollToElementContext>;\n onDeactivateError?: (id: string) => void;\n};\n\nexport const ImageLineRenderer = ({\n attributeType,\n attributeValues,\n paging,\n parentUri,\n showNonOv,\n onDeleteAttribute,\n onChangeAttribute,\n requestNextPageOfAttributeValues,\n highlightedAttribute,\n error,\n highlightedError,\n onDeactivateError\n}: Props) => {\n const styles = useStyles();\n const {label, description, required: isRequired} = attributeType;\n const {ref: highlightedRef, highlightedClassName} = useScrollToAttribute(highlightedAttribute);\n const {ref: errorRef, errorClassName} = useScrollToAttributeError({highlightedError});\n const deactivateError = useCallback(() => {\n if (error && !!onDeactivateError) {\n onDeactivateError(getErrorId(error));\n }\n }, [error, onDeactivateError]);\n\n return (\n <div ref={highlightedRef} className={classnames(styles.wrapper, highlightedClassName)}>\n <div ref={errorRef} className={classnames(styles.imagesWrapper, errorClassName)}>\n <div className={styles.titleWrapper}>\n <Title\n className={styles.title}\n label={label}\n data-reltio-id=\"reltio-attribute-label\"\n isRequired={isRequired}\n />\n <DescriptionIcon description={description} />\n </div>\n <ErrorWrapper errorMessage={error?.message} className={styles.errorWrapper}>\n <ImageAttributesLine\n attributeValues={attributeValues}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={pipe(onChangeAttribute, deactivateError)}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </ErrorWrapper>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport {\n AttributeError,\n AttributeType,\n getAttributeErrorByTypeUri,\n getAttributePagerActiveTypeErrorMessage,\n isAttributeTypeError,\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 AttributeRenderer from './AttributeRenderer';\nimport {AttributePagerProps} from './types';\nimport SpecialRenderer from './SpecialRenderer';\nimport {ImageLineRenderer} from './ImageLineRenderer';\nimport {withContext} from '../../../../HOCs';\nimport {\n isHighlightedAttributeType,\n isHighlightedErrorType,\n ScrollToElementContext,\n useMdmAction,\n useMdmActiveErrorsForAttributesPager,\n useMdmDefaultMaxValues,\n useMdmProfileErrors\n} from '../../../../contexts';\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 max: maxProp,\n showEmptyEditors,\n showNonOv,\n highlightedError,\n highlightedAttribute,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n additionalControlsRenderer\n}: AttributePagerProps) => {\n const onDeactivateError = useMdmAction('errorDeactivated');\n const requestNextPageOfAttributeValues = useMdmAction('requestNextPageOfAttributeValues');\n const activeErrors = useMdmActiveErrorsForAttributesPager(parentUri, attributeType);\n const profileErrors = useMdmProfileErrors();\n const defaultMaxValues = useMdmDefaultMaxValues();\n\n const errorMessage = getAttributePagerActiveTypeErrorMessage(parentUri, attributeType, profileErrors);\n const max = maxProp ?? defaultMaxValues ?? Infinity;\n\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: activeErrors,\n mode,\n parentUri,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n showEmptyEditors,\n highlightedError,\n highlightedAttribute\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 <ImageLineRenderer\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={onChangeAttribute}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n highlightedAttribute={highlightedAttribute}\n error={getAttributeErrorByTypeUri(attributeType.uri, activeErrors)}\n highlightedError={highlightedError}\n onDeactivateError={onDeactivateError}\n />\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 withContext(\n ScrollToElementContext,\n (contextValue, {attributeType, parentUri}) => {\n const {element, type} = contextValue || {};\n const isHighlightedAttribute =\n isHighlightedAttributeType(type) && (element as AttributeType).uri === attributeType.uri;\n const isHighlightedError =\n isHighlightedErrorType(type) &&\n isAttributeTypeError(element as AttributeError, parentUri, attributeType.uri);\n return {\n highlightedAttribute: isHighlightedAttribute ? contextValue : null,\n highlightedError: isHighlightedError ? contextValue : null\n };\n },\n AttributesPager\n);\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Typography from '@mui/material/Typography';\nimport {allPass, always, cond, isNil, has, not, pipe, propSatisfies, T} from 'ramda';\nimport {useStyles} from './styles';\nimport {Cardinality} from '@reltio/mdm-sdk';\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\ntype Props = {\n cardinality?: Cardinality;\n};\n\nconst CardinalityMessage = ({cardinality}: Props) => {\n const styles = useStyles();\n const cardinalityMessage = getCardinalityMessage(cardinality);\n return cardinalityMessage ? (\n <Typography variant=\"caption\" className={styles.caption}>\n {cardinalityMessage}\n </Typography>\n ) : null;\n};\n\nexport default CardinalityMessage;\n","import {makeStyles} from '@mui/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 position: 'relative'\n },\n attributesWrapper: {\n width: '100%',\n marginBottom: '10px'\n },\n imagesWrapper: {\n paddingBottom: '10px',\n width: '100%'\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 verticalAlign: 'middle',\n wordBreak: 'break-all',\n color: theme.palette.text.secondary\n },\n typeError: {\n marginLeft: '12px'\n },\n ovIcon: {\n marginLeft: '8px',\n textIndent: 0\n },\n titleWrapper: {\n display: 'inline-block',\n paddingBottom: '3px'\n },\n errorWrapper: {\n paddingBottom: '10px'\n }\n}));\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n complexWrapper: {\n position: 'relative'\n },\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 {pipe, propOr, pathEq, any} from 'ramda';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\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';\nimport Button from '@mui/material/Button';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Typography from '@mui/material/Typography';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport AttributesList from '../AttributesList/AttributesList';\nimport {withContext} from '../../../../HOCs';\nimport {isHighlightedErrorType, ScrollToElementContext} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\n\nimport {useStyles} from './styles';\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 isHighlightedPath,\n highlightedError,\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 const {ref, errorClassName} = useScrollToAttributeError({highlightedError});\n\n useEffect(() => {\n if (isHighlightedPath) {\n setExpanded(true);\n }\n }, [isHighlightedPath]);\n\n useEffect(() => {\n setExpanded(defaultExpand);\n }, [defaultExpand]);\n\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(\n () => hasAttributeDescendantsWithErrors(attributeValue, errors),\n [errors, 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 <div ref={ref} className={classnames(styles.complexWrapper, errorClassName)}>\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 && (\n <SmallIconButton\n icon={DeleteIcon}\n onClick={onDeleteThis}\n size=\"L\"\n data-reltio-id=\"reltio-delete-complex-attribute-button\"\n />\n )}\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 </div>\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 highlightedError: PropTypes.object,\n isHighlightedPath: PropTypes.bool,\n ...ComplexAttributeType\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue, {attributeValue}) => {\n const {element, type} = contextValue || {};\n const isError = isHighlightedErrorType(type);\n const isHighlighted = isError && element?.uri === attributeValue.uri;\n const isHighlightedPath =\n isError && pipe(propOr([], 'path'), any(pathEq(['value', 'uri'], attributeValue.uri)))(element);\n return {\n highlightedError: isHighlighted ? contextValue : null,\n isHighlightedPath\n };\n },\n ComplexAttribute\n);\n","import React, {useMemo} from 'react';\nimport {AttributeType, Mode, TEntityType} from '@reltio/mdm-sdk';\nimport AttributesList from '../AttributesList';\nimport {useMdmAction, useMdmModifiedEntity} from '../../../../contexts';\n\nconst defaultAttributeTypesSelectionStrategy = (entityType: TEntityType) => entityType && entityType.attributes;\n\ntype Props = {\n entityUri: string;\n entityType: TEntityType;\n mode: Mode;\n attributeTypesSelectionStrategy?: (entityType: TEntityType) => AttributeType[];\n};\n\nconst EntityCreator = ({\n entityUri,\n entityType,\n mode,\n attributeTypesSelectionStrategy = defaultAttributeTypesSelectionStrategy\n}: Props) => {\n const addAttributes = useMdmAction('addAttributes');\n const removeAttribute = useMdmAction('removeAttribute');\n const modifyAttribute = useMdmAction('modifyAttribute');\n const entity = useMdmModifiedEntity(entityUri);\n\n const attributeTypes = useMemo(\n () => attributeTypesSelectionStrategy(entityType),\n [attributeTypesSelectionStrategy, entityType]\n );\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={addAttributes}\n onChangeAttribute={modifyAttribute}\n onDeleteAttribute={removeAttribute}\n />\n ) : null;\n};\n\nexport default EntityCreator;\n","import {makeStyles} from '@mui/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 pointerEvents: 'all'\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 MenuItem from '@mui/material/MenuItem';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport ExpandedValueTooltip from '../../../../ExpandedValueTooltip/ExpandedValueTooltip';\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 <ExpandedValueTooltip value={`${label}${secondaryLabel ? ', ' + secondaryLabel : ''}`}>\n <span className={styles.entityLabel}>\n {label}\n {secondaryLabel && <span className={styles.entitySecondaryLabel}>, {secondaryLabel}</span>}\n </span>\n </ExpandedValueTooltip>\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 PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getLabel, isTempUri} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport {ViewIdContext, UrlGeneratorsContext, useMdmUiPath, useMdmAction} from '../../../../../contexts';\nimport {useSingleValueStyles} from './styles';\n\nconst SingleValue = (props) => {\n const {\n selectProps: {currentEntityType, menuIsOpen, disableLinkClick},\n children,\n data\n } = props;\n\n const styles = useSingleValueStyles();\n const openEntity = useMdmAction('openEntity');\n const uiPath = useMdmUiPath();\n const viewId = useContext(ViewIdContext);\n const {generateEntityUrl} = useContext(UrlGeneratorsContext);\n\n const handleOnMouseDown = (event) => {\n event.stopPropagation();\n if (!disableLinkClick) {\n openEntity({uri: data.entityUri, viewId});\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: generateEntityUrl({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 '@mui/icons-material/Clear';\nimport {useClearIconStyles} from './styles';\nimport IconButton from '@mui/material/IconButton';\n\nconst ClearIndicator = (props) => {\n const {\n selectProps: {onClear}\n } = props;\n\n const styles = useClearIconStyles();\n\n return (\n <IconButton onClick={onClear} size=\"large\">\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 '@mui/icons-material/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 '@mui/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 isAvailableEntityType,\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/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(\n () => entityTypesUris.map((type) => getEntityType(metadata, type)).filter(isAvailableEntityType),\n [entityTypesUris, 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 '@mui/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 from '@mui/material/Box';\nimport Paper from '@mui/material/Paper';\nimport InputBase from '@mui/material/InputBase';\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\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 from '@mui/material/Button';\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 data-reltio-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 '@mui/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 from '@mui/material/Typography';\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 '@mui/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 from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\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 '@mui/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 '@mui/icons-material/Close';\nimport Snackbar from '@mui/material/Snackbar';\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 '@mui/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 {uploadImage as uploadImageRequest, ImageHostingItem, getRequestErrorMessage} from '@reltio/mdm-sdk';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport Typography from '@mui/material/Typography';\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';\nimport {useMdmEnvironment, useMdmImageServicePath, useMdmTenant} from '../../contexts';\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 [loading, setLoading] = useState(false);\n const [error, setError] = useState<string>(null);\n\n const imageServicePath = useMdmImageServicePath();\n const environment = useMdmEnvironment();\n const tenant = useMdmTenant();\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) => {\n setError(getRequestErrorMessage(err, i18n.text('Something went wrong')));\n })\n .finally(() => setLoading(false));\n };\n\n const handleAppendImage = (image?: File) => {\n if (!image) {\n return setError(i18n.text('No image selected.'));\n }\n\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 '@mui/styles';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n width: '100%'\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 React, {useCallback, useState} from 'react';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport {\n AttributeType,\n Entity,\n generateUri,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n ImageHostingItem,\n Paging,\n AttributeItem,\n RequestNextPageOfAttributeValuesPayload\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 {useMdmAction, useMdmEntity, useMdmModifiedEntityDefaultProfilePic} from '../../../../contexts';\nimport {useStyles} from './styles';\n\nconst defaultEntity = {} as Entity;\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 [isVisibleUploadDialog, setIsVisibleUploadDialog] = useState(false);\n\n const setDefaultProfilePic = useMdmAction('setDefaultProfilePicForModifiedEntity');\n const entity = useMdmEntity() || defaultEntity;\n const defaultProfilePic = useMdmModifiedEntityDefaultProfilePic(entity.uri);\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 setDefaultProfilePic({\n entityUri: entity.uri,\n value: newDefaultPic || ({} as ImageAttributeValue)\n });\n }\n },\n [onDeleteAttribute, entity, defaultProfilePic, attributeValues, setDefaultProfilePic]\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 data-reltio-id=\"reltio-upload-image-button\"\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 ImageAttributesLine from './ImageAttributesLine';\n\nexport default ImageAttributesLine;\n","import {AttributeType} from '@reltio/mdm-sdk';\nimport {curry, filter, map, pipe, sort} 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 sortingFn: (item1: AttributeType, item2: AttributeType) => number;\n};\n\nexport const preparedGroupedItems = ({attrTypes, filter = '', sortingFn}: Props): GroupedItem[] =>\n pipe(\n filterItems(filter),\n sort(sortingFn),\n map((attrType: AttributeType) => ({\n item: {\n id: attrType.uri,\n label: attrType.label || attrType.name,\n attrType\n }\n }))\n )(attrTypes);\n","import {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, SortingStrategy} from '@reltio/mdm-sdk';\nimport {flattenGroupedItemsData} from '../../../VirtualGroupedList/helpers';\nimport {preparedGroupedItems} from './helpers';\nimport {useMdmAttributesSortingStrategy} from '../../../../contexts';\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 strategy = useMdmAttributesSortingStrategy();\n\n const hasGroups = Boolean(parent);\n\n const sortingFn = useMemo(() => {\n switch (strategy) {\n case SortingStrategy.ASC_BY_NAME:\n return (item1, item2) => item1?.label?.localeCompare(item2?.label);\n default:\n return (_item1, _item2) => 0;\n }\n }, [strategy]);\n\n const preparedParentGroupItem = useMemo(\n () => (hasGroups ? preparedGroupedItems({attrTypes: [parent], filter, sortingFn}) : []),\n [hasGroups, parent, filter, sortingFn]\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 sortingFn\n }),\n [data, filter, sortingFn]\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(\n () => flattenGroupedItemsData((parentGroup || []).concat(attributesGroup)),\n [parentGroup, attributesGroup]\n );\n\n const parentGroupLength = parentGroup.length;\n const attributesGroupLength = attributesGroup.length;\n return {items, hasGroups, parentGroupLength, attributesGroupLength};\n};\n","import {makeStyles} from '@mui/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 marginTop: '8px',\n marginLeft: '-4px',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n 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 React, {useCallback, useRef, useState} from 'react';\nimport Button from '@mui/material/Button';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {always, any, append, ifElse, not, pipe, pluck, propEq, reject} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport AttributeListItem from '../../../AttributeListItem/AttributeListItem';\nimport SelectionPopup from '../../../SelectionPopup/SelectionPopup';\n\nimport AddIcon from '@mui/icons-material/Add';\nimport Highlighter from '../../../Highlighter/Highlighter';\nimport {useKeyboardNavigation} from '../../../SelectionPopup/helpers';\nimport VirtualGroupedList from '../../../VirtualGroupedList/VirtualGroupedList';\nimport {useMoreAttributesItems} from './useMoreAttributesItems';\n\nimport {useStyles} from './styles';\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\ntype Props = {\n label: string;\n popupTitle?: string;\n data: AttributeType[];\n parent?: AttributeType;\n dense?: boolean;\n onApply: (attributeTypes: AttributeType[]) => void;\n};\nconst MoreAttributesButton = ({label, popupTitle = label, data, parent, dense, onApply}: Props) => {\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 disableHorizontalScrollbar={true}\n items={items}\n height={listHeight}\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\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 '@mui/styles';\n\nexport const useStyles = makeStyles({\n item: {\n marginBottom: '20px'\n },\n dense: {\n marginBottom: 0\n }\n});\n","import React, {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 getErrorId,\n getReferencedEntityActiveError,\n isTempUri,\n getLabel,\n isAttributeTypeError\n} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport EntitySelector from '../EntitySelector/EntitySelector';\nimport {ErrorWrapper} from '../../../index';\nimport {withContext} from '../../../../HOCs';\nimport {\n isHighlightedErrorType,\n ScrollToElementContext,\n useMdmAction,\n useMdmGlobalSearchRequestOptions,\n useMdmMetadata,\n useMdmModifiedEntity\n} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\n\nimport {useStyles} from './styles';\n\nconst ReferenceAttribute = (props) => {\n const styles = useStyles();\n const {highlightedError, ...ownProps} = props;\n const {attributeValue, attributeType, mode, crosswalks, errors, onChangeAttribute} = ownProps;\n\n const initialAttributeValue = useRef(attributeValue);\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n\n const entityUri = getReferencedEntityUriFromAttrValue(attributeValue);\n\n const entityDeleted = useMdmAction('entityDeleted');\n const entityCreated = useMdmAction('entityCreated');\n const errorDeactivated = useMdmAction('errorDeactivated');\n const mdmModifiedEntity = useMdmModifiedEntity(entityUri);\n const modifiedEntity = isTempUri(entityUri) ? mdmModifiedEntity : null;\n const metadata = useMdmMetadata();\n const globalSearchRequestOptions = useMdmGlobalSearchRequestOptions(['ovOnly']);\n\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(\n () => addReferencedRelationCrosswalks(crosswalks, referencedRelation),\n [crosswalks, referencedRelation]\n );\n\n const referencedEntityMissedError = useMemo(\n () => getReferencedEntityActiveError(attributeValue, errors),\n [attributeValue, 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 entityDeleted(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 errorDeactivated(getErrorId(referencedEntityMissedError));\n }\n },\n [\n attributeValue,\n attributeType,\n modifiedEntity,\n onChangeAttribute,\n entityDeleted,\n errorDeactivated,\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 entityCreated(newEntity);\n },\n [newEntityAttrTypesSelectionStrategy, mode, referencedEntityType, metadata, onChangeEntity, entityCreated]\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(\n () => checkMetadataForCreate(mode, referencedEntityType),\n [mode, 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 <div ref={ref} className={errorClassName}>\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 isDisabled={!canChangeReferencedEntity}\n onChange={onChangeEntity}\n onCreate={canCreateReferencedEntity ? onCreateEntity : undefined}\n metadata={metadata}\n attributeTypesSelectionStrategy={newEntityAttrTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </div>\n </ComplexAttribute>\n );\n};\n\nReferenceAttribute.propTypes = {\n ...ReferenceAttributeType,\n highlightedError: PropTypes.object\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue, {attributeValue, attributeType}) => {\n const {element, type} = contextValue || {};\n const isHighlighted =\n isHighlightedErrorType(type) && isAttributeTypeError(element, attributeValue.uri, attributeType.uri);\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n ReferenceAttribute\n);\n","import {makeStyles} from '@mui/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 position: 'relative'\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, {useCallback, useContext, useEffect, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {has, pipe} from 'ramda';\nimport AddIcon from '@mui/icons-material/Add';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Typography from '@mui/material/Typography';\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 {withContext} from '../../../../HOCs';\nimport {\n isHighlightedErrorType,\n ScrollToElementContext,\n DependentLookupAutopopulationContext,\n ProfilePerspectiveViewContext,\n useMdmDependentLookupEditorContext\n} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\nimport {useAutopopulationContextValue} from './useAutopopulationContextValue';\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 highlightedError,\n isEmptyEditor = false,\n ...otherProps\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const isEditableMode = checkIsEditableMode(mode);\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 = useMdmDependentLookupEditorContext(attributeValue, attributeType);\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n\n useEffect(() => {\n // when editor is empty but has default lookup code, onChangeAttribute will be called by useLookupsResolver\n if (isEmptyEditor && isDependentLookupAttrType(attributeType) && !has('lookupCode', attributeValue)) {\n onChangeAttribute({\n attributeType,\n uri: attributeValue.uri,\n value: attributeValue.value,\n silent: true\n });\n }\n }, [isEmptyEditor]);\n\n const dataTypeDefinition = useMemo(() => getAttrDataTypeDefinition(attributeType), [attributeType]);\n const value = useMemo(\n () => attributeValueToEditorValue(attributeValue, dataTypeDefinition),\n [attributeValue, dataTypeDefinition]\n );\n const deactivateError = useCallback(() => {\n if (ownError) {\n onDeactivateError(getErrorId(ownError));\n }\n }, [ownError, onDeactivateError]);\n const onValueEditorChange = useCallback(\n pipe(prepareChangeData(attributeValue, attributeType), onChangeAttribute, deactivateError),\n [attributeValue, attributeType, onChangeAttribute, deactivateError]\n );\n const onDelete = () => {\n onDeleteAttribute({uri: attributeValue.uri, attributeType});\n if (getErrorType(ownError) !== ErrorType.missed) {\n deactivateError();\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, isCrossedOut: true} : {};\n const isProfilePerspectiveView = useContext(ProfilePerspectiveViewContext);\n\n const {autopopulationContextValue} = useAutopopulationContextValue({\n enabled: isProfilePerspectiveView && isDependentLookupAttrType(attributeType),\n attributeTypeUri: attributeType?.uri,\n valueUri: attributeValue.uri\n });\n\n return (\n <div ref={ref} className={classnames(styles.editor, className, errorClassName)}>\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 <DependentLookupAutopopulationContext.Provider value={autopopulationContextValue}>\n <DataTypeValueEditor\n fieldName={attributeUriToSearchUri(attributeType.uri)}\n value={value}\n dataTypeDefinition={dataTypeDefinition}\n error={hasError}\n onChange={onValueEditorChange}\n fullWidth\n {...dependentLookupEditorContext}\n {...otherProps}\n {...deletedProps}\n />\n </DependentLookupAutopopulationContext.Provider>\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\n className={styles.button}\n icon={DeleteIcon}\n onClick={onDelete}\n size=\"L\"\n data-reltio-id=\"reltio-delete-simple-attribute-button\"\n />\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 highlightedError: PropTypes.object,\n isEmptyEditor: PropTypes.bool\n};\n\nconst SimpleAttributeEditorWithScrollToElementContext = withContext(\n ScrollToElementContext,\n (contextValue, {attributeValue}) => {\n const {element, type} = contextValue || {};\n const isHighlighted = isHighlightedErrorType(type) && element?.uri === attributeValue.uri;\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n SimpleAttributeEditor\n);\n\nexport default withAsyncMount(SimpleAttributeEditorWithScrollToElementContext, AsyncMountPlaceholder);\n","import {ContextType, useCallback, useMemo} from 'react';\nimport {isAutopopulationEnabled} from '@reltio/mdm-sdk';\nimport {\n DependentLookupAutopopulationContext,\n useMdmAction,\n useMdmDependentLookupEditorState,\n useMdmLookupAutocomplete\n} from '../../../../contexts';\n\ntype Props = {\n enabled: boolean;\n attributeTypeUri: string;\n valueUri: string;\n};\n\nexport const useAutopopulationContextValue = ({enabled, attributeTypeUri, valueUri}: Props) => {\n const dependentLookupsEditorTouched = useMdmAction('dependentLookupsEditorTouched');\n const autocompleteConfig = useMdmLookupAutocomplete();\n const dependentLookupEditorState = useMdmDependentLookupEditorState(valueUri);\n const autopopulationEnabled = enabled && isAutopopulationEnabled(autocompleteConfig, attributeTypeUri);\n const autopopulationId = autopopulationEnabled ? valueUri : null;\n const {isTouched = false} = (autopopulationEnabled && dependentLookupEditorState) || {};\n\n const onTouch = useCallback(\n (valueUri: string) => {\n dependentLookupsEditorTouched({uri: valueUri, isTouched: true});\n },\n [dependentLookupsEditorTouched]\n );\n const autopopulationContextValue: ContextType<typeof DependentLookupAutopopulationContext> = useMemo(\n () =>\n autopopulationId\n ? {\n id: autopopulationId,\n isTouched,\n onTouch\n }\n : null,\n [autopopulationId, isTouched, onTouch]\n );\n\n return {autopopulationContextValue};\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).utc().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 '@mui/icons-material/KeyboardArrowUp';\nimport Link from '@mui/material/Link';\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 '@mui/icons-material/KeyboardArrowDown';\nimport Link from '@mui/material/Link';\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 '@mui/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/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(\n () => getAttributesListForReadMode(attrTypes, entity, showNonOv),\n [attrTypes, entity, 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 {CSSProperties, makeStyles} from '@mui/styles';\n\nconst fontSize = '13px';\nconst lineHeight = '16px';\n\nconst commonStyles = {\n titleRow: {\n display: 'inline-block',\n minHeight: '16px'\n },\n title: {\n wordBreak: 'break-all',\n verticalAlign: 'middle'\n } as CSSProperties,\n ovIcon: {\n marginLeft: '8px',\n textIndent: 0\n },\n descriptionIcon: {\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 },\n collaborationWrapper: {\n display: 'flex',\n alignItems: 'start',\n minHeight: '18px',\n justifyContent: 'space-between'\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 marginRight: '8px',\n marginLeft: '1px',\n color: 'rgba(0, 0, 0, 0.38)',\n verticalAlign: 'middle'\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 titleRow: {\n ...commonStyles.titleRow,\n marginBottom: '3px'\n },\n ...commonStyles\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 DescriptionIcon from '../../DescriptionIcon/DescriptionIcon';\nimport Attribute from '../AttributesFactory/Attribute';\n\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, description} = 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 <DescriptionIcon description={description} className={styles.descriptionIcon} />\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 {\n AttributeType,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n RequestNextPageOfAttributeValuesPayload\n} 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';\nimport DescriptionIcon from '../../DescriptionIcon';\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, description} = 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 <DescriptionIcon description={description} />\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 '@mui/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nexport const useCommonStyles = makeStyles({\n attributeValue: {\n verticalAlign: 'middle'\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 ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n});\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {getHistoryAppearanceBySpecialAttributeValue, getHistoryAttributeClassName, getRoleLabel} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../../contexts/HistoryAppearanceContext';\nimport {useMdmMetadata} from '../../../../../contexts';\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Role = ({value}: Props) => {\n const styles = useCommonStyles();\n const {appearance} = useContext(HistoryDiffContext);\n const metadata = useMdmMetadata();\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('roles', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return (\n <span className={classnames(styles.attributeValue, styles[historyClassName])}>\n {getRoleLabel(metadata, value)}\n </span>\n );\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 classnames from 'classnames';\nimport InternalLink from '../../../../InternalLink/InternalLink';\nimport {\n Entity,\n getDataTenantEntityUri,\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '@reltio/mdm-sdk';\nimport {\n EntityContext,\n HistoryDiffContext,\n UrlGeneratorsContext,\n useMdmEntity,\n useMdmUiPath\n} from '../../../../../contexts';\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Tag = ({value}: Props) => {\n const styles = useCommonStyles();\n\n const ownEntity: Entity = useContext(EntityContext);\n const {appearance} = useContext(HistoryDiffContext);\n const {generateTagUrl} = useContext(UrlGeneratorsContext);\n\n const currentEntity = useMdmEntity();\n const uiPath = useMdmUiPath();\n\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={classnames(styles.attributeValue, styles[historyClassName])}\n href={generateTagUrl({\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 '@mui/icons-material/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 React from 'react';\nimport {AttributeType, ImageAttributeValue, Paging, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-sdk';\nimport Title from '../../../Title/Title';\nimport DescriptionIcon from '../../DescriptionIcon';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport {useMultiLineStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n paging: Paging;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n parentUri?: string;\n showNonOv?: boolean;\n};\n\nexport const ImageLineRenderer = ({\n attributeType,\n attributeValues,\n paging,\n parentUri,\n showNonOv,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useMultiLineStyles();\n const {label, description} = attributeType;\n\n return (\n <>\n <div className={styles.titleRow}>\n <Title className={styles.title} label={label} data-reltio-id=\"reltio-attribute-label\" />\n <DescriptionIcon className={styles.descriptionIcon} description={description} />\n </div>\n <ImageAttributesLine\n attributeValues={attributeValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </>\n );\n};\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 BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport OneLineRenderer from './OneLineRenderer';\nimport MultiLineRenderer from './MultiLineRenderer';\nimport SpecialRenderer from './SpecialRenderer';\nimport {ImageLineRenderer} from './ImageLineRenderer';\nimport {useMdmAction, useMdmDefaultMaxValues} from '../../../../contexts';\nimport {useStyles} from './styles';\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 titleClassName?: string;\n contentClassName?: string;\n showNonOv?: boolean;\n};\n\nconst AttributesPager = ({\n values,\n attributeType,\n drawLines,\n paging = {},\n parentUri,\n max: maxProp,\n titleClassName,\n contentClassName,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n\n const requestNextPageOfAttributeValues = useMdmAction('requestNextPageOfAttributeValues');\n const defaultMaxValues = useMdmDefaultMaxValues();\n const max = maxProp ?? defaultMaxValues ?? Infinity;\n\n const partitionByOv = partition(isOv);\n\n if (!values || !values.length) {\n return null;\n }\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 <ImageLineRenderer\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\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 {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n complexContainer: {\n marginTop: '1px'\n },\n labelContainer: {\n display: 'flex',\n minHeight: '18px'\n },\n label: {\n display: 'inline-flex',\n fontSize: '13px',\n lineHeight: '16px',\n letterSpacing: 'normal',\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 from '@mui/material/Typography';\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 '@mui/styles';\nimport {CROSS_ICON} from './cross.inline.svg';\nimport {HistoryOperations, historyPalettes, svg2Url} from '@reltio/mdm-sdk';\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 {\n AttributeType,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getImageAttributeOvThumbnailUrl,\n ImageAttributeValue,\n Paging,\n RequestNextPageOfAttributeValuesPayload\n} from '@reltio/mdm-sdk';\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 {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 '@mui/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nconst styles = makeStyles({\n label: {\n textDecoration: 'none',\n verticalAlign: 'middle'\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 from '@mui/material/Box';\nimport classnames from 'classnames';\nimport {\n evaluateDeepEntityLabel,\n getAttributeTypeSubAttributes,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getLabel,\n NestedAttributeType\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\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 '@mui/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\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, {useContext, useMemo, memo} from 'react';\nimport classnames from 'classnames';\nimport {\n getAttributeTypeSubAttributes,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getLabel,\n getReferencedEntityUriFromAttrValue,\n isEmptyValue,\n isOv,\n ReferenceAttributeValue\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext, UrlGeneratorsContext, useMdmMetadata, useMdmUiPath} from '../../../../contexts';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport InternalLink from '../../../InternalLink/InternalLink';\nimport SearchHighlighter from '../../../SearchHighlighter/SearchHighlighter';\nimport {useOvValueStyles} from '../helpers/commonStyles';\nimport {ComplexAttributeProps} from '../../types';\nimport useStyles from './styles';\n\nconst ReferenceAttribute = ({\n attributeValue,\n attributeType,\n ...otherProps\n}: ComplexAttributeProps<ReferenceAttributeValue>) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n\n const metadata = useMdmMetadata();\n const uiPath = useMdmUiPath();\n\n const refEntityURI = getReferencedEntityUriFromAttrValue(attributeValue);\n const attributeTypeList = useMemo(\n () => getAttributeTypeSubAttributes(metadata, attributeType),\n [attributeType, metadata]\n );\n\n const {appearance} = useContext(HistoryDiffContext);\n const {generateEntityUrl} = useContext(UrlGeneratorsContext);\n\n const entityLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n const screen = refEntityURI?.startsWith('changeRequests') ? 'dcrReview' : 'profile';\n return (\n <InternalLink\n href={isEmptyValue(appearance) ? generateEntityUrl({uiPath, uri: refEntityURI, screen}) : 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, generateEntityUrl]);\n\n return (\n <ComplexAttribute\n attributeTypesList={attributeTypeList}\n attributeValue={attributeValue}\n label={entityLabel}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nexport default memo(ReferenceAttribute);\n","import ReferenceAttribute from './ReferenceAttribute';\n\nexport default ReferenceAttribute;\n","import {makeStyles} from '@mui/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\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 verticalAlign: 'middle',\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 getHistoryAppearanceByUri,\n getAttributeValue,\n SimpleAttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType,\n getHistoryAttributeClassName\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 {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.attributeValue, styles[historyClassName], {\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\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} from '@mui/styles';\n\nexport const useOvValueStyles = makeStyles((theme) => ({\n ovFalse: theme.inactive\n}));\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';\nimport {useUsers} from '../../hooks/useUsers';\nimport {UsersContext} from '../UsersContext';\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\nexport const CollaborationContextProvider = ({collaboration, children}) => {\n const users = useUsers();\n return (\n <CollaborationContext.Provider value={collaboration}>\n <UsersContext.Provider value={users}>{children}</UsersContext.Provider>\n </CollaborationContext.Provider>\n );\n};\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\ntype Features = {\n showDescription?: boolean;\n showNavigateToGraph?: boolean;\n};\n\nexport const FeaturesContext = React.createContext<Features>({showDescription: false, showNavigateToGraph: true});\n\nFeaturesContext.displayName = 'FeaturesContext';\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 ProfilePerspectiveViewContext = React.createContext(false);\n\nProfilePerspectiveViewContext.displayName = 'ProfilePerspectiveViewContext';\n","import React from 'react';\n\nexport const RelatedObjectUrisContext = React.createContext<string[]>([]);\n\nRelatedObjectUrisContext.displayName = 'RelatedObjectUrisContext';\n","import React, {useCallback, useMemo, useRef, useState} from 'react';\nimport {AttributeError, AttributeType} from '@reltio/mdm-sdk';\nimport {noop} from '../../core';\n\nexport enum ScrollType {\n Error = 'Error',\n NewAttribute = 'NewAttribute'\n}\n\ntype ScrollToElementContextProps = {\n element: unknown;\n type: ScrollType;\n highlightError?: (element: unknown) => void;\n highlightAttribute?: (element: unknown) => void;\n scrollIntoRef: (ref: React.MutableRefObject<HTMLDivElement>) => void;\n};\n\nexport const isHighlightedErrorType = (type: ScrollType) => type === ScrollType.Error;\nexport const isHighlightedAttributeType = (type: ScrollType) => type === ScrollType.NewAttribute;\n\nexport const ScrollToElementContext = React.createContext<ScrollToElementContextProps>({\n element: null,\n type: null,\n highlightError: noop,\n highlightAttribute: noop,\n scrollIntoRef: noop\n});\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const ScrollToElementProvider = ({children}: Props) => {\n const [element, setElement] = useState<{value: unknown; type: ScrollType}>(null);\n const highlightTimer = useRef(null);\n\n const scrollIntoRef = useCallback((ref: React.MutableRefObject<HTMLDivElement>) => {\n if (!ref.current) return;\n ref.current.scrollIntoView({behavior: 'smooth', block: 'center'});\n clearTimeout(highlightTimer.current);\n highlightTimer.current = setTimeout(() => setElement(null), 2000);\n }, []);\n\n const handleHighlightError = useCallback((highlightedError: AttributeError) => {\n setElement({value: highlightedError, type: ScrollType.Error});\n }, []);\n\n const handleHighlightAttribute = useCallback((highlightedAttribute: AttributeType) => {\n setTimeout(() => setElement({value: highlightedAttribute, type: ScrollType.NewAttribute}), 300);\n }, []);\n\n const contextValue = useMemo(\n () => ({\n element: element?.value,\n highlightError: handleHighlightError,\n highlightAttribute: handleHighlightAttribute,\n scrollIntoRef,\n type: element?.type\n }),\n [element, scrollIntoRef]\n );\n\n return <ScrollToElementContext.Provider value={contextValue}>{children}</ScrollToElementContext.Provider>;\n};\n","import React from 'react';\nimport {User} from '@reltio/mdm-sdk';\n\nexport const UsersContext = React.createContext<Pick<User, 'email' | 'username'>[]>([]);\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 {useEffect, MutableRefObject} from 'react';\n\nexport const useAutoFocus = (inputRef: MutableRefObject<HTMLInputElement>, isEditing: boolean) => {\n useEffect(() => {\n if (isEditing) {\n const position = inputRef.current?.value?.length;\n inputRef.current?.focus();\n inputRef.current?.setSelectionRange(position, position);\n }\n }, [inputRef, isEditing]);\n};\n","import {makeStyles} from '@mui/styles';\n\nconst highlightBeforeStyles = {\n content: '\"\"',\n position: 'absolute',\n left: '-1000px',\n top: '0px',\n width: '5000px',\n height: 'calc(100% - 10px)',\n animationName: '$highlightAnimation',\n animationDuration: '2s',\n animationIterationCount: 1,\n opacity: 0\n};\nconst ERROR_COLOR = 'rgba(255, 0, 0, 0.06)';\nconst WARNING_COLOR = 'rgba(228, 151, 0, 0.08)';\n\nexport const useStyles = makeStyles(() => ({\n '@keyframes highlightAnimation': {\n '0%': {opacity: 0},\n '50%': {opacity: 1},\n '100%': {opacity: 0}\n },\n highlightError: {\n '&::before': {\n ...highlightBeforeStyles,\n background: ERROR_COLOR\n }\n },\n highlightWarning: {\n '&::before': {\n ...highlightBeforeStyles,\n background: WARNING_COLOR\n }\n },\n simpleAttribute: {\n position: 'relative',\n '&::before': {\n top: '-4px',\n height: 'calc(100% + 8px)'\n }\n }\n}));\n","import {ContextType, useEffect, useRef} from 'react';\nimport {pathOr} from 'ramda';\nimport classnames from 'classnames';\nimport {ErrorSeverity} from '@reltio/mdm-sdk';\nimport {ScrollToElementContext} from '../../contexts';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n highlightedError: ContextType<typeof ScrollToElementContext> | null;\n isSimple?: boolean;\n};\n\nexport const useScrollToAttributeError = ({highlightedError: context, isSimple = false}: Props) => {\n const styles = useStyles();\n\n const ref = useRef<HTMLDivElement>(null);\n\n const severity: ErrorSeverity = pathOr(ErrorSeverity.ERROR, ['element', 'severity'])(context);\n const errorClassName: string = classnames({\n [styles.highlightError]: severity === ErrorSeverity.ERROR,\n [styles.highlightWarning]: severity === ErrorSeverity.WARNING,\n [styles.simpleAttribute]: isSimple\n });\n\n useEffect(() => {\n if (context) {\n context.scrollIntoRef(ref);\n }\n }, [context]);\n\n return context ? {ref, errorClassName} : {ref};\n};\n","import {useEffect, useState} from 'react';\nimport memoizeOne from 'memoize-one';\nimport {getAllUsersForTenant, UserInfo} from '@reltio/mdm-sdk';\nimport {useMdmServicesPath, useMdmTenant} from '../contexts';\n\nconst getAllUsersForTenantMemoized = memoizeOne((tenant, servicesPath) => getAllUsersForTenant({tenant, servicesPath}));\n\nexport const useUsers = () => {\n const [users, setUsers] = useState<UserInfo[]>([]);\n\n const tenant = useMdmTenant();\n const servicesPath = useMdmServicesPath();\n\n const onError = (e) => {\n console.warn('Users error', e);\n setUsers([]);\n };\n\n useEffect(() => {\n getAllUsersForTenantMemoized(tenant, servicesPath)\n .then((users) => setUsers(users))\n .catch(onError);\n }, [tenant, servicesPath]);\n\n return users;\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","minWidth","fontWeight","whiteSpace","overflow","textOverflow","children","classes","Toolbar","root","Typography","variant","i18n","getRelatedEntityUri","comment","entityUri","index","relatedObjectUris","indexOf","formatDate","time","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","entitiesMap","useContext","EntitiesMapContext","metadata","useMdmMetadata","entity","useMdmEntity","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","underline","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","useMdmUsername","commentUri","isNil","createNewReplyUri","createCommentUri","defaultCommentState","commentOrReply","getDefaultCommentState","hasValue","trim","shouldShowButtons","clearValue","useEffect","current","forceUpdate","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","isResolved","canChangeComment","resolveThread","reOpenThread","deleteComment","updateIsEditingComment","useCallback","useAutoFocus","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","focus","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","alpha","selected","paper","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","MenuListProps","autoFocusItem","avatarClassName","imageClassName","absoluteImagePath","useMdmAbsoluteImagePath","entityImageSource","getEntityImage","fallbackImage","getAbsoluteImageUrl","getEntityTypeImage","onImageLoadFail","target","onError","src","svg2Url","imgProps","alt","storagePath","str","endsWith","caption","errorMessage","hasError","wrapper","error","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","ViewCompactIcon","DETAILS_MODE","DetailsIcon","Dialog","BackdropProps","fullScreen","AppBar","colorPrimary","CloseIcon","ModeSwitcher","modeId","DialogContent","inRouterContext","useInRouterContext","linkClassName","to","replace","window","location","origin","loadingOverlay","transparent","relativePosition","LinearProgress","textTransform","borderColor","borderRightColor","ButtonWithTooltip","ButtonGroup","String","newMode","arrow","boxSizing","shadows","AnimationWrapper","Fade","arrowRef","setArrowRef","Popper","modifiers","name","enabled","options","rootBoundary","altAxis","element","excludeAnchorFromBackdrop","TransitionProps","Paper","autofocus","onSearch","rootRef","localValue","setLocalValue","updateValue","pipe","tap","inputValue","startAdornment","endAdornment","clearButton","input","classNames","container","getValue","disableUnderline","opacity","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","some","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","querySelectorAll","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","description","showDescription","FeaturesContext","Description","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","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","useMdmIsViewMode","systemAttributesList","notSystemAttributesList","AttributesPager","drawLines","titleClassName","contentClassName","cancelButton","MetaInfoForm","hasChanges","onDeleteAttribute","onChangeAttribute","shouldShowActionButtons","showEmptyEditors","isTempUri","darkTheme","darkMuiTheme","createTheme","MetaInfo","initialAttributeValue","useMdmMode","isEditableMode","useMdmIsEditableMode","addAttributes","changeAttribute","deleteAttribute","clearLocalChanges","applyLocalChanges","viewId","ViewIdContext","modifyAttribute","useMdmAction","setAttributeValue","prevAttrValue","attribute","addAttribute","nestingLevel","editAttribute","removeAttribute","useEditMetaInfo","ThemeProvider","headerTitle","bodyWrapper","formControlLabel","checkboxLabel","checkbox","ImageDetailsViewSidebar","handleSetAsDefault","isDefault","setIsDefault","modifiedEntity","useMdmModifiedEntity","imageAttributeConfig","useMdmImageAttributesFieldsOrder","entityToShow","default","defaultProfilePic","handleChange","FormControlLabel","control","details","ImageDetailsView","currentAttributeValueUri","setCurrentAttributeValueUri","onChangeAttributeValueIndex","GalleryView","onSelectImage","onDeselectImage","onClickImage","renderImageActionsOverlay","ImageActionsOverlay","selectButton","HeaderLeft","onSelectAll","onClearAll","selectedAllItems","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","setDefaultProfilePicForEntity","setDefaultProfilePicForModifiedEntity","adjustMaxItemsToScreenWidth","imageMargin","maxItemsPerScreen","floor","hasHiddenImage","IMAGE_MIN_VISIBLE_WIDTH","handleResize","handleOpenImageGalleryDialog","handleCloseImageGalleryDialog","handleDownload","urls","url","isAbsoluteUrl","URL","host","isExternalUrl","iframe","document","createElement","setAttribute","appendChild","setTimeout","removeChild","download","pop","getFilenameFromURL","click","downloadImagesByURLs","navigator","clipboard","writeText","insertDefaultImageByAttrUri","renderImageProps","onOpenImageGalleryDialog","handleWidth","IMAGE_HEIGHT","ChipWithTooltip","Chip","nonOvValues","nonOvTotal","openEntity","attributeUri","entityOrRelationUri","getEntityUriFromAttributeUri","isEntityUri","getEntityUri","EntityContext","screen","isComplexAttribute","DataTypeValue","getAttributeValue","dataTypeDefinition","getAttrDataTypeDefinition","rich","tooltipPlacement","generatePivotingValue","pivotingAttributes","pivotingChildrenUris","pivotingAttribute","Array","isArray","getPivotingChildrenUris","pivotingChildren","analyticsAttributes","acc","valueToString","valueContainer","lookupCode","isOv","preparePivotingAttributeValue","DataTypes","Date","getTime","isNaN","PivotingUriLink","generatePivotingUrl","UrlGeneratorsContext","uiPath","useMdmUiPath","JSON","stringify","entityTypeLabel","headerCount","footer","profileIcon","entityContainer","entityLabel","seeAllButton","usePivotingTooltipStyles","PivotingTooltipContent","config","entities","generatedValue","onSeeAllClick","total","shouldShowSeeAllButton","hasEntityTypeLabel","visibleEntity","EntityAvatar","PivotingTooltip","contentStyles","pivotingAttributesList","PivotingAttributeContext","openPivotingPerspective","pivotingValue","isNested","isPivotingAttribute","fromEntries","entries","getLastUriPart","convertSimpleAttributePivotingValue","handleSeeAllClick","loadPivotingData","setEntities","setTotal","safePromise","useSafePromise","globalSearchRequestOptions","useMdmGlobalSearchRequestOptions","entityType","filters","convertPivotingValueToSearchFilters","Promise","all","getFilteredEntities","getTotals","results","usePivotingDataLoader","popup","disableInteractive","onOpen","PivotingIcon","Attribute","lazy","errors","crosswalks","propsForSimpleAttribute","NestedAttribute","ReferenceAttribute","SimpleAttributeEditor","isReltioCrosswalk","build","AttributesList","parentAttributeType","alwaysVisibleTypeUris","ALWAYS_VISIBLE_TYPE_URIS","additionalControlsRenderer","highlightAttribute","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","last","ScrollType","decoratorProps","hasDeletionsContextValue","BranchDecorator","parent","HasDeletionsContext","ModeType","withContext","ScrollToElementContext","contextValue","filterNewValues","propSatisfies","highlightBeforeStyles","animationName","animationDuration","animationIterationCount","highlighted","useScrollToAttribute","context","scrollIntoRef","highlightedClassName","AttributeRenderer","nonVisibleValues","highlightedError","highlightedAttribute","onDeactivateError","visibleValuesCount","setVisibleValuesCount","hadDeletions","setHadDeletions","required","cardinality","checkIsEditableMode","errorRef","errorClassName","useScrollToAttributeError","attributeRef","isPinned","isEmptyValues","showEmpty","emptyEditorValue","createNewAttribute","omit","onAddOneMore","createAttribute","newValuesCount","totalProp","add","totalNonVisibleValues","hasPaging","showMore","showLess","shownValues","lastIndex","hiddenValuesCount","titleWrapper","Title","DescriptionIcon","OvIcon","ovIcon","ErrorMessage","typeError","attributesWrapper","ownError","getAttributeOwnError","isEmptyEditor","ShowMore","moreNumber","valueNumber","ShowLess","roleContainer","components","MultiValue","MultiValueChip","Roles","getRolesForEntityType","role","formattedValues","roles","EntityAttrTypes","SimpleDropDownSelector","isMulti","useMdmEntityUri","getSuggestions","async","searchValue","pageNo","response","getFacetedAttributeData","fieldName","tags","TypeaheadEditor","fullWidth","multiple","hasDeletions","hasDeletionsProp","hasDeletionsState","setHasDeletionsState","updateHasDeletions","isActivenessAttrType","renderValue","ImageLineRenderer","highlightedRef","deactivateError","getErrorId","imagesWrapper","ErrorWrapper","errorWrapper","ImageAttributesLine","RENDERER_TYPES","isHighlightedAttributeType","isHighlightedErrorType","isAttributeTypeError","maxProp","activeErrors","useMdmActiveErrorsForAttributesPager","profileErrors","useMdmProfileErrors","useMdmDefaultMaxValues","getAttributePagerActiveTypeErrorMessage","Infinity","partitionByOv","partition","ovValues","visibleValues","commonProps","special","isImage","imageLine","getAttributeErrorByTypeUri","renderAttribute","valueCaption","hasMinValue","hasMaxValue","noMaxValue","not","minValueIsOne","minValue","generateMinCardinality","minValueCaption","generateMaxCardinality","maxValue","maxValueCaption","getCardinalityMessage","allPass","minCardinality","cardinalityMessage","textIndent","complexWrapper","editor","titleContainer","deleted","editedLabel","errorWrapperHelperText","ComplexAttribute","attributeTypesList","hideDeleteButton","isHighlightedPath","expandedProp","edited","isNew","defaultExpand","setExpanded","canDelete","checkCanDeleteAttribute","showDeleteButton","hasDescendantsWithErrors","hasAttributeDescendantsWithErrors","hasAnalyticValue","attributeListEntity","getErrorMessage","ArrowExpandButton","AttributeTypeType","NestedAttributeValueType","ReferenceAttributeValueType","ComplexAttributeType","isError","propOr","any","pathEq","defaultAttributeTypesSelectionStrategy","attributeTypesSelectionStrategy","emptyEntityLabel","entityAvatar","entitySecondaryLabel","useSingleValueStyles","linkValue","useGroupStyles","addLabel","groupHeading","addIcon","useClearIconStyles","clearIcon","EntityOption","innerProps","selectOption","secondaryLabel","EntityTypeIcon","ExpandedValueTooltip","EntityType","SingleValue","selectProps","currentEntityType","menuIsOpen","disableLinkClick","generateEntityUrl","valueProps","onMouseDown","ClearIndicator","onClear","IconButton","Clear","Group","ComponentsGroup","onCreate","Add","creatorWrapper","EntitySelector","entityTypesUris","setInputValue","entityTypes","getEntityType","isAvailableEntityType","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","EntityCreator","ConnectionEntityType","dispatch","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","TargetBox","canDrop","isOver","drop","useDrop","NativeTypes","FILE","collect","monitor","UploadIcon","MAX_IMAGE_SIZE","DividerWithText","ErrorSnackbar","Snackbar","dialogPaper","targetBox","UploadImageDialog","setLoading","imageServicePath","useMdmImageServicePath","environment","useMdmEnvironment","tenant","useMdmTenant","uploadImage","uploadImageRequest","res","err","getRequestErrorMessage","finally","isCorrectType","LinearLoadIndicator","uploadContainer","uploadButton","uploadIcon","defaultEntity","isVisibleUploadDialog","setIsVisibleUploadDialog","setDefaultProfilePic","useMdmModifiedEntityDefaultProfilePic","toggleVisibilityUploadDialog","visible","handleAddAttributes","generateUri","ov","handleDeleteAttribute","param","newDefaultPic","methods","imageUrl","CloudUploadIcon","filterItems","curry","filterText","toLowerCase","preparedGroupedItems","sortingFn","GROUP_NAMES","moreAttributes","popupContainer","moreAttributesPopup","buttonLabel","subHeader","noResultsCaptionContainer","popupTitle","setFilter","hasGroups","parentGroupLength","attributesGroupLength","strategy","useMdmAttributesSortingStrategy","SortingStrategy","item1","item2","localeCompare","_item1","_item2","preparedParentGroupItem","parentGroup","preparedAttributesGroupItems","attributesGroup","useMoreAttributesItems","handleListItemClick","append","reject","handleSearchOnEnter","focusIndexRef","groupsCount","listHeight","listItemRenderer","level","isChecked","isFocused","AttributeListItem","Highlighter","highlight","labelInText","LogoIcon","ListItem","SelectionPopup","gutterBottom","evaluateDeepEntityLabel","dataLabelPattern","NestedAttributeType","ownProps","isSimple","getReferencedEntityUriFromAttrValue","entityDeleted","entityCreated","errorDeactivated","mdmModifiedEntity","referencedEntity","getReferencedEntityFromAttrValue","referencedRelation","getReferencedRelationFromAttrValue","referencedEntityTypeUri","getReferencedEntityTypeUriFromAttrType","referencedEntityType","allCrosswalks","addReferencedRelationCrosswalks","referencedEntityMissedError","getReferencedEntityActiveError","selectedEntity","getReferencedEntityUri","getReferencedEntityTypeUri","editableAttrTypes","getReferencedRelationAttrTypesUris","newEntityAttrTypesSelectionStrategy","referencedEntityAttributeTypesSelectionStrategy","onChangeEntity","initialAttrValue","isInitialEntity","modifiedValue","refEntity","convertReferencedEntityForAttrValue","refRelation","createReferencedRelationForAttrValue","onCreateEntity","initValue","newEntityAttrTypes","newEntity","createTemporaryEntity","canChangeReferencedEntity","checkCanEditAttribute","canCreateReferencedEntity","checkMetadataForCreate","isDisabled","ReferenceAttributeType","alignSelf","canCreate","canEdit","showToEdit","dependentLookupEditorContext","useMdmDependentLookupEditorContext","isDependentLookupAttrType","silent","attributeValueToEditorValue","onValueEditorChange","prepareChangeData","showAddButton","deletedProps","isCrossedOut","isProfilePerspectiveView","ProfilePerspectiveViewContext","autopopulationContextValue","valueUri","dependentLookupsEditorTouched","autocompleteConfig","useMdmLookupAutocomplete","dependentLookupEditorState","useMdmDependentLookupEditorState","autopopulationEnabled","isAutopopulationEnabled","autopopulationId","isTouched","onTouch","useAutopopulationContextValue","DependentLookupAutopopulationContext","DataTypeValueEditor","attributeUriToSearchUri","AddIcon","getErrorType","ErrorType","SimpleAttributeValueType","AttributeErrorType","SimpleAttributeEditorWithScrollToElementContext","withAsyncMount","parseBoolean","utils","editorValueToAttributeValue","editorValue","utc","valueOf","getFilteredAttrTypes","includeUris","excludeUris","defaultTo","__","SimpleAttribute","getAttributesListForReadMode","visibleAttributePagersData","commonStyles","titleRow","descriptionIcon","paddingWrapper","paddingWrapperWithLines","useOneLineStyles","collaborationWrapper","titleIcon","useMultiLineStyles","isRelationAttrType","inlined","CommentsContainer","createRelatedObjectUris","dataReltioId","useCommonStyles","insertAttribute","historyPalettes","HistoryOperations","appearance","HistoryDiffContext","attributeAppearance","getHistoryAppearanceBySpecialAttributeValue","historyClassName","getHistoryAttributeClassName","getRoleLabel","Role","ownEntity","generateTagUrl","currentEntity","InternalLink","tag","dataTenant","getDataTenantEntityUri","Tag","isOneLineRender","complexContainer","labelContainer","spacer","LabelRenderer","RightSlot","ovValueStyles","useOvValueStyles","highlightedValuesUris","HighlightedValuesContext","body2","ovFalse","deleteAttributeImage","updateAttributeImage","outlineOffset","updateAttribute","imageAppearance","getHistoryAppearanceByUri","historyAttributesClassName","pivotingTooltip","attributeLabel","SearchHighlighter","getAttributeTypeSubAttributes","relationshipLabel","refEntityURI","attributeTypeList","commentsContainer","multilineAttribute","dataTypeValue","inactive","AsyncMountContext","queueSizeThreshold","Provider","comments","getComments","getCommentsCount","pageToken","CollaborationContextProvider","collaboration","useUsers","showNavigateToGraph","Error","NewAttribute","highlightError","ScrollToElementProvider","setElement","highlightTimer","scrollIntoView","behavior","block","clearTimeout","handleHighlightError","handleHighlightAttribute","queueSize","isFirstRunRef","shouldMount","setShouldMount","timerRef","setSelectionRange","highlightWarning","simpleAttribute","severity","pathOr","ErrorSeverity","getAllUsersForTenantMemoized","memoizeOne","servicesPath","getAllUsersForTenant","setUsers","useMdmServicesPath","warn"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"7744.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/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/PopupWithArrow/styles.ts","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/PopupWithArrow.tsx","webpack://@reltio/remotes/../components/src/components/Title/styles.ts","webpack://@reltio/remotes/../components/src/components/Title/Title.tsx","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/icons/Description.tsx","webpack://@reltio/remotes/../components/src/components/attributes/DescriptionIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/DescriptionIcon/DescriptionIcon.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.ts","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/OvIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/heplers.ts","webpack://@reltio/remotes/../components/src/hooks/usePivotingDataLoader/usePivotingDataLoader.ts","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/helpers.ts","webpack://@reltio/remotes/../components/src/icons/PivotingIcon.tsx","webpack://@reltio/remotes/../components/src/components/PivotingUriLink/styles.ts","webpack://@reltio/remotes/../components/src/components/PivotingUriLink/PivotingUriLink.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.tsx","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/utils.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/hooks/useScrollToAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/hooks/useScrollToAttribute/useScrollToAttribute.ts","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/ImageLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/CardinalityMessage.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/EntityCreator.tsx","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/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/index.ts","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/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/MoreAttributesButton.tsx","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/SimpleAttributeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/SimpleAttributeEditor.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/useAutopopulationContextValue.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.ts","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/ImageLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/styles.ts","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.ts","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.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/index.ts","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/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.tsx","webpack://@reltio/remotes/../components/src/contexts/EntitiesMapContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntityContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/FeaturesContext/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/ProfilePerspectiveViewContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/RelatedObjectUrisContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/ScrollToElementContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/UsersContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useAsyncMount.js","webpack://@reltio/remotes/../components/src/hooks/useAutoFocus.ts","webpack://@reltio/remotes/../components/src/hooks/useScrollToAttributeError/styles.ts","webpack://@reltio/remotes/../components/src/hooks/useScrollToAttributeError/useScrollToAttributeError.ts","webpack://@reltio/remotes/../components/src/hooks/useUsers.ts","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 '@mui/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 '@mui/icons-material/ArrowRight';\nimport {IconButtonProps} from '@mui/material/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 data-reltio-id=\"arrow-expand-button\"\n {...otherProps}\n />\n );\n};\n\nexport default ArrowExpandButton;\n","import {makeStyles} from '@mui/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 minWidth: '20px',\n fontWeight: 'normal',\n lineHeight: 'inherit',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Toolbar, {ToolbarProps} from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\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 {i18n.text(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 '@mui/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 i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {startsWith} from 'ramda';\nimport {Comment, CollaborationObjectTypes} from '@reltio/mdm-sdk';\nimport {\n findAttributeTypeByUri,\n getLabel,\n getEntityUriForLink,\n getEntityId,\n getAttributeTypeUriByValueUri\n} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport {EntitiesMapContext, useMdmEntity, useMdmMetadata} 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 const entitiesMap = useContext(EntitiesMapContext);\n const metadata = useMdmMetadata();\n const entity = useMdmEntity();\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 '@mui/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 from '@mui/material/Typography';\nimport Link from '@mui/material/Link';\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 ? (\n <Link href={`mailto:${user.email}`} underline=\"hover\">\n {mention}\n </Link>\n ) : (\n mention\n );\n }).map((el, idx) => (\n <Fragment key={idx}>{el}</Fragment>\n ))}\n </Typography>\n );\n};\n","import {makeStyles} from '@mui/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 '@mui/material/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 '@mui/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 '@mui/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 {always, cond, T} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport {TextFieldWithMentions} from '../TextFieldWithMentions/TextFieldWithMentions';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext, useMdmUsername} 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 {\n createReply,\n createComment,\n sending,\n editComment,\n editReply,\n getCommentState,\n updateCommentState,\n clearCommentState\n } = useContext(CollaborationContext);\n const username = useMdmUsername();\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.forceUpdate();\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 '@mui/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, useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport Link from '@mui/material/Link';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\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, useMdmUsername} from '../../../contexts';\nimport {useAutoFocus} from '../../../hooks';\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 = useMdmUsername();\n const {commentId, createdBy, createdTime, status} = comment;\n const isResolved = status === 'resolved';\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 useAutoFocus(inputRef, isEditing);\n\n const menuItems = useMemo(\n () =>\n isResolved\n ? [\n {\n text: i18n.text('Delete'),\n onClick: () => deleteComment({uri, commentId})\n }\n ]\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 [commentId, deleteComment, isResolved, updateIsEditingComment, uri]\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\" underline=\"hover\">\n {i18n.text('Reply')}\n </Link>\n {!isResolved && (\n <Link\n disabled={sending}\n className={styles.button}\n onClick={handleResolve}\n component=\"button\"\n underline=\"hover\"\n >\n {i18n.text('Resolve')}\n </Link>\n )}\n {isResolved && (\n <Link\n disabled={sending}\n className={styles.button}\n onClick={handleReOpen}\n component=\"button\"\n underline=\"hover\"\n >\n {i18n.text('Re-open')}\n </Link>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@mui/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, useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Reply, Comment as CommentType} from '@reltio/mdm-sdk';\nimport Box from '@mui/material/Box';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport Typography from '@mui/material/Typography';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {createEditedReplyUri, formatDate} from '../utils';\nimport {CollaborationContext, useMdmUsername} from '../../../contexts';\nimport {useAutoFocus} from '../../../hooks';\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 username = useMdmUsername();\n const {createdBy, action, createdTime} = reply;\n const canChangeReply = createdBy === username && comment.status !== 'resolved';\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 useAutoFocus(inputRef, 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 '@mui/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 from '@mui/material/Box';\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 '@mui/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 '@mui/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 from '@mui/material/Tooltip';\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 from '@mui/material/Tooltip';\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 '@mui/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 from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport DoneIcon from '@mui/icons-material/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 {alpha} from '@mui/material/styles';\nimport {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n buttonRoot: {\n '&$selected': {\n color: theme.palette.action.active,\n backgroundColor: alpha(theme.palette.action.active, 0.12),\n '&:hover': {\n backgroundColor: alpha(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 from '@mui/material/Checkbox';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\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 from '@mui/material/Button';\nimport Menu, {MenuProps} from '@mui/material/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 data-reltio-id={'drop-down-menu-button'}\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 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 classnames from 'classnames';\nimport Typography from '@mui/material/Typography';\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 '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\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\n variant=\"standard\"\n className={classnames(styles.wrapper, className, classes?.root)}\n error\n {...otherProps}\n >\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 '@mui/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} from '@mui/styles';\nimport {ImageSizeType} from './Image';\n\nexport const useStyles = makeStyles((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 '@mui/icons-material/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 '@mui/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 '@mui/icons-material/RadioButtonUnchecked';\nimport CheckCircleIcon from '@mui/icons-material/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 '@mui/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 from '@mui/material/Button';\nimport MoreVertIcon from '@mui/icons-material/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 '@mui/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 from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport AppBar from '@mui/material/AppBar';\nimport Toolbar from '@mui/material/Toolbar';\nimport Box from '@mui/material/Box';\nimport CloseIcon from '@mui/icons-material/Close';\nimport ViewCompactIcon from '@mui/icons-material/ViewCompact';\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: ViewCompactIcon\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 '@mui/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 '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => {\n const color = theme.palette.background.paper;\n return {\n paper: {\n backgroundColor: color,\n maxWidth: 1000\n },\n popper: {\n '&[data-popper-placement*=\"bottom\"] $arrow': {\n top: 0,\n marginTop: '-0.71em',\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n '&[data-popper-placement*=\"top\"] $arrow': {\n bottom: 0,\n marginBottom: '-0.71em',\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n '&[data-popper-placement*=\"right\"] $arrow': {\n left: 0,\n marginLeft: '-0.71em',\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '100% 100%'\n }\n },\n '&[data-popper-placement*=\"left\"] $arrow': {\n right: 0,\n marginRight: '-0.71em',\n height: '1em',\n width: '0.71em',\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, {useState} from 'react';\nimport classnames from 'classnames';\nimport Paper from '@mui/material/Paper';\nimport Fade from '@mui/material/Fade';\nimport Popper from '../Popper/Popper';\n\nimport {useStyles} from './styles';\n\ntype Props = React.ComponentPropsWithoutRef<typeof Popper> & {\n classes?: {\n root?: string;\n arrow?: string;\n };\n};\n\nexport const PopupWithArrow = ({children, className, classes, transition, ...otherProps}: Props) => {\n const styles = useStyles();\n\n const AnimationWrapper = transition ? Fade : React.Fragment;\n const [arrowRef, setArrowRef] = useState<HTMLElement | null>(null);\n\n return (\n <Popper\n className={classnames(styles.popper, className)}\n modifiers={[\n {\n name: 'preventOverflow',\n enabled: true,\n options: {\n rootBoundary: 'viewport',\n padding: 14,\n altAxis: true\n }\n },\n {\n name: 'arrow',\n enabled: true,\n options: {\n element: arrowRef,\n padding: 4\n }\n }\n ]}\n transition={transition}\n excludeAnchorFromBackdrop={false}\n {...otherProps}\n >\n {({TransitionProps}) => (\n <AnimationWrapper {...TransitionProps}>\n <Paper className={classnames(styles.paper, classes?.root)}>\n <span className={classnames(styles.arrow, classes?.arrow)} ref={setArrowRef} />\n {children}\n </Paper>\n </AnimationWrapper>\n )}\n </Popper>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n label: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '13px',\n lineHeight: '16px'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport RequiredMark from '../RequiredMark/RequiredMark';\nimport Typography from '@mui/material/Typography';\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 '@mui/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 React from 'react';\n\nconst SvgDescription: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={12} height={12} viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M5.417 9.5h1.166V8.333H5.417V9.5zM6 .167A5.835 5.835 0 00.167 6 5.835 5.835 0 006 11.833 5.835 5.835 0 0011.833 6 5.835 5.835 0 006 .167zm0 10.5A4.673 4.673 0 011.333 6 4.673 4.673 0 016 1.333 4.673 4.673 0 0110.667 6 4.673 4.673 0 016 10.667zM6 2.5a2.333 2.333 0 00-2.333 2.333h1.166A1.17 1.17 0 016 3.667a1.17 1.17 0 011.167 1.166c0 1.167-1.75 1.021-1.75 2.917h1.166c0-1.313 1.75-1.458 1.75-2.917A2.333 2.333 0 006 2.5z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgDescription;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n icon: {\n display: 'inline-flex',\n marginLeft: '8px',\n verticalAlign: 'middle'\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport Tooltip from '@mui/material/Tooltip';\nimport {FeaturesContext} from '../../../contexts';\nimport Description from '../../../icons/Description';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n description?: string;\n showDescription?: boolean;\n};\nconst DescriptionIcon = ({className, description}: Props) => {\n const {showDescription} = useContext(FeaturesContext);\n const styles = useStyles();\n\n if (!description || !showDescription) {\n return null;\n }\n\n return (\n <Tooltip title={description} placement=\"bottom\">\n <span data-reltio-id=\"reltio-description-icon\" className={classnames(styles.icon, className)}>\n <Description />\n </span>\n </Tooltip>\n );\n};\n\nexport default DescriptionIcon;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((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 '@mui/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 from '@mui/material/Grid';\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 '@mui/icons-material/NavigateBefore';\nimport NavigateNextIcon from '@mui/icons-material/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 '@mui/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 borderColor: '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 from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\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 '@mui/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 '@mui/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 {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport Box from '@mui/material/Box';\nimport AttributesPager from '../../attributes/readMode/AttributesPager/AttributesPager';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoItem} from './MetaInfoItem/MetaInfoItem';\nimport {getNotSystemAttributesList, getSystemAttributesList} from '../helpers';\nimport {useMdmIsViewMode} from '../../../contexts';\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\n const isViewMode = useMdmIsViewMode();\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 '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {},\n form: {\n padding: '10px 0'\n },\n divider: {\n width: '100%',\n height: '1px',\n borderColor: '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 from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\nimport Button from '@mui/material/Button';\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 {\n addAttribute,\n editAttribute,\n removeAttribute,\n AttributeType,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext, useMdmAction} from '../../../contexts';\n\ntype Params = {\n initialAttributeValue: ImageAttributeValue;\n attributeType: AttributeType;\n};\n\nexport const useEditMetaInfo = ({initialAttributeValue, attributeType}: Params) => {\n const viewId = useContext(ViewIdContext);\n const modifyAttribute = useMdmAction('modifyAttribute');\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 modifyAttribute({value: attributeValue, attributeType: attributeType, uri: attributeValue.uri, viewId});\n }, [attributeValue, attributeType, viewId, modifyAttribute]);\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';\nimport {ThemeOptions} from '@mui/material/styles';\n\nconst darkTheme: ThemeOptions = {\n palette: {\n mode: 'dark',\n primary: theme.palette.primary,\n secondary: theme.palette.secondary\n }\n};\n\nexport {darkTheme};\n","import React from 'react';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {ThemeProvider, createTheme} from '@mui/material/styles';\nimport Box from '@mui/material/Box';\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';\nimport {useMdmIsEditableMode, useMdmMode} from '../../../contexts';\n\nconst darkMuiTheme = createTheme(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 mode = useMdmMode();\n const isEditableMode = useMdmIsEditableMode();\n const {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n } = useEditMetaInfo({attributeType, initialAttributeValue});\n\n return (\n <ThemeProvider 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 </ThemeProvider>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((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 i18n from 'ui-i18n';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Typography from '@mui/material/Typography';\nimport {AttributeType, Entity, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {MetaInfo} from '../MetaInfo/MetaInfo';\nimport {\n useMdmEntity,\n useMdmImageAttributesFieldsOrder,\n useMdmIsViewMode,\n useMdmModifiedEntity\n} from '../../../contexts';\nimport {useStyles} from './styles';\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\n const [isDefault, setIsDefault] = useState<boolean>(false);\n\n const entity = useMdmEntity() || ({} as Entity);\n const modifiedEntity = useMdmModifiedEntity(entity?.uri) || ({} as Entity);\n const isViewMode = useMdmIsViewMode();\n const imageAttributeConfig = useMdmImageAttributesFieldsOrder() || {};\n\n const entityToShow = isViewMode ? entity : modifiedEntity;\n const imageAttributeFieldsOrder = imageAttributeConfig[entity?.type] || imageAttributeConfig?.default || {};\n\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={<Checkbox className={styles.checkbox} checked={isDefault} onChange={handleChange} />}\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 '@mui/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 from '@mui/material/Box';\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 '@mui/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 from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\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 '@mui/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 from '@mui/material/Link';\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 '@mui/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 from '@mui/material/Button';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport LinkIcon from '@mui/icons-material/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 {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';\nimport {useMdmIsViewMode} from '../../contexts';\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\n const isViewMode = useMdmIsViewMode();\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 '@mui/styles';\nimport {alpha} from '@mui/material/styles';\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: alpha(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 ReactResizeDetector from 'react-resize-detector';\nimport Typography from '@mui/material/Typography';\nimport {\n AttributeType,\n Entity,\n ImageAttributeValue,\n insertDefaultImageByAttrUri,\n Paging,\n AttributeItem,\n RequestNextPageOfAttributeValuesPayload\n} from '@reltio/mdm-sdk';\nimport {BlockImageGalleryDialogContext, useMdmAction, useMdmEntity, useMdmIsViewMode} 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 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 setDefaultProfilePicForEntity = useMdmAction('setDefaultProfilePicForEntity');\n const setDefaultProfilePicForModifiedEntity = useMdmAction('setDefaultProfilePicForModifiedEntity');\n const entity = useMdmEntity() || ({} as Entity);\n const isViewMode = useMdmIsViewMode();\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 setDefaultProfilePicForEntity(attributeValue);\n }\n });\n } else {\n setDefaultProfilePicForModifiedEntity({\n entityUri: entity.uri,\n value: attributeValue\n });\n }\n },\n [isViewMode, entity.uri, setDefaultProfilePicForEntity, setDefaultProfilePicForModifiedEntity]\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 {alpha} from '@mui/material/styles';\n\nimport {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n height: '16px',\n borderColor: alpha(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, useContext} from 'react';\nimport classnames from 'classnames';\nimport {\n getAttrDataTypeDefinition,\n getAttributeValue,\n isComplexAttribute,\n getLabel,\n AttributeType,\n SimpleAttributeValue,\n NestedAttributeValue,\n ReferenceAttributeValue\n} from '@reltio/mdm-sdk';\nimport Chip from '@mui/material/Chip';\nimport DataTypeValue from '../../DataTypeValue/DataTypeValue';\nimport {withTooltip} from '../../../HOCs';\nimport {EntityContext, useMdmAction} from '../../../contexts';\nimport {getEntityUri} from './heplers';\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};\n\nconst OvIcon = ({className, attributeType, nonOvValues = [], nonOvTotal}: Props) => {\n const styles = useStyles();\n const openEntity = useMdmAction('openEntity');\n const entity = useContext(EntityContext);\n const entityUri = getEntityUri(entity, nonOvValues);\n\n const onClick = useCallback(() => {\n openEntity({uri: entityUri, viewId: null, screen: 'sources'});\n }, [openEntity, entityUri]);\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=\"bottom\"\n label={`+ ${nonOvTotal}`}\n variant=\"outlined\"\n onClick={entityUri ? onClick : undefined}\n classes={{\n root: classnames(styles.container, className),\n label: styles.label\n }}\n />\n );\n};\n\nexport default OvIcon;\n","import {\n getEntityUriFromAttributeUri,\n isEntityUri,\n Entity,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\n\ntype NonOvValues = Array<SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue>;\n\nexport const getEntityUri = (entity: Entity, nonOvValues: NonOvValues) => {\n const attributeUri = nonOvValues?.[0]?.uri;\n const entityOrRelationUri = attributeUri ? getEntityUriFromAttributeUri(attributeUri) : null;\n return entityOrRelationUri && isEntityUri(entityOrRelationUri) ? entityOrRelationUri : entity?.uri;\n};\n","import {useCallback, useState, useMemo} from 'react';\n\nimport {\n AttributeType,\n convertPivotingValueToSearchFilters,\n Entity,\n getFilteredEntities,\n getTotals,\n PivotingValue,\n PrimitiveValue\n} from '@reltio/mdm-sdk';\n\nimport {useMdmEntity, useMdmGlobalSearchRequestOptions} from '../../contexts';\nimport {useSafePromise} from '../useSafePromise';\n\nexport const MAX_ENTITIES_PIVOTING_TOOLTIP = 6;\n\nexport type Props = {\n value: PivotingValue[] | PrimitiveValue;\n attributeType: AttributeType;\n config: {entityType?: string};\n};\n\nexport const usePivotingDataLoader = ({value, attributeType, config = {}}: Props) => {\n const [entities, setEntities] = useState<Entity[]>([]);\n const [total, setTotal] = useState(0);\n const safePromise = useSafePromise();\n const entity = useMdmEntity() || ({} as Entity);\n const globalSearchRequestOptions = useMdmGlobalSearchRequestOptions();\n const entityType = config.entityType || entity.type;\n const filters = useMemo(\n () => convertPivotingValueToSearchFilters({value, attributeType, entityType}),\n [attributeType, entityType, value]\n );\n const options = useMemo(\n () => ({\n max: MAX_ENTITIES_PIVOTING_TOOLTIP,\n sort: 'label',\n ...(globalSearchRequestOptions || {})\n }),\n [globalSearchRequestOptions]\n );\n\n const loadPivotingData = useCallback(() => {\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 }, [filters, options, safePromise]);\n return {entities, total, loadPivotingData};\n};\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} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React, {forwardRef, useContext} from 'react';\nimport classnames from 'classnames';\nimport {AttributeType, PivotingValue} from '@reltio/mdm-sdk';\nimport {UrlGeneratorsContext, useMdmUiPath} from '../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n value: PivotingValue[];\n children: React.ReactNode;\n attributeType: AttributeType;\n onClick: () => void;\n};\n\nconst PivotingUriLink = forwardRef(\n ({value, attributeType, children, className, onClick}: Props, ref: React.Ref<HTMLAnchorElement>) => {\n const styles = useStyles();\n const {generatePivotingUrl} = useContext(UrlGeneratorsContext);\n const uiPath = useMdmUiPath();\n const url = generatePivotingUrl({uiPath, uri: attributeType.uri, value: JSON.stringify(value)});\n\n return (\n <a\n ref={ref}\n href={url}\n onClick={(e) => {\n onClick();\n e.stopPropagation();\n e.preventDefault();\n }}\n className={classnames(styles.link, className)}\n >\n {children}\n </a>\n );\n }\n);\n\nPivotingUriLink.displayName = 'PivotingUriLink';\n\nexport default PivotingUriLink;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((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: '32px',\n paddingLeft: '16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '16px'\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 wordBreak: 'break-word'\n },\n icon: {\n marginRight: '8px',\n verticalAlign: 'middle',\n width: '12px',\n height: '12px'\n },\n content: {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n lineHeight: '16px'\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 from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, Entity, getEntityUriForLink, getLabel, PivotingValue} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport PivotingUriLink from '../../PivotingUriLink/PivotingUriLink';\nimport {MAX_ENTITIES_PIVOTING_TOOLTIP} from '../../../hooks/usePivotingDataLoader/usePivotingDataLoader';\nimport {useStyles} from './styles';\n\nexport type Props = {\n attributeType: AttributeType;\n config: {label?: string};\n entities: Entity[];\n generatedValue: PivotingValue[];\n onSeeAllClick: () => void;\n total: number;\n};\n\nexport const PivotingTooltipContent = ({\n attributeType,\n config = {},\n entities,\n generatedValue,\n onSeeAllClick,\n total\n}: Props) => {\n const styles = useStyles();\n const shouldShowSeeAllButton = total > MAX_ENTITIES_PIVOTING_TOOLTIP;\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 <PivotingUriLink\n value={generatedValue}\n attributeType={attributeType}\n className={styles.seeAllButton}\n onClick={onSeeAllClick}\n >\n {i18n.text('See all')}\n </PivotingUriLink>\n </div>\n )}\n </div>\n );\n};\n","import React, {useContext} from 'react';\nimport Tooltip from '@mui/material/Tooltip';\nimport {\n AttributeType,\n isNested,\n Metadata,\n NestedAttributeValue,\n PrimitiveValue,\n RecordAttributesType,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {isNil} from 'ramda';\n\nimport {PivotingAttributeContext, useMdmAction, useMdmMetadata} from '../../../contexts';\nimport {usePivotingDataLoader} from '../../../hooks/usePivotingDataLoader/usePivotingDataLoader';\nimport {\n convertNestedAttributePivotingValue,\n convertSimpleAttributePivotingValue,\n generatePivotingValue,\n preparePivotingAttributeValue\n} from './helpers';\nimport PivotingIcon from '../../../icons/PivotingIcon';\nimport {PivotingTooltipContent} from './PivotingTooltipContent';\nimport PivotingUriLink from '../../PivotingUriLink/PivotingUriLink';\nimport {usePivotingTooltipStyles, useStyles} from './styles';\n\ntype Props = {\n value: SimpleAttributeValue | NestedAttributeValue;\n attributeType: AttributeType;\n children?: React.ReactNode;\n className?: string;\n};\n\nexport const PivotingTooltip = ({value, attributeType, children, className}: Props) => {\n const styles = usePivotingTooltipStyles();\n const contentStyles = useStyles();\n const pivotingAttributesList = useContext(PivotingAttributeContext) || [];\n const openPivotingPerspective = useMdmAction('openPivotingPerspective');\n const metadata = useMdmMetadata() || ({} as Metadata);\n const isNestedAttribute = isNested(attributeType);\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 convertPivotingValue = () =>\n Array.isArray(pivotingValue)\n ? convertNestedAttributePivotingValue(pivotingValue)\n : convertSimpleAttributePivotingValue(attributeType, pivotingValue);\n\n const generatedValue = isPivotingAttribute ? convertPivotingValue() : undefined;\n const handleSeeAllClick = () => {\n openPivotingPerspective({value: generatedValue, attributeType});\n };\n const {entities, total, loadPivotingData} = usePivotingDataLoader({\n value: pivotingValue,\n attributeType,\n config: pivotingAttribute?.popup\n });\n return isPivotingAttribute ? (\n <Tooltip\n arrow\n placement=\"right-start\"\n classes={styles}\n disableInteractive={false}\n onOpen={loadPivotingData}\n title={\n <PivotingTooltipContent\n generatedValue={generatedValue}\n attributeType={attributeType}\n config={pivotingAttribute.popup}\n onSeeAllClick={handleSeeAllClick}\n entities={entities}\n total={total}\n />\n }\n >\n <span className={className}>\n <PivotingIcon className={contentStyles.icon} />\n <PivotingUriLink\n onClick={handleSeeAllClick}\n className={contentStyles.content}\n value={generatedValue}\n attributeType={attributeType}\n >\n {children}\n </PivotingUriLink>\n </span>\n </Tooltip>\n ) : (\n <>{children}</>\n );\n};\n","import {AttributeType} from '@reltio/mdm-sdk';\nimport React, {forwardRef} from 'react';\nimport EditModeAttributesFactory from './AttributesFactory';\n\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n} & Record<string, unknown>;\n\nconst Attribute = forwardRef((props: Props, ref: React.MutableRefObject<HTMLDivElement>) => {\n const {className, ...otherProps} = props;\n return (\n <div ref={ref} data-reltio-id=\"reltio-edit-attribute\" className={className}>\n {EditModeAttributesFactory.build(props.attributeType, otherProps)}\n </div>\n );\n});\n\nAttribute.displayName = 'Attribute';\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/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, {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 {last, 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';\nimport {withContext} from '../../../../HOCs';\nimport {ScrollType, ScrollToElementContext} from '../../../../contexts';\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 highlightAttribute\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 highlightAttribute(last(attributeTypes), ScrollType.NewAttribute);\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}_${parentUri}`}\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 highlightAttribute: PropTypes.func\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue) => {\n const {highlightAttribute} = contextValue || {};\n return {highlightAttribute};\n },\n AttributesList\n);\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 {filter, propSatisfies} from 'ramda';\nimport {isTempUri} from '@reltio/mdm-sdk';\n\nconst filterNewValues = filter(propSatisfies(isTempUri, 'uri'));\n\nexport {filterNewValues};\n","import {makeStyles} from '@mui/styles';\n\nconst highlightBeforeStyles = {\n content: '\"\"',\n position: 'absolute',\n left: '-1000px',\n top: '-4px',\n width: '5000px',\n height: 'calc(100% + 8px)',\n animationName: '$highlightAnimation',\n animationDuration: '2s',\n animationIterationCount: 1,\n opacity: 0\n};\n\nexport const useStyles = makeStyles(() => ({\n '@keyframes highlightAnimation': {\n '0%': {opacity: 0},\n '50%': {opacity: 1},\n '100%': {opacity: 0}\n },\n highlighted: {\n '&::before': {\n ...highlightBeforeStyles,\n background: 'rgba(228, 151, 0, 0.08)'\n },\n position: 'relative'\n }\n}));\n","import {ContextType, useEffect, useRef} from 'react';\nimport {ScrollToElementContext} from '../../../../../contexts';\n\nimport {useStyles} from './styles';\n\nexport const useScrollToAttribute = (context?: ContextType<typeof ScrollToElementContext>) => {\n const styles = useStyles();\n\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (context) {\n context.scrollIntoRef(ref);\n }\n }, [context]);\n\n return context ? {ref, highlightedClassName: styles.highlighted} : {ref};\n};\n","import React, {useCallback, useRef, useState, useContext, useMemo, memo} from 'react';\nimport classNames from 'classnames';\nimport {\n AttributeValue,\n createNewAttribute,\n getAttributeOwnError,\n isComplexAttribute,\n isEditableMode as checkIsEditableMode,\n isEmptyValue,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem,\n AttributeType,\n AttributeError,\n RequestNextPageOfAttributeValuesPayload\n} from '@reltio/mdm-sdk';\nimport {add, always, has, ifElse, min, pipe, prop, T, omit} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Title from '../../../Title/Title';\nimport OvIcon from '../../OvIcon';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Cardinality from './CardinalityMessage';\nimport {AttributePagerProps} from './types';\nimport {filterNewValues} from './utils';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport {useScrollToAttributeError} from '../../../../hooks';\nimport DescriptionIcon from '../../DescriptionIcon/DescriptionIcon';\nimport {useScrollToAttribute} from '../hooks/useScrollToAttribute/useScrollToAttribute';\nimport {useStyles} from './styles';\n\ntype Props = Omit<AttributePagerProps, 'values'> & {\n values?: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n nonVisibleValues: AttributeValue[];\n errorMessage?: string;\n errors?: AttributeError[];\n max?: number;\n onDeactivateError?: (id: string) => void;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\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 highlightedError,\n highlightedAttribute,\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, description} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n const {ref: errorRef, errorClassName} = useScrollToAttributeError({highlightedError});\n const {ref: attributeRef, highlightedClassName} = useScrollToAttribute(highlightedAttribute);\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: omit(['defaultValue'], attributeType)\n })\n );\n\n const onAddOneMore = useCallback(() => {\n setVisibleValuesCount(visibleValuesCount + 1);\n\n const createAttribute = (attributeType: AttributeType): AttributeItem => ({\n parentUri,\n index: visibleValuesCount,\n attributeType\n });\n\n if (showEmpty && !isComplexAttribute(attributeType.type)) {\n const attributes = [createAttribute(omit(['defaultValue'], attributeType)), createAttribute(attributeType)];\n return onAddAttributes(attributes);\n }\n\n return onAddAttributes([createAttribute(attributeType)]);\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 ref={errorRef} className={classNames(styles.wrapper, errorClassName)}>\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 <DescriptionIcon description={description} />\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 className={idx === 0 ? highlightedClassName : null}\n ref={idx === 0 ? attributeRef : null}\n isEmptyEditor={showEmpty}\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\nAttributeRenderer.displayName = 'AttributeRenderer';\n\nexport default memo(AttributeRenderer);\n","import {makeStyles} from '@mui/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 {EntityAttrTypes, getRolesForEntityType, getLastUriPart, AttributeItem} from '@reltio/mdm-sdk';\nimport SimpleDropDownSelector from '../../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {MultiValueChip} from '../../..';\nimport {useStyles} from './styles';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport {useMdmEntity, useMdmMetadata} from '../../../../contexts';\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 const metadata = useMdmMetadata();\n const entity = useMdmEntity();\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\n data-reltio-id=\"reltio-roles-delete-button\"\n className={styles.deleteButton}\n icon={DeleteIcon}\n onClick={handleDelete}\n size=\"L\"\n />\n )}\n </div>\n );\n};\n","import {makeStyles} from '@mui/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 {EntityAttrTypes, AttributeItem, getFacetedAttributeData} from '@reltio/mdm-sdk';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport TypeaheadEditor from '../../../editors/TypeaheadEditor/TypeaheadEditor';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {useMdmEntityUri, useMdmGlobalSearchRequestOptions} from '../../../../contexts';\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 Tags = ({className, values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n const entityUri = useMdmEntityUri();\n const globalSearchRequestOptions = useMdmGlobalSearchRequestOptions();\n\n const getSuggestions = useCallback(\n async (searchValue: string, max: number, pageNo: number) => {\n const response = await getFacetedAttributeData({\n fieldName: 'tags',\n searchValue,\n options: {...globalSearchRequestOptions, max, pageNo}\n });\n return Object.keys(response.tags);\n },\n [globalSearchRequestOptions]\n );\n\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\n data-reltio-id=\"reltio-tags-delete-button\"\n className={styles.deleteButton}\n icon={DeleteIcon}\n onClick={handleDelete}\n size=\"L\"\n />\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 classnames from 'classnames';\nimport {pipe, T} from 'ramda';\nimport Box from '@mui/material/Box';\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';\nimport {ScrollToElementContext} from '../../../../contexts';\nimport {useScrollToAttribute} from '../hooks/useScrollToAttribute/useScrollToAttribute';\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 highlightedAttribute?: React.ContextType<typeof ScrollToElementContext>;\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 highlightedAttribute,\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 {ref, highlightedClassName} = useScrollToAttribute(highlightedAttribute);\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 <div ref={ref} className={classnames(highlightedClassName, styles.wrapper)}>\n <Title\n label={label}\n isRequired={isRequired}\n className={classnames(styles.title, styles.titleWrapper)}\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 </div>\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, {useCallback} from 'react';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport {\n AttributeError,\n AttributeItem,\n AttributeType,\n ImageAttributeValue,\n Paging,\n RequestNextPageOfAttributeValuesPayload,\n getErrorId\n} from '@reltio/mdm-sdk';\nimport Title from '../../../Title/Title';\nimport DescriptionIcon from '../../DescriptionIcon';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport {ScrollToElementContext} from '../../../../contexts';\nimport {useScrollToAttribute} from '../hooks/useScrollToAttribute/useScrollToAttribute';\nimport {useScrollToAttributeError} from '../../../../hooks';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n paging?: Paging;\n parentUri?: string;\n showNonOv?: boolean;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n highlightedAttribute?: React.ContextType<typeof ScrollToElementContext>;\n error?: AttributeError;\n highlightedError?: React.ContextType<typeof ScrollToElementContext>;\n onDeactivateError?: (id: string) => void;\n};\n\nexport const ImageLineRenderer = ({\n attributeType,\n attributeValues,\n paging,\n parentUri,\n showNonOv,\n onDeleteAttribute,\n onChangeAttribute,\n requestNextPageOfAttributeValues,\n highlightedAttribute,\n error,\n highlightedError,\n onDeactivateError\n}: Props) => {\n const styles = useStyles();\n const {label, description, required: isRequired} = attributeType;\n const {ref: highlightedRef, highlightedClassName} = useScrollToAttribute(highlightedAttribute);\n const {ref: errorRef, errorClassName} = useScrollToAttributeError({highlightedError});\n const deactivateError = useCallback(() => {\n if (error && !!onDeactivateError) {\n onDeactivateError(getErrorId(error));\n }\n }, [error, onDeactivateError]);\n\n return (\n <div ref={highlightedRef} className={classnames(styles.wrapper, highlightedClassName)}>\n <div ref={errorRef} className={classnames(styles.imagesWrapper, errorClassName)}>\n <div className={styles.titleWrapper}>\n <Title\n className={styles.title}\n label={label}\n data-reltio-id=\"reltio-attribute-label\"\n isRequired={isRequired}\n />\n <DescriptionIcon description={description} />\n </div>\n <ErrorWrapper errorMessage={error?.message} className={styles.errorWrapper}>\n <ImageAttributesLine\n attributeValues={attributeValues}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={pipe(onChangeAttribute, deactivateError)}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </ErrorWrapper>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport {\n AttributeError,\n AttributeType,\n getAttributeErrorByTypeUri,\n getAttributePagerActiveTypeErrorMessage,\n isAttributeTypeError,\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 AttributeRenderer from './AttributeRenderer';\nimport {AttributePagerProps} from './types';\nimport SpecialRenderer from './SpecialRenderer';\nimport {ImageLineRenderer} from './ImageLineRenderer';\nimport {withContext} from '../../../../HOCs';\nimport {\n isHighlightedAttributeType,\n isHighlightedErrorType,\n ScrollToElementContext,\n useMdmAction,\n useMdmActiveErrorsForAttributesPager,\n useMdmDefaultMaxValues,\n useMdmProfileErrors\n} from '../../../../contexts';\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 max: maxProp,\n showEmptyEditors,\n showNonOv,\n highlightedError,\n highlightedAttribute,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n additionalControlsRenderer\n}: AttributePagerProps) => {\n const onDeactivateError = useMdmAction('errorDeactivated');\n const requestNextPageOfAttributeValues = useMdmAction('requestNextPageOfAttributeValues');\n const activeErrors = useMdmActiveErrorsForAttributesPager(parentUri, attributeType);\n const profileErrors = useMdmProfileErrors();\n const defaultMaxValues = useMdmDefaultMaxValues();\n\n const errorMessage = getAttributePagerActiveTypeErrorMessage(parentUri, attributeType, profileErrors);\n const max = maxProp ?? defaultMaxValues ?? Infinity;\n\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: activeErrors,\n mode,\n parentUri,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n showEmptyEditors,\n highlightedError,\n highlightedAttribute\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 <ImageLineRenderer\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={onChangeAttribute}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n highlightedAttribute={highlightedAttribute}\n error={getAttributeErrorByTypeUri(attributeType.uri, activeErrors)}\n highlightedError={highlightedError}\n onDeactivateError={onDeactivateError}\n />\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 withContext(\n ScrollToElementContext,\n (contextValue, {attributeType, parentUri}) => {\n const {element, type} = contextValue || {};\n const isHighlightedAttribute =\n isHighlightedAttributeType(type) && (element as AttributeType).uri === attributeType.uri;\n const isHighlightedError =\n isHighlightedErrorType(type) &&\n isAttributeTypeError(element as AttributeError, parentUri, attributeType.uri);\n return {\n highlightedAttribute: isHighlightedAttribute ? contextValue : null,\n highlightedError: isHighlightedError ? contextValue : null\n };\n },\n AttributesPager\n);\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Typography from '@mui/material/Typography';\nimport {allPass, always, cond, isNil, has, not, pipe, propSatisfies, T} from 'ramda';\nimport {useStyles} from './styles';\nimport {Cardinality} from '@reltio/mdm-sdk';\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\ntype Props = {\n cardinality?: Cardinality;\n};\n\nconst CardinalityMessage = ({cardinality}: Props) => {\n const styles = useStyles();\n const cardinalityMessage = getCardinalityMessage(cardinality);\n return cardinalityMessage ? (\n <Typography variant=\"caption\" className={styles.caption}>\n {cardinalityMessage}\n </Typography>\n ) : null;\n};\n\nexport default CardinalityMessage;\n","import {makeStyles} from '@mui/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 position: 'relative'\n },\n attributesWrapper: {\n width: '100%',\n marginBottom: '10px'\n },\n imagesWrapper: {\n paddingBottom: '10px',\n width: '100%'\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 verticalAlign: 'middle',\n wordBreak: 'break-all',\n color: theme.palette.text.secondary\n },\n typeError: {\n marginLeft: '12px'\n },\n ovIcon: {\n marginLeft: '8px',\n textIndent: 0\n },\n titleWrapper: {\n display: 'inline-block',\n paddingBottom: '3px'\n },\n errorWrapper: {\n paddingBottom: '10px'\n }\n}));\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n complexWrapper: {\n position: 'relative'\n },\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 {pipe, propOr, pathEq, any} from 'ramda';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\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';\nimport Button from '@mui/material/Button';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Typography from '@mui/material/Typography';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport AttributesList from '../AttributesList/AttributesList';\nimport {withContext} from '../../../../HOCs';\nimport {isHighlightedErrorType, ScrollToElementContext} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\n\nimport {useStyles} from './styles';\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 isHighlightedPath,\n highlightedError,\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 const {ref, errorClassName} = useScrollToAttributeError({highlightedError});\n\n useEffect(() => {\n if (isHighlightedPath) {\n setExpanded(true);\n }\n }, [isHighlightedPath]);\n\n useEffect(() => {\n setExpanded(defaultExpand);\n }, [defaultExpand]);\n\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(\n () => hasAttributeDescendantsWithErrors(attributeValue, errors),\n [errors, 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 <div ref={ref} className={classnames(styles.complexWrapper, errorClassName)}>\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 && (\n <SmallIconButton\n icon={DeleteIcon}\n onClick={onDeleteThis}\n size=\"L\"\n data-reltio-id=\"reltio-delete-complex-attribute-button\"\n />\n )}\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 </div>\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 highlightedError: PropTypes.object,\n isHighlightedPath: PropTypes.bool,\n ...ComplexAttributeType\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue, {attributeValue}) => {\n const {element, type} = contextValue || {};\n const isError = isHighlightedErrorType(type);\n const isHighlighted = isError && element?.uri === attributeValue.uri;\n const isHighlightedPath =\n isError && pipe(propOr([], 'path'), any(pathEq(['value', 'uri'], attributeValue.uri)))(element);\n return {\n highlightedError: isHighlighted ? contextValue : null,\n isHighlightedPath\n };\n },\n ComplexAttribute\n);\n","import React, {useMemo} from 'react';\nimport {AttributeType, Mode, TEntityType} from '@reltio/mdm-sdk';\nimport AttributesList from '../AttributesList';\nimport {useMdmAction, useMdmModifiedEntity} from '../../../../contexts';\n\nconst defaultAttributeTypesSelectionStrategy = (entityType: TEntityType) => entityType && entityType.attributes;\n\ntype Props = {\n entityUri: string;\n entityType: TEntityType;\n mode: Mode;\n attributeTypesSelectionStrategy?: (entityType: TEntityType) => AttributeType[];\n};\n\nconst EntityCreator = ({\n entityUri,\n entityType,\n mode,\n attributeTypesSelectionStrategy = defaultAttributeTypesSelectionStrategy\n}: Props) => {\n const addAttributes = useMdmAction('addAttributes');\n const removeAttribute = useMdmAction('removeAttribute');\n const modifyAttribute = useMdmAction('modifyAttribute');\n const entity = useMdmModifiedEntity(entityUri);\n\n const attributeTypes = useMemo(\n () => attributeTypesSelectionStrategy(entityType),\n [attributeTypesSelectionStrategy, entityType]\n );\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={addAttributes}\n onChangeAttribute={modifyAttribute}\n onDeleteAttribute={removeAttribute}\n />\n ) : null;\n};\n\nexport default EntityCreator;\n","import {makeStyles} from '@mui/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 pointerEvents: 'all'\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 MenuItem from '@mui/material/MenuItem';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport ExpandedValueTooltip from '../../../../ExpandedValueTooltip/ExpandedValueTooltip';\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 <ExpandedValueTooltip value={`${label}${secondaryLabel ? ', ' + secondaryLabel : ''}`}>\n <span className={styles.entityLabel}>\n {label}\n {secondaryLabel && <span className={styles.entitySecondaryLabel}>, {secondaryLabel}</span>}\n </span>\n </ExpandedValueTooltip>\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 PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getLabel, isTempUri} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport {ViewIdContext, UrlGeneratorsContext, useMdmUiPath, useMdmAction} from '../../../../../contexts';\nimport {useSingleValueStyles} from './styles';\n\nconst SingleValue = (props) => {\n const {\n selectProps: {currentEntityType, menuIsOpen, disableLinkClick},\n children,\n data\n } = props;\n\n const styles = useSingleValueStyles();\n const openEntity = useMdmAction('openEntity');\n const uiPath = useMdmUiPath();\n const viewId = useContext(ViewIdContext);\n const {generateEntityUrl} = useContext(UrlGeneratorsContext);\n\n const handleOnMouseDown = (event) => {\n event.stopPropagation();\n if (!disableLinkClick) {\n openEntity({uri: data.entityUri, viewId});\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: generateEntityUrl({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 '@mui/icons-material/Clear';\nimport {useClearIconStyles} from './styles';\nimport IconButton from '@mui/material/IconButton';\n\nconst ClearIndicator = (props) => {\n const {\n selectProps: {onClear}\n } = props;\n\n const styles = useClearIconStyles();\n\n return (\n <IconButton onClick={onClear} size=\"large\">\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 '@mui/icons-material/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 '@mui/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 isAvailableEntityType,\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/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(\n () => entityTypesUris.map((type) => getEntityType(metadata, type)).filter(isAvailableEntityType),\n [entityTypesUris, 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 '@mui/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 from '@mui/material/Box';\nimport Paper from '@mui/material/Paper';\nimport InputBase from '@mui/material/InputBase';\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\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 from '@mui/material/Button';\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 data-reltio-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 '@mui/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 from '@mui/material/Typography';\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 '@mui/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 from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\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 '@mui/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 '@mui/icons-material/Close';\nimport Snackbar from '@mui/material/Snackbar';\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 '@mui/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 {uploadImage as uploadImageRequest, ImageHostingItem, getRequestErrorMessage} from '@reltio/mdm-sdk';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport Typography from '@mui/material/Typography';\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';\nimport {useMdmEnvironment, useMdmImageServicePath, useMdmTenant} from '../../contexts';\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 [loading, setLoading] = useState(false);\n const [error, setError] = useState<string>(null);\n\n const imageServicePath = useMdmImageServicePath();\n const environment = useMdmEnvironment();\n const tenant = useMdmTenant();\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) => {\n setError(getRequestErrorMessage(err, i18n.text('Something went wrong')));\n })\n .finally(() => setLoading(false));\n };\n\n const handleAppendImage = (image?: File) => {\n if (!image) {\n return setError(i18n.text('No image selected.'));\n }\n\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 '@mui/styles';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n width: '100%'\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 React, {useCallback, useState} from 'react';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport {\n AttributeType,\n Entity,\n generateUri,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n ImageHostingItem,\n Paging,\n AttributeItem,\n RequestNextPageOfAttributeValuesPayload\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 {useMdmAction, useMdmEntity, useMdmModifiedEntityDefaultProfilePic} from '../../../../contexts';\nimport {useStyles} from './styles';\n\nconst defaultEntity = {} as Entity;\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 [isVisibleUploadDialog, setIsVisibleUploadDialog] = useState(false);\n\n const setDefaultProfilePic = useMdmAction('setDefaultProfilePicForModifiedEntity');\n const entity = useMdmEntity() || defaultEntity;\n const defaultProfilePic = useMdmModifiedEntityDefaultProfilePic(entity.uri);\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 setDefaultProfilePic({\n entityUri: entity.uri,\n value: newDefaultPic || ({} as ImageAttributeValue)\n });\n }\n },\n [onDeleteAttribute, entity, defaultProfilePic, attributeValues, setDefaultProfilePic]\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 data-reltio-id=\"reltio-upload-image-button\"\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 ImageAttributesLine from './ImageAttributesLine';\n\nexport default ImageAttributesLine;\n","import {AttributeType} from '@reltio/mdm-sdk';\nimport {curry, filter, map, pipe, sort} 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 sortingFn: (item1: AttributeType, item2: AttributeType) => number;\n};\n\nexport const preparedGroupedItems = ({attrTypes, filter = '', sortingFn}: Props): GroupedItem[] =>\n pipe(\n filterItems(filter),\n sort(sortingFn),\n map((attrType: AttributeType) => ({\n item: {\n id: attrType.uri,\n label: attrType.label || attrType.name,\n attrType\n }\n }))\n )(attrTypes);\n","import {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, SortingStrategy} from '@reltio/mdm-sdk';\nimport {flattenGroupedItemsData} from '../../../VirtualGroupedList/helpers';\nimport {preparedGroupedItems} from './helpers';\nimport {useMdmAttributesSortingStrategy} from '../../../../contexts';\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 strategy = useMdmAttributesSortingStrategy();\n\n const hasGroups = Boolean(parent);\n\n const sortingFn = useMemo(() => {\n switch (strategy) {\n case SortingStrategy.ASC_BY_NAME:\n return (item1, item2) => item1?.label?.localeCompare(item2?.label);\n default:\n return (_item1, _item2) => 0;\n }\n }, [strategy]);\n\n const preparedParentGroupItem = useMemo(\n () => (hasGroups ? preparedGroupedItems({attrTypes: [parent], filter, sortingFn}) : []),\n [hasGroups, parent, filter, sortingFn]\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 sortingFn\n }),\n [data, filter, sortingFn]\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(\n () => flattenGroupedItemsData((parentGroup || []).concat(attributesGroup)),\n [parentGroup, attributesGroup]\n );\n\n const parentGroupLength = parentGroup.length;\n const attributesGroupLength = attributesGroup.length;\n return {items, hasGroups, parentGroupLength, attributesGroupLength};\n};\n","import {makeStyles} from '@mui/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 marginTop: '8px',\n marginLeft: '-4px',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n 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 React, {useCallback, useRef, useState} from 'react';\nimport Button from '@mui/material/Button';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {always, any, append, ifElse, not, pipe, pluck, propEq, reject} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport AttributeListItem from '../../../AttributeListItem/AttributeListItem';\nimport SelectionPopup from '../../../SelectionPopup/SelectionPopup';\n\nimport AddIcon from '@mui/icons-material/Add';\nimport Highlighter from '../../../Highlighter/Highlighter';\nimport {useKeyboardNavigation} from '../../../SelectionPopup/helpers';\nimport VirtualGroupedList from '../../../VirtualGroupedList/VirtualGroupedList';\nimport {useMoreAttributesItems} from './useMoreAttributesItems';\n\nimport {useStyles} from './styles';\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\ntype Props = {\n label: string;\n popupTitle?: string;\n data: AttributeType[];\n parent?: AttributeType;\n dense?: boolean;\n onApply: (attributeTypes: AttributeType[]) => void;\n};\nconst MoreAttributesButton = ({label, popupTitle = label, data, parent, dense, onApply}: Props) => {\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 disableHorizontalScrollbar={true}\n items={items}\n height={listHeight}\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\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 '@mui/styles';\n\nexport const useStyles = makeStyles({\n item: {\n marginBottom: '20px'\n },\n dense: {\n marginBottom: 0\n }\n});\n","import React, {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 getErrorId,\n getReferencedEntityActiveError,\n isTempUri,\n getLabel,\n isAttributeTypeError\n} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport EntitySelector from '../EntitySelector/EntitySelector';\nimport {ErrorWrapper} from '../../../index';\nimport {withContext} from '../../../../HOCs';\nimport {\n isHighlightedErrorType,\n ScrollToElementContext,\n useMdmAction,\n useMdmGlobalSearchRequestOptions,\n useMdmMetadata,\n useMdmModifiedEntity\n} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\n\nimport {useStyles} from './styles';\n\nconst ReferenceAttribute = (props) => {\n const styles = useStyles();\n const {highlightedError, ...ownProps} = props;\n const {attributeValue, attributeType, mode, crosswalks, errors, onChangeAttribute} = ownProps;\n\n const initialAttributeValue = useRef(attributeValue);\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n\n const entityUri = getReferencedEntityUriFromAttrValue(attributeValue);\n\n const entityDeleted = useMdmAction('entityDeleted');\n const entityCreated = useMdmAction('entityCreated');\n const errorDeactivated = useMdmAction('errorDeactivated');\n const mdmModifiedEntity = useMdmModifiedEntity(entityUri);\n const modifiedEntity = isTempUri(entityUri) ? mdmModifiedEntity : null;\n const metadata = useMdmMetadata();\n const globalSearchRequestOptions = useMdmGlobalSearchRequestOptions(['ovOnly']);\n\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(\n () => addReferencedRelationCrosswalks(crosswalks, referencedRelation),\n [crosswalks, referencedRelation]\n );\n\n const referencedEntityMissedError = useMemo(\n () => getReferencedEntityActiveError(attributeValue, errors),\n [attributeValue, 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 entityDeleted(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 errorDeactivated(getErrorId(referencedEntityMissedError));\n }\n },\n [\n attributeValue,\n attributeType,\n modifiedEntity,\n onChangeAttribute,\n entityDeleted,\n errorDeactivated,\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 entityCreated(newEntity);\n },\n [newEntityAttrTypesSelectionStrategy, mode, referencedEntityType, metadata, onChangeEntity, entityCreated]\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(\n () => checkMetadataForCreate(mode, referencedEntityType),\n [mode, 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 <div ref={ref} className={errorClassName}>\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 isDisabled={!canChangeReferencedEntity}\n onChange={onChangeEntity}\n onCreate={canCreateReferencedEntity ? onCreateEntity : undefined}\n metadata={metadata}\n attributeTypesSelectionStrategy={newEntityAttrTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </div>\n </ComplexAttribute>\n );\n};\n\nReferenceAttribute.propTypes = {\n ...ReferenceAttributeType,\n highlightedError: PropTypes.object\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue, {attributeValue, attributeType}) => {\n const {element, type} = contextValue || {};\n const isHighlighted =\n isHighlightedErrorType(type) && isAttributeTypeError(element, attributeValue.uri, attributeType.uri);\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n ReferenceAttribute\n);\n","import {makeStyles} from '@mui/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 position: 'relative'\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, {useCallback, useContext, useEffect, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {has, pipe} from 'ramda';\nimport AddIcon from '@mui/icons-material/Add';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Typography from '@mui/material/Typography';\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 {withContext} from '../../../../HOCs';\nimport {\n isHighlightedErrorType,\n ScrollToElementContext,\n DependentLookupAutopopulationContext,\n ProfilePerspectiveViewContext,\n useMdmDependentLookupEditorContext\n} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\nimport {useAutopopulationContextValue} from './useAutopopulationContextValue';\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 highlightedError,\n isEmptyEditor = false,\n ...otherProps\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const isEditableMode = checkIsEditableMode(mode);\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 = useMdmDependentLookupEditorContext(attributeValue, attributeType);\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n\n useEffect(() => {\n // when editor is empty but has default lookup code, onChangeAttribute will be called by useLookupsResolver\n if (isEmptyEditor && isDependentLookupAttrType(attributeType) && !has('lookupCode', attributeValue)) {\n onChangeAttribute({\n attributeType,\n uri: attributeValue.uri,\n value: attributeValue.value,\n silent: true\n });\n }\n }, [isEmptyEditor]);\n\n const dataTypeDefinition = useMemo(() => getAttrDataTypeDefinition(attributeType), [attributeType]);\n const value = useMemo(\n () => attributeValueToEditorValue(attributeValue, dataTypeDefinition),\n [attributeValue, dataTypeDefinition]\n );\n const deactivateError = useCallback(() => {\n if (ownError) {\n onDeactivateError(getErrorId(ownError));\n }\n }, [ownError, onDeactivateError]);\n const onValueEditorChange = useCallback(\n pipe(prepareChangeData(attributeValue, attributeType), onChangeAttribute, deactivateError),\n [attributeValue, attributeType, onChangeAttribute, deactivateError]\n );\n const onDelete = () => {\n onDeleteAttribute({uri: attributeValue.uri, attributeType});\n if (getErrorType(ownError) !== ErrorType.missed) {\n deactivateError();\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, isCrossedOut: true} : {};\n const isProfilePerspectiveView = useContext(ProfilePerspectiveViewContext);\n\n const {autopopulationContextValue} = useAutopopulationContextValue({\n enabled: isProfilePerspectiveView && isDependentLookupAttrType(attributeType),\n attributeTypeUri: attributeType?.uri,\n valueUri: attributeValue.uri\n });\n\n return (\n <div ref={ref} className={classnames(styles.editor, className, errorClassName)}>\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 <DependentLookupAutopopulationContext.Provider value={autopopulationContextValue}>\n <DataTypeValueEditor\n fieldName={attributeUriToSearchUri(attributeType.uri)}\n value={value}\n dataTypeDefinition={dataTypeDefinition}\n error={hasError}\n onChange={onValueEditorChange}\n fullWidth\n {...dependentLookupEditorContext}\n {...otherProps}\n {...deletedProps}\n />\n </DependentLookupAutopopulationContext.Provider>\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\n className={styles.button}\n icon={DeleteIcon}\n onClick={onDelete}\n size=\"L\"\n data-reltio-id=\"reltio-delete-simple-attribute-button\"\n />\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 highlightedError: PropTypes.object,\n isEmptyEditor: PropTypes.bool\n};\n\nconst SimpleAttributeEditorWithScrollToElementContext = withContext(\n ScrollToElementContext,\n (contextValue, {attributeValue}) => {\n const {element, type} = contextValue || {};\n const isHighlighted = isHighlightedErrorType(type) && element?.uri === attributeValue.uri;\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n SimpleAttributeEditor\n);\n\nexport default withAsyncMount(SimpleAttributeEditorWithScrollToElementContext, AsyncMountPlaceholder);\n","import {ContextType, useCallback, useMemo} from 'react';\nimport {isAutopopulationEnabled} from '@reltio/mdm-sdk';\nimport {\n DependentLookupAutopopulationContext,\n useMdmAction,\n useMdmDependentLookupEditorState,\n useMdmLookupAutocomplete\n} from '../../../../contexts';\n\ntype Props = {\n enabled: boolean;\n attributeTypeUri: string;\n valueUri: string;\n};\n\nexport const useAutopopulationContextValue = ({enabled, attributeTypeUri, valueUri}: Props) => {\n const dependentLookupsEditorTouched = useMdmAction('dependentLookupsEditorTouched');\n const autocompleteConfig = useMdmLookupAutocomplete();\n const dependentLookupEditorState = useMdmDependentLookupEditorState(valueUri);\n const autopopulationEnabled = enabled && isAutopopulationEnabled(autocompleteConfig, attributeTypeUri);\n const autopopulationId = autopopulationEnabled ? valueUri : null;\n const {isTouched = false} = (autopopulationEnabled && dependentLookupEditorState) || {};\n\n const onTouch = useCallback(\n (valueUri: string) => {\n dependentLookupsEditorTouched({uri: valueUri, isTouched: true});\n },\n [dependentLookupsEditorTouched]\n );\n const autopopulationContextValue: ContextType<typeof DependentLookupAutopopulationContext> = useMemo(\n () =>\n autopopulationId\n ? {\n id: autopopulationId,\n isTouched,\n onTouch\n }\n : null,\n [autopopulationId, isTouched, onTouch]\n );\n\n return {autopopulationContextValue};\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).utc().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 '@mui/icons-material/KeyboardArrowUp';\nimport Link from '@mui/material/Link';\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 '@mui/icons-material/KeyboardArrowDown';\nimport Link from '@mui/material/Link';\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 '@mui/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/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(\n () => getAttributesListForReadMode(attrTypes, entity, showNonOv),\n [attrTypes, entity, 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 {CSSProperties, makeStyles} from '@mui/styles';\n\nconst fontSize = '13px';\nconst lineHeight = '16px';\n\nconst commonStyles = {\n titleRow: {\n display: 'inline-block',\n minHeight: '16px'\n },\n title: {\n wordBreak: 'break-all',\n verticalAlign: 'middle'\n } as CSSProperties,\n ovIcon: {\n marginLeft: '8px',\n textIndent: 0\n },\n descriptionIcon: {\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 },\n collaborationWrapper: {\n display: 'flex',\n alignItems: 'start',\n minHeight: '18px',\n justifyContent: 'space-between'\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 marginRight: '8px',\n marginLeft: '1px',\n color: 'rgba(0, 0, 0, 0.38)',\n verticalAlign: 'middle'\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 titleRow: {\n ...commonStyles.titleRow,\n marginBottom: '3px'\n },\n ...commonStyles\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 DescriptionIcon from '../../DescriptionIcon/DescriptionIcon';\nimport Attribute from '../AttributesFactory/Attribute';\n\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, description} = 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 <DescriptionIcon description={description} className={styles.descriptionIcon} />\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 {\n AttributeType,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n RequestNextPageOfAttributeValuesPayload\n} 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';\nimport DescriptionIcon from '../../DescriptionIcon';\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, description} = 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 <DescriptionIcon description={description} />\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 '@mui/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nexport const useCommonStyles = makeStyles({\n attributeValue: {\n verticalAlign: 'middle'\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 ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n});\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {getHistoryAppearanceBySpecialAttributeValue, getHistoryAttributeClassName, getRoleLabel} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../../contexts/HistoryAppearanceContext';\nimport {useMdmMetadata} from '../../../../../contexts';\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Role = ({value}: Props) => {\n const styles = useCommonStyles();\n const {appearance} = useContext(HistoryDiffContext);\n const metadata = useMdmMetadata();\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('roles', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return (\n <span className={classnames(styles.attributeValue, styles[historyClassName])}>\n {getRoleLabel(metadata, value)}\n </span>\n );\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 classnames from 'classnames';\nimport InternalLink from '../../../../InternalLink/InternalLink';\nimport {\n Entity,\n getDataTenantEntityUri,\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '@reltio/mdm-sdk';\nimport {\n EntityContext,\n HistoryDiffContext,\n UrlGeneratorsContext,\n useMdmEntity,\n useMdmUiPath\n} from '../../../../../contexts';\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Tag = ({value}: Props) => {\n const styles = useCommonStyles();\n\n const ownEntity: Entity = useContext(EntityContext);\n const {appearance} = useContext(HistoryDiffContext);\n const {generateTagUrl} = useContext(UrlGeneratorsContext);\n\n const currentEntity = useMdmEntity();\n const uiPath = useMdmUiPath();\n\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={classnames(styles.attributeValue, styles[historyClassName])}\n href={generateTagUrl({\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 '@mui/icons-material/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 React from 'react';\nimport {AttributeType, ImageAttributeValue, Paging, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-sdk';\nimport Title from '../../../Title/Title';\nimport DescriptionIcon from '../../DescriptionIcon';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport {useMultiLineStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n paging: Paging;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n parentUri?: string;\n showNonOv?: boolean;\n};\n\nexport const ImageLineRenderer = ({\n attributeType,\n attributeValues,\n paging,\n parentUri,\n showNonOv,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useMultiLineStyles();\n const {label, description} = attributeType;\n\n return (\n <>\n <div className={styles.titleRow}>\n <Title className={styles.title} label={label} data-reltio-id=\"reltio-attribute-label\" />\n <DescriptionIcon className={styles.descriptionIcon} description={description} />\n </div>\n <ImageAttributesLine\n attributeValues={attributeValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </>\n );\n};\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 BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport OneLineRenderer from './OneLineRenderer';\nimport MultiLineRenderer from './MultiLineRenderer';\nimport SpecialRenderer from './SpecialRenderer';\nimport {ImageLineRenderer} from './ImageLineRenderer';\nimport {useMdmAction, useMdmDefaultMaxValues} from '../../../../contexts';\nimport {useStyles} from './styles';\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 titleClassName?: string;\n contentClassName?: string;\n showNonOv?: boolean;\n};\n\nconst AttributesPager = ({\n values,\n attributeType,\n drawLines,\n paging = {},\n parentUri,\n max: maxProp,\n titleClassName,\n contentClassName,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n\n const requestNextPageOfAttributeValues = useMdmAction('requestNextPageOfAttributeValues');\n const defaultMaxValues = useMdmDefaultMaxValues();\n const max = maxProp ?? defaultMaxValues ?? Infinity;\n\n const partitionByOv = partition(isOv);\n\n if (!values || !values.length) {\n return null;\n }\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 <ImageLineRenderer\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\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 {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n complexContainer: {\n marginTop: '1px'\n },\n labelContainer: {\n display: 'flex',\n minHeight: '18px'\n },\n label: {\n display: 'inline-flex',\n fontSize: '13px',\n lineHeight: '16px',\n letterSpacing: 'normal',\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 from '@mui/material/Typography';\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 '@mui/styles';\nimport {CROSS_ICON} from './cross.inline.svg';\nimport {HistoryOperations, historyPalettes, svg2Url} from '@reltio/mdm-sdk';\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 {\n AttributeType,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getImageAttributeOvThumbnailUrl,\n ImageAttributeValue,\n Paging,\n RequestNextPageOfAttributeValuesPayload\n} from '@reltio/mdm-sdk';\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 {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 '@mui/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nconst styles = makeStyles({\n label: {\n textDecoration: 'none',\n verticalAlign: 'middle'\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 from '@mui/material/Box';\nimport classnames from 'classnames';\nimport {\n evaluateDeepEntityLabel,\n getAttributeTypeSubAttributes,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getLabel,\n NestedAttributeType\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\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 '@mui/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\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, {useContext, useMemo, memo} from 'react';\nimport classnames from 'classnames';\nimport {\n getAttributeTypeSubAttributes,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getLabel,\n getReferencedEntityUriFromAttrValue,\n isEmptyValue,\n isOv,\n ReferenceAttributeValue\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext, UrlGeneratorsContext, useMdmMetadata, useMdmUiPath} from '../../../../contexts';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport InternalLink from '../../../InternalLink/InternalLink';\nimport SearchHighlighter from '../../../SearchHighlighter/SearchHighlighter';\nimport {useOvValueStyles} from '../helpers/commonStyles';\nimport {ComplexAttributeProps} from '../../types';\nimport useStyles from './styles';\n\nconst ReferenceAttribute = ({\n attributeValue,\n attributeType,\n ...otherProps\n}: ComplexAttributeProps<ReferenceAttributeValue>) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n\n const metadata = useMdmMetadata();\n const uiPath = useMdmUiPath();\n\n const refEntityURI = getReferencedEntityUriFromAttrValue(attributeValue);\n const attributeTypeList = useMemo(\n () => getAttributeTypeSubAttributes(metadata, attributeType),\n [attributeType, metadata]\n );\n\n const {appearance} = useContext(HistoryDiffContext);\n const {generateEntityUrl} = useContext(UrlGeneratorsContext);\n\n const entityLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n const screen = refEntityURI?.startsWith('changeRequests') ? 'dcrReview' : 'profile';\n return (\n <InternalLink\n href={isEmptyValue(appearance) ? generateEntityUrl({uiPath, uri: refEntityURI, screen}) : 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, generateEntityUrl]);\n\n return (\n <ComplexAttribute\n attributeTypesList={attributeTypeList}\n attributeValue={attributeValue}\n label={entityLabel}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nexport default memo(ReferenceAttribute);\n","import ReferenceAttribute from './ReferenceAttribute';\n\nexport default ReferenceAttribute;\n","import {makeStyles} from '@mui/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\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 verticalAlign: 'middle',\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 getHistoryAppearanceByUri,\n getAttributeValue,\n SimpleAttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType,\n getHistoryAttributeClassName\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 {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.attributeValue, styles[historyClassName], {\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\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} from '@mui/styles';\n\nexport const useOvValueStyles = makeStyles((theme) => ({\n ovFalse: theme.inactive\n}));\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';\nimport {useUsers} from '../../hooks/useUsers';\nimport {UsersContext} from '../UsersContext';\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\nexport const CollaborationContextProvider = ({collaboration, children}) => {\n const users = useUsers();\n return (\n <CollaborationContext.Provider value={collaboration}>\n <UsersContext.Provider value={users}>{children}</UsersContext.Provider>\n </CollaborationContext.Provider>\n );\n};\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\ntype Features = {\n showDescription?: boolean;\n showNavigateToGraph?: boolean;\n};\n\nexport const FeaturesContext = React.createContext<Features>({showDescription: false, showNavigateToGraph: true});\n\nFeaturesContext.displayName = 'FeaturesContext';\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 ProfilePerspectiveViewContext = React.createContext(false);\n\nProfilePerspectiveViewContext.displayName = 'ProfilePerspectiveViewContext';\n","import React from 'react';\n\nexport const RelatedObjectUrisContext = React.createContext<string[]>([]);\n\nRelatedObjectUrisContext.displayName = 'RelatedObjectUrisContext';\n","import React, {useCallback, useMemo, useRef, useState} from 'react';\nimport {AttributeError, AttributeType} from '@reltio/mdm-sdk';\nimport {noop} from '../../core';\n\nexport enum ScrollType {\n Error = 'Error',\n NewAttribute = 'NewAttribute'\n}\n\ntype ScrollToElementContextProps = {\n element: unknown;\n type: ScrollType;\n highlightError?: (element: unknown) => void;\n highlightAttribute?: (element: unknown) => void;\n scrollIntoRef: (ref: React.MutableRefObject<HTMLDivElement>) => void;\n};\n\nexport const isHighlightedErrorType = (type: ScrollType) => type === ScrollType.Error;\nexport const isHighlightedAttributeType = (type: ScrollType) => type === ScrollType.NewAttribute;\n\nexport const ScrollToElementContext = React.createContext<ScrollToElementContextProps>({\n element: null,\n type: null,\n highlightError: noop,\n highlightAttribute: noop,\n scrollIntoRef: noop\n});\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const ScrollToElementProvider = ({children}: Props) => {\n const [element, setElement] = useState<{value: unknown; type: ScrollType}>(null);\n const highlightTimer = useRef(null);\n\n const scrollIntoRef = useCallback((ref: React.MutableRefObject<HTMLDivElement>) => {\n if (!ref.current) return;\n ref.current.scrollIntoView({behavior: 'smooth', block: 'center'});\n clearTimeout(highlightTimer.current);\n highlightTimer.current = setTimeout(() => setElement(null), 2000);\n }, []);\n\n const handleHighlightError = useCallback((highlightedError: AttributeError) => {\n setElement({value: highlightedError, type: ScrollType.Error});\n }, []);\n\n const handleHighlightAttribute = useCallback((highlightedAttribute: AttributeType) => {\n setTimeout(() => setElement({value: highlightedAttribute, type: ScrollType.NewAttribute}), 300);\n }, []);\n\n const contextValue = useMemo(\n () => ({\n element: element?.value,\n highlightError: handleHighlightError,\n highlightAttribute: handleHighlightAttribute,\n scrollIntoRef,\n type: element?.type\n }),\n [element, scrollIntoRef]\n );\n\n return <ScrollToElementContext.Provider value={contextValue}>{children}</ScrollToElementContext.Provider>;\n};\n","import React from 'react';\nimport {User} from '@reltio/mdm-sdk';\n\nexport const UsersContext = React.createContext<Pick<User, 'email' | 'username'>[]>([]);\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 {useEffect, MutableRefObject} from 'react';\n\nexport const useAutoFocus = (inputRef: MutableRefObject<HTMLInputElement>, isEditing: boolean) => {\n useEffect(() => {\n if (isEditing) {\n const position = inputRef.current?.value?.length;\n inputRef.current?.focus();\n inputRef.current?.setSelectionRange(position, position);\n }\n }, [inputRef, isEditing]);\n};\n","import {makeStyles} from '@mui/styles';\n\nconst highlightBeforeStyles = {\n content: '\"\"',\n position: 'absolute',\n left: '-1000px',\n top: '0px',\n width: '5000px',\n height: 'calc(100% - 10px)',\n animationName: '$highlightAnimation',\n animationDuration: '2s',\n animationIterationCount: 1,\n opacity: 0\n};\nconst ERROR_COLOR = 'rgba(255, 0, 0, 0.06)';\nconst WARNING_COLOR = 'rgba(228, 151, 0, 0.08)';\n\nexport const useStyles = makeStyles(() => ({\n '@keyframes highlightAnimation': {\n '0%': {opacity: 0},\n '50%': {opacity: 1},\n '100%': {opacity: 0}\n },\n highlightError: {\n '&::before': {\n ...highlightBeforeStyles,\n background: ERROR_COLOR\n }\n },\n highlightWarning: {\n '&::before': {\n ...highlightBeforeStyles,\n background: WARNING_COLOR\n }\n },\n simpleAttribute: {\n position: 'relative',\n '&::before': {\n top: '-4px',\n height: 'calc(100% + 8px)'\n }\n }\n}));\n","import {ContextType, useEffect, useRef} from 'react';\nimport {pathOr} from 'ramda';\nimport classnames from 'classnames';\nimport {ErrorSeverity} from '@reltio/mdm-sdk';\nimport {ScrollToElementContext} from '../../contexts';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n highlightedError: ContextType<typeof ScrollToElementContext> | null;\n isSimple?: boolean;\n};\n\nexport const useScrollToAttributeError = ({highlightedError: context, isSimple = false}: Props) => {\n const styles = useStyles();\n\n const ref = useRef<HTMLDivElement>(null);\n\n const severity: ErrorSeverity = pathOr(ErrorSeverity.ERROR, ['element', 'severity'])(context);\n const errorClassName: string = classnames({\n [styles.highlightError]: severity === ErrorSeverity.ERROR,\n [styles.highlightWarning]: severity === ErrorSeverity.WARNING,\n [styles.simpleAttribute]: isSimple\n });\n\n useEffect(() => {\n if (context) {\n context.scrollIntoRef(ref);\n }\n }, [context]);\n\n return context ? {ref, errorClassName} : {ref};\n};\n","import {useEffect, useState} from 'react';\nimport memoizeOne from 'memoize-one';\nimport {getAllUsersForTenant, UserInfo} from '@reltio/mdm-sdk';\nimport {useMdmServicesPath, useMdmTenant} from '../contexts';\n\nconst getAllUsersForTenantMemoized = memoizeOne((tenant, servicesPath) => getAllUsersForTenant({tenant, servicesPath}));\n\nexport const useUsers = () => {\n const [users, setUsers] = useState<UserInfo[]>([]);\n\n const tenant = useMdmTenant();\n const servicesPath = useMdmServicesPath();\n\n const onError = (e) => {\n console.warn('Users error', e);\n setUsers([]);\n };\n\n useEffect(() => {\n getAllUsersForTenantMemoized(tenant, servicesPath)\n .then((users) => setUsers(users))\n .catch(onError);\n }, [tenant, servicesPath]);\n\n return users;\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","minWidth","fontWeight","whiteSpace","overflow","textOverflow","children","classes","Toolbar","root","Typography","variant","i18n","getRelatedEntityUri","comment","entityUri","index","relatedObjectUris","indexOf","formatDate","time","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","entitiesMap","useContext","EntitiesMapContext","metadata","useMdmMetadata","entity","useMdmEntity","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","underline","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","useMdmUsername","commentUri","isNil","createNewReplyUri","createCommentUri","defaultCommentState","commentOrReply","getDefaultCommentState","hasValue","trim","shouldShowButtons","clearValue","useEffect","current","forceUpdate","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","isResolved","canChangeComment","resolveThread","reOpenThread","deleteComment","updateIsEditingComment","useCallback","useAutoFocus","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","focus","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","alpha","selected","paper","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","MenuListProps","autoFocusItem","caption","errorMessage","hasError","wrapper","error","helperText","margin","stroke","strokeWidth","image","imageWidth","imageHeight","objectFit","verticalAlign","defaultContainer","defaultImage","hideImage","ImageLoadingState","ImageSizesStyles","SMALL","MEDIUM","LARGE","OVERRIDE","src","containerClassName","overlay","sizeStyles","imageLoadingState","setImageLoadingState","imageIsLoading","imageIsLoaded","isEmptyValue","onLoad","onError","alt","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","target","DownloadIcon","xmlnsXlink","xlinkHref","mask","backdrop","appBar","background","closeButton","closeIcon","headerLeft","flex","headerCenter","headerRight","modeSwitcher","Mode","ImageGalleryDialog","mode","onChangeMode","modes","GALLERY_MODE","ViewCompactIcon","DETAILS_MODE","DetailsIcon","Dialog","BackdropProps","fullScreen","AppBar","colorPrimary","CloseIcon","ModeSwitcher","modeId","DialogContent","inRouterContext","useInRouterContext","linkClassName","to","replace","window","location","origin","arrow","boxSizing","shadows","AnimationWrapper","Fade","arrowRef","setArrowRef","Popper","modifiers","name","enabled","options","rootBoundary","altAxis","element","excludeAnchorFromBackdrop","TransitionProps","Paper","isRequired","RequiredMark","lineStyle","decorator","arrowWidth","borderBottom","plain","horizontalLineWidth","description","showDescription","FeaturesContext","Description","alignContent","flexDirection","mainImageContainer","mainImage","arrowButton","arrowButtonPrev","arrowButtonNext","thumbnails","overflowX","gridContainer","thumb","inactiveThumb","Thumbnails","attributeValues","setAttributeValueIndex","attributeValueIndex","gridRef","containerScrollLeft","scrollLeft","containerWidth","currentElementPosition","scroll","IMAGE_WIDTH","Grid","container","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","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","result","values","isLink","borderColor","canAdd","MetaInfoHeader","onAddAttributes","moreAttrTypes","MoreAttributesButton","dense","onApply","parentUri","Divider","float","wordWrap","MetaInfoItem","MetaInfoList","imageAttributeFieldsOrder","isViewMode","useMdmIsViewMode","systemAttributesList","notSystemAttributesList","AttributesPager","drawLines","titleClassName","contentClassName","cancelButton","MetaInfoForm","hasChanges","onDeleteAttribute","onChangeAttribute","shouldShowActionButtons","showEmptyEditors","isTempUri","darkTheme","darkMuiTheme","createTheme","MetaInfo","initialAttributeValue","useMdmMode","isEditableMode","useMdmIsEditableMode","addAttributes","changeAttribute","deleteAttribute","clearLocalChanges","applyLocalChanges","viewId","ViewIdContext","modifyAttribute","useMdmAction","setAttributeValue","prevAttrValue","attribute","addAttribute","nestingLevel","editAttribute","removeAttribute","useEditMetaInfo","ThemeProvider","headerTitle","bodyWrapper","formControlLabel","checkboxLabel","checkbox","ImageDetailsViewSidebar","handleSetAsDefault","isDefault","setIsDefault","modifiedEntity","useMdmModifiedEntity","imageAttributeConfig","useMdmImageAttributesFieldsOrder","entityToShow","default","defaultProfilePic","handleChange","FormControlLabel","control","details","ImageDetailsView","currentAttributeValueUri","setCurrentAttributeValueUri","onChangeAttributeValueIndex","findIndex","GalleryView","items","selectedItems","onSelectImage","onDeselectImage","onClickImage","renderImageActionsOverlay","ImageActionsOverlay","selectButton","textTransform","HeaderLeft","onSelectAll","onClearAll","selectedAllItems","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","forEach","downloadURLs","pipe","imageBox","flexShrink","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","setDefaultProfilePicForEntity","setDefaultProfilePicForModifiedEntity","adjustMaxItemsToScreenWidth","imageMargin","maxItemsPerScreen","Math","floor","hasHiddenImage","IMAGE_MIN_VISIBLE_WIDTH","handleResize","handleOpenImageGalleryDialog","handleCloseImageGalleryDialog","handleDownload","urls","url","isAbsoluteUrl","URL","host","isExternalUrl","iframe","document","createElement","setAttribute","appendChild","setTimeout","removeChild","download","pop","getFilenameFromURL","click","downloadImagesByURLs","navigator","clipboard","writeText","insertDefaultImageByAttrUri","renderImageProps","onOpenImageGalleryDialog","handleWidth","onResize","IMAGE_HEIGHT","ChipWithTooltip","Chip","nonOvValues","nonOvTotal","openEntity","attributeUri","entityOrRelationUri","getEntityUriFromAttributeUri","isEntityUri","getEntityUri","EntityContext","screen","isComplexAttribute","DataTypeValue","getAttributeValue","dataTypeDefinition","getAttrDataTypeDefinition","rich","tooltipPlacement","generatePivotingValue","pivotingAttributes","pivotingChildrenUris","pivotingAttribute","Array","isArray","getPivotingChildrenUris","pivotingChildren","analyticsAttributes","acc","valueToString","valueContainer","lookupCode","isOv","preparePivotingAttributeValue","DataTypes","Date","getTime","isNaN","PivotingUriLink","generatePivotingUrl","UrlGeneratorsContext","uiPath","useMdmUiPath","JSON","stringify","entityTypeLabel","paddingBottom","headerCount","footer","profileIcon","entityContainer","entityLabel","seeAllButton","usePivotingTooltipStyles","PivotingTooltipContent","config","entities","generatedValue","onSeeAllClick","total","shouldShowSeeAllButton","hasEntityTypeLabel","visibleEntity","EntityAvatar","avatarClassName","PivotingTooltip","contentStyles","pivotingAttributesList","PivotingAttributeContext","openPivotingPerspective","pivotingValue","isNested","isPivotingAttribute","some","fromEntries","entries","getLastUriPart","convertSimpleAttributePivotingValue","handleSeeAllClick","loadPivotingData","setEntities","setTotal","safePromise","useSafePromise","globalSearchRequestOptions","useMdmGlobalSearchRequestOptions","entityType","filters","convertPivotingValueToSearchFilters","max","Promise","all","getFilteredEntities","getTotals","results","usePivotingDataLoader","popup","disableInteractive","onOpen","PivotingIcon","Attribute","lazy","errors","crosswalks","propsForSimpleAttribute","NestedAttribute","ReferenceAttribute","SimpleAttributeEditor","isReltioCrosswalk","build","AttributesList","parentAttributeType","alwaysVisibleTypeUris","ALWAYS_VISIBLE_TYPE_URIS","additionalControlsRenderer","highlightAttribute","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","last","ScrollType","decoratorProps","hasDeletionsContextValue","BranchDecorator","parent","HasDeletionsContext","concat","propTypes","PropTypes","ModeType","withContext","ScrollToElementContext","contextValue","filterNewValues","propSatisfies","highlightBeforeStyles","animationName","animationDuration","animationIterationCount","opacity","highlighted","useScrollToAttribute","context","scrollIntoRef","highlightedClassName","AttributeRenderer","nonVisibleValues","highlightedError","highlightedAttribute","onDeactivateError","visibleValuesCount","setVisibleValuesCount","hadDeletions","setHadDeletions","required","cardinality","checkIsEditableMode","errorRef","errorClassName","useScrollToAttributeError","attributeRef","isPinned","isEmptyValues","showEmpty","emptyEditorValue","createNewAttribute","omit","onAddOneMore","createAttribute","newValuesCount","totalProp","add","totalNonVisibleValues","hasPaging","showMore","showLess","shownValues","lastIndex","hiddenValuesCount","classNames","titleWrapper","Title","DescriptionIcon","OvIcon","ovIcon","ErrorMessage","typeError","attributesWrapper","ownError","getAttributeOwnError","isEmptyEditor","ShowMore","moreNumber","min","valueNumber","ShowLess","roleContainer","components","MultiValue","MultiValueChip","Roles","getRolesForEntityType","role","formattedValues","roles","EntityAttrTypes","SimpleDropDownSelector","isMulti","useMdmEntityUri","getSuggestions","async","searchValue","pageNo","response","getFacetedAttributeData","fieldName","tags","TypeaheadEditor","fullWidth","multiple","hasDeletions","hasDeletionsProp","hasDeletionsState","setHasDeletionsState","updateHasDeletions","isActivenessAttrType","renderValue","ImageLineRenderer","highlightedRef","deactivateError","getErrorId","imagesWrapper","ErrorWrapper","errorWrapper","ImageAttributesLine","RENDERER_TYPES","isHighlightedAttributeType","isHighlightedErrorType","isAttributeTypeError","maxProp","activeErrors","useMdmActiveErrorsForAttributesPager","profileErrors","useMdmProfileErrors","useMdmDefaultMaxValues","getAttributePagerActiveTypeErrorMessage","Infinity","partitionByOv","partition","ovValues","visibleValues","commonProps","special","isImage","imageLine","getAttributeErrorByTypeUri","renderAttribute","valueCaption","hasMinValue","hasMaxValue","noMaxValue","not","minValueIsOne","minValue","generateMinCardinality","minValueCaption","generateMaxCardinality","maxValue","maxValueCaption","getCardinalityMessage","allPass","minCardinality","cardinalityMessage","textIndent","complexWrapper","editor","titleContainer","deleted","editedLabel","errorWrapperHelperText","ComplexAttribute","attributeTypesList","hideDeleteButton","state","isHighlightedPath","expandedProp","edited","isNew","defaultExpand","setExpanded","canDelete","checkCanDeleteAttribute","showDeleteButton","hasDescendantsWithErrors","hasAttributeDescendantsWithErrors","hasAnalyticValue","attributeListEntity","getErrorMessage","ArrowExpandButton","AttributeTypeType","NestedAttributeValueType","ReferenceAttributeValueType","ComplexAttributeType","isError","propOr","any","pathEq","defaultAttributeTypesSelectionStrategy","attributeTypesSelectionStrategy","emptyEntityLabel","entityAvatar","entitySecondaryLabel","useSingleValueStyles","paddingTop","linkValue","useGroupStyles","addLabel","groupHeading","addIcon","useClearIconStyles","clearIcon","EntityOption","innerRef","innerProps","selectOption","secondaryLabel","EntityTypeIcon","ExpandedValueTooltip","EntityType","SingleValue","selectProps","currentEntityType","menuIsOpen","disableLinkClick","generateEntityUrl","valueProps","onMouseDown","ClearIndicator","onClear","IconButton","Clear","Group","ComponentsGroup","inputValue","onCreate","Add","creatorWrapper","EntitySelector","entityTypesUris","setInputValue","entityTypes","getEntityType","isAvailableEntityType","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","EntityCreator","ConnectionEntityType","dispatch","MetadataType","inputRoot","input","isEmptyField","ImageByUrlField","onSend","setValue","setError","InputBase","newValue","isCorrectUrl","RegExp","test","IMAGE_TYPES","SelectImageButton","onAppendFile","onInput","files","style","accept","htmlFor","x1","y1","x2","y2","stopColor","offset","stopOpacity","cx","cy","r","rx","ry","isActive","TargetBox","canDrop","isOver","drop","useDrop","NativeTypes","FILE","collect","monitor","UploadIcon","MAX_IMAGE_SIZE","DividerWithText","ErrorSnackbar","Snackbar","dialogPaper","targetBox","UploadImageDialog","setLoading","imageServicePath","useMdmImageServicePath","environment","useMdmEnvironment","tenant","useMdmTenant","uploadImage","uploadImageRequest","res","err","getRequestErrorMessage","finally","isCorrectType","LinearLoadIndicator","uploadContainer","uploadButton","uploadIcon","defaultEntity","isVisibleUploadDialog","setIsVisibleUploadDialog","setDefaultProfilePic","useMdmModifiedEntityDefaultProfilePic","toggleVisibilityUploadDialog","visible","handleAddAttributes","generateUri","ov","handleDeleteAttribute","param","newDefaultPic","methods","imageUrl","CloudUploadIcon","filterItems","curry","filterText","toLowerCase","preparedGroupedItems","sortingFn","GROUP_NAMES","moreAttributes","popupContainer","moreAttributesPopup","buttonLabel","subHeader","noResultsCaptionContainer","popupTitle","setFilter","hasGroups","parentGroupLength","attributesGroupLength","strategy","useMdmAttributesSortingStrategy","SortingStrategy","item1","item2","localeCompare","_item1","_item2","preparedParentGroupItem","parentGroup","preparedAttributesGroupItems","attributesGroup","flattenGroupedItemsData","useMoreAttributesItems","handleListItemClick","append","reject","getItemSize","handleSearchOnEnter","focusIndex","handleKeyDown","useKeyboardNavigation","onSelectFocusedItem","focusIndexRef","groupsCount","listHeight","containerHeight","listItemRenderer","level","isChecked","isFocused","AttributeListItem","Highlighter","highlight","labelInText","LogoIcon","renderGroupTitle","ListItem","SelectionPopup","onSearch","searchInputOnKeyDown","VirtualGroupedList","renderItem","disableHorizontalScrollbar","gutterBottom","evaluateDeepEntityLabel","dataLabelPattern","NestedAttributeType","ownProps","isSimple","getReferencedEntityUriFromAttrValue","entityDeleted","entityCreated","errorDeactivated","mdmModifiedEntity","referencedEntity","getReferencedEntityFromAttrValue","referencedRelation","getReferencedRelationFromAttrValue","referencedEntityTypeUri","getReferencedEntityTypeUriFromAttrType","referencedEntityType","allCrosswalks","addReferencedRelationCrosswalks","referencedEntityMissedError","getReferencedEntityActiveError","selectedEntity","getReferencedEntityUri","getReferencedEntityTypeUri","editableAttrTypes","getReferencedRelationAttrTypesUris","newEntityAttrTypesSelectionStrategy","referencedEntityAttributeTypesSelectionStrategy","onChangeEntity","initialAttrValue","isInitialEntity","modifiedValue","refEntity","convertReferencedEntityForAttrValue","refRelation","createReferencedRelationForAttrValue","onCreateEntity","initValue","newEntityAttrTypes","newEntity","createTemporaryEntity","canChangeReferencedEntity","checkCanEditAttribute","canCreateReferencedEntity","checkMetadataForCreate","isDisabled","ReferenceAttributeType","alignSelf","canCreate","canEdit","showToEdit","dependentLookupEditorContext","useMdmDependentLookupEditorContext","isDependentLookupAttrType","silent","attributeValueToEditorValue","onValueEditorChange","prepareChangeData","showAddButton","deletedProps","isCrossedOut","isProfilePerspectiveView","ProfilePerspectiveViewContext","autopopulationContextValue","valueUri","dependentLookupsEditorTouched","autocompleteConfig","useMdmLookupAutocomplete","dependentLookupEditorState","useMdmDependentLookupEditorState","autopopulationEnabled","isAutopopulationEnabled","autopopulationId","isTouched","onTouch","useAutopopulationContextValue","DependentLookupAutopopulationContext","DataTypeValueEditor","attributeUriToSearchUri","AddIcon","getErrorType","ErrorType","SimpleAttributeValueType","AttributeErrorType","SimpleAttributeEditorWithScrollToElementContext","withAsyncMount","parseBoolean","utils","editorValueToAttributeValue","editorValue","toString","utc","valueOf","getFilteredAttrTypes","includeUris","excludeUris","defaultTo","flatten","__","SimpleAttribute","getAttributesListForReadMode","visibleAttributePagersData","commonStyles","titleRow","descriptionIcon","paddingWrapper","paddingWrapperWithLines","useOneLineStyles","collaborationWrapper","titleIcon","useMultiLineStyles","isRelationAttrType","inlined","CommentsContainer","createRelatedObjectUris","dataReltioId","useCommonStyles","insertAttribute","historyPalettes","HistoryOperations","appearance","HistoryDiffContext","attributeAppearance","getHistoryAppearanceBySpecialAttributeValue","historyClassName","getHistoryAttributeClassName","getRoleLabel","Role","ownEntity","generateTagUrl","currentEntity","InternalLink","tag","dataTenant","getDataTenantEntityUri","Tag","isOneLineRender","render","complexContainer","labelContainer","spacer","LabelRenderer","RightSlot","ovValueStyles","useOvValueStyles","highlightedValuesUris","HighlightedValuesContext","body2","ovFalse","deleteAttributeImage","svg2Url","updateAttributeImage","outlineOffset","updateAttribute","imageAppearance","getHistoryAppearanceByUri","historyAttributesClassName","pivotingTooltip","attributeLabel","SearchHighlighter","getAttributeTypeSubAttributes","relationshipLabel","refEntityURI","attributeTypeList","commentsContainer","multilineAttribute","dataTypeValue","inactive","AsyncMountContext","queueSizeThreshold","Provider","comments","getComments","getCommentsCount","pageToken","CollaborationContextProvider","collaboration","useUsers","showNavigateToGraph","Error","NewAttribute","highlightError","ScrollToElementProvider","setElement","highlightTimer","scrollIntoView","behavior","block","clearTimeout","handleHighlightError","handleHighlightAttribute","queueSize","isFirstRunRef","shouldMount","setShouldMount","timerRef","setSelectionRange","highlightWarning","simpleAttribute","severity","pathOr","ErrorSeverity","getAllUsersForTenantMemoized","memoizeOne","servicesPath","getAllUsersForTenant","setUsers","useMdmServicesPath","warn"],"sourceRoot":""}
|