@reltio/remotes 1.4.1249 → 1.4.1252
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/1920.js +1 -1
- package/1920.js.map +1 -1
- package/2114.js +1 -1
- package/2114.js.map +1 -1
- package/2701.js +1 -1
- package/2701.js.map +1 -1
- package/4737.js +1 -1
- package/{1136.js → 4771.js} +2 -2
- package/4771.js.map +1 -0
- package/6217.js +1 -1
- package/6217.js.map +1 -1
- package/6710.js +1 -1
- package/6710.js.map +1 -1
- package/6971.js +1 -1
- package/6971.js.map +1 -1
- package/8174.js +1 -1
- package/8337.js +1 -1
- package/8439.js +1 -1
- package/8439.js.map +1 -1
- package/9431.js +1 -1
- package/9431.js.map +1 -1
- package/9838.js +1 -1
- package/9838.js.map +1 -1
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/1136.js.map +0 -1
package/1920.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1920.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/HOCs/withAsyncMount/withAsyncMount.js","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/styles.ts","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/ArrowExpandButton.tsx","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/BasicViewHeader.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/utils/index.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/CommentTarget.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/CommentContent.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/Avatar.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/TextFieldWithMentions.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/SendMessageArea.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/Comment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/RepliedComment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CollaborationItem.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/styles.ts","webpack://@reltio/remotes/../components/src/icons/CommentBubble.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/styles.ts","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/CommentButton.tsx","webpack://@reltio/remotes/../components/src/icons/AddComment.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/AddCommentButton.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/CollaborationPopup.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/CommentsContainer.tsx","webpack://@reltio/remotes/../components/src/components/DragAndDrop/DragAndDrop.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/styles.ts","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/DropDownMenuButton.tsx","webpack://@reltio/remotes/../components/src/components/EntityAvatar/EntityAvatar.tsx","webpack://@reltio/remotes/../components/src/components/EntityAvatar/no-photo.svg.ts","webpack://@reltio/remotes/../components/src/components/EntityTypeIcon/EntityTypeIcon.js","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorMessage.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorWrapper.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/styles.ts","webpack://@reltio/remotes/../components/src/components/Highlighter/styles.ts","webpack://@reltio/remotes/../components/src/components/Highlighter/Highlighter.tsx","webpack://@reltio/remotes/../components/src/icons/DefaultImage.tsx","webpack://@reltio/remotes/../components/src/components/Image/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/Image.tsx","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/CheckedIcon.tsx","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/ImageActionsOverlay.tsx","webpack://@reltio/remotes/../components/src/icons/Details.tsx","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/ImageGalleryDialog.tsx","webpack://@reltio/remotes/../components/src/components/InternalLink/styles.ts","webpack://@reltio/remotes/../components/src/components/InternalLink/InternalLink.tsx","webpack://@reltio/remotes/../components/src/components/LinearLoadIndicator/styles.ts","webpack://@reltio/remotes/../components/src/components/LinearLoadIndicator/LinearLoadIndicator.tsx","webpack://@reltio/remotes/../components/src/components/ModeSwitcher/styles.ts","webpack://@reltio/remotes/../components/src/components/ModeSwitcher/ModeSwitcher.tsx","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/styles.ts","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/PopupWithArrow.tsx","webpack://@reltio/remotes/../components/src/components/SearchInput/SearchInput.tsx","webpack://@reltio/remotes/../components/src/components/SearchInput/styles.ts","webpack://@reltio/remotes/../components/src/components/SelectionPopup/SelectionPopup.tsx","webpack://@reltio/remotes/../components/src/components/SelectionPopup/helpers.ts","webpack://@reltio/remotes/../components/src/components/SelectionPopup/styles.js","webpack://@reltio/remotes/../components/src/components/Title/styles.ts","webpack://@reltio/remotes/../components/src/components/Title/Title.tsx","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/styles.js","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/VirtualGroupedList.js","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/helpers.js","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/BranchDecorator.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/Thumbnails.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/ImageDetailsViewCarousel.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/constants/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/MetaInfoHeader.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/MetaInfoItem.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoList.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/MetaInfoForm.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/hooks/useEditMetaInfo.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/theme/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfo/MetaInfo.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/ImageDetailsViewSidebar.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/GalleryView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/HeaderLeft.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/HeaderRight.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/ImageAttributesGallery.tsx","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/helpers/imageAttributes.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/constants.ts","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/OvIcon.js","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/helpers.ts","webpack://@reltio/remotes/../components/src/icons/PivotingIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltipContent.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltip.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/AttributesList.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/CardinalityMessage.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/utils.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributeRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/EntityCreator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/EntityOption.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/SingleValue.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/ClearIndicator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/Group.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/EntitySelector.js","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/ImageByUrlField.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/constants/index.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/SelectImageButton/SelectImageButton.tsx","webpack://@reltio/remotes/../components/src/icons/UploadIcon.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/TargetBox.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/DividerWithText.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/ErrorSnackbar.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/UploadImageDialog.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/useMoreAttributesItems.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/MoreAttributesButton.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/parents.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/cache.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/SimpleAttributeEditor.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/getDependentLookupEditorContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/missedParentsMessage.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/utils.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/HasDeletionsContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/PinnedAttributesContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/helpers/attributesView.ts","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowLess.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowMore.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesList/AttributesList.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/OneLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/MultiLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/SpecialAttributesArray.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Role.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tag.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/cross.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/SimpleAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/helpers/commonStyles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/helpers/historyAppearance.ts","webpack://@reltio/remotes/../components/src/constants/attributes.ts","webpack://@reltio/remotes/../components/src/constants/classnames.ts","webpack://@reltio/remotes/../components/src/contexts/AsyncMountContext/index.js","webpack://@reltio/remotes/../components/src/contexts/BlockImageGalleryDialogContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/CollaborationContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntitiesMapContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntityContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HighlightedValuesContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HistoryAppearanceContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/PivotingAttributeContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/RelatedObjectUrisContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/UsersContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useAsyncMount.js","webpack://@reltio/remotes/../components/src/icons/Download.tsx"],"sourcesContent":["import React, {forwardRef} from 'react';\nimport {useAsyncMount} from '../../hooks/useAsyncMount';\n\nconst withAsyncMount = (Component, PlaceholderComponent = null) => {\n const WithAsyncMount = forwardRef((componentProps, ref) => {\n const shouldMount = useAsyncMount();\n return shouldMount ? (\n <Component {...componentProps} ref={ref} />\n ) : (\n PlaceholderComponent && <PlaceholderComponent {...componentProps} ref={ref} />\n );\n });\n\n WithAsyncMount.displayName = 'WithAsyncMount';\n return WithAsyncMount;\n};\n\nexport default withAsyncMount;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n expandButton: {\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n expandIcon: {\n transition: 'transform .15s ease'\n },\n expanded: {\n transform: 'rotate(90deg)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport SmallIconButton from '../SmallIconButton/SmallIconButton';\nimport ArrowRight from '@material-ui/icons/ArrowRight';\nimport {IconButtonProps} from '@material-ui/core/IconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n expanded: boolean;\n className?: string;\n} & Omit<IconButtonProps, 'size'>;\n\nconst ArrowExpandButton = (props: Props) => {\n const styles = useStyles();\n const {expanded, className, ...otherProps} = props;\n return (\n <SmallIconButton\n icon={ArrowRight}\n size=\"XXS\"\n disableRipple\n iconClassName={classnames(styles.expandIcon, {[styles.expanded]: expanded})}\n className={classnames(className, styles.expandButton)}\n {...otherProps}\n />\n );\n};\n\nexport default ArrowExpandButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n toolbar: {\n minHeight: '48px',\n padding: '8px 24px',\n lineHeight: '28px'\n },\n title: {\n fontSize: '18px',\n fontWeight: 'normal',\n lineHeight: 'inherit',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n});\n","import React from 'react';\nimport Toolbar, {ToolbarProps} from '@material-ui/core/Toolbar';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = ToolbarProps & {\n title?: string;\n classes?: Partial<Record<'root' | 'title', string>>;\n};\n\nconst BasicViewHeader = ({title, children = null, classes = {}, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={classes.root} classes={{root: styles.toolbar}} {...otherProps}>\n <Typography className={classes.title} classes={{root: styles.title}} variant=\"h6\">\n {title}\n </Typography>\n {children}\n </Toolbar>\n );\n};\n\nexport default BasicViewHeader;\n","import i18n from 'ui-i18n';\nimport {Comment} 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","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n title: {\n marginBottom: '10px',\n color: theme.palette.divider,\n fontSize: '12px',\n lineHeight: '14px'\n },\n label: {\n paddingLeft: '9px',\n borderLeft: '1px solid #D8D8D8',\n fontSize: '13px',\n color: theme.palette.text.primary,\n lineHeight: '15px'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {startsWith} from 'ramda';\nimport mdm from '@reltio/mdm-module';\nimport {Comment, Entity, CollaborationObjectTypes} from '@reltio/mdm-sdk';\nimport {\n findAttributeTypeByUri,\n getLabel,\n getEntityUriForLink,\n getEntityId,\n getAttributeTypeUriByValueUri\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {EntitiesMapContext} from '../../../contexts';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport {getRelatedEntityUri} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n comment: Pick<Comment, 'objectType' | 'objectId' | 'relatedObjectUris'>;\n className?: string;\n};\n\nexport const CommentTarget = ({comment, className}: Props) => {\n const styles = useStyles();\n\n const entity = useSelector(mdm.selectors.getEntity) as Entity;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const entitiesMap = useContext(EntitiesMapContext);\n\n const getContent = () => {\n switch (comment.objectType) {\n case CollaborationObjectTypes.ENTITY_ATTRIBUTE: {\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, entity.type);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION_ATTRIBUTE: {\n const relationTypeUri = comment.relatedObjectUris.find(startsWith('configuration/relationTypes'));\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, relationTypeUri);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.ENTITY: {\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected profile:')}</Typography>\n <EntityUriLink\n className={classnames(styles.label, styles.link)}\n value={getEntityUriForLink(entity)}\n >\n {getLabel(entity.label)}\n </EntityUriLink>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n ...(entitiesMap[relatedEntityUri] || {}),\n uri: relatedEntityUri\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected relation:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {relatedEntityUri && (\n <>\n {` ${i18n.text('to')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n case CollaborationObjectTypes.POTENTIAL_MATCH: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n uri: relatedEntityUri,\n label: entitiesMap[relatedEntityUri]?.label\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected potential match:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n\n {relatedEntityUri && (\n <>\n {` ${i18n.text('and')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n default: {\n return null;\n }\n }\n };\n\n return <Box className={className}>{getContent()}</Box>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n wordBreak: 'break-word'\n }\n}));\n","import React, {Fragment, useContext} from 'react';\nimport classnames from 'classnames';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport {UsersContext} from '../../../contexts';\nimport {processMentions} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n comment: Pick<Comment, 'content' | 'namedUsers'>;\n};\n\nexport const CommentContent = ({comment, className}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n return (\n <Typography className={classnames(styles.root, className)}>\n {processMentions(comment.content, comment.namedUsers, (mention) => {\n const user = users.find((user) => user.username === mention.slice(1));\n return user ? <Link href={`mailto:${user.email}`}>{mention}</Link> : mention;\n }).map((el, idx) => (\n <Fragment key={idx}>{el}</Fragment>\n ))}\n </Typography>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '32px',\n height: '32px',\n fontSize: '12px',\n color: theme.palette.text.secondary,\n backgroundColor: 'rgba(144, 164, 174, 0.2)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport MUIAvatar, {AvatarProps} from '@material-ui/core/Avatar';\nimport {getAbbreviationFromUserName} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = Omit<AvatarProps, 'children'> & {\n children: string;\n};\n\nexport const Avatar = ({className, children, ...props}: Props) => {\n const styles = useStyles();\n return (\n <MUIAvatar {...props} className={classnames(styles.root, className)}>\n {getAbbreviationFromUserName(children)}\n </MUIAvatar>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n backgroundColor: '#fff',\n fontFamily: 'Roboto',\n '&__control': {\n fontSize: '13px'\n },\n '&__highlighter': {\n padding: '10px 22px',\n border: '1px solid transparent !important'\n },\n '&__input': {\n borderRadius: '2px',\n border: '1px solid rgba(0,0,0,0.12)',\n padding: '10px 22px',\n outline: 0,\n overflow: 'auto !important'\n },\n '&__suggestions': {\n padding: '8px 0',\n borderRadius: '4px',\n backgroundColor: '#fafafa !important',\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2)',\n transform: 'translateY(-100%)'\n },\n '&__suggestions__list': {\n maxHeight: '200px',\n overflowY: 'scroll'\n },\n '&__suggestions__item': {\n padding: '6px 12px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n transition: theme.transitions.create(['background-color']),\n '&:hover, &--focused': {\n backgroundColor: 'rgba(0,0,0,0.04)'\n }\n }\n },\n mention: {\n position: 'relative',\n zIndex: 1,\n color: theme.palette.primary.main,\n textShadow: '1px 1px 1px white, 1px -1px 1px white, -1px 1px 1px white, -1px -1px 1px white',\n pointerEvents: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {uniq} from 'ramda';\nimport {MentionsInput, Mention, MentionsInputProps, MentionItem} from 'react-mentions';\nimport {UsersContext} from '../../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = Omit<MentionsInputProps, 'children' | 'onChange'> & {\n onChange?: (value: string, plainTextValue: string, mentions: string[]) => void;\n};\n\nexport const TextFieldWithMentions = ({onChange, className, ...props}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n const handleChange = (\n _: React.ChangeEvent<HTMLInputElement>,\n value: string,\n plainTextValue: string,\n mentions: MentionItem[]\n ) => {\n onChange(value, plainTextValue, uniq(mentions.map(({display}) => display.slice(1))));\n };\n\n return (\n <MentionsInput {...props} onChange={handleChange} className={classnames(styles.root, className)}>\n <Mention\n trigger=\"+\"\n data={users.map(({username}) => ({id: username, display: username}))}\n displayTransform={(_, username) => `+${username}`}\n appendSpaceOnAdd={true}\n className={styles.mention}\n />\n </MentionsInput>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n isEditing?: boolean;\n};\n\nexport const useStyles = makeStyles({\n root: ({isEditing}: StylesProps) => ({\n padding: isEditing ? '6px 6px 6px 0' : ' 6px 6px 6px 8px',\n borderRadius: '4px',\n backgroundColor: isEditing ? 'transparent' : 'rgba(0,114,206,0.06)'\n }),\n textField: ({isEditing}: StylesProps) => ({\n maxWidth: isEditing ? '100%' : 'calc(100% - 40px)'\n }),\n form: {\n marginBottom: 0\n },\n main: {\n display: 'flex',\n alignItems: 'center'\n },\n avatar: {\n marginRight: '8px'\n },\n buttons: ({isEditing}: StylesProps) => ({marginLeft: isEditing ? '0' : '40px', marginTop: '8px'}),\n button: {\n '& + $button': {\n marginLeft: '8px'\n }\n }\n});\n","import React, {useState, useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {always, cond, T} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {TextFieldWithMentions} from '../TextFieldWithMentions/TextFieldWithMentions';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {useStyles} from './styles';\nimport {useSafePromise} from '../../../hooks';\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'>;\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\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 username = useSelector(mdm.selectors.getUserName) as string;\n const {createReply, createComment, sending, editComment, editReply} = useContext(CollaborationContext);\n\n const [value, setValue] = useState('');\n const [plainTextValue, setPlainTextValue] = useState('');\n const [mentions, setMentions] = useState([]);\n const [focused, setFocused] = useState(false);\n\n const safePromise = useSafePromise();\n const hasValue = value.trim() !== '';\n const shouldShowButtons = focused || hasValue;\n const status = comment?.status;\n const updateValue = (value: string, plainTextValue: string, mentions: string[]) => {\n setMentions(mentions);\n setValue(value);\n setPlainTextValue(plainTextValue);\n };\n const clearValue = () => {\n onCancel?.();\n updateValue('', '', []);\n };\n\n const handleChange = (newValue: string, newPlainTextValue: string, mentions: string[]) => {\n updateValue(newValue, newPlainTextValue, mentions);\n };\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 safePromise(request()).then(clearValue).catch(console.log); //eslint-disable-line no-console\n };\n\n useEffect(() => {\n if (popperRef) {\n popperRef.current.update();\n }\n }, [popperRef, shouldShowButtons]);\n\n useEffect(() => {\n if (isEditingComment || isEditingReply) {\n if (isEditingComment) {\n setValue(comment.content);\n } else {\n setValue(reply.content);\n }\n } else {\n clearValue();\n }\n }, [isEditingComment, isEditingReply]);\n\n const buttonSize = isEditing ? 'small' : 'medium';\n return (\n <Box className={classnames(styles.root, className)}>\n <form onSubmit={handleSubmit} className={styles.form}>\n <Box className={styles.main}>\n {!isEditing && <Avatar classes={{root: styles.avatar}}>{username}</Avatar>}\n <TextFieldWithMentions\n className={styles.textField}\n disabled={sending}\n onChange={handleChange}\n inputRef={inputRef}\n value={value}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={getPlaceholder(status)}\n />\n </Box>\n {shouldShowButtons && (\n <Box className={styles.buttons}>\n <Button\n className={styles.button}\n variant=\"contained\"\n color=\"primary\"\n disabled={!hasValue || sending}\n type=\"submit\"\n size={buttonSize}\n >\n {getButtonText(status, isEditingComment, isEditingReply)}\n </Button>\n <Button\n disabled={sending}\n onClick={handleCancel}\n className={styles.button}\n variant=\"outlined\"\n color=\"primary\"\n size={buttonSize}\n >\n {i18n.text('Cancel')}\n </Button>\n </Box>\n )}\n </form>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n display: 'flex'\n },\n avatar: {\n marginRight: '8px'\n },\n username: {\n marginBottom: '1px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n createdAt: {\n marginTop: '3px',\n marginRight: '4px',\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n body: {\n marginLeft: '40px'\n },\n commentTarget: {\n marginTop: '-15px'\n },\n message: {\n marginTop: '12px'\n },\n dropdownMenu: {\n zIndex: '3000 !important' as any\n },\n buttons: {\n marginTop: '15px',\n marginBottom: '12px',\n display: 'flex',\n\n '& $button + $button': {\n marginLeft: '10px'\n }\n },\n button: {\n fontSize: '13px',\n lineHeight: '15px'\n }\n}));\n","import React, {useMemo, useContext, useState, useRef, useEffect} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {CommentTarget} from '../CommentTarget/CommentTarget';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {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 [isEditingComment, setIsEditingComment] = useState(false);\n const username: string = useSelector(mdm.selectors.getUserName);\n const {commentId, createdBy, createdTime} = comment;\n const canChangeComment = createdBy === username;\n const {resolveThread, reOpenThread, sending, deleteComment} = useContext(CollaborationContext);\n\n useEffect(() => {\n if (isEditingComment) {\n inputRef.current.focus();\n }\n }, [isEditingComment]);\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => setIsEditingComment(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteComment({uri, commentId})\n }\n ],\n [deleteComment, uri, commentId]\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={() => setIsEditingComment(false)}\n isEditingComment={isEditingComment}\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 {isEditingComment ? sendMessageArea : <CommentContent comment={comment} className={styles.message} />}\n <Box className={styles.buttons}>\n <Link className={styles.button} onClick={onReply} component=\"button\">\n {i18n.text('Reply')}\n </Link>\n {comment.status === 'open' && (\n <Link disabled={sending} className={styles.button} onClick={handleResolve} component=\"button\">\n {i18n.text('Resolve')}\n </Link>\n )}\n {comment.status === 'resolved' && (\n <Link disabled={sending} className={styles.button} onClick={handleReOpen} component=\"button\">\n {i18n.text('Re-open')}\n </Link>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n padding: '8px',\n borderRadius: '4px',\n backgroundColor: 'rgba(0,114,206,0.06)'\n },\n avatar: {\n marginRight: '8px'\n },\n header: {\n display: 'flex',\n marginBottom: '8px'\n },\n username: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n message: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px'\n },\n createdAt: {\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n marked: {\n marginLeft: '8px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n fontStyle: 'italic',\n lineHeight: '15px'\n }\n}));\n","import React, {useRef, useContext, useMemo, useState, useEffect} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Reply, Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {formatDate} from '../utils';\nimport {useStyles} from './styles';\nimport {CollaborationContext} from '../../../contexts';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {SendMessageArea} from '../SendMessageArea/SendMessageArea';\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 [isEditingReply, setIsEditingReply] = useState(false);\n const {createdBy, action, createdTime} = reply;\n const username: string = useSelector(mdm.selectors.getUserName);\n const canChangeReply = createdBy === username;\n\n const {deleteReply} = useContext(CollaborationContext);\n\n useEffect(() => {\n if (isEditingReply) {\n inputRef.current.focus();\n }\n }, [isEditingReply]);\n\n const styles = useStyles();\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => setIsEditingReply(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteReply({uri, commentId: comment.commentId, reply})\n }\n ],\n [deleteReply, uri, comment.commentId, reply]\n );\n\n const sendMessageArea = (\n <SendMessageArea\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n onCancel={() => setIsEditingReply(false)}\n isEditingReply={isEditingReply}\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 (isEditingReply ? sendMessageArea : <CommentContent className={styles.message} comment={reply} />)}\n <Typography className={styles.createdAt}>{formatDate(createdTime)}</Typography>\n </Box>\n {canChangeReply && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n tooltipTitle: i18n.text('Open menu')\n }}\n menuItems={menuItems}\n menuId=\"collaboration-comment-menu\"\n />\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n maxWidth: '100%',\n padding: '8px 4px 10px 16px'\n },\n messages: {},\n repliedComment: {\n marginBottom: '2px'\n },\n replies: {\n marginLeft: '40px'\n },\n sendMessageArea: {\n marginLeft: '40px'\n },\n comment: {}\n}));\n","import React, {useRef, memo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport {Comment} from './Comment/Comment';\nimport {RepliedComment} from './RepliedComment/RepliedComment';\nimport {SendMessageArea} from './SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Classes = Partial<ReturnType<typeof useStyles>>;\n\ntype Props = {\n classes?: Classes;\n uri: string;\n relatedObjectUris: CommentType['relatedObjectUris'];\n objectType: CommentType['objectType'];\n popperRef?: React.RefObject<any>;\n messagesRef?: React.RefCallback<HTMLDivElement>;\n comment?: CommentType;\n};\n\nexport const CollaborationItem = memo(\n ({uri, relatedObjectUris, objectType, classes, popperRef, messagesRef, comment}: Props) => {\n const inputRef = useRef<HTMLInputElement>();\n const styles = useStyles({classes});\n\n const handleReply = () => {\n inputRef.current.focus();\n };\n\n const sendMessageArea = (\n <SendMessageArea\n className={styles.sendMessageArea}\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n\n return (\n <Box className={styles.root}>\n {comment && (\n <>\n <div className={styles.messages} ref={messagesRef}>\n <Comment\n comment={comment}\n uri={uri}\n onReply={handleReply}\n className={styles.comment}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n />\n <Box className={styles.replies}>\n {comment.replies.map((reply) => (\n <RepliedComment\n key={reply.replyId}\n className={styles.repliedComment}\n reply={reply}\n uri={uri}\n comment={comment}\n />\n ))}\n </Box>\n </div>\n {sendMessageArea}\n </>\n )}\n {!comment && sendMessageArea}\n </Box>\n );\n }\n);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../constants/classnames';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n alignItems: 'start'\n },\n addButton: {\n visibility: 'hidden',\n '&$showAlways': {\n visibility: 'visible'\n },\n [`.${COMMENTS_CONTAINER_VISIBILITY_AREA}:hover &`]: {\n visibility: 'visible'\n }\n },\n showAlways: {}\n}));\n","import React from 'react';\n\nconst SvgCommentBubble: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 1h14.4c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1z\" />\n </svg>\n );\n};\n\nexport default SvgCommentBubble;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative',\n height: '18px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: '4px',\n cursor: 'pointer'\n },\n icon: {\n '&:hover': {\n fillOpacity: 0.7\n }\n },\n childrenWrapper: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n lineHeight: '15px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n top: '-2px',\n left: 0,\n right: 0,\n bottom: 0,\n color: 'white',\n fontSize: '10px',\n pointerEvents: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport CommentIcon from '../../../icons/CommentBubble';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst CommentButton = React.forwardRef(({children, onClick}: Props, ref: React.Ref<HTMLDivElement>) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Show comment')}>\n <div ref={ref} className={styles.root} onClick={onClick}>\n <CommentIcon className={styles.icon} />\n <div className={styles.childrenWrapper}>{children}</div>\n </div>\n </Tooltip>\n );\n});\n\nCommentButton.displayName = 'CommentButton';\n\nexport default CommentButton;\n","import React from 'react';\n\nconst SvgAddComment: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 14.653L3.853 13.6H17.2V2.8H2.8v11.853zM17.2 1c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1h14.4zm-6.3 3.6H9.1v2.699L6.4 7.3v1.8l2.7-.001V11.8h1.8V9.099l2.7.001V7.3l-2.7-.001V4.6z\" />\n </svg>\n );\n};\n\nexport default SvgAddComment;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport AddCommentIcon from '../../../icons/AddComment';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst AddCommentButton = ({className, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Add comment')}>\n <div className={classnames(styles.root, className)} onClick={onClick}>\n <AddCommentIcon className={styles.icon} />\n </div>\n </Tooltip>\n );\n};\n\nexport default AddCommentButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Props = {\n scrollWidth: number;\n hasScroll: boolean;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n paddingLeft: '16px',\n paddingRight: '8px'\n },\n headerInfo: {\n marginRight: 'auto',\n display: 'flex',\n alignItems: 'center'\n },\n title: {\n marginRight: '15px',\n color: theme.palette.text.primary,\n fontSize: '16px'\n },\n counter: {\n paddingLeft: '15px',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '24px'\n },\n resolveButton: {\n zIndex: 3000,\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n popper: {\n width: '424px',\n borderRadius: '0 0 4px 4px'\n },\n collaborationItem: {\n padding: '0 0 10px 0'\n },\n comment: ({hasScroll}: Props) => ({\n marginLeft: '16px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n replies: ({hasScroll}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n sendMessageArea: ({hasScroll, scrollWidth}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? scrollWidth + 2 : '8px'\n }),\n messages: {\n maxHeight: '400px',\n overflowY: 'auto'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport DoneIcon from '@material-ui/icons/Done';\nimport {CollaborationContext} from '../../contexts';\nimport {CollaborationItem} from '../CollaborationItem/CollaborationItem';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {PopupWithArrow} from '../PopupWithArrow/PopupWithArrow';\nimport {useStyles} from './styles';\n\ntype PopupWithArrowProps = React.ComponentPropsWithoutRef<typeof PopupWithArrow>;\n\ntype Props = Pick<PopupWithArrowProps, 'open' | 'anchorEl' | 'onClose'> & {\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n comment?: Comment;\n};\n\nexport const CollaborationPopup = ({uri, relatedObjectUris, objectType, anchorEl, onClose, open, comment}: Props) => {\n const [scrollWidth, setScrollWidth] = useState(0);\n const hasScroll = scrollWidth !== 0;\n const styles = useStyles({scrollWidth, hasScroll});\n\n const popperRef = useRef(null);\n const {resolveThread, loading, sending} = useContext(CollaborationContext);\n const itemsCount = 1 + comment?.replies.length;\n\n const handleResolve = () => {\n resolveThread({commentId: comment.commentId, uri});\n };\n\n return (\n <PopupWithArrow\n popperRef={popperRef}\n anchorEl={anchorEl}\n open={open}\n placement=\"right-start\"\n onClose={onClose}\n className={styles.popper}\n >\n <Box className={styles.header}>\n <Box className={styles.headerInfo}>\n <Typography className={styles.title}>{i18n.text('Comments')}</Typography>\n {comment && !loading && (\n <Typography className={styles.counter}>\n {i18n.number(itemsCount)} {itemsCount === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n )}\n </Box>\n {comment && !loading && (\n <SmallIconButtonWithTooltip\n className={styles.resolveButton}\n size=\"S\"\n onClick={handleResolve}\n disabled={sending}\n showForDisabled={true}\n tooltipTitle={i18n.text('Resolve')}\n icon={DoneIcon}\n color=\"primary\"\n />\n )}\n </Box>\n {!loading && (\n <CollaborationItem\n popperRef={popperRef}\n messagesRef={(node) => {\n if (node) {\n setScrollWidth(node.offsetWidth - node.clientWidth);\n }\n }}\n classes={{\n root: styles.collaborationItem,\n replies: styles.replies,\n sendMessageArea: styles.sendMessageArea,\n messages: styles.messages,\n comment: styles.comment\n }}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n )}\n </PopupWithArrow>\n );\n};\n","import React, {useContext, useMemo, useState} from 'react';\nimport {CollaborationObjectTypes, Comment} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nimport {useDidUpdateEffect} from '../../hooks';\nimport {CollaborationContext, RelatedObjectUrisContext} from '../../contexts';\nimport CommentButton from './buttons/CommentButton';\nimport AddCommentButton from './buttons/AddCommentButton';\nimport {CollaborationPopup} from '../CollaborationPopup/CollaborationPopup';\n\ntype Props = {\n className?: string;\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n allowOnlyOneComment?: boolean;\n showAlways?: boolean;\n onChangePopupVisibility?: (visibility: boolean) => void;\n};\n\nconst CommentsContainer = ({\n className,\n uri,\n objectType,\n relatedObjectUris,\n onChangePopupVisibility,\n allowOnlyOneComment = false,\n showAlways = false\n}: Props) => {\n const styles = useStyles();\n\n const [anchorEl, setAnchorEl] = useState<HTMLDivElement | null>(null);\n const [shouldOpenPopup, setShouldOpenPopup] = useState<boolean>(false);\n const isOpenPopup = shouldOpenPopup && Boolean(anchorEl);\n\n const {currentComment, commentsMap, getComment, clearCurrentComment, objectTypes} = useContext(\n CollaborationContext\n );\n const showComments =\n !!commentsMap && (!objectTypes || objectTypes.includes(objectType as CollaborationObjectTypes));\n const openComments = (commentsMap?.[uri] || []).filter(({status}) => status !== 'resolved').reverse();\n const shouldShowAddCommentButton = !allowOnlyOneComment || (allowOnlyOneComment && openComments.length === 0);\n const isOpenPopupWithNewComment = currentComment === null && isOpenPopup;\n\n const handleClickCommentButton = (commentId: string) => {\n getComment(commentId);\n setShouldOpenPopup(true);\n };\n\n const handleClickAddCommentButton = (event: React.MouseEvent<HTMLDivElement>) => {\n setAnchorEl(event.currentTarget);\n setShouldOpenPopup(true);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n clearCurrentComment();\n setShouldOpenPopup(false);\n };\n\n useDidUpdateEffect(() => {\n if (onChangePopupVisibility) {\n onChangePopupVisibility(isOpenPopup);\n }\n }, [isOpenPopup]);\n\n const additionalRelatedObjectUris = useContext(RelatedObjectUrisContext);\n const allRelatedObjectUris = useMemo(() => {\n return additionalRelatedObjectUris ? [...relatedObjectUris, ...additionalRelatedObjectUris] : relatedObjectUris;\n }, [additionalRelatedObjectUris, relatedObjectUris]);\n\n return (\n showComments && (\n <div className={classnames(styles.root, className)}>\n {shouldShowAddCommentButton && (\n <AddCommentButton\n className={classnames(styles.addButton, {\n [styles.showAlways]: showAlways || isOpenPopupWithNewComment\n })}\n onClick={handleClickAddCommentButton}\n />\n )}\n {openComments.map(({replies, commentId}) => {\n return (\n <CommentButton\n ref={commentId === currentComment?.commentId ? setAnchorEl : null}\n key={commentId}\n onClick={() => handleClickCommentButton(commentId)}\n >\n {1 + replies}\n </CommentButton>\n );\n })}\n <CollaborationPopup\n anchorEl={anchorEl}\n open={isOpenPopup}\n onClose={handleClose}\n uri={uri}\n relatedObjectUris={allRelatedObjectUris}\n objectType={objectType}\n comment={currentComment}\n />\n </div>\n )\n );\n};\n\nexport default CommentsContainer;\n","// This component fixes \"Cannot have two HTML5 backends at the same time\" error.\n// Check issue and solution https://github.com/react-dnd/react-dnd/issues/186#issuecomment-561631584\nimport {DndProvider, createDndContext} from 'react-dnd';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport React, {useRef} from 'react';\n\nconst RNDContext = createDndContext(HTML5Backend);\n\ntype Props = {\n children?: React.ReactNode;\n};\n\nconst useDNDProviderElement = (props: Props) => {\n const manager = useRef(RNDContext);\n\n if (!props.children) return null;\n\n return <DndProvider manager={manager.current.dragDropManager}>{props.children}</DndProvider>;\n};\n\nexport const DragAndDrop = (props: Props) => {\n const DNDElement = useDNDProviderElement(props);\n return <>{DNDElement}</>;\n};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n buttonRoot: {\n '&$selected': {\n color: theme.palette.action.active,\n backgroundColor: fade(theme.palette.action.active, 0.12),\n '&:hover': {\n backgroundColor: fade(theme.palette.action.active, 0.15)\n }\n }\n },\n selected: {},\n paper: {\n minWidth: '112px'\n },\n menuItem: {\n minHeight: '32px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n }\n}));\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport withTooltip from '../../HOCs/withTooltip/withTooltip';\nimport {DropDownMenuItem} from '../../types';\n\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\ntype Props = {\n item: DropDownMenuItem;\n onMenuClose?: (e) => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {disabled, text, tooltip, onClick, id = '', selectable, selected} = item;\n const handleClick = (e) => {\n onMenuClose(e);\n onClick(e);\n };\n\n return (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n data-modal\n data-reltio-id={`reltio-search-menu-item${id}`}\n >\n {selectable && <Checkbox checked={selected} color=\"primary\" />}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItemWithTooltip>\n );\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React, {useCallback, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport {identity} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport Menu, {MenuProps} from '@material-ui/core/Menu';\nimport {useDidUpdateEffect} from '../../hooks';\nimport DefaultMenuItemRenderer from './MenuItemRenderer';\nimport {useStyles} from './styles';\nimport {DropDownMenuItem} from '../../types';\n\ntype Props<T> = {\n className?: string;\n buttonComponent?: React.ElementType;\n buttonContent?: React.ReactNode;\n menuItems?: T[];\n buttonProps?: Record<string, unknown>;\n popoverProps?: Omit<MenuProps, 'open'>;\n menuId: string;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n MenuItemRenderer?: (props) => JSX.Element;\n};\n\nfunction DropDownMenuButton<T = DropDownMenuItem>({\n className,\n menuId,\n buttonComponent = Button,\n buttonContent,\n menuItems = [],\n buttonProps = {},\n popoverProps = {},\n onMenuOpen = identity,\n onMenuClose = identity,\n MenuItemRenderer = DefaultMenuItemRenderer\n}: Props<T>) {\n const ButtonComponent = buttonComponent;\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n useDidUpdateEffect(() => {\n isOpen ? onMenuOpen() : onMenuClose();\n }, [isOpen]);\n\n const handleToggle = useCallback((e) => {\n e?.stopPropagation();\n setIsOpen((open) => !open);\n }, []);\n\n const renderMenuItem = (item, index) => {\n return <MenuItemRenderer item={item} key={index} onMenuClose={handleToggle} />;\n };\n\n return (\n <>\n <ButtonComponent\n ref={buttonRef}\n className={classnames(\n styles.buttonRoot,\n {\n [styles.selected]: isOpen\n },\n className\n )}\n onClick={handleToggle}\n aria-pressed={isOpen}\n aria-controls={isOpen ? menuId : undefined}\n aria-haspopup=\"true\"\n {...buttonProps}\n >\n {buttonContent}\n </ButtonComponent>\n <Menu\n id={menuId}\n variant=\"menu\"\n open={isOpen}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={buttonRef.current}\n onClose={handleToggle}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{autoFocusItem: isOpen}}\n {...popoverProps}\n >\n {menuItems.map(renderMenuItem)}\n </Menu>\n </>\n );\n}\n\nDropDownMenuButton.displayName = 'DropDownMenuButton';\n\nexport default DropDownMenuButton;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\n\nimport {Avatar as Avatar} from '@material-ui/core';\nimport {DEFAULT_PROFILE_IMAGE} from './no-photo.svg';\nimport {getEntityImage, getEntityTypeImage, getAbsoluteImageUrl, Entity, svg2Url} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entity: Entity;\n avatarClassName?: string;\n imageClassName?: string;\n};\n\nconst EntityAvatar = ({entity, avatarClassName, imageClassName}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const absoluteImagePath = useSelector(mdmModule.selectors.getAbsoluteImagePath) || '';\n const entityImageSource = getEntityImage(metadata, absoluteImagePath, entity);\n const fallbackImage = getAbsoluteImageUrl(absoluteImagePath, getEntityTypeImage(metadata, entity.type));\n const onImageLoadFail = (e) => {\n e.target.onError = null;\n e.target.src = svg2Url(DEFAULT_PROFILE_IMAGE);\n };\n return (\n <Avatar\n className={classnames(avatarClassName, imageClassName)}\n src={entityImageSource}\n imgProps={{onError: onImageLoadFail}}\n >\n <img\n className={imageClassName}\n src={fallbackImage}\n alt=\"fallback entity avatar\"\n onError={onImageLoadFail}\n />\n </Avatar>\n );\n};\n\nexport default EntityAvatar;\n","export const DEFAULT_PROFILE_IMAGE = `\n<svg width=\"400px\" height=\"400px\" viewBox=\"0 0 400 400\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Group</title>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Group\" fill-rule=\"nonzero\">\n <rect id=\"Rectangle\" fill=\"#DFE5E9\" x=\"0\" y=\"0\" width=\"400\" height=\"400\"></rect>\n <path d=\"M0,387.023257 L0,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 0,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n <path d=\"M0,387.023257 L0,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 0,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n <path d=\"M5.68434189e-14,387.023257 L5.68434189e-14,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 5.68434189e-14,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n </g>\n </g>\n</svg>\n`;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport mdmModule from '@reltio/mdm-module';\nimport RC_EntityTypeIcon from 'react-components/dist/EntityTypeIcon/EntityTypeIcon';\n\nconst ensureSlashEnding = (str) => (str.endsWith('/') ? str : str + '/');\n\nconst EntityTypeIcon = (props) => {\n const absoluteImagePath = useSelector(mdmModule.selectors.getAbsoluteImagePath) || '';\n return <RC_EntityTypeIcon {...props} storagePath={ensureSlashEnding(absoluteImagePath)} />;\n};\n\nexport default EntityTypeIcon;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n message?: string;\n className?: string;\n};\n\nconst ErrorMessage = ({className, message}: Props) => {\n const styles = useStyles();\n if (!message) {\n return null;\n }\n\n return (\n <Typography variant=\"caption\" className={classnames(styles.caption, className)}>\n {message}\n </Typography>\n );\n};\n\nexport default ErrorMessage;\n","import classnames from 'classnames';\nimport ErrorMessage from './ErrorMessage';\nimport FormControl, {FormControlProps} from '@material-ui/core/FormControl';\nimport {FormHelperText as FormHelperText} from '@material-ui/core';\nimport React, {memo} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = FormControlProps & {\n errorMessage?: string;\n classes?: {\n root: string;\n helperText: string;\n };\n};\n\nconst ErrorWrapper = ({errorMessage, children, className, classes, ...otherProps}: Props) => {\n const styles = useStyles();\n const hasError = !!errorMessage;\n\n return (\n <FormControl className={classnames(styles.wrapper, className, classes?.root)} error {...otherProps}>\n {children}\n {hasError && (\n <FormHelperText className={classnames(styles.helperText, classes?.helperText)}>\n <ErrorMessage message={errorMessage} />\n </FormHelperText>\n )}\n </FormControl>\n );\n};\n\nexport default memo(ErrorWrapper);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n helperText: {\n margin: '3px 0 1px 12px'\n },\n caption: {\n display: 'flex',\n color: theme.palette.error.main,\n fontSize: '12px',\n lineHeight: '16px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n highlight: {\n fontWeight: 600\n }\n});\n","import React from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n text?: string;\n highlight?: string;\n className?: string;\n};\n\nconst Highlighter = ({text = '', highlight = '', className}: Props) => {\n const styles = useStyles();\n const parts = highlight && text.split(new RegExp(`(${highlight})`, 'gi'));\n\n return (\n <span>\n {highlight\n ? parts.map((part, i) => (\n <span\n key={i}\n className={\n part.toLocaleLowerCase() === highlight.toLocaleLowerCase()\n ? className || styles.highlight\n : ''\n }\n >\n {part}\n </span>\n ))\n : text}\n </span>\n );\n};\n\nexport default Highlighter;\n","import React from 'react';\n\nconst SvgDefaultImage: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <path d=\"M0 0h24v24H0z\" />\n <path\n d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zm-4.5-9l2.5 3.096V18H5l4.5-5.5 2.5 3.01L16.5 10zm-8-4a1.5 1.5 0 110 3 1.5 1.5 0 010-3z\"\n fillOpacity={0.12}\n fill=\"#000\"\n fillRule=\"nonzero\"\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDefaultImage;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\nimport {ImageSizeType} from './Image';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative'\n },\n image: ({imageWidth, imageHeight}: ImageSizeType) => ({\n width: imageWidth,\n height: imageHeight,\n objectFit: 'cover',\n verticalAlign: 'bottom'\n }),\n defaultContainer: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: 'rgb(247, 247, 247)'\n },\n defaultImage: {\n width: '40px',\n height: '40px',\n marginLeft: 'auto',\n marginRight: 'auto',\n color: theme.palette.text.secondary\n },\n hideImage: {\n display: 'none'\n }\n}));\n","import React, {memo, useState, useEffect} from 'react';\nimport classnames from 'classnames';\nimport NotAvailableImage from '@material-ui/icons/BrokenImage';\nimport DefaultImage from '../../icons/DefaultImage';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst ImageLoadingState = {\n LOADING: 'loading',\n LOADED: 'loaded',\n ERROR: 'error'\n};\n\nexport const ImageSizesStyles = {\n SMALL: {\n imageWidth: 114,\n imageHeight: 114\n },\n MEDIUM: {\n imageWidth: 162,\n imageHeight: 162\n },\n LARGE: {\n imageWidth: 192,\n imageHeight: 192\n },\n OVERRIDE: {\n imageWidth: 'unset',\n imageHeight: 'unset'\n }\n};\n\nexport type ImageSizeType = {\n imageWidth: number | string;\n imageHeight: number | string;\n};\n\ntype Props = {\n src: string;\n className?: string;\n containerClassName?: string;\n size?: ImageSizeType;\n overlay?: React.ReactNode;\n onClick?: () => void;\n};\n\nconst Image = (props: Props) => {\n const {src, className, containerClassName, size = ImageSizesStyles.SMALL, overlay = null, ...otherProps} = props;\n\n const sizeStyles = size || ImageSizesStyles.SMALL;\n const styles = useStyles(sizeStyles);\n const [imageLoadingState, setImageLoadingState] = useState<string>(ImageLoadingState.LOADING);\n\n useEffect(() => {\n setImageLoadingState(ImageLoadingState.LOADING);\n }, [src]);\n\n const onImageLoadFail = () => {\n setImageLoadingState(ImageLoadingState.ERROR);\n };\n\n const onImageLoad = () => {\n setImageLoadingState(ImageLoadingState.LOADED);\n };\n\n const imageIsLoading = imageLoadingState === ImageLoadingState.LOADING;\n const imageIsLoaded = imageLoadingState === ImageLoadingState.LOADED;\n const imageLoadingError = imageLoadingState === ImageLoadingState.ERROR;\n\n return imageLoadingError ? (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <NotAvailableImage className={styles.defaultImage} />\n </div>\n ) : (\n <div className={classnames(styles.root, containerClassName)}>\n {!isEmptyValue(src) && (\n <img\n src={src}\n className={classnames(styles.image, className, {\n [styles.hideImage]: imageIsLoading\n })}\n onLoad={onImageLoad}\n onError={onImageLoadFail}\n alt={'image'}\n {...otherProps}\n />\n )}\n {imageIsLoading && (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <DefaultImage className={styles.defaultImage} />\n </div>\n )}\n {imageIsLoaded && overlay}\n </div>\n );\n};\n\nexport default memo(Image);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n fontSize: '24px',\n color: '#fff'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport {useStyles} from './styles';\n\ntype Props = {\n checked: boolean;\n className?: string;\n onClick: (e) => void;\n};\n\nexport const CheckedIcon = ({checked, className, onClick}: Props) => {\n const styles = useStyles();\n const Icon = checked ? CheckCircleIcon : RadioButtonUncheckedIcon;\n return <Icon className={classnames(styles.root, className)} onClick={onClick} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: '0.2s linear all',\n '&:not($selected):not($selectionMode):hover': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n },\n userSelect: 'none'\n },\n selected: {\n backgroundColor: 'rgba(0,114,206,0.6)'\n },\n selectionMode: {\n cursor: 'pointer',\n '&:not($selected)': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n }\n },\n button: {\n padding: 0,\n width: '100px',\n height: '36px',\n color: '#fff',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px',\n border: '1px solid rgba(255,255,255,0.25)',\n backgroundColor: 'rgba(98,2,238,0)'\n },\n checkedIcon: {\n position: 'absolute',\n left: '4px',\n top: '4px',\n cursor: 'pointer'\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n position: 'absolute',\n top: '4px',\n right: '4px'\n },\n actionButton: {\n color: '#fff',\n fontSize: '24px'\n },\n dropDownMenuButton: {\n margin: '0 2px 0 8px'\n }\n}));\n","import React, {memo, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {ifElse, equals, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {CheckedIcon} from '../CheckedIcon/CheckedIcon';\nimport DownloadIcon from '../../../icons/Download';\nimport {noop} from '../../../core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n id: string;\n canBeSelected?: boolean;\n selected?: boolean;\n selectionMode?: boolean;\n onDeselect?: () => void;\n onSelect?: () => void;\n onShareLink?: () => void;\n onSetAsDefault?: () => void;\n onDelete?: () => void;\n onDownload?: () => void;\n onClick?: () => void;\n};\n\nconst ImageActionsOverlay = (props: Props) => {\n const {\n id,\n canBeSelected = false,\n selected = false,\n selectionMode = false,\n onDeselect = noop,\n onSelect = noop,\n onShareLink,\n onSetAsDefault,\n onDelete,\n onDownload = noop,\n onClick\n } = props;\n\n const styles = useStyles();\n const [hovered, setHovered] = useState<boolean>(false);\n\n const menuItems = useMemo(\n () =>\n [\n {\n text: i18n.text('Share link'),\n onClick: onShareLink\n },\n {\n text: i18n.text('Set as default'),\n onClick: onSetAsDefault\n },\n {\n text: i18n.text('Delete'),\n onClick: onDelete\n }\n ].filter(prop('onClick')),\n [onShareLink, onSetAsDefault, onDelete]\n );\n\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n const toggleSelected = (selected: boolean) => () => ifElse(equals(true), onDeselect, onSelect)(selected);\n\n const showCheckBox = canBeSelected && (selected || hovered || selectionMode);\n const showActions = !selectionMode && !selected && hovered;\n const showDeselectButton = canBeSelected && selected;\n\n const handleClick = (event) => {\n if (event.currentTarget === event.target) onClick();\n };\n\n return (\n <div\n className={classnames(styles.overlay, {\n [styles.selected]: selected,\n [styles.selectionMode]: selectionMode\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={selectionMode ? toggleSelected(selected) : handleClick}\n >\n {showCheckBox && (\n <CheckedIcon className={styles.checkedIcon} checked={selected} onClick={toggleSelected(selected)} />\n )}\n {showActions && (\n <div className={styles.actions}>\n <SmallIconButton onClick={onDownload} className={styles.actionButton} icon={DownloadIcon} />\n <DropDownMenuButton\n menuId={`image-overlay-actions-${id}`}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n className: classnames(styles.actionButton, styles.dropDownMenuButton)\n }}\n menuItems={menuItems}\n />\n </div>\n )}\n {showDeselectButton && (\n <Button className={styles.button} variant=\"outlined\" onClick={onDeselect}>\n {i18n.text('Deselect')}\n </Button>\n )}\n </div>\n );\n};\n\nexport default memo(ImageActionsOverlay);\n","import React from 'react';\n\nconst SvgDetails: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M14 5a1 1 0 011 1v12a1 1 0 01-1 1H4a1 1 0 01-1-1V6a1 1 0 011-1h10zm6 12v2h-3v-2h3zm2-4v2h-5v-2h5zm0-4v2h-5V9h5zm0-4v2h-5V5h5z\"\n id=\"Details_svg__a\"\n />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fillRule=\"evenodd\">\n <mask id=\"Details_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Details_svg__a\" />\n </mask>\n <path mask=\"url(#Details_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDetails;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n paper: {\n backgroundColor: 'rgba(0, 0, 0, .85)'\n },\n backdrop: {\n backgroundColor: 'transparent'\n },\n toolbar: {\n paddingLeft: '20px',\n paddingRight: '20px'\n },\n appBar: {\n position: 'relative',\n background: 'linear-gradient(180deg, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0) 100%)'\n },\n closeButton: {\n marginRight: '28px'\n },\n closeIcon: {\n fontSize: '24px',\n color: '#fff'\n },\n headerLeft: {\n display: 'flex',\n alignItems: 'center',\n flex: 2\n },\n headerCenter: {\n display: 'flex',\n justifyContent: 'center',\n flex: 1\n },\n headerRight: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center'\n },\n modeSwitcher: {\n backgroundColor: '#fff'\n },\n content: {\n padding: 0\n }\n}));\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {AppBar as AppBar} from '@material-ui/core';\nimport {Toolbar as Toolbar} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ViewComfyIcon from '@material-ui/icons/ViewComfy';\nimport DetailsIcon from '../../icons/Details';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport ModeSwitcher from '../ModeSwitcher/ModeSwitcher';\nimport {useStyles} from './styles';\n\nexport enum Mode {\n GALLERY_MODE = 'gallery',\n DETAILS_MODE = 'details'\n}\n\nexport type Props = {\n open: boolean;\n mode: Mode;\n onClose?: () => void;\n onChangeMode?: (mode: Mode) => void;\n children: React.ReactNode;\n header?: {\n left?: React.ReactNode;\n right?: React.ReactNode;\n };\n};\n\nexport const ImageGalleryDialog = ({open, mode, children, header, onClose, onChangeMode}: Props) => {\n const styles = useStyles();\n\n const modes = useMemo(\n () => [\n {\n id: Mode.GALLERY_MODE,\n title: i18n.text('Gallery'),\n Icon: ViewComfyIcon\n },\n {\n id: Mode.DETAILS_MODE,\n title: i18n.text('Details'),\n Icon: DetailsIcon\n }\n ],\n []\n );\n\n return (\n <Dialog classes={{paper: styles.paper}} open={open} BackdropProps={{className: styles.backdrop}} fullScreen>\n <AppBar classes={{colorPrimary: styles.appBar}}>\n <Toolbar className={styles.toolbar}>\n <Box className={styles.headerLeft}>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Close')}\n onClick={onClose}\n className={styles.closeButton}\n iconClassName={styles.closeIcon}\n icon={CloseIcon}\n />\n {header?.left}\n </Box>\n <Box className={styles.headerCenter}>\n <ModeSwitcher<Mode>\n modes={modes}\n modeId={mode}\n onChange={onChangeMode}\n className={styles.modeSwitcher}\n />\n </Box>\n <Box className={styles.headerRight}>{header?.right}</Box>\n </Toolbar>\n </AppBar>\n <DialogContent className={styles.content}>{children}</DialogContent>\n </Dialog>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport {useInRouterContext, Link} from 'react-router-dom';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst InternalLink = (props: React.AnchorHTMLAttributes<HTMLAnchorElement>) => {\n const styles = useStyles();\n const inRouterContext = useInRouterContext();\n const {href, className, ...otherProps} = props;\n const linkClassName = classnames(styles.link, className);\n return inRouterContext && href ? (\n <Link to={href.replace(window.location.origin, '')} className={linkClassName} {...otherProps} />\n ) : (\n <a href={href} className={linkClassName} {...otherProps} />\n );\n};\n\nexport default InternalLink;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n loadingOverlay: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n opacity: 0.37,\n zIndex: 10,\n backgroundColor: '#fff'\n },\n transparent: {\n backgroundColor: 'transparent'\n },\n relativePosition: {\n '&$loadingOverlay': {\n position: 'relative'\n }\n }\n});\n","import React from 'react';\n\nimport classnames from 'classnames';\nimport {LinearProgress as LinearProgress} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n transparent?: boolean;\n relativePosition?: boolean;\n className?: string;\n};\n\nconst LinearLoadIndicator = ({transparent = false, relativePosition = false, className}: Props) => {\n const styles = useStyles();\n return (\n <>\n <div\n className={classnames(styles.loadingOverlay, className, {\n [styles.transparent]: transparent,\n [styles.relativePosition]: relativePosition\n })}\n >\n <LinearProgress color=\"secondary\" />\n </div>\n </>\n );\n};\n\nexport default LinearLoadIndicator;\n","import {Theme} from '@material-ui/core';\nimport {fade, makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n button: {\n minWidth: '30px',\n padding: '8px 8px',\n justifyContent: 'start',\n fill: 'rgba(0,0,0,0.54)',\n textTransform: 'none',\n borderColor: 'rgba(0,0,0,0.12)'\n },\n icon: {\n color: 'rgba(0,0,0,0.54)',\n width: '20px',\n height: '20px',\n marginRight: '8px'\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n },\n current: {\n '& $icon': {\n color: theme.palette.primary.main\n },\n backgroundColor: fade(theme.palette.primary.main, 0.12),\n fill: theme.palette.primary.main,\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.primary.main, 0.24)\n }\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport {Button as Button} from '@material-ui/core';\nimport {ButtonGroup as ButtonGroup} from '@material-ui/core';\nimport classnames from 'classnames';\nimport withTooltip from '../../HOCs/withTooltip/withTooltip';\nimport useStyles from './styles';\n\nconst ButtonWithTooltip = withTooltip(Button);\n\ntype Props<T> = {\n className: string;\n classes?: {\n button?: string;\n };\n modes: {\n id: T;\n title?: string;\n tooltipTitle?: string;\n Icon?: React.ElementType;\n disabled?: boolean;\n }[];\n modeId: T;\n onChange?: (mode: T) => void;\n};\n\nconst ModeSwitcher = <T extends unknown>({className, classes = {}, modes = [], modeId, onChange}: Props<T>) => {\n const styles = useStyles();\n\n const getChangeModeHandler = (newMode) => () => onChange(newMode);\n\n return (\n <ButtonGroup className={className}>\n {modes.map(({id, title, tooltipTitle, Icon, disabled}) => {\n return (\n <ButtonWithTooltip\n disabled={disabled}\n showForDisabled={disabled && !!tooltipTitle}\n key={String(id)}\n className={classnames(styles.button, {[styles.current]: modeId === id}, classes.button)}\n tooltipTitle={tooltipTitle}\n onClick={getChangeModeHandler(id)}\n data-reltio-id={`reltio-search-mode-${id}`}\n >\n {Icon && <Icon className={styles.icon} />}\n {title && <div className={styles.title}>{title}</div>}\n </ButtonWithTooltip>\n );\n })}\n </ButtonGroup>\n );\n};\n\nexport default ModeSwitcher;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => {\n const color = theme.palette.background.paper;\n return {\n popoverRoot: {\n backgroundColor: color,\n maxWidth: 1000\n },\n popper: {\n '&[x-placement*=\"bottom\"] $arrow': {\n top: 0,\n left: 0,\n marginTop: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n '&[x-placement*=\"top\"] $arrow': {\n bottom: 0,\n left: 0,\n marginBottom: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n '&[x-placement*=\"right\"] $arrow': {\n left: 0,\n marginLeft: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '100% 100%'\n }\n },\n '&[x-placement*=\"left\"] $arrow': {\n right: 0,\n marginRight: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '0 0'\n }\n }\n },\n arrow: {\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color,\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n boxShadow: theme.shadows[1],\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n }\n };\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Paper as Paper} from '@material-ui/core';\nimport {ClickAwayListener as ClickAwayListener} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport Popper from '../Popper/Popper';\nimport {useStyles} from './styles';\n\ntype PopperProps = React.ComponentPropsWithoutRef<typeof Popper>;\n\ntype Props = Pick<PopperProps, 'anchorEl' | 'open' | 'placement' | 'popperRef'> & {\n children: React.ReactNode;\n onClose?: () => void;\n arrow?: boolean;\n className?: string;\n};\n\nconst isChildOfPortalModal = (child) =>\n Array.from(document.querySelectorAll('[data-modal]')).some((el) => el.contains(child));\n\nexport const PopupWithArrow = ({\n anchorEl,\n placement = 'top',\n arrow = true,\n open,\n onClose = () => {},\n children,\n className,\n popperRef\n}: Props) => {\n const styles = useStyles();\n const [arrowRef, setArrowRef] = React.useState<HTMLElement | null>(null);\n const onClickOutside = (e: React.MouseEvent<Document>) => {\n if (!isChildOfPortalModal(e.target)) {\n onClose();\n }\n };\n return (\n <Popper\n anchorEl={anchorEl}\n placement={placement}\n className={classnames(styles.popper, className)}\n modifiers={{\n preventOverflow: {\n enabled: true,\n boundariesElement: 'window'\n },\n arrow: {\n enabled: arrow,\n element: arrowRef\n }\n }}\n open={open}\n modal={false}\n popperRef={popperRef}\n >\n <Box>\n <ClickAwayListener onClickAway={onClickOutside}>\n <Paper className={styles.popoverRoot}>\n {arrow ? <span className={styles.arrow} ref={setArrowRef} /> : null}\n <Box>{children}</Box>\n </Paper>\n </ClickAwayListener>\n </Box>\n </Popper>\n );\n};\n","import classNames from 'classnames';\nimport {isNil, pipe, tap} from 'ramda';\nimport React, {memo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport Input, {InputProps} from '@material-ui/core/Input';\nimport {InputAdornment as InputAdornment} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport SearchIcon from '@material-ui/icons/Search';\nimport {getValue, noop} from '../../core';\nimport SmallIconButton from '../SmallIconButton/SmallIconButton';\nimport {useStyles} from './styles';\n\nexport type SearchInputProps = InputProps & {\n value?: string;\n autofocus: boolean;\n onSearch: (value?: string) => void;\n rootRef?: React.MutableRefObject<HTMLInputElement>;\n height: number;\n placeholder?: string;\n};\n\nconst SearchInput = ({\n value,\n autofocus,\n onSearch = noop,\n rootRef,\n classes = {},\n height,\n placeholder = i18n.text('Search'),\n ...otherProps\n}: SearchInputProps) => {\n const styles = useStyles({height});\n\n const [localValue, setLocalValue] = useState('');\n\n const updateValue = pipe(tap(onSearch), setLocalValue);\n const clearValue = () => updateValue('');\n\n const inputValue = isNil(value) ? localValue : value;\n\n return (\n <Input\n startAdornment={\n <InputAdornment position=\"start\">\n <SearchIcon className={styles.icon} />\n </InputAdornment>\n }\n endAdornment={\n <InputAdornment position=\"end\">\n {inputValue.length > 0 && (\n <SmallIconButton icon={CloseIcon} className={styles.clearButton} onClick={clearValue} />\n )}\n </InputAdornment>\n }\n autoFocus={autofocus}\n classes={{\n ...classes,\n input: classNames(styles.input, classes.input),\n root: classNames(styles.container, classes.root)\n }}\n placeholder={placeholder}\n value={inputValue}\n onChange={pipe(getValue, updateValue)}\n disableUnderline={true}\n ref={rootRef}\n {...otherProps}\n />\n );\n};\n\nexport default memo(SearchInput);\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n height?: number;\n};\n\nexport const useStyles = makeStyles(() => ({\n container: ({height = 36}: StylesProps) => {\n return {\n height: height,\n borderRadius: '2px',\n alignItems: 'center',\n backgroundColor: 'rgba(0,0,0,0.03)',\n minWidth: '100px'\n };\n },\n icon: {\n opacity: 0.67,\n marginLeft: '10px',\n marginRight: '6px'\n },\n input: {\n fontSize: '13px',\n width: '100%'\n },\n clearButton: {\n marginRight: '10px'\n },\n white: {\n backgroundColor: 'rgb(255, 255, 255)',\n boxShadow: '0 1px 3px 0 rgba(0,0,0,0.24)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport Popover, {PopoverProps} from '@material-ui/core/Popover';\n\nimport useStyles from './styles.js';\nimport SearchInput from '../SearchInput/SearchInput';\n\ntype Props = {\n title: string;\n containerWidth: number;\n containerHeight: number;\n children: React.ReactNode;\n PaperProps?: Record<string, unknown>;\n searchInputOnKeyDown: (event: React.KeyboardEvent) => void;\n onSearch: (value?: string) => void;\n className?: string;\n hideTitle?: boolean;\n hideSearchInput?: boolean;\n headerPlacement?: 'top' | 'bottom';\n searchInputRef?: React.Ref<unknown>;\n} & PopoverProps;\n\nconst SelectionPopup = ({\n title,\n className,\n onSearch,\n hideTitle,\n hideSearchInput,\n headerPlacement = 'top',\n containerWidth,\n containerHeight,\n searchInputOnKeyDown,\n children,\n searchInputRef,\n anchorOrigin = {\n vertical: 'top',\n horizontal: 'right'\n },\n transformOrigin = {\n vertical: 'top',\n horizontal: 'right'\n },\n ...otherProps\n}: Props) => {\n const classes = useStyles({containerWidth, containerHeight});\n const header = (\n <>\n {!hideTitle && <div className={classes.header}>{title}</div>}\n {!hideSearchInput && (\n <SearchInput\n onSearch={onSearch}\n autofocus={true}\n onKeyDown={searchInputOnKeyDown}\n inputRef={searchInputRef}\n classes={{root: classes.searchInputContainer}}\n placeholder={i18n.text('Search & add attributes')}\n height={40}\n />\n )}\n </>\n );\n return (\n <Popover anchorOrigin={anchorOrigin} transformOrigin={transformOrigin} {...otherProps}>\n <div className={classnames(classes.container, className)} style={{width: containerWidth}}>\n {headerPlacement === 'top' && header}\n <div className={classes.list}>{children}</div>\n {headerPlacement === 'bottom' && header}\n </div>\n </Popover>\n );\n};\n\nexport default SelectionPopup;\n","import React, {useState, useEffect, useRef, useCallback} from 'react';\nimport {isNil} from 'ramda';\nimport {isTitleItem} from '../VirtualGroupedList/VirtualGroupedList';\n\ntype Item = {\n titleItemIndex?: number;\n index: number;\n item: {\n item: Record<string, unknown>;\n moveTo?: number;\n };\n};\n\ntype FocusIndex = number | null;\n\ntype Props = {\n items: Item[];\n open: boolean;\n onSelectFocusedItem: (item: {item: Item['item']['item']; groupData: Item['item']}) => void;\n selectedItems: string[];\n onClose: (event: React.KeyboardEvent) => void;\n};\n\nconst useKeyboardNavigation = ({items, open, onSelectFocusedItem, selectedItems, onClose}: Props) => {\n const [focusIndex, setFocusIndex] = useState<FocusIndex>(null);\n const restoreFocusIndex = useRef<boolean>(false);\n\n const increaseFocusIndex = useCallback(\n (currentIndex: FocusIndex): number => {\n let newIndex = currentIndex === null ? increaseFocusIndex(-1) : currentIndex;\n while (\n currentIndex !== null &&\n newIndex < items.length &&\n (newIndex <= currentIndex || (newIndex >= 0 && isTitleItem(items[newIndex])))\n ) {\n newIndex += 1;\n }\n return newIndex !== items.length ? newIndex : increaseFocusIndex(-1);\n },\n [items]\n );\n\n const decreaseFocusIndex = useCallback(\n (currentIndex: FocusIndex): number => {\n let newIndex = currentIndex === null ? items.length - 1 : currentIndex;\n while (\n currentIndex !== null &&\n newIndex >= 0 &&\n (newIndex >= currentIndex || isTitleItem(items[newIndex]))\n ) {\n newIndex -= 1;\n }\n return newIndex < 0 ? items.length - 1 : newIndex;\n },\n [items]\n );\n\n const handleSelectFocusedItem = useCallback(() => {\n if (!isNil(focusIndex)) {\n const item = items[focusIndex].item;\n !item.item.notSelectable && onSelectFocusedItem({item: item.item, groupData: item});\n }\n }, [onSelectFocusedItem, items, focusIndex]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (items.length === 0) {\n return;\n }\n switch (event.key) {\n case 'Down': // IE/Edge specific value\n case 'ArrowDown':\n setFocusIndex(increaseFocusIndex);\n event.preventDefault();\n return false;\n case 'Up': // IE/Edge specific value\n case 'ArrowUp':\n setFocusIndex(decreaseFocusIndex);\n event.preventDefault();\n return false;\n case 'Enter':\n restoreFocusIndex.current = true;\n handleSelectFocusedItem();\n break;\n case 'Tab':\n onClose && onClose(event);\n break;\n default:\n return;\n }\n },\n [items, increaseFocusIndex, decreaseFocusIndex, handleSelectFocusedItem, onClose]\n );\n\n useEffect(() => {\n if (restoreFocusIndex.current) {\n restoreFocusIndex.current = false;\n const moveIndex = items.findIndex((listItem) => listItem.item.moveTo);\n moveIndex > -1 && setFocusIndex(moveIndex);\n } else {\n setFocusIndex(null);\n }\n }, [items, open, selectedItems]);\n\n return {focusIndex, handleKeyDown};\n};\n\nexport {useKeyboardNavigation};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst margin = '16px';\nconst useStyles = makeStyles(() => ({\n container: ({containerHeight = 553, containerWidth}) => {\n return {\n display: 'flex',\n flexDirection: 'column',\n height: containerHeight,\n width: containerWidth,\n flexGrow: 1\n };\n },\n header: {\n marginLeft: margin,\n marginTop: '16px',\n marginBottom: '12px',\n fontSize: '16px',\n fontWeight: 500,\n letterSpacing: '0.15px',\n lineHeight: '24px'\n },\n searchInputContainer: {\n margin: `0 ${margin} 12px ${margin}`,\n flexShrink: '0'\n },\n list: {\n flexGrow: 1,\n height: 0,\n overflow: 'hidden',\n width: '100%',\n position: 'relative',\n\n '& ul': {\n paddingBottom: 0,\n paddingTop: 0\n }\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n label: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '13px',\n lineHeight: '15px'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport RequiredMark from '../RequiredMark/RequiredMark';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n isRequired?: boolean;\n className?: string;\n};\n\nconst Title = ({label, isRequired, className, ...otherProps}: Props) => {\n const styles = useStyles();\n\n return (\n <Typography className={classnames(styles.label, className)} component=\"span\" {...otherProps}>\n {label}\n {isRequired && <RequiredMark />}\n </Typography>\n );\n};\n\nexport default Title;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n stickyTitlesWrapper: {\n position: 'absolute',\n top: 0,\n '& > div': {\n zIndex: 1,\n position: 'absolute',\n top: 0,\n width: '100%',\n visibility: 'hidden'\n }\n }\n});\n","import React, {useCallback, useEffect, useRef, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {VariableSizeList as List} from 'react-window';\nimport ReactResizeDetector from 'react-resize-detector';\n\nimport {useStyles} from './styles';\nimport {useScrollToFocusItem} from './helpers';\n\n/*\nitems = [\n {\n item: {\n item: {},\n level: number\n },\n titleItemIndex: number,\n index: number,\n moveTo: true|false,\n items: [...]\n ...\n }\n]\n*/\nconst OVERSCAN_COUNT = 5;\n\nconst isTitleItem = (listItem) => listItem.titleItemIndex === listItem.index;\n\nconst VirtualGroupedList = ({\n items,\n getItemSize,\n renderItem,\n renderGroupTitle,\n width = '100%',\n height,\n fixedTitle = true,\n itemKey = (i) => i,\n disableHorizontalScrollbar,\n hideSubtitles,\n focusIndex = null,\n onInnerContainerResize\n}) => {\n const styles = useStyles();\n\n const listRef = useRef(null);\n const itemsRef = useRef(null);\n const titlesRef = useRef(null);\n\n const itemOffsets = useRef([0]);\n const stepCalcOffset = 10;\n const stickyItemClass = 'stickyTitleItem';\n const currentTitleParams = {\n topMargin: 0\n };\n const isGroupHasSubTitles = (groupedItems) => (groupedItems || []).some((item) => item.titleItemIndex !== null);\n\n const hasSubTitles = useMemo(() => !hideSubtitles || isGroupHasSubTitles(items), [items, hideSubtitles]);\n\n const calcOffsetsToIndex = useCallback(\n (index) => {\n const curItemsLength = itemOffsets.current.length;\n let prevItemSize = 0;\n items.slice(curItemsLength - 1, index + 1).forEach((listItem, i) => {\n const realIndex = curItemsLength + i - 1;\n if (i > 0) itemOffsets.current[realIndex] = itemOffsets.current[realIndex - 1] + prevItemSize;\n\n prevItemSize = getItemSize(realIndex, listItem.item);\n });\n },\n [getItemSize, items]\n );\n\n const getTitleByIndex = useCallback((index) => items[index].titleItemIndex, [items]);\n const getItemByIndex = useCallback((index) => items[index], [items]);\n\n useEffect(() => {\n requestAnimationFrame(() => {\n listRef.current && listRef.current.scrollTo(0);\n });\n }, [items.length]);\n\n useEffect(() => {\n const calcMoveToOffset = (items) => {\n const indexItem = items.findIndex((listItem) => listItem.item.moveTo);\n if (indexItem > -1) {\n calcOffsetsToIndex(indexItem);\n const titleIndex = getTitleByIndex(indexItem);\n return {\n offset: itemOffsets.current[indexItem],\n titleHeight: getItemSize(titleIndex, getItemByIndex(titleIndex).item)\n };\n }\n };\n\n listRef.current && listRef.current.resetAfterIndex(0);\n\n setTitleWidth();\n\n const scrollToOffset = calcMoveToOffset(items);\n if (scrollToOffset && scrollToOffset.offset && listRef.current) {\n const {titleHeight} = scrollToOffset;\n const offset = scrollToOffset.offset - titleHeight;\n if (offset < listRef.current.state.scrollOffset || offset > listRef.current.state.scrollOffset + height) {\n requestAnimationFrame(() => {\n listRef.current && listRef.current.scrollTo(offset - (height - titleHeight) / 2);\n });\n }\n }\n }, [calcOffsetsToIndex, getItemByIndex, getItemSize, getTitleByIndex, height, itemOffsets, items, listRef]);\n\n const setTitleWidth = () => {\n if (titlesRef.current && itemsRef.current) {\n titlesRef.current.style.width = itemsRef.current.offsetWidth + 'px';\n }\n };\n\n const getNextTitleIndex = (fromIndex) =>\n items.findIndex((listItem, index) => isTitleItem(listItem) && fromIndex < index);\n\n const getItemByOffset = useCallback(\n (scrollOffset) => {\n let result = null;\n let offset = 0;\n\n items.some((listItem, index) => {\n calcOffsetsToIndex(index + stepCalcOffset);\n const nextOffset = itemOffsets.current[index + 1];\n\n if (scrollOffset >= offset && scrollOffset < nextOffset)\n result = {\n index,\n offset,\n listItem\n };\n\n offset = nextOffset;\n return result;\n });\n return result;\n },\n [calcOffsetsToIndex, itemOffsets, items]\n );\n\n const setTitleTopMargin = (topMargin) => {\n if (titlesRef.current) {\n currentTitleParams.topMargin = -topMargin;\n titlesRef.current.style.top = -topMargin + 'px';\n }\n };\n\n const setTitleByIndex = (index) => {\n titlesRef.current &&\n [...titlesRef.current.querySelectorAll('.' + stickyItemClass)].forEach((title) => {\n if (title.dataset.index === index.toString()) {\n title.style.visibility = 'visible';\n currentTitleParams.index = index;\n } else title.style.visibility = 'hidden';\n });\n };\n\n const getOffsetByIndex = (index) => {\n calcOffsetsToIndex(index);\n\n return itemOffsets.current[index];\n };\n\n const onScroll = ({scrollOffset, scrollDirection}) => {\n if (!fixedTitle || !hasSubTitles) return;\n\n const topItem = getItemByOffset(scrollOffset);\n const currentTitleIndex = topItem && getTitleByIndex(topItem.index);\n\n currentTitleIndex !== null && setTitleByIndex(currentTitleIndex);\n\n setTitleWidth();\n\n const titleHeight =\n currentTitleIndex !== null && getItemSize(currentTitleIndex, getItemByIndex(currentTitleIndex).item);\n const itemAfterTitle = getItemByOffset(scrollOffset + titleHeight + currentTitleParams.topMargin);\n\n let topMargin = 0;\n if (itemAfterTitle) {\n switch (scrollDirection) {\n case 'forward':\n if (itemAfterTitle.offset - scrollOffset > 0 && isTitleItem(itemAfterTitle.listItem))\n topMargin = titleHeight - (itemAfterTitle.offset - scrollOffset);\n break;\n case 'backward':\n {\n const nextTitleIndex = currentTitleIndex > -1 && getNextTitleIndex(currentTitleIndex);\n const nextTitleOffset = getOffsetByIndex(nextTitleIndex);\n\n if (\n nextTitleIndex > -1 &&\n scrollOffset < nextTitleOffset &&\n titleHeight >= nextTitleOffset - scrollOffset\n )\n topMargin = titleHeight - (nextTitleOffset - scrollOffset);\n }\n break;\n }\n setTitleTopMargin(topMargin);\n }\n };\n\n const _getItemSize = useCallback((index) => getItemSize(index, getItemByIndex(index).item), [\n getItemByIndex,\n getItemSize\n ]);\n\n const render = useCallback(\n ({index, style, data}) => {\n const listItem = getItemByIndex(index);\n return (\n listItem.item &&\n ((isTitleItem(listItem) && renderGroupTitle(style, listItem.item)) ||\n renderItem(style, listItem.item, index, data))\n );\n },\n [getItemByIndex, renderGroupTitle, renderItem]\n );\n\n const {handleOnItemsRendered} = useScrollToFocusItem({items, focusIndex, listRef});\n const renderTitles = useCallback(() => {\n const renderTitle = (listItem) => (\n <div\n className={stickyItemClass}\n style={{visibility: 'hidden'}}\n data-index={listItem.index}\n key={listItem.index}\n >\n {renderGroupTitle({height: getItemSize(listItem.index, listItem.item)}, listItem.item)}\n </div>\n );\n\n return items.filter((listItem) => isTitleItem(listItem)).map((listItem) => renderTitle(listItem));\n }, [getItemSize, items, renderGroupTitle]);\n\n return (\n <>\n <div ref={titlesRef} className={styles.stickyTitlesWrapper}>\n {fixedTitle && renderTitles()}\n </div>\n {onInnerContainerResize && itemsRef.current && (\n <ReactResizeDetector handleHeight onResize={onInnerContainerResize} targetDomEl={itemsRef.current} />\n )}\n <List\n ref={listRef}\n itemCount={items.length}\n itemSize={_getItemSize}\n width={width}\n height={height}\n itemKey={itemKey}\n innerRef={itemsRef}\n onScroll={onScroll}\n style={disableHorizontalScrollbar ? {overflowX: 'hidden'} : undefined}\n overscanCount={OVERSCAN_COUNT}\n onItemsRendered={handleOnItemsRendered}\n >\n {render}\n </List>\n </>\n );\n};\n\nVirtualGroupedList.propTypes = {\n items: PropTypes.arrayOf(PropTypes.object).isRequired,\n getItemSize: PropTypes.func.isRequired,\n renderItem: PropTypes.func.isRequired,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.number.isRequired,\n renderGroupTitle: PropTypes.func,\n fixedTitle: PropTypes.bool,\n hideSubtitles: PropTypes.bool,\n itemKey: PropTypes.func,\n disableHorizontalScrollbar: PropTypes.bool,\n focusIndex: PropTypes.number,\n onInnerContainerResize: PropTypes.func\n};\n\nexport default VirtualGroupedList;\nexport {isTitleItem};\n","import {flatten} from 'ramda';\nimport {useCallback, useEffect, useRef} from 'react';\n\nexport const SCROLL_COUNT = 3;\n\nconst flattenGroupedItemsData = (groupedItems) => {\n const getFlattenedItems = (items) =>\n flatten(items.map((item) => [item].concat(item.items ? getFlattenedItems(item.items) : [])));\n\n let titleItemIndex = null;\n const items = getFlattenedItems(groupedItems).map((item, index) => {\n if (item && item.items) {\n titleItemIndex = index;\n }\n return {item, index, titleItemIndex};\n });\n return items;\n};\n\nconst useScrollToFocusItem = ({focusIndex, listRef, items}) => {\n const visibleStartIndexRef = useRef(null);\n const visibleStopIndexRef = useRef(null);\n const handleOnItemsRendered = useCallback(({visibleStartIndex, visibleStopIndex}) => {\n visibleStartIndexRef.current = visibleStartIndex;\n visibleStopIndexRef.current = visibleStopIndex;\n }, []);\n useEffect(() => {\n if (!listRef.current || focusIndex === null || items.length === 0) {\n return;\n }\n\n if (focusIndex < Math.max(visibleStartIndexRef.current + SCROLL_COUNT, 0)) {\n listRef.current.scrollToItem(Math.max(focusIndex - SCROLL_COUNT, 0), 'start');\n } else if (focusIndex > Math.min(visibleStopIndexRef.current - SCROLL_COUNT, items.length - 1)) {\n listRef.current.scrollToItem(Math.min(focusIndex + SCROLL_COUNT, items.length - 1), 'end');\n }\n }, [focusIndex, items.length, listRef]);\n return {handleOnItemsRendered};\n};\n\nexport {flattenGroupedItemsData, useScrollToFocusItem};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst lineStyle = '1px solid #AFD4E9';\n\nconst horizontalLineWidth = 5;\nconst verticalNodeGap = 14;\nconst arrowWidth = 16;\n\nexport const useStyles = makeStyles({\n decorator: {\n marginLeft: arrowWidth / 2,\n borderLeft: lineStyle,\n '&:last-child': {\n borderLeft: 'none',\n '&:before': {\n borderLeft: lineStyle\n }\n },\n '&:before': {\n top: 0,\n height: verticalNodeGap,\n width: horizontalLineWidth,\n borderBottom: lineStyle,\n content: '\"\"',\n display: 'block',\n left: '0'\n },\n '&$plain': {\n '&:before': {\n width: 0\n }\n }\n },\n plain: {},\n wrapper: {\n marginLeft: horizontalLineWidth + 11,\n marginTop: -8\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n plain?: boolean;\n enabled?: boolean;\n};\n\nconst BranchDecorator = ({className, children, plain = false, enabled = false}: Props) => {\n const styles = useStyles();\n return enabled ? (\n <div className={classnames(styles.decorator, {[styles.plain]: plain}, className)}>\n <div className={styles.wrapper}>{children}</div>\n </div>\n ) : (\n <>{children}</>\n );\n};\n\nexport default BranchDecorator;\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: 'flex',\n alignContent: 'center',\n flexDirection: 'column'\n },\n main: {\n position: 'relative',\n padding: '0 86px',\n marginTop: 'auto'\n },\n mainImageContainer: {\n display: 'flex',\n alignContent: 'center',\n height: '100%',\n width: '100%'\n },\n mainImage: {\n maxWidth: 'calc(100vw - 512px)',\n maxHeight: 'calc(100vh - 192px)',\n margin: '0 auto',\n userSelect: 'none'\n },\n arrowButton: {\n backgroundColor: theme.palette.divider,\n color: 'white',\n '&:hover': {\n backgroundColor: theme.palette.divider\n }\n },\n arrowButtonPrev: {\n position: 'absolute',\n top: '50%',\n left: '16px',\n transform: 'translateY(-50%)'\n },\n arrowButtonNext: {\n position: 'absolute',\n top: '50%',\n right: '16px',\n transform: 'translateY(-50%)'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n thumbnails: {\n marginLeft: '12px',\n marginBottom: '12px',\n marginTop: 'auto',\n width: 'calc(100vw - 364px)',\n overflowX: 'auto',\n overflowY: 'hidden'\n },\n gridContainer: {\n width: '100%'\n },\n thumb: {\n width: '96px',\n height: '96px',\n cursor: 'pointer',\n userSelect: 'none'\n },\n inactiveThumb: {\n filter: 'brightness(0.5)'\n }\n}));\n","import React, {useEffect, useRef} from 'react';\nimport {Grid as Grid} from '@material-ui/core';\nimport {getImageAttributeOvThumbnailUrl, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image from '../../../Image/Image';\nimport {useStyles} from './styles';\n\nexport const IMAGE_WIDTH = 96;\nexport const IMAGE_PADDING = 16;\nexport const CONTAINER_MARGIN = 12;\n\ntype Props = {\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const Thumbnails = ({attributeValues, setAttributeValueIndex, attributeValueIndex}: Props) => {\n const styles = useStyles();\n const gridRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (gridRef?.current) {\n const containerScrollLeft = gridRef.current.scrollLeft;\n const containerOffsetWidth = gridRef.current.offsetWidth;\n const containerWidth = containerOffsetWidth + containerScrollLeft;\n const currentElementPosition =\n attributeValueIndex * IMAGE_WIDTH + attributeValueIndex * IMAGE_PADDING + CONTAINER_MARGIN;\n if (containerWidth < currentElementPosition) {\n if (gridRef.current.scroll) {\n if (currentElementPosition > containerWidth + IMAGE_WIDTH + IMAGE_PADDING) {\n gridRef.current.scroll(currentElementPosition, 0);\n } else {\n gridRef.current.scroll(IMAGE_WIDTH + IMAGE_PADDING + containerScrollLeft, 0);\n }\n }\n } else if (containerScrollLeft + IMAGE_WIDTH > currentElementPosition) {\n if (gridRef.current.scroll) {\n gridRef.current.scroll(currentElementPosition - IMAGE_WIDTH, 0);\n }\n }\n }\n }, [attributeValueIndex, gridRef]);\n\n return (\n <div ref={gridRef} className={styles.thumbnails}>\n <Grid container wrap=\"nowrap\" direction=\"row\" spacing={1} className={styles.gridContainer}>\n {attributeValues.map(({uri, value}, index) => (\n <Grid item key={uri}>\n <Image\n onClick={() => setAttributeValueIndex(index)}\n className={classnames(styles.thumb, {\n [styles.inactiveThumb]: attributeValueIndex !== index\n })}\n src={getImageAttributeOvThumbnailUrl({value})}\n />\n </Grid>\n ))}\n </Grid>\n </div>\n );\n};\n","import React from 'react';\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport {ImageAttributeValue, getImageAttributeOvPreviewUrl} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport {useStyles} from './styles';\nimport {Thumbnails} from './Thumbnails/Thumbnails';\n\ntype Props = {\n className?: string;\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const ImageDetailsViewCarousel = ({\n className,\n attributeValues,\n attributeValueIndex,\n setAttributeValueIndex\n}: Props) => {\n const styles = useStyles();\n const attributeValue = attributeValues[attributeValueIndex];\n const mainImageSrc = getImageAttributeOvPreviewUrl(attributeValue);\n\n const onPrevImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex - 1);\n };\n\n const onNextImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex + 1);\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <div className={styles.main}>\n {attributeValueIndex > 0 && (\n <SmallIconButton\n icon={NavigateBeforeIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonPrev)}\n onClick={onPrevImageButtonClick}\n size=\"XL\"\n />\n )}\n <Image\n containerClassName={styles.mainImageContainer}\n className={styles.mainImage}\n size={mainImageSrc && ImageSizesStyles.OVERRIDE}\n src={mainImageSrc}\n />\n {attributeValueIndex !== attributeValues.length - 1 && (\n <SmallIconButton\n icon={NavigateNextIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonNext)}\n onClick={onNextImageButtonClick}\n size=\"XL\"\n />\n )}\n </div>\n <Thumbnails\n attributeValues={attributeValues}\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={setAttributeValueIndex}\n />\n </div>\n );\n};\n","import i18n from 'ui-i18n';\n\nexport const SYSTEM_ATTRIBUTES_TITLES = {\n get CreationTime() {\n return i18n.text('Creation Time');\n },\n get CreationDate() {\n return i18n.text('Creation Date');\n },\n get Dimensions() {\n return i18n.text('Dimensions');\n },\n get MimeType() {\n return i18n.text('Mime Type');\n },\n get Size() {\n return i18n.text('Size');\n },\n get Url() {\n return i18n.text('Full image URL (S3)');\n },\n get UrlPreview() {\n return i18n.text('Preview image URL (S3)');\n },\n get UrlThumbnail() {\n return i18n.text('Small image URL (S3)');\n },\n get CdnUrl() {\n return i18n.text('Full image URL (CDN)');\n },\n get CdnUrlPreview() {\n return i18n.text('Preview image URL (CDN)');\n },\n get CdnUrlThumbnail() {\n return i18n.text('Small image URL (CDN)');\n }\n};\n","import {path} from 'ramda';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {ImageAttributeValue, AttributeType} from '@reltio/mdm-sdk';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {SYSTEM_ATTRIBUTES_TITLES} from '../constants';\n\nexport const getFormattedSystemImageAttributeValue = (\n {value}: ImageAttributeValue = {} as ImageAttributeValue,\n name: string\n) => {\n if (\n ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail', 'MimeType'].includes(name)\n ) {\n return path([name, 0, 'value'], value);\n }\n\n if (name === 'CreationDate' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('MM-DD-YYYY');\n }\n\n if (name === 'CreationTime' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('HH:mm:ss');\n }\n\n if (name === 'Dimensions' && path(['Height', 0, 'value'], value) && path(['Width', 0, 'value'], value)) {\n return `${value.Height[0].value} x ${value.Width[0].value} ${i18n.text('pixels')}`;\n }\n\n if (name === 'Size' && path(['Size', 0, 'value'], value)) {\n const size = (Number(value.Size[0].value) / 1000).toFixed(2);\n return `${size} KB`;\n }\n};\n\nconst filterByNotSystemAttributeTypes = (attrTypes: AttributeType[] = []) => {\n return attrTypes.filter(({system}) => !system);\n};\n\nexport const filterByFieldsOrder = (keys: string[], fieldsOrder: ImageAttributeFieldsOrder) => {\n const {includeNames = [], excludeNames = [], order = []} = fieldsOrder;\n\n const filteredKeys = includeNames.length\n ? keys.filter((key) => includeNames.includes(key))\n : keys.filter((key) => !excludeNames.includes(key));\n\n if (order.length === 0) {\n return filteredKeys;\n }\n\n return filteredKeys.sort((a, b) => {\n const indA = order.indexOf(a);\n const indB = order.indexOf(b);\n if (indA === -1 && indB !== -1) return 1;\n if (indB === -1 && indA !== -1) return -1;\n return indA - indB;\n });\n};\n\nexport const getMoreAttrTypes = (attrType: AttributeType) => {\n return filterByNotSystemAttributeTypes(attrType.attributes);\n};\n\nexport const getSystemAttributesList = (attrValue: ImageAttributeValue, fieldsOrder: ImageAttributeFieldsOrder) => {\n return filterByFieldsOrder(Object.keys(SYSTEM_ATTRIBUTES_TITLES), fieldsOrder)\n .map((key) => {\n const value = getFormattedSystemImageAttributeValue(attrValue, key);\n\n if (!value) {\n return null;\n }\n\n return {\n title: SYSTEM_ATTRIBUTES_TITLES[key],\n value: getFormattedSystemImageAttributeValue(attrValue, key),\n isLink: isLink(key)\n };\n })\n .filter(Boolean);\n};\n\nexport const getNotSystemAttributesList = (\n attrValue: ImageAttributeValue = {} as ImageAttributeValue,\n attrType: AttributeType,\n fieldsOrder: ImageAttributeFieldsOrder\n) => {\n const notSystemAttrTypes = filterByNotSystemAttributeTypes(attrType.attributes);\n\n return filterByFieldsOrder(Object.keys(attrValue.value || {}), fieldsOrder).reduce((result, key) => {\n const attrType = notSystemAttrTypes.find(({name}) => name === key);\n return attrType ? [...result, {attrType: attrType, values: attrValue.value[key]}] : result;\n }, []);\n};\n\nexport const isLink = (key: string) => {\n return ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail'].includes(key);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n title: {\n marginBottom: '10px',\n color: 'white',\n fontSize: '18px',\n lineHeight: '21px',\n '&$canAdd': {\n marginBottom: '3px'\n }\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n canAdd: {}\n});\n","import React, {Fragment} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {AttributeType, AttributeItem} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport MoreAttributesButton from '../../attributes/editMode/MoreAttributesButton';\nimport {getMoreAttrTypes} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n uri: string;\n onAddAttributes?: (items: AttributeItem[]) => void;\n};\n\nexport const MetaInfoHeader = ({attributeType, onAddAttributes, uri}: Props) => {\n const styles = useStyles();\n const moreAttrTypes = getMoreAttrTypes(attributeType);\n const canAdd = Boolean(onAddAttributes);\n\n const handleApply = (attrTypes: AttributeType[]) => {\n if (onAddAttributes) {\n onAddAttributes(attrTypes.map((attributeType) => ({attributeType, parentUri: uri})));\n }\n };\n\n return (\n <Box>\n <Typography className={classnames(styles.title, {[styles.canAdd]: canAdd})}>\n {i18n.text('Meta info')}\n </Typography>\n {canAdd && (\n <Fragment>\n <MoreAttributesButton\n label={i18n.text('Attributes')}\n data={moreAttrTypes}\n dense={false}\n onApply={handleApply}\n />\n <Divider className={styles.divider} />\n </Fragment>\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n marginBottom: '11px'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n marginRight: '12px',\n float: 'left'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n content?: string;\n isLink?: boolean;\n children?: React.ReactNode;\n};\n\nexport const MetaInfoItem = ({title, content, isLink, children}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n <span className={styles.title}>{title}</span>\n {isLink ? (\n <a className={styles.link} href={content}>\n {i18n.text('link')}\n </a>\n ) : (\n <span className={styles.content}>{content || children}</span>\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n padding: '10px 0'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n fontSize: '13px'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport AttributesPager from '../../attributes/readMode/AttributesPager';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoItem} from './MetaInfoItem/MetaInfoItem';\nimport {getNotSystemAttributesList, getSystemAttributesList} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ImageAttributeValue;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n};\n\nexport const MetaInfoList = ({attributeValue, attributeType, imageAttributeFieldsOrder}: Props) => {\n const styles = useStyles();\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n\n const systemAttributesList = getSystemAttributesList(attributeValue, imageAttributeFieldsOrder);\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n\n return (\n <Box className={styles.root}>\n {systemAttributesList.map(({title, value, isLink}) => (\n <MetaInfoItem key={title} isLink={isLink} title={title} content={value} />\n ))}\n {isViewMode &&\n notSystemAttributesList.map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={false}\n values={values}\n titleClassName={styles.title}\n contentClassName={styles.content}\n parentUri={attributeValue.uri}\n />\n ))}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {},\n form: {\n padding: '10px 0'\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n actions: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '4px'\n },\n cancelButton: {\n color: 'white',\n marginRight: '8px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, ImageAttributeValue, Mode, isTempUri, AttributeItem} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport AttributesPager from '../../attributes/editMode/AttributesPager';\nimport {getNotSystemAttributesList} from '../helpers';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeValue: ImageAttributeValue;\n hasChanges: boolean;\n onDeleteAttribute: (item: AttributeItem) => void;\n onChangeAttribute: (item: AttributeItem) => void;\n onAddAttributes: (items: AttributeItem[]) => void;\n onCancel: () => void;\n onApply: () => void;\n mode: Mode;\n};\n\nexport const MetaInfoForm = ({\n attributeType,\n imageAttributeFieldsOrder,\n attributeValue,\n hasChanges,\n onDeleteAttribute,\n onChangeAttribute,\n onAddAttributes,\n onCancel,\n onApply,\n mode\n}: Props) => {\n const styles = useStyles();\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n const shouldShowActionButtons =\n notSystemAttributesList.length !== 0 || (notSystemAttributesList.length === 0 && hasChanges);\n\n return (\n <Box className={styles.root}>\n <Box className={styles.form}>\n {notSystemAttributesList.map(({attrType, values}) => {\n return (\n <AttributesPager\n key={attrType.uri}\n parentUri={attributeValue.uri}\n attributeType={attrType}\n values={values}\n showEmptyEditors={isTempUri(attributeValue.uri)}\n mode={mode}\n drawLines={false}\n onDeleteAttribute={onDeleteAttribute}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n />\n );\n })}\n </Box>\n {shouldShowActionButtons && (\n <>\n <Divider className={styles.divider} />\n <Box className={styles.actions}>\n <Button disabled={!hasChanges} onClick={onCancel} className={styles.cancelButton}>\n {i18n.text('Cancel')}\n </Button>\n <Button disabled={!hasChanges} onClick={onApply} color=\"primary\">\n {i18n.text('Apply')}\n </Button>\n </Box>\n </>\n )}\n </Box>\n );\n};\n","import {useEffect, useState, useContext, useCallback} from 'react';\nimport {equals} from 'ramda';\nimport {useDispatch} from 'react-redux';\nimport {profile} from '@reltio/mdm-module';\nimport {\n addAttribute,\n editAttribute,\n removeAttribute,\n AttributeType,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '../../../contexts';\n\ntype Params = {\n initialAttributeValue: ImageAttributeValue;\n attributeType: AttributeType;\n};\n\nexport const useEditMetaInfo = ({initialAttributeValue, attributeType}: Params) => {\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const [attributeValue, setAttributeValue] = useState(initialAttributeValue);\n\n useEffect(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const nestingLevel = 1;\n const hasChanges = !equals(attributeValue, initialAttributeValue);\n\n const addAttributes = useCallback((attributes: AttributeItem[]) => {\n setAttributeValue((prevAttrValue) => {\n return attributes.reduce((attrValue, attribute) => {\n const {attributeType, parentUri, index} = attribute;\n return addAttribute({\n entity: attrValue,\n attributeType,\n parentUri,\n index,\n nestingLevel\n }) as ImageAttributeValue;\n }, prevAttrValue);\n });\n }, []);\n\n const changeAttribute = useCallback(({value, attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n editAttribute({\n entity: prevAttrValue,\n attributeType,\n uri,\n value,\n nestingLevel\n }) as ImageAttributeValue\n );\n }, []);\n\n const deleteAttribute = useCallback(({attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n removeAttribute({entity: prevAttrValue, attributeType, uri, nestingLevel}) as ImageAttributeValue\n );\n }, []);\n\n const clearLocalChanges = useCallback(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const applyLocalChanges = useCallback(() => {\n dispatch(\n profile.actions.modifyAttribute({\n value: attributeValue,\n attributeType: attributeType,\n uri: attributeValue.uri,\n viewId\n })\n );\n }, [attributeValue, attributeType, viewId, dispatch]);\n\n return {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n };\n};\n","import {theme} from '@reltio/mdm-sdk';\n\nconst darkTheme = {\n palette: {\n type: 'dark',\n primary: theme.palette.primary,\n secondary: theme.palette.secondary\n }\n} as const;\n\nexport {darkTheme};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {MuiThemeProvider, createMuiTheme} from '@material-ui/core/styles';\nimport {Box as Box} from '@material-ui/core';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoHeader} from '../MetaInfoHeader/MetaInfoHeader';\nimport {MetaInfoList} from '../MetaInfoList/MetaInfoList';\nimport {MetaInfoForm} from '../MetaInfoForm/MetaInfoForm';\nimport {useEditMetaInfo} from '../hooks/useEditMetaInfo';\nimport {darkTheme} from '../theme';\n\nconst darkMuiTheme = createMuiTheme(darkTheme);\n\ntype Props = {\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n attributeValue: ImageAttributeValue;\n};\n\nexport const MetaInfo = ({imageAttributeFieldsOrder, attributeType, attributeValue: initialAttributeValue}: Props) => {\n const {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n } = useEditMetaInfo({attributeType, initialAttributeValue});\n const mode = useSelector(mdm.selectors.getMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n return (\n <MuiThemeProvider theme={darkMuiTheme}>\n <Box>\n <MetaInfoHeader\n attributeType={attributeType}\n uri={attributeValue?.uri}\n onAddAttributes={isEditableMode ? addAttributes : undefined}\n />\n <MetaInfoList\n attributeType={attributeType}\n attributeValue={attributeValue}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n />\n {isEditableMode && (\n <MetaInfoForm\n mode={mode}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeType={attributeType}\n attributeValue={attributeValue}\n hasChanges={hasChanges}\n onDeleteAttribute={deleteAttribute}\n onChangeAttribute={changeAttribute}\n onAddAttributes={addAttributes}\n onCancel={clearLocalChanges}\n onApply={applyLocalChanges}\n />\n )}\n </Box>\n </MuiThemeProvider>\n );\n};\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative',\n backgroundColor: '#333',\n maxHeight: 'calc(100vh - 64px)',\n overflow: 'hidden'\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n paddingLeft: '16px',\n boxShadow: `0 1px 0 0 ${theme.palette.divider}`\n },\n headerTitle: {\n color: 'rgba(255, 255, 255, 0.87)',\n fontSize: '16px',\n lineHeight: '19px'\n },\n bodyWrapper: {\n maxHeight: 'calc(100% - 56px)',\n overflow: 'auto'\n },\n body: {\n padding: '16px'\n },\n formControlLabel: {\n marginLeft: 0,\n marginBottom: '27px'\n },\n checkboxLabel: {\n marginLeft: '8px',\n color: 'rgba(255,255,255,0.87)',\n fontSize: '13px',\n lineHeight: '15px'\n },\n checkbox: {\n color: 'white',\n padding: 0\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, Entity, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {MetaInfo} from '../MetaInfo/MetaInfo';\nimport {useStyles} from './styles';\n\nexport type ImageAttributeFieldsOrder = {\n order?: string[];\n excludeNames?: string[];\n includeNames?: string[];\n};\n\ntype Props = {\n className?: string;\n attributeValue: ImageAttributeValue;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsViewSidebar = ({className, attributeValue, handleSetAsDefault, attributeType}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const modifiedEntity =\n useSelector((state) => mdm.selectors.getModifiedEntity(state, entity?.uri)) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const entityToShow = isViewMode ? entity : modifiedEntity;\n const imageAttributeConfig = useSelector(mdm.selectors.getImageAttributesFieldsOrder) || {};\n const imageAttributeFieldsOrder: ImageAttributeFieldsOrder =\n imageAttributeConfig[entity?.type] || imageAttributeConfig?.default || {};\n\n const [isDefault, setIsDefault] = useState<boolean>(false);\n useEffect(() => {\n setIsDefault(entityToShow?.defaultProfilePic === attributeValue?.uri);\n }, [attributeValue?.uri, entityToShow]);\n\n const handleChange = useCallback(() => {\n handleSetAsDefault(attributeValue.uri);\n }, [attributeValue?.uri]);\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.header}>\n <Typography className={styles.headerTitle}>{i18n.text('Details')}</Typography>\n </Box>\n <Box className={styles.bodyWrapper}>\n <Box className={styles.body}>\n <FormControlLabel\n classes={{root: styles.formControlLabel, label: styles.checkboxLabel}}\n control={\n <Checkbox\n className={styles.checkbox}\n checked={isDefault}\n onChange={handleChange}\n color=\"default\"\n />\n }\n label={i18n.text('Set as default')}\n />\n <MetaInfo\n attributeType={attributeType}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeValue={attributeValue}\n />\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n width: '100%',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n main: {\n flex: '1 0 auto'\n },\n details: {\n width: '340px'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {ImageDetailsViewCarousel} from './ImageDetailsViewCarousel/ImageDetailsViewCarousel';\nimport {ImageDetailsViewSidebar} from './ImageDetailsViewSidebar/ImageDetailsViewSidebar';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n currentAttributeValueUri: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsView = ({\n attributeValues = [],\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n handleSetAsDefault,\n attributeType\n}: Props) => {\n const [attributeValueIndex, setAttributeValueIndex] = useState<number>(0);\n useEffect(() => {\n if (!currentAttributeValueUri) {\n onChangeAttributeValueIndex(0);\n } else {\n onChangeAttributeValueIndex(attributeValues.findIndex((value) => value.uri === currentAttributeValueUri));\n }\n }, [currentAttributeValueUri, attributeValues]);\n\n const onChangeAttributeValueIndex = useCallback(\n (index: number) => {\n setAttributeValueIndex(index);\n setCurrentAttributeValueUri(attributeValues[index]?.uri);\n },\n [attributeValues]\n );\n const styles = useStyles();\n\n return (\n <Box className={styles.root}>\n <ImageDetailsViewCarousel\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={onChangeAttributeValueIndex}\n attributeValues={attributeValues}\n className={styles.main}\n />\n <ImageDetailsViewSidebar\n handleSetAsDefault={handleSetAsDefault}\n attributeValue={attributeValues[attributeValueIndex]}\n className={styles.details}\n attributeType={attributeType}\n />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 24px',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n item: {\n padding: '2px'\n }\n}));\n","import React from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Grid as Grid} from '@material-ui/core';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport ImageActionsOverlay from '../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {useStyles} from './styles';\n\nexport type ImageItem = {\n id: string;\n src: string;\n};\n\ntype Props = {\n items: ImageItem[];\n selectedItems: string[];\n onSelectImage: (id: string) => void;\n onDeselectImage: (id: string) => void;\n onShareLink?: (id: string) => void;\n onSetAsDefault?: (id: string) => void;\n onDownload: (id: string) => void;\n onClickImage: (id: string) => void;\n onDelete?: (id: string) => void;\n};\n\nexport const GalleryView = ({\n items,\n selectedItems,\n onSelectImage,\n onDeselectImage,\n onShareLink,\n onSetAsDefault,\n onDownload,\n onClickImage,\n onDelete\n}: Props) => {\n const styles = useStyles();\n\n const renderImageActionsOverlay = (id: string) => {\n return (\n <ImageActionsOverlay\n id={id}\n selected={selectedItems.includes(id)}\n selectionMode={selectedItems.length !== 0}\n onSelect={() => onSelectImage(id)}\n onDeselect={() => onDeselectImage(id)}\n onShareLink={() => onShareLink(id)}\n onSetAsDefault={() => onSetAsDefault(id)}\n onDownload={() => onDownload(id)}\n onClick={() => onClickImage(id)}\n onDelete={onDelete ? () => onDelete(id) : undefined}\n canBeSelected\n />\n );\n };\n\n return (\n <Box className={styles.root}>\n <Grid container>\n {items.map(({id, src}) => (\n <Grid key={id} classes={{item: styles.item}} item>\n <Image\n size={ImageSizesStyles.LARGE}\n onClick={() => onClickImage(id)}\n src={src}\n overlay={renderImageActionsOverlay(id)}\n />\n </Grid>\n ))}\n </Grid>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n selectButton: {\n fontSize: '14px',\n fontWeight: 500,\n color: theme.palette.primary.main,\n textTransform: 'uppercase'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nimport type {ImageItem} from '../GalleryView/GalleryView';\n\ntype Props = {\n onSelectAll: () => void;\n onClearAll: () => void;\n selectedItems: unknown[];\n items: ImageItem[];\n};\n\nexport const HeaderLeft = ({selectedItems, items, onSelectAll, onClearAll}: Props) => {\n const styles = useStyles();\n const selectedAllItems = selectedItems.length === items.length;\n\n return (\n <Link\n component=\"button\"\n underline=\"none\"\n classes={{button: styles.selectButton}}\n onClick={selectedAllItems ? onClearAll : onSelectAll}\n >\n {selectedAllItems ? i18n.text('Clear selection') : i18n.text('Select all images')}\n </Link>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n downloadButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '30px'\n },\n shareButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '21px'\n },\n deleteButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '24px'\n },\n divider: {\n height: '31px',\n width: '1px',\n marginLeft: '10px',\n backgroundColor: 'rgba(255,255,255,0.38)'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport LinkIcon from '@material-ui/icons/Link';\nimport DownloadIcon from '../../../icons/Download';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n onDownload?: () => void;\n onShare?: () => void;\n onUpload?: () => void;\n onDelete?: () => void;\n};\n\nexport const HeaderRight = ({onDownload, onShare, onUpload, onDelete}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {onUpload && (\n <Button variant=\"contained\" color=\"primary\" onClick={onUpload} startIcon={<CloudUploadIcon />}>\n {i18n.text('Upload')}\n </Button>\n )}\n {onDownload && onUpload && <div className={styles.divider} />}\n {onDownload && (\n <SmallIconButtonWithTooltip\n className={styles.downloadButton}\n tooltipTitle={i18n.text('Download selected items')}\n icon={DownloadIcon}\n onClick={onDownload}\n />\n )}\n {onShare && (\n <SmallIconButtonWithTooltip\n className={styles.shareButton}\n tooltipTitle={i18n.text('Copy link')}\n icon={LinkIcon}\n onClick={onShare}\n />\n )}\n {onDelete && (\n <SmallIconButtonWithTooltip\n className={styles.deleteButton}\n tooltipTitle={i18n.text('Delete selected items')}\n icon={DeleteIcon}\n onClick={onDelete}\n />\n )}\n </>\n );\n};\n","/* eslint-disable indent */\nimport React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {filter, pipe, pluck, propEq} from 'ramda';\nimport {\n AttributeType,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ImageDetailsView} from '../ImageDetailsView/ImageDetailsView';\nimport {ImageGalleryDialog, Mode} from '../ImageGalleryDialog/ImageGalleryDialog';\nimport {GalleryView} from './GalleryView/GalleryView';\nimport {HeaderLeft} from './HeaderLeft/HeaderLeft';\nimport {HeaderRight} from './HeaderRight/HeaderRight';\n\nexport type Props = {\n attributeValues: ImageAttributeValue[];\n open: boolean;\n onClose?: () => void;\n currentAttributeValueUri?: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n attributeType: AttributeType;\n onDownload: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n};\n\nconst ImageAttributesGallery = ({\n attributeValues,\n open,\n onClose,\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n attributeType,\n onDownload,\n onShareLink,\n onSetAsDefault,\n onUpload,\n onDeleteAttribute\n}: Props) => {\n const [selectedItems, setSelectedItems] = useState<string[]>([]);\n const [mode, setMode] = useState<Mode>(Mode.GALLERY_MODE);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n\n useEffect(() => {\n setMode(currentAttributeValueUri ? Mode.DETAILS_MODE : Mode.GALLERY_MODE);\n }, [currentAttributeValueUri]);\n\n const imageItems = attributeValues.map((attribute) => ({\n src: getImageAttributeOvThumbnailUrl(attribute) as string,\n downloadURL: getImageAttributeOvUrl(attribute) as string,\n id: attribute.uri\n }));\n\n const handleSelect = (id: string) => {\n setSelectedItems((items) => [...items, id]);\n };\n\n const handleDeselect = (id: string) => {\n setSelectedItems((items) => items.filter((item) => item !== id));\n };\n\n const handleSelectAll = () => {\n setSelectedItems(pluck('id', imageItems));\n };\n\n const handleClearAll = () => {\n setSelectedItems([]);\n };\n\n const handleDownloadSelectedItems = () => {\n const downloadURLs = isGalleryMode\n ? pipe(\n filter(({id}) => selectedItems.includes(id)),\n pluck('downloadURL')\n )(imageItems)\n : [imageItems.find(propEq('id', currentAttributeValueUri)).downloadURL];\n onDownload(downloadURLs);\n };\n\n const handleDownload = (id: string) => {\n onDownload([imageItems.find(propEq('id', id)).downloadURL]);\n };\n\n const handleShareLink = (id: string) => {\n onShareLink(imageItems.find(propEq('id', id)).downloadURL);\n };\n\n const handleSharedCurrentItem = () => {\n handleShareLink(currentAttributeValueUri);\n };\n\n const handleSetAsDefault = (id: string) => {\n const attributeValue = attributeValues.find(({uri}) => uri === id);\n onSetAsDefault(attributeValue);\n };\n\n const handleDelete = (id: string) => {\n onDeleteAttribute({uri: id, attributeType});\n };\n\n const handleDeleteSelectedItems = () => {\n const deleteUris = isGalleryMode ? selectedItems : [currentAttributeValueUri];\n deleteUris.forEach((uri) => {\n handleDelete(uri);\n });\n if (selectedItems.length) setSelectedItems([]);\n };\n\n const isGalleryMode = mode === Mode.GALLERY_MODE;\n const isDetailsMode = mode === Mode.DETAILS_MODE;\n const hasSelectedItems = selectedItems.length > 0;\n const isHasSelectedItemsOrDetailsMode = isDetailsMode || (isGalleryMode && hasSelectedItems);\n\n const isShowDeleteButton = !isViewMode && isHasSelectedItemsOrDetailsMode;\n const isShowUploadButton = !isViewMode && (isDetailsMode || (isGalleryMode && !hasSelectedItems));\n\n const headerLeft = isGalleryMode && hasSelectedItems && (\n <HeaderLeft\n items={imageItems}\n selectedItems={selectedItems}\n onClearAll={handleClearAll}\n onSelectAll={handleSelectAll}\n />\n );\n\n const headerRight = (\n <HeaderRight\n onDelete={isShowDeleteButton ? handleDeleteSelectedItems : undefined}\n onDownload={isHasSelectedItemsOrDetailsMode ? handleDownloadSelectedItems : undefined}\n onShare={isDetailsMode ? handleSharedCurrentItem : undefined}\n onUpload={isShowUploadButton ? onUpload : undefined}\n />\n );\n\n const handleClickByImage = (id: string) => {\n setCurrentAttributeValueUri(id);\n setMode(Mode.DETAILS_MODE);\n };\n\n return (\n <ImageGalleryDialog\n mode={mode}\n open={open}\n onChangeMode={setMode}\n header={{\n left: headerLeft,\n right: headerRight\n }}\n onClose={onClose}\n >\n {isGalleryMode && (\n <GalleryView\n items={imageItems}\n selectedItems={selectedItems}\n onSelectImage={handleSelect}\n onDeselectImage={handleDeselect}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onDownload={handleDownload}\n onClickImage={handleClickByImage}\n onDelete={!isViewMode ? handleDelete : undefined}\n />\n )}\n {isDetailsMode && (\n <ImageDetailsView\n handleSetAsDefault={handleSetAsDefault}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeValues={attributeValues}\n attributeType={attributeType}\n />\n )}\n </ImageGalleryDialog>\n );\n};\n\nexport default ImageAttributesGallery;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {fade} from '@material-ui/core';\n\nexport type SIZES_TYPE = {\n imageMargin: number;\n imageWidth: number;\n imageHeight: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n imageBox: {\n position: 'relative',\n display: 'flex',\n width: '100%',\n flexGrow: 1,\n flexShrink: 0,\n flexWrap: 'nowrap',\n marginTop: '2px',\n overflow: 'hidden'\n },\n\n moreButtonContainer: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n position: 'absolute',\n right: 0,\n cursor: 'pointer'\n };\n },\n moreButton: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: imageWidth,\n height: imageHeight,\n backgroundColor: fade(theme.palette.primary.main, 0.06)\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n ImageAttributeValue,\n insertDefaultImageByAttrUri,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {BlockImageGalleryDialogContext} from '../../../contexts';\nimport ImageAttributesGallery from '../../ImageAttributesGallery/ImageAttributesGallery';\nimport {downloadImagesByURLs} from '../helpers/imageAttributes';\nimport {DEFAULT_IMAGE_SIZE, IMAGE_MIN_VISIBLE_WIDTH} from './constants';\nimport {SIZES_TYPE, useStyles} from './styles';\n\nexport type ImageRenderProps = {\n onDownload?: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onOpenImageGalleryDialog: (uri?: string) => void;\n};\n\nexport type RenderImage = (imageRenderProps?: ImageRenderProps) => (attributeValue: ImageAttributeValue) => JSX.Element;\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n renderImage: RenderImage;\n overlay?: boolean;\n countFixedItems?: number;\n children?: React.ReactNode;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n parentUri?: string;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n renderImage,\n overlay = false,\n countFixedItems = 0,\n children,\n onUpload,\n onDeleteAttribute,\n imageSize = DEFAULT_IMAGE_SIZE,\n paging,\n parentUri,\n showNonOv,\n requestNextPageOfAttributeValues\n}: Props) => {\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const dispatch = useDispatch();\n const styles = useStyles(imageSize);\n useEffect(() => {\n if (paging && requestNextPageOfAttributeValues) {\n const totalVisibleValues = showNonOv ? paging.totalOvValues : paging.totalValues;\n if (totalVisibleValues > attributeValues.length) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values: [],\n defaultMaxValues: totalVisibleValues\n });\n }\n }\n }, [paging, requestNextPageOfAttributeValues, attributeType, parentUri, attributeValues.length, showNonOv]);\n\n const lastWidth = useRef<number | null>();\n const [maxItems, setMaxItems] = useState<number>(0);\n const [hiddenItemsLength, setHiddenItemsLength] = useState<number>(0);\n\n const isBlockImageGalleryDialog = useContext(BlockImageGalleryDialogContext);\n const [isOpenDialog, setIsOpenDialog] = useState<boolean>(false);\n const [currentAttributeValueUri, setCurrentAttributeValueUri] = useState<string>();\n\n const adjustMaxItemsToScreenWidth = useCallback(\n (width: number) => {\n const {imageMargin, imageWidth} = imageSize;\n const maxItemsPerScreen = Math.floor((width + imageMargin) / (imageWidth + imageMargin)) - countFixedItems;\n const hasHiddenImage =\n width + imageMargin - (maxItemsPerScreen + countFixedItems) * (imageWidth + imageMargin) <\n IMAGE_MIN_VISIBLE_WIDTH;\n setMaxItems(maxItemsPerScreen);\n if (attributeValues.length > maxItemsPerScreen) {\n setHiddenItemsLength(attributeValues.length - maxItemsPerScreen + (hasHiddenImage ? 1 : 0));\n } else {\n setHiddenItemsLength(0);\n }\n },\n [attributeValues.length, countFixedItems, imageSize]\n );\n\n const handleResize = useCallback(\n (width) => {\n adjustMaxItemsToScreenWidth(width);\n lastWidth.current = width;\n },\n [adjustMaxItemsToScreenWidth]\n );\n\n useEffect(() => {\n if (lastWidth.current) {\n adjustMaxItemsToScreenWidth(lastWidth.current);\n }\n }, [attributeValues.length, adjustMaxItemsToScreenWidth]);\n\n const handleOpenImageGalleryDialog = useCallback(\n (uri?: string) => {\n if (!isBlockImageGalleryDialog) {\n setCurrentAttributeValueUri(uri);\n setIsOpenDialog(true);\n }\n },\n [isBlockImageGalleryDialog]\n );\n\n const handleCloseImageGalleryDialog = useCallback(() => {\n setIsOpenDialog(false);\n }, []);\n\n const handleDownload = (urls: string[]) => downloadImagesByURLs(urls);\n const handleShareLink = (url: string) => navigator.clipboard.writeText(url);\n\n const handleSetAsDefault = useCallback(\n (attributeValue: ImageAttributeValue) => {\n if (isViewMode) {\n insertDefaultImageByAttrUri(entity.uri, attributeValue.uri).then(({status}) => {\n if (status === 'success') {\n dispatch(profile.entity.actions.setDefaultProfilePic(attributeValue));\n }\n });\n } else {\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: attributeValue\n })\n );\n }\n },\n [isViewMode, entity.uri, dispatch]\n );\n\n const renderImageProps = {\n onOpenImageGalleryDialog: handleOpenImageGalleryDialog,\n ...(overlay && {\n onDownload: handleDownload,\n onShareLink: handleShareLink,\n onSetAsDefault: handleSetAsDefault\n })\n };\n\n return (\n <>\n <ReactResizeDetector handleWidth={true} onResize={handleResize} />\n <ImageAttributesGallery\n attributeValues={attributeValues}\n open={isOpenDialog}\n onClose={handleCloseImageGalleryDialog}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeType={attributeType}\n onDownload={handleDownload}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onUpload={onUpload}\n onDeleteAttribute={onDeleteAttribute}\n />\n <div className={styles.imageBox}>\n {children}\n {attributeValues.slice(0, maxItems).map(renderImage(renderImageProps))}\n {hiddenItemsLength > 0 && (\n <div className={styles.moreButtonContainer}>\n <div className={styles.moreButton} onClick={() => handleOpenImageGalleryDialog()}>\n <Typography className={styles.number}>{`+${hiddenItemsLength}`}</Typography>\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport default ImageAttributesLine;\n","const getFilenameFromURL = (url: string) => url.split('/').pop();\nconst isAbsoluteUrl = (url: string) => url.indexOf('://') > 0 || url.indexOf('//') === 0;\n\nconst isExternalUrl = (url: string) => {\n if (!isAbsoluteUrl(url)) return false;\n\n const urlParts = new URL(url);\n return urlParts.host !== location.host;\n};\n\nconst REMOVE_IFRAME_DELAY = 30000;\n\nexport const downloadImagesByURLs = (urls: string[]) => {\n urls.forEach((url, index) => {\n try {\n if (isExternalUrl(url)) {\n const iframe = document.createElement('iframe');\n iframe.setAttribute('style', 'display: none;');\n iframe.setAttribute('src', url);\n document.body.appendChild(iframe);\n setTimeout(() => document.body.removeChild(iframe), (index + 1) * REMOVE_IFRAME_DELAY);\n } else {\n const link = document.createElement('a');\n link.href = url;\n link.download = getFilenameFromURL(url);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n } catch (e) {\n console.error(e);\n }\n });\n};\n","import {ImageSizesStyles} from '../../Image/Image';\n\nexport const IMAGE_WIDTH = ImageSizesStyles.SMALL.imageWidth;\nexport const IMAGE_HEIGHT = ImageSizesStyles.SMALL.imageHeight;\nexport const IMAGE_MARGIN = 4;\nexport const IMAGE_MIN_VISIBLE_WIDTH = 8;\n\nexport const DEFAULT_IMAGE_SIZE = {imageMargin: IMAGE_MARGIN, imageWidth: IMAGE_WIDTH, imageHeight: IMAGE_HEIGHT};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n height: '16px',\n borderColor: fade(theme.palette.primary.main, 0.54)\n },\n label: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px',\n lineHeight: '11px',\n color: theme.palette.primary.main\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {Chip as Chip} from '@material-ui/core';\nimport {\n AttributeTypeType,\n getAttrDataTypeDefinition,\n getAttributeValue,\n isComplexAttribute,\n NestedAttributeValueType,\n getLabel,\n ReferenceAttributeValueType,\n SimpleAttributeValueType\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nimport DataTypeValue from '../../DataTypeValue/DataTypeValue';\nimport {withTooltip} from '../../../HOCs';\n\nexport const ChipWithTooltip = withTooltip(Chip);\n\nconst OvIcon = ({className, attributeType, nonOvValues = [], nonOvTotal}) => {\n const styles = useStyles();\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.label)\n ) : (\n <DataTypeValue\n value={getAttributeValue(value)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n rich={false}\n />\n )}\n </div>\n ))\n : null;\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n tooltipPlacement=\"top\"\n label={`+ ${nonOvTotal}`}\n variant=\"outlined\"\n classes={{\n root: classnames(styles.container, className),\n label: styles.label\n }}\n />\n );\n};\n\nOvIcon.propTypes = {\n className: PropTypes.string,\n nonOvTotal: PropTypes.number,\n attributeType: AttributeTypeType,\n nonOvValues: PropTypes.arrayOf(\n PropTypes.oneOfType([SimpleAttributeValueType, NestedAttributeValueType, ReferenceAttributeValueType])\n )\n};\n\nexport default OvIcon;\n","import {\n AttributeType,\n AttributeValue,\n DataTypes,\n findAttributeTypeByUri,\n isOv,\n Metadata,\n PivotingAttribute,\n RecordAttributesType,\n PrimitiveValue,\n getLastUriPart,\n PivotingValue\n} from '@reltio/mdm-sdk';\n\nconst getPivotingChildrenUris = (attributeType: AttributeType, pivotingAttributes: PivotingAttribute[]) => {\n const pivotingAttribute = pivotingAttributes.find((attribute) => {\n return attribute.uri === attributeType.uri;\n });\n\n return pivotingAttribute && Array.isArray(pivotingAttribute.children) ? pivotingAttribute.children : [];\n};\n\nexport const generatePivotingValue = (\n attributeType: AttributeType,\n value: RecordAttributesType,\n pivotingAttributes: PivotingAttribute[],\n metadata: Metadata\n): PivotingValue[] => {\n const pivotingChildrenUris = getPivotingChildrenUris(attributeType, pivotingAttributes);\n let pivotingChildren = attributeType?.attributes || attributeType?.analyticsAttributes || [];\n if (pivotingChildrenUris.length) {\n pivotingChildren = pivotingChildren.filter((attrType) => pivotingChildrenUris.includes(attrType.uri));\n }\n\n return pivotingChildren.reduce((acc, attribute) => {\n const values = valueToString(value[attribute.name] as AttributeValue[], metadata, pivotingAttributes);\n if (values && values.length) {\n if (Array.isArray(values[0])) {\n acc.push({[attribute.uri]: values[0]});\n } else {\n acc.push({[attribute.uri]: values});\n }\n }\n return acc;\n }, []);\n};\n\nexport const convertSimpleAttributePivotingValue = (attrType: AttributeType, value: PrimitiveValue) => [\n {[attrType.name]: value}\n];\nexport const convertNestedAttributePivotingValue = (values: PivotingValue[]) => {\n return values.map((value) => {\n return Object.fromEntries(Object.entries(value).map(([key, value]) => [getLastUriPart(key), value]));\n });\n};\n\nconst valueToString = (values: AttributeValue[], metadata: Metadata, pivotingAttributes: PivotingAttribute[]) => {\n if (!values || values.length === 0) return;\n\n return values.reduce((acc, valueContainer) => {\n if ('type' in valueContainer && valueContainer.type) {\n const value = 'lookupCode' in valueContainer ? valueContainer.lookupCode : valueContainer.value;\n const attributeType = findAttributeTypeByUri(metadata, valueContainer.type);\n if (value && typeof value !== 'object' && isOv(valueContainer)) {\n acc.push(preparePivotingAttributeValue(value, attributeType));\n } else if (value && typeof value === 'object' && !Array.isArray(value)) {\n acc.push(generatePivotingValue(attributeType, value, pivotingAttributes, metadata));\n }\n }\n return acc;\n }, []);\n};\n\nexport const preparePivotingAttributeValue = (value: PrimitiveValue, attributeType: AttributeType) => {\n switch (attributeType?.type) {\n case DataTypes.TYPE_DATE:\n return new Date(value as number).getTime();\n case DataTypes.TYPE_TIMESTAMP: {\n if (!isNaN(Number(value))) {\n return new Date(Number(value)).getTime();\n } else {\n return new Date(value as number).getTime();\n }\n }\n default:\n return value;\n }\n};\n","import React from 'react';\n\nconst SvgPivotingIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={11} height={11} viewBox=\"0 0 11 11\" {...props}>\n <path\n d=\"M2.514 5h2.314V3l2.5 2.5-2.5 2.5V6h-3.8a4.5 4.5 0 10.73-3H.6a5.5 5.5 0 11-.577 3H0V5H2.514z\"\n fill=\"#6CACE4\"\n stroke=\"none\"\n strokeWidth={1}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n};\n\nexport default SvgPivotingIcon;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n container: {\n backgroundColor: 'white',\n width: '360px',\n minWidth: '360px',\n maxWidth: '720px'\n },\n header: {\n display: 'flex',\n height: '48px',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingLeft: '16px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px'\n },\n entityTypeLabel: {\n color: 'rgba(0,0,0,0.67)',\n fontSize: '14px',\n paddingLeft: '16px',\n paddingBottom: '12px',\n lineHeight: '16px'\n },\n divider: {\n height: '24px',\n width: '1px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n headerCount: {\n color: theme.palette.text.secondary,\n fontSize: '14px',\n letterSpacing: '0.24px',\n lineHeight: '28px',\n width: '210px'\n },\n body: {\n borderBottom: '1px solid rgba(0,0,0,0.12)',\n padding: '0 16px 8px'\n },\n footer: {\n display: 'flex',\n alignItems: 'center',\n height: '31px',\n paddingLeft: '16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n profileIcon: {\n height: '16px',\n width: '16px'\n },\n entityContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px',\n textDecoration: 'none',\n paddingLeft: '8px'\n },\n icon: {\n margin: 'auto 8px auto 0'\n },\n content: {\n color: theme.palette.primary.main,\n cursor: 'pointer'\n },\n seeAllButton: {\n cursor: 'pointer'\n }\n}));\n\nexport const usePivotingTooltipStyles = makeStyles({\n tooltip: {\n backgroundColor: 'white',\n boxShadow: '0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.2)',\n padding: 0,\n borderRadius: '4px',\n maxWidth: 'none'\n },\n arrow: {\n '&::before': {\n backgroundColor: 'white'\n }\n }\n});\n","import React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n getEntityUriForLink,\n getFilteredEntities,\n getLabel,\n getTotals,\n GlobalSearchRequestOptions,\n PrimitiveValue,\n PivotingValue,\n convertPivotingValueToSearchFilters\n} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport {useSafePromise} from '../../../hooks';\nimport {useStyles} from './styles';\n\nconst MAX_ENTITIES_PIVOTING_TOOLTIP = 6;\n\nexport type Props = {\n value: PivotingValue[] | PrimitiveValue;\n attributeType: AttributeType;\n config: {\n label?: string;\n entityType?: string;\n };\n onSeeAllClick: () => void;\n};\n\nexport const PivotingTooltipContent = ({value, attributeType, config = {}, onSeeAllClick}: Props) => {\n const [entities, setEntities] = useState<Entity[]>([]);\n const [total, setTotal] = useState(0);\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const safePromise = useSafePromise();\n const styles = useStyles();\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions =\n useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {};\n const entityType = config.entityType || entity.type;\n\n const shouldShowSeeAllButton = total > MAX_ENTITIES_PIVOTING_TOOLTIP;\n\n useEffect(() => {\n const filters = convertPivotingValueToSearchFilters({value, attributeType, entityType});\n const options = {\n max: MAX_ENTITIES_PIVOTING_TOOLTIP,\n ...globalSearchRequestOptions\n };\n safePromise(Promise.all([getFilteredEntities(filters, options), getTotals(filters, options)]))\n .then((results) => {\n const [entities, {total}] = results;\n setEntities(Array.isArray(entities) ? entities : []);\n setTotal(total);\n })\n .catch(() => {\n setEntities([]);\n setTotal(0);\n });\n }, []);\n\n const hasEntityTypeLabel = Boolean(config.label);\n return (\n <div className={styles.container}>\n <div className={styles.header}>\n <div className={styles.title}>{i18n.text('Pivot profiles')}</div>\n <div className={styles.divider} />\n <div className={styles.headerCount}>\n {i18n.number(total, '0,0') + ' ' + (total === 1 ? i18n.text('item') : i18n.text('items'))}\n </div>\n </div>\n {hasEntityTypeLabel && <div className={styles.entityTypeLabel}>{config.label}</div>}\n <div className={styles.body}>\n {entities.map((visibleEntity) => (\n <div key={visibleEntity.uri} className={styles.entityContainer}>\n <EntityAvatar entity={visibleEntity} avatarClassName={styles.profileIcon} />\n <EntityUriLink className={styles.entityLabel} value={getEntityUriForLink(visibleEntity)}>\n {getLabel(visibleEntity.label)}\n </EntityUriLink>\n </div>\n ))}\n </div>\n {shouldShowSeeAllButton && (\n <div className={styles.footer}>\n <a className={styles.seeAllButton} onClick={onSeeAllClick}>\n {i18n.text('See all')}\n </a>\n </div>\n )}\n </div>\n );\n};\n","import React, {useContext} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport mdm, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n AttributeType,\n isNested,\n NestedAttributeValue,\n PrimitiveValue,\n RecordAttributesType,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {isNil} from 'ramda';\n\nimport {PivotingAttributeContext} from '../../../contexts';\nimport {\n convertNestedAttributePivotingValue,\n convertSimpleAttributePivotingValue,\n generatePivotingValue,\n preparePivotingAttributeValue\n} from './helpers';\nimport PivotingIcon from '../../../icons/PivotingIcon';\nimport {PivotingTooltipContent} from './PivotingTooltipContent';\nimport {usePivotingTooltipStyles, useStyles} from './styles';\n\ntype Props = {\n value: SimpleAttributeValue | NestedAttributeValue;\n attributeType: AttributeType;\n children?: React.ReactNode;\n className?: string;\n};\nexport const PivotingTooltip = ({value, attributeType, children, className}: Props) => {\n const styles = usePivotingTooltipStyles();\n const contentStyles = useStyles();\n const dispatch = useDispatch();\n const pivotingAttributesList = useContext(PivotingAttributeContext) || [];\n const isNestedAttribute = isNested(attributeType);\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n\n const pivotingValue = isNestedAttribute\n ? generatePivotingValue(attributeType, value.value as RecordAttributesType, pivotingAttributesList, metadata)\n : preparePivotingAttributeValue(\n (value as SimpleAttributeValue).lookupCode || (value.value as PrimitiveValue),\n attributeType\n );\n\n const isPivotingAttribute =\n pivotingAttributesList.some(({uri}) => uri === attributeType.uri) &&\n ((Array.isArray(pivotingValue) && pivotingValue.length) ||\n (!Array.isArray(pivotingValue) && !isNil(pivotingValue)));\n\n const pivotingAttribute = pivotingAttributesList.find(({uri}) => uri === attributeType.uri);\n\n const handleSeeAllClick = () => {\n const generatedValue = Array.isArray(pivotingValue)\n ? convertNestedAttributePivotingValue(pivotingValue)\n : convertSimpleAttributePivotingValue(attributeType, pivotingValue);\n\n dispatch(mdmModuleUi.actions.openPivotingPerspective({value: generatedValue, attributeType}));\n };\n\n return isPivotingAttribute ? (\n <Tooltip\n interactive\n arrow\n placement=\"right-start\"\n classes={styles}\n title={\n <PivotingTooltipContent\n value={pivotingValue}\n attributeType={attributeType}\n config={pivotingAttribute.popup}\n onSeeAllClick={handleSeeAllClick}\n />\n }\n >\n <span className={className}>\n <PivotingIcon className={contentStyles.icon} />\n <span className={contentStyles.content} onClick={handleSeeAllClick}>\n {children}\n </span>\n </span>\n </Tooltip>\n ) : (\n <>{children}</>\n );\n};\n","import EditModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return EditModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes, isReltioCrosswalk} from '@reltio/mdm-sdk';\nimport SimpleAttributeEditor from '../SimpleAttributeEditor/SimpleAttributeEditor';\nimport NestedAttribute from '../NestedAttribute/NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class EditModeAttributesFactory {\n static build(attributeType, props = {}) {\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n showEmptyEditors,\n onAddAttributes,\n lazy,\n errors,\n crosswalks,\n showNonOv,\n expanded,\n ...propsForSimpleAttribute\n } = props;\n /* eslint-enable @typescript-eslint/no-unused-vars */\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return (\n <SimpleAttributeEditor\n isReltioCrosswalk={isReltioCrosswalk(crosswalks, props.attributeValue)}\n {...propsForSimpleAttribute}\n />\n );\n }\n }\n}\n","import React, {memo, useCallback, useContext, useMemo, useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {\n getCreatableAttributeTypes,\n getAttributesListForEditMode,\n ModeType,\n getParentUri,\n checkCanCreateAttribute\n} from '@reltio/mdm-sdk';\nimport {path} from 'ramda';\n\nimport AttributesPager from '../AttributesPager';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport MoreAttributesButton from '../MoreAttributesButton';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\nimport {getMoreAttrTypes} from './helpers';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\n\nconst AttributesList = ({\n parentAttributeType,\n attrTypes,\n entity,\n parentUri,\n showEmptyEditors,\n mode,\n crosswalks,\n drawLines,\n children,\n className,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n onAddAttributes,\n onChangeAttribute,\n onDeleteAttribute,\n additionalControlsRenderer,\n showNonOv\n}) => {\n const {attributes = {}} = entity;\n const [hasDeletionsMap, setHasDeletionsMap] = useState({});\n const setHasDeletions = useCallback((attrTypeUri, value) => {\n setHasDeletionsMap((prevMap) => ({\n ...prevMap,\n [attrTypeUri]: value\n }));\n }, []);\n useEffect(() => {\n setHasDeletionsMap({});\n }, [parentUri]);\n const canCreateParentAttrType = useMemo(\n () => parentAttributeType && checkCanCreateAttribute({attributeType: parentAttributeType, mode}),\n [parentAttributeType, mode]\n );\n const creatableAttrTypes = useMemo(() => getCreatableAttributeTypes(mode, attrTypes), [attrTypes, mode]);\n const moreAttrTypes = getMoreAttrTypes(creatableAttrTypes, entity, showEmptyEditors, hasDeletionsMap);\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const pagersData = useMemo(\n () => getAttributesListForEditMode(attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes),\n [attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes]\n );\n\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const onAddMoreAttributes = useCallback(\n (attributeTypes) => {\n onAddAttributes(\n attributeTypes.map((attributeType) => ({\n attributeType,\n parentUri: attributeType === parentAttributeType ? getParentUri(parentUri) : parentUri\n }))\n );\n },\n [onAddAttributes, parentUri, parentAttributeType]\n );\n\n const decoratorProps = {\n enabled: drawLines\n };\n const hasDeletionsContextValue = useMemo(\n () => ({\n hasDeletionsMap,\n setHasDeletions\n }),\n [hasDeletionsMap, setHasDeletions]\n );\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n <BranchDecorator {...decoratorProps} plain={true}>\n {moreAttrTypes.length > 0 && (\n <MoreAttributesButton\n label={i18n.text('More attributes')}\n onApply={onAddMoreAttributes}\n dense={drawLines}\n data={moreAttrTypes}\n parent={canCreateParentAttrType && parentAttributeType}\n />\n )}\n </BranchDecorator>\n <HasDeletionsContext.Provider value={hasDeletionsContextValue}>\n {regularPagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], attributes)}\n parentUri={parentUri}\n showEmptyEditors={showEmptyEditors}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n />\n ))}\n </HasDeletionsContext.Provider>\n </div>\n );\n};\n\nAttributesList.propTypes = {\n parentAttributeType: PropTypes.object,\n attrTypes: PropTypes.array,\n entity: PropTypes.object,\n parentUri: PropTypes.string,\n children: PropTypes.node,\n showEmptyEditors: PropTypes.bool,\n mode: ModeType,\n crosswalks: PropTypes.array,\n drawLines: PropTypes.bool,\n showNonOv: PropTypes.bool,\n className: PropTypes.string,\n alwaysVisibleTypeUris: PropTypes.array,\n onAddAttributes: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n additionalControlsRenderer: PropTypes.func\n};\n\nexport default memo(AttributesList);\n","import {always, both, cond, has, T} from 'ramda';\nimport {\n AttributeType,\n Entity,\n isAnalyticAttribute,\n isRoleAttrType,\n isSpecialAttribute,\n isTagAttrType\n} from '@reltio/mdm-sdk';\n\nconst getSource = (\n attrType: AttributeType,\n entity: Entity\n): Entity | Entity['analyticsAttributes'] | Entity['attributes'] => {\n const {attributes = {}, analyticsAttributes = {}} = entity;\n return cond([\n [isSpecialAttribute, always(entity)],\n [both(isAnalyticAttribute, always(analyticsAttributes)), always(analyticsAttributes)],\n [T, always(attributes)]\n ])(attrType);\n};\n\nconst getNameProp = (attrType: AttributeType): string => {\n return isSpecialAttribute(attrType) ? 'uri' : 'name';\n};\n\nexport const getMoreAttrTypes = (\n attrTypes: AttributeType[],\n entity: Entity,\n showEmptyEditors?: boolean,\n hasDeletionsMap?: {[attrTypeUri: string]: boolean}\n): AttributeType[] => {\n return attrTypes.filter((attrType) => {\n const source = getSource(attrType, entity);\n const nameProp = getNameProp(attrType);\n return !(\n (attrType.singleValue || isRoleAttrType(attrType) || isTagAttrType(attrType)) &&\n (has(attrType[nameProp])(source) || (showEmptyEditors && !hasDeletionsMap?.[attrType.uri]))\n );\n });\n};\n","import React from 'react';\nimport {CardinalityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {allPass, always, cond, isNil, has, not, pipe, propSatisfies, T} from 'ramda';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\n\nconst valueCaption = (value) =>\n i18n.text('${value}', {\n value: value === 1 ? i18n.text('value') : i18n.text('values')\n });\n\nconst hasMinValue = has('minValue');\nconst hasMaxValue = has('maxValue');\nconst noMaxValue = pipe(hasMaxValue, not);\nconst minValueIsOne = propSatisfies((minValue) => minValue === 1, 'minValue');\nconst exactCardinality = ({minValue, maxValue}) => minValue && minValue === maxValue;\n\nconst generateMinCardinality = ({minValue}) =>\n i18n.text('This attribute can have minimum ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMaxCardinality = ({maxValue}) =>\n i18n.text('This attribute can have maximum ${maxValue} ${maxValueCaption}', {\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst generateExactCardinality = ({minValue}) =>\n i18n.text('This attribute should have ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMinMaxCardinality = ({minValue, maxValue}) =>\n i18n.text('${minCardinality} and maximum ${maxValue} ${maxValueCaption}', {\n minCardinality: generateMinCardinality({minValue}),\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst getCardinalityMessage = cond([\n [isNil, always('')],\n [exactCardinality, generateExactCardinality],\n [allPass([minValueIsOne, hasMaxValue]), generateMaxCardinality],\n [allPass([minValueIsOne, noMaxValue]), always('')],\n [allPass([hasMinValue, hasMaxValue]), generateMinMaxCardinality],\n [hasMaxValue, generateMaxCardinality],\n [hasMinValue, generateMinCardinality],\n [T, always('')]\n]);\n\nconst CardinalityMessage = ({cardinality}) => {\n const styles = useStyles();\n\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {getCardinalityMessage(cardinality)}\n </Typography>\n );\n};\n\nCardinalityMessage.propTypes = {\n cardinality: CardinalityType\n};\n\nexport default CardinalityMessage;\n","import {filter, propSatisfies} from 'ramda';\nimport {isTempUri} from '@reltio/mdm-sdk';\n\nconst filterNewValues = filter(propSatisfies(isTempUri, 'uri'));\n\nexport {filterNewValues};\n","import React, {useCallback, useRef, useState, useContext, useMemo} from 'react';\nimport {\n AttributeValue,\n createNewAttribute,\n getAttributeOwnError,\n isComplexAttribute,\n isEditableMode as checkIsEditableMode,\n isEmptyValue,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {add, always, has, ifElse, min, pipe, prop, T} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Title from '../../../Title/Title';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Cardinality from './CardinalityMessage';\nimport {AttributePagerProps} from './index';\nimport {useStyles} from './styles';\nimport {filterNewValues} from './utils';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport OvIcon from '../../OvIcon';\n\ntype Props = Required<Omit<AttributePagerProps, 'values'>> & {\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n nonVisibleValues: AttributeValue[];\n};\n\nconst AttributeRenderer = ({\n max,\n values,\n attributeType,\n parentUri,\n mode,\n drawLines,\n showEmptyEditors,\n errorMessage,\n errors,\n paging,\n crosswalks,\n showNonOv,\n nonVisibleValues,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n const [hadDeletions, setHadDeletions] = useState(false);\n const {label, required: isRequired, cardinality, name, uri: attributeTypeUri} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const isPinned = useMemo(() => pinnedAttributes?.includes(attributeTypeUri), [attributeTypeUri, pinnedAttributes]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = ((!hadDeletions && showEmptyEditors) || isRequired || isPinned) && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const onAddOneMore = useCallback(() => {\n setVisibleValuesCount(visibleValuesCount + 1);\n\n const attribute = {\n parentUri,\n index: visibleValuesCount,\n attributeType\n } as AttributeItem;\n\n return onAddAttributes(\n showEmpty && !isComplexAttribute(attributeType.type) ? [attribute, attribute] : [attribute]\n );\n }, [visibleValuesCount, onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const onDelete = useCallback(pipe(onDeleteAttribute, T, setHadDeletions), [onDeleteAttribute, setHadDeletions]);\n\n if (isEmptyValues && !showEmpty) {\n return null;\n }\n\n if (showEmpty && isEmptyValues) {\n values = [emptyEditorValue.current];\n }\n\n if (isEmptyValue(values)) {\n return null;\n }\n\n const newValuesCount = (filterNewValues(values) || []).length;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(\n has(totalProp),\n pipe(prop(totalProp), add(newValuesCount)),\n always(values.length)\n )(paging);\n\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues?.length;\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri,\n attributeTypeName: name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const lastIndex = shownValues ? shownValues.length - 1 : 0;\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <BranchDecorator enabled={drawLines}>\n <div className={styles.wrapper}>\n <div className={styles.titleWrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} className={styles.typeError} />}\n <div className={styles.attributesWrapper}>\n {shownValues.map((value, idx) => (\n <Attribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n errors={errors}\n ownError={getAttributeOwnError(value, idx, attributeType.uri, errors)}\n mode={mode}\n crosswalks={crosswalks}\n onAddOneMore={lastIndex === idx ? onAddOneMore : null}\n onAddAttributes={onAddAttributes}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n onDeactivateError={onDeactivateError}\n additionalControlsRenderer={additionalControlsRenderer}\n />\n ))}\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n </div>\n </BranchDecorator>\n );\n};\n\nexport default AttributeRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n roleContainer: {\n width: '100%'\n },\n\n valueContainer: {\n marginLeft: '8px',\n width: 0\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {prop, propEq} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {Metadata, Entity, EntityAttrTypes, getRolesForEntityType, getLastUriPart, AttributeItem} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport SimpleDropDownSelector from '../../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {MultiValueChip} from '../../..';\nimport {useStyles} from './styles';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\ntype Props = {\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst components = {MultiValue: MultiValueChip};\n\nexport const Roles = ({values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = entity.uri;\n\n const options = getRolesForEntityType(metadata, entity.type).map((role) => ({\n value: role.uri,\n label: role.label\n }));\n\n const formattedValues = (values || []).map((value) => {\n const label = options.find(propEq('value', value))?.label;\n\n return {\n value,\n label: label || getLastUriPart(value)\n };\n });\n\n const handleChange = useCallback(\n (values) => {\n const roles = values?.map(prop('value')) || [];\n onChange({\n value: roles,\n attributeType: EntityAttrTypes.roles,\n uri: entityUri\n });\n },\n [entityUri, onChange]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.roles});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <SimpleDropDownSelector\n label={''}\n height={40}\n isMulti={true}\n options={options}\n value={formattedValues}\n onChange={handleChange}\n components={components}\n classes={styles}\n className={styles.roleContainer}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getFacets, EntityAttrTypes, buildFilterQueryString, AttributeItem} from '@reltio/mdm-sdk';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport TypeaheadEditor from '../../../editors/TypeaheadEditor/TypeaheadEditor';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst filtersWithSearch = (searchQuery) => [\n {\n filter: 'containsWordStartingWith',\n fieldName: 'tags',\n values: [searchQuery]\n }\n];\n\nconst getQuery = (searchQuery) =>\n searchQuery ? `?filter=${buildFilterQueryString()(filtersWithSearch(searchQuery))}` : '';\n\nconst body = [\n {\n fieldName: 'tags',\n orderType: 'reversedCount'\n }\n];\n\nconst getSuggestions = (searchQuery) =>\n getFacets({query: getQuery(searchQuery), body}).then((response) => Object.keys(response.tags));\n\nconst Tags = ({className, values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const handleChange = useCallback(\n (tags) => {\n onChange({\n value: tags,\n attributeType: EntityAttrTypes.tags,\n uri: entityUri\n });\n },\n [onChange, entityUri]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.tags});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <TypeaheadEditor\n fullWidth\n multiple\n variant=\"filled\"\n className={className}\n value={values || []}\n onChange={handleChange}\n getSuggestions={getSuggestions}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n\nexport default Tags;\n","import React, {useCallback, useRef, useState} from 'react';\nimport {\n AttributeType,\n createNewAttribute,\n EntityAttrTypes,\n isEditableMode as checkIsEditableMode,\n Mode,\n isEmptyValue,\n isActivenessAttrType,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {pipe, T} from 'ramda';\nimport {Box as Box} from '@material-ui/core';\nimport Title from '../../../Title/Title';\nimport Cardinality from './CardinalityMessage';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Attribute from '../AttributesFactory/Attribute';\nimport {Roles} from '../Roles/Roles';\nimport Tags from '../Tags';\nimport {useStyles} from './styles';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\nimport {withContext} from '../../../../HOCs';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n parentUri: string;\n mode: Mode;\n errorMessage?: string;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n showEmptyEditors?: boolean;\n hasDeletions?: boolean;\n setHasDeletions?: (attrTypeUri: string, value: boolean) => void;\n};\n\nexport const SpecialRenderer = ({\n values,\n attributeType,\n parentUri,\n mode,\n errorMessage,\n onDeleteAttribute,\n onChangeAttribute,\n showEmptyEditors,\n hasDeletions: hasDeletionsProp,\n setHasDeletions,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const {label, required: isRequired, cardinality} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n const [hasDeletionsState, setHasDeletionsState] = useState(false);\n const updateHasDeletions = useCallback(\n (value: boolean) => {\n setHasDeletionsState(value);\n setHasDeletions?.(attributeType.uri, value);\n },\n [attributeType.uri, setHasDeletions]\n );\n const hasDeletions = hasDeletionsProp !== undefined ? hasDeletionsProp : hasDeletionsState;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onDelete = useCallback(pipe(onDeleteAttribute, T, updateHasDeletions), [\n onDeleteAttribute,\n updateHasDeletions\n ]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = !hasDeletions && showEmptyEditors && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const renderValue = () => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n case EntityAttrTypes.roles.uri:\n return <Roles values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n default: {\n //startDate, endDate\n const value = {\n ...emptyEditorValue.current,\n value: values[0] || ''\n };\n return (\n <Attribute\n attributeValue={value}\n attributeType={attributeType}\n mode={mode}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n {...otherProps}\n />\n );\n }\n }\n };\n\n if (isActivenessAttrType(attributeType) && isEmptyValues && !showEmpty) {\n return null;\n }\n\n return (\n <Box className={styles.wrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} />}\n <Box className={styles.attributesWrapper}>{renderValue()}</Box>\n </Box>\n );\n};\n\nexport default withContext(\n HasDeletionsContext,\n (contextValue, {attributeType}) => {\n const {hasDeletionsMap, setHasDeletions} = contextValue || {};\n return {\n hasDeletions: hasDeletionsMap ? Boolean(hasDeletionsMap[attributeType?.uri]) : undefined,\n setHasDeletions\n };\n },\n SpecialRenderer\n);\n","import React, {memo} from 'react';\nimport {\n ImageAttributeValue,\n isImage,\n isOv,\n isSpecialAttribute,\n Mode,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {always, cond, T, partition} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport AttributeRenderer from './AttributeRenderer';\nimport {AttributePagerProps} from './index';\nimport SpecialRenderer from './SpecialRenderer';\nimport {useStyles} from './styles';\nimport Title from '../../../Title/Title';\n\nenum RENDERER_TYPES {\n imageLine = 'imageLine',\n special = 'special',\n default = 'default'\n}\n\nconst AttributesPager = ({\n values,\n attributeType,\n mode = Mode.Viewing,\n crosswalks,\n drawLines,\n paging = {},\n parentUri,\n errors,\n errorMessage,\n max = Infinity,\n showEmptyEditors,\n showNonOv,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: AttributePagerProps) => {\n const styles = useStyles();\n const partitionByOv = partition(isOv);\n const [ovValues, nonOvValues] = partitionByOv(values);\n\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n\n const commonProps = {\n errorMessage,\n errors,\n mode,\n parentUri,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n showEmptyEditors\n };\n\n const renderAttribute = () => {\n const type: RENDERER_TYPES = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [T, always(RENDERER_TYPES.default)]\n ])(attributeType);\n\n switch (type) {\n case RENDERER_TYPES.special: {\n return (\n <BranchDecorator enabled={drawLines}>\n <SpecialRenderer\n values={visibleValues as string[] | number[]}\n attributeType={attributeType}\n {...commonProps}\n />\n </BranchDecorator>\n );\n }\n case RENDERER_TYPES.imageLine:\n return (\n <BranchDecorator enabled={drawLines}>\n <div className={styles.wrapper}>\n <Title label={attributeType?.label} data-reltio-id=\"reltio-attribute-label\" />\n <ImageAttributesLine\n attributeValues={visibleValues as ImageAttributeValue[]}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={onChangeAttribute}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </div>\n </BranchDecorator>\n );\n default:\n return (\n <AttributeRenderer\n values={\n visibleValues as (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[]\n }\n attributeType={attributeType}\n max={max}\n paging={paging}\n crosswalks={crosswalks}\n drawLines={drawLines}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n nonVisibleValues={nonVisibleValues}\n {...commonProps}\n />\n );\n }\n };\n\n return renderAttribute();\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeError,\n AttributeType,\n Crosswalk,\n getAttributePagerActiveTypeErrorMessage,\n ImageAttributeValue,\n Mode,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport AttributesPager from './AttributesPager';\nimport CardinalityMessage from './CardinalityMessage';\n\ntype StateProps = {\n errorMessage: string;\n errors: AttributeError[];\n max: number;\n};\n\ntype DispatchProps = {\n onDeactivateError: (id: string) => void;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\ntype OwnProps = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | ImageAttributeValue\n | string\n | number\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n mode?: Mode;\n crosswalks?: Crosswalk[];\n parentUri: string;\n drawLines: boolean;\n max?: number;\n showEmptyEditors: boolean;\n showNonOv?: boolean;\n onAddAttributes: (params: AttributeItem[]) => void;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n additionalControlsRenderer?: (props) => JSX.Element;\n};\n\nexport type AttributePagerProps = StateProps & DispatchProps & OwnProps;\n\nconst mapStateToProps = (state, {parentUri, attributeType, max}: OwnProps): StateProps => ({\n errors: mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType),\n errorMessage: getAttributePagerActiveTypeErrorMessage(\n parentUri,\n attributeType,\n mdmModule.selectors.getProfileErrors(state)\n ),\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps: DispatchProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {AttributesPager, CardinalityMessage};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n caption: {\n fontSize: '0.7rem',\n opacity: 0.54\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start'\n },\n attributesWrapper: {\n width: '100%',\n marginBottom: '10px'\n },\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n },\n title: {\n fontSize: '12px',\n lineHeight: '14px',\n paddingLeft: '12px',\n color: theme.palette.text.secondary\n },\n typeError: {\n marginLeft: '12px'\n },\n ovIcon: {\n marginLeft: '8px',\n marginTop: '-1px',\n textIndent: 0\n },\n titleWrapper: {\n flex: 1,\n paddingBottom: '3px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n editor: {\n display: 'flex',\n flex: 1,\n height: '36px',\n alignItems: 'center'\n },\n label: {\n flex: 1,\n marginLeft: '2px',\n marginTop: '2px',\n fontSize: '13px',\n lineHeight: '15px'\n },\n actions: {\n display: 'flex',\n alignItems: 'center'\n },\n titleContainer: {\n display: 'flex',\n flex: 1,\n minHeight: '20px'\n },\n expandButton: {\n marginTop: '2px'\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n },\n errorWrapperHelperText: {\n marginLeft: 0\n }\n}));\n","import React, {useMemo, useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {\n checkCanDeleteAttribute,\n isReltioCrosswalk,\n isTempUri,\n ComplexAttributeType,\n ReferenceAttributeValueType,\n NestedAttributeValueType,\n AttributeTypeType,\n getErrorMessage,\n hasAttributeDescendantsWithErrors,\n isAnalyticAttribute\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport AttributesList from '../AttributesList/AttributesList';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\n\nconst ComplexAttribute = ({\n label,\n attributeTypesList,\n attributeType,\n attributeValue,\n children,\n errors,\n ownError,\n mode,\n metadata,\n crosswalks,\n lazy,\n showEmptyEditors,\n onAddOneMore,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n additionalControlsRenderer,\n hideDeleteButton,\n state,\n showNonOv,\n expanded: expandedProp = false\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const uri = attributeValue.uri;\n const isNew = isTempUri(uri);\n const defaultExpand = isNew || expandedProp;\n const [expanded, setExpanded] = useState(defaultExpand);\n useEffect(() => {\n setExpanded(defaultExpand);\n }, [defaultExpand]);\n const canDelete = useMemo(\n () =>\n checkCanDeleteAttribute({\n attributeType,\n attributeValue,\n mode,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, metadata, crosswalks]\n );\n const showDeleteButton = !deleted && !hideDeleteButton && !!onDeleteAttribute && canDelete;\n const onDeleteThis = () => onDeleteAttribute({uri, attributeType, attributeValue});\n\n const hasDescendantsWithErrors = useMemo(() => hasAttributeDescendantsWithErrors(attributeValue, errors), [\n errors,\n attributeValue\n ]);\n useEffect(() => {\n if (hasDescendantsWithErrors) {\n setExpanded(true);\n }\n }, [errors, hasDescendantsWithErrors]);\n useEffect(() => {\n if (deleted) {\n setExpanded(false);\n }\n }, [deleted]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null\n }),\n [attributeValue, hasAnalyticValue]\n );\n\n const errorMessage =\n getErrorMessage(ownError) || (hasDescendantsWithErrors && i18n.text('Has an incorrect value')) || '';\n\n return lazy ? (\n <Button variant=\"text\" color=\"primary\" onClick={onAddOneMore}>\n Create attribute\n </Button>\n ) : (\n <>\n <div className={styles.editor}>\n <div className={styles.titleContainer}>\n <ArrowExpandButton\n onClick={() => setExpanded((value) => !value)}\n expanded={expanded}\n className={styles.expandButton}\n disabled={deleted}\n />\n <ErrorWrapper errorMessage={errorMessage} classes={{helperText: styles.errorWrapperHelperText}}>\n <div\n className={classnames(styles.label, {[styles.deleted]: deleted})}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </div>\n </ErrorWrapper>\n </div>\n <div className={styles.actions}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && <SmallIconButton icon={DeleteIcon} onClick={onDeleteThis} size=\"L\" />}\n </div>\n </div>\n {expanded && (\n <AttributesList\n parentAttributeType={attributeType}\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n showEmptyEditors={showEmptyEditors || isNew}\n drawLines={true}\n parentUri={uri}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </>\n );\n};\n\nComplexAttribute.propTypes = {\n label: PropTypes.string,\n children: PropTypes.node,\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n ...ComplexAttributeType\n};\n\nexport default ComplexAttribute;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AttributesList from '../AttributesList';\nimport {ModeType} from '@reltio/mdm-sdk';\n\nconst defaultAttributeTypesSelectionStrategy = (entityType) => entityType && entityType.attributes;\n\nconst EntityCreator = ({\n entity,\n entityType,\n attributeTypesSelectionStrategy = defaultAttributeTypesSelectionStrategy,\n mode,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute\n}) => {\n const attributeTypes = useMemo(() => attributeTypesSelectionStrategy(entityType), [\n attributeTypesSelectionStrategy,\n entityType\n ]);\n return entity ? (\n <AttributesList\n key={entity.uri}\n attrTypes={attributeTypes}\n entity={entity}\n showEmptyEditors={true}\n drawLines={true}\n parentUri={entity.uri}\n mode={mode}\n crosswalks={entity.crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n ) : null;\n};\n\nEntityCreator.propTypes = {\n entityUri: PropTypes.string, // used for connect\n parentUri: PropTypes.string, // used for validation\n entity: PropTypes.object,\n entityType: PropTypes.object,\n attributeTypesSelectionStrategy: PropTypes.func,\n mode: ModeType,\n onAddAttributes: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func\n};\n\nexport default EntityCreator;\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport EntityCreator from './EntityCreator';\n\nconst mapStateToProps = (state, ownProps) => ({\n entity: ownProps.entityUri && mdmModule.selectors.getModifiedEntity(state, ownProps.entityUri)\n});\n\nconst mapDispatchToProps = {\n onAddAttributes: profile.actions.addAttributes,\n onDeleteAttribute: profile.actions.removeAttribute,\n onChangeAttribute: profile.actions.modifyAttribute\n};\n\nexport {EntityCreator};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EntityCreator);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n entityContainer: {\n display: 'flex',\n alignItems: 'center',\n height: '32px',\n minHeight: '32px',\n padding: 0\n },\n entityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.87)',\n cursor: 'pointer',\n lineHeight: '15px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n emptyEntityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.6)',\n lineHeight: '15px',\n marginLeft: '16px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n cursor: 'default'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '8px',\n marginRight: '11px'\n },\n entitySecondaryLabel: {\n color: 'rgba(0,0,0,0.6)'\n }\n});\n\nexport const useSingleValueStyles = makeStyles((theme) => ({\n singleValue: {\n color: 'rgba(0, 0, 0, 0.87)',\n fontSize: '14px',\n paddingTop: '18px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n linkValue: {\n cursor: 'pointer',\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n\nexport const useGroupStyles = makeStyles((theme) => ({\n addLabel: {\n color: theme.palette.primary.main,\n display: 'flex',\n fontWeight: '500',\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n groupHeading: {\n fontSize: '13px',\n height: '36px',\n padding: '0 16px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n addIcon: {\n height: '18px',\n width: '18px',\n padding: '0 9px'\n }\n}));\n\nexport const useClearIconStyles = makeStyles({\n clearIcon: {\n cursor: 'pointer',\n height: '20px',\n width: '20px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst EntityOption = ({innerRef, innerProps, selectOption, data}) => {\n const styles = useStyles();\n const {uri, entityType, label, secondaryLabel} = data;\n if (uri !== '') {\n return (\n <MenuItem\n className={styles.entityContainer}\n ref={innerRef}\n key={uri}\n onClick={() => selectOption({label, uri, entityType})}\n {...innerProps}\n >\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <span className={styles.entityLabel}>\n {label}\n {secondaryLabel && <span className={styles.entitySecondaryLabel}>, {secondaryLabel}</span>}\n </span>\n </MenuItem>\n );\n } else {\n return (\n <MenuItem className={styles.entityContainer} ref={innerRef} key={uri} {...innerProps} disabled={true}>\n <span className={styles.emptyEntityLabel}>{i18n.text('No results found')}</span>\n </MenuItem>\n );\n }\n};\n\nEntityOption.propTypes = {\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n innerProps: PropTypes.object.isRequired,\n selectOption: PropTypes.func.isRequired,\n data: PropTypes.shape({\n uri: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n entityType: EntityType.isRequired\n })\n};\n\nexport default EntityOption;\n","import React, {useContext} from 'react';\nimport {always, pipe} from 'ramda';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {useSingleValueStyles} from './styles';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getEntityLink, getLabel, isTempUri} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ViewIdContext} from '../../../../../contexts/ViewIdContext';\n\nconst SingleValue = (props) => {\n const {\n selectProps: {currentEntityType, menuIsOpen, disableLinkClick},\n children,\n data\n } = props;\n\n const styles = useSingleValueStyles();\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n\n const handleOnMouseDown = (event) => {\n event.stopPropagation();\n if (!disableLinkClick) {\n pipe(always({uri: data.entityUri, viewId}), ui.actions.openEntity, dispatch)();\n }\n };\n\n const valueProps = isTempUri(data.entityUri)\n ? {\n className: styles.singleValue,\n component: 'span'\n }\n : {\n className: classnames(styles.singleValue, styles.linkValue),\n onMouseDown: handleOnMouseDown,\n onClick: (e) => e.preventDefault(),\n href: getEntityLink({uiPath, uri: data.entityUri}),\n component: 'a'\n };\n\n return (\n !menuIsOpen && (\n <Typography {...valueProps}>\n {isTempUri(data.entityUri)\n ? i18n.text(`New ${currentEntityType.label} will be created`)\n : getLabel(children)}\n </Typography>\n )\n );\n};\n\nSingleValue.propTypes = {\n children: PropTypes.string,\n data: PropTypes.object.isRequired,\n selectProps: PropTypes.object.isRequired\n};\n\nexport default SingleValue;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport {useClearIconStyles} from './styles';\nimport {IconButton as IconButton} from '@material-ui/core';\n\nconst ClearIndicator = (props) => {\n const {\n selectProps: {onClear}\n } = props;\n\n const styles = useClearIconStyles();\n\n return (\n <IconButton onClick={onClear}>\n <ClearIcon className={styles.clearIcon} />\n </IconButton>\n );\n};\n\nClearIndicator.propTypes = {\n selectProps: PropTypes.object.isRequired\n};\n\nexport default ClearIndicator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {components} from 'react-select';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useGroupStyles} from './styles';\n\nconst {Group: ComponentsGroup} = components;\n\nconst Group = (props) => {\n const {\n selectProps: {inputValue, onCreate},\n data,\n children\n } = props;\n\n const styles = useGroupStyles();\n\n return (\n <ComponentsGroup {...props}>\n <div className={styles.groupHeading}>\n <span>{data.label}</span>\n {onCreate && (\n <span onClick={() => onCreate(inputValue, data.entityType)} className={styles.addLabel}>\n <AddIcon className={styles.addIcon} />\n {i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${data.label}`)}\n </span>\n )}\n </div>\n {children}\n </ComponentsGroup>\n );\n};\n\nGroup.propTypes = {\n selectProps: PropTypes.object.isRequired,\n data: PropTypes.object,\n children: PropTypes.array\n};\n\nexport default Group;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n creatorWrapper: {\n marginTop: '20px'\n }\n});\n","import React, {useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {isEmpty, prop} from 'ramda';\nimport {\n getFilteredEntities,\n getEntityType,\n MetadataType,\n ConnectionEntityType,\n ModeType,\n isTempUri,\n getLastUriPart,\n getLabel\n} from '@reltio/mdm-sdk';\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\nimport EntityOption from './components/EntityOption';\nimport SingleValue from './components/SingleValue';\nimport ClearIndicator from './components/ClearIndicator';\nimport EntityCreator from '../EntityCreator';\nimport {EmptyStub} from '../../../../core';\nimport Group from './components/Group';\nimport {useStyles} from './styles';\n\nconst buildEntityOptions = (entityTypes, onCreate) => (entities) => {\n const newOptions = entities.map((entity) => ({\n ...entity,\n label: getLabel(entity.label),\n entityType: entityTypes.find(({uri}) => uri === entity.type)\n }));\n\n const addDummyOptionToEmptyOptionList = (options) =>\n isEmpty(options)\n ? [\n {\n label: '',\n uri: '',\n entityType: {}\n }\n ]\n : options;\n\n const filteredEntityTypes = onCreate\n ? entityTypes\n : entityTypes.filter((type) => {\n return newOptions.some((option) => option.type === type.uri);\n });\n\n return filteredEntityTypes.length > 1\n ? filteredEntityTypes.map((type) => {\n return {\n label: type.label,\n entityType: type.uri,\n options: addDummyOptionToEmptyOptionList(newOptions.filter((option) => option.type === type.uri))\n };\n })\n : addDummyOptionToEmptyOptionList(newOptions);\n};\n\nconst EntitySelector = ({\n entity = {},\n entityTypesUris = [],\n mode,\n max,\n onChange,\n onCreate,\n metadata,\n globalSearchRequestOptions,\n attributeTypesSelectionStrategy,\n disableLinkClick = false,\n ...otherProps\n}) => {\n const styles = useStyles();\n const [inputValue, setInputValue] = useState('');\n\n const entityTypes = useMemo(() => entityTypesUris.map((type) => getEntityType(metadata, type)), [\n entityTypesUris,\n metadata\n ]);\n\n const filters = [\n {\n filter: 'equals',\n fieldName: 'type',\n values: entityTypesUris.map(getLastUriPart)\n }\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 getFilteredEntities(filters, options, value).then(buildEntityOptions(entityTypes, onCreate));\n const currentEntityType = (isEmpty(entity) ? entityTypes[0] : getEntityType(metadata, entity.entityType)) || {};\n const createLabel =\n onCreate && i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${currentEntityType.label}`);\n const label = i18n.text(`Select ${entityTypes.length === 1 ? `${entityTypes[0].label} ` : ''}profile`);\n const isTempEntity = !isEmpty(entity) && isTempUri(entity.entityUri);\n const groupComponent = groupMode ? {Group, GroupHeading: EmptyStub} : {};\n const clearComponent = isTempEntity ? {ClearIndicator} : {};\n\n const {TextFieldProps, ...dropDownSelectorProps} = otherProps;\n\n const textFieldProps = useMemo(\n () => ({\n ...(TextFieldProps || {}),\n ['data-reltio-id']: 'reltio-entity-selector'\n }),\n [TextFieldProps]\n );\n return (\n <>\n <DropDownSelector\n value={!isEmpty(entity) ? entity : undefined}\n inputValue={inputValue}\n onInputChange={handleInputChange}\n getOptions={getOptions}\n getOptionLabel={prop('entityLabel')}\n onChange={handleChange}\n onCreate={handleCreate}\n onClear={handleClear}\n label={label}\n createLabel={createLabel}\n components={{\n Option: EntityOption,\n SingleValue: SingleValue,\n ...groupComponent,\n ...clearComponent\n }}\n currentEntityType={currentEntityType}\n isClearable={true}\n disableLinkClick={disableLinkClick}\n TextFieldProps={textFieldProps}\n {...dropDownSelectorProps}\n />\n {isTempEntity && (\n <div className={styles.creatorWrapper}>\n <EntityCreator\n mode={mode}\n attributeTypesSelectionStrategy={attributeTypesSelectionStrategy}\n entityType={currentEntityType}\n entityUri={entity.entityUri}\n />\n </div>\n )}\n </>\n );\n};\n\nEntitySelector.propTypes = {\n entity: ConnectionEntityType,\n entityTypesUris: PropTypes.arrayOf(PropTypes.string),\n max: PropTypes.number,\n mode: ModeType,\n dispatch: PropTypes.func,\n metadata: MetadataType,\n onChange: PropTypes.func.isRequired,\n onCreate: PropTypes.func,\n attributeTypesSelectionStrategy: PropTypes.func,\n globalSearchRequestOptions: PropTypes.object,\n disableLinkClick: PropTypes.bool\n};\n\nexport default EntitySelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '328px'\n },\n paper: {\n width: '100%',\n height: '40px',\n display: 'flex',\n alignItems: 'center',\n boxShadow: 'none',\n backgroundColor: 'rgba(0,0,0,0.03)'\n },\n inputRoot: {\n flex: 1\n },\n input: {\n padding: '0 12px',\n fontSize: '14px',\n '&:placeholder': {\n color: theme.palette.text.secondary\n }\n },\n errorMessage: {\n marginTop: '8px',\n fontSize: '12px',\n color: theme.palette.error.main\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Paper as Paper} from '@material-ui/core';\nimport {InputBase as InputBase} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n onSend: (url: string) => void;\n};\n\nconst isEmptyField = (value: string) => value.trim().length === 0;\n\nexport const ImageByUrlField = ({onSend}: Props) => {\n const styles = useStyles();\n\n const [value, setValue] = useState('');\n const [error, setError] = useState<string>(null);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n const regExp = new RegExp(/^(ftp|http|https):\\/\\/[^ \"]+$/);\n const isCorrectUrl = regExp.test(newValue);\n\n setValue(newValue);\n\n if (!isCorrectUrl && !isEmptyField(newValue)) {\n setError(i18n.text('URL is not correct'));\n } else {\n setError(null);\n }\n };\n\n const handleSend = () => {\n onSend(value);\n setValue('');\n setError(null);\n };\n\n return (\n <Box className={styles.root}>\n <Paper className={styles.paper}>\n <InputBase\n value={value}\n onChange={handleChange}\n classes={{root: styles.inputRoot, input: styles.input}}\n placeholder={i18n.text('Paste an image URL here')}\n />\n <Button\n disabled={Boolean(error) || isEmptyField(value)}\n variant=\"outlined\"\n color=\"primary\"\n onClick={handleSend}\n >\n {i18n.text('Send')}\n </Button>\n </Paper>\n {error && <Typography className={styles.errorMessage}>{error}</Typography>}\n </Box>\n );\n};\n","export const IMAGE_TYPES = ['image/png', 'image/jpeg', 'image/tiff', 'image/gif', 'image/bmp'];\nexport const MAX_IMAGE_SIZE = 20;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {IMAGE_TYPES} from '../constants';\n\ntype Props = {\n className?: string;\n onAppendFile?: (file: File) => void;\n};\n\nexport const SelectImageButton = ({className, onAppendFile}: Props) => {\n const handleInput = (e: React.FormEvent<HTMLInputElement>) => {\n if (onAppendFile) {\n onAppendFile(e.currentTarget.files[0]);\n }\n };\n\n return (\n <>\n <input\n onInput={handleInput}\n style={{display: 'none'}}\n accept={IMAGE_TYPES.join(',')}\n id=\"upload-image-button\"\n type=\"file\"\n />\n <label htmlFor=\"upload-image-button\">\n <Button className={className} variant=\"contained\" color=\"primary\" component=\"span\">\n {i18n.text('Select image')}\n </Button>\n </label>\n </>\n );\n};\n","import React from 'react';\n\nconst SvgUploadIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__c\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__d\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"67.572%\" y1=\"54.952%\" x2=\"15.212%\" y2=\"13.907%\" id=\"UploadIcon_svg__e\">\n <stop stopColor=\"#000\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#000\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__f\">\n <stop stopColor=\"#B8EDFF\" offset=\"0%\" />\n <stop stopColor=\"#53ACDE\" offset=\"100%\" />\n </linearGradient>\n <circle id=\"UploadIcon_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"UploadIcon_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#UploadIcon_svg__a\" />\n </mask>\n <use fillOpacity={0.1} fill=\"#0072CE\" xlinkHref=\"#UploadIcon_svg__a\" />\n <g mask=\"url(#UploadIcon_svg__b)\">\n <g strokeWidth={1} fill=\"none\" transform=\"translate(-1 9)\">\n <path\n d=\"M0 107.268c0 35.579 28.703 64.409 64.173 64.409h139.021c29.578 0 53.497-24.035 53.497-53.635 0-28.356-21.935-51.562-49.705-53.515C199.577 27.705 167.2 0 128.346 0 97.425 0 70.59 17.582 57.171 43.274 25.027 46.767 0 74.117 0 107.268z\"\n fill=\"#FFF\"\n opacity={0.3}\n />\n <ellipse\n fill=\"url(#UploadIcon_svg__c)\"\n opacity={0.4}\n cx={64.553}\n cy={107.664}\n rx={61.43}\n ry={62.336}\n />\n <path\n d=\"M127.979 8.91c38.773 0 70.206 31.895 70.206 71.24 0 39.346-31.433 71.241-70.206 71.241-6.067 0-11.954-.78-17.57-2.249 9.688-11.019 15.574-25.551 15.574-41.478 0-33.7-26.352-61.153-59.286-62.299C78.714 23.611 101.654 8.91 127.98 8.91z\"\n fill=\"url(#UploadIcon_svg__d)\"\n opacity={0.4}\n />\n </g>\n <path\n fill=\"url(#UploadIcon_svg__e)\"\n opacity={0.12}\n d=\"M82.093 128.474l38.374 37.966-10.666 18.958 72.714 71.94 63.578-57.537v-6.11l-71.107-70.352H97.22z\"\n transform=\"translate(-1 9)\"\n />\n <path\n fill=\"url(#UploadIcon_svg__f)\"\n d=\"M151.004 128.29v57.591h-40.836V128.29H81l49.5-49.409L180 128.29z\"\n transform=\"translate(-1 9)\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgUploadIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n padding: '36px 0 29px'\n },\n isActive: {\n backgroundColor: 'rgba(0,114,206,0.12)'\n },\n icon: {\n width: '190px',\n height: '190px',\n marginBottom: '24px'\n },\n title: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '24px'\n },\n description: {\n marginBottom: '24px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useDrop, DropTargetMonitor} from 'react-dnd';\nimport {NativeTypes} from 'react-dnd-html5-backend';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectImageButton} from '../SelectImageButton/SelectImageButton';\nimport UploadIcon from '../../../icons/UploadIcon';\nimport {MAX_IMAGE_SIZE} from '../constants';\nimport {useStyles} from './styles';\n\ntype Props = {\n onAppendFile: (file: File) => void;\n className?: string;\n};\n\nexport const TargetBox = ({onAppendFile, className}: Props) => {\n const styles = useStyles();\n\n const [{canDrop, isOver}, drop] = useDrop({\n accept: [NativeTypes.FILE],\n drop: (item) => {\n if (item) {\n // TODO remove after update react-dnd\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onAppendFile(item.files[0]);\n }\n },\n collect: (monitor: DropTargetMonitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n })\n });\n\n const isActive = canDrop && isOver;\n\n return (\n <div ref={drop} className={classnames(styles.root, {[styles.isActive]: isActive}, className)}>\n <UploadIcon className={styles.icon} />\n <Typography className={styles.title}>{i18n.text('Drag an image here')}</Typography>\n <Typography className={styles.description}>\n {i18n.text(\n 'Acceptable image types would include JPG, PNG, TIFF, GIF, BMP. Maximum image size: ${MAX_IMAGE_SIZE}Mb',\n {\n MAX_IMAGE_SIZE\n }\n )}\n </Typography>\n <SelectImageButton onAppendFile={onAppendFile} />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 30px',\n boxSizing: 'border-box'\n },\n border: {\n borderBottom: `1px solid ${theme.palette.text.primary}`,\n flex: 1,\n opacity: 0.12\n },\n text: {\n padding: '0 10px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: string;\n className?: string;\n};\n\nexport const DividerWithText = ({children, className}: Props) => {\n const styles = useStyles();\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.border} />\n <Typography className={styles.text}>{children}</Typography>\n <Box className={styles.border} />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n closeIcon: {\n color: '#fff'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {Snackbar as Snackbar} from '@material-ui/core';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n error: string | null;\n onClose?: () => void;\n};\n\nexport const ErrorSnackbar = ({error, onClose}: Props) => {\n const styles = useStyles();\n\n return (\n <Snackbar\n open={Boolean(error)}\n onClose={onClose}\n message={error}\n action={\n <SmallIconButtonWithTooltip\n className={styles.closeIcon}\n tooltipTitle={i18n.text('Close')}\n icon={CloseIcon}\n onClick={onClose}\n />\n }\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n dialogPaper: {\n position: 'relative',\n maxWidth: '480px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px',\n padding: '16px'\n },\n body: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '0 8px 49px',\n textAlign: 'center'\n },\n targetBox: {\n marginBottom: '8px'\n },\n divider: {\n marginBottom: '28px'\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {uploadImage as uploadImageRequest, ImageHostingItem} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport LinearLoadIndicator from '../LinearLoadIndicator/LinearLoadIndicator';\nimport {ImageByUrlField} from './ImageByUrlField/ImageByUrlField';\nimport {TargetBox} from './TargetBox/TargetBox';\nimport {DividerWithText} from './DividerWithText/DividerWithText';\nimport {ErrorSnackbar} from './ErrorSnackbar/ErrorSnackbar';\nimport {IMAGE_TYPES, MAX_IMAGE_SIZE} from './constants';\nimport {useStyles} from './styles';\nimport {DragAndDrop} from '../DragAndDrop/DragAndDrop';\n\ntype Props = {\n open: boolean;\n onUpload: (image: ImageHostingItem) => void;\n onClose?: () => void;\n};\n\nexport const UploadImageDialog = ({open, onClose, onUpload}: Props) => {\n const styles = useStyles();\n\n const imageServicePath = useSelector(mdm.selectors.getImageServicePath) as string;\n const environment = useSelector(mdm.selectors.getEnvironment) as string;\n const tenant = useSelector(mdm.selectors.getTenant) as string;\n\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string>(null);\n\n const uploadImage = (image: File | string) => {\n setLoading(true);\n uploadImageRequest({image, imageServicePath, environment, tenant})\n .then((res) => {\n onUpload(res);\n onClose();\n })\n .catch((err) => setError(err?.errorMessage || i18n.text('Something went wrong')))\n .finally(() => setLoading(false));\n };\n\n const handleAppendImage = (image: File) => {\n const size = Number((image.size / 1024 / 1024).toFixed(2));\n const isCorrectType = IMAGE_TYPES.includes(image.type);\n\n if (size > MAX_IMAGE_SIZE) {\n setError(i18n.text('File size exceeds configured max file size.'));\n } else if (!isCorrectType) {\n setError(i18n.text('File format is not supported.'));\n } else {\n uploadImage(image);\n }\n };\n\n const handleSendImage = (url: string) => {\n uploadImage(url);\n };\n\n return (\n <DragAndDrop>\n <Dialog open={open} onClose={onClose} classes={{paper: styles.dialogPaper}}>\n <Typography className={styles.title}>{i18n.text('Add new image')}</Typography>\n <Box className={styles.body}>\n <TargetBox className={styles.targetBox} onAppendFile={handleAppendImage} />\n <DividerWithText className={styles.divider}>{i18n.text('or')}</DividerWithText>\n <ImageByUrlField onSend={handleSendImage} />\n </Box>\n {loading && <LinearLoadIndicator />}\n <ErrorSnackbar error={error} onClose={() => setError(null)} />\n </Dialog>\n </DragAndDrop>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n width: '100%',\n marginBottom: '10px'\n },\n image: ({imageMargin}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n uploadContainer: ({imageMargin, imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n border: '1px dashed #0072CE',\n boxSizing: 'border-box',\n marginRight: imageMargin,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0\n };\n },\n uploadButton: {\n width: '50px',\n height: '50px'\n },\n uploadIcon: {\n fontSize: '36px'\n }\n}));\n","import ImageAttributesLine from './ImageAttributesLine';\n\nexport default ImageAttributesLine;\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n generateUri,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n ImageHostingItem,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport Image from '../../../Image/Image';\nimport ImageActionsOverlay from '../../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {SmallIconButton} from '../../../SmallIconButton';\nimport {UploadImageDialog} from '../../../UploadImageDialog/UploadImageDialog';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {ImageRenderProps, RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n parentUri: string;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType = {} as AttributeType,\n attributeValues = [],\n onDeleteAttribute,\n onChangeAttribute,\n requestNextPageOfAttributeValues,\n parentUri,\n paging,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const defaultProfilePic = useSelector((state) =>\n mdmModule.selectors.getModifiedEntityDefaultProfilePic(state, entity.uri)\n );\n const dispatch = useDispatch();\n const [isVisibleUploadDialog, setIsVisibleUploadDialog] = useState(false);\n\n const toggleVisibilityUploadDialog = useCallback(() => {\n setIsVisibleUploadDialog((visible) => !visible);\n }, []);\n\n const handleAddAttributes = useCallback(\n (image: ImageHostingItem) => {\n const uri = generateUri(parentUri, attributeType.name);\n const attributeValue: ImageAttributeValue['value'] = {};\n for (const key in image) {\n const attribute = (attributeType.attributes || []).find(({name}) => name === key);\n if (attribute) {\n attributeValue[key] = [\n {\n uri: generateUri(uri, attribute.name),\n ov: true,\n value: image[key],\n type: attribute.uri\n }\n ];\n }\n }\n onChangeAttribute({attributeType, uri, value: attributeValue});\n },\n [onChangeAttribute, parentUri, attributeType]\n );\n\n const handleDeleteAttribute = useCallback(\n (param: AttributeItem) => {\n onDeleteAttribute(param);\n if (defaultProfilePic === param.uri) {\n const newDefaultPic = attributeValues[0]?.uri === param.uri ? attributeValues[1] : attributeValues[0];\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: newDefaultPic || ({} as ImageAttributeValue)\n })\n );\n }\n },\n [onDeleteAttribute, entity, defaultProfilePic, attributeValues]\n );\n\n const renderImageActionsOverlay = (methods: ImageRenderProps, attribute: ImageAttributeValue) => {\n const {onOpenImageGalleryDialog, onDownload, onShareLink, onSetAsDefault} = methods;\n const imageUrl = getImageAttributeOvUrl(attribute);\n const {uri} = attribute;\n\n return (\n <ImageActionsOverlay\n id={uri}\n onShareLink={() => onShareLink(imageUrl)}\n onSetAsDefault={() => onSetAsDefault(attribute)}\n onDelete={() => handleDeleteAttribute({uri, attributeType})}\n onDownload={() => onDownload([imageUrl])}\n onClick={() => onOpenImageGalleryDialog(uri)}\n />\n );\n };\n\n const renderImage: RenderImage = (methods: ImageRenderProps) => {\n const renderImage = (attribute: ImageAttributeValue = {} as ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const {onOpenImageGalleryDialog} = methods;\n\n return (\n <div className={styles.image} key={uri}>\n <Image\n src={src}\n overlay={renderImageActionsOverlay(methods, attribute)}\n onClick={() => onOpenImageGalleryDialog(uri)}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n data-reltio-id=\"reltio-attribute-value\"\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <div className={styles.root}>\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n overlay\n countFixedItems={1}\n onUpload={toggleVisibilityUploadDialog}\n onDeleteAttribute={handleDeleteAttribute}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n >\n <div className={styles.uploadContainer} onClick={toggleVisibilityUploadDialog}>\n <SmallIconButton\n className={styles.uploadButton}\n iconClassName={styles.uploadIcon}\n icon={CloudUploadIcon}\n />\n </div>\n </ImageAttributesLineCommon>\n <UploadImageDialog\n open={isVisibleUploadDialog}\n onUpload={handleAddAttributes}\n onClose={toggleVisibilityUploadDialog}\n />\n </div>\n );\n};\n\nexport default ImageAttributesLine;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n moreAttributes: {\n display: 'flex',\n paddingBottom: '6px',\n '&$dense': {\n padding: 0\n }\n },\n dense: {},\n popupContainer: {},\n moreAttributesPopup: {\n '&$popupContainer': {}\n },\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n subHeader: {\n backgroundColor: 'rgb(245, 245, 245)',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n },\n noResultsCaptionContainer: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n }\n});\n","import {AttributeType} from '@reltio/mdm-sdk';\nimport {curry, filter, map, pipe} from 'ramda';\nimport {GroupedItem} from './useMoreAttributesItems';\n\nconst filterItems = curry((filterText: string, items: AttributeType[]): AttributeType[] => {\n return filter((item: AttributeType) => item.label.toLowerCase().includes(filterText.toLowerCase()))(items);\n});\n\ntype Props = {\n attrTypes: AttributeType[];\n filter?: string;\n};\n\nconst preparedGroupedItems = ({attrTypes, filter = ''}: Props): GroupedItem[] =>\n pipe(\n filterItems(filter),\n map((attrType: AttributeType) => ({\n item: {\n id: attrType.uri,\n label: attrType.label,\n attrType\n }\n }))\n )(attrTypes);\n\nexport {preparedGroupedItems};\n","import {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport {flattenGroupedItemsData} from '../../../VirtualGroupedList/helpers';\nimport {preparedGroupedItems} from './helpers';\n\nenum GROUP_NAMES {\n parent = 'parent',\n attributes = 'attributes'\n}\n\ntype Props = {\n data: AttributeType[];\n parent?: AttributeType;\n filter?: string;\n};\n\ntype Item = {\n id: string;\n label: string;\n attrType?: AttributeType;\n};\n\nexport type GroupedItem = {\n item: Item;\n items?: GroupedItem[];\n};\n\nexport const useMoreAttributesItems = ({data, parent, filter}: Props) => {\n const hasGroups = Boolean(parent);\n\n const preparedParentGroupItem = useMemo(\n () => (hasGroups ? preparedGroupedItems({attrTypes: [parent], filter}) : []),\n [hasGroups, parent, filter]\n );\n const parentGroup: GroupedItem[] = useMemo(\n () =>\n hasGroups && preparedParentGroupItem?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.parent,\n label: i18n.text('Parent')\n },\n items: preparedParentGroupItem\n }\n ]\n : [],\n [hasGroups, preparedParentGroupItem]\n );\n\n const preparedAttributesGroupItems = useMemo(\n () =>\n preparedGroupedItems({\n attrTypes: data,\n filter\n }),\n [data, filter]\n );\n\n const attributesGroup = useMemo(\n () =>\n hasGroups && preparedAttributesGroupItems?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.attributes,\n label: i18n.text('Attributes')\n },\n items: preparedAttributesGroupItems\n }\n ]\n : preparedAttributesGroupItems,\n [hasGroups, preparedAttributesGroupItems]\n );\n\n const items = useMemo(() => flattenGroupedItemsData((parentGroup || []).concat(attributesGroup)), [\n parentGroup,\n attributesGroup\n ]);\n\n const parentGroupLength = parentGroup.length;\n const attributesGroupLength = attributesGroup.length;\n return {items, hasGroups, parentGroupLength, attributesGroupLength};\n};\n","import React, {useCallback, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport {always, any, append, ifElse, not, pipe, pluck, propEq, reject} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nimport SelectionPopup from '../../../SelectionPopup/SelectionPopup';\nimport AttributeListItem from '../../../AttributeListItem/AttributeListItem';\n\nimport VirtualGroupedList from '../../../VirtualGroupedList/VirtualGroupedList';\nimport {useKeyboardNavigation} from '../../../SelectionPopup/helpers';\nimport AddIcon from '@material-ui/icons/Add';\nimport Highlighter from '../../../Highlighter/Highlighter';\nimport {useMoreAttributesItems} from './useMoreAttributesItems';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\nconst LIST_CONTAINER_WIDTH = 320;\nconst MAX_LIST_CONTAINER_HEIGHT = 255;\nconst MIN_CONTAINER_HEIGHT = 140;\nconst CONTAINER_HEADER_HEIGHT = 112;\n\nconst MoreAttributesButton = ({label, popupTitle = label, data, parent, dense, onApply}) => {\n const styles = useStyles();\n const inputRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const togglePopupOpen = () => setIsOpen(!isOpen);\n const closePopup = () => setIsOpen(false);\n\n const [filter, setFilter] = useState('');\n const clearFilter = () => setFilter('');\n\n const [selectedItems, setSelectedItems] = useState([]);\n const clearSelectedItems = () => setSelectedItems([]);\n\n const {items, hasGroups, parentGroupLength, attributesGroupLength} = useMoreAttributesItems({data, parent, filter});\n\n const addSelectedAttributes = () => {\n if (selectedItems.length > 0) {\n onApply(pluck('attrType', selectedItems));\n }\n };\n\n const handleListItemClick = useCallback(\n (item, checked) => {\n setSelectedItems(ifElse(always(checked), append(item), reject(propEq('id', item.id)))(selectedItems));\n },\n [selectedItems]\n );\n\n const getItemSize = useCallback((i, item) => (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT), []);\n\n const handleSearchOnEnter = useCallback(\n ({item}) => {\n handleListItemClick(item, not(any(propEq('id', item.id))(selectedItems)));\n },\n [handleListItemClick, selectedItems]\n );\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems\n });\n\n const focusIndexRef = useRef(null);\n focusIndexRef.current = focusIndex;\n\n const groupsCount = hasGroups ? (parentGroupLength ? 1 : 0) + (attributesGroupLength ? 1 : 0) : 0;\n const itemsCount = items.length - groupsCount;\n\n const listHeight = Math.min(\n MAX_LIST_CONTAINER_HEIGHT,\n ITEM_HEIGHT * itemsCount + ITEM_GROUP_TITLE_HEIGHT * groupsCount\n );\n const containerHeight = Math.max(MIN_CONTAINER_HEIGHT, listHeight + CONTAINER_HEADER_HEIGHT);\n\n const listItemRenderer = useCallback(\n (style, {item, level = 0}, index) => {\n const isChecked = any(propEq('id', item.id))(selectedItems);\n const isFocused = focusIndexRef.current === index;\n\n return (\n <AttributeListItem\n key={item.uri}\n onClick={handleListItemClick}\n checked={isChecked}\n level={level}\n data={item}\n label={<Highlighter text={item.label} highlight={filter} />}\n labelInText={item.label}\n style={style}\n isFocused={isFocused}\n isRequired={!!item.attrType?.required}\n LogoIcon={item.LogoIcon}\n />\n );\n },\n [filter, handleListItemClick, selectedItems]\n );\n\n const renderGroupTitle = useCallback(\n (style, item) => (\n <ListItem component={'div'} className={styles.subHeader} style={style} key={`group-${item.item.id}`}>\n {item.item.label}\n </ListItem>\n ),\n []\n );\n\n return (\n <div className={classnames(styles.moreAttributes, {[styles.dense]: dense})}>\n <Button color=\"primary\" onClick={togglePopupOpen} ref={inputRef} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{label}</div>\n </Button>\n <SelectionPopup\n open={isOpen}\n className={classnames(styles.moreAttributesPopup, styles.popupContainer)}\n anchorEl={inputRef.current}\n onClose={pipe(addSelectedAttributes, closePopup, clearFilter, clearSelectedItems)}\n onSearch={setFilter}\n containerHeight={containerHeight}\n title={popupTitle}\n containerWidth={LIST_CONTAINER_WIDTH}\n searchInputOnKeyDown={handleKeyDown}\n >\n <VirtualGroupedList\n getItemSize={getItemSize}\n renderItem={listItemRenderer}\n renderGroupTitle={renderGroupTitle}\n items={items}\n height={listHeight}\n containerWidth={LIST_CONTAINER_WIDTH}\n focusIndex={focusIndex}\n />\n {items.length === 0 && (\n <div className={styles.noResultsCaptionContainer}>\n <Typography variant=\"caption\" display=\"block\" gutterBottom>\n {i18n.text('No results found')}\n </Typography>\n </div>\n )}\n </SelectionPopup>\n </div>\n );\n};\n\nMoreAttributesButton.propTypes = {\n label: PropTypes.string,\n popupTitle: PropTypes.string,\n data: PropTypes.array,\n parent: PropTypes.object,\n dense: PropTypes.bool,\n onApply: PropTypes.func\n};\n\nexport default MoreAttributesButton;\n","import React, {memo} from 'react';\nimport {evaluateDeepEntityLabel, getLabel, NestedAttributeType} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\n\nconst NestedAttribute = (props) => {\n const {attributeValue, attributeType} = props;\n const label = evaluateDeepEntityLabel(attributeValue, attributeType.dataLabelPattern);\n\n return (\n <ComplexAttribute\n label={getLabel(label)}\n attributeTypesList={attributeType.attributes || attributeType.analyticsAttributes}\n {...props}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n item: {\n marginBottom: '20px'\n },\n dense: {\n marginBottom: 0\n }\n});\n","import React, {memo, useMemo, useCallback, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {identity, pipe, isEmpty} from 'ramda';\nimport {\n evaluateDeepEntityLabel,\n ReferenceAttributeType,\n referencedEntityAttributeTypesSelectionStrategy,\n getEntityType,\n getReferencedEntityFromAttrValue,\n getReferencedRelationFromAttrValue,\n getReferencedEntityUri,\n getReferencedEntityTypeUri,\n getReferencedEntityTypeUriFromAttrType,\n getReferencedRelationAttrTypesUris,\n findAttributeTypeByUri,\n getCreatableAttributeTypes,\n createTemporaryEntity,\n convertReferencedEntityForAttrValue,\n createReferencedRelationForAttrValue,\n addReferencedRelationCrosswalks,\n getReferencedEntityUriFromAttrValue,\n checkCanEditAttribute,\n checkMetadataForCreate,\n isReltioCrosswalk,\n getErrorMessage,\n EntityType,\n MetadataType,\n getErrorId,\n getReferencedEntityActiveError,\n isTempUri,\n getLabel\n} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport EntitySelector from '../EntitySelector/EntitySelector';\nimport {ErrorWrapper} from '../../../index';\nimport {useStyles} from './styles';\n\nconst ReferenceAttribute = (props) => {\n const styles = useStyles();\n const {\n modifiedEntity,\n metadata,\n globalSearchRequestOptions,\n onDeleteModifiedEntity,\n onUpdateModifiedEntity,\n onDeactivateError,\n ...ownProps\n } = props;\n const {attributeValue, attributeType, mode, crosswalks, errors, onChangeAttribute} = ownProps;\n const initialAttributeValue = useRef(attributeValue);\n const referencedEntity = getReferencedEntityFromAttrValue(attributeValue);\n const referencedRelation = getReferencedRelationFromAttrValue(attributeValue);\n const referencedEntityTypeUri = getReferencedEntityTypeUriFromAttrType(attributeType);\n const referencedEntityType = getEntityType(metadata, referencedEntityTypeUri);\n const label = modifiedEntity\n ? evaluateDeepEntityLabel(modifiedEntity, referencedEntityType.dataLabelPattern)\n : attributeValue.label;\n const entityTypesUris = useMemo(() => [referencedEntityTypeUri], [referencedEntityTypeUri]);\n\n const allCrosswalks = useMemo(() => addReferencedRelationCrosswalks(crosswalks, referencedRelation), [\n crosswalks,\n referencedRelation\n ]);\n\n const referencedEntityMissedError = useMemo(() => getReferencedEntityActiveError(attributeValue, errors), [\n attributeValue,\n errors\n ]);\n\n const selectedEntity = useMemo(\n () =>\n referencedEntity && {\n entityUri: getReferencedEntityUri(referencedEntity),\n entityType: getReferencedEntityTypeUri(referencedEntity),\n entityLabel: attributeValue.label\n },\n [referencedEntity, attributeValue.label]\n );\n\n const editableAttrTypes = useMemo(\n () =>\n getReferencedRelationAttrTypesUris(attributeType)\n .map((attrTypeUri) => findAttributeTypeByUri(metadata, attrTypeUri))\n .filter(identity),\n [attributeType, metadata]\n );\n\n const newEntityAttrTypesSelectionStrategy = useCallback(\n (entityType) => referencedEntityAttributeTypesSelectionStrategy(attributeType, entityType),\n [attributeType]\n );\n\n const onChangeEntity = useCallback(\n (entity) => {\n if (modifiedEntity) {\n onDeleteModifiedEntity(modifiedEntity.uri);\n }\n const initialAttrValue = initialAttributeValue.current;\n const isInitialEntity =\n !isEmpty(entity) && entity.uri === getReferencedEntityUriFromAttrValue(initialAttrValue);\n const modifiedValue = {\n ...attributeValue,\n label: entity.label,\n refEntity: isInitialEntity ? initialAttrValue.refEntity : convertReferencedEntityForAttrValue(entity),\n refRelation: isInitialEntity\n ? initialAttrValue.refRelation\n : createReferencedRelationForAttrValue(attributeValue)\n };\n onChangeAttribute({value: modifiedValue, attributeType, uri: attributeValue.uri});\n if (referencedEntityMissedError) {\n onDeactivateError(getErrorId(referencedEntityMissedError));\n }\n },\n [\n attributeValue,\n attributeType,\n modifiedEntity,\n onChangeAttribute,\n onDeleteModifiedEntity,\n onDeactivateError,\n referencedEntityMissedError\n ]\n );\n\n const onCreateEntity = useCallback(\n (entityTypeUri, initValue) => {\n const newEntityAttrTypes = pipe(\n newEntityAttrTypesSelectionStrategy,\n getCreatableAttributeTypes(mode)\n )(referencedEntityType);\n const newEntity = createTemporaryEntity({\n entityTypeUri,\n initValue,\n attributeTypes: newEntityAttrTypes,\n metadata,\n mode\n });\n onChangeEntity(newEntity);\n onUpdateModifiedEntity(newEntity);\n },\n [\n newEntityAttrTypesSelectionStrategy,\n mode,\n referencedEntityType,\n metadata,\n onChangeEntity,\n onUpdateModifiedEntity\n ]\n );\n\n const canChangeReferencedEntity = useMemo(\n () =>\n checkCanEditAttribute({\n attributeType,\n attributeValue,\n mode,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, crosswalks]\n );\n const canCreateReferencedEntity = useMemo(() => checkMetadataForCreate(mode, referencedEntityType), [\n mode,\n referencedEntityType\n ]);\n\n const errorMessage = getErrorMessage(referencedEntityMissedError);\n\n return (\n <ComplexAttribute\n {...ownProps}\n label={getLabel(label)}\n attributeTypesList={editableAttrTypes}\n crosswalks={allCrosswalks}\n metadata={metadata}\n >\n <ErrorWrapper errorMessage={errorMessage}>\n <EntitySelector\n className={classnames(styles.item, {\n [styles.dense]: errorMessage || (selectedEntity && isTempUri(selectedEntity.entityUri))\n })}\n entity={selectedEntity || {}}\n entityTypesUris={entityTypesUris}\n max={20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n mode={mode}\n onChange={canChangeReferencedEntity ? onChangeEntity : undefined}\n onCreate={canCreateReferencedEntity ? onCreateEntity : undefined}\n metadata={metadata}\n attributeTypesSelectionStrategy={newEntityAttrTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </ComplexAttribute>\n );\n};\n\nReferenceAttribute.propTypes = {\n ...ReferenceAttributeType,\n modifiedEntity: EntityType,\n metadata: MetadataType,\n globalSearchRequestOptions: PropTypes.object,\n onDeleteModifiedEntity: PropTypes.func,\n onUpdateModifiedEntity: PropTypes.func,\n onDeactivateError: PropTypes.func\n};\n\nexport default memo(ReferenceAttribute);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport {isTempUri, getReferencedEntityUriFromAttrValue} from '@reltio/mdm-sdk';\n\nconst mapStateToProps = (state, ownProps) => {\n const entityUri = getReferencedEntityUriFromAttrValue(ownProps.attributeValue);\n return {\n modifiedEntity: isTempUri(entityUri) ? mdmModule.selectors.getModifiedEntity(state, entityUri) : null,\n metadata: mdmModule.selectors.getMetadata(state),\n globalSearchRequestOptions: mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n };\n};\n\nconst mapDispatchToProps = {\n onDeleteModifiedEntity: profile.modifiedEntities.actions.entityDeleted,\n onUpdateModifiedEntity: profile.modifiedEntities.actions.entityCreated,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReferenceAttribute);\n","import {defaultTo, isNil, map, path, pipe, prepend, reject, uniq} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n areOneHierarchyUris,\n DependentLookupsParentForApi,\n DependentLookupsStructureNode,\n filterRelatedParentValuesForDependentLookupValueUri,\n getAttributeValuePath,\n getBaseUri\n} from '@reltio/mdm-sdk';\n\nimport {ExtendedParentValue} from '../types';\n\nexport const getParents = (state, valueUri: string, node: DependentLookupsStructureNode) => {\n const parentNodesValues: ExtendedParentValue[] = node.parents.flatMap((type) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, type);\n return parentNode.values.map((value) => ({\n ...value,\n type,\n dependentLookupCode: parentNode.attrType.dependentLookupCode\n }));\n });\n const modifiedEntities = mdmModule.selectors.getModifiedEntities(state);\n const entityUri = mdmModule.selectors.getEntityUri(state);\n const connections = mdmModule.selectors.getAllRelationsToAddAndEdit(state);\n const metadata = mdmModule.selectors.getMetadata(state);\n const ownParentNodesValues = filterRelatedParentValuesForDependentLookupValueUri<ExtendedParentValue>({\n parentValues: parentNodesValues,\n valueUri,\n entityUri,\n modifiedEntities,\n connections\n });\n const possibleParentBaseTypeUris: string[] = pipe(\n getAttributeValuePath,\n defaultTo([]),\n map(pipe(path(['valueType', 'uri']), getBaseUri)),\n prepend(modifiedEntities[entityUri]?.type),\n reject(isNil),\n uniq\n )(\n {\n entityUri,\n entitiesMap: modifiedEntities,\n connections,\n metadata\n },\n valueUri\n );\n const neededParentsAttributeTypes = node.parents\n .filter((typeUri) => possibleParentBaseTypeUris.some(areOneHierarchyUris(typeUri)))\n .map((typeUri) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, typeUri);\n return parentNode.attrType;\n });\n const missedParentsAttributeTypes = neededParentsAttributeTypes.filter(\n (attrType) => !ownParentNodesValues.some(({type, value}) => value && type === attrType.uri)\n );\n const parents = Object.values<DependentLookupsParentForApi>(\n ownParentNodesValues.reduce(\n (typesMap, parent) => ({\n ...typesMap,\n [parent.dependentLookupCode]: {\n type: parent.dependentLookupCode,\n codeValues: uniq([parent.value, ...(typesMap[parent.dependentLookupCode]?.codeValues || [])])\n .filter(Boolean)\n .sort()\n }\n }),\n {}\n )\n );\n return {parents, missedParentsAttributeTypes};\n};\n","import {equals} from 'ramda';\nimport {DependentLookupEditorContext} from '../types';\n\nconst DLEditorContextCache: {\n [valueUri: string]: DependentLookupEditorContext;\n} = {};\n\nexport const fromCache = (valueUri, context) => {\n const cachedContext = DLEditorContextCache[valueUri];\n if (equals(context, cachedContext)) {\n return cachedContext;\n } else {\n if (equals(cachedContext?.parents, context.parents)) {\n context.parents = cachedContext.parents;\n }\n DLEditorContextCache[valueUri] = context;\n return context;\n }\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst marginBottom = 10;\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n errorWrapper: {\n alignSelf: 'stretch'\n },\n editor: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: `${marginBottom}px`\n },\n 'editor-value': {\n flex: '1 1 auto'\n },\n 'editor-read-only-value': {\n marginLeft: '12px',\n display: 'flex',\n alignItems: 'center'\n },\n 'editor-actions': {\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '8px'\n },\n addButton: {\n marginRight: '-8px'\n },\n button: {\n color: theme.palette.text.secondary\n },\n placeholder: {\n height: `${40 + marginBottom}px`\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport AddIcon from '@material-ui/icons/Add';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {\n AttributeErrorType,\n AttributeTypeType,\n attributeUriToSearchUri,\n checkCanCreateAttribute,\n checkCanDeleteAttribute,\n checkCanEditAttribute,\n ErrorType,\n getAttributeValue,\n getAttrDataTypeDefinition,\n getErrorId,\n getErrorMessage,\n getErrorType,\n isDependentLookupAttrType,\n isEditableMode as checkIsEditableMode,\n ModeType,\n SimpleAttributeValueType\n} from '@reltio/mdm-sdk';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport DataTypeValueEditor from '../../../editors/DataTypeValueEditor/DataTypeValueEditor';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {attributeValueToEditorValue, prepareChangeData} from './utils';\nimport withAsyncMount from '../../../../HOCs/withAsyncMount/withAsyncMount';\nimport {getDependentLookupEditorContext} from './selectors/getDependentLookupEditorContext';\n\nimport {useStyles} from './styles';\n\nconst AsyncMountPlaceholder = () => {\n const styles = useStyles();\n return <div className={styles.placeholder} />;\n};\n\nconst SimpleAttributeEditor = ({\n className,\n attributeValue,\n attributeType,\n isReltioCrosswalk,\n ownError,\n mode,\n onAddOneMore,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n state,\n ...otherProps\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const isEditableMode = checkIsEditableMode(mode);\n const dataTypeDefinition = getAttrDataTypeDefinition(attributeType);\n const value = attributeValueToEditorValue(attributeValue, dataTypeDefinition);\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n const canEdit = checkCanEditAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const canDelete = checkCanDeleteAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const showToEdit = canEdit && isEditableMode;\n const errorMessage = getErrorMessage(ownError);\n const dependentLookupEditorContext = useSelector((state) =>\n isDependentLookupAttrType(attributeType)\n ? getDependentLookupEditorContext(state, attributeValue, attributeType?.uri)\n : null\n );\n const onDelete = () => {\n onDeleteAttribute({uri: attributeValue.uri, attributeType});\n if (getErrorType(ownError) !== ErrorType.missed) {\n deactivateError();\n }\n };\n\n const deactivateError = () => {\n if (ownError) {\n onDeactivateError(getErrorId(ownError));\n }\n };\n\n const showAddButton = !!onAddOneMore && canCreate && !attributeType.singleValue;\n const showDeleteButton = !deleted && !!onDeleteAttribute && canDelete;\n const hasError = !!errorMessage;\n const deletedProps = deleted ? {disabled: true} : {};\n\n return (\n <div className={classnames(styles.editor, className)}>\n <ErrorWrapper errorMessage={errorMessage} className={styles.errorWrapper}>\n <div\n className={classnames(\n styles['editor-value'],\n {[styles.deleted]: deleted},\n {[styles['editor-read-only-value']]: !showToEdit}\n )}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {showToEdit ? (\n <DataTypeValueEditor\n fieldName={attributeUriToSearchUri(attributeType.uri)}\n value={value}\n dataTypeDefinition={dataTypeDefinition}\n error={hasError}\n onChange={pipe(\n prepareChangeData(attributeValue, attributeType),\n onChangeAttribute,\n deactivateError\n )}\n fullWidth\n {...dependentLookupEditorContext}\n {...otherProps}\n {...deletedProps}\n />\n ) : (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={dataTypeDefinition}\n />\n )}\n </div>\n </ErrorWrapper>\n <div className={styles['editor-actions']}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {showAddButton && (\n <SmallIconButton\n icon={AddIcon}\n onClick={onAddOneMore}\n size=\"L\"\n className={classnames(styles.addButton, styles.button)}\n />\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && (\n <SmallIconButton className={styles.button} icon={DeleteIcon} onClick={onDelete} size=\"L\" />\n )}\n </div>\n </div>\n );\n};\n\nSimpleAttributeEditor.propTypes = {\n className: PropTypes.string,\n attributeValue: SimpleAttributeValueType,\n attributeType: AttributeTypeType,\n ownError: AttributeErrorType,\n isReltioCrosswalk: PropTypes.bool,\n state: PropTypes.oneOf(['deleted', 'edited']),\n mode: ModeType,\n onAddOneMore: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeactivateError: PropTypes.func,\n additionalControlsRenderer: PropTypes.func\n};\n\nexport default memo(withAsyncMount(SimpleAttributeEditor, AsyncMountPlaceholder));\n","import {DependentLookupsStructureNode, isAutopopulationEnabled, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\n\nimport {DependentLookupEditorContext} from './types';\nimport {getParents} from './helpers/parents';\nimport {buildMissedParentsMessage} from './helpers/missedParentsMessage';\nimport {fromCache} from './helpers/cache';\n\nexport const getDependentLookupEditorContext = (\n state,\n attributeValue: SimpleAttributeValue,\n attributeTypeUri: string\n) => {\n const node: DependentLookupsStructureNode = mdmModule.selectors.getDependentLookupsStructureNode(\n state,\n attributeTypeUri\n );\n if (node) {\n const valueUri = attributeValue.uri;\n const {parents, missedParentsAttributeTypes} = getParents(state, valueUri, node);\n const {isBlocked = false} = mdmModule.selectors.getDependentLookupEditorState(state, valueUri) || {};\n const missedParentsMessage = buildMissedParentsMessage(missedParentsAttributeTypes);\n const autocompleteConfig = mdmModule.selectors.getLookupAutocomplete(state);\n const autopopulationEnabled = isAutopopulationEnabled(autocompleteConfig, attributeTypeUri);\n const isEmptyValue = !attributeValue?.lookupCode && !attributeValue?.value;\n const placeholder =\n (isEmptyValue && isBlocked && i18n.text('Populating values...')) || missedParentsMessage || '';\n const context: DependentLookupEditorContext = {\n parents,\n disabled: !!missedParentsMessage || isBlocked,\n placeholder,\n autopopulationId: autopopulationEnabled ? valueUri : null\n };\n if (placeholder) {\n context.value = null;\n }\n return fromCache(valueUri, context);\n }\n};\n","import {pipe, prop} from 'ramda';\nimport i18n from 'ui-i18n';\n\nconst joinWords = (words) =>\n words.reduce((result, word, i) => [result, word].join(i === words.length - 1 ? ` ${i18n.text('and')} ` : ', '));\n\nexport const buildMissedParentsMessage = (missedAttributeTypes) =>\n missedAttributeTypes.length\n ? i18n.text('Please select value for ${labels} ${attributes}.', {\n labels: joinWords(missedAttributeTypes.map(pipe(prop('label'), (label) => `'${label}'`))),\n attributes: missedAttributeTypes.length === 1 ? i18n.text('attribute') : i18n.text('attributes')\n })\n : '';\n","import moment from 'moment';\nimport {DataTypes, getAttrDataTypeDefinition, parseBoolean} from '@reltio/mdm-sdk';\nimport {curry} from 'ramda';\nimport {utils} from '@reltio/mdm-sdk';\n\nconst attributeValueToEditorValue = (attributeValue = {}, {type}) => {\n const {value, lookupCode} = attributeValue;\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED: {\n return parseBoolean(value);\n }\n case DataTypes.TYPE_DATE:\n return (value && utils.dates.toLocalDate(value)) || null;\n case DataTypes.TYPE_LOCAL_DATE:\n case DataTypes.TYPE_TIMESTAMP:\n case DataTypes.TYPE_ACTIVENESS_DATE: {\n return (value && new Date(value)) || null;\n }\n case DataTypes.TYPE_DEPENDENT_LOOKUP:\n case DataTypes.TYPE_LOOKUP: {\n return {value, lookupCode};\n }\n default:\n return value;\n }\n};\n\nconst editorValueToAttributeValue = (attributeType, editorValue) => {\n const {type} = getAttrDataTypeDefinition(attributeType);\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED:\n return editorValue.toString();\n case DataTypes.TYPE_DATE:\n return (editorValue && moment(editorValue).format('YYYY-MM-DD')) || '';\n case DataTypes.TYPE_TIMESTAMP: {\n return (editorValue && moment(editorValue).format()) || '';\n }\n case DataTypes.TYPE_ACTIVENESS_DATE:\n case DataTypes.TYPE_LOCAL_DATE:\n return editorValue && editorValue.valueOf();\n default:\n return editorValue || '';\n }\n};\n\nconst prepareChangeData = curry((attributeValue, attributeType, editorValue) => {\n const value = editorValueToAttributeValue(attributeType, editorValue);\n return {\n value,\n uri: attributeValue.uri,\n attributeType\n };\n});\n\nexport {attributeValueToEditorValue, editorValueToAttributeValue, prepareChangeData};\n","import React from 'react';\n\nexport const HasDeletionsContext = React.createContext<{\n hasDeletionsMap: {[attrTypeUri: string]: boolean};\n setHasDeletions: (attrTypeUri: string, value: boolean) => void;\n }>(null);\n","import React from 'react';\n\nexport const PinnedAttributesContext = React.createContext<string[]>(null);\n","import {\n __,\n concat,\n defaultTo,\n flatten,\n includes,\n isNil,\n partition,\n path,\n pipe,\n props,\n propEq,\n reject,\n values\n} from 'ramda';\nimport {\n AttributeType,\n EntityAttrTypes,\n getEntityType,\n Metadata,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\n\nexport const getFilteredAttrTypes = (\n metadata: Metadata,\n type: string,\n includeUris: string[],\n excludeUris: string[]\n) => {\n const attrTypes = pipe(\n getEntityType,\n defaultTo({}),\n props(['attributes', 'analyticsAttributes']),\n reject(isNil),\n flatten,\n concat(__, pipe(values, reject(propEq('uri', EntityAttrTypes.id.uri)))(EntityAttrTypes))\n )(metadata, type);\n\n return includeUris.length\n ? attrTypes.filter(({uri}) => includeUris.includes(uri))\n : attrTypes.filter(({uri}) => !excludeUris.includes(uri));\n};\n\ntype PagersData = {\n attrType: AttributeType;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue | string | number)[];\n};\n\nexport const splitPagersData = (\n alwaysVisibleTypeUris: string[],\n pagersData: PagersData[]\n): [PagersData[], PagersData[]] =>\n partition(pipe(path(['attrType', 'uri']), includes(__, alwaysVisibleTypeUris)), pagersData);\n","import KeyboardArrowUp from '@material-ui/icons/KeyboardArrowUp';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n};\n\nconst ShowLess = ({onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowUp className={styles['svg-icon__root']} />\n {i18n.text('Show less')}\n </Link>\n );\n};\n\nexport default ShowLess;\n","import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n moreNumber?: number;\n valueNumber?: number;\n onClick: () => void;\n};\n\nconst ShowMore = ({moreNumber, valueNumber, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowDownIcon className={styles['svg-icon__root']} />\n {moreNumber && valueNumber\n ? i18n.text('Show ${moreNumber} more of remaining ${valueNumber} value', {moreNumber, valueNumber})\n : i18n.text('Show more')}\n </Link>\n );\n};\n\nexport default ShowMore;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n }\n});\n","import ReadModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return ReadModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport SimpleAttribute from '../SimpleAttribute';\nimport NestedAttribute from '../NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class ReadModeAttributesFactory {\n static build(attributeType, props = {}) {\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return <SimpleAttribute {...props} />;\n }\n }\n}\n","import React, {memo, useMemo, useState} from 'react';\nimport {path} from 'ramda';\nimport {AttributeType, Entity, getAttributesListForReadMode, Relation} from '@reltio/mdm-sdk';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport AttributesPager from '../AttributesPager';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\n\ntype Props = {\n attrTypes: AttributeType[];\n entity: Partial<Entity> | Partial<Relation>;\n parentUri?: string;\n drawLines?: boolean;\n children?: React.ReactNode;\n className?: string;\n max?: number;\n alwaysVisibleTypeUris?: string[];\n showNonOv?: boolean;\n};\n\nconst AttributesList = ({\n attrTypes,\n entity,\n parentUri,\n drawLines,\n children,\n className,\n max,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n showNonOv\n}: Props) => {\n const [visibleValuesCount, setVisibleValuesCount] = useState(max || Infinity);\n const pagersData = useMemo(() => getAttributesListForReadMode(attrTypes, entity, showNonOv), [\n attrTypes,\n entity,\n showNonOv\n ]);\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const visibleAttributePagersData = regularPagersData.slice(0, visibleValuesCount);\n const showMore = max && visibleAttributePagersData.length < regularPagersData.length;\n const showLess =\n max && visibleAttributePagersData.length >= regularPagersData.length && max < visibleAttributePagersData.length;\n\n const decoratorProps = {\n enabled: drawLines\n };\n\n const onShowMore = () => {\n setVisibleValuesCount(Infinity);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n {visibleAttributePagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], entity.attributes)}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n ))}\n {showMore && <ShowMore onClick={onShowMore} />}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default memo(AttributesList);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst fontSize = '13px';\nconst lineHeight = '15px';\n\nconst commonStyles = {\n titleRow: {\n display: 'block',\n minHeight: '16px',\n textIndent: '-1em',\n paddingLeft: '1em'\n },\n title: {\n whiteSpace: 'nowrap'\n },\n ovIcon: {\n marginLeft: '8px',\n marginRight: '-3px',\n marginTop: '-1px',\n textIndent: 0\n }\n};\n\nexport const useStyles = makeStyles({\n paddingWrapper: {\n paddingTop: '3px',\n paddingBottom: '5px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n },\n paddingWrapperWithLines: {\n paddingBottom: '1px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n }\n});\n\nexport const useOneLineStyles = makeStyles({\n wrapper: {\n fontSize,\n lineHeight,\n flex: 1\n },\n collaborationWrapper: {\n display: 'flex',\n alignItems: 'start',\n minHeight: '18px'\n },\n attribute: {\n marginLeft: '8px',\n paddingLeft: '4px',\n paddingRight: '4px',\n display: 'inline',\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n titleIcon: {\n width: '16px',\n height: '16px',\n marginBottom: '-3px',\n marginRight: '8px',\n marginLeft: '1px',\n color: 'rgba(0, 0, 0, 0.38)'\n },\n ...commonStyles\n});\n\nexport const useMultiLineStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n fontSize,\n lineHeight\n },\n attribute: {\n '&:last-child': {\n marginBottom: 0\n },\n paddingLeft: '4px',\n paddingRight: '4px',\n marginLeft: '5px',\n marginBottom: '4px',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n attributes: {\n alignSelf: 'stretch'\n },\n ...commonStyles,\n titleRow: {\n ...commonStyles.titleRow,\n marginBottom: '3px'\n }\n});\n","import React from 'react';\nimport {\n AttributeType,\n AttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isRelationAttrType\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport Title from '../../../Title/Title';\nimport OvIcon from '../../OvIcon';\nimport Attribute from '../AttributesFactory/Attribute';\nimport {useOneLineStyles} from './styles';\n\ntype Props = {\n value: AttributeValue;\n attributeType: AttributeType;\n nonVisibleValues: AttributeValue[];\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n totalNonVisibleValues: number;\n};\n\nconst OneLineRenderer = ({\n value,\n nonVisibleValues,\n attributeType,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useOneLineStyles();\n const {label} = attributeType;\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={classnames(styles.collaborationWrapper, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n <Attribute\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n inlined\n />\n </div>\n <CommentsContainer\n uri={value.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: value.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default OneLineRenderer;\n","import React, {useState} from 'react';\nimport {min} from 'ramda';\nimport classnames from 'classnames';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {AttributeType, NestedAttributeValue, ReferenceAttributeValue, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport {useMultiLineStyles} from './styles';\n\nimport Attribute from '../AttributesFactory/Attribute';\nimport Title from '../../../Title/Title';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport OvIcon from '../../OvIcon';\n\ntype Props = {\n max: number;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n attributeType: AttributeType;\n totalVisibleValues: number;\n totalNonVisibleValues: number;\n nonVisibleValues: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n parentUri: string;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n};\n\nconst MultiLineRenderer = ({\n max,\n values,\n nonVisibleValues,\n totalVisibleValues,\n attributeType,\n parentUri,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useMultiLineStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n const {label} = attributeType;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.titleRow}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n <div className={styles.attributes}>\n {shownValues.map((value) => (\n <Attribute\n key={value.uri}\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n />\n ))}\n </div>\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default MultiLineRenderer;\n","import React, {Fragment} from 'react';\n\ntype Props = {\n className?: string;\n values: string[];\n Component: React.ElementType;\n dataReltioId?: string;\n};\n\nconst SpecialAttributesArray = ({className, values, Component, dataReltioId}: Props) => {\n return (\n <div className={className} data-reltio-id={dataReltioId}>\n {values.map((value, index) => (\n <Fragment key={value}>\n <Component value={value} />\n {index < values.length - 1 && ', '}\n </Fragment>\n ))}\n </div>\n );\n};\n\nexport default SpecialAttributesArray;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nexport const useCommonStyles = makeStyles({\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n});\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getRoleLabel, Metadata} from '@reltio/mdm-sdk';\n\nimport {HistoryDiffContext} from '../../../../../contexts/HistoryAppearanceContext';\nimport {\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '../../helpers/historyAppearance';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Role = ({value}: Props) => {\n const styles = useCommonStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('roles', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return <span className={styles[historyClassName]}>{getRoleLabel(metadata, value)}</span>;\n};\n\nexport default Role;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Role from './Role';\n\ntype Props = {\n className?: string;\n values: string[];\n};\n\nconst Roles = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Role}\n />\n);\n\nexport default Roles;\n","import React, {useContext} from 'react';\nimport InternalLink from '../../../../InternalLink/InternalLink';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getDataTenantEntityUri, getTagLink} from '@reltio/mdm-sdk';\n\nimport {EntityContext, HistoryDiffContext} from '../../../../../contexts';\nimport {\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '../../helpers/historyAppearance';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Tag = ({value}: Props) => {\n const styles = useCommonStyles();\n const uiPath: string = useSelector(mdmModule.selectors.getUIPath);\n const ownEntity: Entity = useContext(EntityContext);\n const currentEntity: Entity = useSelector(mdmModule.selectors.getEntity);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('tags', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const entity = ownEntity || currentEntity;\n\n return (\n <InternalLink\n className={styles[historyClassName]}\n href={getTagLink({\n uiPath,\n tag: value,\n entityUri: entity.dataTenant ? getDataTenantEntityUri(entity) : entity.uri\n })}\n >\n {value}\n </InternalLink>\n );\n};\n\nexport default Tag;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Tag from './Tag';\n\ntype Props = {\n className?: string;\n values: string[];\n dataReltioId?: string;\n};\n\nconst Tags = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Tag}\n />\n);\n\nexport default Tags;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {AttributeType, EntityAttrTypes} from '@reltio/mdm-sdk';\nimport TagIcon from '@material-ui/icons/LocalOffer';\n\nimport {useOneLineStyles} from './styles';\n\nimport Title from '../../../Title/Title';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Roles from '../SpecialAttributes/Roles';\nimport Tags from '../SpecialAttributes/Tags';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n};\n\nconst SpecialRenderer = ({values, attributeType}: Props) => {\n const styles = useOneLineStyles();\n const {label} = attributeType;\n\n const renderIcon = (className) => {\n return attributeType.uri === EntityAttrTypes.tags.uri ? <TagIcon className={className} /> : null;\n };\n\n const renderValue = (className) => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags className={className} values={values as string[]} />;\n case EntityAttrTypes.roles.uri: {\n return <Roles className={className} values={values as string[]} />;\n }\n default: {\n //startDate, endDate, \"crosswalk\" fake nested subattibutes\n return (\n <Attribute\n className={className}\n attributeValue={{value: values[0]}}\n attributeType={attributeType}\n inlined\n />\n );\n }\n }\n };\n\n return (\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n {renderIcon(styles.titleIcon)}\n <Title label={label} className={styles.title} data-reltio-id=\"reltio-attribute-label\" />\n {renderValue(styles.attribute)}\n </div>\n );\n};\n\nexport default SpecialRenderer;\n","import classnames from 'classnames';\nimport React, {memo} from 'react';\nimport {always, cond, has, ifElse, partition, prop, T} from 'ramda';\nimport {\n AttributeType,\n isComplexAttribute,\n isImage,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n isSpecialAttribute,\n isOv,\n ImageAttributeValue,\n AttributeValue\n} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {useStyles} from './styles';\nimport Title from '../../../Title/Title';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport OneLineRenderer from './OneLineRenderer';\nimport MultiLineRenderer from './MultiLineRenderer';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport SpecialRenderer from './SpecialRenderer';\n\nconst RENDERER_TYPES = {\n oneLine: 'oneLine',\n multiLine: 'multiLine',\n imageLine: 'imageLine',\n special: 'special'\n};\n\ntype Props = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | string\n | number\n | ImageAttributeValue\n | AttributeValue\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n parentUri?: string;\n drawLines: boolean;\n max?: number;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv?: boolean;\n};\n\nconst AttributesPager = ({\n values,\n attributeType,\n drawLines,\n paging = {},\n parentUri,\n max = Infinity,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n const partitionByOv = partition(isOv);\n if (!values || !values.length) {\n return null;\n }\n const [ovValues, nonOvValues] = partitionByOv(values);\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(visibleValues.length))(paging);\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n const isOneLineRender = totalVisibleValues === 1 && !isComplexAttribute(attributeType);\n\n const render = () => {\n const type = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [always(isOneLineRender), always(RENDERER_TYPES.oneLine)],\n [T, always(RENDERER_TYPES.multiLine)]\n ])(attributeType);\n switch (type) {\n case RENDERER_TYPES.oneLine:\n return (\n <OneLineRenderer\n value={visibleValues[0]}\n nonVisibleValues={nonVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.multiLine:\n return (\n <MultiLineRenderer\n values={visibleValues}\n nonVisibleValues={nonVisibleValues}\n totalVisibleValues={totalVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n parentUri={parentUri}\n max={max}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.imageLine:\n return (\n <>\n <Title label={attributeType?.label} data-reltio-id=\"reltio-attribute-label\" />\n <ImageAttributesLine\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </>\n );\n case RENDERER_TYPES.special:\n return <SpecialRenderer values={visibleValues} attributeType={attributeType} />;\n }\n };\n\n return (\n <BranchDecorator enabled={drawLines} className={classnames({[styles.paddingWrapperWithLines]: drawLines})}>\n <div className={classnames({[styles.paddingWrapper]: !drawLines})}>{render()}</div>\n </BranchDecorator>\n );\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\nimport AttributesPager from './AttributesPager';\n\nconst mapStateToProps = (state, {max = undefined}) => ({\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues\n};\n\nexport {AttributesPager};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n complexContainer: {\n marginTop: '1px'\n },\n labelContainer: {\n display: 'flex',\n minHeight: '18px'\n },\n label: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 'normal',\n paddingTop: '1px',\n marginLeft: '2px'\n },\n spacer: {\n flex: 1\n }\n});\n","import React, {useContext, useEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {\n AttributeTypeType,\n isAnalyticAttribute,\n NestedAttributeValueType,\n ReferenceAttributeValueType,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType,\n isSpecialAttribute\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport AttributesList from '../AttributesList/AttributesList';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\n\nimport {useStyles} from './styles';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\nconst ComplexAttribute = ({\n attributeTypesList,\n attributeValue,\n label,\n expanded: expandedProp = false,\n children,\n showNonOv,\n attributeType,\n LabelRenderer,\n RightSlot\n}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const uri = attributeValue.uri;\n const [expanded, setExpanded] = useState(false);\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n useEffect(() => {\n setExpanded(expandedProp);\n }, [expandedProp]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null,\n ...(isSpecialAttribute(attributeType) ? attributeValue.value : {})\n }),\n [attributeValue, hasAnalyticValue, attributeType]\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={styles.complexContainer}>\n <div className={classnames(styles.labelContainer, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <ArrowExpandButton onClick={() => setExpanded((value) => !value)} expanded={expanded} />\n {LabelRenderer ? (\n <LabelRenderer attributeType={attributeType} attributeValue={attributeValue} />\n ) : (\n <>\n <Typography\n component=\"span\"\n variant=\"body2\"\n classes={{body2: styles.label}}\n className={classnames({\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri),\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </Typography>\n <div className={styles.spacer} />\n {RightSlot && <RightSlot attributeType={attributeType} attributeValue={attributeValue} />}\n <CommentsContainer\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </>\n )}\n </div>\n {expanded && (\n <AttributesList\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n drawLines={true}\n parentUri={uri}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </div>\n );\n};\n\nComplexAttribute.propTypes = {\n children: PropTypes.node,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n expanded: PropTypes.bool,\n showNonOv: PropTypes.bool,\n attributeType: AttributeTypeType,\n LabelRenderer: PropTypes.elementType,\n RightSlot: PropTypes.elementType\n};\n\nexport default ComplexAttribute;\n","export const CROSS_ICON = `<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke: #D1051E; stroke-width: 1\" viewBox=\"0 0 114 114\">\n\t<line x1=\"5\" y1=\"109\" x2=\"109\" y2=\"5\" />\n</svg>`;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {CROSS_ICON} from './cross.inline.svg';\nimport {svg2Url} from '@reltio/mdm-sdk';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nconst BORDER_WIDTH = '3px';\n\nexport const useStyles = makeStyles((theme) => ({\n image: ({imageMargin, imageHeight, imageWidth}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n deleteAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n background: `url('${svg2Url(CROSS_ICON)}') no-repeat`,\n backgroundColor: historyPalettes[HistoryOperations.deleteAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n updateAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n backgroundColor: historyPalettes[HistoryOperations.updateAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n deleteAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.deleteAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n insertAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.insertAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n updateAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.updateAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n padding: '36px 8px',\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useContext} from 'react';\nimport {AttributeType, getImageAttributeOvThumbnailUrl, ImageAttributeValue, Paging} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport classnames from 'classnames';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport Image from '../../../Image/Image';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n parentUri?: string;\n showNonOv?: boolean;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n paging,\n parentUri,\n requestNextPageOfAttributeValues,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const {appearance} = useContext(HistoryDiffContext);\n\n const renderImage: RenderImage = ({onOpenImageGalleryDialog}) => {\n const renderImage = (attribute: ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const imageAppearance = getHistoryAppearanceByUri(uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(imageAppearance);\n return (\n <div\n className={classnames(styles.image, {\n [styles[historyAttributesClassName + 'Image']]: historyAttributesClassName\n })}\n key={uri}\n data-reltio-id=\"reltio-attribute-value\"\n >\n <Image\n onClick={() => onOpenImageGalleryDialog(uri)}\n className={styles[historyAttributesClassName]}\n src={src}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n );\n};\n\nexport default ImageAttributesLine;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nconst styles = makeStyles({\n label: {\n textDecoration: 'none'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n },\n pivotingTooltip: {\n marginLeft: '4px'\n }\n});\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {evaluateDeepEntityLabel, getAttributeTypeSubAttributes, getLabel, NestedAttributeType} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\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 {getLabel(label)}\n </Box>\n </PivotingTooltip>\n );\n }, [appearance, styles, attributeValue, attributeType]);\n\n return (\n <ComplexAttribute\n label={attributeLabel}\n attributeValue={attributeValue}\n attributeTypesList={getAttributeTypeSubAttributes({}, attributeType)}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nconst styles = makeStyles((theme) => ({\n relationshipLabel: {\n marginLeft: '4px',\n color: theme.palette.text.primary\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n}));\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n getAttributeTypeSubAttributes,\n getEntityLink,\n getLabel,\n getReferencedEntityUriFromAttrValue,\n isEmptyValue,\n isOv,\n ReferenceAttributeType\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport InternalLink from '../../../InternalLink/InternalLink';\n\nimport {useOvValueStyles} from '../helpers/commonStyles';\nimport useStyles from './styles';\n\nconst ReferenceAttribute = ({attributeValue, metadata, attributeType, uiPath, ...otherProps}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const refEntityURI = getReferencedEntityUriFromAttrValue(attributeValue);\n const attributeTypeList = useMemo(() => getAttributeTypeSubAttributes(metadata, attributeType), [\n attributeType,\n metadata\n ]);\n\n const {appearance} = useContext(HistoryDiffContext);\n\n const entityLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return (\n <InternalLink\n href={isEmptyValue(appearance) ? getEntityLink({uiPath, uri: refEntityURI}) : undefined}\n className={classnames(styles[historyAttributesClassName], {\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n >\n {getLabel(attributeValue.label)}\n {attributeValue.relationshipLabel && (\n <span className={styles.relationshipLabel}>{attributeValue.relationshipLabel}</span>\n )}\n </InternalLink>\n );\n }, [attributeValue, appearance, uiPath, refEntityURI, styles, ovValueStyles.ovFalse]);\n\n return (\n <ComplexAttribute\n attributeTypesList={attributeTypeList}\n attributeValue={attributeValue}\n label={entityLabel}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nReferenceAttribute.propTypes = ReferenceAttributeType;\n\nexport default memo(ReferenceAttribute);\n","import {connect} from 'react-redux';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport mdmModule from '@reltio/mdm-module';\n\nconst mapStateToProps = (state) => {\n return {\n metadata: mdmModule.selectors.getMetadata(state),\n uiPath: mdmModule.selectors.getUIPath(state)\n };\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps)(ReferenceAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'start',\n justifyContent: 'space-between'\n },\n commentsContainer: {\n height: '15px',\n marginRight: '-4px' // AttributesPager padding compensation\n },\n attributeValue: {\n flex: 1,\n wordBreak: 'break-all'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.updateAttribute].color\n }\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.insertAttribute].color\n }\n },\n deleteAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n textDecoration: 'line-through',\n ...historyPalettes[HistoryOperations.deleteAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.deleteAttribute].color\n }\n },\n multilineAttribute: {\n width: 'fit-content'\n }\n});\n","import React, {useContext} from 'react';\nimport {\n AttributeType,\n getAttrDataTypeDefinition,\n getAttributeValue,\n SimpleAttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\nimport {HistoryDiffContext} from '../../../../contexts/HistoryAppearanceContext';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport {useStyles} from './styles';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\ntype Props = {\n className?: string;\n attributeValue: SimpleAttributeValue;\n attributeType: AttributeType;\n inlined?: boolean;\n};\n\nconst SimpleAttribute = ({className, attributeType = null, attributeValue, inlined}: Props) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const dataTypeValue = (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n />\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return inlined || historyClassName ? (\n <div\n className={classnames(className, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip\n value={attributeValue}\n attributeType={attributeType}\n key={attributeValue.uri}\n className={classnames({[styles.multilineAttribute]: !inlined})}\n >\n <span\n className={classnames(styles[historyClassName], {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n </div>\n ) : (\n <div\n className={classnames(className, styles.root, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip value={attributeValue} attributeType={attributeType} key={attributeValue.uri}>\n <span\n className={classnames(styles.attributeValue, {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n <CommentsContainer\n className={styles.commentsContainer}\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default SimpleAttribute;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useOvValueStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n ovFalse: theme.inactive\n}));\n","import {\n any,\n cond,\n curry,\n has,\n isNil,\n join,\n keys,\n lte,\n pipe,\n prop,\n propSatisfies,\n split,\n slice,\n startsWith\n} from 'ramda';\nimport {HistoryAppearanceActions, HistoryDiff} from '@reltio/mdm-sdk';\n\ntype historyColors = {\n backgroundColor?: string;\n color: string;\n};\n\nexport enum HistoryOperations {\n insertAttribute = 'insertAttribute',\n updateAttribute = 'updateAttribute',\n deleteAttribute = 'deleteAttribute'\n}\n\nexport const historyPalettes: {[key: string]: historyColors} = {\n [HistoryOperations.insertAttribute]: {\n color: '#599E0E'\n },\n [HistoryOperations.updateAttribute]: {\n backgroundColor: 'rgba(255, 187, 0, 0.12)',\n color: '#CC7500'\n },\n [HistoryOperations.deleteAttribute]: {\n backgroundColor: 'rgba(255, 50, 0, 0.2)',\n color: '#CF0E26'\n }\n};\n\nexport const getHistoryAttributeClassName = (type: HistoryAppearanceActions) => {\n switch (type) {\n case 'UPDATE_ATTRIBUTE':\n return HistoryOperations.updateAttribute;\n case 'UNDO_IGNORE_ATTRIBUTE':\n case 'INSERT_ATTRIBUTE':\n return HistoryOperations.insertAttribute;\n case 'IGNORE_ATTRIBUTE':\n case 'DELETE_ATTRIBUTE':\n return HistoryOperations.deleteAttribute;\n default:\n return '';\n }\n};\n\nconst ATTRIBUTE_DELIMITER = '/';\n\nconst hasParent = pipe(split(ATTRIBUTE_DELIMITER), propSatisfies(lte(2), 'length'));\n\nconst getParentUri = pipe(split(ATTRIBUTE_DELIMITER), slice(0, -2), join(ATTRIBUTE_DELIMITER));\n\nconst getParentHistoryAppearanceByUri = curry((uri: string, history: HistoryDiff['appearance']) => {\n return cond([\n [has(uri), prop(uri)],\n [() => hasParent(uri), getParentHistoryAppearanceByUri(getParentUri(uri))]\n ])(history);\n});\n\nconst hasModifiedChildren = (uri: string) => pipe(keys, any(startsWith(uri + ATTRIBUTE_DELIMITER)));\n\nexport const getHistoryAppearanceByUri = (uri = '', history: HistoryDiff['appearance'] = {}) => {\n const state = getParentHistoryAppearanceByUri(uri, history);\n if (isNil(state)) {\n return hasModifiedChildren(uri)(history) ? 'UPDATE_ATTRIBUTE' : '';\n }\n return state;\n};\n\nexport const getHistoryAppearanceBySpecialAttributeValue = (\n name: string,\n value: string,\n history: HistoryDiff['appearance'] = {}\n) => history?.[name]?.[value];\n","import {EntityAttrTypes} from '@reltio/mdm-sdk';\n\nexport const ALWAYS_VISIBLE_TYPE_URIS = [EntityAttrTypes.roles.uri, EntityAttrTypes.tags.uri];\n","export const COMMENTS_CONTAINER_VISIBILITY_AREA = 'commentsContainerVisibilityArea';\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const AsyncMountContext = React.createContext({\n enabled: false,\n queueSizeThreshold: 0\n});\n\nAsyncMountContext.Provider.propTypes = {\n value: PropTypes.shape({\n enabled: PropTypes.bool,\n queueSizeThreshold: PropTypes.number\n })\n};\n\nAsyncMountContext.displayName = 'AsyncMountContext';\n","import React from 'react';\n\nexport const BlockImageGalleryDialogContext = React.createContext(false);\n\nBlockImageGalleryDialogContext.displayName = 'BlockImageGalleryDialogContext';\n","import React from 'react';\nimport {CollaborationObjectTypes, Comment, CommentsMap, Reply} from '@reltio/mdm-sdk';\n\nconst noop = () => {};\n\nexport const CollaborationContext = React.createContext<{\n objectTypes?: CollaborationObjectTypes[];\n commentsMap: CommentsMap;\n comments: Comment[];\n currentComment: Comment;\n 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 getComment: noop,\n getComments: () => new Promise<void>(noop),\n getCommentsCount: noop,\n createComment: () => new Promise<void>(noop),\n editComment: () => new Promise<void>(noop),\n createReply: () => new Promise<void>(noop),\n resolveThread: noop,\n reOpenThread: noop,\n clearCurrentComment: noop,\n deleteComment: noop,\n sending: false,\n loading: false,\n pageToken: null,\n deleteReply: noop,\n editReply: () => new Promise<void>(noop)\n });\n\nCollaborationContext.displayName = 'CollaborationContext';\n","import {EntitiesMap} from '@reltio/mdm-sdk';\nimport React from 'react';\n\nexport const EntitiesMapContext = React.createContext<EntitiesMap>({});\n\nEntitiesMapContext.displayName = 'EntitiesMapContext';\n","import React from 'react';\nimport {Entity} from '@reltio/mdm-sdk';\n\nexport const EntityContext = React.createContext<Entity>(null);\n\nEntityContext.displayName = 'EntityContext';\n","import React from 'react';\n\nexport const HighlightedValuesContext = React.createContext<{\n highlightedValuesUris: string[];\n highlightedClassName: string;\n}>({\n highlightedValuesUris: [],\n highlightedClassName: ''\n});\n\nHighlightedValuesContext.displayName = 'HighlightedValuesContext';\n","import React from 'react';\nimport {HistoryDiff} from '@reltio/mdm-sdk';\n\nexport const HistoryDiffContext = React.createContext<HistoryDiff>({\n appearance: undefined,\n attributes: undefined,\n roles: undefined,\n tags: undefined\n});\n\nHistoryDiffContext.displayName = 'HistoryDiffContext';\n","import React from 'react';\nimport {PivotingAttribute} from '@reltio/mdm-sdk';\n\nexport const PivotingAttributeContext = React.createContext<PivotingAttribute[]>([]);\n","import React from 'react';\n\nexport const RelatedObjectUrisContext = React.createContext<string[]>([]);\n\nRelatedObjectUrisContext.displayName = 'RelatedObjectUrisContext';\n","import React from 'react';\nimport {User} from '@reltio/mdm-sdk';\n\nexport const UsersContext = React.createContext<User[]>([]);\n\nUsersContext.displayName = 'UsersContext';\n","import {useContext, useEffect, useState, useRef} from 'react';\n\nimport {AsyncMountContext} from '../contexts/AsyncMountContext';\n\nlet queueSize = 0;\n\nexport const useAsyncMount = () => {\n const isFirstRunRef = useRef(true);\n const {enabled, queueSizeThreshold = 0} = useContext(AsyncMountContext);\n const [shouldMount, setShouldMount] = useState(!enabled || (enabled && queueSize < queueSizeThreshold));\n if (isFirstRunRef.current) {\n queueSize++;\n }\n const timerRef = useRef();\n useEffect(() => {\n queueSize--;\n if (!shouldMount) {\n timerRef.current = setTimeout(() => {\n setShouldMount(true);\n }, 0);\n return () => clearTimeout(timerRef.current);\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n isFirstRunRef.current = false;\n return shouldMount;\n};\n","import React from 'react';\n\nconst SvgDownload: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 18 18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M19 16v3H5v-3H3v3c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-3h-2zm-6-3.33l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2v9.67z\"\n id=\"Download_svg__a\"\n />\n </defs>\n <g transform=\"translate(-3 -3)\" stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"Download_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Download_svg__a\" />\n </mask>\n <path fillOpacity={0.54} fill=\"#fff\" mask=\"url(#Download_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDownload;\n"],"names":["Component","PlaceholderComponent","WithAsyncMount","forwardRef","componentProps","ref","useAsyncMount","displayName","useStyles","makeStyles","expandButton","backgroundColor","expandIcon","transition","expanded","transform","props","styles","className","otherProps","SmallIconButton","icon","ArrowRight","size","disableRipple","iconClassName","classnames","toolbar","minHeight","padding","lineHeight","title","fontSize","fontWeight","whiteSpace","overflow","textOverflow","children","classes","Toolbar","root","Typography","variant","getRelatedEntityUri","comment","entityUri","index","relatedObjectUris","indexOf","formatDate","time","i18n","theme","marginBottom","color","palette","divider","label","paddingLeft","borderLeft","text","primary","link","main","textDecoration","CommentTarget","entity","useSelector","mdm","metadata","entitiesMap","useContext","EntitiesMapContext","Box","objectType","CollaborationObjectTypes","attributeTypeUri","getAttributeTypeUriByValueUri","objectId","type","attributeType","findAttributeTypeByUri","relationTypeUri","find","startsWith","EntityUriLink","value","getEntityUriForLink","getLabel","relatedEntityUri","uri","relatedEntity","getEntityId","getContent","wordBreak","CommentContent","users","UsersContext","mentions","processor","trigger","arr","currentStr","process","i","length","currentCharacter","nextCharacter","isLastCharacter","includes","slice","push","processMentions","content","namedUsers","mention","user","username","Link","href","email","map","el","idx","Fragment","key","width","height","secondary","Avatar","split","item","toUpperCase","join","fontFamily","border","borderRadius","outline","boxShadow","maxHeight","overflowY","transitions","create","position","zIndex","textShadow","pointerEvents","TextFieldWithMentions","onChange","_","plainTextValue","uniq","display","data","id","displayTransform","appendSpaceOnAdd","isEditing","textField","maxWidth","form","alignItems","avatar","marginRight","buttons","marginLeft","marginTop","button","getPlaceholder","status","SendMessageArea","inputRef","popperRef","reply","isEditingComment","isEditingReply","onCancel","createReply","createComment","sending","editComment","editReply","CollaborationContext","setValue","useState","setPlainTextValue","setMentions","focused","setFocused","safePromise","useSafePromise","hasValue","trim","shouldShowButtons","updateValue","clearValue","useEffect","current","update","buttonSize","onSubmit","e","preventDefault","request","cond","always","commentId","replies","replyId","T","action","then","catch","console","log","disabled","newValue","newPlainTextValue","onFocus","onBlur","placeholder","Button","getButtonText","onClick","header","createdAt","body","commentTarget","message","dropdownMenu","Comment","onReply","useRef","setIsEditingComment","createdBy","createdTime","canChangeComment","resolveThread","reOpenThread","deleteComment","focus","menuItems","useMemo","sendMessageArea","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","tooltipTitle","popoverProps","PopoverClasses","menuId","component","marked","fontStyle","RepliedComment","setIsEditingReply","canChangeReply","deleteReply","flexGrow","messages","repliedComment","CollaborationItem","memo","messagesRef","addButton","visibility","COMMENTS_CONTAINER_VISIBILITY_AREA","showAlways","fillOpacity","fill","fillRule","viewBox","xmlns","d","justifyContent","cursor","childrenWrapper","top","left","right","bottom","CommentButton","React","Tooltip","AddComment","paddingRight","headerInfo","counter","resolveButton","popper","collaborationItem","hasScroll","scrollWidth","CollaborationPopup","anchorEl","onClose","open","setScrollWidth","loading","itemsCount","PopupWithArrow","placement","showForDisabled","DoneIcon","node","offsetWidth","clientWidth","onChangePopupVisibility","allowOnlyOneComment","setAnchorEl","shouldOpenPopup","setShouldOpenPopup","isOpenPopup","Boolean","currentComment","commentsMap","getComment","clearCurrentComment","objectTypes","showComments","openComments","filter","reverse","shouldShowAddCommentButton","isOpenPopupWithNewComment","useDidUpdateEffect","additionalRelatedObjectUris","RelatedObjectUrisContext","allRelatedObjectUris","event","currentTarget","handleClickCommentButton","RNDContext","createDndContext","HTML5Backend","DragAndDrop","DNDElement","manager","DndProvider","dragDropManager","useDNDProviderElement","buttonRoot","active","fade","selected","paper","minWidth","menuItem","menuText","letterSpacing","MenuItemWithTooltip","withTooltip","MenuItem","MenuItemRenderer","onMenuClose","identity","tooltip","selectable","Checkbox","checked","buttonContent","onMenuOpen","DefaultMenuItemRenderer","ButtonComponent","buttonRef","isOpen","setIsOpen","handleToggle","useCallback","stopPropagation","undefined","Menu","autoFocus","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","avatarClassName","imageClassName","mdmModule","absoluteImagePath","entityImageSource","getEntityImage","fallbackImage","getAbsoluteImageUrl","getEntityTypeImage","onImageLoadFail","target","onError","src","svg2Url","imgProps","alt","storagePath","str","endsWith","caption","errorMessage","hasError","wrapper","error","FormHelperText","helperText","margin","highlight","parts","RegExp","part","toLocaleLowerCase","stroke","strokeWidth","image","imageWidth","imageHeight","objectFit","verticalAlign","defaultContainer","defaultImage","hideImage","ImageLoadingState","ImageSizesStyles","SMALL","MEDIUM","LARGE","OVERRIDE","containerClassName","overlay","sizeStyles","imageLoadingState","setImageLoadingState","imageIsLoading","imageIsLoaded","isEmptyValue","onLoad","DefaultImage","CheckedIcon","Icon","CheckCircleIcon","RadioButtonUncheckedIcon","userSelect","selectionMode","checkedIcon","actions","actionButton","dropDownMenuButton","canBeSelected","onDeselect","noop","onSelect","onShareLink","onSetAsDefault","onDelete","onDownload","hovered","setHovered","prop","toggleSelected","ifElse","equals","showCheckBox","showActions","showDeselectButton","onMouseEnter","onMouseLeave","DownloadIcon","xmlnsXlink","xlinkHref","mask","backdrop","appBar","background","closeButton","closeIcon","headerLeft","flex","headerCenter","headerRight","modeSwitcher","Mode","ImageGalleryDialog","mode","onChangeMode","modes","GALLERY_MODE","ViewComfyIcon","DETAILS_MODE","DetailsIcon","Dialog","BackdropProps","fullScreen","AppBar","colorPrimary","CloseIcon","ModeSwitcher","modeId","DialogContent","inRouterContext","useInRouterContext","linkClassName","to","replace","window","location","origin","loadingOverlay","opacity","transparent","relativePosition","LinearProgress","textTransform","borderColor","ButtonWithTooltip","ButtonGroup","String","newMode","popoverRoot","arrow","boxSizing","shadows","arrowRef","setArrowRef","Popper","modifiers","preventOverflow","enabled","boundariesElement","element","modal","ClickAwayListener","onClickAway","child","Array","from","document","querySelectorAll","some","contains","Paper","autofocus","onSearch","rootRef","localValue","setLocalValue","pipe","tap","inputValue","isNil","startAdornment","InputAdornment","endAdornment","clearButton","input","classNames","container","getValue","disableUnderline","white","hideTitle","hideSearchInput","headerPlacement","containerWidth","containerHeight","searchInputOnKeyDown","searchInputRef","onKeyDown","searchInputContainer","style","list","useKeyboardNavigation","items","onSelectFocusedItem","selectedItems","focusIndex","setFocusIndex","restoreFocusIndex","increaseFocusIndex","currentIndex","newIndex","isTitleItem","decreaseFocusIndex","handleSelectFocusedItem","notSelectable","groupData","handleKeyDown","moveIndex","findIndex","listItem","moveTo","flexDirection","flexShrink","paddingBottom","paddingTop","isRequired","RequiredMark","stickyTitlesWrapper","titleItemIndex","VirtualGroupedList","getItemSize","renderItem","renderGroupTitle","fixedTitle","itemKey","disableHorizontalScrollbar","hideSubtitles","onInnerContainerResize","listRef","itemsRef","titlesRef","itemOffsets","currentTitleParams","topMargin","hasSubTitles","calcOffsetsToIndex","curItemsLength","prevItemSize","forEach","realIndex","getTitleByIndex","getItemByIndex","requestAnimationFrame","scrollTo","resetAfterIndex","setTitleWidth","scrollToOffset","indexItem","titleIndex","offset","titleHeight","calcMoveToOffset","state","scrollOffset","getItemByOffset","result","nextOffset","_getItemSize","render","handleOnItemsRendered","useScrollToFocusItem","renderTitles","renderTitle","handleHeight","onResize","targetDomEl","itemCount","itemSize","innerRef","onScroll","scrollDirection","topItem","currentTitleIndex","dataset","toString","itemAfterTitle","nextTitleIndex","fromIndex","nextTitleOffset","getOffsetByIndex","setTitleTopMargin","overflowX","overscanCount","onItemsRendered","propTypes","PropTypes","flattenGroupedItemsData","groupedItems","getFlattenedItems","flatten","concat","visibleStartIndexRef","visibleStopIndexRef","visibleStartIndex","visibleStopIndex","Math","max","scrollToItem","min","lineStyle","decorator","arrowWidth","borderBottom","plain","horizontalLineWidth","alignContent","mainImageContainer","mainImage","arrowButton","arrowButtonPrev","arrowButtonNext","thumbnails","gridContainer","thumb","inactiveThumb","Thumbnails","attributeValues","setAttributeValueIndex","attributeValueIndex","gridRef","containerScrollLeft","scrollLeft","currentElementPosition","scroll","IMAGE_WIDTH","Grid","wrap","direction","spacing","Image","getImageAttributeOvThumbnailUrl","ImageDetailsViewCarousel","attributeValue","mainImageSrc","getImageAttributeOvPreviewUrl","NavigateBeforeIcon","NavigateNextIcon","SYSTEM_ATTRIBUTES_TITLES","CreationTime","CreationDate","Dimensions","MimeType","Size","Url","UrlPreview","UrlThumbnail","CdnUrl","CdnUrlPreview","CdnUrlThumbnail","getFormattedSystemImageAttributeValue","name","path","moment","CreationTimestamp","format","Height","Width","Number","toFixed","filterByNotSystemAttributeTypes","attrTypes","system","filterByFieldsOrder","keys","fieldsOrder","includeNames","excludeNames","order","filteredKeys","sort","a","b","indA","indB","getNotSystemAttributesList","attrValue","attrType","notSystemAttrTypes","attributes","Object","reduce","values","isLink","canAdd","MetaInfoHeader","onAddAttributes","moreAttrTypes","MoreAttributesButton","dense","onApply","parentUri","Divider","float","wordWrap","MetaInfoItem","MetaInfoList","imageAttributeFieldsOrder","isViewMode","systemAttributesList","notSystemAttributesList","AttributesPager","drawLines","titleClassName","contentClassName","cancelButton","MetaInfoForm","hasChanges","onDeleteAttribute","onChangeAttribute","shouldShowActionButtons","showEmptyEditors","isTempUri","darkTheme","darkMuiTheme","createMuiTheme","MetaInfo","initialAttributeValue","addAttributes","changeAttribute","deleteAttribute","clearLocalChanges","applyLocalChanges","dispatch","useDispatch","viewId","ViewIdContext","setAttributeValue","prevAttrValue","attribute","addAttribute","nestingLevel","editAttribute","removeAttribute","profile","useEditMetaInfo","isEditableMode","headerTitle","bodyWrapper","formControlLabel","checkboxLabel","checkbox","ImageDetailsViewSidebar","handleSetAsDefault","modifiedEntity","entityToShow","imageAttributeConfig","default","isDefault","setIsDefault","defaultProfilePic","handleChange","FormControlLabel","control","details","ImageDetailsView","currentAttributeValueUri","setCurrentAttributeValueUri","onChangeAttributeValueIndex","GalleryView","onSelectImage","onDeselectImage","onClickImage","renderImageActionsOverlay","ImageActionsOverlay","selectButton","HeaderLeft","onSelectAll","onClearAll","selectedAllItems","underline","downloadButton","shareButton","deleteButton","HeaderRight","onShare","onUpload","startIcon","CloudUpload","LinkIcon","DeleteIcon","setSelectedItems","setMode","imageItems","downloadURL","getImageAttributeOvUrl","handleShareLink","propEq","handleDelete","isGalleryMode","isDetailsMode","hasSelectedItems","isHasSelectedItemsOrDetailsMode","isShowDeleteButton","isShowUploadButton","pluck","downloadURLs","imageBox","flexWrap","moreButtonContainer","moreButton","number","textAlign","renderImage","countFixedItems","imageSize","DEFAULT_IMAGE_SIZE","paging","showNonOv","requestNextPageOfAttributeValues","totalVisibleValues","totalOvValues","totalValues","attributeTypeName","defaultMaxValues","lastWidth","maxItems","setMaxItems","hiddenItemsLength","setHiddenItemsLength","isBlockImageGalleryDialog","BlockImageGalleryDialogContext","isOpenDialog","setIsOpenDialog","adjustMaxItemsToScreenWidth","imageMargin","maxItemsPerScreen","floor","hasHiddenImage","IMAGE_MIN_VISIBLE_WIDTH","handleResize","handleOpenImageGalleryDialog","handleCloseImageGalleryDialog","handleDownload","urls","url","isAbsoluteUrl","URL","host","isExternalUrl","iframe","createElement","setAttribute","appendChild","setTimeout","removeChild","download","pop","getFilenameFromURL","click","downloadImagesByURLs","navigator","clipboard","writeText","insertDefaultImageByAttrUri","renderImageProps","onOpenImageGalleryDialog","handleWidth","IMAGE_HEIGHT","ChipWithTooltip","Chip","OvIcon","nonOvValues","nonOvTotal","isComplexAttribute","DataTypeValue","getAttributeValue","dataTypeDefinition","getAttrDataTypeDefinition","rich","tooltipPlacement","AttributeTypeType","SimpleAttributeValueType","NestedAttributeValueType","ReferenceAttributeValueType","generatePivotingValue","pivotingAttributes","pivotingChildrenUris","pivotingAttribute","isArray","getPivotingChildrenUris","pivotingChildren","analyticsAttributes","acc","valueToString","valueContainer","lookupCode","isOv","preparePivotingAttributeValue","DataTypes","Date","getTime","isNaN","entityTypeLabel","headerCount","footer","profileIcon","entityContainer","entityLabel","seeAllButton","usePivotingTooltipStyles","PivotingTooltipContent","config","onSeeAllClick","entities","setEntities","total","setTotal","globalSearchRequestOptions","entityType","shouldShowSeeAllButton","filters","convertPivotingValueToSearchFilters","options","Promise","all","getFilteredEntities","getTotals","results","hasEntityTypeLabel","visibleEntity","EntityAvatar","PivotingTooltip","contentStyles","pivotingAttributesList","PivotingAttributeContext","isNestedAttribute","isNested","pivotingValue","isPivotingAttribute","handleSeeAllClick","generatedValue","fromEntries","entries","getLastUriPart","convertSimpleAttributePivotingValue","mdmModuleUi","interactive","popup","PivotingIcon","lazy","errors","crosswalks","propsForSimpleAttribute","NestedAttribute","ReferenceAttribute","SimpleAttributeEditor","isReltioCrosswalk","build","AttributesList","parentAttributeType","alwaysVisibleTypeUris","ALWAYS_VISIBLE_TYPE_URIS","additionalControlsRenderer","hasDeletionsMap","setHasDeletionsMap","setHasDeletions","attrTypeUri","prevMap","canCreateParentAttrType","checkCanCreateAttribute","source","isSpecialAttribute","both","isAnalyticAttribute","getSource","nameProp","getNameProp","singleValue","isRoleAttrType","isTagAttrType","has","getMoreAttrTypes","getCreatableAttributeTypes","pinnedAttributes","PinnedAttributesContext","pagersData","getAttributesListForEditMode","alwaysVisiblePagersData","regularPagersData","splitPagersData","onAddMoreAttributes","attributeTypes","getParentUri","decoratorProps","hasDeletionsContextValue","BranchDecorator","parent","HasDeletionsContext","ModeType","valueCaption","hasMinValue","hasMaxValue","noMaxValue","not","minValueIsOne","propSatisfies","minValue","generateMinCardinality","minValueCaption","generateMaxCardinality","maxValue","maxValueCaption","getCardinalityMessage","allPass","minCardinality","CardinalityMessage","cardinality","CardinalityType","filterNewValues","nonVisibleValues","onDeactivateError","visibleValuesCount","setVisibleValuesCount","hadDeletions","setHadDeletions","required","checkIsEditableMode","isPinned","isEmptyValues","showEmpty","emptyEditorValue","createNewAttribute","onAddOneMore","newValuesCount","totalProp","add","totalNonVisibleValues","hasPaging","showMore","showLess","shownValues","lastIndex","hiddenValuesCount","titleWrapper","Title","ovIcon","ErrorMessage","typeError","attributesWrapper","Attribute","ownError","getAttributeOwnError","ShowMore","moreNumber","valueNumber","ShowLess","roleContainer","components","MultiValue","MultiValueChip","Roles","getRolesForEntityType","role","formattedValues","roles","EntityAttrTypes","SimpleDropDownSelector","isMulti","getQuery","searchQuery","buildFilterQueryString","fieldName","filtersWithSearch","orderType","getSuggestions","getFacets","query","response","tags","TypeaheadEditor","fullWidth","multiple","withContext","contextValue","hasDeletions","hasDeletionsProp","hasDeletionsState","setHasDeletionsState","updateHasDeletions","isActivenessAttrType","renderValue","RENDERER_TYPES","Infinity","partitionByOv","partition","ovValues","visibleValues","commonProps","special","isImage","imageLine","ImageAttributesLine","renderAttribute","mapDispatchToProps","connect","getAttributePagerActiveTypeErrorMessage","textIndent","editor","titleContainer","deleted","editedLabel","errorWrapperHelperText","ComplexAttribute","attributeTypesList","hideDeleteButton","expandedProp","edited","isNew","defaultExpand","setExpanded","canDelete","checkCanDeleteAttribute","showDeleteButton","hasDescendantsWithErrors","hasAttributeDescendantsWithErrors","hasAnalyticValue","attributeListEntity","getErrorMessage","ArrowExpandButton","ErrorWrapper","ComplexAttributeType","defaultAttributeTypesSelectionStrategy","EntityCreator","attributeTypesSelectionStrategy","ownProps","emptyEntityLabel","entityAvatar","entitySecondaryLabel","useSingleValueStyles","linkValue","useGroupStyles","addLabel","groupHeading","addIcon","useClearIconStyles","clearIcon","EntityOption","innerProps","selectOption","secondaryLabel","EntityTypeIcon","EntityType","SingleValue","selectProps","currentEntityType","menuIsOpen","disableLinkClick","uiPath","valueProps","onMouseDown","ui","getEntityLink","ClearIndicator","onClear","IconButton","Clear","Group","ComponentsGroup","onCreate","Add","creatorWrapper","EntitySelector","entityTypesUris","setInputValue","entityTypes","getEntityType","handleCreate","entityTypeUri","groupMode","isEmpty","createLabel","isTempEntity","groupComponent","GroupHeading","EmptyStub","clearComponent","TextFieldProps","dropDownSelectorProps","textFieldProps","DropDownSelector","onInputChange","getOptions","newOptions","addDummyOptionToEmptyOptionList","filteredEntityTypes","option","buildEntityOptions","getOptionLabel","Option","isClearable","ConnectionEntityType","MetadataType","inputRoot","isEmptyField","ImageByUrlField","onSend","setError","InputBase","isCorrectUrl","test","IMAGE_TYPES","SelectImageButton","onAppendFile","onInput","files","accept","htmlFor","x1","y1","x2","y2","stopColor","stopOpacity","cx","cy","r","rx","ry","isActive","description","TargetBox","canDrop","isOver","drop","useDrop","NativeTypes","FILE","collect","monitor","UploadIcon","MAX_IMAGE_SIZE","DividerWithText","ErrorSnackbar","Snackbar","dialogPaper","targetBox","UploadImageDialog","imageServicePath","environment","tenant","setLoading","uploadImage","uploadImageRequest","res","err","finally","isCorrectType","LinearLoadIndicator","uploadContainer","uploadButton","uploadIcon","isVisibleUploadDialog","setIsVisibleUploadDialog","toggleVisibilityUploadDialog","visible","handleAddAttributes","generateUri","ov","handleDeleteAttribute","param","newDefaultPic","methods","imageUrl","CloudUploadIcon","moreAttributes","popupContainer","moreAttributesPopup","buttonLabel","subHeader","noResultsCaptionContainer","filterItems","curry","filterText","toLowerCase","preparedGroupedItems","GROUP_NAMES","popupTitle","setFilter","hasGroups","parentGroupLength","attributesGroupLength","preparedParentGroupItem","parentGroup","preparedAttributesGroupItems","attributesGroup","useMoreAttributesItems","handleListItemClick","append","reject","handleSearchOnEnter","any","focusIndexRef","groupsCount","listHeight","listItemRenderer","level","isChecked","isFocused","AttributeListItem","Highlighter","labelInText","LogoIcon","ListItem","SelectionPopup","gutterBottom","evaluateDeepEntityLabel","dataLabelPattern","NestedAttributeType","onDeleteModifiedEntity","onUpdateModifiedEntity","referencedEntity","getReferencedEntityFromAttrValue","referencedRelation","getReferencedRelationFromAttrValue","referencedEntityTypeUri","getReferencedEntityTypeUriFromAttrType","referencedEntityType","allCrosswalks","addReferencedRelationCrosswalks","referencedEntityMissedError","getReferencedEntityActiveError","selectedEntity","getReferencedEntityUri","getReferencedEntityTypeUri","editableAttrTypes","getReferencedRelationAttrTypesUris","newEntityAttrTypesSelectionStrategy","referencedEntityAttributeTypesSelectionStrategy","onChangeEntity","initialAttrValue","isInitialEntity","getReferencedEntityUriFromAttrValue","modifiedValue","refEntity","convertReferencedEntityForAttrValue","refRelation","createReferencedRelationForAttrValue","getErrorId","onCreateEntity","initValue","newEntityAttrTypes","newEntity","createTemporaryEntity","canChangeReferencedEntity","checkCanEditAttribute","canCreateReferencedEntity","checkMetadataForCreate","ReferenceAttributeType","DLEditorContextCache","errorWrapper","alignSelf","attributeValueToEditorValue","canCreate","canEdit","showToEdit","dependentLookupEditorContext","isDependentLookupAttrType","valueUri","parents","missedParentsAttributeTypes","parentNodesValues","flatMap","parentNode","dependentLookupCode","modifiedEntities","connections","ownParentNodesValues","filterRelatedParentValuesForDependentLookupValueUri","parentValues","possibleParentBaseTypeUris","getAttributeValuePath","defaultTo","getBaseUri","prepend","typeUri","areOneHierarchyUris","typesMap","codeValues","getParents","isBlocked","missedParentsMessage","missedAttributeTypes","labels","words","word","autocompleteConfig","autopopulationEnabled","isAutopopulationEnabled","context","autopopulationId","cachedContext","fromCache","getDependentLookupEditorContext","deactivateError","showAddButton","deletedProps","DataTypeValueEditor","attributeUriToSearchUri","prepareChangeData","AddIcon","getErrorType","ErrorType","AttributeErrorType","withAsyncMount","parseBoolean","utils","editorValueToAttributeValue","editorValue","valueOf","getFilteredAttrTypes","includeUris","excludeUris","__","SimpleAttribute","getAttributesListForReadMode","visibleAttributePagersData","commonStyles","titleRow","paddingWrapper","paddingWrapperWithLines","useOneLineStyles","collaborationWrapper","titleIcon","useMultiLineStyles","isRelationAttrType","inlined","CommentsContainer","createRelatedObjectUris","dataReltioId","useCommonStyles","insertAttribute","historyPalettes","HistoryOperations","appearance","HistoryDiffContext","attributeAppearance","getHistoryAppearanceBySpecialAttributeValue","historyClassName","getHistoryAttributeClassName","getRoleLabel","Role","ownEntity","EntityContext","currentEntity","InternalLink","getTagLink","tag","dataTenant","getDataTenantEntityUri","Tag","isOneLineRender","complexContainer","labelContainer","spacer","LabelRenderer","RightSlot","ovValueStyles","useOvValueStyles","highlightedValuesUris","highlightedClassName","HighlightedValuesContext","body2","ovFalse","deleteAttributeImage","updateAttributeImage","outlineOffset","updateAttribute","imageAppearance","getHistoryAppearanceByUri","historyAttributesClassName","pivotingTooltip","attributeLabel","getAttributeTypeSubAttributes","relationshipLabel","refEntityURI","attributeTypeList","commentsContainer","multilineAttribute","dataTypeValue","inactive","ATTRIBUTE_DELIMITER","hasParent","lte","getParentHistoryAppearanceByUri","history","hasModifiedChildren","AsyncMountContext","queueSizeThreshold","Provider","comments","getComments","getCommentsCount","pageToken","queueSize","isFirstRunRef","shouldMount","setShouldMount","timerRef","clearTimeout"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"1920.js","mappings":"uXAGA,MAcA,EAduB,SAACA,GAA2C,IAAhCC,EAAgC,uDAAT,KACtD,MAAMC,GAAiBC,EAAAA,EAAAA,aAAW,CAACC,EAAgBC,KAC3BC,EAAAA,EAAAA,KAEhB,kBAACN,EAAD,KAAeI,EAAf,CAA+BC,IAAKA,KAEpCJ,GAAwB,kBAACA,EAAD,KAA0BG,EAA1B,CAA0CC,IAAKA,OAK/E,OADAH,EAAeK,YAAc,iBACtBL,I,mGCZJ,MAAMM,GAAYC,E,SAAAA,GAAW,CAChCC,aAAc,CACV,UAAW,CACPC,gBAAiB,gBAGzBC,WAAY,CACRC,WAAY,uBAEhBC,SAAU,CACNC,UAAW,mB,gNCAnB,MAeA,EAf2BC,IACvB,MAAMC,EAAST,KACT,SAACM,EAAD,UAAWI,GAA4BF,EAAdG,E,kXAA/B,CAA6CH,EAA7C,0BACA,OACI,kBAACI,EAAA,EAAD,GACIC,KAAMC,EAAAA,EACNC,KAAK,MACLC,eAAa,EACbC,cAAeC,GAAAA,CAAWT,EAAOL,WAAY,CAAC,CAACK,EAAOH,UAAWA,IACjEI,UAAWQ,GAAAA,CAAWR,EAAWD,EAAOP,eACpCS,M,+ECpBT,MAAMX,GAAYC,E,SAAAA,GAAW,CAChCkB,QAAS,CACLC,UAAW,OACXC,QAAS,WACTC,WAAY,QAEhBC,MAAO,CACHC,SAAU,OACVC,WAAY,SACZH,WAAY,UACZI,WAAY,SACZC,SAAU,SACVC,aAAc,c,gNCJtB,MAYA,EAZwB,IAAkE,IAAjE,MAACL,EAAD,SAAQM,EAAW,KAAnB,QAAyBC,EAAU,IAA8B,EAAvBnB,E,kXAAuB,mCACtF,MAAMF,EAAST,IACf,OACI,kBAAC+B,EAAA,EAAD,GAASrB,UAAWoB,EAAQE,KAAMF,QAAS,CAACE,KAAMvB,EAAOU,UAAcR,GACnE,kBAAC,EAAAsB,WAAD,CAAYvB,UAAWoB,EAAQP,MAAOO,QAAS,CAACE,KAAMvB,EAAOc,OAAQW,QAAQ,MACxEX,GAEJM,K,6MCdN,MAMMM,EAAsB,CAACC,EAA6CC,KAC7E,MAAMC,EAAQF,EAAQG,kBAAkBC,QAAQH,GAChD,GAAIC,GAAS,EAAG,OAAOF,EAAQG,kBAAkB,EAAID,IAG5CG,EAAcC,GAAkB,GAAEC,IAAAA,KAAUD,EAAM,SAASC,IAAAA,KAAUD,EAAM,Q,eCZjF,MAAM1C,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCrB,MAAO,CACHsB,aAAc,OACdC,MAAOF,EAAMG,QAAQC,QACrBxB,SAAU,OACVF,WAAY,QAEhB2B,MAAO,CACHC,YAAa,MACbC,WAAY,oBACZ3B,SAAU,OACVsB,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B/B,WAAY,QAEhBgC,KAAM,CACFR,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BC,eAAgB,Y,wHCQjB,MAAMC,EAAgB,IAAiC,IAAhC,QAACrB,EAAD,UAAU1B,GAAsB,EAC1D,MAAMD,EAAST,IAET0D,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,WACrBC,GAAWF,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aACvBE,GAAcC,EAAAA,EAAAA,YAAWC,EAAAA,GAqG/B,OAAO,kBAAC,EAAAC,IAAD,CAAKvD,UAAWA,GAnGJ,MACf,OAAQ0B,EAAQ8B,YACZ,KAAKC,EAAAA,IAAAA,iBAA2C,CAC5C,MAAMC,GAAmBC,EAAAA,EAAAA,KAA8BjC,EAAQkC,SAAUZ,EAAOa,MAC1EC,GAAgBC,EAAAA,EAAAA,KAAuBZ,EAAUO,GACvD,OACI,oCACI,kBAAC,EAAAnC,WAAD,CAAYvB,UAAWD,EAAOc,OAAQoB,IAAAA,KAAU,wBAChD,kBAAC,EAAAV,WAAD,CAAYvB,UAAWD,EAAOwC,OAAQuB,MAAAA,OAAtC,EAAsCA,EAAevB,QAIjE,KAAKkB,EAAAA,IAAAA,mBAA6C,CAC9C,MAAMO,EAAkBtC,EAAQG,kBAAkBoC,MAAKC,EAAAA,EAAAA,YAAW,gCAC5DR,GAAmBC,EAAAA,EAAAA,KAA8BjC,EAAQkC,SAAUI,GACnEF,GAAgBC,EAAAA,EAAAA,KAAuBZ,EAAUO,GACvD,OACI,oCACI,kBAAC,EAAAnC,WAAD,CAAYvB,UAAWD,EAAOc,OAAQoB,IAAAA,KAAU,wBAChD,kBAAC,EAAAV,WAAD,CAAYvB,UAAWD,EAAOwC,OAAQuB,MAAAA,OAAtC,EAAsCA,EAAevB,QAIjE,KAAKkB,EAAAA,IAAAA,OACD,OACI,oCACI,kBAAC,EAAAlC,WAAD,CAAYvB,UAAWD,EAAOc,OAAQoB,IAAAA,KAAU,sBAChD,kBAACkC,EAAA,EAAD,CACInE,UAAWQ,GAAAA,CAAWT,EAAOwC,MAAOxC,EAAO6C,MAC3CwB,OAAOC,EAAAA,EAAAA,KAAoBrB,KAE1BsB,EAAAA,EAAAA,KAAStB,EAAOT,SAKjC,KAAKkB,EAAAA,IAAAA,SAAmC,CACpC,MAAMc,EAAmB9C,EAAoBC,EAASsB,EAAOwB,KACvDC,E,8UAAgB,CAAH,GACXrB,EAAYmB,IAAqB,GADtB,CAEfC,IAAKD,IAGT,OACI,oCACI,kBAAC,EAAAhD,WAAD,CAAYvB,UAAWD,EAAOc,OAAQoB,IAAAA,KAAU,uBAChD,kBAAC,EAAAV,WAAD,CAAYvB,UAAWD,EAAOwC,OAC1B,kBAAC4B,EAAA,EAAD,CAAenE,UAAWD,EAAO6C,KAAMwB,OAAOC,EAAAA,EAAAA,KAAoBrB,KAC7DsB,EAAAA,EAAAA,KAAStB,EAAOT,QAEpBgC,GACG,oCACM,IAAGtC,IAAAA,KAAU,SACf,kBAACkC,EAAA,EAAD,CAAenE,UAAWD,EAAO6C,KAAMwB,OAAOC,EAAAA,EAAAA,KAAoBI,IAC7DA,EAAclC,OACT+B,EAAAA,EAAAA,KAASG,EAAclC,QACvBmC,EAAAA,EAAAA,KAAYD,OAQ9C,KAAKhB,EAAAA,IAAAA,gBAA0C,OAC3C,MAAMc,EAAmB9C,EAAoBC,EAASsB,EAAOwB,KACvDC,EAAgB,CAClBD,IAAKD,EACLhC,MAAK,UAAEa,EAAYmB,UAAd,aAAE,EAA+BhC,OAG1C,OACI,oCACI,kBAAC,EAAAhB,WAAD,CAAYvB,UAAWD,EAAOc,OAAQoB,IAAAA,KAAU,8BAChD,kBAAC,EAAAV,WAAD,CAAYvB,UAAWD,EAAOwC,OAC1B,kBAAC4B,EAAA,EAAD,CAAenE,UAAWD,EAAO6C,KAAMwB,OAAOC,EAAAA,EAAAA,KAAoBrB,KAC7DsB,EAAAA,EAAAA,KAAStB,EAAOT,QAGpBgC,GACG,oCACM,IAAGtC,IAAAA,KAAU,UACf,kBAACkC,EAAA,EAAD,CAAenE,UAAWD,EAAO6C,KAAMwB,OAAOC,EAAAA,EAAAA,KAAoBI,IAC7DA,EAAclC,OACT+B,EAAAA,EAAAA,KAASG,EAAclC,QACvBmC,EAAAA,EAAAA,KAAYD,OAQ9C,QACI,OAAO,OAKgBE,K,eClIhC,MAAMrF,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,CACFc,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B7B,SAAU,OACVF,WAAY,OACZgE,UAAW,kBCONC,EAAiB,IAAiC,IAAhC,QAACnD,EAAD,UAAU1B,GAAsB,EAC3D,MAAMD,EAAST,IACTwF,GAAQzB,EAAAA,EAAAA,YAAW0B,EAAAA,GAEzB,OACI,kBAAC,EAAAxD,WAAD,CAAYvB,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IJHxB,SAC3B0C,EACAsC,GAGC,IAFDC,EAEC,uDAF0Cb,GAAUA,EACrDc,EACC,uDADS,IAEV,MAAMC,EAAM,GACZ,IAAIC,EAAa,GACbC,GAAU,EAEd,IAAK,IAAIC,EAAI,EAAGA,GAAK5C,EAAK6C,OAAQD,IAAK,CACnC,MAAME,EAAmB9C,EAAK4C,GACxBG,EAAgB/C,EAAK4C,EAAI,GACzBI,EAAkBJ,IAAM5C,EAAK6C,OAAS,EAE5CH,GAAcI,EAEVA,IAAqBN,GAAiB,IAANI,IAChCD,GAAU,GAEVA,GAAWL,EAASW,SAASP,EAAWQ,MAAMV,EAAQK,WACtDF,GAAU,EACVF,EAAIU,KAAKZ,EAAUG,IACnBA,EAAa,IAGbK,IAAkBP,IAClBG,GAAU,EACVF,EAAIU,KAAKT,GACTA,EAAa,IAGbM,GACAP,EAAIU,KAAKT,GAIjB,OAAOD,EIjCEW,CAAgBpE,EAAQqE,QAASrE,EAAQsE,YAAaC,IACnD,MAAMC,EAAOpB,EAAMb,MAAMiC,GAASA,EAAKC,WAAaF,EAAQL,MAAM,KAClE,OAAOM,EAAO,kBAAC,EAAAE,KAAD,CAAMC,KAAO,UAASH,EAAKI,SAAUL,GAAkBA,KACtEM,KAAI,CAACC,EAAIC,IACR,kBAAC,EAAAC,SAAD,CAAUC,IAAKF,GAAMD,O,eCtB9B,MAAMlH,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,CACFsF,MAAO,OACPC,OAAQ,OACR/F,SAAU,OACVsB,MAAOF,EAAMG,QAAQK,KAAKoE,UAC1BrH,gBAAiB,gC,gNCElB,MAAMsH,EAAS,IAA4C,IAA3C,UAAC/G,EAAD,SAAYmB,GAA+B,EAAlBrB,E,kXAAkB,6BAC9D,MAAMC,EAAST,IACf,OACI,kBAAC,IAAD,KAAeQ,EAAf,CAAsBE,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,KACxBmB,ENThC6F,MAAM,KACNT,KAAKU,GAASA,EAAK,GAAGC,gBACtBC,KAAK,M,wBOLP,MAAM7H,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,CACFsF,MAAO,OACPnH,gBAAiB,OACjB2H,WAAY,SACZ,aAAc,CACVtG,SAAU,QAEd,iBAAkB,CACdH,QAAS,YACT0G,OAAQ,oCAEZ,WAAY,CACRC,aAAc,MACdD,OAAQ,6BACR1G,QAAS,YACT4G,QAAS,EACTtG,SAAU,mBAEd,iBAAkB,CACdN,QAAS,QACT2G,aAAc,MACd7H,gBAAiB,qBACjB+H,UAAW,6FACX3H,UAAW,qBAEf,uBAAwB,CACpB4H,UAAW,QACXC,UAAW,UAEf,uBAAwB,CACpB/G,QAAS,WACTyB,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B7B,SAAU,OACVnB,WAAYuC,EAAMyF,YAAYC,OAAO,CAAC,qBACtC,sBAAuB,CACnBnI,gBAAiB,sBAI7BwG,QAAS,CACL4B,SAAU,WACVC,OAAQ,EACR1F,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BkF,WAAY,iFACZC,cAAe,Y,gNCpChB,MAAMC,EAAwB,IAA4C,IAA3C,SAACC,EAAD,UAAWlI,GAAgC,EAAlBF,E,kXAAkB,6BAC7E,MAAMC,EAAST,IACTwF,GAAQzB,EAAAA,EAAAA,YAAW0B,EAAAA,GAWzB,OACI,kBAAC,IAAD,KAAmBjF,EAAnB,CAA0BoI,SAVT,CACjBC,EACA/D,EACAgE,EACApD,KAEAkD,EAAS9D,EAAOgE,GAAgBC,EAAAA,EAAAA,MAAKrD,EAASuB,KAAI,QAAC,QAAC+B,GAAF,SAAeA,EAAQ1C,MAAM,SAI7B5F,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,KACjF,kBAAC,IAAD,CACIkF,QAAQ,IACRqD,KAAMzD,EAAMyB,KAAI,QAAC,SAACJ,GAAF,QAAiB,CAACqC,GAAIrC,EAAUmC,QAASnC,MACzDsC,iBAAkB,CAACN,EAAGhC,IAAc,IAAGA,IACvCuC,kBAAkB,EAClB1I,UAAWD,EAAOkG,YCzBrB3G,GAAYC,EAAAA,EAAAA,GAAW,CAChC+B,KAAM,QAAC,UAACqH,GAAF,QAA+B,CACjChI,QAASgI,EAAY,gBAAkB,mBACvCrB,aAAc,MACd7H,gBAAiBkJ,EAAY,cAAgB,yBAEjDC,UAAW,QAAC,UAACD,GAAF,QAA+B,CACtCE,SAAUF,EAAY,OAAS,sBAEnCG,KAAM,CACF3G,aAAc,GAElBU,KAAM,CACFyF,QAAS,OACTS,WAAY,UAEhBC,OAAQ,CACJC,YAAa,OAEjBC,QAAS,QAAC,UAACP,GAAF,QAA+B,CAACQ,WAAYR,EAAY,IAAM,OAAQS,UAAW,QAC1FC,OAAQ,CACJ,cAAe,CACXF,WAAY,U,eCGxB,MAAMG,EAAkBC,IACpB,OAAQA,GACJ,IAAK,OACD,OAAOtH,IAAAA,KAAU,YACrB,IAAK,WACD,OAAOA,IAAAA,KAAU,sCACrB,QACI,MAAO,KAeNuH,EAAkB,IAYlB,IAZmB,SAC5BC,EAD4B,UAE5BzJ,EAF4B,IAG5BwE,EAH4B,kBAI5B3C,EAJ4B,WAK5B2B,EAL4B,UAM5BkG,EAN4B,QAO5BhI,EAP4B,MAQ5BiI,EAR4B,iBAS5BC,EAT4B,eAU5BC,EAV4B,SAW5BC,GACS,EACT,MAAMnB,EAAYiB,GAAoBC,EAChC9J,EAAST,EAAU,CAACqJ,UAAAA,IAEpBxC,GAAWlD,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cACvB,YAAC6G,EAAD,cAAcC,EAAd,QAA6BC,EAA7B,YAAsCC,EAAtC,UAAmDC,IAAa9G,EAAAA,EAAAA,YAAW+G,EAAAA,IAE1EhG,EAAOiG,IAAYC,EAAAA,EAAAA,UAAS,KAC5BlC,EAAgBmC,IAAqBD,EAAAA,EAAAA,UAAS,KAC9CtF,EAAUwF,IAAeF,EAAAA,EAAAA,UAAS,KAClCG,EAASC,IAAcJ,EAAAA,EAAAA,WAAS,GAEjCK,GAAcC,EAAAA,EAAAA,KACdC,EAA4B,KAAjBzG,EAAM0G,OACjBC,EAAoBN,GAAWI,EAC/BtB,EAAS7H,MAAAA,OAAH,EAAGA,EAAS6H,OAClByB,EAAc,CAAC5G,EAAegE,EAAwBpD,KACxDwF,EAAYxF,GACZqF,EAASjG,GACTmG,EAAkBnC,IAEhB6C,EAAa,KACfnB,MAAAA,GAAAA,IACAkB,EAAY,GAAI,GAAI,MA6DxBE,EAAAA,EAAAA,YAAU,KACFxB,GACAA,EAAUyB,QAAQC,WAEvB,CAAC1B,EAAWqB,KAEfG,EAAAA,EAAAA,YAAU,KACFtB,GAAoBC,EAEhBQ,EADAT,EACSlI,EAAQqE,QAER4D,EAAM5D,SAGnBkF,MAEL,CAACrB,EAAkBC,IAEtB,MAAMwB,EAAa1C,EAAY,QAAU,SACzC,OACI,kBAAC,EAAApF,IAAD,CAAKvD,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACpC,0BAAMsL,SAzEQC,IAClBA,EAAEC,iBACF,MAAMC,GAAUC,EAAAA,EAAAA,MAAK,CACjB,EACIC,EAAAA,EAAAA,SAAQjK,GACR,IACIsI,EAAc,CACVjE,QAASqC,EACTpC,WAAYhB,EACZxB,WAAYA,EACZgB,IAAAA,EACA3C,kBAAAA,KAGZ,EACI8J,EAAAA,EAAAA,QAAO/B,GACP,IACIM,EAAY,CACRnE,QAASqC,EACTpC,WAAYhB,EACZ4G,UAAWlK,EAAQkK,UACnBpI,WAAYA,EACZqI,QAASnK,EAAQmK,QACjBhK,kBAAAA,EACA2C,IAAAA,KAGZ,EACImH,EAAAA,EAAAA,QAAO9B,GACP,IACIM,EAAU,CACNpE,QAASqC,EACTpC,WAAYhB,EACZ4G,UAAWlK,EAAQkK,UACnBE,QAASnC,EAAMmC,WAG3B,CACIC,EAAAA,EACA,IACIhC,EAAY,CACRhE,QAASqC,EACTpC,WAAYhB,EACZ4G,UAAWlK,EAAQkK,UACnBI,OAA2B,SAAnBtK,EAAQ6H,OAAoB,OAAS,SAC7C/E,IAAAA,OAIhB,OAAOmG,EAAYc,KAAWQ,KAAKhB,GAAYiB,MAAMC,QAAQC,MAwB3BpM,UAAWD,EAAO+I,MAC5C,kBAAC,EAAAvF,IAAD,CAAKvD,UAAWD,EAAO8C,OACjB8F,GAAa,kBAAC,EAAD,CAAQvH,QAAS,CAACE,KAAMvB,EAAOiJ,SAAU7C,GACxD,kBAAC8B,EAAD,CACIjI,UAAWD,EAAO6I,UAClByD,SAAUpC,EACV/B,SArFC,CAACoE,EAAkBC,EAA2BvH,KAC/DgG,EAAYsB,EAAUC,EAAmBvH,IAqFzByE,SAAUA,EACVrF,MAAOA,EACPoI,QApFA,IAAM9B,GAAW,GAqFjB+B,OApFD,IAAM/B,GAAW,GAqFhBgC,YAAapD,EAAeC,MAGnCwB,GACG,kBAAC,EAAAxH,IAAD,CAAKvD,UAAWD,EAAOmJ,SACnB,kBAAC,EAAAyD,OAAD,CACI3M,UAAWD,EAAOsJ,OAClB7H,QAAQ,YACRY,MAAM,UACNiK,UAAWxB,GAAYZ,EACvBpG,KAAK,SACLxD,KAAMgL,GAtJZ,EAAC9B,EAAiBK,EAA4BC,IAC5DD,GAAoBC,EACb5H,IAAAA,KAAU,QAEN,SAAXsH,GAAgC,aAAXA,EACdtH,IAAAA,KAAU,SAGdA,IAAAA,KAAU,WAgJQ2K,CAAcrD,EAAQK,EAAkBC,IAE7C,kBAAC,EAAA8C,OAAD,CACIN,SAAUpC,EACV4C,QAxGH,IAAM5B,IAyGHjL,UAAWD,EAAOsJ,OAClB7H,QAAQ,WACRY,MAAM,UACN/B,KAAMgL,GAELpJ,IAAAA,KAAU,eC1M1B3C,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChC4K,OAAQ,CACJxE,QAAS,QAEbU,OAAQ,CACJC,YAAa,OAEjB9C,SAAU,CACNhE,aAAc,MACdC,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B7B,SAAU,OACVC,WAAY,IACZH,WAAY,QAEhBmM,UAAW,CACP3D,UAAW,MACXH,YAAa,MACb7G,MAAOF,EAAMG,QAAQK,KAAKoE,UAC1BhG,SAAU,OACVF,WAAY,OACZI,WAAY,UAEhBgM,KAAM,CACF7D,WAAY,QAEhB8D,cAAe,CACX7D,UAAW,SAEf8D,QAAS,CACL9D,UAAW,QAEf+D,aAAc,CACVrF,OAAQ,mBAEZoB,QAAS,CACLE,UAAW,OACXjH,aAAc,OACdmG,QAAS,OAET,sBAAuB,CACnBa,WAAY,SAGpBE,OAAQ,CACJvI,SAAU,OACVF,WAAY,YCnBPwM,EAAU,IAA8E,IAA7E,QAACC,EAAD,UAAUrN,EAAV,IAAqBwE,EAArB,QAA0B9C,EAA1B,kBAAmCG,EAAnC,WAAsD2B,GAAuB,EACjG,MAAMzD,EAAST,IACTmK,GAAW6D,EAAAA,EAAAA,WACV1D,EAAkB2D,IAAuBjD,EAAAA,EAAAA,WAAS,GACnDnE,GAAmBlD,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cAC/B,UAAC0I,EAAD,UAAY4B,EAAZ,YAAuBC,GAAe/L,EACtCgM,EAAmBF,IAAcrH,GACjC,cAACwH,EAAD,aAAgBC,EAAhB,QAA8B3D,EAA9B,cAAuC4D,IAAiBxK,EAAAA,EAAAA,YAAW+G,EAAAA,IAEzEc,EAAAA,EAAAA,YAAU,KACFtB,GACAH,EAAS0B,QAAQ2C,UAEtB,CAAClE,IAEJ,MAAMmE,GAAYC,EAAAA,EAAAA,UACd,IAAM,CACF,CACItL,KAAMT,IAAAA,KAAU,QAChB4K,QAAS,IAAMU,GAAoB,IAEvC,CACI7K,KAAMT,IAAAA,KAAU,UAChB4K,QAAS,IAAMgB,EAAc,CAACrJ,IAAAA,EAAKoH,UAAAA,OAG3C,CAACiC,EAAerJ,EAAKoH,IAUnBqC,EACF,kBAACzE,EAAD,CACIC,SAAUA,EACVjF,IAAKA,EACL3C,kBAAmBA,EACnB2B,WAAYA,EACZsG,SAAU,IAAMyD,GAAoB,GACpC3D,iBAAkBA,EAClBlI,QAASA,IAGjB,OACI,kBAAC,EAAA6B,IAAD,CAAKvD,UAAWA,GACZ,kBAAC,EAAAuD,IAAD,CAAKvD,UAAWD,EAAO+M,QACnB,kBAAC,EAAD,CAAQ1L,QAAS,CAACE,KAAMvB,EAAOiJ,SAAUwE,GACzC,kBAAC,EAAAjK,IAAD,CAAKqD,MAAM,QACP,kBAAC,EAAArF,WAAD,CAAYvB,UAAWD,EAAOoG,UAAWqH,IAE7C,kBAAC,EAAAjM,WAAD,CAAYvB,UAAWD,EAAOgN,WAAYhL,EAAW0L,IACpDC,GACG,kBAACQ,EAAA,EAAD,CACIC,gBAAiBC,EAAAA,EACjBC,YAAa,CACTlO,KAAMmO,EAAAA,EACNC,aAActM,IAAAA,KAAU,cAE5BuM,aAAc,CAACC,eAAgB,CAACnN,KAAMvB,EAAOoN,eAC7CY,UAAWA,EACXW,OAAO,gCAInB,kBAAC,EAAAnL,IAAD,CAAKvD,UAAWD,EAAOiN,MACnB,kBAACjK,EAAD,CAAerB,QAASA,EAAS1B,UAAWD,EAAOkN,gBAClDrD,EAAmBqE,EAAkB,kBAACpJ,EAAD,CAAgBnD,QAASA,EAAS1B,UAAWD,EAAOmN,UAC1F,kBAAC,EAAA3J,IAAD,CAAKvD,UAAWD,EAAOmJ,SACnB,kBAAC,EAAA9C,KAAD,CAAMpG,UAAWD,EAAOsJ,OAAQwD,QAASQ,EAASsB,UAAU,UACvD1M,IAAAA,KAAU,UAEK,SAAnBP,EAAQ6H,QACL,kBAAC,EAAAnD,KAAD,CAAMiG,SAAUpC,EAASjK,UAAWD,EAAOsJ,OAAQwD,QA/CjD,KAClBc,EAAc,CAAC/B,UAAAA,EAAWpH,IAAAA,KA8CiEmK,UAAU,UAChF1M,IAAAA,KAAU,YAGC,aAAnBP,EAAQ6H,QACL,kBAAC,EAAAnD,KAAD,CAAMiG,SAAUpC,EAASjK,UAAWD,EAAOsJ,OAAQwD,QAhDlD,KACjBe,EAAa,CAAChC,UAAAA,EAAWpH,IAAAA,KA+CiEmK,UAAU,UAC/E1M,IAAAA,KAAU,gBC5G1B3C,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,CACFgH,QAAS,OACT3H,QAAS,MACT2G,aAAc,MACd7H,gBAAiB,wBAErBuJ,OAAQ,CACJC,YAAa,OAEjB6D,OAAQ,CACJxE,QAAS,OACTnG,aAAc,OAElBgE,SAAU,CACN/D,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B7B,SAAU,OACVC,WAAY,IACZH,WAAY,QAEhBsM,QAAS,CACL/K,aAAc,MACdC,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B7B,SAAU,OACVF,WAAY,QAEhBmM,UAAW,CACP3K,MAAOF,EAAMG,QAAQK,KAAKoE,UAC1BhG,SAAU,OACVF,WAAY,OACZI,WAAY,UAEhB4N,OAAQ,CACJzF,WAAY,MACZ/G,MAAOF,EAAMG,QAAQK,KAAKoE,UAC1BhG,SAAU,OACV+N,UAAW,SACXjO,WAAY,YCbPkO,EAAiB,IAAwD,IAAvD,UAAC9O,EAAD,MAAY2J,EAAZ,IAAmBnF,EAAnB,QAAwB9C,EAAxB,UAAiCgI,GAAsB,EAClF,MAAMD,GAAW6D,EAAAA,EAAAA,WACVzD,EAAgBkF,IAAqBzE,EAAAA,EAAAA,WAAS,IAC/C,UAACkD,EAAD,OAAYxB,EAAZ,YAAoByB,GAAe9D,EAEnCqF,EAAiBxB,KADEvK,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cAG/B,YAAC+L,IAAe5L,EAAAA,EAAAA,YAAW+G,EAAAA,IAEjCc,EAAAA,EAAAA,YAAU,KACFrB,GACAJ,EAAS0B,QAAQ2C,UAEtB,CAACjE,IAEJ,MAAM9J,EAAST,IAETyO,GAAYC,EAAAA,EAAAA,UACd,IAAM,CACF,CACItL,KAAMT,IAAAA,KAAU,QAChB4K,QAAS,IAAMkC,GAAkB,IAErC,CACIrM,KAAMT,IAAAA,KAAU,UAChB4K,QAAS,IAAMoC,EAAY,CAACzK,IAAAA,EAAKoH,UAAWlK,EAAQkK,UAAWjC,MAAAA,OAGvE,CAACsF,EAAazK,EAAK9C,EAAQkK,UAAWjC,IAGpCsE,EACF,kBAACzE,EAAD,CACIC,SAAUA,EACVC,UAAWA,EACXlF,IAAKA,EACLsF,SAAU,IAAMiF,GAAkB,GAClClF,eAAgBA,EAChBF,MAAOA,EACPjI,QAASA,IAIjB,OACI,kBAAC,EAAA6B,IAAD,CAAKvD,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACpC,kBAAC,EAAD,CAAQoB,QAAS,CAACE,KAAMvB,EAAOiJ,SAAUwE,GACzC,kBAAC,EAAAjK,IAAD,CAAK2L,SAAU,GACX,kBAAC,EAAA3L,IAAD,CAAKvD,UAAWD,EAAO+M,QACnB,kBAAC,EAAAvL,WAAD,CAAYvB,UAAWD,EAAOoG,UAAWqH,GAE7B,YAAXxB,GACG,kBAAC,EAAAzK,WAAD,CAAYvB,UAAWD,EAAO6O,QAAS3M,IAAAA,KAAU,uBAEzC,WAAX+J,GAAuB,kBAAC,EAAAzK,WAAD,CAAYvB,UAAWD,EAAO6O,QAAS3M,IAAAA,KAAU,eAEjE,YAAX+J,IACInC,EAAiBoE,EAAkB,kBAACpJ,EAAD,CAAgB7E,UAAWD,EAAOmN,QAASxL,QAASiI,KAC5F,kBAAC,EAAApI,WAAD,CAAYvB,UAAWD,EAAOgN,WAAYhL,EAAW0L,KAExDuB,GACG,kBAACd,EAAA,EAAD,CACIC,gBAAiBC,EAAAA,EACjBC,YAAa,CACTlO,KAAMmO,EAAAA,EACNC,aAActM,IAAAA,KAAU,cAE5B8L,UAAWA,EACXW,OAAO,iCC3FdpP,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACFuH,SAAU,OACVlI,QAAS,qBAEbwO,SAAU,GACVC,eAAgB,CACZjN,aAAc,OAElB0J,QAAS,CACL1C,WAAY,QAEhB8E,gBAAiB,CACb9E,WAAY,QAEhBzH,QAAS,OCGA2N,GAAoBC,EAAAA,EAAAA,OAC7B,IAA2F,IAA1F,IAAC9K,EAAD,kBAAM3C,EAAN,WAAyB2B,EAAzB,QAAqCpC,EAArC,UAA8CsI,EAA9C,YAAyD6F,EAAzD,QAAsE7N,GAAoB,EACvF,MAAM+H,GAAW6D,EAAAA,EAAAA,UACXvN,EAAST,EAAU,CAAC8B,QAAAA,IAMpB6M,EACF,kBAACzE,EAAD,CACIxJ,UAAWD,EAAOkO,gBAClBxE,SAAUA,EACVC,UAAWA,EACXlF,IAAKA,EACL3C,kBAAmBA,EACnB2B,WAAYA,EACZ9B,QAASA,IAIjB,OACI,kBAAC,EAAA6B,IAAD,CAAKvD,UAAWD,EAAOuB,MAClBI,GACG,oCACI,yBAAK1B,UAAWD,EAAOoP,SAAUhQ,IAAKoQ,GAClC,kBAACnC,EAAD,CACI1L,QAASA,EACT8C,IAAKA,EACL6I,QAxBJ,KAChB5D,EAAS0B,QAAQ2C,SAwBG9N,UAAWD,EAAO2B,QAClBG,kBAAmBA,EACnB2B,WAAYA,IAEhB,kBAAC,EAAAD,IAAD,CAAKvD,UAAWD,EAAO8L,SAClBnK,EAAQmK,QAAQtF,KAAKoD,GAClB,kBAACmF,EAAD,CACInI,IAAKgD,EAAMmC,QACX9L,UAAWD,EAAOqP,eAClBzF,MAAOA,EACPnF,IAAKA,EACL9C,QAASA,QAKxBuM,IAGPvM,GAAWuM,O,mGClEtB,MAAM3O,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACFgH,QAAS,OACTS,WAAY,SAEhByG,UAAW,CACPC,WAAY,SACZ,eAAgB,CACZA,WAAY,WAEhB,CAAE,IAAGC,EAAAA,aAA+C,CAChDD,WAAY,YAGpBE,WAAY,O,mRCfhB,MAiBA,EAjBmE7P,GAE3D,2BACI8G,MAAO,GACPC,OAAQ,GACR+I,YAAa,IACbC,KAAK,OACLC,SAAS,UACTC,QAAQ,YACRC,MAAM,8BACFlQ,GAEJ,0BAAMmQ,EAAE,mGCZP3Q,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACFuG,SAAU,WACVhB,OAAQ,OACRyB,QAAS,OACTS,WAAY,SACZmH,eAAgB,SAChB/G,WAAY,MACZgH,OAAQ,WAEZhQ,KAAM,CACF,UAAW,CACPyP,YAAa,KAGrBQ,gBAAiB,CACbvI,SAAU,WACVjB,MAAO,OACPC,OAAQ,OACRjG,WAAY,OACZ0H,QAAS,OACTS,WAAY,SACZmH,eAAgB,SAChBG,IAAK,OACLC,KAAM,EACNC,MAAO,EACPC,OAAQ,EACRpO,MAAO,QACPtB,SAAU,OACVkH,cAAe,YCnBjByI,EAAgBC,IAAAA,YAAiB,CAAC,EAA4BvR,KAAmC,IAA/D,SAACgC,EAAD,QAAW0L,GAAoD,EACnG,MAAM9M,EAAST,IAEf,OACI,kBAAC,EAAAqR,QAAD,CAAS9P,MAAOoB,IAAAA,KAAU,iBACtB,yBAAK9C,IAAKA,EAAKa,UAAWD,EAAOuB,KAAMuL,QAASA,GAC5C,kBAAC,EAAD,CAAa7M,UAAWD,EAAOI,OAC/B,yBAAKH,UAAWD,EAAOqQ,iBAAkBjP,QAMzDsP,EAAcpR,YAAc,gBAE5B,U,gNCzBA,MAiBA,EAjBgES,GAExD,2BACI8G,MAAO,GACPC,OAAQ,GACR+I,YAAa,IACbC,KAAK,OACLC,SAAS,UACTC,QAAQ,YACRC,MAAM,8BACFlQ,GAEJ,0BAAMmQ,EAAE,iOCWpB,EAZyB,IAAiC,IAAhC,UAACjQ,EAAD,QAAY6M,GAAoB,EACtD,MAAM9M,EAAST,IAEf,OACI,kBAAC,EAAAqR,QAAD,CAAS9P,MAAOoB,IAAAA,KAAU,gBACtB,yBAAKjC,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,GAAY6M,QAASA,GACzD,kBAAC+D,EAAD,CAAgB5Q,UAAWD,EAAOI,U,8CCZ3C,MAAMb,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,GACNwL,OAAQ,CACJxE,QAAS,OACTS,WAAY,SACZlC,OAAQ,OACRrE,YAAa,OACbqO,aAAc,OAElBC,WAAY,CACR7H,YAAa,OACbX,QAAS,OACTS,WAAY,UAEhBlI,MAAO,CACHoI,YAAa,OACb7G,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B7B,SAAU,QAEdiQ,QAAS,CACLvO,YAAa,OACbC,WAAY,6BACZL,MAAOF,EAAMG,QAAQK,KAAKoE,UAC1BhG,SAAU,OACVF,WAAY,QAEhBoQ,cAAe,CACXlJ,OAAQ,IACR,UAAW,CACPrI,gBAAiB,gBAGzBwR,OAAQ,CACJrK,MAAO,QACPU,aAAc,eAElB4J,kBAAmB,CACfvQ,QAAS,cAEbe,QAAS,QAAC,UAACyP,GAAF,QAAyB,CAC9BhI,WAAY,OACZF,YAAakI,EAAY,MAAQ,QAErCtF,QAAS,QAAC,UAACsF,GAAF,QAAyB,CAC9BhI,WAAY,MACZF,YAAakI,EAAY,MAAQ,QAErClD,gBAAiB,QAAC,UAACkD,EAAD,YAAYC,GAAb,QAAsC,CACnDjI,WAAY,MACZF,YAAakI,EAAYC,EAAc,EAAI,QAE/CjC,SAAU,CACN1H,UAAW,QACXC,UAAW,YCvCN2J,EAAqB,IAAmF,IAAlF,IAAC7M,EAAD,kBAAM3C,EAAN,WAAyB2B,EAAzB,SAAqC8N,EAArC,QAA+CC,EAA/C,KAAwDC,EAAxD,QAA8D9P,GAAoB,EACjH,MAAO0P,EAAaK,IAAkBnH,EAAAA,EAAAA,UAAS,GAEzCvK,EAAST,EAAU,CAAC8R,YAAAA,EAAaD,UADL,IAAhBC,IAGZ1H,GAAY4D,EAAAA,EAAAA,QAAO,OACnB,cAACK,EAAD,QAAgB+D,EAAhB,QAAyBzH,IAAW5G,EAAAA,EAAAA,YAAW+G,EAAAA,GAC/CuH,EAAa,GAAIjQ,MAAAA,OAAJ,EAAIA,EAASmK,QAAQtG,QAMxC,OACI,kBAACqM,EAAA,EAAD,CACIlI,UAAWA,EACX4H,SAAUA,EACVE,KAAMA,EACNK,UAAU,cACVN,QAASA,EACTvR,UAAWD,EAAOkR,QAElB,kBAAC,EAAA1N,IAAD,CAAKvD,UAAWD,EAAO+M,QACnB,kBAAC,EAAAvJ,IAAD,CAAKvD,UAAWD,EAAO+Q,YACnB,kBAAC,EAAAvP,WAAD,CAAYvB,UAAWD,EAAOc,OAAQoB,IAAAA,KAAU,aAC/CP,IAAYgQ,GACT,kBAAC,EAAAnQ,WAAD,CAAYvB,UAAWD,EAAOgR,SACzB9O,IAAAA,OAAY0P,GADjB,IAC8C,IAAfA,EAAmB1P,IAAAA,KAAU,QAAUA,IAAAA,KAAU,WAIvFP,IAAYgQ,GACT,kBAACxR,EAAA,EAAD,CACIF,UAAWD,EAAOiR,cAClB3Q,KAAK,IACLwM,QA1BE,KAClBc,EAAc,CAAC/B,UAAWlK,EAAQkK,UAAWpH,IAAAA,KA0B7B6H,SAAUpC,EACV6H,iBAAiB,EACjBvD,aAActM,IAAAA,KAAU,WACxB9B,KAAM4R,EAAAA,EACN3P,MAAM,cAIhBsP,GACE,kBAACrC,EAAA,EAAD,CACI3F,UAAWA,EACX6F,YAAcyC,IACNA,GACAP,EAAeO,EAAKC,YAAcD,EAAKE,cAG/C9Q,QAAS,CACLE,KAAMvB,EAAOmR,kBACbrF,QAAS9L,EAAO8L,QAChBoC,gBAAiBlO,EAAOkO,gBACxBkB,SAAUpP,EAAOoP,SACjBzN,QAAS3B,EAAO2B,SAEpB8C,IAAKA,EACL3C,kBAAmBA,EACnB2B,WAAYA,EACZ9B,QAASA,MCyB7B,EAvF0B,IAQb,IARc,UACvB1B,EADuB,IAEvBwE,EAFuB,WAGvBhB,EAHuB,kBAIvB3B,EAJuB,wBAKvBsQ,EALuB,oBAMvBC,GAAsB,EANC,WAOvBzC,GAAa,GACJ,EACT,MAAM5P,EAAST,KAERgS,EAAUe,IAAe/H,EAAAA,EAAAA,UAAgC,OACzDgI,EAAiBC,IAAsBjI,EAAAA,EAAAA,WAAkB,GAC1DkI,EAAcF,GAAmBG,QAAQnB,IAEzC,eAACoB,EAAD,YAAiBC,EAAjB,WAA8BC,EAA9B,oBAA0CC,EAA1C,YAA+DC,IAAezP,EAAAA,EAAAA,YAChF+G,EAAAA,GAEE2I,IACAJ,KAAiBG,GAAeA,EAAYnN,SAASnC,IACrDwP,IAAgBL,MAAAA,OAAA,EAAAA,EAAcnO,KAAQ,IAAIyO,QAAO,QAAC,OAAC1J,GAAF,QAAyB,aAAXA,KAAuB2J,UACtFC,GAA8Bf,GAAwBA,GAA+C,IAAxBY,EAAazN,OAC1F6N,EAA+C,OAAnBV,GAA2BF,GAkB7Da,EAAAA,EAAAA,IAAmB,KACXlB,GACAA,EAAwBK,KAE7B,CAACA,IAEJ,MAAMc,GAA8BjQ,EAAAA,EAAAA,YAAWkQ,EAAAA,GACzCC,GAAuBxF,EAAAA,EAAAA,UAAQ,IAC1BsF,EAA8B,IAAIzR,KAAsByR,GAA+BzR,GAC/F,CAACyR,EAA6BzR,IAEjC,OACIkR,GACI,yBAAK/S,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACnCmT,GACG,kBAAC,EAAD,CACInT,UAAWQ,GAAAA,CAAWT,EAAOyP,UAAW,CACpC,CAACzP,EAAO4P,YAAaA,GAAcyD,IAEvCvG,QA9BiB4G,IACjCpB,EAAYoB,EAAMC,eAClBnB,GAAmB,MA+BVS,EAAazM,KAAI,IAA0B,IAAzB,QAACsF,EAAD,UAAUD,GAAe,EACxC,OACI,kBAAC,EAAD,CACIzM,IAAKyM,KAAc8G,MAAAA,OAAL,EAAKA,EAAgB9G,WAAYyG,EAAc,KAC7D1L,IAAKiF,EACLiB,QAAS,IA3CCjB,CAAAA,IAC9BgH,EAAWhH,GACX2G,GAAmB,IAyCgBoB,CAAyB/H,IAEvC,EAAIC,MAIjB,kBAACwF,EAAD,CACIC,SAAUA,EACVE,KAAMgB,EACNjB,QA1CI,KAChBc,EAAY,MACZQ,IACAN,GAAmB,IAwCP/N,IAAKA,EACL3C,kBAAmB2R,EACnBhQ,WAAYA,EACZ9B,QAASgR,O,8EC/F7B,MAAMkB,GAAaC,EAAAA,EAAAA,kBAAiBC,EAAAA,SAcvBC,EAAejU,IACxB,MAAMkU,EATqBlU,CAAAA,IAC3B,MAAMmU,GAAU3G,EAAAA,EAAAA,QAAOsG,GAEvB,OAAK9T,EAAMqB,SAEJ,kBAAC,EAAA+S,YAAD,CAAaD,QAASA,EAAQ9I,QAAQgJ,iBAAkBrU,EAAMqB,UAFzC,MAMTiT,CAAsBtU,GACzC,OAAO,oCAAGkU,K,0JCpBP,MAAM1U,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCmS,WAAY,CACR,aAAc,CACVjS,MAAOF,EAAMG,QAAQ2J,OAAOsI,OAC5B7U,iBAAiB8U,EAAAA,EAAAA,IAAKrS,EAAMG,QAAQ2J,OAAOsI,OAAQ,KACnD,UAAW,CACP7U,iBAAiB8U,EAAAA,EAAAA,IAAKrS,EAAMG,QAAQ2J,OAAOsI,OAAQ,QAI/DE,SAAU,GACVC,MAAO,CACHC,SAAU,SAEdC,SAAU,CACNjU,UAAW,QAEfkU,SAAU,CACNxS,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B7B,SAAU,OACVF,WAAY,OACZiU,cAAe,OCbjBC,GAAsBC,EAAAA,EAAAA,GAAYC,EAAAA,UAOlCC,GAAmBhW,EAAAA,EAAAA,aAAW,CAAC,EAAuCE,KAAkC,IAAzE,KAAC8H,EAAD,YAAOiO,EAAcC,EAAAA,UAAoD,EAC1G,MAAMpV,EAAST,KACT,SAAC+M,EAAD,KAAW3J,EAAX,QAAiB0S,EAAjB,QAA0BvI,EAA1B,GAAmCrE,EAAK,GAAxC,WAA4C6M,EAA5C,SAAwDb,GAAYvN,EAM1E,OACI,kBAAC6N,EAAD,CACIvG,aAAc6G,EACdtD,iBAAiB,EACjB1Q,QAAS,CAACE,KAAMvB,EAAO4U,UACvB9H,QAVatB,IACjB2J,EAAY3J,GACZsB,EAAQtB,IASJc,SAAUA,EACVlN,IAAKA,EACL,gBACA,iBAAiB,0BAAyBqJ,KAEzC6M,GAAc,kBAAC,EAAAC,SAAD,CAAUC,QAASf,EAAUpS,MAAM,YAClD,kBAAC,EAAAb,WAAD,CAAYH,QAAS,CAACE,KAAMvB,EAAO6U,WAAYlS,OAK3DuS,EAAiB5V,YAAc,mBAE/B,U,gNCrBA,SAAS6O,EAAT,GAWa,IAXqC,UAC9ClO,EAD8C,OAE9C0O,EAF8C,gBAG9CP,EAAkBxB,EAAAA,OAH4B,cAI9C6I,EAJ8C,UAK9CzH,EAAY,GALkC,YAM9CM,EAAc,GANgC,aAO9CG,EAAe,GAP+B,WAQ9CiH,EAAaN,EAAAA,SARiC,YAS9CD,EAAcC,EAAAA,SATgC,iBAU9CF,EAAmBS,GACV,EACT,MAAMC,EAAkBxH,EAClBpO,EAAST,IACTsW,GAAYtI,EAAAA,EAAAA,WACXuI,EAAQC,IAAaxL,EAAAA,EAAAA,WAAS,IAErC+I,EAAAA,EAAAA,IAAmB,KACfwC,EAASJ,IAAeP,MACzB,CAACW,IAEJ,MAAME,GAAeC,EAAAA,EAAAA,cAAazK,IAC9BA,MAAAA,GAAAA,EAAG0K,kBACHH,GAAWtE,IAAUA,MACtB,IAMH,OACI,oCACI,kBAACmE,EAAD,GACIxW,IAAKyW,EACL5V,UAAWQ,GAAAA,CACPT,EAAOsU,WACP,CACI,CAACtU,EAAOyU,UAAWqB,GAEvB7V,GAEJ6M,QAASkJ,EACT,eAAcF,EACd,gBAAeA,EAASnH,OAASwH,EACjC,gBAAc,QACV7H,GAEHmH,GAEL,kBAACW,EAAA,EAAD,GACI3N,GAAIkG,EACJlN,QAAQ,OACRgQ,KAAMqE,EACNO,WAAW,EACXhV,QAAS,CAACqT,MAAO1U,EAAO0U,OACxBnD,SAAUsE,EAAUzK,QACpBoG,QAASwE,EACTM,aAAc,CACVC,SAAU,SACVC,WAAY,SAEhBC,gBAAiB,CACbF,SAAU,MACVC,WAAY,SAEhBE,UAAW,EACXC,mBAAoB,KACpBC,cAAe,CAACC,cAAef,IAC3BrH,GAEHT,EAAUxH,KA5CA,CAACU,EAAMrF,IACnB,kBAACqT,EAAD,CAAkBhO,KAAMA,EAAMN,IAAK/E,EAAOsT,YAAaa,QAiDtE7H,EAAmB7O,YAAc,qBAEjC,W,yHCtFA,MAyBA,EAzBqB,IAAsD,IAArD,OAAC2D,EAAD,gBAAS6T,EAAT,eAA0BC,GAA2B,EACvE,MAAM3T,GAAWF,EAAAA,EAAAA,aAAY8T,EAAAA,GAAAA,UAAAA,aACvBC,GAAoB/T,EAAAA,EAAAA,aAAY8T,EAAAA,GAAAA,UAAAA,uBAA6C,GAC7EE,GAAoBC,EAAAA,EAAAA,KAAe/T,EAAU6T,EAAmBhU,GAChEmU,GAAgBC,EAAAA,EAAAA,KAAoBJ,GAAmBK,EAAAA,EAAAA,KAAmBlU,EAAUH,EAAOa,OAC3FyT,EAAmB/L,IACrBA,EAAEgM,OAAOC,QAAU,KACnBjM,EAAEgM,OAAOE,KAAMC,EAAAA,EAAAA,KCtBe,0tJDwBlC,OACI,kBAAC,EAAA3Q,OAAD,CACI/G,UAAWQ,GAAAA,CAAWqW,EAAiBC,GACvCW,IAAKR,EACLU,SAAU,CAACH,QAASF,IAEpB,yBACItX,UAAW8W,EACXW,IAAKN,EACLS,IAAI,yBACJJ,QAASF,O,0SE5BzB,MAOA,EALwBxX,IACpB,MAAMkX,GAAoB/T,EAAAA,EAAAA,aAAY8T,EAAAA,GAAAA,UAAAA,uBAA6C,GACnF,OAAO,kBAAC,KAAD,KAAuBjX,EAAvB,CAA8B+X,aAJdC,EAI6Cd,EAJpCc,EAAIC,SAAS,KAAOD,EAAMA,EAAM,QAAzCA,IAAAA,I,mGCI3B,MAaA,EAbqB,IAAiC,IAAhC,UAAC9X,EAAD,QAAYkN,GAAoB,EAClD,MAAMnN,GAAST,EAAAA,EAAAA,KACf,OAAK4N,EAKD,kBAAC,EAAA3L,WAAD,CAAYC,QAAQ,UAAUxB,UAAWQ,GAAAA,CAAWT,EAAOiY,QAAShY,IAC/DkN,GALE,O,yUCEf,MAgBA,GAAeoC,EAAAA,EAAAA,OAhBM,IAAwE,IAAvE,aAAC2I,EAAD,SAAe9W,EAAf,UAAyBnB,EAAzB,QAAoCoB,GAAmC,EAAvBnB,E,kXAAuB,sDACzF,MAAMF,GAAST,EAAAA,EAAAA,KACT4Y,IAAaD,EAEnB,OACI,kBAAC,IAAD,GAAajY,UAAWQ,GAAAA,CAAWT,EAAOoY,QAASnY,EAAWoB,MAAAA,OAA5B,EAA4BA,EAASE,MAAO8W,OAAK,GAAKnY,GACnFkB,EACA+W,GACG,kBAAC,EAAAG,eAAD,CAAgBrY,UAAWQ,GAAAA,CAAWT,EAAOuY,WAAYlX,MAAAA,OAApB,EAAoBA,EAASkX,aAC9D,kBAAC,IAAD,CAAcpL,QAAS+K,U,iCCtBpC,MAAM3Y,GAAYC,E,SAAAA,IAAY2C,IAAD,CAChCiW,QAAS,CACLvR,MAAO,QAEX0R,WAAY,CACRC,OAAQ,kBAEZP,QAAS,CACL1P,QAAS,OACTlG,MAAOF,EAAMG,QAAQ+V,MAAMvV,KAC3B/B,SAAU,OACVF,WAAY,a,yDCXb,MAAMtB,GAAYC,E,SAAAA,GAAW,CAChCiZ,UAAW,CACPzX,WAAY,OC6BpB,EAxBoB,IAAmD,IAAlD,KAAC2B,EAAO,GAAR,UAAY8V,EAAY,GAAxB,UAA4BxY,GAAsB,EACnE,MAAMD,EAAST,IACTmZ,EAAQD,GAAa9V,EAAKsE,MAAM,IAAI0R,OAAQ,IAAGF,KAAc,OAEnE,OACI,8BACKA,EACKC,EAAMlS,KAAI,CAACoS,EAAMrT,IACf,0BACIqB,IAAKrB,EACLtF,UACI2Y,EAAKC,sBAAwBJ,EAAUI,oBACjC5Y,GAAaD,EAAOyY,UACpB,IAGTG,KAGPjW,K,gTC1BlB,MAgBA,EAhBkE5C,GAE1D,2BAAK8G,MAAO,GAAIC,OAAQ,GAAIkJ,QAAQ,YAAYC,MAAM,8BAAiClQ,GACnF,uBAAG+Y,OAAO,OAAOC,YAAa,EAAGjJ,KAAK,OAAOC,SAAS,WAClD,0BAAMG,EAAE,kBACR,0BACIA,EAAE,sKACFL,YAAa,IACbC,KAAK,OACLC,SAAS,c,eCRtB,MAAMxQ,GAAYC,E,SAAAA,IAAY2C,IAAD,CAChCZ,KAAM,CACFuG,SAAU,YAEdkR,MAAO,QAAC,WAACC,EAAD,YAAaC,GAAd,QAA+C,CAClDrS,MAAOoS,EACPnS,OAAQoS,EACRC,UAAW,QACXC,cAAe,WAEnBC,iBAAkB,CACd9Q,QAAS,OACTS,WAAY,SACZtJ,gBAAiB,sBAErB4Z,aAAc,CACVzS,MAAO,OACPC,OAAQ,OACRsC,WAAY,OACZF,YAAa,OACb7G,MAAOF,EAAMG,QAAQK,KAAKoE,WAE9BwS,UAAW,CACPhR,QAAS,Y,gNClBjB,MAAMiR,EACO,UADPA,EAEM,SAFNA,EAGK,QAGEC,EAAmB,CAC5BC,MAAO,CACHT,WAAY,IACZC,YAAa,KAEjBS,OAAQ,CACJV,WAAY,IACZC,YAAa,KAEjBU,MAAO,CACHX,WAAY,IACZC,YAAa,KAEjBW,SAAU,CACNZ,WAAY,QACZC,YAAa,UAqErB,GAAe3J,EAAAA,EAAAA,OAnDAxP,IACX,MAAM,IAAC2X,EAAD,UAAMzX,EAAN,mBAAiB6Z,EAAjB,KAAqCxZ,EAAOmZ,EAAiBC,MAA7D,QAAoEK,EAAU,MAAuBha,EAAdG,E,kXAA7F,CAA2GH,EAA3G,2DAEMia,EAAa1Z,GAAQmZ,EAAiBC,MACtC1Z,EAAST,EAAUya,IAClBC,EAAmBC,IAAwB3P,EAAAA,EAAAA,UAAiBiP,IAEnErO,EAAAA,EAAAA,YAAU,KACN+O,EAAqBV,KACtB,CAAC9B,IAEJ,MAQMyC,EAAiBF,IAAsBT,EACvCY,EAAgBH,IAAsBT,EAG5C,OAF0BS,IAAsBT,EAG5C,2BAAKvZ,UAAWQ,GAAAA,CAAWT,EAAOqZ,iBAAkBrZ,EAAOgZ,MAAO/Y,IAAgBC,GAC9E,kBAAC,IAAD,CAAmBD,UAAWD,EAAOsZ,gBAGzC,yBAAKrZ,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMuY,MAClCO,EAAAA,EAAAA,KAAa3C,IACX,2BACIA,IAAKA,EACLzX,UAAWQ,GAAAA,CAAWT,EAAOgZ,MAAO/Y,EAAW,CAC3C,CAACD,EAAOuZ,WAAYY,IAExBG,OApBI,KAChBJ,EAAqBV,IAoBT/B,QAzBQ,KACpByC,EAAqBV,IAyBT3B,IAAK,SACD3X,IAGXia,GACG,2BAAKla,UAAWQ,GAAAA,CAAWT,EAAOqZ,iBAAkBrZ,EAAOgZ,MAAO/Y,IAAgBC,GAC9E,kBAACqa,EAAD,CAActa,UAAWD,EAAOsZ,gBAGvCc,GAAiBL,O,yLC3FvB,MAAMxa,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACFR,SAAU,OACVsB,MAAO,YCOFmY,EAAc,IAA0C,IAAzC,QAAChF,EAAD,UAAUvV,EAAV,QAAqB6M,GAAoB,EACjE,MAAM9M,EAAST,IACTkb,EAAOjF,EAAUkF,EAAAA,EAAkBC,EAAAA,EACzC,OAAO,kBAACF,EAAD,CAAMxa,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,GAAY6M,QAASA,K,0BCblE,MAAMvN,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtCua,QAAS,CACLjS,SAAU,WACVwI,IAAK,EACLC,KAAM,EACNC,MAAO,EACPC,OAAQ,EACRlI,QAAS,OACTS,WAAY,SACZmH,eAAgB,SAChBvQ,WAAY,kBACZ,6CAA8C,CAC1CF,gBAAiB,mBAErBkb,WAAY,QAEhBnG,SAAU,CACN/U,gBAAiB,uBAErBmb,cAAe,CACXzK,OAAQ,UACR,mBAAoB,CAChB1Q,gBAAiB,oBAGzB4J,OAAQ,CACJ1I,QAAS,EACTiG,MAAO,QACPC,OAAQ,OACRzE,MAAO,OACPtB,SAAU,OACVC,WAAY,IACZH,WAAY,OACZyG,OAAQ,mCACR5H,gBAAiB,oBAErBob,YAAa,CACThT,SAAU,WACVyI,KAAM,MACND,IAAK,MACLF,OAAQ,WAEZ2K,QAAS,CACLxS,QAAS,OACTS,WAAY,SACZlB,SAAU,WACVwI,IAAK,MACLE,MAAO,OAEXwK,aAAc,CACV3Y,MAAO,OACPtB,SAAU,QAEdka,mBAAoB,CAChBzC,OAAQ,mBC0DhB,GAAejJ,EAAAA,EAAAA,OAtFcxP,IACzB,MAAM,GACF0I,EADE,cAEFyS,GAAgB,EAFd,SAGFzG,GAAW,EAHT,cAIFoG,GAAgB,EAJd,WAKFM,EAAaC,EAAAA,GALX,SAMFC,EAAWD,EAAAA,GANT,YAOFE,EAPE,eAQFC,EARE,SASFC,EATE,WAUFC,EAAaL,EAAAA,GAVX,QAWFtO,GACA/M,EAEEC,EAAST,KACRmc,EAASC,IAAcpR,EAAAA,EAAAA,WAAkB,GAE1CyD,GAAYC,EAAAA,EAAAA,UACd,IACI,CACI,CACItL,KAAMT,IAAAA,KAAU,cAChB4K,QAASwO,GAEb,CACI3Y,KAAMT,IAAAA,KAAU,kBAChB4K,QAASyO,GAEb,CACI5Y,KAAMT,IAAAA,KAAU,UAChB4K,QAAS0O,IAEftI,QAAO0I,EAAAA,EAAAA,MAAK,aAClB,CAACN,EAAaC,EAAgBC,IAM5BK,EAAkBpH,GAAsB,KAAMqH,EAAAA,EAAAA,SAAOC,EAAAA,EAAAA,SAAO,GAAOZ,EAAYE,EAAjCS,CAA2CrH,GAEzFuH,EAAed,IAAkBzG,GAAYiH,GAAWb,GACxDoB,GAAepB,IAAkBpG,GAAYiH,EAC7CQ,EAAqBhB,GAAiBzG,EAM5C,OACI,yBACIxU,UAAWQ,GAAAA,CAAWT,EAAO+Z,QAAS,CAClC,CAAC/Z,EAAOyU,UAAWA,EACnB,CAACzU,EAAO6a,eAAgBA,IAE5BsB,aAnBiB,IAAMR,GAAW,GAoBlCS,aAnBiB,IAAMT,GAAW,GAoBlC7O,QAAS+N,EAAgBgB,EAAepH,GAZ3Bf,IACbA,EAAMC,gBAAkBD,EAAM8D,QAAQ1K,MAarCkP,GACG,kBAACxB,EAAD,CAAava,UAAWD,EAAO8a,YAAatF,QAASf,EAAU3H,QAAS+O,EAAepH,KAE1FwH,GACG,yBAAKhc,UAAWD,EAAO+a,SACnB,kBAAC5a,EAAA,EAAD,CAAiB2M,QAAS2O,EAAYxb,UAAWD,EAAOgb,aAAc5a,KAAMic,EAAAA,IAC5E,kBAAClO,EAAA,EAAD,CACIQ,OAAS,yBAAwBlG,IACjC2F,gBAAiBjO,EAAAA,EACjBmO,YAAa,CACTlO,KAAMmO,EAAAA,EACNtO,UAAWQ,GAAAA,CAAWT,EAAOgb,aAAchb,EAAOib,qBAEtDjN,UAAWA,KAItBkO,GACG,kBAAC,EAAAtP,OAAD,CAAQ3M,UAAWD,EAAOsJ,OAAQ7H,QAAQ,WAAWqL,QAASqO,GACzDjZ,IAAAA,KAAU,kB,sUCzG/B,MA0BA,EA1B6DnC,GAErD,2BACI8G,MAAO,GACPC,OAAQ,GACRkJ,QAAQ,YACRC,MAAM,6BACNqM,WAAW,gCACPvc,GAEJ,8BACI,0BACImQ,EAAE,gIACFzH,GAAG,oBAGX,uBAAGqQ,OAAO,OAAOC,YAAa,EAAGhJ,SAAS,WACtC,0BAAMtH,GAAG,iBAAiBqH,KAAK,QAC3B,yBAAKyM,UAAU,qBAEnB,0BAAMC,KAAK,uBAAuBtM,EAAE,oB,yBCpB7C,MAAM3Q,GAAYC,E,SAAAA,IAAW,KAAM,CACtCkV,MAAO,CACHhV,gBAAiB,sBAErB+c,SAAU,CACN/c,gBAAiB,eAErBgB,QAAS,CACL+B,YAAa,OACbqO,aAAc,QAElB4L,OAAQ,CACJ5U,SAAU,WACV6U,WAAY,oEAEhBC,YAAa,CACT1T,YAAa,QAEjB2T,UAAW,CACP9b,SAAU,OACVsB,MAAO,QAEXya,WAAY,CACRvU,QAAS,OACTS,WAAY,SACZ+T,KAAM,GAEVC,aAAc,CACVzU,QAAS,OACT4H,eAAgB,SAChB4M,KAAM,GAEVE,YAAa,CACTF,KAAM,EACNxU,QAAS,OACT4H,eAAgB,WAChBnH,WAAY,UAEhBkU,aAAc,CACVxd,gBAAiB,QAErBsG,QAAS,CACLpF,QAAS,OC9BV,IAAKuc,G,SAAAA,GAAAA,EAAAA,aAAAA,UAAAA,EAAAA,aAAAA,U,CAAAA,IAAAA,EAAAA,KAiBL,MAAMC,EAAqB,IAAkE,IAAjE,KAAC3L,EAAD,KAAO4L,EAAP,SAAajc,EAAb,OAAuB2L,EAAvB,QAA+ByE,EAA/B,aAAwC8L,GAAyB,EAChG,MAAMtd,EAAST,IAETge,GAAQtP,EAAAA,EAAAA,UACV,IAAM,CACF,CACIxF,GAAI0U,EAAKK,aACT1c,MAAOoB,IAAAA,KAAU,WACjBuY,KAAMgD,EAAAA,GAEV,CACIhV,GAAI0U,EAAKO,aACT5c,MAAOoB,IAAAA,KAAU,WACjBuY,KAAMkD,KAGd,IAGJ,OACI,kBAAC,EAAAC,OAAD,CAAQvc,QAAS,CAACqT,MAAO1U,EAAO0U,OAAQjD,KAAMA,EAAMoM,cAAe,CAAC5d,UAAWD,EAAOyc,UAAWqB,YAAU,GACvG,kBAAC,EAAAC,OAAD,CAAQ1c,QAAS,CAAC2c,aAAche,EAAO0c,SACnC,kBAAC,EAAApb,QAAD,CAASrB,UAAWD,EAAOU,SACvB,kBAAC,EAAA8C,IAAD,CAAKvD,UAAWD,EAAO8c,YACnB,kBAAC3c,EAAA,EAAD,CACIqO,aAActM,IAAAA,KAAU,SACxB4K,QAAS0E,EACTvR,UAAWD,EAAO4c,YAClBpc,cAAeR,EAAO6c,UACtBzc,KAAM6d,EAAAA,UAETlR,MAAAA,OARL,EAQKA,EAAQwD,MAEb,kBAAC,EAAA/M,IAAD,CAAKvD,UAAWD,EAAOgd,cACnB,kBAACkB,EAAA,EAAD,CACIX,MAAOA,EACPY,OAAQd,EACRlV,SAAUmV,EACVrd,UAAWD,EAAOkd,gBAG1B,kBAAC,EAAA1Z,IAAD,CAAKvD,UAAWD,EAAOid,aAAclQ,MAAAA,OAArC,EAAqCA,EAAQyD,SAGrD,kBAAC,EAAA4N,cAAD,CAAene,UAAWD,EAAOgG,SAAU5E,M,wFCzEhD,MAAM7B,GAAYC,E,SAAAA,IAAY2C,IAAD,CAChCU,KAAM,CACFR,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BC,eAAgB,Y,gNCAxB,MAYA,EAZsBhD,IAClB,MAAMC,EAAST,IACT8e,GAAkBC,EAAAA,EAAAA,uBAClB,KAAChY,EAAD,UAAOrG,GAA4BF,EAAdG,E,kXAA3B,CAAyCH,EAAzC,sBACMwe,EAAgB9d,GAAAA,CAAWT,EAAO6C,KAAM5C,GAC9C,OAAOoe,GAAmB/X,EACtB,kBAAC,EAAAD,KAAD,GAAMmY,GAAIlY,EAAKmY,QAAQC,OAAOC,SAASC,OAAQ,IAAK3e,UAAWse,GAAmBre,IAElF,yBAAGoG,KAAMA,EAAMrG,UAAWse,GAAmBre,M,wFCX9C,MAAMX,GAAYC,E,SAAAA,GAAW,CAChCqf,eAAgB,CACZ/W,SAAU,WACVjB,MAAO,OACPC,OAAQ,OACRwJ,IAAK,EACLC,KAAM,EACNuO,QAAS,IACT/W,OAAQ,GACRrI,gBAAiB,QAErBqf,YAAa,CACTrf,gBAAiB,eAErBsf,iBAAkB,CACd,mBAAoB,CAChBlX,SAAU,eCUtB,EAhB4B,IAAuE,IAAtE,YAACiX,GAAc,EAAf,iBAAsBC,GAAmB,EAAzC,UAAgD/e,GAAsB,EAC/F,MAAMD,EAAST,IACf,OACI,oCACI,yBACIU,UAAWQ,GAAAA,CAAWT,EAAO6e,eAAgB5e,EAAW,CACpD,CAACD,EAAO+e,aAAcA,EACtB,CAAC/e,EAAOgf,kBAAmBA,KAG/B,kBAAC,EAAAC,eAAD,CAAgB5c,MAAM,kB,yHCnBtC,MAiCA,GAjCkB7C,EAAAA,EAAAA,IAAY2C,IAAD,CACzBmH,OAAQ,CACJqL,SAAU,OACV/T,QAAS,UACTuP,eAAgB,QAChBL,KAAM,mBACNoP,cAAe,OACfC,YAAa,oBAEjB/e,KAAM,CACFiC,MAAO,mBACPwE,MAAO,OACPC,OAAQ,OACRoC,YAAa,OAEjBpI,MAAO,CACHC,SAAU,OACVF,WAAY,OACZiU,cAAe,GAEnB1J,QAAS,CACL,UAAW,CACP/I,MAAOF,EAAMG,QAAQM,QAAQE,MAEjCpD,iBAAiB8U,EAAAA,EAAAA,IAAKrS,EAAMG,QAAQM,QAAQE,KAAM,KAClDgN,KAAM3N,EAAMG,QAAQM,QAAQE,KAC5BT,MAAOF,EAAMG,QAAQM,QAAQE,KAC7B,UAAW,CACPpD,iBAAiB8U,EAAAA,EAAAA,IAAKrS,EAAMG,QAAQM,QAAQE,KAAM,WCxBxDsc,GAAoBpK,EAAAA,EAAAA,GAAYpI,EAAAA,QA6CtC,EA3BqB,IAA0F,IAAtE,UAAC3M,EAAD,QAAYoB,EAAU,GAAtB,MAA0Bkc,EAAQ,GAAlC,OAAsCY,EAAtC,SAA8ChW,GAAwB,EAC3G,MAAMnI,EAAST,IAIf,OACI,kBAAC,EAAA8f,YAAD,CAAapf,UAAWA,GACnBsd,EAAM/W,KAAI,IAA+C,IAA9C,GAACiC,EAAD,MAAK3H,EAAL,aAAY0N,EAAZ,KAA0BiM,EAA1B,SAAgCnO,GAAc,EACtD,OACI,kBAAC8S,EAAD,CACI9S,SAAUA,EACVyF,gBAAiBzF,KAAckC,EAC/B5H,IAAK0Y,OAAO7W,GACZxI,UAAWQ,GAAAA,CAAWT,EAAOsJ,OAAQ,CAAC,CAACtJ,EAAOoL,SAAU+S,IAAW1V,GAAKpH,EAAQiI,QAChFkF,aAAcA,EACd1B,SAZUyS,EAYoB9W,EAZR,IAAMN,EAASoX,IAarC,iBAAiB,sBAAqB9W,KAErCgS,GAAQ,kBAACA,EAAD,CAAMxa,UAAWD,EAAOI,OAChCU,GAAS,yBAAKb,UAAWD,EAAOc,OAAQA,IAhB/Bye,IAAAA,Q,mGC1B3B,MAAMhgB,GAAYC,E,SAAAA,IAAY2C,IACjC,MAAME,EAAQF,EAAMG,QAAQqa,WAAWjI,MACvC,MAAO,CACH8K,YAAa,CACT9f,gBAAiB2C,EACjByG,SAAU,KAEdoI,OAAQ,CACJ,kCAAmC,CAC/BZ,IAAK,EACLC,KAAM,EACNlH,UAAW,UACXD,WAAY,EACZF,YAAa,EACb,YAAa,CACTuN,gBAAiB,WAGzB,+BAAgC,CAC5BhG,OAAQ,EACRF,KAAM,EACNnO,aAAc,UACdgH,WAAY,EACZF,YAAa,EACb,YAAa,CACTuN,gBAAiB,WAGzB,iCAAkC,CAC9BlG,KAAM,EACNnH,WAAY,UACZtC,OAAQ,MACRD,MAAO,SACPwC,UAAW,EACXjH,aAAc,EACd,YAAa,CACTqU,gBAAiB,cAGzB,gCAAiC,CAC7BjG,MAAO,EACPtH,YAAa,UACbpC,OAAQ,MACRD,MAAO,SACPwC,UAAW,EACXjH,aAAc,EACd,YAAa,CACTqU,gBAAiB,SAI7BgJ,MAAO,CACHve,SAAU,SACV4G,SAAU,WACVjB,MAAO,MACPC,OAAQ,SACR4Y,UAAW,aACXrd,MAAAA,EACA,YAAa,CACT2D,QAAS,KACTwS,OAAQ,OACRjQ,QAAS,QACT1B,MAAO,OACPC,OAAQ,OACRW,UAAWtF,EAAMwd,QAAQ,GACzBjgB,gBAAiB,eACjBI,UAAW,sBChDd+R,EAAiB,IASjB,IATkB,SAC3BN,EAD2B,UAE3BO,EAAY,MAFe,MAG3B2N,GAAQ,EAHmB,KAI3BhO,EAJ2B,QAK3BD,EAAU,SALiB,SAM3BpQ,EAN2B,UAO3BnB,EAP2B,UAQ3B0J,GACS,EACT,MAAM3J,EAAST,KACRqgB,EAAUC,GAAelP,IAAAA,SAAmC,MAMnE,OACI,kBAACmP,EAAA,EAAD,CACIvO,SAAUA,EACVO,UAAWA,EACX7R,UAAWQ,GAAAA,CAAWT,EAAOkR,OAAQjR,GACrC8f,UAAW,CACPC,gBAAiB,CACbC,SAAS,EACTC,kBAAmB,UAEvBT,MAAO,CACHQ,QAASR,EACTU,QAASP,IAGjBnO,KAAMA,EACN2O,OAAO,EACPzW,UAAWA,GAEX,kBAAC,EAAAnG,IAAD,KACI,kBAAC,EAAA6c,kBAAD,CAAmBC,YAzBP9U,IAfE+U,IAAAA,EAAAA,EAgBI/U,EAAEgM,OAfhCgJ,MAAMC,KAAKC,SAASC,iBAAiB,iBAAiBC,MAAMna,GAAOA,EAAGoa,SAASN,MAgBvE/O,MAwBQ,kBAAC,EAAAsP,MAAD,CAAO7gB,UAAWD,EAAOwf,aACpBC,EAAQ,0BAAMxf,UAAWD,EAAOyf,MAAOrgB,IAAKygB,IAAkB,KAC/D,kBAAC,EAAArc,IAAD,KAAMpC,S,i1BCvC9B,MAiDA,GAAemO,EAAAA,EAAAA,OAjDK,IASI,IATH,MACjBlL,EADiB,UAEjB0c,EAFiB,SAGjBC,EAAW5F,EAAAA,GAHM,QAIjB6F,EAJiB,QAKjB5f,EAAU,GALO,OAMjByF,EANiB,YAOjB6F,EAAczK,IAAAA,KAAU,WAEJ,EADjBhC,E,kXACiB,gFACpB,MAAMF,GAAST,EAAAA,EAAAA,GAAU,CAACuH,OAAAA,KAEnBoa,EAAYC,IAAiB5W,EAAAA,EAAAA,UAAS,IAEvCU,GAAcmW,EAAAA,EAAAA,OAAKC,EAAAA,EAAAA,KAAIL,GAAWG,GAGlCG,GAAaC,EAAAA,EAAAA,OAAMld,GAAS6c,EAAa7c,EAE/C,OACI,kBAAC,IAAD,GACImd,eACI,kBAAC,EAAAC,eAAD,CAAgB3Z,SAAS,SACrB,kBAAC,UAAD,CAAY7H,UAAWD,EAAOI,QAGtCshB,aACI,kBAAC,EAAAD,eAAD,CAAgB3Z,SAAS,OACpBwZ,EAAW9b,OAAS,GACjB,kBAAC,IAAD,CAAiBpF,KAAM6d,EAAAA,QAAWhe,UAAWD,EAAO2hB,YAAa7U,QAdlE,IAAM7B,EAAY,OAkB7BoL,UAAW0K,EACX1f,QAAO,KACAA,EADA,CAEHugB,MAAOC,GAAAA,CAAW7hB,EAAO4hB,MAAOvgB,EAAQugB,OACxCrgB,KAAMsgB,GAAAA,CAAW7hB,EAAO8hB,UAAWzgB,EAAQE,QAE/CoL,YAAaA,EACbtI,MAAOid,EACPnZ,UAAUiZ,EAAAA,EAAAA,MAAKW,EAAAA,GAAU9W,GACzB+W,kBAAkB,EAClB5iB,IAAK6hB,GACD/gB,Q,iCC3DT,MAAMX,GAAYC,E,SAAAA,IAAW,KAAM,CACtCsiB,UAAW,IAAgC,IAA/B,OAAChb,EAAS,IAAqB,EACvC,MAAO,CACHA,OAAQA,EACRS,aAAc,MACdyB,WAAY,SACZtJ,gBAAiB,mBACjBiV,SAAU,UAGlBvU,KAAM,CACF0e,QAAS,IACT1V,WAAY,OACZF,YAAa,OAEjB0Y,MAAO,CACH7gB,SAAU,OACV8F,MAAO,QAEX8a,YAAa,CACTzY,YAAa,QAEjB+Y,MAAO,CACHviB,gBAAiB,qBACjB+H,UAAW,qC,kVCPnB,MAkDA,EAlDuB,IAqBV,IArBW,MACpB3G,EADoB,UAEpBb,EAFoB,SAGpB+gB,EAHoB,UAIpBkB,EAJoB,gBAKpBC,EALoB,gBAMpBC,EAAkB,MANE,eAOpBC,EAPoB,gBAQpBC,EARoB,qBASpBC,EAToB,SAUpBnhB,EAVoB,eAWpBohB,EAXoB,aAYpBlM,EAAe,CACXC,SAAU,MACVC,WAAY,SAdI,gBAgBpBC,EAAkB,CACdF,SAAU,MACVC,WAAY,UAGP,EADNtW,E,kXACM,4MACT,MAAMmB,GAAU9B,EAAAA,EAAAA,GAAU,CAAC8iB,eAAAA,EAAgBC,gBAAAA,IACrCvV,EACF,qCACMmV,GAAa,yBAAKjiB,UAAWoB,EAAQ0L,QAASjM,IAC9CqhB,GACE,kBAAC,IAAD,CACInB,SAAUA,EACVD,WAAW,EACX0B,UAAWF,EACX7Y,SAAU8Y,EACVnhB,QAAS,CAACE,KAAMF,EAAQqhB,sBACxB/V,YAAazK,IAAAA,KAAU,2BACvB4E,OAAQ,MAKxB,OACI,kBAAC,KAAD,GAASwP,aAAcA,EAAcG,gBAAiBA,GAAqBvW,GACvE,yBAAKD,UAAWQ,GAAAA,CAAWY,EAAQygB,UAAW7hB,GAAY0iB,MAAO,CAAC9b,MAAOwb,IAChD,QAApBD,GAA6BrV,EAC9B,yBAAK9M,UAAWoB,EAAQuhB,MAAOxhB,GACV,WAApBghB,GAAgCrV,M,sEC5CjD,MAAM8V,EAAwB,IAAuE,IAAtE,MAACC,EAAD,KAAQrR,EAAR,oBAAcsR,EAAd,cAAmCC,EAAnC,QAAkDxR,GAAoB,EACjG,MAAOyR,EAAYC,IAAiB3Y,EAAAA,EAAAA,UAAqB,MACnD4Y,GAAoB5V,EAAAA,EAAAA,SAAgB,GAEpC6V,GAAqBnN,EAAAA,EAAAA,cACtBoN,IACG,IAAIC,EAA4B,OAAjBD,EAAwBD,GAAoB,GAAKC,EAChE,KACqB,OAAjBA,GACAC,EAAWR,EAAMtd,SAChB8d,GAAYD,GAAiBC,GAAY,IAAKC,EAAAA,EAAAA,GAAYT,EAAMQ,MAEjEA,GAAY,EAEhB,OAAOA,IAAaR,EAAMtd,OAAS8d,EAAWF,GAAoB,KAEtE,CAACN,IAGCU,GAAqBvN,EAAAA,EAAAA,cACtBoN,IACG,IAAIC,EAA4B,OAAjBD,EAAwBP,EAAMtd,OAAS,EAAI6d,EAC1D,KACqB,OAAjBA,GACAC,GAAY,IACXA,GAAYD,IAAgBE,EAAAA,EAAAA,GAAYT,EAAMQ,MAE/CA,GAAY,EAEhB,OAAOA,EAAW,EAAIR,EAAMtd,OAAS,EAAI8d,IAE7C,CAACR,IAGCW,GAA0BxN,EAAAA,EAAAA,cAAY,KACxC,KAAKsL,EAAAA,EAAAA,OAAM0B,GAAa,CACpB,MAAM/b,EAAO4b,EAAMG,GAAY/b,MAC9BA,EAAKA,KAAKwc,eAAiBX,EAAoB,CAAC7b,KAAMA,EAAKA,KAAMyc,UAAWzc,OAElF,CAAC6b,EAAqBD,EAAOG,IAE1BW,GAAgB3N,EAAAA,EAAAA,cACjBvC,IACG,GAAqB,IAAjBoP,EAAMtd,OAGV,OAAQkO,EAAM9M,KACV,IAAK,OACL,IAAK,YAGD,OAFAsc,EAAcE,GACd1P,EAAMjI,kBACC,EACX,IAAK,KACL,IAAK,UAGD,OAFAyX,EAAcM,GACd9P,EAAMjI,kBACC,EACX,IAAK,QACD0X,EAAkB/X,SAAU,EAC5BqY,IACA,MACJ,IAAK,MACDjS,GAAWA,EAAQkC,GACnB,MACJ,QACI,UAGZ,CAACoP,EAAOM,EAAoBI,EAAoBC,EAAyBjS,IAa7E,OAVArG,EAAAA,EAAAA,YAAU,KACN,GAAIgY,EAAkB/X,QAAS,CAC3B+X,EAAkB/X,SAAU,EAC5B,MAAMyY,EAAYf,EAAMgB,WAAWC,GAAaA,EAAS7c,KAAK8c,SAC9DH,GAAa,GAAKX,EAAcW,QAEhCX,EAAc,QAEnB,CAACJ,EAAOrR,EAAMuR,IAEV,CAACC,WAAAA,EAAYW,cAAAA,K,gDCtGxB,MAsCA,GArCkBpkB,EAAAA,EAAAA,IAAW,KAAM,CAC/BsiB,UAAW,IAA6C,IAA5C,gBAACQ,EAAkB,IAAnB,eAAwBD,GAAoB,EACpD,MAAO,CACH9Z,QAAS,OACT0b,cAAe,SACfnd,OAAQwb,EACRzb,MAAOwb,EACPlT,SAAU,IAGlBpC,OAAQ,CACJ3D,WAZO,OAaPC,UAAW,OACXjH,aAAc,OACdrB,SAAU,OACVC,WAAY,IACZ8T,cAAe,SACfjU,WAAY,QAEhB6hB,qBAAsB,CAClBlK,OAAS,mBACT0L,WAAY,KAEhBtB,KAAM,CACFzT,SAAU,EACVrI,OAAQ,EACR5F,SAAU,SACV2F,MAAO,OACPiB,SAAU,WAEV,OAAQ,CACJqc,cAAe,EACfC,WAAY,S,mGCjCjB,MAAM7kB,GAAYC,E,SAAAA,GAAW,CAChCgD,MAAO,CACHH,MAAO,kBACPtB,SAAU,OACVF,WAAY,U,gNCMpB,MAWA,EAXc,IAA0D,IAAzD,MAAC2B,EAAD,WAAQ6hB,EAAR,UAAoBpkB,GAAqC,EAAvBC,E,kXAAuB,uCACpE,MAAMF,EAAST,IAEf,OACI,kBAAC,EAAAiC,WAAD,GAAYvB,UAAWQ,GAAAA,CAAWT,EAAOwC,MAAOvC,GAAY2O,UAAU,QAAW1O,GAC5EsC,EACA6hB,GAAc,kBAACC,EAAA,EAAD,S,2GChBpB,MAAM/kB,GAAYC,E,SAAAA,GAAW,CAChC+kB,oBAAqB,CACjBzc,SAAU,WACVwI,IAAK,EACL,UAAW,CACPvI,OAAQ,EACRD,SAAU,WACVwI,IAAK,EACLzJ,MAAO,OACP6I,WAAY,a,eCYxB,MAEM6T,EAAeQ,GAAaA,EAASS,iBAAmBT,EAASliB,MAEjE4iB,EAAqB,IAarB,IAbsB,MACxB3B,EADwB,YAExB4B,EAFwB,WAGxBC,EAHwB,iBAIxBC,EAJwB,MAKxB/d,EAAQ,OALgB,OAMxBC,EANwB,WAOxB+d,GAAa,EAPW,QAQxBC,EAAWvf,CAAAA,GAAMA,GARO,2BASxBwf,EATwB,cAUxBC,EAVwB,WAWxB/B,EAAa,KAXW,uBAYxBgC,GACE,EACF,MAAMjlB,EAAST,IAET2lB,GAAU3X,EAAAA,EAAAA,QAAO,MACjB4X,GAAW5X,EAAAA,EAAAA,QAAO,MAClB6X,GAAY7X,EAAAA,EAAAA,QAAO,MAEnB8X,GAAc9X,EAAAA,EAAAA,QAAO,CAAC,IAGtB+X,EAAqB,CACvBC,UAAW,GAITC,GAAevX,EAAAA,EAAAA,UAAQ,KAAO+W,IAAqClC,GAFV,IAAIlC,MAAM1Z,GAAiC,OAAxBA,EAAKsd,kBAEN,CAAC1B,EAAOkC,IAEnFS,GAAqBxP,EAAAA,EAAAA,cACtBpU,IACG,MAAM6jB,EAAiBL,EAAYja,QAAQ5F,OAC3C,IAAImgB,EAAe,EACnB7C,EAAMjd,MAAM6f,EAAiB,EAAG7jB,EAAQ,GAAG+jB,SAAQ,CAAC7B,EAAUxe,KAC1D,MAAMsgB,EAAYH,EAAiBngB,EAAI,EACnCA,EAAI,IAAG8f,EAAYja,QAAQya,GAAaR,EAAYja,QAAQya,EAAY,GAAKF,GAEjFA,EAAejB,EAAYmB,EAAW9B,EAAS7c,WAGvD,CAACwd,EAAa5B,IAGZgD,GAAkB7P,EAAAA,EAAAA,cAAapU,GAAUihB,EAAMjhB,GAAO2iB,gBAAgB,CAAC1B,IACvEiD,GAAiB9P,EAAAA,EAAAA,cAAapU,GAAUihB,EAAMjhB,IAAQ,CAACihB,KAE7D3X,EAAAA,EAAAA,YAAU,KACN6a,uBAAsB,KAClBd,EAAQ9Z,SAAW8Z,EAAQ9Z,QAAQ6a,SAAS,QAEjD,CAACnD,EAAMtd,UAEV2F,EAAAA,EAAAA,YAAU,KAaN+Z,EAAQ9Z,SAAW8Z,EAAQ9Z,QAAQ8a,gBAAgB,GAEnDC,IAEA,MAAMC,EAhBoBtD,CAAAA,IACtB,MAAMuD,EAAYvD,EAAMgB,WAAWC,GAAaA,EAAS7c,KAAK8c,SAC9D,GAAIqC,GAAa,EAAG,CAChBZ,EAAmBY,GACnB,MAAMC,EAAaR,EAAgBO,GACnC,MAAO,CACHE,OAAQlB,EAAYja,QAAQib,GAC5BG,YAAa9B,EAAY4B,EAAYP,EAAeO,GAAYpf,SASrDuf,CAAiB3D,GACxC,GAAIsD,GAAkBA,EAAeG,QAAUrB,EAAQ9Z,QAAS,CAC5D,MAAM,YAACob,GAAeJ,EAChBG,EAASH,EAAeG,OAASC,GACnCD,EAASrB,EAAQ9Z,QAAQsb,MAAMC,cAAgBJ,EAASrB,EAAQ9Z,QAAQsb,MAAMC,aAAe7f,IAC7Fkf,uBAAsB,KAClBd,EAAQ9Z,SAAW8Z,EAAQ9Z,QAAQ6a,SAASM,GAAUzf,EAAS0f,GAAe,SAI3F,CAACf,EAAoBM,EAAgBrB,EAAaoB,EAAiBhf,EAAQue,EAAavC,EAAOoC,IAElG,MAAMiB,EAAgB,KACdf,EAAUha,SAAW+Z,EAAS/Z,UAC9Bga,EAAUha,QAAQuX,MAAM9b,MAAQse,EAAS/Z,QAAQ8G,YAAc,OAOjE0U,GAAkB3Q,EAAAA,EAAAA,cACnB0Q,IACG,IAAIE,EAAS,KACTN,EAAS,EAgBb,OAdAzD,EAAMlC,MAAK,CAACmD,EAAUliB,KAClB4jB,EAAmB5jB,EA5ER,IA6EX,MAAMilB,EAAazB,EAAYja,QAAQvJ,EAAQ,GAU/C,OARI8kB,GAAgBJ,GAAUI,EAAeG,IACzCD,EAAS,CACLhlB,MAAAA,EACA0kB,OAAAA,EACAxC,SAAAA,IAGRwC,EAASO,EACFD,KAEJA,IAEX,CAACpB,EAAoBJ,EAAavC,IAiEhCiE,GAAe9Q,EAAAA,EAAAA,cAAapU,GAAU6iB,EAAY7iB,EAAOkkB,EAAelkB,GAAOqF,OAAO,CACxF6e,EACArB,IAGEsC,GAAS/Q,EAAAA,EAAAA,cACX,IAA0B,IAAzB,MAACpU,EAAD,MAAQ8gB,EAAR,KAAena,GAAU,EACtB,MAAMub,EAAWgC,EAAelkB,GAChC,OACIkiB,EAAS7c,OACPqc,EAAYQ,IAAaa,EAAiBjC,EAAOoB,EAAS7c,OACxDyd,EAAWhC,EAAOoB,EAAS7c,KAAMrF,EAAO2G,MAGpD,CAACud,EAAgBnB,EAAkBD,KAGjC,sBAACsC,IAAyBC,EAAAA,EAAAA,IAAqB,CAACpE,MAAAA,EAAOG,WAAAA,EAAYiC,QAAAA,IACnEiC,GAAelR,EAAAA,EAAAA,cAAY,IAYtB6M,EAAM5P,QAAQ6Q,GAAaR,EAAYQ,KAAWvd,KAAKud,GAXzCA,CAAAA,GACjB,yBACI9jB,UAhLY,kBAiLZ0iB,MAAO,CAACjT,WAAY,UACpB,aAAYqU,EAASliB,MACrB+E,IAAKmd,EAASliB,OAEb+iB,EAAiB,CAAC9d,OAAQ4d,EAAYX,EAASliB,MAAOkiB,EAAS7c,OAAQ6c,EAAS7c,OAIdkgB,CAAYrD,MACxF,CAACW,EAAa5B,EAAO8B,IAExB,OACI,oCACI,yBAAKxlB,IAAKgmB,EAAWnlB,UAAWD,EAAOukB,qBAClCM,GAAcsC,KAElBlC,GAA0BE,EAAS/Z,SAChC,kBAAC,IAAD,CAAqBic,cAAY,EAACC,SAAUrC,EAAwBsC,YAAapC,EAAS/Z,UAE9F,kBAAC,mBAAD,CACIhM,IAAK8lB,EACLsC,UAAW1E,EAAMtd,OACjBiiB,SAAUV,EACVlgB,MAAOA,EACPC,OAAQA,EACRge,QAASA,EACT4C,SAAUvC,EACVwC,SAxFK,IAAqC,IAApC,aAAChB,EAAD,gBAAeiB,GAAqB,EAClD,IAAK/C,IAAeW,EAAc,OAElC,MAAMqC,EAAUjB,EAAgBD,GAC1BmB,EAAoBD,GAAW/B,EAAgB+B,EAAQhmB,OApBxCA,IAAAA,EAsBC,OAAtBimB,IAtBqBjmB,EAsByBimB,EArB9C1C,EAAUha,SACN,IAAIga,EAAUha,QAAQuV,iBAAiB,qBAAwBiF,SAAS9kB,IAChEA,EAAMinB,QAAQlmB,QAAUA,EAAMmmB,YAC9BlnB,EAAM6hB,MAAMjT,WAAa,UACzB4V,EAAmBzjB,MAAQA,GACxBf,EAAM6hB,MAAMjT,WAAa,aAkBxCyW,IAEA,MAAMK,EACoB,OAAtBsB,GAA8BpD,EAAYoD,EAAmB/B,EAAe+B,GAAmB5gB,MAC7F+gB,EAAiBrB,EAAgBD,EAAeH,EAAclB,EAAmBC,WAEvF,IAAIA,EAAY,EAChB,GAAI0C,EAAgB,CAChB,OAAQL,GACJ,IAAK,UACGK,EAAe1B,OAASI,EAAe,GAAKpD,EAAY0E,EAAelE,YACvEwB,EAAYiB,GAAeyB,EAAe1B,OAASI,IACvD,MACJ,IAAK,WACD,CACI,MAAMuB,EAAiBJ,GAAqB,IAzErCK,EAyE4DL,EAxEnFhF,EAAMgB,WAAU,CAACC,EAAUliB,IAAU0hB,EAAYQ,IAAaoE,EAAYtmB,KAyEpDumB,EA9BAvmB,CAAAA,IACtB4jB,EAAmB5jB,GAEZwjB,EAAYja,QAAQvJ,IA2BawmB,CAAiBH,GAGrCA,GAAkB,GAClBvB,EAAeyB,GACf5B,GAAe4B,EAAkBzB,IAEjCpB,EAAYiB,GAAe4B,EAAkBzB,KAtD1CpB,CAAAA,IACnBH,EAAUha,UACVka,EAAmBC,WAAaA,EAChCH,EAAUha,QAAQuX,MAAMrS,KAAOiV,EAAY,OAuD3C+C,CAAkB/C,GArFC4C,IAAAA,GA2IfxF,MAAOoC,EAA6B,CAACwD,UAAW,eAAYpS,EAC5DqS,cAxOO,EAyOPC,gBAAiBxB,GAEhBD,KAMjBvC,EAAmBiE,UAAY,CAC3B5F,MAAO6F,IAAAA,QAAkBA,IAAAA,QAAkBtE,WAC3CK,YAAaiE,IAAAA,KAAAA,WACbhE,WAAYgE,IAAAA,KAAAA,WACZ9hB,MAAO8hB,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,SAC9C7hB,OAAQ6hB,IAAAA,OAAAA,WACR/D,iBAAkB+D,IAAAA,KAClB9D,WAAY8D,IAAAA,KACZ3D,cAAe2D,IAAAA,KACf7D,QAAS6D,IAAAA,KACT5D,2BAA4B4D,IAAAA,KAC5B1F,WAAY0F,IAAAA,OACZ1D,uBAAwB0D,IAAAA,MAG5B,W,qECpRO,MAEDC,EAA2BC,IAC7B,MAAMC,EAAqBhG,IACvBiG,EAAAA,EAAAA,SAAQjG,EAAMtc,KAAKU,GAAS,CAACA,GAAM8hB,OAAO9hB,EAAK4b,MAAQgG,EAAkB5hB,EAAK4b,OAAS,OAE3F,IAAI0B,EAAiB,KAOrB,OANcsE,EAAkBD,GAAcriB,KAAI,CAACU,EAAMrF,KACjDqF,GAAQA,EAAK4b,QACb0B,EAAiB3iB,GAEd,CAACqF,KAAAA,EAAMrF,MAAAA,EAAO2iB,eAAAA,OAKvB0C,EAAuB,IAAkC,IAAjC,WAACjE,EAAD,QAAaiC,EAAb,MAAsBpC,GAAW,EAC3D,MAAMmG,GAAuB1b,EAAAA,EAAAA,QAAO,MAC9B2b,GAAsB3b,EAAAA,EAAAA,QAAO,MAC7B0Z,GAAwBhR,EAAAA,EAAAA,cAAY,IAA2C,IAA1C,kBAACkT,EAAD,iBAAoBC,GAAsB,EACjFH,EAAqB7d,QAAU+d,EAC/BD,EAAoB9d,QAAUge,IAC/B,IAYH,OAXAje,EAAAA,EAAAA,YAAU,KACD+Z,EAAQ9Z,SAA0B,OAAf6X,GAAwC,IAAjBH,EAAMtd,SAIjDyd,EAAaoG,KAAKC,IAAIL,EAAqB7d,QA5B3B,EA4BmD,GACnE8Z,EAAQ9Z,QAAQme,aAAaF,KAAKC,IAAIrG,EA7BtB,EA6BiD,GAAI,SAC9DA,EAAaoG,KAAKG,IAAIN,EAAoB9d,QA9BjC,EA8ByD0X,EAAMtd,OAAS,IACxF0f,EAAQ9Z,QAAQme,aAAaF,KAAKG,IAAIvG,EA/BtB,EA+BiDH,EAAMtd,OAAS,GAAI,UAEzF,CAACyd,EAAYH,EAAMtd,OAAQ0f,IACvB,CAAC+B,sBAAAA,K,6ECnCZ,MAAMwC,EAAY,oBAMLlqB,GAAYC,E,SAAAA,GAAW,CAChCkqB,UAAW,CACPtgB,WAAYugB,EACZjnB,WAAY+mB,EACZ,eAAgB,CACZ/mB,WAAY,OACZ,WAAY,CACRA,WAAY+mB,IAGpB,WAAY,CACRnZ,IAAK,EACLxJ,OAfY,GAgBZD,MAjBgB,EAkBhB+iB,aAAcH,EACdzjB,QAAS,KACTuC,QAAS,QACTgI,KAAM,KAEV,UAAW,CACP,WAAY,CACR1J,MAAO,KAInBgjB,MAAO,GACPzR,QAAS,CACLhP,WAAY0gB,GACZzgB,WAAY,KCdpB,EAXwB,IAAkE,IAAjE,UAACpJ,EAAD,SAAYmB,EAAZ,MAAsByoB,GAAQ,EAA9B,QAAqC5J,GAAU,GAAkB,EACtF,MAAMjgB,EAAST,IACf,OAAO0gB,EACH,yBAAKhgB,UAAWQ,GAAAA,CAAWT,EAAO0pB,UAAW,CAAC,CAAC1pB,EAAO6pB,OAAQA,GAAQ5pB,IAClE,yBAAKA,UAAWD,EAAOoY,SAAUhX,IAGrC,oCAAGA,K,kNCfJ,MAAM7B,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,CACFgH,QAAS,OACTwhB,aAAc,SACd9F,cAAe,UAEnBnhB,KAAM,CACFgF,SAAU,WACVlH,QAAS,SACTyI,UAAW,QAEf2gB,mBAAoB,CAChBzhB,QAAS,OACTwhB,aAAc,SACdjjB,OAAQ,OACRD,MAAO,QAEXojB,UAAW,CACPnhB,SAAU,sBACVpB,UAAW,sBACX8Q,OAAQ,SACRoC,WAAY,QAEhBsP,YAAa,CACTxqB,gBAAiByC,EAAMG,QAAQC,QAC/BF,MAAO,QACP,UAAW,CACP3C,gBAAiByC,EAAMG,QAAQC,UAGvC4nB,gBAAiB,CACbriB,SAAU,WACVwI,IAAK,MACLC,KAAM,OACNzQ,UAAW,oBAEfsqB,gBAAiB,CACbtiB,SAAU,WACVwI,IAAK,MACLE,MAAO,OACP1Q,UAAW,wBCzCNP,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC6qB,WAAY,CACRjhB,WAAY,OACZhH,aAAc,OACdiH,UAAW,OACXxC,MAAO,sBACP0hB,UAAW,OACX5gB,UAAW,UAEf2iB,cAAe,CACXzjB,MAAO,QAEX0jB,MAAO,CACH1jB,MAAO,OACPC,OAAQ,OACRsJ,OAAQ,UACRwK,WAAY,QAEhB4P,cAAe,CACXtX,OAAQ,uBCJHuX,EAAa,IAA2E,IAA1E,gBAACC,EAAD,uBAAkBC,EAAlB,oBAA0CC,GAAgC,EACjG,MAAM5qB,EAAST,IACTsrB,GAAUtd,EAAAA,EAAAA,QAAuB,MAwBvC,OAvBApC,EAAAA,EAAAA,YAAU,KACN,GAAI0f,MAAAA,GAAAA,EAASzf,QAAS,CAClB,MAAM0f,EAAsBD,EAAQzf,QAAQ2f,WAEtC1I,EADuBwI,EAAQzf,QAAQ8G,YACC4Y,EACxCE,EAlBS,GAmBXJ,EAlBa,GAkBuBA,EAjBpB,GAkBhBvI,EAAiB2I,EACbH,EAAQzf,QAAQ6f,SACZD,EAAyB3I,EAtBtB,GACE,GAsBLwI,EAAQzf,QAAQ6f,OAAOD,EAAwB,GAE/CH,EAAQzf,QAAQ6f,OAAOC,IAA8BJ,EAAqB,IAG3EA,EA5BI,GA4BgCE,GACvCH,EAAQzf,QAAQ6f,QAChBJ,EAAQzf,QAAQ6f,OAAOD,EA9BhB,GA8BsD,MAI1E,CAACJ,EAAqBC,IAGrB,yBAAKzrB,IAAKyrB,EAAS5qB,UAAWD,EAAOqqB,YACjC,kBAAC,EAAAc,KAAD,CAAMrJ,WAAS,EAACsJ,KAAK,SAASC,UAAU,MAAMC,QAAS,EAAGrrB,UAAWD,EAAOsqB,eACvEI,EAAgBlkB,KAAI,CAAC,EAAc3E,KAAf,IAAC,IAAC4C,EAAD,MAAMJ,GAAP,SACjB,kBAAC,EAAA8mB,KAAD,CAAMjkB,MAAI,EAACN,IAAKnC,GACZ,kBAAC8mB,EAAA,EAAD,CACIze,QAAS,IAAM6d,EAAuB9oB,GACtC5B,UAAWQ,GAAAA,CAAWT,EAAOuqB,MAAO,CAChC,CAACvqB,EAAOwqB,eAAgBI,IAAwB/oB,IAEpD6V,KAAK8T,EAAAA,EAAAA,KAAgC,CAACnnB,MAAAA,aCpCrDonB,EAA2B,IAK3B,IAL4B,UACrCxrB,EADqC,gBAErCyqB,EAFqC,oBAGrCE,EAHqC,uBAIrCD,GACS,EACT,MAAM3qB,EAAST,IACTmsB,EAAiBhB,EAAgBE,GACjCe,GAAeC,EAAAA,EAAAA,KAA8BF,GAUnD,OACI,yBAAKzrB,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACpC,yBAAKA,UAAWD,EAAO8C,MAClB8nB,EAAsB,GACnB,kBAACzqB,EAAA,EAAD,CACIC,KAAMyrB,EAAAA,EACN5rB,UAAWQ,GAAAA,CAAWT,EAAOkqB,YAAalqB,EAAOmqB,iBACjDrd,QAfW,KAC3B6d,EAAuBC,EAAsB,IAe7BtqB,KAAK,OAGb,kBAACirB,EAAA,EAAD,CACIzR,mBAAoB9Z,EAAOgqB,mBAC3B/pB,UAAWD,EAAOiqB,UAClB3pB,KAAMqrB,GAAgBlS,EAAAA,EAAAA,SACtB/B,IAAKiU,IAERf,IAAwBF,EAAgBllB,OAAS,GAC9C,kBAACrF,EAAA,EAAD,CACIC,KAAM0rB,EAAAA,EACN7rB,UAAWQ,GAAAA,CAAWT,EAAOkqB,YAAalqB,EAAOoqB,iBACjDtd,QAzBW,KAC3B6d,EAAuBC,EAAsB,IAyB7BtqB,KAAK,QAIjB,kBAACmqB,EAAD,CACIC,gBAAiBA,EACjBE,oBAAqBA,EACrBD,uBAAwBA,M,6EC9DjC,MAAMoB,EAA2B,CAChCC,mBACA,OAAO9pB,IAAAA,KAAU,kBAEjB+pB,mBACA,OAAO/pB,IAAAA,KAAU,kBAEjBgqB,iBACA,OAAOhqB,IAAAA,KAAU,eAEjBiqB,eACA,OAAOjqB,IAAAA,KAAU,cAEjBkqB,WACA,OAAOlqB,IAAAA,KAAU,SAEjBmqB,UACA,OAAOnqB,IAAAA,KAAU,wBAEjBoqB,iBACA,OAAOpqB,IAAAA,KAAU,2BAEjBqqB,mBACA,OAAOrqB,IAAAA,KAAU,yBAEjBsqB,aACA,OAAOtqB,IAAAA,KAAU,yBAEjBuqB,oBACA,OAAOvqB,IAAAA,KAAU,4BAEjBwqB,sBACA,OAAOxqB,IAAAA,KAAU,2BC3BZyqB,EAAwC,WAGhD,IAFD,MAACtoB,GAEA,uDAF8B,GAC/BuoB,EACC,uCACD,MACI,CAAC,MAAO,aAAc,eAAgB,SAAU,gBAAiB,kBAAmB,YAAYhnB,SAASgnB,IAElGC,EAAAA,EAAAA,MAAK,CAACD,EAAM,EAAG,SAAUvoB,GAGvB,iBAATuoB,IAA2BC,EAAAA,EAAAA,MAAK,CAAC,oBAAqB,EAAG,SAAUxoB,GAC5DyoB,GAAAA,CAAOzoB,EAAM0oB,kBAAkB,GAAG1oB,OAAiB2oB,OAAO,cAGxD,iBAATJ,IAA2BC,EAAAA,EAAAA,MAAK,CAAC,oBAAqB,EAAG,SAAUxoB,GAC5DyoB,GAAAA,CAAOzoB,EAAM0oB,kBAAkB,GAAG1oB,OAAiB2oB,OAAO,YAGxD,eAATJ,IAAyBC,EAAAA,EAAAA,MAAK,CAAC,SAAU,EAAG,SAAUxoB,KAAUwoB,EAAAA,EAAAA,MAAK,CAAC,QAAS,EAAG,SAAUxoB,GACpF,GAAEA,EAAM4oB,OAAO,GAAG5oB,WAAWA,EAAM6oB,MAAM,GAAG7oB,SAASnC,IAAAA,KAAU,YAG9D,SAAT0qB,IAAmBC,EAAAA,EAAAA,MAAK,CAAC,OAAQ,EAAG,SAAUxoB,GAEtC,IADM8oB,OAAO9oB,EAAM+nB,KAAK,GAAG/nB,OAAS,KAAM+oB,QAAQ,aAD9D,GAMEC,EAAkC,WAAqC,IAApCC,EAAoC,uDAAP,GAClE,OAAOA,EAAUpa,QAAO,QAAC,OAACqa,GAAF,SAAeA,MAG9BC,EAAsB,CAACC,EAAgBC,KAChD,MAAM,aAACC,EAAe,GAAhB,aAAoBC,EAAe,GAAnC,MAAuCC,EAAQ,IAAMH,EAErDI,EAAeH,EAAanoB,OAC5BioB,EAAKva,QAAQtM,GAAQ+mB,EAAa/nB,SAASgB,KAC3C6mB,EAAKva,QAAQtM,IAASgnB,EAAahoB,SAASgB,KAElD,OAAqB,IAAjBinB,EAAMroB,OACCsoB,EAGJA,EAAaC,MAAK,CAACC,EAAGC,KACzB,MAAMC,EAAOL,EAAM9rB,QAAQisB,GACrBG,EAAON,EAAM9rB,QAAQksB,GAC3B,OAAc,IAAVC,IAAyB,IAAVC,EAAoB,GACzB,IAAVA,IAAyB,IAAVD,GAAqB,EACjCA,EAAOC,MA0BTC,EAA6B,WAIrC,IAHDC,EAGC,uDAHgC,GACjCC,EAEC,uCADDZ,EACC,uCACD,MAAMa,EAAqBlB,EAAgCiB,EAASE,YAEpE,OAAOhB,EAAoBiB,OAAOhB,KAAKY,EAAUhqB,OAAS,IAAKqpB,GAAagB,QAAO,CAAC7H,EAAQjgB,KACxF,MAAM0nB,EAAWC,EAAmBrqB,MAAK,QAAC,KAAC0oB,GAAF,SAAYA,IAAShmB,KAC9D,OAAO0nB,EAAW,IAAIzH,EAAQ,CAACyH,SAAUA,EAAUK,OAAQN,EAAUhqB,MAAMuC,KAASigB,IACrF,KAGM+H,EAAUhoB,GACZ,CAAC,MAAO,aAAc,eAAgB,SAAU,gBAAiB,mBAAmBhB,SAASgB,GC7F3FrH,GAAYC,EAAAA,EAAAA,GAAW,CAChCsB,MAAO,CACHsB,aAAc,OACdC,MAAO,QACPtB,SAAU,OACVF,WAAY,OACZ,WAAY,CACRuB,aAAc,QAGtBG,QAAS,CACLsE,MAAO,OACPC,OAAQ,MACR6V,WAAY,0BAEhBkS,OAAQ,KCACC,EAAiB,IAAkD,IAAjD,cAAC/qB,EAAD,gBAAgBgrB,EAAhB,IAAiCtqB,GAAgB,EAC5E,MAAMzE,EAAST,IACTyvB,EFyCC3B,EEzCgCtpB,EFyCSyqB,YExC1CK,EAASnc,QAAQqc,GAQvB,OACI,kBAAC,EAAAvrB,IAAD,KACI,kBAAC,EAAAhC,WAAD,CAAYvB,UAAWQ,GAAAA,CAAWT,EAAOc,MAAO,CAAC,CAACd,EAAO6uB,QAASA,KAC7D3sB,IAAAA,KAAU,cAEd2sB,GACG,kBAAC,EAAAloB,SAAD,KACI,kBAACsoB,EAAA,EAAD,CACIzsB,MAAON,IAAAA,KAAU,cACjBsG,KAAMwmB,EACNE,OAAO,EACPC,QAjBC7B,IACbyB,GACAA,EAAgBzB,EAAU9mB,KAAKzC,IAAD,CAAqBA,cAAAA,EAAeqrB,UAAW3qB,UAiBrE,kBAAC,EAAA4qB,QAAD,CAASpvB,UAAWD,EAAOuC,a,eCvCxC,MAAMhD,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,CACFR,SAAU,OACV+T,cAAe,EACfjU,WAAY,OACZuB,aAAc,QAElBtB,MAAO,CACHuB,MAAO,yBACP6G,YAAa,OACbomB,MAAO,QAEXtpB,QAAS,CACL3D,MAAO,yBACPktB,SAAU,cAEd1sB,KAAM,CACFR,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BC,eAAgB,YCTXysB,EAAe,IAA+C,IAA9C,MAAC1uB,EAAD,QAAQkF,EAAR,OAAiB4oB,EAAjB,SAAyBxtB,GAAqB,EACvE,MAAMpB,EAAST,IAEf,OACI,yBAAKU,UAAWD,EAAOuB,MACnB,0BAAMtB,UAAWD,EAAOc,OAAQA,GAC/B8tB,EACG,uBAAG3uB,UAAWD,EAAO6C,KAAMyD,KAAMN,GAC5B9D,IAAAA,KAAU,SAGf,0BAAMjC,UAAWD,EAAOgG,SAAUA,GAAW5E,KCpBhD7B,GAAYC,EAAAA,EAAAA,GAAW,CAChC+B,KAAM,CACFX,QAAS,UAEbE,MAAO,CACHuB,MAAO,yBACPtB,SAAU,QAEdiF,QAAS,CACL3D,MAAO,yBACPktB,SAAU,gBCKLE,EAAe,IAAuE,IAAtE,eAAC/D,EAAD,cAAiB3nB,EAAjB,0BAAgC2rB,GAAsC,EAC/F,MAAM1vB,EAAST,IACTowB,GAAazsB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,eAEzBysB,GN0C8BvB,EM1CiB3C,EN0CegC,EM1CCgC,EN2C9DlC,EAAoBiB,OAAOhB,KAAK1B,GAA2B2B,GAC7DlnB,KAAKI,GACY+lB,EAAsC0B,EAAWznB,GAMxD,CACH9F,MAAOirB,EAAyBnlB,GAChCvC,MAAOsoB,EAAsC0B,EAAWznB,GACxDgoB,OAAQA,EAAOhoB,IANR,OASdsM,OAAOR,UAfuB,IAAC2b,EAAgCX,EMzCpE,MAAMmC,EAA0BzB,EAC5B1C,EACA3nB,EACA2rB,GAGJ,OACI,kBAAC,EAAAlsB,IAAD,CAAKvD,UAAWD,EAAOuB,MAClBquB,EAAqBppB,KAAI,QAAC,MAAC1F,EAAD,MAAQuD,EAAR,OAAeuqB,GAAhB,SACtB,kBAACY,EAAD,CAAc5oB,IAAK9F,EAAO8tB,OAAQA,EAAQ9tB,MAAOA,EAAOkF,QAAS3B,OAEpEsrB,GACGE,EAAwBrpB,KAAI,QAAC,SAAC8nB,EAAD,OAAWK,GAAZ,SACxB,kBAACmB,EAAA,EAAD,CACIlpB,IAAK0nB,EAAS7pB,IACdV,cAAeuqB,EACfyB,WAAW,EACXpB,OAAQA,EACRqB,eAAgBhwB,EAAOc,MACvBmvB,iBAAkBjwB,EAAOgG,QACzBopB,UAAW1D,EAAejnB,W,eCxC3C,MAAMlF,GAAYC,EAAAA,EAAAA,GAAW,CAChC+B,KAAM,GACNwH,KAAM,CACFnI,QAAS,UAEb2B,QAAS,CACLsE,MAAO,OACPC,OAAQ,MACR6V,WAAY,0BAEhB5B,QAAS,CACLxS,QAAS,OACT4H,eAAgB,WAChB9G,UAAW,OAEf6mB,aAAc,CACV7tB,MAAO,QACP6G,YAAa,SCKRinB,EAAe,IAWf,IAXgB,cACzBpsB,EADyB,0BAEzB2rB,EAFyB,eAGzBhE,EAHyB,WAIzB0E,EAJyB,kBAKzBC,EALyB,kBAMzBC,EANyB,gBAOzBvB,EAPyB,SAQzBhlB,EARyB,QASzBolB,EATyB,KAUzB9R,GACS,EACT,MAAMrd,EAAST,IACTswB,EAA0BzB,EAC5B1C,EACA3nB,EACA2rB,GAEEa,EACiC,IAAnCV,EAAwBrqB,QAAoD,IAAnCqqB,EAAwBrqB,QAAgB4qB,EAErF,OACI,kBAAC,EAAA5sB,IAAD,CAAKvD,UAAWD,EAAOuB,MACnB,kBAAC,EAAAiC,IAAD,CAAKvD,UAAWD,EAAO+I,MAClB8mB,EAAwBrpB,KAAI,IAAwB,IAAvB,SAAC8nB,EAAD,OAAWK,GAAY,EACjD,OACI,kBAAC,KAAD,CACI/nB,IAAK0nB,EAAS7pB,IACd2qB,UAAW1D,EAAejnB,IAC1BV,cAAeuqB,EACfK,OAAQA,EACR6B,kBAAkBC,EAAAA,EAAAA,KAAU/E,EAAejnB,KAC3C4Y,KAAMA,EACN0S,WAAW,EACXM,kBAAmBA,EACnBC,kBAAmBA,EACnBvB,gBAAiBA,QAKhCwB,GACG,oCACI,kBAAC,EAAAlB,QAAD,CAASpvB,UAAWD,EAAOuC,UAC3B,kBAAC,EAAAiB,IAAD,CAAKvD,UAAWD,EAAO+a,SACnB,kBAAC,EAAAnO,OAAD,CAAQN,UAAW8jB,EAAYtjB,QAAS/C,EAAU9J,UAAWD,EAAOkwB,cAC/DhuB,IAAAA,KAAU,WAEf,kBAAC,EAAA0K,OAAD,CAAQN,UAAW8jB,EAAYtjB,QAASqiB,EAAS9sB,MAAM,WAClDH,IAAAA,KAAU,c,eCtDhC,MCjBDwuB,EAAY,CACdpuB,QAAS,CACLwB,KAAM,OACNlB,QAAST,EAAAA,IAAAA,QAAAA,QACT4E,UAAW5E,EAAAA,IAAAA,QAAAA,YCObwuB,GAAeC,EAAAA,EAAAA,GAAeF,GAQvBG,EAAW,IAA8F,IAA7F,0BAACnB,EAAD,cAA4B3rB,EAAe2nB,eAAgBoF,GAAkC,EAClH,MAAM,cACFC,EADE,gBAEFC,EAFE,gBAGFC,EAHE,kBAIFC,EAJE,kBAKFC,EALE,eAMFzF,EANE,WAOF0E,GFVuB,KAAoD,IAAnD,sBAACU,EAAD,cAAwB/sB,GAA2B,EAC/E,MAAMqtB,GAAWC,EAAAA,EAAAA,eACXC,GAAShuB,EAAAA,EAAAA,YAAWiuB,EAAAA,IAEnB7F,EAAgB8F,IAAqBjnB,EAAAA,EAAAA,UAASumB,IAErD3lB,EAAAA,EAAAA,YAAU,KACNqmB,EAAkBV,KACnB,CAACA,IAEJ,MACMV,IAAcrU,EAAAA,EAAAA,QAAO2P,EAAgBoF,GAErCC,GAAgB9a,EAAAA,EAAAA,cAAauY,IAC/BgD,GAAmBC,GACRjD,EAAWE,QAAO,CAACL,EAAWqD,KACjC,MAAM,cAAC3tB,EAAD,UAAgBqrB,EAAhB,MAA2BvtB,GAAS6vB,EAC1C,OAAOC,EAAAA,EAAAA,KAAa,CAChB1uB,OAAQorB,EACRtqB,cAAAA,EACAqrB,UAAAA,EACAvtB,MAAAA,EACA+vB,aAZK,MAcVH,OAER,IAEGT,GAAkB/a,EAAAA,EAAAA,cAAY,IAAiC,IAAhC,MAAC5R,EAAD,cAAQN,EAAR,IAAuBU,GAAS,EACjE+sB,GACKC,IACGI,EAAAA,EAAAA,KAAc,CACV5uB,OAAQwuB,EACR1tB,cAAAA,EACAU,IAAAA,EACAJ,MAAAA,EACAutB,aA1BK,QA6BlB,IAEGX,GAAkBhb,EAAAA,EAAAA,cAAY,IAA0B,IAAzB,cAAClS,EAAD,IAAgBU,GAAS,EAC1D+sB,GACKC,IACGK,EAAAA,EAAAA,KAAgB,CAAC7uB,OAAQwuB,EAAe1tB,cAAAA,EAAeU,IAAAA,EAAKmtB,aAlCnD,QAoClB,IAiBH,MAAO,CACHb,cAAAA,EACAC,gBAAAA,EACAC,gBAAAA,EACAC,mBAnBsBjb,EAAAA,EAAAA,cAAY,KAClCub,EAAkBV,KACnB,CAACA,IAkBAK,mBAhBsBlb,EAAAA,EAAAA,cAAY,KAClCmb,EACIW,EAAAA,GAAAA,QAAAA,gBAAgC,CAC5B1tB,MAAOqnB,EACP3nB,cAAeA,EACfU,IAAKinB,EAAejnB,IACpB6sB,OAAAA,OAGT,CAAC5F,EAAgB3nB,EAAeutB,EAAQF,IAQvC1F,eAAAA,EACA0E,WAAAA,IE3DA4B,CAAgB,CAACjuB,cAAAA,EAAe+sB,sBAAAA,IAC9BzT,GAAOna,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,SACnB8uB,GAAiB/uB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,mBAEnC,OACI,kBAAC,gBAAD,CAAkBhB,MAAOwuB,GACrB,kBAAC,EAAAntB,IAAD,KACI,kBAACsrB,EAAD,CACI/qB,cAAeA,EACfU,IAAKinB,MAAAA,OAAF,EAAEA,EAAgBjnB,IACrBsqB,gBAAiBkD,EAAiBlB,OAAgB5a,IAEtD,kBAACsZ,EAAD,CACI1rB,cAAeA,EACf2nB,eAAgBA,EAChBgE,0BAA2BA,IAE9BuC,GACG,kBAAC9B,EAAD,CACI9S,KAAMA,EACNqS,0BAA2BA,EAC3B3rB,cAAeA,EACf2nB,eAAgBA,EAChB0E,WAAYA,EACZC,kBAAmBY,EACnBX,kBAAmBU,EACnBjC,gBAAiBgC,EACjBhnB,SAAUmnB,EACV/B,QAASgC,OCvDpB5xB,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,CACFuG,SAAU,WACVpI,gBAAiB,OACjBgI,UAAW,qBACXxG,SAAU,UAEd6L,OAAQ,CACJxE,QAAS,OACTS,WAAY,SACZlC,OAAQ,OACRrE,YAAa,OACbgF,UAAY,aAAYtF,EAAMG,QAAQC,WAE1C2vB,YAAa,CACT7vB,MAAO,4BACPtB,SAAU,OACVF,WAAY,QAEhBsxB,YAAa,CACTzqB,UAAW,oBACXxG,SAAU,QAEd+L,KAAM,CACFrM,QAAS,QAEbwxB,iBAAkB,CACdhpB,WAAY,EACZhH,aAAc,QAElBiwB,cAAe,CACXjpB,WAAY,MACZ/G,MAAO,yBACPtB,SAAU,OACVF,WAAY,QAEhByxB,SAAU,CACNjwB,MAAO,QACPzB,QAAS,OCfJ2xB,EAA0B,IAA2E,IAA1E,UAACtyB,EAAD,eAAYyrB,EAAZ,mBAA4B8G,EAA5B,cAAgDzuB,GAA0B,EAC9G,MAAM/D,EAAST,IACT0D,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,YAA6B,GAClDsvB,GACFvvB,EAAAA,EAAAA,cAAawjB,GAAUvjB,EAAAA,GAAAA,UAAAA,kBAAgCujB,EAAOzjB,MAAAA,OAAvC,EAAuCA,EAAQwB,QAAU,GAE9EiuB,GADaxvB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,eACGF,EAASwvB,EACrCE,GAAuBzvB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,gCAAgD,GACnFusB,EACFiD,EAAqB1vB,MAAAA,OAAD,EAACA,EAAQa,QAAS6uB,MAAAA,OAAtC,EAAsCA,EAAsBC,UAAW,IAEpEC,EAAWC,IAAgBvoB,EAAAA,EAAAA,WAAkB,IACpDY,EAAAA,EAAAA,YAAU,KACN2nB,GAAaJ,MAAAA,OAAA,EAAAA,EAAcK,sBAAsBrH,MAAAA,OAApC,EAAoCA,EAAgBjnB,QAClE,CAACinB,MAAAA,OAAD,EAACA,EAAgBjnB,IAAKiuB,IAEzB,MAAMM,GAAe/c,EAAAA,EAAAA,cAAY,KAC7Buc,EAAmB9G,EAAejnB,OACnC,CAACinB,MAAAA,OAAD,EAACA,EAAgBjnB,MAEpB,OACI,kBAAC,EAAAjB,IAAD,CAAKvD,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACpC,kBAAC,EAAAuD,IAAD,CAAKvD,UAAWD,EAAO+M,QACnB,kBAAC,EAAAvL,WAAD,CAAYvB,UAAWD,EAAOkyB,aAAchwB,IAAAA,KAAU,aAE1D,kBAAC,EAAAsB,IAAD,CAAKvD,UAAWD,EAAOmyB,aACnB,kBAAC,EAAA3uB,IAAD,CAAKvD,UAAWD,EAAOiN,MACnB,kBAAC,EAAAgmB,iBAAD,CACI5xB,QAAS,CAACE,KAAMvB,EAAOoyB,iBAAkB5vB,MAAOxC,EAAOqyB,eACvDa,QACI,kBAAC,EAAA3d,SAAD,CACItV,UAAWD,EAAOsyB,SAClB9c,QAASqd,EACT1qB,SAAU6qB,EACV3wB,MAAM,YAGdG,MAAON,IAAAA,KAAU,oBAErB,kBAAC2uB,EAAD,CACI9sB,cAAeA,EACf2rB,0BAA2BA,EAC3BhE,eAAgBA,QClE3BnsB,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACFgH,QAAS,OACT1B,MAAO,OACPc,UAAW,OACXb,OAAQ,sBAEZhE,KAAM,CACFia,KAAM,YAEVoW,QAAS,CACLtsB,MAAO,aCEFusB,EAAmB,IAMnB,IANoB,gBAC7B1I,EAAkB,GADW,yBAE7B2I,EAF6B,4BAG7BC,EAH6B,mBAI7Bd,EAJ6B,cAK7BzuB,GACS,EACT,MAAO6mB,EAAqBD,IAA0BpgB,EAAAA,EAAAA,UAAiB,IACvEY,EAAAA,EAAAA,YAAU,KAIFooB,EAHCF,EAG2B3I,EAAgB5G,WAAWzf,GAAUA,EAAMI,MAAQ4uB,IAFnD,KAIjC,CAACA,EAA0B3I,IAE9B,MAAM6I,GAA8Btd,EAAAA,EAAAA,cAC/BpU,IAAkB,MACf8oB,EAAuB9oB,GACvByxB,EAA2B,UAAC5I,EAAgB7oB,UAAjB,aAAC,EAAwB4C,OAExD,CAACimB,IAEC1qB,EAAST,IAEf,OACI,kBAAC,EAAAiE,IAAD,CAAKvD,UAAWD,EAAOuB,MACnB,kBAACkqB,EAAD,CACIb,oBAAqBA,EACrBD,uBAAwB4I,EACxB7I,gBAAiBA,EACjBzqB,UAAWD,EAAO8C,OAEtB,kBAACyvB,EAAD,CACIC,mBAAoBA,EACpB9G,eAAgBhB,EAAgBE,GAChC3qB,UAAWD,EAAOmzB,QAClBpvB,cAAeA,M,4BClDxB,MAAMxE,IAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACFX,QAAS,SACT+G,UAAW,OACXb,OAAQ,sBAEZI,KAAM,CACFtG,QAAS,WCeJ4yB,GAAc,IAUd,IAVe,MACxB1Q,EADwB,cAExBE,EAFwB,cAGxByQ,EAHwB,gBAIxBC,EAJwB,YAKxBpY,EALwB,eAMxBC,EANwB,WAOxBE,EAPwB,aAQxBkY,EARwB,SASxBnY,GACS,EACT,MAAMxb,EAAST,KAETq0B,EAA6BnrB,GAE3B,kBAACorB,GAAA,EAAD,CACIprB,GAAIA,EACJgM,SAAUuO,EAAcpd,SAAS6C,GACjCoS,cAAwC,IAAzBmI,EAAcxd,OAC7B6V,SAAU,IAAMoY,EAAchrB,GAC9B0S,WAAY,IAAMuY,EAAgBjrB,GAClC6S,YAAa,IAAMA,EAAY7S,GAC/B8S,eAAgB,IAAMA,EAAe9S,GACrCgT,WAAY,IAAMA,EAAWhT,GAC7BqE,QAAS,IAAM6mB,EAAalrB,GAC5B+S,SAAUA,EAAW,IAAMA,EAAS/S,QAAM0N,EAC1C+E,eAAa,IAKzB,OACI,kBAAC,EAAA1X,IAAD,CAAKvD,UAAWD,EAAOuB,MACnB,kBAAC,EAAA4pB,KAAD,CAAMrJ,WAAS,GACVgB,EAAMtc,KAAI,QAAC,GAACiC,EAAD,IAAKiP,GAAN,SACP,kBAAC,EAAAyT,KAAD,CAAMvkB,IAAK6B,EAAIpH,QAAS,CAAC6F,KAAMlH,EAAOkH,MAAOA,MAAI,GAC7C,kBAACqkB,EAAA,EAAD,CACIjrB,KAAMmZ,EAAAA,EAAAA,MACN3M,QAAS,IAAM6mB,EAAalrB,GAC5BiP,IAAKA,EACLqC,QAAS6Z,EAA0BnrB,YC9DlDlJ,IAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChC2xB,aAAc,CACV/yB,SAAU,OACVC,WAAY,IACZqB,MAAOF,EAAMG,QAAQM,QAAQE,KAC7Boc,cAAe,iBCOV6U,GAAa,IAA4D,IAA3D,cAAC/Q,EAAD,MAAgBF,EAAhB,YAAuBkR,EAAvB,WAAoCC,GAAuB,EAClF,MAAMj0B,EAAST,KACT20B,EAAmBlR,EAAcxd,SAAWsd,EAAMtd,OAExD,OACI,kBAAC,EAAAa,KAAD,CACIuI,UAAU,SACVulB,UAAU,OACV9yB,QAAS,CAACiI,OAAQtJ,EAAO8zB,cACzBhnB,QAASonB,EAAmBD,EAAaD,GAExCE,EAAmBhyB,IAAAA,KAAU,mBAAqBA,IAAAA,KAAU,uB,+DCvBlE,MAAM3C,IAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC40B,eAAgB,CACZ/xB,MAAO,OACPtB,SAAU,OACVqI,WAAY,QAEhBirB,YAAa,CACThyB,MAAO,OACPtB,SAAU,OACVqI,WAAY,QAEhBkrB,aAAc,CACVjyB,MAAO,OACPtB,SAAU,OACVqI,WAAY,QAEhB7G,QAAS,CACLuE,OAAQ,OACRD,MAAO,MACPuC,WAAY,OACZ1J,gBAAiB,8BCLZ60B,GAAc,IAAsD,IAArD,WAAC9Y,EAAD,QAAa+Y,EAAb,SAAsBC,EAAtB,SAAgCjZ,GAAqB,EAC7E,MAAMxb,EAAST,KAEf,OACI,oCACKk1B,GACG,kBAAC,EAAA7nB,OAAD,CAAQnL,QAAQ,YAAYY,MAAM,UAAUyK,QAAS2nB,EAAUC,UAAW,kBAACC,GAAA,EAAD,OACrEzyB,IAAAA,KAAU,WAGlBuZ,GAAcgZ,GAAY,yBAAKx0B,UAAWD,EAAOuC,UACjDkZ,GACG,kBAAC,KAAD,CACIxb,UAAWD,EAAOo0B,eAClB5lB,aAActM,IAAAA,KAAU,2BACxB9B,KAAMic,GAAAA,EACNvP,QAAS2O,IAGhB+Y,GACG,kBAAC,KAAD,CACIv0B,UAAWD,EAAOq0B,YAClB7lB,aAActM,IAAAA,KAAU,aACxB9B,KAAMw0B,GAAAA,EACN9nB,QAAS0nB,IAGhBhZ,GACG,kBAAC,KAAD,CACIvb,UAAWD,EAAOs0B,aAClB9lB,aAActM,IAAAA,KAAU,yBACxB9B,KAAMy0B,GAAAA,EACN/nB,QAAS0O,MCqI7B,GAtJ+B,IAYlB,IAZmB,gBAC5BkP,EAD4B,KAE5BjZ,EAF4B,QAG5BD,EAH4B,yBAI5B6hB,EAJ4B,4BAK5BC,EAL4B,cAM5BvvB,EAN4B,WAO5B0X,EAP4B,YAQ5BH,EAR4B,eAS5BC,EAT4B,SAU5BkZ,EAV4B,kBAW5BpE,GACS,EACT,MAAOrN,EAAe8R,IAAoBvqB,EAAAA,EAAAA,UAAmB,KACtD8S,EAAM0X,IAAWxqB,EAAAA,EAAAA,UAAe4S,GAAAA,EAAAA,cACjCwS,GAAazsB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,gBAE/BgI,EAAAA,EAAAA,YAAU,KACN4pB,EAAQ1B,EAA2BlW,GAAAA,EAAAA,aAAoBA,GAAAA,EAAAA,gBACxD,CAACkW,IAEJ,MAAM2B,EAAatK,EAAgBlkB,KAAKkrB,IAAD,CACnCha,KAAK8T,EAAAA,EAAAA,KAAgCkG,GACrCuD,aAAaC,EAAAA,EAAAA,KAAuBxD,GACpCjpB,GAAIipB,EAAUjtB,QAiCZ0wB,EAAmB1sB,IACrB6S,EAAY0Z,EAAW9wB,MAAKkxB,EAAAA,EAAAA,QAAO,KAAM3sB,IAAKwsB,cAO5CzC,EAAsB/pB,IACxB,MAAMijB,EAAiBhB,EAAgBxmB,MAAK,QAAC,IAACO,GAAF,SAAWA,IAAQgE,KAC/D8S,EAAemQ,IAGb2J,EAAgB5sB,IAClB4nB,EAAkB,CAAC5rB,IAAKgE,EAAI1E,cAAAA,KAW1BuxB,EAAgBjY,IAASF,GAAAA,EAAAA,aACzBoY,EAAgBlY,IAASF,GAAAA,EAAAA,aACzBqY,EAAmBxS,EAAcxd,OAAS,EAC1CiwB,EAAkCF,GAAkBD,GAAiBE,EAErEE,GAAsB/F,GAAc8F,EACpCE,GAAsBhG,IAAe4F,GAAkBD,IAAkBE,GAEzE1Y,EAAawY,GAAiBE,GAChC,kBAACzB,GAAD,CACIjR,MAAOkS,EACPhS,cAAeA,EACfiR,WAvDe,KACnBa,EAAiB,KAuDbd,YA5DgB,KACpBc,GAAiBc,EAAAA,EAAAA,OAAM,KAAMZ,OA+D3B/X,EACF,kBAACsX,GAAD,CACI/Y,SAAUka,EA3BgB,MACXJ,EAAgBtS,EAAgB,CAACqQ,IACzCzN,SAASnhB,IAChB4wB,EAAa5wB,MAEbue,EAAcxd,QAAQsvB,EAAiB,UAsBoB3e,EAC3DsF,WAAYga,EA3DgB,KAChC,MAAMI,EAAeP,GACflU,EAAAA,EAAAA,OACIlO,EAAAA,EAAAA,SAAO,QAAC,GAACzK,GAAF,SAAUua,EAAcpd,SAAS6C,OACxCmtB,EAAAA,EAAAA,OAAM,eAFVxU,CAGE4T,GACF,CAACA,EAAW9wB,MAAKkxB,EAAAA,EAAAA,QAAO,KAAM/B,IAA2B4B,aAC/DxZ,EAAWoa,SAoDqE1f,EAC5Eqe,QAASe,EA1Ce,KAC5BJ,EAAgB9B,SAyCuCld,EACnDse,SAAUkB,EAAqBlB,OAAWte,IASlD,OACI,kBAACiH,GAAA,EAAD,CACIC,KAAMA,EACN5L,KAAMA,EACN6L,aAAcyX,EACdhoB,OAAQ,CACJwD,KAAMuM,EACNtM,MAAOyM,GAEXzL,QAASA,GAER8jB,GACG,kBAAC9B,GAAD,CACI1Q,MAAOkS,EACPhS,cAAeA,EACfyQ,cArGMhrB,IAClBqsB,GAAkBhS,GAAU,IAAIA,EAAOra,MAqG3BirB,gBAlGQjrB,IACpBqsB,GAAkBhS,GAAUA,EAAM5P,QAAQhM,GAASA,IAASuB,OAkGhD6S,YAAa6Z,EACb5Z,eAAgBiX,EAChB/W,WA/EQhT,IACpBgT,EAAW,CAACuZ,EAAW9wB,MAAKkxB,EAAAA,EAAAA,QAAO,KAAM3sB,IAAKwsB,eA+ElCtB,aAzBYlrB,IACxB6qB,EAA4B7qB,GAC5BssB,EAAQ5X,GAAAA,EAAAA,eAwBI3B,SAAWmU,OAA4BxZ,EAAfkf,IAG/BE,GACG,kBAACnC,EAAD,CACIZ,mBAAoBA,EACpBc,4BAA6BA,EAC7BD,yBAA0BA,EAC1B3I,gBAAiBA,EACjB3mB,cAAeA,M,gBCtK5B,MAAMxE,IAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChC2zB,SAAU,CACNhuB,SAAU,WACVS,QAAS,OACT1B,MAAO,OACPsI,SAAU,EACV+U,WAAY,EACZ6R,SAAU,SACV1sB,UAAW,MACXnI,SAAU,UAGd80B,oBAAqB,IAA2C,IAA1C,WAAC/c,EAAD,YAAaC,GAA6B,EAC5D,MAAO,CACHxZ,gBAAiB,QACjBmH,MAAOoS,EACPnS,OAAQoS,EACRpR,SAAU,WACV0I,MAAO,EACPJ,OAAQ,YAGhB6lB,WAAY,IAA2C,IAA1C,WAAChd,EAAD,YAAaC,GAA6B,EACnD,MAAO,CACH3Q,QAAS,OACT4H,eAAgB,SAChBnH,WAAY,SACZnC,MAAOoS,EACPnS,OAAQoS,EACRxZ,iBAAiB8U,EAAAA,EAAAA,MAAKrS,EAAMG,QAAQM,QAAQE,KAAM,OAG1DozB,OAAQ,CACJ7zB,MAAOF,EAAMG,QAAQM,QAAQE,KAC7B/B,SAAU,OACVF,WAAY,OACZiU,cAAe,EACfqhB,UAAW,SACXj1B,SAAU,SACVD,WAAY,SACZE,aAAc,gB,yHCLtB,MAsJA,GAtJ4B,IAcf,IAdgB,cACzB4C,EADyB,gBAEzB2mB,EAAkB,GAFO,YAGzB0L,EAHyB,QAIzBrc,GAAU,EAJe,gBAKzBsc,EAAkB,EALO,SAMzBj1B,EANyB,SAOzBqzB,EAPyB,kBAQzBpE,EARyB,UASzBiG,EAAYC,GAAAA,GATa,OAUzBC,EAVyB,UAWzBpH,EAXyB,UAYzBqH,EAZyB,iCAazBC,GACS,EACT,MAAMzzB,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,YAA6B,GAClDwsB,GAAazsB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,eACzBiuB,GAAWC,EAAAA,EAAAA,eACXrxB,EAAST,GAAU+2B,IACzBnrB,EAAAA,EAAAA,YAAU,KACN,GAAIqrB,GAAUE,EAAkC,CAC5C,MAAMC,EAAqBF,EAAYD,EAAOI,cAAgBJ,EAAOK,YACjEF,EAAqBjM,EAAgBllB,QACrCkxB,EAAiC,CAC7BtH,UAAAA,EACAzrB,iBAAkBI,EAAcU,IAChCqyB,kBAAmB/yB,EAAc6oB,KACjC+B,OAAQ,GACRoI,iBAAkBJ,OAI/B,CAACH,EAAQE,EAAkC3yB,EAAeqrB,EAAW1E,EAAgBllB,OAAQixB,IAEhG,MAAMO,GAAYzpB,EAAAA,EAAAA,WACX0pB,EAAUC,IAAe3sB,EAAAA,EAAAA,UAAiB,IAC1C4sB,EAAmBC,IAAwB7sB,EAAAA,EAAAA,UAAiB,GAE7D8sB,GAA4B/zB,EAAAA,EAAAA,YAAWg0B,EAAAA,IACtCC,EAAcC,IAAmBjtB,EAAAA,EAAAA,WAAkB,IACnD8oB,EAA0BC,IAA+B/oB,EAAAA,EAAAA,YAE1DktB,GAA8BxhB,EAAAA,EAAAA,cAC/BpP,IACG,MAAM,YAAC6wB,EAAD,WAAcze,GAAcqd,EAC5BqB,EAAoBtO,KAAKuO,OAAO/wB,EAAQ6wB,IAAgBze,EAAaye,IAAgBrB,EACrFwB,EACFhxB,EAAQ6wB,GAAeC,EAAoBtB,IAAoBpd,EAAaye,GAC5EI,GAAAA,GACJZ,EAAYS,GACRjN,EAAgBllB,OAASmyB,EACzBP,EAAqB1M,EAAgBllB,OAASmyB,GAAqBE,EAAiB,EAAI,IAExFT,EAAqB,KAG7B,CAAC1M,EAAgBllB,OAAQ6wB,EAAiBC,IAGxCyB,GAAe9hB,EAAAA,EAAAA,cAChBpP,IACG4wB,EAA4B5wB,GAC5BmwB,EAAU5rB,QAAUvE,IAExB,CAAC4wB,KAGLtsB,EAAAA,EAAAA,YAAU,KACF6rB,EAAU5rB,SACVqsB,EAA4BT,EAAU5rB,WAE3C,CAACsf,EAAgBllB,OAAQiyB,IAE5B,MAAMO,GAA+B/hB,EAAAA,EAAAA,cAChCxR,IACQ4yB,IACD/D,EAA4B7uB,GAC5B+yB,GAAgB,MAGxB,CAACH,IAGCY,GAAgChiB,EAAAA,EAAAA,cAAY,KAC9CuhB,GAAgB,KACjB,IAEGU,EAAkBC,GCvHSA,CAAAA,IACjCA,EAAKvS,SAAQ,CAACwS,EAAKv2B,KACf,IACI,GAZWu2B,CAAAA,KAFAA,CAAAA,GAAgBA,EAAIr2B,QAAQ,OAAS,GAA2B,IAAtBq2B,EAAIr2B,QAAQ,MAGpEs2B,CAAcD,IAEF,IAAIE,IAAIF,GACTG,OAAS5Z,SAAS4Z,KAQtBC,CAAcJ,GAAM,CACpB,MAAMK,EAAS/X,SAASgY,cAAc,UACtCD,EAAOE,aAAa,QAAS,kBAC7BF,EAAOE,aAAa,MAAOP,GAC3B1X,SAASzT,KAAK2rB,YAAYH,GAC1BI,YAAW,IAAMnY,SAASzT,KAAK6rB,YAAYL,IAV/B,KAUyC52B,EAAQ,QAC1D,CACH,MAAMgB,EAAO6d,SAASgY,cAAc,KACpC71B,EAAKyD,KAAO8xB,EACZv1B,EAAKk2B,SAxBOX,CAAAA,GAAgBA,EAAInxB,MAAM,KAAK+xB,MAwB3BC,CAAmBb,GACnC1X,SAASzT,KAAK2rB,YAAY/1B,GAC1BA,EAAKq2B,QACLxY,SAASzT,KAAK6rB,YAAYj2B,IAEhC,MAAO2I,GACLY,QAAQiM,MAAM7M,QDqGqB2tB,CAAqBhB,GAC1DhD,EAAmBiD,GAAgBgB,UAAUC,UAAUC,UAAUlB,GAEjE5F,GAAqBvc,EAAAA,EAAAA,cACtByV,IACOiE,GACA4J,EAAAA,EAAAA,KAA4Bt2B,EAAOwB,IAAKinB,EAAejnB,KAAKyH,MAAK,IAAc,IAAb,OAAC1C,GAAY,EAC5D,YAAXA,GACA4nB,EAASW,EAAAA,GAAAA,OAAAA,QAAAA,qBAA4CrG,OAI7D0F,EACIW,EAAAA,GAAAA,iBAAAA,QAAAA,qBAAsD,CAClDnwB,UAAWqB,EAAOwB,IAClBJ,MAAOqnB,OAKvB,CAACiE,EAAY1sB,EAAOwB,IAAK2sB,IAGvBoI,E,+UAAmB,CAAH,CAClBC,yBAA0BzB,GACtBje,GAAW,CACX0B,WAAYyc,EACZ5c,YAAa6Z,EACb5Z,eAAgBiX,IAIxB,OACI,oCACI,kBAAC,IAAD,CAAqBkH,aAAa,EAAMpS,SAAUyQ,IAClD,kBAAC,GAAD,CACIrN,gBAAiBA,EACjBjZ,KAAM8lB,EACN/lB,QAASymB,EACT3E,4BAA6BA,EAC7BD,yBAA0BA,EAC1BtvB,cAAeA,EACf0X,WAAYyc,EACZ5c,YAAa6Z,EACb5Z,eAAgBiX,EAChBiC,SAAUA,EACVpE,kBAAmBA,IAEvB,yBAAKpwB,UAAWD,EAAO81B,UAClB10B,EACAspB,EAAgB7kB,MAAM,EAAGoxB,GAAUzwB,IAAI4vB,EAAYoD,IACnDrC,EAAoB,GACjB,yBAAKl3B,UAAWD,EAAOg2B,qBACnB,yBAAK/1B,UAAWD,EAAOi2B,WAAYnpB,QAAS,IAAMkrB,KAC9C,kBAAC,EAAAx2B,WAAD,CAAYvB,UAAWD,EAAOk2B,QAAU,IAAGiB,W,0DEvLhE,MAAMjM,EAAczR,EAAAA,EAAAA,MAAAA,WACdkgB,EAAelgB,EAAAA,EAAAA,MAAAA,YAEfqe,EAA0B,EAE1BvB,EAAqB,CAACmB,YAHP,EAGkCze,WAAYiS,EAAahS,YAAaygB,I,6ICL7F,MAAMp6B,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChC2f,UAAW,CACPhb,OAAQ,OACRqY,aAAa3K,EAAAA,EAAAA,IAAKrS,EAAMG,QAAQM,QAAQE,KAAM,MAElDN,MAAO,CACHC,YAAa,MACbqO,aAAc,MACd/P,SAAU,OACVF,WAAY,OACZwB,MAAOF,EAAMG,QAAQM,QAAQE,U,eCQ9B,MAAM82B,GAAkB5kB,E,SAAAA,GAAY6kB,EAAAA,MAErCC,EAAS,IAA8D,IAA7D,UAAC75B,EAAD,cAAY8D,EAAZ,YAA2Bg2B,EAAc,GAAzC,WAA6CC,GAAgB,EACzE,MAAMh6B,EAAST,IAEf,IAAKy6B,EACD,OAAO,KAGX,MAAMxrB,EAAeurB,EAAYv0B,OAC3Bu0B,EAAYvzB,KAAI,CAACnC,EAAOkB,IACtB,yBAAKqB,IAAKrB,IACL00B,EAAAA,EAAAA,KAAmBl2B,IAChBQ,EAAAA,EAAAA,KAASF,EAAM7B,OAEf,kBAAC03B,EAAA,EAAD,CACI71B,OAAO81B,EAAAA,EAAAA,KAAkB91B,GACzB+1B,oBAAoBC,EAAAA,EAAAA,KAA0Bt2B,GAC9Cu2B,MAAM,OAKpB,KAEN,OACI,kBAACV,EAAD,CACIprB,aAAcA,EACd+rB,iBAAiB,MACjB/3B,MAAQ,KAAIw3B,IACZv4B,QAAQ,WACRJ,QAAS,CACLE,KAAMd,GAAAA,CAAWT,EAAO8hB,UAAW7hB,GACnCuC,MAAOxC,EAAOwC,UAM9Bs3B,EAAOpR,UAAY,CACfzoB,UAAW0oB,IAAAA,OACXqR,WAAYrR,IAAAA,OACZ5kB,cAAey2B,EAAAA,IACfT,YAAapR,IAAAA,QACTA,IAAAA,UAAoB,CAAC8R,EAAAA,IAA0BC,EAAAA,IAA0BC,EAAAA,QAIjF,W,2HCtDA,MAQaC,EAAwB,CACjC72B,EACAM,EACAw2B,EACAz3B,KAEA,MAAM03B,EAdsB,EAAC/2B,EAA8B82B,KAC3D,MAAME,EAAoBF,EAAmB32B,MAAMwtB,GACxCA,EAAUjtB,MAAQV,EAAcU,MAG3C,OAAOs2B,GAAqBva,MAAMwa,QAAQD,EAAkB35B,UAAY25B,EAAkB35B,SAAW,IASxE65B,CAAwBl3B,EAAe82B,GACpE,IAAIK,GAAmBn3B,MAAAA,OAAA,EAAAA,EAAeyqB,cAAczqB,MAAAA,OAA7B,EAA6BA,EAAeo3B,sBAAuB,GAK1F,OAJIL,EAAqBt1B,SACrB01B,EAAmBA,EAAiBhoB,QAAQob,GAAawM,EAAqBl1B,SAAS0oB,EAAS7pB,QAG7Fy2B,EAAiBxM,QAAO,CAAC0M,EAAK1J,KACjC,MAAM/C,EAAS0M,EAAch3B,EAAMqtB,EAAU9E,MAA2BxpB,EAAUy3B,GAQlF,OAPIlM,GAAUA,EAAOnpB,SACbgb,MAAMwa,QAAQrM,EAAO,IACrByM,EAAIt1B,KAAK,CAAC,CAAC4rB,EAAUjtB,KAAMkqB,EAAO,KAElCyM,EAAIt1B,KAAK,CAAC,CAAC4rB,EAAUjtB,KAAMkqB,KAG5ByM,IACR,KAYDC,EAAgB,CAAC1M,EAA0BvrB,EAAoBy3B,KACjE,GAAKlM,GAA4B,IAAlBA,EAAOnpB,OAEtB,OAAOmpB,EAAOD,QAAO,CAAC0M,EAAKE,KACvB,GAAI,SAAUA,GAAkBA,EAAex3B,KAAM,CACjD,MAAMO,EAAQ,eAAgBi3B,EAAiBA,EAAeC,WAAaD,EAAej3B,MACpFN,GAAgBC,EAAAA,EAAAA,KAAuBZ,EAAUk4B,EAAex3B,MAClEO,GAA0B,iBAAVA,IAAsBm3B,EAAAA,EAAAA,KAAKF,GAC3CF,EAAIt1B,KAAK21B,EAA8Bp3B,EAAON,IACvCM,GAA0B,iBAAVA,IAAuBmc,MAAMwa,QAAQ32B,IAC5D+2B,EAAIt1B,KAAK80B,EAAsB72B,EAAeM,EAAOw2B,EAAoBz3B,IAGjF,OAAOg4B,IACR,KAGMK,EAAgC,CAACp3B,EAAuBN,KACjE,OAAQA,MAAAA,OAAR,EAAQA,EAAeD,MACnB,KAAK43B,EAAAA,IAAAA,UACD,OAAO,IAAIC,KAAKt3B,GAAiBu3B,UACrC,KAAKF,EAAAA,IAAAA,eACD,OAAKG,MAAM1O,OAAO9oB,IAGP,IAAIs3B,KAAKt3B,GAAiBu3B,UAF1B,IAAID,KAAKxO,OAAO9oB,IAAQu3B,UAKvC,QACI,OAAOv3B,I,gNCnFnB,MAcA,EAdkEtE,GAE1D,2BAAK8G,MAAO,GAAIC,OAAQ,GAAIkJ,QAAQ,aAAgBjQ,GAChD,0BACImQ,EAAE,8FACFJ,KAAK,UACLgJ,OAAO,OACPC,YAAa,EACbhJ,SAAS,a,oECRlB,MAAMxQ,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChC2f,UAAW,CACPpiB,gBAAiB,QACjBmH,MAAO,QACP8N,SAAU,QACV7L,SAAU,SAEdiE,OAAQ,CACJxE,QAAS,OACTzB,OAAQ,OACRkC,WAAY,SACZmH,eAAgB,gBAChB1N,YAAa,QAEjB3B,MAAO,CACHuB,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B7B,SAAU,OACV+T,cAAe,SACfjU,WAAY,QAEhBi7B,gBAAiB,CACbz5B,MAAO,mBACPtB,SAAU,OACV0B,YAAa,OACb0hB,cAAe,OACftjB,WAAY,QAEhB0B,QAAS,CACLuE,OAAQ,OACRD,MAAO,MACPnH,gBAAiB,oBAErBq8B,YAAa,CACT15B,MAAOF,EAAMG,QAAQK,KAAKoE,UAC1BhG,SAAU,OACV+T,cAAe,SACfjU,WAAY,OACZgG,MAAO,SAEXoG,KAAM,CACF2c,aAAc,6BACdhpB,QAAS,cAEbo7B,OAAQ,CACJzzB,QAAS,OACTS,WAAY,SACZlC,OAAQ,OACRrE,YAAa,OACbJ,MAAOF,EAAMG,QAAQM,QAAQE,KAC7B/B,SAAU,OACV+T,cAAe,IACfjU,WAAY,QAEhBo7B,YAAa,CACTn1B,OAAQ,OACRD,MAAO,QAEXq1B,gBAAiB,CACb3zB,QAAS,OACT0b,cAAe,MACfjb,WAAY,UAEhBmzB,YAAa,CACT95B,MAAOF,EAAMG,QAAQM,QAAQE,KAC7B/B,SAAU,OACV+T,cAAe,IACfjU,WAAY,OACZkC,eAAgB,OAChBN,YAAa,OAEjBrC,KAAM,CACFoY,OAAQ,mBAEZxS,QAAS,CACL3D,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BsN,OAAQ,WAEZgsB,aAAc,CACVhsB,OAAQ,eAIHisB,GAA2B78B,EAAAA,EAAAA,GAAW,CAC/C6V,QAAS,CACL3V,gBAAiB,QACjB+H,UAAW,8FACX7G,QAAS,EACT2G,aAAc,MACduB,SAAU,QAEd2W,MAAO,CACH,YAAa,CACT/f,gBAAiB,Y,wHCzE7B,MAYa48B,EAAyB,IAA+D,IAA9D,MAACj4B,EAAD,cAAQN,EAAR,OAAuBw4B,EAAS,GAAhC,cAAoCC,GAA0B,EACjG,MAAOC,EAAUC,IAAenyB,EAAAA,EAAAA,UAAmB,KAC5CoyB,EAAOC,IAAYryB,EAAAA,EAAAA,UAAS,GAC7BtH,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,YAA6B,GAClDyH,GAAcC,EAAAA,EAAAA,KACd7K,EAAST,IAETs9B,GACF35B,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,gCAAgD,GAC1D25B,EAAaP,EAAOO,YAAc75B,EAAOa,KAEzCi5B,EAAyBJ,EAvBG,GAyBlCxxB,EAAAA,EAAAA,YAAU,KACN,MAAM6xB,GAAUC,EAAAA,EAAAA,KAAoC,CAAC54B,MAAAA,EAAON,cAAAA,EAAe+4B,WAAAA,IACrEI,E,8UAAU,CAAH,CACT5T,IA5B0B,GA6BvBuT,GAEPjyB,EAAYuyB,QAAQC,IAAI,EAACC,EAAAA,EAAAA,KAAoBL,EAASE,IAAUI,EAAAA,EAAAA,KAAUN,EAASE,MAC9EhxB,MAAMqxB,IACH,MAAOd,GAAU,MAACE,IAAUY,EAC5Bb,EAAYlc,MAAMwa,QAAQyB,GAAYA,EAAW,IACjDG,EAASD,MAEZxwB,OAAM,KACHuwB,EAAY,IACZE,EAAS,QAElB,IAEH,MAAMY,EAAqB9qB,QAAQ6pB,EAAO/5B,OAC1C,OACI,yBAAKvC,UAAWD,EAAO8hB,WACnB,yBAAK7hB,UAAWD,EAAO+M,QACnB,yBAAK9M,UAAWD,EAAOc,OAAQoB,IAAAA,KAAU,mBACzC,yBAAKjC,UAAWD,EAAOuC,UACvB,yBAAKtC,UAAWD,EAAO+7B,aAClB75B,IAAAA,OAAYy6B,EAAO,OAAS,KAAiB,IAAVA,EAAcz6B,IAAAA,KAAU,QAAUA,IAAAA,KAAU,YAGvFs7B,GAAsB,yBAAKv9B,UAAWD,EAAO87B,iBAAkBS,EAAO/5B,OACvE,yBAAKvC,UAAWD,EAAOiN,MAClBwvB,EAASj2B,KAAKi3B,GACX,yBAAK72B,IAAK62B,EAAch5B,IAAKxE,UAAWD,EAAOk8B,iBAC3C,kBAACwB,EAAA,EAAD,CAAcz6B,OAAQw6B,EAAe3mB,gBAAiB9W,EAAOi8B,cAC7D,kBAAC73B,EAAA,EAAD,CAAenE,UAAWD,EAAOm8B,YAAa93B,OAAOC,EAAAA,EAAAA,KAAoBm5B,KACpEl5B,EAAAA,EAAAA,KAASk5B,EAAcj7B,YAKvCu6B,GACG,yBAAK98B,UAAWD,EAAOg8B,QACnB,uBAAG/7B,UAAWD,EAAOo8B,aAActvB,QAAS0vB,GACvCt6B,IAAAA,KAAU,eCzDtBy7B,EAAkB,IAAwD,IAAvD,MAACt5B,EAAD,cAAQN,EAAR,SAAuB3C,EAAvB,UAAiCnB,GAAsB,EACnF,MAAMD,EAASq8B,IACTuB,EAAgBr+B,IAChB6xB,GAAWC,EAAAA,EAAAA,eACXwM,GAAyBv6B,EAAAA,EAAAA,YAAWw6B,EAAAA,IAA6B,GACjEC,GAAoBC,EAAAA,EAAAA,KAASj6B,GAC7BX,GAAWF,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cAA8B,GAErD86B,EAAgBF,EAChBnD,EAAsB72B,EAAeM,EAAMA,MAA+Bw5B,EAAwBz6B,GAClGq4B,EACGp3B,EAA+Bk3B,YAAel3B,EAAMA,MACrDN,GAGFm6B,EACFL,EAAuBjd,MAAK,QAAC,IAACnc,GAAF,SAAWA,IAAQV,EAAcU,SAC3D+b,MAAMwa,QAAQiD,IAAkBA,EAAcz4B,SAC1Cgb,MAAMwa,QAAQiD,MAAmB1c,EAAAA,EAAAA,OAAM0c,IAE3ClD,EAAoB8C,EAAuB35B,MAAK,QAAC,IAACO,GAAF,SAAWA,IAAQV,EAAcU,OAEjF05B,EAAoB,KACtB,MAAMC,EAAiB5d,MAAMwa,QAAQiD,GACKA,EJJhCz3B,KAAKnC,GACRoqB,OAAO4P,YAAY5P,OAAO6P,QAAQj6B,GAAOmC,KAAI,QAAEI,EAAKvC,GAAP,QAAkB,EAACk6B,EAAAA,EAAAA,KAAe33B,GAAMvC,SALjD,EAACiqB,EAAyBjqB,IAA0B,CACnG,CAAC,CAACiqB,EAAS1B,MAAOvoB,IIQRm6B,CAAoCz6B,EAAek6B,GAEzD7M,EAASqN,EAAAA,GAAAA,QAAAA,wBAA4C,CAACp6B,MAAO+5B,EAAgBr6B,cAAAA,MAGjF,OAAOm6B,EACH,kBAAC,EAAAttB,QAAD,CACI8tB,aAAW,EACXjf,OAAK,EACL3N,UAAU,cACVzQ,QAASrB,EACTc,MACI,kBAACw7B,EAAD,CACIj4B,MAAO45B,EACPl6B,cAAeA,EACfw4B,OAAQxB,EAAkB4D,MAC1BnC,cAAe2B,KAIvB,0BAAMl+B,UAAWA,GACb,kBAAC2+B,EAAD,CAAc3+B,UAAW29B,EAAcx9B,OACvC,0BAAMH,UAAW29B,EAAc53B,QAAS8G,QAASqxB,GAC5C/8B,KAKb,oCAAGA,K,oTClFX,MAKA,EALmBrB,IACf,MAAM,cAACgE,GAAiBhE,EACxB,OCEW,MACC,aAACgE,GAA2B,IAAZhE,EAAY,uDAAJ,GAEhC,MAAM,iBACFywB,EADE,gBAEFzB,EAFE,KAGF8P,EAHE,OAIFC,EAJE,WAKFC,EALE,UAMFtI,EANE,SAOF52B,GAEAE,EADGi/B,E,kXARP,CASIj/B,EATJ,4FAWA,OAAQgE,EAAcD,MAClB,KAAK43B,EAAAA,IAAAA,YACD,OAAO,kBAACuD,EAAA,EAAoBl/B,GAChC,KAAK27B,EAAAA,IAAAA,eACD,OAAO,kBAACwD,EAAA,EAAuBn/B,GACnC,QACI,OACI,kBAACo/B,EAAA,EAAD,GACIC,mBAAmBA,EAAAA,EAAAA,KAAkBL,EAAYh/B,EAAM2rB,iBACnDsT,ODzBSK,MAAMt7B,EAAehE,K,+gBEiB1D,MAAMu/B,EAAiB,IAiBjB,IAjBkB,oBACpBC,EADoB,UAEpBjS,EAFoB,OAGpBrqB,EAHoB,UAIpBmsB,EAJoB,iBAKpBoB,EALoB,KAMpBnT,EANoB,WAOpB0hB,EAPoB,UAQpBhP,EARoB,SASpB3uB,EAToB,UAUpBnB,EAVoB,sBAWpBu/B,EAAwBC,EAAAA,EAXJ,gBAYpB1Q,EAZoB,kBAapBuB,EAboB,kBAcpBD,EAdoB,2BAepBqP,EAfoB,UAgBpBjJ,GACE,EACF,MAAM,WAACjI,EAAa,IAAMvrB,GACnB08B,EAAiBC,IAAsBr1B,EAAAA,EAAAA,UAAS,IACjDs1B,GAAkB5pB,EAAAA,EAAAA,cAAY,CAAC6pB,EAAaz7B,KAC9Cu7B,GAAoBG,G,8UAAD,IACZA,EADY,CAEf,CAACD,GAAcz7B,QAEpB,KACH8G,EAAAA,EAAAA,YAAU,KACNy0B,EAAmB,MACpB,CAACxQ,IACJ,MAAM4Q,GAA0B/xB,EAAAA,EAAAA,UAC5B,IAAMsxB,IAAuBU,EAAAA,EAAAA,KAAwB,CAACl8B,cAAew7B,EAAqBliB,KAAAA,KAC1F,CAACkiB,EAAqBliB,IAGpB2R,EC7BsB,EAC5B1B,EACArqB,EACAutB,EACAmP,IAEOrS,EAAUpa,QAAQob,IACrB,MAAM4R,EAvBI,EACd5R,EACArrB,KAEA,MAAM,WAACurB,EAAa,GAAd,oBAAkB2M,EAAsB,IAAMl4B,EACpD,OAAO0I,EAAAA,EAAAA,MAAK,CACR,CAACw0B,EAAAA,KAAoBv0B,EAAAA,EAAAA,QAAO3I,IAC5B,EAACm9B,EAAAA,EAAAA,MAAKC,EAAAA,KAAqBz0B,EAAAA,EAAAA,QAAOuvB,KAAuBvvB,EAAAA,EAAAA,QAAOuvB,IAChE,CAACnvB,EAAAA,GAAGJ,EAAAA,EAAAA,QAAO4iB,KAHR7iB,CAIJ2iB,IAcgBgS,CAAUhS,EAAUrrB,GAC7Bs9B,EAZOjS,CAAAA,IACV6R,EAAAA,EAAAA,KAAmB7R,GAAY,MAAQ,OAWzBkS,CAAYlS,GAC7B,SACKA,EAASmS,cAAeC,EAAAA,EAAAA,KAAepS,KAAaqS,EAAAA,EAAAA,KAAcrS,OAClEsS,EAAAA,EAAAA,KAAItS,EAASiS,GAAbK,CAAwBV,IAAY1P,IAAqBmP,MAAAA,IAAAA,EAAkBrR,EAAS7pB,WDkBvEo8B,EADK5yB,EAAAA,EAAAA,UAAQ,KAAM6yB,EAAAA,EAAAA,KAA2BzjB,EAAMiQ,IAAY,CAACA,EAAWjQ,IACvCpa,EAAQutB,EAAkBmP,GAE/EoB,GAAmBz9B,EAAAA,EAAAA,YAAW09B,EAAAA,GAC9BC,GAAahzB,EAAAA,EAAAA,UACf,KAAMizB,EAAAA,EAAAA,KAA6B5T,EAAWjQ,EAAMpa,EAAQutB,EAAkBiG,EAAWsK,IACzF,CAACzT,EAAWjQ,EAAMpa,EAAQutB,EAAkBiG,EAAWsK,KAGpDI,EAAyBC,IAAqBnzB,EAAAA,EAAAA,UACjD,KAAMozB,EAAAA,EAAAA,GAAgB7B,EAAuByB,IAC7C,CAACA,EAAYzB,IAGX8B,GAAsBrrB,EAAAA,EAAAA,cACvBsrB,IACGxS,EACIwS,EAAe/6B,KAAKzC,IAAD,CACfA,cAAAA,EACAqrB,UAAWrrB,IAAkBw7B,GAAsBiC,EAAAA,EAAAA,KAAapS,GAAaA,SAIzF,CAACL,EAAiBK,EAAWmQ,IAG3BkC,EAAiB,CACnBxhB,QAAS8P,GAEP2R,GAA2BzzB,EAAAA,EAAAA,UAC7B,KAAM,CACF0xB,gBAAAA,EACAE,gBAAAA,KAEJ,CAACF,EAAiBE,IAGtB,OACI,yBAAK5/B,UAAWA,GACXmB,GAAY,kBAACugC,EAAA,EAAoBF,EAAiBrgC,GACnD,kBAACugC,EAAA,EAAD,KAAqBF,EAArB,CAAqC5X,OAAO,IACvCmF,EAAcxpB,OAAS,GACpB,kBAACypB,EAAA,EAAD,CACIzsB,MAAON,IAAAA,KAAU,mBACjBitB,QAASmS,EACTpS,MAAOa,EACPvnB,KAAMwmB,EACN4S,OAAQ5B,GAA2BT,KAI/C,kBAACsC,EAAA,WAAD,CAA8Bx9B,MAAOq9B,GAChCN,EAAkBpY,OAAOmY,GAAyB36B,KAAI,QAAC,SAAC8nB,EAAD,OAAWK,GAAZ,SACnD,kBAACmB,EAAA,GAAD,CACIlpB,IAAK0nB,EAAS7pB,IACdV,cAAeuqB,EACfyB,UAAWA,EACXpB,OAAQA,EACR6H,QAAQ3J,EAAAA,EAAAA,MAAK,CAAC,SAAUyB,EAAS7pB,KAAM+pB,GACvCY,UAAWA,EACXoB,iBAAkBA,EAClBnT,KAAMA,EACN0hB,WAAYA,EACZhQ,gBAAiBA,EACjBuB,kBAAmBA,EACnBD,kBAAmBA,EACnBqP,2BAA4BA,EAC5BjJ,UAAWA,UAQnC6I,EAAe5W,UAAY,CACvB6W,oBAAqB5W,IAAAA,OACrB2E,UAAW3E,IAAAA,MACX1lB,OAAQ0lB,IAAAA,OACRyG,UAAWzG,IAAAA,OACXvnB,SAAUunB,IAAAA,KACV6H,iBAAkB7H,IAAAA,KAClBtL,KAAMykB,EAAAA,IACN/C,WAAYpW,IAAAA,MACZoH,UAAWpH,IAAAA,KACX8N,UAAW9N,IAAAA,KACX1oB,UAAW0oB,IAAAA,OACX6W,sBAAuB7W,IAAAA,MACvBoG,gBAAiBpG,IAAAA,KACjB2H,kBAAmB3H,IAAAA,KACnB0H,kBAAmB1H,IAAAA,KACnB+W,2BAA4B/W,IAAAA,MAGhC,SAAepZ,EAAAA,EAAAA,MAAK+vB,I,yHE7IpB,MAAMyC,EAAgB19B,GAClBnC,IAAAA,KAAU,WAAY,CAClBmC,MAAiB,IAAVA,EAAcnC,IAAAA,KAAU,SAAWA,IAAAA,KAAU,YAGtD8/B,GAAcpB,EAAAA,EAAAA,KAAI,YAClBqB,GAAcrB,EAAAA,EAAAA,KAAI,YAClBsB,GAAa9gB,EAAAA,EAAAA,MAAK6gB,EAAaE,EAAAA,KAC/BC,GAAgBC,EAAAA,EAAAA,gBAAeC,GAA0B,IAAbA,GAAgB,YAG5DC,EAAyB,QAAC,SAACD,GAAF,SAC3BpgC,IAAAA,KAAU,iEAAkE,CACxEogC,SAAUpgC,IAAAA,OAAYogC,EAAU,KAChCE,gBAAiBT,EAAaO,MAGhCG,EAAyB,QAAC,SAACC,GAAF,SAC3BxgC,IAAAA,KAAU,iEAAkE,CACxEwgC,SAAUxgC,IAAAA,OAAYwgC,EAAU,KAChCC,gBAAiBZ,EAAaW,MAgBhCE,GAAwBj3B,EAAAA,EAAAA,MAAK,CAC/B,CAAC4V,EAAAA,OAAO3V,EAAAA,EAAAA,QAAO,KACf,CA7BqB,QAAC,SAAC02B,EAAD,SAAWI,GAAZ,SAA0BJ,GAAYA,IAAaI,GAc3C,QAAC,SAACJ,GAAF,SAC7BpgC,IAAAA,KAAU,4DAA6D,CACnEogC,SAAUpgC,IAAAA,OAAYogC,EAAU,KAChCE,gBAAiBT,EAAaO,OAalC,EAACO,EAAAA,EAAAA,SAAQ,CAACT,EAAeH,IAAeQ,GACxC,EAACI,EAAAA,EAAAA,SAAQ,CAACT,EAAeF,KAAct2B,EAAAA,EAAAA,QAAO,KAC9C,EAACi3B,EAAAA,EAAAA,SAAQ,CAACb,EAAaC,IAZO,QAAC,SAACK,EAAD,SAAWI,GAAZ,SAC9BxgC,IAAAA,KAAU,+DAAgE,CACtE4gC,eAAgBP,EAAuB,CAACD,SAAAA,IACxCI,SAAUxgC,IAAAA,OAAYwgC,EAAU,KAChCC,gBAAiBZ,EAAaW,OASlC,CAACT,EAAaQ,GACd,CAACT,EAAaO,GACd,CAACv2B,EAAAA,GAAGJ,EAAAA,EAAAA,QAAO,OAGTm3B,EAAqB,IAAmB,IAAlB,YAACC,GAAiB,EAC1C,MAAMhjC,GAAST,EAAAA,EAAAA,KAEf,OACI,kBAAC,EAAAiC,WAAD,CAAYC,QAAQ,UAAUxB,UAAWD,EAAOiY,SAC3C2qB,EAAsBI,KAKnCD,EAAmBra,UAAY,CAC3Bsa,YAAaC,EAAAA,KAGjB,W,yMCjEA,MAAMC,GAAkBhwB,EAAAA,EAAAA,SAAOmvB,EAAAA,EAAAA,eAAc5R,EAAAA,IAAW,Q,0BC6BxD,MA8JA,EA9J0B,IAoBb,IApBc,IACvBnH,EADuB,OAEvBqF,EAFuB,cAGvB5qB,EAHuB,UAIvBqrB,EAJuB,KAKvB/R,EALuB,UAMvB0S,EANuB,iBAOvBS,EAPuB,aAQvBtY,EARuB,OASvB4mB,EATuB,OAUvBtI,EAVuB,WAWvBuI,EAXuB,UAYvBtI,EAZuB,iBAavB0M,EAbuB,gBAcvBpU,EAduB,kBAevBsB,EAfuB,kBAgBvBC,EAhBuB,kBAiBvB8S,EAjBuB,2BAkBvB1D,EAlBuB,iCAmBvBhJ,GACS,EACT,MAAM12B,GAAST,EAAAA,EAAAA,MACR8jC,EAAoBC,IAAyB/4B,EAAAA,EAAAA,UAAS+e,IACtDia,EAAcC,IAAmBj5B,EAAAA,EAAAA,WAAS,IAC3C,MAAC/H,EAAOihC,SAAUpf,EAAlB,YAA8B2e,EAA9B,KAA2CpW,EAAMnoB,IAAKd,GAAoBI,EAC1EkuB,GAAiByR,EAAAA,EAAAA,KAAoBrmB,GAErC0jB,GAAmBz9B,EAAAA,EAAAA,YAAW09B,EAAAA,GAC9B2C,GAAW11B,EAAAA,EAAAA,UAAQ,IAAM8yB,MAAAA,OAAN,EAAMA,EAAkBn7B,SAASjC,IAAmB,CAACA,EAAkBo9B,IAC1F6C,GAAgBvpB,EAAAA,EAAAA,KAAasU,GAC7BkV,IAAeN,GAAgB/S,GAAqBnM,GAAcsf,IAAaC,EAE/EE,GAAmBv2B,EAAAA,EAAAA,SACrBw2B,EAAAA,EAAAA,KAAmB,CACf3U,UAAAA,EACArrB,cAAAA,KAIFigC,GAAe/tB,EAAAA,EAAAA,cAAY,KAC7BqtB,EAAsBD,EAAqB,GAE3C,MAAM3R,EAAY,CACdtC,UAAAA,EACAvtB,MAAOwhC,EACPt/B,cAAAA,GAGJ,OAAOgrB,EACH8U,KAAc5J,EAAAA,EAAAA,KAAmBl2B,EAAcD,MAAQ,CAAC4tB,EAAWA,GAAa,CAACA,MAEtF,CAAC2R,EAAoBtU,EAAiBK,EAAWrrB,EAAe8/B,IAE7DroB,GAAWvF,EAAAA,EAAAA,cAAYmL,EAAAA,EAAAA,MAAKiP,EAAmBrkB,EAAAA,EAAGw3B,GAAkB,CAACnT,EAAmBmT,IAE9F,GAAII,IAAkBC,EAClB,OAAO,KAOX,GAJIA,GAAaD,IACbjV,EAAS,CAACmV,EAAiB14B,WAG3BiP,EAAAA,EAAAA,KAAasU,GACb,OAAO,KAGX,MAAMsV,GAAkBf,EAAgBvU,IAAW,IAAInpB,OACjD0+B,GAAYzN,EAAY,cAAgB,gBACxCE,IAAqB7a,EAAAA,EAAAA,SACvB8kB,EAAAA,EAAAA,KAAIsD,KACJ9iB,EAAAA,EAAAA,OAAKxF,EAAAA,EAAAA,MAAKsoB,KAAYC,EAAAA,EAAAA,KAAIF,KAC1Br4B,EAAAA,EAAAA,QAAO+iB,EAAOnpB,QAHSsW,CAIzB0a,GAEI4N,GAAwB5N,MAAAA,GAAAA,EAAQK,YAChCL,EAAOK,YAAcF,GACrBwM,MAAAA,OAFwB,EAExBA,EAAkB39B,OAElB6+B,GAAY/a,EAAMqN,GAClB2N,GAAWD,IAAahB,EAAqB1M,GAC7C4N,GAAWF,IAAahB,GAAsB1M,GAoB9C6N,GAAc7V,EAAO9oB,MAAM,EAAGw9B,GAC9BoB,GAAYD,GAAcA,GAAYh/B,OAAS,EAAI,EACnDk/B,GAAoB/N,GAAqB0M,EAE/C,OACI,kBAAC1B,EAAA,EAAD,CAAiB1hB,QAAS8P,GACtB,yBAAK9vB,UAAWD,EAAOoY,SACnB,yBAAKnY,UAAWD,EAAO2kC,cACnB,kBAACC,EAAA,EAAD,CACIpiC,MAAOA,EACP6hB,WAAYA,EACZpkB,UAAWD,EAAOc,MAClB,iBAAe,2BAEnB,kBAACg5B,EAAA,EAAD,CACIC,YAAaoJ,EACbp/B,cAAeA,EACf9D,UAAWD,EAAO6kC,OAClB7K,WAAYoK,MAGnBnS,GAAkB,kBAAC,IAAD,CAAa+Q,YAAaA,IAC5C/Q,GAAkB,kBAAC6S,EAAA,EAAD,CAAc33B,QAAS+K,EAAcjY,UAAWD,EAAO+kC,YAC1E,yBAAK9kC,UAAWD,EAAOglC,mBAClBR,GAAYh+B,KAAI,CAACnC,EAAOqC,IACrB,kBAACu+B,EAAA,EAAD,CACIr+B,IAAKvC,EAAMI,IACXinB,eAAgBrnB,EAChBN,cAAeA,EACf86B,KAAMgF,IAAcxf,EACpBmM,iBAAkBA,EAClBsO,OAAQA,EACRoG,UAAUC,EAAAA,EAAAA,KAAqB9gC,EAAOqC,EAAK3C,EAAcU,IAAKq6B,GAC9DzhB,KAAMA,EACN0hB,WAAYA,EACZiF,aAAcS,KAAc/9B,EAAMs9B,EAAe,KACjDjV,gBAAiBA,EACjBsB,kBAAmB7U,EACnB8U,kBAAmBA,EACnB8S,kBAAmBA,EACnB1D,2BAA4BA,MAGnC4E,IACG,kBAACc,EAAA,EAAD,CACIC,YAAY7b,EAAAA,EAAAA,KAAIF,EAAKob,IACrBY,YAAaZ,GACb53B,QAjEL,KACX6hB,EAAOnpB,OAASmxB,IAChBD,EAAiC,CAC7BtH,UAAAA,EACAzrB,iBAAAA,EACAmzB,kBAAmBlK,EACnB+B,OAAAA,EACAoI,iBAAkBzN,IAI1Bga,EAAsBD,EAAqB/Z,MAyD9Bib,IAAY,kBAACgB,EAAA,EAAD,CAAUz4B,QAtDpB,KACfw2B,EAAsBha,U,gDChIvB,MAAM/pB,GAAYC,EAAAA,EAAAA,GAAW,CAChCsiB,UAAW,CACPvZ,QAAS,OACTwU,KAAM,EACN/T,WAAY,aACZ5G,aAAc,QAGlBojC,cAAe,CACX3+B,MAAO,QAGXy0B,eAAgB,CACZlyB,WAAY,MACZvC,MAAO,GAGXytB,aAAc,CACVlrB,WAAY,S,0BCHpB,MAAMq8B,EAAa,CAACC,WAAYC,EAAAA,GAEnBC,EAAQ,IAAyC,IAAxC,OAACjX,EAAD,SAASxmB,EAAT,SAAmBqT,GAAqB,EAC1D,MAAMxb,EAAST,IAET6D,GAAqBF,EAAAA,EAAAA,aAAY8T,EAAAA,GAAAA,UAAAA,aACjC/T,GAAiBC,EAAAA,EAAAA,aAAY8T,EAAAA,GAAAA,UAAAA,WAC7BpV,EAAYqB,EAAOwB,IAEnBy4B,GAAU2I,EAAAA,EAAAA,KAAsBziC,EAAUH,EAAOa,MAAM0C,KAAKs/B,IAAD,CAC7DzhC,MAAOyhC,EAAKrhC,IACZjC,MAAOsjC,EAAKtjC,UAGVujC,GAAmBpX,GAAU,IAAInoB,KAAKnC,IAAU,MAGlD,MAAO,CACHA,MAAAA,EACA7B,OAJO,UAAG06B,EAAQh5B,MAAKkxB,EAAAA,EAAAA,QAAO,QAAS/wB,WAAhC,aAAG,EAAsC7B,SAIhC+7B,EAAAA,EAAAA,KAAel6B,OAIjC2uB,GAAe/c,EAAAA,EAAAA,cAChB0Y,IACG,MAAMqX,GAAQrX,MAAAA,OAAA,EAAAA,EAAQnoB,KAAIoV,EAAAA,EAAAA,MAAK,YAAa,GAC5CzT,EAAS,CACL9D,MAAO2hC,EACPjiC,cAAekiC,EAAAA,IAAAA,MACfxhC,IAAK7C,MAGb,CAACA,EAAWuG,IAGVktB,GAAepf,EAAAA,EAAAA,cAAY,KAC7BuF,EAAS,CAAC/W,IAAK7C,EAAWmC,cAAekiC,EAAAA,IAAAA,UAC1C,CAACrkC,EAAW4Z,IAEf,OACI,yBAAKvb,UAAWD,EAAO8hB,UAAW,iBAAe,0BAC7C,kBAACokB,EAAA,EAAD,CACI1jC,MAAO,GACPsE,OAAQ,GACRq/B,SAAS,EACTjJ,QAASA,EACT74B,MAAO0hC,EACP59B,SAAU6qB,EACVyS,WAAYA,EACZpkC,QAASrB,EACTC,UAAWD,EAAOwlC,kBAEnBhqB,GACC,kBAACrb,EAAA,EAAD,CAAiBF,UAAWD,EAAOs0B,aAAcl0B,KAAMy0B,EAAAA,EAAY/nB,QAASuoB,EAAc/0B,KAAK,Q,eCpExG,MAAMf,GAAYC,EAAAA,EAAAA,GAAW,CAChCsiB,UAAW,CACPvZ,QAAS,OACTwU,KAAM,EACN/T,WAAY,aACZ5G,aAAc,QAGlBkyB,aAAc,CACVlrB,WAAY,SCadg9B,EAAYC,GACdA,EAAe,YAAUC,EAAAA,EAAAA,MAAAA,CATFD,CAAAA,GAAgB,CACvC,CACInzB,OAAQ,2BACRqzB,UAAW,OACX5X,OAAQ,CAAC0X,KAKqCG,CAAkBH,MAAkB,GAEpFp5B,EAAO,CACT,CACIs5B,UAAW,OACXE,UAAW,kBAIbC,EAAkBL,IACpBM,EAAAA,EAAAA,KAAU,CAACC,MAAOR,EAASC,GAAcp5B,KAAAA,IAAOf,MAAM26B,GAAapY,OAAOhB,KAAKoZ,EAASC,QAsC5F,EApCa,IAAoD,IAAnD,UAAC7mC,EAAD,OAAY0uB,EAAZ,SAAoBxmB,EAApB,SAA8BqT,GAAqB,EAC7D,MAAMxb,EAAST,IACTqC,GAAYsB,EAAAA,EAAAA,aAAY8T,EAAAA,GAAAA,UAAAA,cACxBgc,GAAe/c,EAAAA,EAAAA,cAChB6wB,IACG3+B,EAAS,CACL9D,MAAOyiC,EACP/iC,cAAekiC,EAAAA,IAAAA,KACfxhC,IAAK7C,MAGb,CAACuG,EAAUvG,IAGTyzB,GAAepf,EAAAA,EAAAA,cAAY,KAC7BuF,EAAS,CAAC/W,IAAK7C,EAAWmC,cAAekiC,EAAAA,IAAAA,SAC1C,CAACrkC,EAAW4Z,IAEf,OACI,yBAAKvb,UAAWD,EAAO8hB,UAAW,iBAAe,0BAC7C,kBAACilB,EAAA,EAAD,CACIC,WAAS,EACTC,UAAQ,EACRxlC,QAAQ,SACRxB,UAAWA,EACXoE,MAAOsqB,GAAU,GACjBxmB,SAAU6qB,EACV0T,eAAgBA,MAEjBlrB,GACC,kBAACrb,EAAA,EAAD,CAAiBF,UAAWD,EAAOs0B,aAAcl0B,KAAMy0B,EAAAA,EAAY/nB,QAASuoB,EAAc/0B,KAAK,Q,uVC/BxG,MAqFP,GAAe4mC,E,SAAAA,GACXrF,EAAAA,GACA,CAACsF,EAAD,KAAmC,IAApB,cAACpjC,GAAmB,EAC/B,MAAM,gBAAC47B,EAAD,gBAAkBE,GAAmBsH,GAAgB,GAC3D,MAAO,CACHC,aAAczH,EAAkBjtB,QAAQitB,EAAgB57B,MAAAA,OAAD,EAACA,EAAeU,WAAQ0R,EAC/E0pB,gBAAAA,MA3FmB,IAYlB,IAZmB,OAC5BlR,EAD4B,cAE5B5qB,EAF4B,UAG5BqrB,EAH4B,KAI5B/R,EAJ4B,aAK5BnF,EAL4B,kBAM5BmY,EAN4B,kBAO5BC,EAP4B,iBAQ5BE,EACA4W,aAAcC,EATc,gBAU5BxH,GAES,EADN3/B,E,kXACM,6JACT,MAAMF,GAAST,EAAAA,EAAAA,MACT,MAACiD,EAAOihC,SAAUpf,EAAlB,YAA8B2e,GAAej/B,EAC7CkuB,GAAiByR,EAAAA,EAAAA,KAAoBrmB,IACpCiqB,EAAmBC,IAAwBh9B,EAAAA,EAAAA,WAAS,GACrDi9B,GAAqBvxB,EAAAA,EAAAA,cACtB5R,IACGkjC,EAAqBljC,GACrBw7B,MAAAA,GAAAA,EAAkB97B,EAAcU,IAAKJ,KAEzC,CAACN,EAAcU,IAAKo7B,IAElBuH,OAAoCjxB,IAArBkxB,EAAiCA,EAAmBC,EAEnE9rB,GAAWvF,EAAAA,EAAAA,cAAYmL,EAAAA,EAAAA,MAAKiP,EAAmBrkB,EAAAA,EAAGw7B,GAAqB,CACzEnX,EACAmX,IAEE5D,GAAgBvpB,EAAAA,EAAAA,KAAasU,GAC7BkV,GAAauD,GAAgB5W,GAAoBoT,EAEjDE,GAAmBv2B,EAAAA,EAAAA,SACrBw2B,EAAAA,EAAAA,KAAmB,CACf3U,UAAAA,EACArrB,cAAAA,KA8BR,OAAI0jC,EAAAA,EAAAA,KAAqB1jC,IAAkB6/B,IAAkBC,EAClD,KAIP,kBAAC,EAAArgC,IAAD,CAAKvD,UAAWD,EAAOoY,SACnB,kBAACwsB,EAAA,EAAD,CACIpiC,MAAOA,EACP6hB,WAAYA,EACZpkB,UAAWD,EAAOc,MAClB,iBAAe,2BAElBmxB,GAAkB,kBAAC,IAAD,CAAa+Q,YAAaA,IAC5C/Q,GAAkB,kBAAC6S,EAAA,EAAD,CAAc33B,QAAS+K,IAC1C,kBAAC,EAAA1U,IAAD,CAAKvD,UAAWD,EAAOglC,mBAxCX,MAChB,OAAQjhC,EAAcU,KAClB,KAAKwhC,EAAAA,IAAAA,KAAAA,IACD,OAAO,kBAAC,EAAD,CAAMtX,OAAQA,EAAoBnT,SAAUA,EAAUrT,SAAUmoB,IAC3E,KAAK2V,EAAAA,IAAAA,MAAAA,IACD,OAAO,kBAACL,EAAD,CAAOjX,OAAQA,EAAoBnT,SAAUA,EAAUrT,SAAUmoB,IAC5E,QAAS,CAEL,MAAMjsB,E,8UAAQ,CAAH,GACJy/B,EAAiB14B,QADb,CAEP/G,MAAOsqB,EAAO,IAAM,KAExB,OACI,kBAACsW,EAAA,EAAD,GACIvZ,eAAgBrnB,EAChBN,cAAeA,EACfsZ,KAAMA,EACNgT,kBAAmB7U,EACnB8U,kBAAmBA,GACfpwB,OAqB2BwnC,Q,oNChGlDC,G,SAAAA,GAAAA,EAAAA,UAAAA,YAAAA,EAAAA,QAAAA,UAAAA,EAAAA,QAAAA,U,CAAAA,IAAAA,EAAAA,KAML,MAoGA,GAAep4B,EAAAA,EAAAA,OApGS,IAmBG,IAnBF,OACrBof,EADqB,cAErB5qB,EAFqB,KAGrBsZ,EAAOF,EAAAA,IAAAA,QAHc,WAIrB4hB,EAJqB,UAKrBhP,EALqB,OAMrByG,EAAS,GANY,UAOrBpH,EAPqB,OAQrB0P,EARqB,aASrB5mB,EATqB,IAUrBoR,EAAMse,EAAAA,EAVe,iBAWrBpX,EAXqB,UAYrBiG,EAZqB,gBAarB1H,EAbqB,kBAcrBsB,EAdqB,kBAerBC,EAfqB,kBAgBrB8S,EAhBqB,2BAiBrB1D,EAjBqB,iCAkBrBhJ,GACuB,EACvB,MAAM12B,GAAST,EAAAA,EAAAA,KACTsoC,GAAgBC,EAAAA,EAAAA,WAAUtM,EAAAA,MACzBuM,EAAUhO,GAAe8N,EAAclZ,GAExCqZ,EAAgBvR,EAAY9H,EAASoZ,EACrC5E,EAAmB1M,EAAY,GAAKsD,EAEpCkO,EAAc,CAChB/vB,aAAAA,EACA4mB,OAAAA,EACAzhB,KAAAA,EACA+R,UAAAA,EACAL,gBAAAA,EACAsB,kBAAAA,EACAC,kBAAAA,EACA8S,kBAAAA,EACA1D,2BAAAA,EACAlP,iBAAAA,GA4DJ,MAzDwB,MAOpB,QAN6B7kB,EAAAA,EAAAA,MAAK,CAC9B,CAACw0B,EAAAA,KAAoBv0B,EAAAA,EAAAA,QAAO+7B,EAAeO,UAC3C,CAACC,EAAAA,KAASv8B,EAAAA,EAAAA,QAAO+7B,EAAeS,YAChC,CAACp8B,EAAAA,GAAGJ,EAAAA,EAAAA,QAAO+7B,EAAe/U,WAHDjnB,CAI1B5H,IAGC,KAAK4jC,EAAeO,QAChB,OACI,kBAACvG,EAAA,EAAD,CAAiB1hB,QAAS8P,GACtB,kBAAC,EAAD,GACIpB,OAAQqZ,EACRjkC,cAAeA,GACXkkC,KAKpB,KAAKN,EAAeS,UAChB,OACI,kBAACzG,EAAA,EAAD,CAAiB1hB,QAAS8P,GACtB,yBAAK9vB,UAAWD,EAAOoY,SACnB,kBAACwsB,EAAA,EAAD,CAAOpiC,MAAOuB,MAAAA,OAAF,EAAEA,EAAevB,MAAO,iBAAe,2BACnD,kBAAC6lC,EAAA,EAAD,CACI3d,gBAAiBsd,EACjBjkC,cAAeA,EACfyyB,OAAQA,EACRnG,kBAAmBA,EACnBjB,UAAWA,EACXkB,kBAAmBA,EACnBoG,iCAAkCA,EAClCD,UAAWA,MAK/B,QACI,OACI,kBAAC,EAAD,GACI9H,OACIqZ,EAEJjkC,cAAeA,EACfulB,IAAKA,EACLkN,OAAQA,EACRuI,WAAYA,EACZhP,UAAWA,EACX2G,iCAAkCA,EAClCD,UAAWA,EACX0M,iBAAkBA,GACd8E,MAMjBK,MC1DLC,EAAoC,CACtC7R,iCAAkC3E,EAAAA,GAAAA,QAAAA,iCAClCqR,kBAAmBrR,EAAAA,GAAAA,OAAAA,QAAAA,kBAKvB,GAAeyW,EAAAA,EAAAA,UAjBS,CAAC9hB,EAAD,SAAQ,UAAC0I,EAAD,cAAYrrB,EAAZ,IAA2BulB,GAAnC,QAAmE,CACvFwV,OAAQ9nB,EAAAA,GAAAA,UAAAA,kCAAsD0P,EAAO0I,EAAWrrB,GAChFmU,cAAcuwB,EAAAA,EAAAA,KACVrZ,EACArrB,EACAiT,EAAAA,GAAAA,UAAAA,iBAAqC0P,IAEzC4C,IAAKA,GAAOtS,EAAAA,GAAAA,UAAAA,oBAAwC0P,MAUhB6hB,EAAxC,CAA4DzY,I,iCCtErD,MAAMvwB,GAAYC,E,SAAAA,IAAY2C,IAAD,CAChC8V,QAAS,CACLlX,SAAU,SACV+d,QAAS,KAEb1G,QAAS,CACL7P,QAAS,OACT0b,cAAe,SACfjb,WAAY,cAEhBg8B,kBAAmB,CACfn+B,MAAO,OACPzE,aAAc,QAElBS,KAAM,CACF0F,QAAS,OACTc,UAAW,GAEf,iBAAkB,CACdtI,SAAU,QAEdD,MAAO,CACHC,SAAU,OACVF,WAAY,OACZ4B,YAAa,OACbJ,MAAOF,EAAMG,QAAQK,KAAKoE,WAE9Bg+B,UAAW,CACP37B,WAAY,QAEhBy7B,OAAQ,CACJz7B,WAAY,MACZC,UAAW,OACXq/B,WAAY,GAEhB/D,aAAc,CACV5nB,KAAM,EACNoH,cAAe,Y,iKCrChB,MAAM5kB,GAAYC,E,SAAAA,IAAY2C,IAAD,CAChCwmC,OAAQ,CACJpgC,QAAS,OACTwU,KAAM,EACNjW,OAAQ,OACRkC,WAAY,UAEhBxG,MAAO,CACHua,KAAM,EACN3T,WAAY,MACZC,UAAW,MACXtI,SAAU,OACVF,WAAY,QAEhBka,QAAS,CACLxS,QAAS,OACTS,WAAY,UAEhB4/B,eAAgB,CACZrgC,QAAS,OACTwU,KAAM,EACNpc,UAAW,QAEflB,aAAc,CACV4J,UAAW,OAEfw/B,QAAS,CACLxmC,MAAOF,EAAMG,QAAQK,KAAKoE,UAC1BhE,eAAgB,gBAEpB+lC,YAAa,CACTh6B,UAAW,SACXzM,MAAOF,EAAMG,QAAQK,KAAKoE,WAE9BgiC,uBAAwB,CACpB3/B,WAAY,O,6JCXpB,MAAM4/B,EAAmB,IAsBnB,IAtBoB,MACtBxmC,EADsB,mBAEtBymC,EAFsB,cAGtBllC,EAHsB,eAItB2nB,EAJsB,SAKtBtqB,EALsB,OAMtB09B,EANsB,SAOtBoG,EAPsB,KAQtB7nB,EARsB,SAStBja,EATsB,WAUtB27B,EAVsB,KAWtBF,EAXsB,iBAYtBrO,EAZsB,aAatBwT,EAbsB,gBActBjV,EAdsB,kBAetBsB,EAfsB,kBAgBtBC,EAhBsB,2BAiBtBoP,EAjBsB,iBAkBtBwJ,EAlBsB,MAmBtBxiB,EAnBsB,UAoBtB+P,EACA52B,SAAUspC,GAAe,GACvB,EACF,MAAMnpC,EAAST,IACTspC,EAAoB,YAAVniB,EACV0iB,EAAmB,WAAV1iB,EACTjiB,EAAMinB,EAAejnB,IACrB4kC,GAAQ5Y,EAAAA,EAAAA,KAAUhsB,GAClB6kC,EAAgBD,GAASF,GACxBtpC,EAAU0pC,IAAeh/B,EAAAA,EAAAA,UAAS++B,IACzCn+B,EAAAA,EAAAA,YAAU,KACNo+B,EAAYD,KACb,CAACA,IACJ,MAAME,GAAYv7B,EAAAA,EAAAA,UACd,KACIw7B,EAAAA,EAAAA,KAAwB,CACpB1lC,cAAAA,EACA2nB,eAAAA,EACArO,KAAAA,EACAja,SAAAA,EACAg8B,mBAAmBA,EAAAA,EAAAA,KAAkBL,EAAYrT,MAEzD,CAAC3nB,EAAe2nB,EAAgBrO,EAAMja,EAAU27B,IAE9C2K,GAAoBb,IAAYK,KAAsB7Y,GAAqBmZ,EAG3EG,GAA2B17B,EAAAA,EAAAA,UAAQ,KAAM27B,EAAAA,EAAAA,KAAkCle,EAAgBoT,IAAS,CACtGA,EACApT,KAEJvgB,EAAAA,EAAAA,YAAU,KACFw+B,GACAJ,GAAY,KAEjB,CAACzK,EAAQ6K,KACZx+B,EAAAA,EAAAA,YAAU,KACF09B,GACAU,GAAY,KAEjB,CAACV,IACJ,MAAMgB,GAAoBZ,GAAsB,IAAIroB,MAAM7c,IAAkBs8B,EAAAA,EAAAA,KAAoBt8B,KAC1F+lC,GAAsB77B,EAAAA,EAAAA,UACxB,KAAM,CACFugB,WAAYqb,EAAmB,KAAOne,EAAernB,MACrD82B,oBAAqB0O,EAAmBne,EAAernB,MAAQ,QAEnE,CAACqnB,EAAgBme,IAGf3xB,GACF6xB,EAAAA,EAAAA,KAAgB7E,IAAcyE,GAA4BznC,IAAAA,KAAU,2BAA8B,GAEtG,OAAO28B,EACH,kBAAC,EAAAjyB,OAAD,CAAQnL,QAAQ,OAAOY,MAAM,UAAUyK,QAASk3B,GAAhD,oBAIA,oCACI,yBAAK/jC,UAAWD,EAAO2oC,QACnB,yBAAK1oC,UAAWD,EAAO4oC,gBACnB,kBAACoB,EAAA,EAAD,CACIl9B,QAAS,IAAMy8B,GAAallC,IAAWA,IACvCxE,SAAUA,EACVI,UAAWD,EAAOP,aAClB6M,SAAUu8B,IAEd,kBAACoB,EAAA,EAAD,CAAc/xB,aAAcA,EAAc7W,QAAS,CAACkX,WAAYvY,EAAO+oC,yBACnE,yBACI9oC,UAAWQ,GAAAA,CAAWT,EAAOwC,MAAO,CAAC,CAACxC,EAAO6oC,SAAUA,IACvD,iBAAe,kCAEdrmC,KAIb,yBAAKvC,UAAWD,EAAO+a,SAClBquB,GACG,kBAAC,EAAA5nC,WAAD,CAAYC,QAAQ,UAAUxB,UAAWD,EAAO8oC,aAAhD,IACM5mC,IAAAA,KAAU,UADhB,KAIHw9B,GAA8BA,EAA2B,CAAC37B,cAAAA,EAAe2nB,eAAAA,IACzEge,GAAoB,kBAACvpC,EAAA,EAAD,CAAiBC,KAAMy0B,EAAAA,EAAY/nB,QA1DnD,IAAMujB,EAAkB,CAAC5rB,IAAAA,EAAKV,cAAAA,EAAe2nB,eAAAA,IA0D6BprB,KAAK,QAG3FT,GACG,kBAACy/B,EAAA,EAAD,CACIC,oBAAqBx7B,EACrBupB,UAAW2b,EACXhmC,OAAQ6mC,EACRtZ,iBAAkBA,GAAoB6Y,EACtCtZ,WAAW,EACXX,UAAW3qB,EACX4Y,KAAMA,EACN0hB,WAAYA,EACZhQ,gBAAiBA,EACjBuB,kBAAmBA,EACnBD,kBAAmBA,EACnBqP,2BAA4BA,EAC5BjJ,UAAWA,GAEVr1B,KAOrB4nC,EAAiBtgB,U,8UAAjB,EACIlmB,MAAOmmB,IAAAA,OACPvnB,SAAUunB,IAAAA,KACVsgB,mBAAoBtgB,IAAAA,QAAkB6R,EAAAA,KACtC9O,eAAgB/C,IAAAA,UAAoB,CAAC+R,EAAAA,IAA0BC,EAAAA,OAC5DuP,EAAAA,KAGP,W,yHC7JA,MAAMC,EAA0CrN,GAAeA,GAAcA,EAAWtO,WAElF4b,EAAgB,IAQhB,IARiB,OACnBnnC,EADmB,WAEnB65B,EAFmB,gCAGnBuN,EAAkCF,EAHf,KAInB9sB,EAJmB,gBAKnB0R,EALmB,kBAMnBsB,EANmB,kBAOnBC,GACE,EACF,MAAMiR,GAAiBtzB,EAAAA,EAAAA,UAAQ,IAAMo8B,EAAgCvN,IAAa,CAC9EuN,EACAvN,IAEJ,OAAO75B,EACH,kBAACq8B,EAAA,EAAD,CACI14B,IAAK3D,EAAOwB,IACZ6oB,UAAWiU,EACXt+B,OAAQA,EACRutB,kBAAkB,EAClBT,WAAW,EACXX,UAAWnsB,EAAOwB,IAClB4Y,KAAMA,EACN0hB,WAAY97B,EAAO87B,WACnBhQ,gBAAiBA,EACjBuB,kBAAmBA,EACnBD,kBAAmBA,IAEvB,MAGR+Z,EAAc1hB,UAAY,CACtB9mB,UAAW+mB,IAAAA,OACXyG,UAAWzG,IAAAA,OACX1lB,OAAQ0lB,IAAAA,OACRmU,WAAYnU,IAAAA,OACZ0hB,gCAAiC1hB,IAAAA,KACjCtL,KAAMykB,EAAAA,IACN/S,gBAAiBpG,IAAAA,KACjB0H,kBAAmB1H,IAAAA,KACnB2H,kBAAmB3H,IAAAA,MAGvB,UC1CM4f,EAAqB,CACvBxZ,gBAAiBgD,EAAAA,GAAAA,QAAAA,cACjB1B,kBAAmB0B,EAAAA,GAAAA,QAAAA,gBACnBzB,kBAAmByB,EAAAA,GAAAA,QAAAA,iBAKvB,GAAeyW,EAAAA,EAAAA,UAZS,CAAC9hB,EAAO4jB,KAAR,CACpBrnC,OAAQqnC,EAAS1oC,WAAaoV,EAAAA,GAAAA,UAAAA,kBAAsC0P,EAAO4jB,EAAS1oC,cAWhD2mC,EAAxC,CAA4D6B,I,mKCdrD,MAAM7qC,GAAYC,EAAAA,EAAAA,GAAW,CAChC08B,gBAAiB,CACb3zB,QAAS,OACTS,WAAY,SACZlC,OAAQ,OACRnG,UAAW,OACXC,QAAS,GAEbu7B,YAAa,CACTr1B,OAAQ,OACR/F,SAAU,OACVsB,MAAO,mBACP+N,OAAQ,UACRvP,WAAY,OACZM,aAAc,WACdD,SAAU,SACVD,WAAY,UAEhBspC,iBAAkB,CACdzjC,OAAQ,OACR/F,SAAU,OACVsB,MAAO,kBACPxB,WAAY,OACZuI,WAAY,OACZjI,aAAc,WACdD,SAAU,SACVD,WAAY,SACZmP,OAAQ,WAEZo6B,aAAc,CACV1qC,UAAW,aACXsJ,WAAY,MACZF,YAAa,QAEjBuhC,qBAAsB,CAClBpoC,MAAO,qBAIFqoC,GAAuBlrC,EAAAA,EAAAA,IAAY2C,IAAD,CAC3Cs+B,YAAa,CACTp+B,MAAO,sBACPtB,SAAU,OACVqjB,WAAY,OACZnjB,WAAY,SACZC,SAAU,SACVC,aAAc,YAElBwpC,UAAW,CACPv6B,OAAQ,UACR/N,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BC,eAAgB,YAIX6nC,GAAiBprC,EAAAA,EAAAA,IAAY2C,IAAD,CACrC0oC,SAAU,CACNxoC,MAAOF,EAAMG,QAAQM,QAAQE,KAC7ByF,QAAS,OACTvH,WAAY,MACZoP,OAAQ,UACRjP,aAAc,WACdD,SAAU,SACVD,WAAY,UAEhB6pC,aAAc,CACV/pC,SAAU,OACV+F,OAAQ,OACRlG,QAAS,SACT2H,QAAS,OACT4H,eAAgB,gBAChBnH,WAAY,SACZtJ,gBAAiB,uBAErBqrC,QAAS,CACLjkC,OAAQ,OACRD,MAAO,OACPjG,QAAS,aAIJoqC,GAAqBxrC,EAAAA,EAAAA,GAAW,CACzCyrC,UAAW,CACP76B,OAAQ,UACRtJ,OAAQ,OACRD,MAAO,U,gNC/Ef,MAAMqkC,EAAe,IAAgD,IAA/C,SAACxjB,EAAD,WAAWyjB,EAAX,aAAuBC,EAAvB,KAAqC5iC,GAAU,EACjE,MAAMxI,EAAST,KACT,IAACkF,EAAD,WAAMq4B,EAAN,MAAkBt6B,EAAlB,eAAyB6oC,GAAkB7iC,EACjD,MAAY,KAAR/D,EAEI,kBAAC,EAAAwQ,SAAD,GACIhV,UAAWD,EAAOk8B,gBAClB98B,IAAKsoB,EACL9gB,IAAKnC,EACLqI,QAAS,IAAMs+B,EAAa,CAAC5oC,MAAAA,EAAOiC,IAAAA,EAAKq4B,WAAAA,KACrCqO,GAEJ,kBAACG,EAAA,EAAD,CAAgBrrC,UAAWD,EAAOwqC,aAAc1N,WAAYA,IAC5D,0BAAM78B,UAAWD,EAAOm8B,aACnB35B,EACA6oC,GAAkB,0BAAMprC,UAAWD,EAAOyqC,sBAAxB,KAAiDY,KAM5E,kBAAC,EAAAp2B,SAAD,GAAUhV,UAAWD,EAAOk8B,gBAAiB98B,IAAKsoB,EAAU9gB,IAAKnC,GAAS0mC,EAA1E,CAAsF7+B,UAAU,IAC5F,0BAAMrM,UAAWD,EAAOuqC,kBAAmBroC,IAAAA,KAAU,uBAMrEgpC,EAAaxiB,UAAY,CACrBhB,SAAUiB,IAAAA,UAAoB,CAC1BA,IAAAA,MAAgB,CAAC,OACjBA,IAAAA,KACAA,IAAAA,MAAgB,CACZvd,QAASud,IAAAA,IAAAA,eAGjBwiB,WAAYxiB,IAAAA,OAAAA,WACZyiB,aAAcziB,IAAAA,KAAAA,WACdngB,KAAMmgB,IAAAA,MAAgB,CAClBlkB,IAAKkkB,IAAAA,OAAAA,WACLnmB,MAAOmmB,IAAAA,OAAAA,WACPmU,WAAYyO,EAAAA,IAAAA,cAIpB,U,yDCzCA,MAAMC,EAAezrC,IACjB,MACI0rC,aAAa,kBAACC,EAAD,WAAoBC,EAApB,iBAAgCC,GAD3C,SAEFxqC,EAFE,KAGFoH,GACAzI,EAEEC,EAAS0qC,IACTtZ,GAAWC,EAAAA,EAAAA,eACXC,GAAShuB,EAAAA,EAAAA,YAAWiuB,EAAAA,GACpBsa,GAAS3oC,EAAAA,EAAAA,aAAY8T,EAAAA,GAAAA,UAAAA,WASrB80B,GAAarb,EAAAA,EAAAA,KAAUjoB,EAAK5G,WAC5B,CACE3B,UAAWD,EAAOygC,YAClB7xB,UAAW,QAEb,CACE3O,UAAWQ,GAAAA,CAAWT,EAAOygC,YAAazgC,EAAO2qC,WACjDoB,YAdmBr4B,IACvBA,EAAMwC,kBACD01B,IACDxqB,EAAAA,EAAAA,OAAKxV,EAAAA,EAAAA,QAAO,CAACnH,IAAK+D,EAAK5G,UAAW0vB,OAAAA,IAAU0a,EAAAA,GAAAA,QAAAA,WAAuB5a,EAAnEhQ,IAYAtU,QAAUtB,GAAMA,EAAEC,iBAClBnF,MAAM2lC,EAAAA,EAAAA,KAAc,CAACJ,OAAAA,EAAQpnC,IAAK+D,EAAK5G,YACvCgN,UAAW,KAGnB,OACK+8B,GACG,kBAAC,EAAAnqC,WAAesqC,GACXrb,EAAAA,EAAAA,KAAUjoB,EAAK5G,WACVM,IAAAA,KAAW,OAAMwpC,EAAkBlpC,0BACnC+B,EAAAA,EAAAA,KAASnD,KAM/BoqC,EAAY9iB,UAAY,CACpBtnB,SAAUunB,IAAAA,OACVngB,KAAMmgB,IAAAA,OAAAA,WACN8iB,YAAa9iB,IAAAA,OAAAA,YAGjB,U,eCvDA,MAAMujB,EAAkBnsC,IACpB,MACI0rC,aAAa,QAACU,IACdpsC,EAEEC,EAASgrC,IAEf,OACI,kBAAC,EAAAoB,WAAD,CAAYt/B,QAASq/B,GACjB,kBAACE,EAAA,EAAD,CAAWpsC,UAAWD,EAAOirC,cAKzCiB,EAAexjB,UAAY,CACvB+iB,YAAa9iB,IAAAA,OAAAA,YAGjB,U,gDCjBA,MAAO2jB,MAAOC,GAAmB9G,EAAAA,EAE3B6G,EAASvsC,IACX,MACI0rC,aAAa,WAACnqB,EAAD,SAAakrB,GADxB,KAEFhkC,EAFE,SAGFpH,GACArB,EAEEC,EAAS4qC,IAEf,OACI,kBAAC2B,EAAoBxsC,EACjB,yBAAKE,UAAWD,EAAO8qC,cACnB,8BAAOtiC,EAAKhG,OACXgqC,GACG,0BAAM1/B,QAAS,IAAM0/B,EAASlrB,EAAY9Y,EAAKs0B,YAAa78B,UAAWD,EAAO6qC,UAC1E,kBAAC4B,EAAA,EAAD,CAASxsC,UAAWD,EAAO+qC,UAC1B7oC,IAAAA,KAAW,UAASof,EAAc,IAAGA,SAAoB,SAAS9Y,EAAKhG,WAInFpB,IAKbkrC,EAAM5jB,UAAY,CACd+iB,YAAa9iB,IAAAA,OAAAA,WACbngB,KAAMmgB,IAAAA,OACNvnB,SAAUunB,IAAAA,OAGd,UCtCappB,GAAYC,EAAAA,EAAAA,GAAW,CAChCktC,eAAgB,CACZrjC,UAAW,U,4gCCmBnB,MAmCMsjC,EAAiB,IAYjB,IAZkB,OACpB1pC,EAAS,GADW,gBAEpB2pC,EAAkB,GAFE,KAGpBvvB,EAHoB,IAIpBiM,EAJoB,SAKpBnhB,EALoB,SAMpBqkC,EANoB,SAOpBppC,EAPoB,2BAQpBy5B,EARoB,gCASpBwN,EAToB,iBAUpBuB,GAAmB,GAEjB,EADC1rC,EACD,kKACF,MAAMF,EAAST,KACR+hB,EAAYurB,IAAiBtiC,EAAAA,EAAAA,UAAS,IAEvCuiC,GAAc7+B,EAAAA,EAAAA,UAAQ,IAAM2+B,EAAgBpmC,KAAK1C,IAASipC,EAAAA,EAAAA,KAAc3pC,EAAUU,MAAQ,CAC5F8oC,EACAxpC,IAGE45B,EAAU,CACZ,CACI9pB,OAAQ,SACRqzB,UAAW,OACX5X,OAAQie,EAAgBpmC,IAAI+3B,EAAAA,OAI9BrB,EAAU,EAAH,GAAOL,EAAP,CAAmCvT,IAAAA,IAE1C0jB,EAAeR,EACf,CAACnoC,EAAO4oC,KACNT,EAASS,GAAiBL,EAAgB,GAAIvoC,GAC9CwoC,EAAc,UAEhB12B,EAMA6c,EAAgB3uB,IACJ,OAAVA,IACAwoC,EAAc,IACd1kC,EAAS9D,KAQX6oC,GAAYj/B,EAAAA,EAAAA,UAAQ,IAA6B,IAAvB6+B,EAAYtnC,QAAc,CAACsnC,IAIrDpB,IAAqByB,EAAAA,EAAAA,SAAQlqC,GAAU6pC,EAAY,IAAKC,EAAAA,EAAAA,KAAc3pC,EAAUH,EAAO65B,cAAgB,GACvGsQ,EACFZ,GAAYtqC,IAAAA,KAAW,UAASof,EAAc,IAAGA,SAAoB,SAASoqB,EAAkBlpC,SAC9FA,EAAQN,IAAAA,KAAW,UAAgC,IAAvB4qC,EAAYtnC,OAAgB,GAAEsnC,EAAY,GAAGtqC,SAAW,aACpF6qC,IAAgBF,EAAAA,EAAAA,SAAQlqC,KAAWwtB,EAAAA,EAAAA,KAAUxtB,EAAOrB,WACpD0rC,EAAiBJ,EAAY,CAACZ,MAAD,EAAQiB,aAAcC,EAAAA,IAAa,GAChEC,EAAiBJ,EAAe,CAACnB,eAAcA,GAAI,IAEnD,eAACwB,GAA4CxtC,EAAzBytC,EAA1B,EAAmDztC,EAAnD,oBAEM0tC,GAAiB3/B,EAAAA,EAAAA,UACnB,IAAM,EAAN,GACQy/B,GAAkB,GAD1B,CAEI,iBAAoB,4BAExB,CAACA,IAEL,OACI,oCACI,kBAACG,EAAA,EAAD,GACIxpC,OAAQ8oC,EAAAA,EAAAA,SAAQlqC,QAAmBkT,EAATlT,EAC1Bqe,WAAYA,EACZwsB,cAzCezpC,IACvBwoC,EAAcxoC,IAyCN0pC,WAzBQ1pC,IAChBg5B,EAAAA,EAAAA,KAAoBL,EAASE,EAAS74B,GAAO6H,KA3F1B,EAAC4gC,EAAaN,IAAc/P,IACnD,MAAMuR,EAAavR,EAASj2B,KAAKvD,GAAD,KACzBA,EADyB,CAE5BT,OAAO+B,EAAAA,EAAAA,KAAStB,EAAOT,OACvBs6B,WAAYgQ,EAAY5oC,MAAK,QAAC,IAACO,GAAF,SAAWA,IAAQxB,EAAOa,YAGrDmqC,EAAmC/Q,IACrCiQ,EAAAA,EAAAA,SAAQjQ,GACF,CACE,CACI16B,MAAO,GACPiC,IAAK,GACLq4B,WAAY,KAGlBI,EAEJgR,EAAsB1B,EACtBM,EACAA,EAAY55B,QAAQpP,GACXkqC,EAAWptB,MAAMutB,GAAWA,EAAOrqC,OAASA,EAAKW,QAGhE,OAAOypC,EAAoB1oC,OAAS,EAC9B0oC,EAAoB1nC,KAAK1C,IAChB,CACHtB,MAAOsB,EAAKtB,MACZs6B,WAAYh5B,EAAKW,IACjBy4B,QAAS+Q,EAAgCD,EAAW96B,QAAQi7B,GAAWA,EAAOrqC,OAASA,EAAKW,WAGlGwpC,EAAgCD,IA2DgBI,CAAmBtB,EAAaN,IAyB1E6B,gBAAgBzyB,EAAAA,EAAAA,MAAK,eACrBzT,SAAU6qB,EACVwZ,SAAUQ,EACVb,QAnCQ,KAChBnZ,EAAa,KAmCLxwB,MAAOA,EACP4qC,YAAaA,EACb3H,WAAU,GACN6I,OAAQpD,EACRM,YAAaA,GACV8B,EACAG,GAEP/B,kBAAmBA,EACnB6C,aAAa,EACb3C,iBAAkBA,EAClB8B,eAAgBE,GACZD,IAEPN,GACG,yBAAKptC,UAAWD,EAAO0sC,gBACnB,kBAACtC,EAAA,EAAD,CACI/sB,KAAMA,EACNgtB,gCAAiCA,EACjCvN,WAAY4O,EACZ9pC,UAAWqB,EAAOrB,eAQ1C+qC,EAAejkB,UAAY,CACvBzlB,OAAQurC,EAAAA,IACR5B,gBAAiBjkB,IAAAA,QAAkBA,IAAAA,QACnCW,IAAKX,IAAAA,OACLtL,KAAMykB,EAAAA,IACN1Q,SAAUzI,IAAAA,KACVvlB,SAAUqrC,EAAAA,IACVtmC,SAAUwgB,IAAAA,KAAAA,WACV6jB,SAAU7jB,IAAAA,KACV0hB,gCAAiC1hB,IAAAA,KACjCkU,2BAA4BlU,IAAAA,OAC5BijB,iBAAkBjjB,IAAAA,MAGtB,W,2LCvLO,MAAMppB,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,CACFsF,MAAO,SAEX6N,MAAO,CACH7N,MAAO,OACPC,OAAQ,OACRyB,QAAS,OACTS,WAAY,SACZvB,UAAW,OACX/H,gBAAiB,oBAErBgvC,UAAW,CACP3xB,KAAM,GAEV6E,MAAO,CACHhhB,QAAS,SACTG,SAAU,OACV,gBAAiB,CACbsB,MAAOF,EAAMG,QAAQK,KAAKoE,YAGlCmR,aAAc,CACV7O,UAAW,MACXtI,SAAU,OACVsB,MAAOF,EAAMG,QAAQ+V,MAAMvV,UCd7B6rC,EAAgBtqC,GAA0C,IAAxBA,EAAM0G,OAAOvF,OAExCopC,EAAkB,IAAqB,IAApB,OAACC,GAAmB,EAChD,MAAM7uC,EAAST,KAER8E,EAAOiG,IAAYC,EAAAA,EAAAA,UAAS,KAC5B8N,EAAOy2B,IAAYvkC,EAAAA,EAAAA,UAAiB,MAsB3C,OACI,kBAAC,EAAA/G,IAAD,CAAKvD,UAAWD,EAAOuB,MACnB,kBAAC,EAAAuf,MAAD,CAAO7gB,UAAWD,EAAO0U,OACrB,kBAAC,EAAAq6B,UAAD,CACI1qC,MAAOA,EACP8D,SAzBMqD,IAClB,MAAMe,EAAWf,EAAEgM,OAAOnT,MAEpB2qC,EADS,IAAIr2B,OAAO,iCACEs2B,KAAK1iC,GAEjCjC,EAASiC,GAEJyiC,GAAiBL,EAAapiC,GAG/BuiC,EAAS,MAFTA,EAAS5sC,IAAAA,KAAU,wBAkBXb,QAAS,CAACE,KAAMvB,EAAO0uC,UAAW9sB,MAAO5hB,EAAO4hB,OAChDjV,YAAazK,IAAAA,KAAU,6BAE3B,kBAAC,EAAA0K,OAAD,CACIN,SAAUoG,QAAQ2F,IAAUs2B,EAAatqC,GACzC5C,QAAQ,WACRY,MAAM,UACNyK,QAnBG,KACf+hC,EAAOxqC,GACPiG,EAAS,IACTwkC,EAAS,QAkBI5sC,IAAAA,KAAU,UAGlBmW,GAAS,kBAAC,EAAA7W,WAAD,CAAYvB,UAAWD,EAAOkY,cAAeG,K,8CC3D5D,MAAM62B,EAAc,CAAC,YAAa,aAAc,aAAc,YAAa,aCUrEC,EAAoB,IAAsC,IAArC,UAAClvC,EAAD,aAAYmvC,GAAyB,EAOnE,OACI,oCACI,2BACIC,QATS7jC,IACb4jC,GACAA,EAAa5jC,EAAEmI,cAAc27B,MAAM,KAQ/B3sB,MAAO,CAACpa,QAAS,QACjBgnC,OAAQL,EAAY9nC,KAAK,KACzBqB,GAAG,sBACH3E,KAAK,SAET,2BAAO0rC,QAAQ,uBACX,kBAAC,EAAA5iC,OAAD,CAAQ3M,UAAWA,EAAWwB,QAAQ,YAAYY,MAAM,UAAUuM,UAAU,QACvE1M,IAAAA,KAAU,oB,gNC1B/B,MAwEA,EAxEgEnC,GAExD,2BACI8G,MAAO,IACPC,OAAQ,IACRkJ,QAAQ,cACRC,MAAM,6BACNqM,WAAW,gCACPvc,GAEJ,8BACI,oCAAgB0vC,GAAG,MAAMC,GAAG,KAAKC,GAAG,MAAMC,GAAG,OAAOnnC,GAAG,qBACnD,0BAAMonC,UAAU,OAAOtpB,OAAO,OAC9B,0BAAMspB,UAAU,OAAOC,YAAa,EAAGvpB,OAAO,UAElD,oCAAgBkpB,GAAG,MAAMC,GAAG,KAAKC,GAAG,MAAMC,GAAG,OAAOnnC,GAAG,qBACnD,0BAAMonC,UAAU,OAAOtpB,OAAO,OAC9B,0BAAMspB,UAAU,OAAOC,YAAa,EAAGvpB,OAAO,UAElD,oCAAgBkpB,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUnnC,GAAG,qBACnE,0BAAMonC,UAAU,OAAOC,YAAa,EAAGvpB,OAAO,OAC9C,0BAAMspB,UAAU,OAAOtpB,OAAO,UAElC,oCAAgBkpB,GAAG,MAAMC,GAAG,KAAKC,GAAG,MAAMC,GAAG,OAAOnnC,GAAG,qBACnD,0BAAMonC,UAAU,UAAUtpB,OAAO,OACjC,0BAAMspB,UAAU,UAAUtpB,OAAO,UAErC,4BAAQ9d,GAAG,oBAAoBsnC,GAAI,IAAKC,GAAI,IAAKC,EAAG,OAExD,uBAAGn3B,OAAO,OAAOC,YAAa,EAAGjJ,KAAK,OAAOC,SAAS,WAClD,0BAAMtH,GAAG,oBAAoBqH,KAAK,QAC9B,yBAAKyM,UAAU,wBAEnB,yBAAK1M,YAAa,GAAKC,KAAK,UAAUyM,UAAU,uBAChD,uBAAGC,KAAK,2BACJ,uBAAGzD,YAAa,EAAGjJ,KAAK,OAAOhQ,UAAU,mBACrC,0BACIoQ,EAAE,2OACFJ,KAAK,OACLgP,QAAS,KAEb,6BACIhP,KAAK,0BACLgP,QAAS,GACTixB,GAAI,OACJC,GAAI,QACJE,GAAI,MACJC,GAAI,SAER,0BACIjgC,EAAE,4OACFJ,KAAK,0BACLgP,QAAS,MAGjB,0BACIhP,KAAK,0BACLgP,QAAS,IACT5O,EAAE,qGACFpQ,UAAU,oBAEd,0BACIgQ,KAAK,0BACLI,EAAE,mEACFpQ,UAAU,uBChErBP,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,CACFX,QAAS,eAEbwvC,SAAU,CACN1wC,gBAAiB,wBAErBU,KAAM,CACFyG,MAAO,QACPC,OAAQ,QACR1E,aAAc,QAElBtB,MAAO,CACHsB,aAAc,MACdC,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B7B,SAAU,OACVC,WAAY,IACZH,WAAY,QAEhBwvC,YAAa,CACTjuC,aAAc,OACdC,MAAOF,EAAMG,QAAQK,KAAKoE,UAC1BhG,SAAU,OACVF,WAAY,YCTPyvC,EAAY,IAAsC,IAArC,aAAClB,EAAD,UAAenvC,GAAsB,EAC3D,MAAMD,EAAST,MAER,QAACgxC,EAAD,OAAUC,GAASC,IAAQC,EAAAA,EAAAA,SAAQ,CACtCnB,OAAQ,CAACoB,EAAYC,MACrBH,KAAOvpC,IACCA,GAIAkoC,EAAaloC,EAAKooC,MAAM,KAGhCuB,QAAUC,IAAD,CACLN,OAAQM,EAAQN,SAChBD,QAASO,EAAQP,cAInBH,EAAWG,GAAWC,EAE5B,OACI,yBAAKpxC,IAAKqxC,EAAMxwC,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAM,CAAC,CAACvB,EAAOowC,UAAWA,GAAWnwC,IAC9E,kBAAC8wC,EAAD,CAAY9wC,UAAWD,EAAOI,OAC9B,kBAAC,EAAAoB,WAAD,CAAYvB,UAAWD,EAAOc,OAAQoB,IAAAA,KAAU,uBAChD,kBAAC,EAAAV,WAAD,CAAYvB,UAAWD,EAAOqwC,aACzBnuC,IAAAA,KACG,yGACA,CACI8uC,eJ5CM,MIgDlB,kBAAC7B,EAAD,CAAmBC,aAAcA,MC/ChC7vC,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,CACFsF,MAAO,OACP0B,QAAS,OACTS,WAAY,SACZpI,QAAS,SACT8e,UAAW,cAEfpY,OAAQ,CACJsiB,aAAe,aAAYznB,EAAMG,QAAQK,KAAKC,UAC9Cma,KAAM,EACN+B,QAAS,KAEbnc,KAAM,CACF/B,QAAS,SACTyB,MAAOF,EAAMG,QAAQK,KAAKoE,UAC1BhG,SAAU,OACVF,WAAY,YCRPowC,EAAkB,IAAkC,IAAjC,SAAC7vC,EAAD,UAAWnB,GAAsB,EAC7D,MAAMD,EAAST,IAEf,OACI,kBAAC,EAAAiE,IAAD,CAAKvD,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACpC,kBAAC,EAAAuD,IAAD,CAAKvD,UAAWD,EAAOsH,SACvB,kBAAC,EAAA9F,WAAD,CAAYvB,UAAWD,EAAO2C,MAAOvB,GACrC,kBAAC,EAAAoC,IAAD,CAAKvD,UAAWD,EAAOsH,W,yBChB5B,MAAM/H,GAAYC,EAAAA,EAAAA,GAAW,CAChCqd,UAAW,CACPxa,MAAO,UCQF6uC,EAAgB,IAA6B,IAA5B,MAAC74B,EAAD,QAAQ7G,GAAoB,EACtD,MAAMxR,EAAST,IAEf,OACI,kBAAC,EAAA4xC,SAAD,CACI1/B,KAAMiB,QAAQ2F,GACd7G,QAASA,EACTrE,QAASkL,EACTpM,OACI,kBAAC,IAAD,CACIhM,UAAWD,EAAO6c,UAClBrO,aAActM,IAAAA,KAAU,SACxB9B,KAAM6d,EAAAA,QACNnR,QAAS0E,OCvBhBjS,GAAYC,EAAAA,EAAAA,IAAY2C,IAAD,CAChCZ,KAAM,GACN6vC,YAAa,CACTtpC,SAAU,WACVgB,SAAU,SAEdhI,MAAO,CACHuB,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B7B,SAAU,OACVC,WAAY,IACZ8T,cAAe,SACfjU,WAAY,OACZD,QAAS,QAEbqM,KAAM,CACF1E,QAAS,OACT0b,cAAe,SACfjb,WAAY,SACZpI,QAAS,aACTu1B,UAAW,UAEfkb,UAAW,CACPjvC,aAAc,OAElBG,QAAS,CACLH,aAAc,Y,cCJf,MAAMkvC,EAAoB,IAAsC,IAArC,KAAC7/B,EAAD,QAAOD,EAAP,SAAgBijB,GAAqB,EACnE,MAAMz0B,EAAST,IAETgyC,GAAmBruC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,qBAC/BquC,GAActuC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,gBAC1BsuC,GAASvuC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,YAEpBwO,EAAS+/B,IAAcnnC,EAAAA,EAAAA,WAAS,IAChC8N,EAAOy2B,IAAYvkC,EAAAA,EAAAA,UAAiB,MAErConC,EAAe34B,IACjB04B,GAAW,IACXE,EAAAA,EAAAA,KAAmB,CAAC54B,MAAAA,EAAOu4B,iBAAAA,EAAkBC,YAAAA,EAAaC,OAAAA,IACrDvlC,MAAM2lC,IACHpd,EAASod,GACTrgC,OAEHrF,OAAO2lC,GAAQhD,GAASgD,MAAAA,OAAA,EAAAA,EAAK55B,eAAgBhW,IAAAA,KAAU,2BACvD6vC,SAAQ,IAAML,GAAW,MAoBlC,OACI,kBAAC19B,EAAA,EAAD,KACI,kBAAC,EAAA4J,OAAD,CAAQnM,KAAMA,EAAMD,QAASA,EAASnQ,QAAS,CAACqT,MAAO1U,EAAOoxC,cAC1D,kBAAC,EAAA5vC,WAAD,CAAYvB,UAAWD,EAAOc,OAAQoB,IAAAA,KAAU,kBAChD,kBAAC,EAAAsB,IAAD,CAAKvD,UAAWD,EAAOiN,MACnB,kBAACqjC,EAAD,CAAWrwC,UAAWD,EAAOqxC,UAAWjC,aAtB7Bp2B,IACvB,MAAM1Y,EAAO6sB,QAAQnU,EAAM1Y,KAAO,KAAO,MAAM8sB,QAAQ,IACjD4kB,EAAgB9C,EAAYtpC,SAASoT,EAAMlV,MAE7CxD,EV/CkB,GUgDlBwuC,EAAS5sC,IAAAA,KAAU,gDACX8vC,EAGRL,EAAY34B,GAFZ81B,EAAS5sC,IAAAA,KAAU,qCAgBX,kBAAC+uC,EAAD,CAAiBhxC,UAAWD,EAAOuC,SAAUL,IAAAA,KAAU,OACvD,kBAAC0sC,EAAD,CAAiBC,OAXRzW,IACrBuZ,EAAYvZ,OAYHzmB,GAAW,kBAACsgC,EAAA,EAAD,MACZ,kBAACf,EAAD,CAAe74B,MAAOA,EAAO7G,QAAS,IAAMs9B,EAAS,W,0BCpE9D,MAAMvvC,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACFsF,MAAO,OACPzE,aAAc,QAElB4W,MAAO,IAA+B,IAA9B,YAAC0e,GAA6B,EAClC,MAAO,CACHxuB,YAAawuB,EACbtnB,OAAQ,UACR,eAAgB,CACZlH,YAAa,KAIzBgpC,gBAAiB,IAAwD,IAAvD,YAACxa,EAAD,WAAcze,EAAd,YAA0BC,GAA6B,EACrE,MAAO,CACHxZ,gBAAiB,QACjBmH,MAAOoS,EACPnS,OAAQoS,EACR9I,OAAQ,UACR9I,OAAQ,qBACRoY,UAAW,aACXxW,YAAawuB,EACbnvB,QAAS,OACTS,WAAY,SACZmH,eAAgB,SAChB+T,WAAY,IAGpBiuB,aAAc,CACVtrC,MAAO,OACPC,OAAQ,QAEZsrC,WAAY,CACRrxC,SAAU,YCnClB,ECmC4B,IAUf,IAVgB,cACzBgD,EAAgB,GADS,gBAEzB2mB,EAAkB,GAFO,kBAGzB2F,EAHyB,kBAIzBC,EAJyB,iCAKzBoG,EALyB,UAMzBtH,EANyB,OAOzBoH,EAPyB,UAQzBC,EARyB,UASzBH,EAAYC,EAAAA,IACH,EACT,MAAMv2B,EAAST,EAAU+2B,GACnBrzB,GAASC,EAAAA,EAAAA,aAAY8T,EAAAA,GAAAA,UAAAA,YAAmC,GACxD+b,GAAoB7vB,EAAAA,EAAAA,cAAawjB,GACnC1P,EAAAA,GAAAA,UAAAA,mCAAuD0P,EAAOzjB,EAAOwB,OAEnE2sB,GAAWC,EAAAA,EAAAA,gBACVghB,EAAuBC,IAA4B/nC,EAAAA,EAAAA,WAAS,GAE7DgoC,GAA+Bt8B,EAAAA,EAAAA,cAAY,KAC7Cq8B,GAA0BE,IAAaA,MACxC,IAEGC,GAAsBx8B,EAAAA,EAAAA,cACvB+C,IACG,MAAMvU,GAAMiuC,EAAAA,EAAAA,KAAYtjB,EAAWrrB,EAAc6oB,MAC3ClB,EAA+C,GACrD,IAAK,MAAM9kB,KAAOoS,EAAO,CACrB,MAAM0Y,GAAa3tB,EAAcyqB,YAAc,IAAItqB,MAAK,QAAC,KAAC0oB,GAAF,SAAYA,IAAShmB,KACzE8qB,IACAhG,EAAe9kB,GAAO,CAClB,CACInC,KAAKiuC,EAAAA,EAAAA,KAAYjuC,EAAKitB,EAAU9E,MAChC+lB,IAAI,EACJtuC,MAAO2U,EAAMpS,GACb9C,KAAM4tB,EAAUjtB,OAKhC6rB,EAAkB,CAACvsB,cAAAA,EAAeU,IAAAA,EAAKJ,MAAOqnB,MAElD,CAAC4E,EAAmBlB,EAAWrrB,IAG7B6uC,GAAwB38B,EAAAA,EAAAA,cACzB48B,IAEG,GADAxiB,EAAkBwiB,GACd9f,IAAsB8f,EAAMpuC,IAAK,OACjC,MAAMquC,GAAgB,UAAApoB,EAAgB,UAAhB,eAAoBjmB,OAAQouC,EAAMpuC,IAAMimB,EAAgB,GAAKA,EAAgB,GACnG0G,EACIW,EAAAA,GAAAA,iBAAAA,QAAAA,qBAAsD,CAClDnwB,UAAWqB,EAAOwB,IAClBJ,MAAOyuC,GAAkB,SAKzC,CAACziB,EAAmBptB,EAAQ8vB,EAAmBrI,IAG7CkJ,EAA4B,CAACmf,EAA2BrhB,KAC1D,MAAM,yBAAC+H,EAAD,WAA2Bhe,EAA3B,YAAuCH,EAAvC,eAAoDC,GAAkBw3B,EACtEC,GAAW9d,EAAAA,EAAAA,KAAuBxD,IAClC,IAACjtB,GAAOitB,EAEd,OACI,kBAACmC,EAAA,EAAD,CACIprB,GAAIhE,EACJ6W,YAAa,IAAMA,EAAY03B,GAC/Bz3B,eAAgB,IAAMA,EAAemW,GACrClW,SAAU,IAAMo3B,EAAsB,CAACnuC,IAAAA,EAAKV,cAAAA,IAC5C0X,WAAY,IAAMA,EAAW,CAACu3B,IAC9BlmC,QAAS,IAAM2sB,EAAyBh1B,MA2BpD,OACI,yBAAKxE,UAAWD,EAAOuB,MACnB,kBAAC8mC,EAAA,EAAD,CACI3d,gBAAiBA,EACjB3mB,cAAeA,EACfqyB,YA3BsB2c,GACV,WAAgE,IAA/DrhB,EAA+D,uDAA9B,GAClD,MAAMha,GAAM8T,EAAAA,EAAAA,KAAgCkG,IACtC,IAACjtB,GAAOitB,GACR,yBAAC+H,GAA4BsZ,EAEnC,OACI,yBAAK9yC,UAAWD,EAAOgZ,MAAOpS,IAAKnC,GAC/B,kBAAC8mB,EAAA,EAAD,CACI7T,IAAKA,EACLqC,QAAS6Z,EAA0Bmf,EAASrhB,GAC5C5kB,QAAS,IAAM2sB,EAAyBh1B,GACxCnE,KAAM,CAAC2Y,WAAYqd,EAAUrd,WAAYC,YAAaod,EAAUpd,aAChE,iBAAe,6BAevBa,SAAO,EACPsc,gBAAiB,EACjB5B,SAAU8d,EACVliB,kBAAmBuiB,EACnBtc,UAAWA,EACXI,iCAAkCA,EAClCF,OAAQA,EACRpH,UAAWA,EACXqH,UAAWA,GAEX,yBAAKx2B,UAAWD,EAAOkyC,gBAAiBplC,QAASylC,GAC7C,kBAACpyC,EAAA,EAAD,CACIF,UAAWD,EAAOmyC,aAClB3xC,cAAeR,EAAOoyC,WACtBhyC,KAAM6yC,EAAAA,MAIlB,kBAAC3B,EAAD,CACI7/B,KAAM4gC,EACN5d,SAAUge,EACVjhC,QAAS+gC,O,2IClKlB,MAAMhzC,GAAYC,E,SAAAA,GAAW,CAChC0zC,eAAgB,CACZ3qC,QAAS,OACT4b,cAAe,MACf,UAAW,CACPvjB,QAAS,IAGjBsuB,MAAO,GACPikB,eAAgB,GAChBC,oBAAqB,CACjB,mBAAoB,IAExBnd,WAAY,CACRr1B,QAAS,oBACTlB,gBAAiB,uBAErB2zC,YAAa,CACTtyC,SAAU,OACVC,WAAY,IACZH,WAAY,QAEhBT,KAAM,CACFW,SAAU,OACVmI,YAAa,OAEjBoqC,UAAW,CACP5zC,gBAAiB,qBACjBkB,QAAS,SACT4X,OAAQ,EACRjQ,QAAS,OACTS,WAAY,SACZ3G,MAAO,mBACPtB,SAAU,OACVC,WAAY,KAEhBuyC,0BAA2B,CACvBzrC,SAAU,WACVwI,IAAK,EACLG,OAAQ,EACRF,KAAM,EACNC,MAAO,EACPjI,QAAS,OACT4H,eAAgB,SAChBnH,WAAY,Y,gFC1CpB,MAAMwqC,GAAcC,EAAAA,EAAAA,QAAM,CAACC,EAAoB5wB,KACpC5P,EAAAA,EAAAA,SAAQhM,GAAwBA,EAAK1E,MAAMmxC,cAAc/tC,SAAS8tC,EAAWC,gBAA7EzgC,CAA6F4P,KAQlG8wB,EAAuB,QAAC,UAACtmB,EAAD,OAAYpa,EAAS,IAAtB,SACzBkO,EAAAA,EAAAA,MACIoyB,EAAYtgC,IACZ1M,EAAAA,EAAAA,MAAK8nB,IAAD,CACApnB,KAAM,CACFuB,GAAI6lB,EAAS7pB,IACbjC,MAAO8rB,EAAS9rB,MAChB8rB,SAAAA,OANZlN,CASEkM,I,ICjBDumB,G,SAAAA,GAAAA,EAAAA,OAAAA,SAAAA,EAAAA,WAAAA,a,CAAAA,IAAAA,EAAAA,KAsBE,MCDD5kB,EAAuB,IAA+D,IAA9D,MAACzsB,EAAD,WAAQsxC,EAAatxC,EAArB,KAA4BgG,EAA5B,OAAkCo5B,EAAlC,MAA0C1S,EAA1C,QAAiDC,GAAa,EACxF,MAAMnvB,EAAST,IACTmK,GAAW6D,EAAAA,EAAAA,WACVuI,EAAQC,IAAaxL,EAAAA,EAAAA,WAAS,IAI9B2I,EAAQ6gC,IAAaxpC,EAAAA,EAAAA,UAAS,KAG9ByY,EAAe8R,IAAoBvqB,EAAAA,EAAAA,UAAS,KAG7C,MAACuY,EAAD,UAAQkxB,EAAR,kBAAmBC,EAAnB,sBAAsCC,GDZV,KAAmC,IAAlC,KAAC1rC,EAAD,OAAOo5B,EAAP,OAAe1uB,GAAmB,EACrE,MAAM8gC,EAAYthC,QAAQkvB,GAEpBuS,GAA0BlmC,EAAAA,EAAAA,UAC5B,IAAO+lC,EAAYJ,EAAqB,CAACtmB,UAAW,CAACsU,GAAS1uB,OAAAA,IAAW,IACzE,CAAC8gC,EAAWpS,EAAQ1uB,IAElBkhC,GAA6BnmC,EAAAA,EAAAA,UAC/B,IACI+lC,GAAAA,MAAaG,GAAAA,EAAyB3uC,OAChC,CACE,CACI0B,KAAM,CACFuB,GAAIorC,EAAYjS,OAChBp/B,MAAON,IAAAA,KAAU,WAErB4gB,MAAOqxB,IAGb,IACV,CAACH,EAAWG,IAGVE,GAA+BpmC,EAAAA,EAAAA,UACjC,IACI2lC,EAAqB,CACjBtmB,UAAW9kB,EACX0K,OAAAA,KAER,CAAC1K,EAAM0K,IAGLohC,GAAkBrmC,EAAAA,EAAAA,UACpB,IACI+lC,GAAAA,MAAaK,GAAAA,EAA8B7uC,OACrC,CACE,CACI0B,KAAM,CACFuB,GAAIorC,EAAYrlB,WAChBhsB,MAAON,IAAAA,KAAU,eAErB4gB,MAAOuxB,IAGbA,GACV,CAACL,EAAWK,IAGVvxB,GAAQ7U,EAAAA,EAAAA,UAAQ,KAAM2a,EAAAA,EAAAA,KAAyBwrB,GAAe,IAAIprB,OAAOsrB,KAAmB,CAC9FF,EACAE,IAGEL,EAAoBG,EAAY5uC,OAChC0uC,EAAwBI,EAAgB9uC,OAC9C,MAAO,CAACsd,MAAAA,EAAOkxB,UAAAA,EAAWC,kBAAAA,EAAmBC,sBAAAA,IC3CwBK,CAAuB,CAAC/rC,KAAAA,EAAMo5B,OAAAA,EAAQ1uB,OAAAA,IAQrGshC,GAAsBv+B,EAAAA,EAAAA,cACxB,CAAC/O,EAAMsO,KACHsf,GAAiBhZ,EAAAA,EAAAA,SAAOlQ,EAAAA,EAAAA,QAAO4J,IAAUi/B,EAAAA,EAAAA,QAAOvtC,IAAOwtC,EAAAA,EAAAA,SAAOtf,EAAAA,EAAAA,QAAO,KAAMluB,EAAKuB,KAA/DqT,CAAqEkH,MAE1F,CAACA,IAGC0B,GAAczO,EAAAA,EAAAA,cAAY,CAAC1Q,EAAG2B,IAAUA,EAAK4b,MAlCvB,GADZ,IAmCmF,IAE7F6xB,GAAsB1+B,EAAAA,EAAAA,cACxB,IAAY,IAAX,KAAC/O,GAAU,EACRstC,EAAoBttC,GAAMi7B,EAAAA,EAAAA,MAAIyS,EAAAA,EAAAA,MAAIxf,EAAAA,EAAAA,QAAO,KAAMluB,EAAKuB,IAAtBmsC,CAA2B5xB,OAE7D,CAACwxB,EAAqBxxB,KAGpB,WAACC,EAAD,cAAaW,IAAiBf,EAAAA,EAAAA,GAAsB,CACtDC,MAAAA,EACArR,KAAMqE,EACNiN,oBAAqB4xB,EACrB3xB,cAAAA,IAGE6xB,GAAgBtnC,EAAAA,EAAAA,QAAO,MAC7BsnC,EAAczpC,QAAU6X,EAExB,MAAM6xB,EAAcd,GAAaC,EAAoB,EAAI,IAAMC,EAAwB,EAAI,GAAK,EAC1FtiC,EAAakR,EAAMtd,OAASsvC,EAE5BC,EAAa1rB,KAAKG,IAtDM,IAHd,GA2DE5X,EA1DU,GA0D6BkjC,GAEnDxyB,EAAkB+G,KAAKC,IAzDJ,IAyD8ByrB,EAxD3B,KA0DtBC,GAAmB/+B,EAAAA,EAAAA,cACrB,CAAC0M,EAAD,EAA2B9gB,KAAU,UAA7B,KAACqF,EAAD,MAAO+tC,EAAQ,GAAc,EACjC,MAAMC,GAAYN,EAAAA,EAAAA,MAAIxf,EAAAA,EAAAA,QAAO,KAAMluB,EAAKuB,IAAtBmsC,CAA2B5xB,GACvCmyB,EAAYN,EAAczpC,UAAYvJ,EAE5C,OACI,kBAACuzC,EAAA,EAAD,CACIxuC,IAAKM,EAAKzC,IACVqI,QAAS0nC,EACTh/B,QAAS0/B,EACTD,MAAOA,EACPzsC,KAAMtB,EACN1E,MAAO,kBAAC6yC,EAAA,EAAD,CAAa1yC,KAAMuE,EAAK1E,MAAOiW,UAAWvF,IACjDoiC,YAAapuC,EAAK1E,MAClBmgB,MAAOA,EACPwyB,UAAWA,EACX9wB,aAAa,UAACnd,EAAKonB,gBAAN,QAAC,EAAemV,UAC7B8R,SAAUruC,EAAKquC,aAI3B,CAACriC,EAAQshC,EAAqBxxB,IAG5B4B,GAAmB3O,EAAAA,EAAAA,cACrB,CAAC0M,EAAOzb,IACJ,kBAAC,EAAAsuC,SAAD,CAAU5mC,UAAW,MAAO3O,UAAWD,EAAOszC,UAAW3wB,MAAOA,EAAO/b,IAAM,SAAQM,EAAKA,KAAKuB,MAC1FvB,EAAKA,KAAK1E,QAGnB,IAGJ,OACI,yBAAKvC,UAAWQ,GAAAA,CAAWT,EAAOkzC,eAAgB,CAAC,CAAClzC,EAAOkvB,OAAQA,KAC/D,kBAAC,EAAAtiB,OAAD,CAAQvK,MAAM,UAAUyK,QAvFR,IAAMiJ,GAAWD,GAuFiB1W,IAAKsK,EAAUzJ,UAAWD,EAAOi2B,YAC/E,kBAACwW,EAAA,EAAD,CAASprC,QAAS,CAACE,KAAMvB,EAAOI,QAChC,yBAAKH,UAAWD,EAAOqzC,aAAc7wC,IAEzC,kBAACizC,EAAA,EAAD,CACIhkC,KAAMqE,EACN7V,UAAWQ,GAAAA,CAAWT,EAAOozC,oBAAqBpzC,EAAOmzC,gBACzD5hC,SAAU7H,EAAS0B,QACnBoG,SAAS4P,EAAAA,EAAAA,OApFS,KACtB4B,EAAcxd,OAAS,GACvB2pB,GAAQyG,EAAAA,EAAAA,OAAM,WAAY5S,OAZf,IAAMjN,GAAU,KAGf,IAAMg+B,EAAU,MAGT,IAAMjf,EAAiB,MAyFtC9T,SAAU+yB,EACVzxB,gBAAiBA,EACjBxhB,MAAOgzC,EACPzxB,eA5Ga,IA6GbE,qBAAsBqB,GAEtB,kBAACa,EAAA,EAAD,CACIC,YAAaA,EACbC,WAAYqwB,EACZpwB,iBAAkBA,EAClB9B,MAAOA,EACPhc,OAAQiuC,EACR1yB,eArHS,IAsHTY,WAAYA,IAEE,IAAjBH,EAAMtd,QACH,yBAAKvF,UAAWD,EAAOuzC,2BACnB,kBAAC,EAAA/xC,WAAD,CAAYC,QAAQ,UAAU8G,QAAQ,QAAQmtC,cAAY,GACrDxzC,IAAAA,KAAU,yBASvC+sB,EAAqBvG,UAAY,CAC7BlmB,MAAOmmB,IAAAA,OACPmrB,WAAYnrB,IAAAA,OACZngB,KAAMmgB,IAAAA,MACNiZ,OAAQjZ,IAAAA,OACRuG,MAAOvG,IAAAA,KACPwG,QAASxG,IAAAA,MAGb,W,+RC9JA,MAAMsW,EAAmBl/B,IACrB,MAAM,eAAC2rB,EAAD,cAAiB3nB,GAAiBhE,EAClCyC,GAAQmzC,EAAAA,EAAAA,KAAwBjqB,EAAgB3nB,EAAc6xC,kBAEpE,OACI,kBAAC,IAAD,GACIpzC,OAAO+B,EAAAA,EAAAA,KAAS/B,GAChBymC,mBAAoBllC,EAAcyqB,YAAczqB,EAAco3B,qBAC1Dp7B,KAKhBk/B,EAAgBvW,UAAYmtB,EAAAA,IAE5B,SAAetmC,EAAAA,EAAAA,MAAK0vB,I,6KClBb,MAAM1/B,GAAYC,E,SAAAA,GAAW,CAChC0H,KAAM,CACF9E,aAAc,QAElB8sB,MAAO,CACH9sB,aAAc,K,wpBCgCtB,MAAM88B,EAAsBn/B,IACxB,MAAMC,EAAST,KACT,eACFkzB,EADE,SAEFrvB,EAFE,2BAGFy5B,EAHE,uBAIFiZ,EAJE,uBAKFC,EALE,kBAMF3S,GAEArjC,EADGuqC,E,kXAPP,CAQIvqC,EARJ,mIASM,eAAC2rB,EAAD,cAAiB3nB,EAAjB,KAAgCsZ,EAAhC,WAAsC0hB,EAAtC,OAAkDD,EAAlD,kBAA0DxO,GAAqBga,EAC/ExZ,GAAwBvjB,EAAAA,EAAAA,QAAOme,GAC/BsqB,GAAmBC,EAAAA,EAAAA,KAAiCvqB,GACpDwqB,GAAqBC,EAAAA,EAAAA,KAAmCzqB,GACxD0qB,GAA0BC,EAAAA,EAAAA,KAAuCtyC,GACjEuyC,GAAuBvJ,EAAAA,EAAAA,KAAc3pC,EAAUgzC,GAC/C5zC,EAAQiwB,GACRkjB,EAAAA,EAAAA,KAAwBljB,EAAgB6jB,EAAqBV,kBAC7DlqB,EAAelpB,MACfoqC,GAAkB3+B,EAAAA,EAAAA,UAAQ,IAAM,CAACmoC,IAA0B,CAACA,IAE5DG,GAAgBtoC,EAAAA,EAAAA,UAAQ,KAAMuoC,EAAAA,EAAAA,KAAgCzX,EAAYmX,IAAqB,CACjGnX,EACAmX,IAGEO,GAA8BxoC,EAAAA,EAAAA,UAAQ,KAAMyoC,EAAAA,EAAAA,KAA+BhrB,EAAgBoT,IAAS,CACtGpT,EACAoT,IAGE6X,GAAiB1oC,EAAAA,EAAAA,UACnB,IACI+nC,GAAoB,CAChBp0C,WAAWg1C,EAAAA,EAAAA,KAAuBZ,GAClClZ,YAAY+Z,EAAAA,EAAAA,KAA2Bb,GACvC7Z,YAAazQ,EAAelpB,QAEpC,CAACwzC,EAAkBtqB,EAAelpB,QAGhCs0C,GAAoB7oC,EAAAA,EAAAA,UACtB,KACI8oC,EAAAA,EAAAA,KAAmChzC,GAC9ByC,KAAKs5B,IAAgB97B,EAAAA,EAAAA,KAAuBZ,EAAU08B,KACtD5sB,OAAOkC,EAAAA,WAChB,CAACrR,EAAeX,IAGd4zC,GAAsC/gC,EAAAA,EAAAA,cACvC6mB,IAAema,EAAAA,EAAAA,KAAgDlzC,EAAe+4B,IAC/E,CAAC/4B,IAGCmzC,GAAiBjhC,EAAAA,EAAAA,cAClBhT,IACOwvB,GACAqjB,EAAuBrjB,EAAehuB,KAE1C,MAAM0yC,EAAmBrmB,EAAsB1lB,QACzCgsC,IACDjK,EAAAA,EAAAA,SAAQlqC,IAAWA,EAAOwB,OAAQ4yC,EAAAA,EAAAA,KAAoCF,GACrEG,EAAgB,EAAH,GACZ5rB,EADY,CAEflpB,MAAOS,EAAOT,MACd+0C,UAAWH,EAAkBD,EAAiBI,WAAYC,EAAAA,EAAAA,KAAoCv0C,GAC9Fw0C,YAAaL,EACPD,EAAiBM,aACjBC,EAAAA,EAAAA,KAAqChsB,KAE/C4E,EAAkB,CAACjsB,MAAOizC,EAAevzC,cAAAA,EAAeU,IAAKinB,EAAejnB,MACxEgyC,GACArT,GAAkBuU,EAAAA,EAAAA,KAAWlB,MAGrC,CACI/qB,EACA3nB,EACA0uB,EACAnC,EACAwlB,EACA1S,EACAqT,IAIFmB,GAAiB3hC,EAAAA,EAAAA,cACnB,CAACg3B,EAAe4K,KACZ,MAAMC,GAAqB12B,EAAAA,EAAAA,MACvB41B,GACAlW,EAAAA,EAAAA,KAA2BzjB,GAFJ+D,CAGzBk1B,GACIyB,GAAYC,EAAAA,EAAAA,KAAsB,CACpC/K,cAAAA,EACA4K,UAAAA,EACAtW,eAAgBuW,EAChB10C,SAAAA,EACAia,KAAAA,IAEJ65B,EAAea,GACfhC,EAAuBgC,KAE3B,CACIf,EACA35B,EACAi5B,EACAlzC,EACA8zC,EACAnB,IAIFkC,GAA4BhqC,EAAAA,EAAAA,UAC9B,KACIiqC,EAAAA,EAAAA,KAAsB,CAClBn0C,cAAAA,EACA2nB,eAAAA,EACArO,KAAAA,EACA+hB,mBAAmBA,EAAAA,EAAAA,KAAkBL,EAAYrT,MAEzD,CAAC3nB,EAAe2nB,EAAgBrO,EAAM0hB,IAEpCoZ,GAA4BlqC,EAAAA,EAAAA,UAAQ,KAAMmqC,EAAAA,EAAAA,KAAuB/6B,EAAMi5B,IAAuB,CAChGj5B,EACAi5B,IAGEp+B,GAAe6xB,EAAAA,EAAAA,KAAgB0M,GAErC,OACI,kBAACzN,EAAA,EAAD,KACQsB,EADR,CAEI9nC,OAAO+B,EAAAA,EAAAA,KAAS/B,GAChBymC,mBAAoB6N,EACpB/X,WAAYwX,EACZnzC,SAAUA,IAEV,kBAAC6mC,EAAA,EAAD,CAAc/xB,aAAcA,GACxB,kBAACy0B,EAAA,EAAD,CACI1sC,UAAWQ,GAAAA,CAAWT,EAAOkH,KAAM,CAC/B,CAAClH,EAAOkvB,OAAQhX,GAAiBy+B,IAAkBlmB,EAAAA,EAAAA,KAAUkmB,EAAe/0C,aAEhFqB,OAAQ0zC,GAAkB,GAC1B/J,gBAAiBA,EACjBtjB,IAAK,GACLuT,2BAA4BA,EAC5Bxf,KAAMA,EACNlV,SAAU8vC,EAA4Bf,OAAiB/gC,EACvDq2B,SAAU2L,EAA4BP,OAAiBzhC,EACvD/S,SAAUA,EACVinC,gCAAiC2M,OAOrD9X,EAAmBxW,UAAnB,KACO2vB,EAAAA,IADP,CAEI5lB,eAAgB8Y,EAAAA,IAChBnoC,SAAUqrC,EAAAA,IACV5R,2BAA4BlU,IAAAA,OAC5BmtB,uBAAwBntB,IAAAA,KACxBotB,uBAAwBptB,IAAAA,KACxBya,kBAAmBza,IAAAA,OAGvB,SAAepZ,EAAAA,EAAAA,MAAK2vB,GCjMdqJ,EAAqB,CACvBuN,uBAAwB/jB,EAAAA,GAAAA,iBAAAA,QAAAA,cACxBgkB,uBAAwBhkB,EAAAA,GAAAA,iBAAAA,QAAAA,cACxBqR,kBAAmBrR,EAAAA,GAAAA,OAAAA,QAAAA,kBAKvB,GAAeyW,EAAAA,EAAAA,UAjBS,CAAC9hB,EAAO4jB,KAC5B,MAAM1oC,GAAYy1C,EAAAA,EAAAA,KAAoC/M,EAAS5e,gBAC/D,MAAO,CACH+G,gBAAgBhC,EAAAA,EAAAA,KAAU7uB,GAAaoV,EAAAA,GAAAA,UAAAA,kBAAsC0P,EAAO9kB,GAAa,KACjGwB,SAAU4T,EAAAA,GAAAA,UAAAA,YAAgC0P,GAC1CmW,2BAA4B7lB,EAAAA,GAAAA,UAAAA,8BAAkD0P,EAAO,CAAC,cAYtD6hB,EAAxC,CAA4DrJ,I,4sBCTrD,MCVDoZ,EAEF,GCHJ,MAEa/4C,GAAYC,E,SAAAA,IAAY2C,IAAD,CAChCiW,QAAS,CACLvR,MAAO,QAEX0xC,aAAc,CACVC,UAAW,WAEf7P,OAAQ,CACJpgC,QAAS,OACTwU,KAAM,EACN/T,WAAY,aACZ5G,aAAe,QAEnB,eAAgB,CACZ2a,KAAM,YAEV,yBAA0B,CACtB3T,WAAY,OACZb,QAAS,OACTS,WAAY,UAEhB,iBAAkB,CACdT,QAAS,OACTS,WAAY,SACZvG,YAAa,OAEjBgN,UAAW,CACPvG,YAAa,QAEjBI,OAAQ,CACJjH,MAAOF,EAAMG,QAAQK,KAAKoE,WAE9B4F,YAAa,CACT7F,OAAS,QAEb+hC,QAAS,CACLxmC,MAAOF,EAAMG,QAAQK,KAAKoE,UAC1BhE,eAAgB,gBAEpB+lC,YAAa,CACTh6B,UAAW,SACXzM,MAAOF,EAAMG,QAAQK,KAAKoE,e,gNCPlC,MAKMo4B,EAAwB,IAcxB,IAdyB,UAC3Bl/B,EAD2B,eAE3ByrB,EAF2B,cAG3B3nB,EAH2B,kBAI3Bq7B,EAJ2B,SAK3B8F,EAL2B,KAM3B7nB,EAN2B,aAO3B2mB,EAP2B,kBAQ3B3T,EAR2B,kBAS3BC,EAT2B,kBAU3B8S,EAV2B,2BAW3B1D,EAX2B,MAY3BhZ,GAEE,EADCxmB,E,kXACD,yMACF,MAAMF,EAAST,IACTspC,EAAoB,YAAVniB,EACV0iB,EAAmB,WAAV1iB,EACTuL,GAAiByR,EAAAA,EAAAA,KAAoBrmB,GACrC+c,GAAqBC,EAAAA,EAAAA,KAA0Bt2B,GAC/CM,GAAQo0C,EAAAA,EAAAA,IAA4B/sB,EAAgB0O,GACpDse,GAAYzY,EAAAA,EAAAA,KAAwB,CAACl8B,cAAAA,EAAesZ,KAAAA,IACpDs7B,GAAUT,EAAAA,EAAAA,KAAsB,CAACn0C,cAAAA,EAAe2nB,eAAAA,EAAgBrO,KAAAA,EAAM+hB,kBAAAA,IACtEoK,GAAYC,EAAAA,EAAAA,KAAwB,CAAC1lC,cAAAA,EAAe2nB,eAAAA,EAAgBrO,KAAAA,EAAM+hB,kBAAAA,IAC1EwZ,EAAaD,GAAW1mB,EACxB/Z,GAAe6xB,EAAAA,EAAAA,KAAgB7E,GAC/B2T,GAA+B31C,EAAAA,EAAAA,cAAawjB,IAC9CoyB,EAAAA,EAAAA,KAA0B/0C,GC7Da,EAC3C2iB,EACAgF,EACA/nB,KAEA,MAAMsO,EAAsC+E,EAAAA,GAAAA,UAAAA,iCACxC0P,EACA/iB,GAEJ,GAAIsO,EAAM,CACN,MAAM8mC,EAAWrtB,EAAejnB,KAC1B,QAACu0C,EAAD,4BAAUC,GJPE,EAACvyB,EAAOqyB,EAAkB9mC,KAAwC,MACxF,MAAMinC,EAA2CjnC,EAAK+mC,QAAQG,SAASr1C,IACnE,MAAMs1C,EAAapiC,EAAAA,GAAAA,UAAAA,iCAAqD0P,EAAO5iB,GAC/E,OAAOs1C,EAAWzqB,OAAOnoB,KAAKnC,GAAD,KACtBA,EADsB,CAEzBP,KAAAA,EACAu1C,oBAAqBD,EAAW9qB,SAAS+qB,2BAG3CC,EAAmBtiC,EAAAA,GAAAA,UAAAA,oBAAwC0P,GAC3D9kB,EAAYoV,EAAAA,GAAAA,UAAAA,aAAiC0P,GAC7C6yB,EAAcviC,EAAAA,GAAAA,UAAAA,4BAAgD0P,GAC9DtjB,EAAW4T,EAAAA,GAAAA,UAAAA,YAAgC0P,GAC3C8yB,GAAuBC,EAAAA,EAAAA,KAAyE,CAClGC,aAAcR,EACdH,SAAAA,EACAn3C,UAAAA,EACA03C,iBAAAA,EACAC,YAAAA,IAEEI,GAAuCv4B,EAAAA,EAAAA,MACzCw4B,EAAAA,KACAC,EAAAA,EAAAA,WAAU,KACVrzC,EAAAA,EAAAA,MAAI4a,EAAAA,EAAAA,OAAKyL,EAAAA,EAAAA,MAAK,CAAC,YAAa,QAASitB,EAAAA,OACrCC,EAAAA,EAAAA,SAAO,UAACT,EAAiB13C,UAAlB,aAAC,EAA6BkC,OACrC4wC,EAAAA,EAAAA,QAAOnzB,EAAAA,OACPjZ,EAAAA,KANyC8Y,CAQzC,CACIxf,UAAAA,EACAyB,YAAai2C,EACbC,YAAAA,EACAn2C,SAAAA,GAEJ21C,GAQEE,EAN8BhnC,EAAK+mC,QACpC9lC,QAAQ8mC,GAAYL,EAA2B/4B,MAAKq5B,EAAAA,EAAAA,KAAoBD,MACxExzC,KAAKwzC,GACiBhjC,EAAAA,GAAAA,UAAAA,iCAAqD0P,EAAOszB,GAC7D1rB,WAEsCpb,QAC3Dob,IAAckrB,EAAqB54B,MAAK,QAAC,KAAC9c,EAAD,MAAOO,GAAR,SAAmBA,GAASP,IAASwqB,EAAS7pB,SAgB3F,MAAO,CAACu0C,QAdQvqB,OAAOE,OACnB6qB,EAAqB9qB,QACjB,CAACwrB,EAAUtY,KAAX,kBACOsY,EADP,CAEI,CAACtY,EAAOyX,qBAAsB,CAC1Bv1C,KAAM89B,EAAOyX,oBACbc,YAAY7xC,EAAAA,EAAAA,MAAK,CAACs5B,EAAOv9B,UAAW,UAAA61C,EAAStY,EAAOyX,4BAAhB,eAAsCc,aAAc,KACnFjnC,OAAOR,SACPqb,YAGb,KAGSkrB,4BAAAA,IIpDkCmB,CAAW1zB,EAAOqyB,EAAU9mC,IACrE,UAACooC,GAAY,GAASrjC,EAAAA,GAAAA,UAAAA,8BAAkD0P,EAAOqyB,IAAa,GAC5FuB,GChB4BC,EDgBqBtB,GCftCzzC,OACftD,IAAAA,KAAU,mDAAoD,CAC5Ds4C,QANOC,EAMWF,EAAqB/zC,KAAI4a,EAAAA,EAAAA,OAAKxF,EAAAA,EAAAA,MAAK,UAAWpZ,GAAW,IAAGA,QALtFi4C,EAAM/rB,QAAO,CAAC7H,EAAQ6zB,EAAMn1C,IAAM,CAACshB,EAAQ6zB,GAAMtzC,KAAK7B,IAAMk1C,EAAMj1C,OAAS,EAAK,IAAGtD,IAAAA,KAAU,UAAY,SAMjGssB,WAA4C,IAAhC+rB,EAAqB/0C,OAAetD,IAAAA,KAAU,aAAeA,IAAAA,KAAU,gBAErF,GDWIy4C,EAAqB3jC,EAAAA,GAAAA,UAAAA,sBAA0C0P,GAC/Dk0B,GAAwBC,EAAAA,EAAAA,KAAwBF,EAAoBh3C,GACpE0W,IAAgBqR,MAAAA,GAAAA,EAAgB6P,YAAe7P,MAAAA,GAAAA,EAAgBrnB,OAC/DsI,EACD0N,GAAgBggC,GAAan4C,IAAAA,KAAU,yBACvCmY,GAAgBigC,GACjB,GACEQ,EAAwC,CAC1C9B,QAASsB,EAAuB,KAAOtB,EACvC1sC,WAAaguC,GAAwBjgC,GAAiBggC,EACtD1tC,YAAAA,EACAouC,iBAAkBH,EAAwB7B,EAAW,MAKzD,OAHIpsC,IACAmuC,EAAQz2C,MAAQ,MH9BH,EAAC00C,EAAU+B,KAChC,MAAME,EAAgB1C,EAAqBS,GAC3C,OAAIh9B,EAAAA,EAAAA,QAAO++B,EAASE,GACTA,IAEHj/B,EAAAA,EAAAA,QAAOi/B,MAAAA,OAAD,EAACA,EAAehC,QAAS8B,EAAQ9B,WACvC8B,EAAQ9B,QAAUgC,EAAchC,SAEpCV,EAAqBS,GAAY+B,EAC1BA,IGuBAG,CAAUlC,EAAU+B,GCjCOP,IAAAA,EAHvBE,GFoELS,CAAgCx0B,EAAOgF,EAAgB3nB,MAAAA,OAAxB,EAAwBA,EAAeU,KACtE,OASJ02C,EAAkB,KAChBjW,GACA9B,GAAkBuU,EAAAA,EAAAA,KAAWzS,KAI/BkW,IAAkBpX,GAAgB0U,IAAc30C,EAAc08B,YAC9DiJ,GAAoBb,KAAaxY,GAAqBmZ,EACtDrxB,IAAaD,EACbmjC,EAAexS,EAAU,CAACv8B,UAAU,GAAQ,GAElD,OACI,yBAAKrM,UAAWQ,GAAAA,CAAWT,EAAO2oC,OAAQ1oC,IACtC,kBAACgqC,EAAA,EAAD,CAAc/xB,aAAcA,EAAcjY,UAAWD,EAAOu4C,cACxD,yBACIt4C,UAAWQ,GAAAA,CACPT,EAAO,gBACP,CAAC,CAACA,EAAO6oC,SAAUA,GACnB,CAAC,CAAC7oC,EAAO,4BAA6B44C,IAE1C,iBAAe,0BAEdA,EACG,kBAAC0C,EAAA,EAAD,GACI/U,WAAWgV,EAAAA,EAAAA,KAAwBx3C,EAAcU,KACjDJ,MAAOA,EACP+1B,mBAAoBA,EACpB/hB,MAAOF,EACPhQ,UAAUiZ,EAAAA,EAAAA,OACNo6B,EAAAA,EAAAA,IAAkB9vB,EAAgB3nB,GAClCusB,EACA6qB,GAEJnU,WAAS,GACL6R,EACA34C,EACAm7C,IAGR,kBAACnhB,EAAA,EAAD,CACI71B,OAAO81B,EAAAA,EAAAA,KAAkBzO,GACzB0O,mBAAoBA,MAKpC,yBAAKn6B,UAAWD,EAAO,mBAClBopC,GACG,kBAAC,EAAA5nC,WAAD,CAAYC,QAAQ,UAAUxB,UAAWD,EAAO8oC,aAAhD,IACM5mC,IAAAA,KAAU,UADhB,KAIHk5C,GACG,kBAACj7C,EAAA,EAAD,CACIC,KAAMq7C,EAAAA,EACN3uC,QAASk3B,EACT1jC,KAAK,IACLL,UAAWQ,GAAAA,CAAWT,EAAOyP,UAAWzP,EAAOsJ,UAGtDo2B,GAA8BA,EAA2B,CAAC37B,cAAAA,EAAe2nB,eAAAA,IACzEge,GACG,kBAACvpC,EAAA,EAAD,CAAiBF,UAAWD,EAAOsJ,OAAQlJ,KAAMy0B,EAAAA,EAAY/nB,QArE5D,KACbujB,EAAkB,CAAC5rB,IAAKinB,EAAejnB,IAAKV,cAAAA,KACxC23C,EAAAA,EAAAA,KAAaxW,KAAcyW,EAAAA,IAAAA,QAC3BR,KAkEwF76C,KAAK,SAOzG6+B,EAAsBzW,UAAY,CAC9BzoB,UAAW0oB,IAAAA,OACX+C,eAAgB+O,EAAAA,IAChB12B,cAAey2B,EAAAA,IACf0K,SAAU0W,EAAAA,IACVxc,kBAAmBzW,IAAAA,KACnBjC,MAAOiC,IAAAA,MAAgB,CAAC,UAAW,WACnCtL,KAAMykB,EAAAA,IACNkC,aAAcrb,IAAAA,KACd0H,kBAAmB1H,IAAAA,KACnB2H,kBAAmB3H,IAAAA,KACnBya,kBAAmBza,IAAAA,KACnB+W,2BAA4B/W,IAAAA,MAGhC,SAAepZ,EAAAA,EAAAA,OAAKssC,EAAAA,EAAAA,GAAe1c,GA/HL,KAC1B,MAAMn/B,EAAST,IACf,OAAO,yBAAKU,UAAWD,EAAO2M,mB,kGGnClC,MAAM8rC,EAA8B,WAAiC,IAAhC/sB,EAAgC,uDAAf,IAAI,KAAC5nB,GAAU,uCACjE,MAAM,MAACO,EAAD,WAAQk3B,GAAc7P,EAC5B,OAAQ5nB,GACJ,KAAK43B,EAAAA,IAAAA,aACL,KAAKA,EAAAA,IAAAA,mBACL,KAAKA,EAAAA,IAAAA,8BACD,OAAOogB,EAAAA,EAAAA,KAAaz3C,GAExB,KAAKq3B,EAAAA,IAAAA,UACD,OAAQr3B,GAAS03C,EAAAA,IAAAA,MAAAA,YAAwB13C,IAAW,KACxD,KAAKq3B,EAAAA,IAAAA,gBACL,KAAKA,EAAAA,IAAAA,eACL,KAAKA,EAAAA,IAAAA,qBACD,OAAQr3B,GAAS,IAAIs3B,KAAKt3B,IAAW,KAEzC,KAAKq3B,EAAAA,IAAAA,sBACL,KAAKA,EAAAA,IAAAA,YACD,MAAO,CAACr3B,MAAAA,EAAOk3B,WAAAA,GAEnB,QACI,OAAOl3B,IAIb23C,EAA8B,CAACj4C,EAAek4C,KAChD,MAAM,KAACn4C,IAAQu2B,EAAAA,EAAAA,KAA0Bt2B,GACzC,OAAQD,GACJ,KAAK43B,EAAAA,IAAAA,aACL,KAAKA,EAAAA,IAAAA,mBACL,KAAKA,EAAAA,IAAAA,8BACD,OAAOugB,EAAYj0B,WACvB,KAAK0T,EAAAA,IAAAA,UACD,OAAQugB,GAAenvB,GAAAA,CAAOmvB,GAAajvB,OAAO,eAAkB,GACxE,KAAK0O,EAAAA,IAAAA,eACD,OAAQugB,GAAenvB,GAAAA,CAAOmvB,GAAajvB,UAAa,GAE5D,KAAK0O,EAAAA,IAAAA,qBACL,KAAKA,EAAAA,IAAAA,gBACD,OAAOugB,GAAeA,EAAYC,UACtC,QACI,OAAOD,GAAe,KAI5BT,GAAoB/H,EAAAA,EAAAA,QAAM,CAAC/nB,EAAgB3nB,EAAek4C,KAErD,CACH53C,MAFU23C,EAA4Bj4C,EAAek4C,GAGrDx3C,IAAKinB,EAAejnB,IACpBV,cAAAA,O,gDCpDD,MAAM89B,E,MAAsBlxB,GAAAA,cAGxB,O,gDCHJ,MAAMqwB,E,MAA0BrwB,GAAAA,cAA8B,O,kECuB9D,MAAMwrC,EAAuB,CAChC/4C,EACAU,EACAs4C,EACAC,KAEA,MAAM/uB,GAAYlM,EAAAA,EAAAA,MACd2rB,EAAAA,KACA8M,EAAAA,EAAAA,WAAU,KACV95C,EAAAA,EAAAA,OAAM,CAAC,aAAc,yBACrB20C,EAAAA,EAAAA,QAAOnzB,EAAAA,OACPwH,EAAAA,SACAC,EAAAA,EAAAA,QAAOszB,EAAAA,IAAIl7B,EAAAA,EAAAA,MAAKuN,EAAAA,QAAQ+lB,EAAAA,EAAAA,SAAOtf,EAAAA,EAAAA,QAAO,MAAO6Q,EAAAA,IAAAA,GAAAA,MAAlC7kB,CAA4D6kB,EAAAA,MANzD7kB,CAOhBhe,EAAUU,GAEZ,OAAOs4C,EAAY52C,OACb8nB,EAAUpa,QAAO,QAAC,IAACzO,GAAF,SAAW23C,EAAYx2C,SAASnB,MACjD6oB,EAAUpa,QAAO,QAAC,IAACzO,GAAF,SAAY43C,EAAYz2C,SAASnB,OAQ/C48B,EAAkB,CAC3B7B,EACAyB,KAEA6G,EAAAA,EAAAA,YAAU1mB,EAAAA,EAAAA,OAAKyL,EAAAA,EAAAA,MAAK,CAAC,WAAY,SAASjnB,EAAAA,EAAAA,UAAS02C,EAAAA,GAAI9c,IAAyByB,I,6GC5CpF,MAWA,EAXiB,IAAsB,IAArB,QAACn0B,GAAoB,EACnC,MAAM9M,GAAST,EAAAA,EAAAA,KAEf,OACI,kBAAC,EAAA8G,KAAD,CAAMuI,UAAU,SAASnN,QAAQ,UAAUxB,UAAWD,EAAO6C,KAAMiK,QAASA,EAASqnB,UAAU,QAC3F,kBAAC,IAAD,CAAiBl0B,UAAWD,EAAO,oBAClCkC,IAAAA,KAAU,gB,4GCJvB,MAaA,EAbiB,IAA+C,IAA9C,WAACmjC,EAAD,YAAaC,EAAb,QAA0Bx4B,GAAoB,EAC5D,MAAM9M,GAAST,EAAAA,EAAAA,KAEf,OACI,kBAAC,EAAA8G,KAAD,CAAMuI,UAAU,SAASnN,QAAQ,UAAUxB,UAAWD,EAAO6C,KAAMiK,QAASA,EAASqnB,UAAU,QAC3F,kBAAC,IAAD,CAAuBl0B,UAAWD,EAAO,oBACxCqlC,GAAcC,EACTpjC,IAAAA,KAAU,4DAA6D,CAACmjC,WAAAA,EAAYC,YAAAA,IACpFpjC,IAAAA,KAAU,gB,gCClBrB,MAAM3C,GAAYC,E,SAAAA,GAAW,CAChCqD,KAAM,CACF0F,QAAS,OACTc,UAAW,GAEf,iBAAkB,CACdtI,SAAU,W,qGCNlB,MAKA,EALmBhB,IACf,MAAM,cAACgE,GAAiBhE,EACxB,OCEW,MACC,aAACgE,GAA2B,IAAZhE,EAAY,uDAAJ,GAChC,OAAQgE,EAAcD,MAClB,KAAK43B,EAAAA,IAAAA,YACD,OAAO,kBAACuD,EAAA,EAAoBl/B,GAChC,KAAK27B,EAAAA,IAAAA,eACD,OAAO,kBAACwD,EAAA,EAAuBn/B,GACnC,QACI,OAAO,kBAACw8C,EAAA,EAAoBx8C,MDVPs/B,MAAMt7B,EAAehE,K,gJEmB1D,MA2DA,GAAewP,EAAAA,EAAAA,OA3DQ,IAUV,IAVW,UACpB+d,EADoB,OAEpBrqB,EAFoB,UAGpBmsB,EAHoB,UAIpBW,EAJoB,SAKpB3uB,EALoB,UAMpBnB,EANoB,IAOpBqpB,EAPoB,sBAQpBkW,EAAwBC,EAAAA,EARJ,UASpBhJ,GACS,EACT,MAAO4M,EAAoBC,IAAyB/4B,EAAAA,EAAAA,UAAS+e,GAAOse,EAAAA,GAC9D3G,GAAahzB,EAAAA,EAAAA,UAAQ,KAAMuuC,EAAAA,EAAAA,KAA6BlvB,EAAWrqB,EAAQwzB,IAAY,CACzFnJ,EACArqB,EACAwzB,KAEG0K,EAAyBC,IAAqBnzB,EAAAA,EAAAA,UACjD,KAAMozB,EAAAA,EAAAA,GAAgB7B,EAAuByB,IAC7C,CAACA,EAAYzB,IAGXid,EAA6Brb,EAAkBv7B,MAAM,EAAGw9B,GACxDiB,EAAWhb,GAAOmzB,EAA2Bj3C,OAAS47B,EAAkB57B,OACxE++B,EACFjb,GAAOmzB,EAA2Bj3C,QAAU47B,EAAkB57B,QAAU8jB,EAAMmzB,EAA2Bj3C,OAEvGi8B,EAAiB,CACnBxhB,QAAS8P,GAWb,OACI,yBAAK9vB,UAAWA,GACXmB,GAAY,kBAAC,IAAoBqgC,EAAiBrgC,GAClDq7C,EAA2BzzB,OAAOmY,GAAyB36B,KAAI,QAAC,SAAC8nB,EAAD,OAAWK,GAAZ,SAC5D,kBAAC,IAAD,CACI/nB,IAAK0nB,EAAS7pB,IACdV,cAAeuqB,EACfyB,UAAWA,EACXpB,OAAQA,EACR6H,QAAQ3J,EAAAA,EAAAA,MAAK,CAAC,SAAUyB,EAAS7pB,KAAMxB,EAAOurB,YAC9CY,UAAWA,EACXqH,UAAWA,OAGlB6N,GAAY,kBAAC,IAAD,CAAUx3B,QAtBZ,KACfw2B,EAAsBsE,EAAAA,MAsBjBrD,GAAY,kBAAC,IAAD,CAAUz3B,QAnBZ,KACfw2B,EAAsBha,W,4kBCzD9B,MAAMvoB,EAAW,OACXF,EAAa,OAEb67C,EAAe,CACjBC,SAAU,CACNp0C,QAAS,QACT5H,UAAW,OACX+nC,WAAY,OACZjmC,YAAa,OAEjB3B,MAAO,CACHG,WAAY,UAEhB4jC,OAAQ,CACJz7B,WAAY,MACZF,YAAa,OACbG,UAAW,OACXq/B,WAAY,IAIPnpC,GAAYC,EAAAA,EAAAA,GAAW,CAChCo9C,eAAgB,CACZx4B,WAAY,MACZD,cAAe,MACf,eAAgB,CACZA,cAAe,QAGvB04B,wBAAyB,CACrB14B,cAAe,MACf,eAAgB,CACZA,cAAe,UAKd24B,GAAmBt9C,EAAAA,EAAAA,GAAW,EAAD,CACtC4Y,QAAS,CACLrX,SAAAA,EACAF,WAAAA,EACAkc,KAAM,GAEVggC,qBAAsB,CAClBx0C,QAAS,OACTS,WAAY,QACZrI,UAAW,QAEf+wB,UAAW,CACPtoB,WAAY,MACZ3G,YAAa,MACbqO,aAAc,MACdvI,QAAS,SACTrH,SAAU,SACVD,WAAY,WACZ4D,UAAW,cAEfm4C,UAAW,CACPn2C,MAAO,OACPC,OAAQ,OACR1E,aAAc,OACd8G,YAAa,MACbE,WAAY,MACZ/G,MAAO,wBAERq6C,IAGMO,GAAqBz9C,EAAAA,EAAAA,GAAW,EAAD,CACxC4Y,QAAS,CACL7P,QAAS,OACT0b,cAAe,SACfjb,WAAY,aACZjI,SAAAA,EACAF,WAAAA,GAEJ6wB,UAAW,CACP,eAAgB,CACZtvB,aAAc,GAElBK,YAAa,MACbqO,aAAc,MACd1H,WAAY,MACZhH,aAAc,MACdnB,WAAY,WACZ4D,UAAW,cAEf2pB,WAAY,CACRgqB,UAAW,YAEZkE,EAtBqC,CAuBxCC,SAAU,EAAF,GACDD,EAAaC,SADZ,CAEJv6C,aAAc,W,sECpEtB,MAiDA,EAjDwB,IAQX,IARY,MACrBiC,EADqB,iBAErB8+B,EAFqB,cAGrBp/B,EAHqB,eAIrBisB,EAJqB,iBAKrBC,EALqB,UAMrBwG,EANqB,sBAOrB2N,GACS,EACT,MAAMpkC,EAAS88C,KACT,MAACt6C,GAASuB,EAEVN,GAAay5C,EAAAA,EAAAA,KAAmBn5C,GAChCL,EAAAA,IAAAA,mBACAA,EAAAA,IAAAA,iBAEN,OACI,yBAAKzD,UAAWQ,GAAAA,CAAWT,EAAO+8C,qBAAsBptC,EAAAA,IACpD,yBAAK1P,UAAWQ,GAAAA,CAAWT,EAAO28C,SAAU38C,EAAOoY,UAC/C,kBAACwsB,EAAA,EAAD,CACIpiC,MAAOA,EACPvC,UAAWQ,GAAAA,CAAWT,EAAOc,MAAOkvB,GACpC,iBAAe,2BAEnB,kBAAC8J,EAAA,EAAD,CACIC,YAAaoJ,EACbp/B,cAAeA,EACf9D,UAAWD,EAAO6kC,OAClB7K,WAAYoK,IAEhB,kBAACa,EAAA,EAAD,CACIhlC,UAAWQ,GAAAA,CAAWT,EAAO0xB,UAAWzB,GACxCvE,eAAgBrnB,EAChBN,cAAeA,EACf0yB,UAAWA,EACX0mB,SAAO,KAGf,kBAACC,EAAA,EAAD,CACI34C,IAAKJ,EAAMI,IACX3C,mBAAmBu7C,EAAAA,EAAAA,KAAwB55C,EAAY,CACnDgB,IAAKJ,EAAMI,MAEfhB,WAAYA,M,0BC3C5B,MAgFA,EAhF0B,IAYb,IAZc,IACvB6lB,EADuB,OAEvBqF,EAFuB,iBAGvBwU,EAHuB,mBAIvBxM,EAJuB,cAKvB5yB,EALuB,UAMvBqrB,EANuB,iCAOvBsH,EAPuB,eAQvB1G,EARuB,iBASvBC,EATuB,UAUvBwG,EAVuB,sBAWvB2N,GACS,EACT,MAAMpkC,EAASi9C,KACR5Z,EAAoBC,IAAyB/4B,EAAAA,EAAAA,UAAS+e,GAEvD+a,EAAY/a,EAAMqN,EAClB2N,EAAWD,GAAahB,EAAqB1M,EAC7C4N,EAAWF,GAAahB,GAAsB1M,GAC9C,MAACn0B,GAASuB,EAoBVygC,EAAc7V,EAAO9oB,MAAM,EAAGw9B,GAC9BqB,EAAoB/N,EAAqB0M,EAE/C,OACI,yBAAKpjC,UAAWD,EAAOoY,SACnB,yBAAKnY,UAAWD,EAAO28C,UACnB,kBAAC/X,EAAA,EAAD,CACIpiC,MAAOA,EACPvC,UAAWQ,GAAAA,CAAWT,EAAOc,MAAOkvB,GACpC,iBAAe,2BAEnB,kBAAC8J,EAAA,EAAD,CACIC,YAAaoJ,EACbp/B,cAAeA,EACf9D,UAAWD,EAAO6kC,OAClB7K,WAAYoK,KAGpB,yBAAKnkC,UAAWD,EAAOwuB,YAClBgW,EAAYh+B,KAAKnC,GACd,kBAAC4gC,EAAA,EAAD,CACIr+B,IAAKvC,EAAMI,IACXxE,UAAWQ,GAAAA,CAAWT,EAAO0xB,UAAWzB,GACxCvE,eAAgBrnB,EAChBN,cAAeA,EACf0yB,UAAWA,OAItB6N,GACG,kBAACc,EAAA,EAAD,CACIC,YAAY7b,EAAAA,EAAAA,KAAIF,EAAKob,GACrBY,YAAaZ,EACb53B,QAnDG,KACX6hB,EAAOnpB,OAASmxB,GAChBD,EAAiC,CAC7BtH,UAAAA,EACAzrB,iBAAkBI,EAAcU,IAChCqyB,kBAAmB/yB,EAAc6oB,KACjC+B,OAAAA,EACAoI,iBAAkBzN,IAI1Bga,EAAsBD,EAAqB/Z,MA2CtCib,GAAY,kBAACgB,EAAA,EAAD,CAAUz4B,QAxCZ,KACfw2B,EAAsBha,Q,0BCtD9B,MAaA,EAb+B,IAAyD,IAAxD,UAACrpB,EAAD,OAAY0uB,EAAZ,UAAoB5vB,EAApB,aAA+Bu+C,GAAyB,EACpF,OACI,yBAAKr9C,UAAWA,EAAW,iBAAgBq9C,GACtC3uB,EAAOnoB,KAAI,CAACnC,EAAOxC,IAChB,kBAAC,EAAA8E,SAAD,CAAUC,IAAKvC,GACX,kBAACtF,EAAD,CAAWsF,MAAOA,IACjBxC,EAAQ8sB,EAAOnpB,OAAS,GAAK,U,keCZ3C,MAAM+3C,GAAkB/9C,EAAAA,EAAAA,GAAW,CACtCg+C,gBAAiB,GACb32C,MAAO,eACJ42C,EAAAA,GAAgBC,EAAAA,GAAAA,kBAEvBzsB,gBAAiB,GACbpqB,MAAO,cACP9D,eAAgB,eAChBnC,QAAS,SACN68C,EAAAA,GAAgBC,EAAAA,GAAAA,oBCe3B,EAVa,IAAoB,IAAnB,MAACr5C,GAAkB,EAC7B,MAAMrE,EAASu9C,IACTn6C,GAAqBF,EAAAA,EAAAA,aAAY8T,EAAAA,GAAAA,UAAAA,cACjC,WAAC2mC,IAAcr6C,EAAAA,EAAAA,YAAWs6C,EAAAA,GAC1BC,GAAsBC,EAAAA,EAAAA,IAA4C,QAASz5C,EAAOs5C,GAClFI,GAAmBC,EAAAA,EAAAA,IAA6BH,GAEtD,OAAO,0BAAM59C,UAAWD,EAAO+9C,KAAoBE,EAAAA,EAAAA,KAAa76C,EAAUiB,KCL9E,EATc,QAAC,UAACpE,EAAD,OAAY0uB,GAAb,SACV,kBAAC,EAAD,CACIA,OAAQA,EACR1uB,UAAWA,EACXq9C,aAAa,yBACbv+C,UAAWm/C,K,yBCGnB,MAyBA,EAzBY,IAAoB,IAAnB,MAAC75C,GAAkB,EAC5B,MAAMrE,EAASu9C,IACT1R,GAAiB3oC,EAAAA,EAAAA,aAAY8T,EAAAA,GAAAA,UAAAA,WAC7BmnC,GAAoB76C,EAAAA,EAAAA,YAAW86C,EAAAA,GAC/BC,GAAwBn7C,EAAAA,EAAAA,aAAY8T,EAAAA,GAAAA,UAAAA,YACpC,WAAC2mC,IAAcr6C,EAAAA,EAAAA,YAAWs6C,EAAAA,GAC1BC,GAAsBC,EAAAA,EAAAA,IAA4C,OAAQz5C,EAAOs5C,GACjFI,GAAmBC,EAAAA,EAAAA,IAA6BH,GAEhD56C,EAASk7C,GAAaE,EAE5B,OACI,kBAACC,EAAA,EAAD,CACIr+C,UAAWD,EAAO+9C,GAClBz3C,MAAMi4C,EAAAA,EAAAA,KAAW,CACb1S,OAAAA,EACA2S,IAAKn6C,EACLzC,UAAWqB,EAAOw7C,YAAaC,EAAAA,EAAAA,KAAuBz7C,GAAUA,EAAOwB,OAG1EJ,IClBb,EATa,QAAC,UAACpE,EAAD,OAAY0uB,GAAb,SACT,kBAAC,EAAD,CACIA,OAAQA,EACR1uB,UAAWA,EACXq9C,aAAa,yBACbv+C,UAAW4/C,KCuCnB,EAtCwB,IAAoC,IAAnC,OAAChwB,EAAD,cAAS5qB,GAA0B,EACxD,MAAM/D,EAAS88C,KACT,MAACt6C,GAASuB,EA2BhB,OACI,yBAAK9D,UAAWQ,GAAAA,CAAWT,EAAO28C,SAAU38C,EAAOoY,WA1BnCnY,EA2BAD,EAAOg9C,UA1BhBj5C,EAAcU,MAAQwhC,EAAAA,IAAAA,KAAAA,IAA2B,kBAAC,IAAD,CAAShmC,UAAWA,IAAgB,MA2BxF,kBAAC2kC,EAAA,EAAD,CAAOpiC,MAAOA,EAAOvC,UAAWD,EAAOc,MAAO,iBAAe,2BAxBhDb,CAAAA,IACjB,OAAQ8D,EAAcU,KAClB,KAAKwhC,EAAAA,IAAAA,KAAAA,IACD,OAAO,kBAAC,EAAD,CAAMhmC,UAAWA,EAAW0uB,OAAQA,IAC/C,KAAKsX,EAAAA,IAAAA,MAAAA,IACD,OAAO,kBAAC,EAAD,CAAOhmC,UAAWA,EAAW0uB,OAAQA,IAEhD,QAEI,OACI,kBAACsW,EAAA,EAAD,CACIhlC,UAAWA,EACXyrB,eAAgB,CAACrnB,MAAOsqB,EAAO,IAC/B5qB,cAAeA,EACfo5C,SAAO,MAWlBzV,CAAY1nC,EAAO0xB,YA7BRzxB,IAAAA,GCKlB0nC,EACO,UADPA,EAES,YAFTA,EAGS,YAHTA,EAIO,UAiHb,GAAep4B,EAAAA,EAAAA,OAzFS,IAWX,IAXY,OACrBof,EADqB,cAErB5qB,EAFqB,UAGrBgsB,EAHqB,OAIrByG,EAAS,GAJY,UAKrBpH,EALqB,IAMrB9F,EAAMse,EAAAA,EANe,iCAOrBlR,EAPqB,eAQrB1G,EARqB,iBASrBC,EATqB,UAUrBwG,GACS,EACT,MAAMz2B,EAAST,IACTsoC,GAAgBC,EAAAA,EAAAA,WAAUtM,EAAAA,KAChC,IAAK7M,IAAWA,EAAOnpB,OACnB,OAAO,KAEX,MAAOuiC,EAAUhO,GAAe8N,EAAclZ,GACxCqZ,EAAgBvR,EAAY9H,EAASoZ,EACrC5E,EAAmB1M,EAAY,GAAKsD,EACpCmK,EAAYzN,EAAY,cAAgB,gBACxCE,GAAqB7a,EAAAA,EAAAA,SAAO8kB,EAAAA,EAAAA,KAAIsD,IAAYtoB,EAAAA,EAAAA,MAAKsoB,IAAYt4B,EAAAA,EAAAA,QAAOo8B,EAAcxiC,QAA7DsW,CAAsE0a,GAC3F4N,EAAwB5N,MAAAA,GAAAA,EAAQK,YAChCL,EAAOK,YAAcF,EACrBwM,EAAiB39B,OACjBo5C,EAAyC,IAAvBjoB,KAA6BsD,EAAAA,EAAAA,KAAmBl2B,GAyDxE,OACI,kBAAC49B,EAAA,EAAD,CAAiB1hB,QAAS8P,EAAW9vB,UAAWQ,GAAAA,CAAW,CAAC,CAACT,EAAO68C,yBAA0B9sB,KAC1F,yBAAK9vB,UAAWQ,GAAAA,CAAW,CAAC,CAACT,EAAO48C,iBAAkB7sB,KAzD/C,MAOX,QANapkB,EAAAA,EAAAA,MAAK,CACd,CAACw0B,EAAAA,KAAoBv0B,EAAAA,EAAAA,QAAO+7B,IAC5B,CAACQ,EAAAA,KAASv8B,EAAAA,EAAAA,QAAO+7B,IACjB,EAAC/7B,EAAAA,EAAAA,QAAOgzC,IAAkBhzC,EAAAA,EAAAA,QAAO+7B,IACjC,CAAC37B,EAAAA,GAAGJ,EAAAA,EAAAA,QAAO+7B,KAJFh8B,CAKV5H,IAEC,KAAK4jC,EACD,OACI,kBAAC,EAAD,CACItjC,MAAO2jC,EAAc,GACrB7E,iBAAkBA,EAClBiB,sBAAuBA,EACvBrgC,cAAeA,EACfisB,eAAgBA,EAChBC,iBAAkBA,EAClBwG,UAAWA,IAGvB,KAAKkR,EACD,OACI,kBAAC,EAAD,CACIhZ,OAAQqZ,EACR7E,iBAAkBA,EAClBxM,mBAAoBA,EACpByN,sBAAuBA,EACvBrgC,cAAeA,EACfqrB,UAAWA,EACX9F,IAAKA,EACLoN,iCAAkCA,EAClC1G,eAAgBA,EAChBC,iBAAkBA,EAClBwG,UAAWA,IAGvB,KAAKkR,EACD,OACI,oCACI,kBAAC/C,EAAA,EAAD,CAAOpiC,MAAOuB,MAAAA,OAAF,EAAEA,EAAevB,MAAO,iBAAe,2BACnD,kBAAC6lC,EAAA,EAAD,CACI3d,gBAAiBsd,EACjBjkC,cAAeA,EACfyyB,OAAQA,EACRpH,UAAWA,EACXsH,iCAAkCA,EAClCD,UAAWA,KAI3B,KAAKkR,EACD,OAAO,kBAAC,EAAD,CAAiBhZ,OAAQqZ,EAAejkC,cAAeA,MAMEijB,QCjI1EuhB,EAAqB,CACvB7R,iCAAkC3E,EAAAA,GAAAA,QAAAA,kCAKtC,GAAeyW,EAAAA,EAAAA,UAVS,CAAC9hB,EAAD,SAAQ,IAAC4C,GAAT,QAA+B,CACnDA,IAAKA,GAAOtS,EAAAA,GAAAA,UAAAA,oBAAwC0P,MAShB6hB,EAAxC,CAA4DzY,I,mKCbrD,MAAMvwB,GAAYC,E,SAAAA,GAAW,CAChCq/C,iBAAkB,CACdx1C,UAAW,OAEfy1C,eAAgB,CACZv2C,QAAS,OACT5H,UAAW,QAEf6B,MAAO,CACHzB,SAAU,OACVF,WAAY,OACZiU,cAAe,SACfsP,WAAY,MACZhb,WAAY,OAEhB21C,OAAQ,CACJhiC,KAAM,K,kJCQd,MAAMisB,EAAmB,IAUnB,IAVoB,mBACtBC,EADsB,eAEtBvd,EAFsB,MAGtBlpB,EACA3C,SAAUspC,GAAe,EAJH,SAKtB/nC,EALsB,UAMtBq1B,EANsB,cAOtB1yB,EAPsB,cAQtBi7C,EARsB,UAStBC,GACE,EACF,MAAMj/C,EAAST,IACT2/C,GAAgBC,EAAAA,EAAAA,KAChB16C,EAAMinB,EAAejnB,KACpB5E,EAAU0pC,IAAeh/B,EAAAA,EAAAA,WAAS,IACnC,sBAAC60C,EAAwB,GAAzB,qBAA6BC,IAAwB/7C,EAAAA,EAAAA,YAAWg8C,EAAAA,IACtEn0C,EAAAA,EAAAA,YAAU,KACNo+B,EAAYJ,KACb,CAACA,IACJ,MAAMU,GAAoBZ,GAAsB,IAAIroB,MAAM7c,IAAkBs8B,EAAAA,EAAAA,KAAoBt8B,KAC1F+lC,GAAsB77B,EAAAA,EAAAA,UACxB,I,8UAAM,CAAN,CACIugB,WAAYqb,EAAmB,KAAOne,EAAernB,MACrD82B,oBAAqB0O,EAAmBne,EAAernB,MAAQ,OAC3D87B,EAAAA,EAAAA,KAAmBp8B,GAAiB2nB,EAAernB,MAAQ,KAEnE,CAACqnB,EAAgBme,EAAkB9lC,IAGjCN,GAAay5C,EAAAA,EAAAA,KAAmBn5C,GAChCL,EAAAA,IAAAA,mBACAA,EAAAA,IAAAA,iBAEN,OACI,yBAAKzD,UAAWD,EAAO6+C,kBACnB,yBAAK5+C,UAAWQ,GAAAA,CAAWT,EAAO8+C,eAAgBnvC,EAAAA,IAC9C,kBAACq6B,EAAA,EAAD,CAAmBl9B,QAAS,IAAMy8B,GAAallC,IAAWA,IAAQxE,SAAUA,IAC3Em/C,EACG,kBAACA,EAAD,CAAej7C,cAAeA,EAAe2nB,eAAgBA,IAE7D,oCACI,kBAAC,EAAAlqB,WAAD,CACIoN,UAAU,OACVnN,QAAQ,QACRJ,QAAS,CAACk+C,MAAOv/C,EAAOwC,OACxBvC,UAAWQ,GAAAA,CAAW,CAClB,CAAC4+C,GAAuBD,EAAsBx5C,SAAS8lB,EAAejnB,KACtE,CAACy6C,EAAcM,WAAWhkB,EAAAA,EAAAA,KAAK9P,KAEnC,iBAAe,kCAEdlpB,GAEL,yBAAKvC,UAAWD,EAAO++C,SACtBE,GAAa,kBAACA,EAAD,CAAWl7C,cAAeA,EAAe2nB,eAAgBA,IACvE,kBAAC0xB,EAAA,EAAD,CACI34C,IAAKinB,EAAejnB,IACpB3C,mBAAmBu7C,EAAAA,EAAAA,KAAwB55C,EAAY,CACnDgB,IAAKinB,EAAejnB,MAExBhB,WAAYA,MAK3B5D,GACG,kBAACy/B,EAAA,EAAD,CACIhS,UAAW2b,EACXhmC,OAAQ6mC,EACR/Z,WAAW,EACXX,UAAW3qB,EACXgyB,UAAWA,GAEVr1B,KAOrB4nC,EAAiBtgB,UAAY,CACzBtnB,SAAUunB,IAAAA,KACVnmB,MAAOmmB,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,OAC9CsgB,mBAAoBtgB,IAAAA,QAAkB6R,EAAAA,KACtC9O,eAAgB/C,IAAAA,UAAoB,CAAC+R,EAAAA,IAA0BC,EAAAA,MAC/D96B,SAAU8oB,IAAAA,KACV8N,UAAW9N,IAAAA,KACX5kB,cAAey2B,EAAAA,IACfwkB,cAAer2B,IAAAA,YACfs2B,UAAWt2B,IAAAA,aAGf,W,+ICtHO,MCQMppB,GAAYC,E,SAAAA,IAAY2C,IAAD,CAChC6W,MAAO,IAAwD,IAAvD,YAAC0e,EAAD,YAAcxe,EAAd,WAA2BD,GAA4B,EAC3D,MAAO,CACH/P,YAAawuB,EACb7wB,MAAOoS,EACPnS,OAAQoS,EACR9I,OAAQ,UACR,eAAgB,CACZlH,YAAa,KAIzBu2C,qBAAsB,CAClB33C,SAAU,WACV,WAAY,CACR9B,QAAS,KACT8B,SAAU,WACVyI,KAAM,EACND,IAAK,EACLE,MAAO,EACPC,OAAQ,EACRkM,WAAa,SAAOhF,EAAAA,EAAAA,KD7BL,6KC8BfjY,gBAAiB+9C,EAAAA,GAAgBC,EAAAA,GAAAA,iBAAmCh+C,gBACpEuI,cAAe,SAGvBy3C,qBAAsB,CAClB53C,SAAU,WACV,WAAY,CACR9B,QAAS,KACT8B,SAAU,WACVyI,KAAM,EACND,IAAK,EACLE,MAAO,EACPC,OAAQ,EACR/Q,gBAAiB+9C,EAAAA,GAAgBC,EAAAA,GAAAA,iBAAmCh+C,gBACpEuI,cAAe,SAGvBgpB,gBAAiB,IAA2C,IAA1C,WAAChY,EAAD,YAAaC,GAA6B,EACxD,MAAO,CACHrS,MAAOoS,EACPnS,OAAQoS,EACRwG,UAAW,aACXlY,QAAU,aAAwBi2C,EAAAA,GAAgBC,EAAAA,GAAAA,iBAAmCr7C,QACrFs9C,cAAgB,SAGxBnC,gBAAiB,IAA2C,IAA1C,WAACvkC,EAAD,YAAaC,GAA6B,EACxD,MAAO,CACHrS,MAAOoS,EACPnS,OAAQoS,EACRwG,UAAW,aACXlY,QAAU,aAAwBi2C,EAAAA,GAAgBC,EAAAA,GAAAA,iBAAmCr7C,QACrFs9C,cAAgB,SAGxBC,gBAAiB,IAA2C,IAA1C,WAAC3mC,EAAD,YAAaC,GAA6B,EACxD,MAAO,CACHrS,MAAOoS,EACPnS,OAAQoS,EACRwG,UAAW,aACXlY,QAAU,aAAwBi2C,EAAAA,GAAgBC,EAAAA,GAAAA,iBAAmCr7C,QACrFs9C,cAAgB,SAGxBzpB,OAAQ,CACJ7zB,MAAOF,EAAMG,QAAQM,QAAQE,KAC7B/B,SAAU,OACVF,WAAY,OACZiU,cAAe,EACflU,QAAS,WACTu1B,UAAW,SACXj1B,SAAU,SACVD,WAAY,SACZE,aAAc,gBCPtB,EArD4B,IAQf,IARgB,cACzB4C,EADyB,gBAEzB2mB,EAAkB,GAFO,OAGzB8L,EAHyB,UAIzBpH,EAJyB,iCAKzBsH,EALyB,UAMzBD,EANyB,UAOzBH,EAAYC,EAAAA,IACH,EACT,MAAMv2B,EAAST,EAAU+2B,IACnB,WAACqnB,IAAcr6C,EAAAA,EAAAA,YAAWs6C,EAAAA,GA6BhC,OACI,kBAACvV,EAAA,EAAD,CACI3d,gBAAiBA,EACjB3mB,cAAeA,EACfqyB,YA/ByB,IAAgC,IAA/B,yBAACqD,GAA8B,EAwB7D,OAvBqB/H,IACjB,MAAMha,GAAM8T,EAAAA,EAAAA,KAAgCkG,IACtC,IAACjtB,GAAOitB,EACRmuB,GAAkBC,EAAAA,EAAAA,IAA0Br7C,EAAKk5C,GACjDoC,GAA6B/B,EAAAA,EAAAA,IAA6B6B,GAChE,OACI,yBACI5/C,UAAWQ,GAAAA,CAAWT,EAAOgZ,MAAO,CAChC,CAAChZ,EAAO+/C,EAA6B,UAAWA,IAEpDn5C,IAAKnC,EACL,iBAAe,0BAEf,kBAAC8mB,EAAA,EAAD,CACIze,QAAS,IAAM2sB,EAAyBh1B,GACxCxE,UAAWD,EAAO+/C,GAClBroC,IAAKA,EACLpX,KAAM,CAAC2Y,WAAYqd,EAAUrd,WAAYC,YAAaod,EAAUpd,kBAc5Eod,UAAWA,EACXI,iCAAkCA,EAClCF,OAAQA,EACRpH,UAAWA,EACXqH,UAAWA,M,ulBCpEvB,MA0BA,GA1Bej3B,E,SAAAA,GAAW,CACtBgD,MAAO,CACHO,eAAgB,QAEpB68C,gBAAiB,EAAF,CACX/4C,MAAO,cACPjG,QAAS,QACTwI,WAAY,QACTq0C,EAAAA,GAAgBC,EAAAA,GAAAA,kBAEvBF,gBAAiB,EAAF,CACX32C,MAAO,eACJ42C,EAAAA,GAAgBC,EAAAA,GAAAA,kBAEvBzsB,gBAAiB,EAAF,CACXpqB,MAAO,cACP9D,eAAgB,eAChBnC,QAAS,QACTwI,WAAY,QACTq0C,EAAAA,GAAgBC,EAAAA,GAAAA,kBAEvBsC,gBAAiB,CACb52C,WAAY,S,gNCdpB,MAAM61B,EAAkB,IAAoD,IAAnD,eAACvT,EAAD,cAAiB3nB,GAAkC,EAAhB7D,E,kXAAgB,uCACxE,MAAMF,EAAST,KAET,WAACo+C,IAAcr6C,EAAAA,EAAAA,YAAWs6C,EAAAA,GAE1BqC,GAAiBhyC,EAAAA,EAAAA,UAAQ,KAC3B,MAAM4vC,GAAsBiC,EAAAA,EAAAA,IAA0Bp0B,EAAejnB,IAAKk5C,GACpEoC,GAA6B/B,EAAAA,EAAAA,IAA6BH,GAE1Dr7C,EAAQkpB,EAAelpB,MACvBkpB,EAAelpB,OACfmzC,EAAAA,EAAAA,KAAwBjqB,EAAgB3nB,EAAc6xC,kBAE5D,OACI,kBAACjY,EAAA,EAAD,CAAiB19B,UAAWD,EAAOggD,gBAAiB37C,MAAOqnB,EAAgB3nB,cAAeA,GACtF,kBAAC,EAAAP,IAAD,CAAKoL,UAAU,OAAO3O,UAAWQ,GAAAA,CAAWT,EAAO+/C,GAA6B//C,EAAOwC,SAClF+B,EAAAA,EAAAA,KAAS/B,OAIvB,CAACm7C,EAAY39C,EAAQ0rB,EAAgB3nB,IAExC,OACI,kBAACilC,EAAA,EAAD,GACIxmC,MAAOy9C,EACPv0B,eAAgBA,EAChBud,oBAAoBiX,EAAAA,EAAAA,KAA8B,GAAIn8C,GACtDA,cAAeA,GACX7D,KAKhB++B,EAAgBvW,UAAYmtB,EAAAA,IAE5B,SAAetmC,EAAAA,EAAAA,MAAK0vB,I,kmBC3CpB,MAwBA,GAxBez/B,E,SAAAA,IAAY2C,IAAD,CACtBg+C,kBAAmB,CACf/2C,WAAY,MACZ/G,MAAOF,EAAMG,QAAQK,KAAKC,SAE9Bg9C,gBAAiB,EAAF,CACX/4C,MAAO,cACPjG,QAAS,QACTwI,WAAY,QACTq0C,EAAAA,GAAgBC,EAAAA,GAAAA,kBAEvBF,gBAAiB,EAAF,CACX32C,MAAO,eACJ42C,EAAAA,GAAgBC,EAAAA,GAAAA,kBAEvBzsB,gBAAiB,EAAF,CACXpqB,MAAO,cACP9D,eAAgB,eAChBnC,QAAS,QACTwI,WAAY,QACTq0C,EAAAA,GAAgBC,EAAAA,GAAAA,sB,gNCJ3B,MAAMxe,EAAqB,IAAsE,IAArE,eAACxT,EAAD,SAAiBtoB,EAAjB,cAA2BW,EAA3B,OAA0C8nC,GAA2B,EAAhB3rC,E,kXAAgB,2DAC7F,MAAMF,EAAST,IACT2/C,GAAgBC,EAAAA,EAAAA,KAChBiB,GAAe/I,EAAAA,EAAAA,KAAoC3rB,GACnD20B,GAAoBpyC,EAAAA,EAAAA,UAAQ,KAAMiyC,EAAAA,EAAAA,KAA8B98C,EAAUW,IAAgB,CAC5FA,EACAX,KAGE,WAACu6C,IAAcr6C,EAAAA,EAAAA,YAAWs6C,EAAAA,GAE1BzhB,GAAcluB,EAAAA,EAAAA,UAAQ,KACxB,MAAM4vC,GAAsBiC,EAAAA,EAAAA,IAA0Bp0B,EAAejnB,IAAKk5C,GACpEoC,GAA6B/B,EAAAA,EAAAA,IAA6BH,GAEhE,OACI,kBAACS,EAAA,EAAD,CACIh4C,MAAM+T,EAAAA,EAAAA,KAAasjC,IAAc1R,EAAAA,EAAAA,KAAc,CAACJ,OAAAA,EAAQpnC,IAAK27C,SAAiBjqC,EAC9ElW,UAAWQ,GAAAA,CAAWT,EAAO+/C,GAA6B,CACtD,CAACb,EAAcM,WAAWhkB,EAAAA,EAAAA,KAAK9P,OAGlCnnB,EAAAA,EAAAA,KAASmnB,EAAelpB,OACxBkpB,EAAey0B,mBACZ,0BAAMlgD,UAAWD,EAAOmgD,mBAAoBz0B,EAAey0B,sBAIxE,CAACz0B,EAAgBiyB,EAAY9R,EAAQuU,EAAcpgD,EAAQk/C,EAAcM,UAE5E,OACI,kBAACxW,EAAA,EAAD,GACIC,mBAAoBoX,EACpB30B,eAAgBA,EAChBlpB,MAAO25B,EACPp4B,cAAeA,GACX7D,KAKhBg/B,EAAmBxW,UAAY2vB,EAAAA,IAE/B,SAAe9oC,EAAAA,EAAAA,MAAK2vB,G,eC1DpB,MASA,GAAesJ,EAAAA,EAAAA,UATU9hB,IACd,CACHtjB,SAAU4T,EAAAA,GAAAA,UAAAA,YAAgC0P,GAC1CmlB,OAAQ70B,EAAAA,GAAAA,UAAAA,UAA8B0P,MAM9C,CAAwCwY,I,kmBCVjC,MAAM3/B,GAAYC,E,SAAAA,GAAW,CAChC+B,KAAM,CACFgH,QAAS,OACTS,WAAY,QACZmH,eAAgB,iBAEpBmwC,kBAAmB,CACfx5C,OAAQ,OACRoC,YAAa,QAEjBwiB,eAAgB,CACZ3O,KAAM,EACNlY,UAAW,aAEf+6C,gBAAiB,EAAF,CACX/4C,MAAO,cACPjG,QAAS,QACTwI,WAAY,QACTq0C,EAAAA,GAAgBC,EAAAA,GAAAA,iBAJR,CAKX,QAAS,CACLr7C,MAAOo7C,EAAAA,GAAgBC,EAAAA,GAAAA,iBAAmCr7C,SAGlEm7C,gBAAiB,EAAF,CACX32C,MAAO,eACJ42C,EAAAA,GAAgBC,EAAAA,GAAAA,iBAFR,CAGX,QAAS,CACLr7C,MAAOo7C,EAAAA,GAAgBC,EAAAA,GAAAA,iBAAmCr7C,SAGlE4uB,gBAAiB,EAAF,CACXpqB,MAAO,cACPjG,QAAS,QACTwI,WAAY,OACZrG,eAAgB,gBACb06C,EAAAA,GAAgBC,EAAAA,GAAAA,iBALR,CAMX,QAAS,CACLr7C,MAAOo7C,EAAAA,GAAgBC,EAAAA,GAAAA,iBAAmCr7C,SAGlEk+C,mBAAoB,CAChB15C,MAAO,iB,0BCdf,MAiEA,EAjEwB,IAAuE,IAAtE,UAAC5G,EAAD,cAAY8D,EAAgB,KAA5B,eAAkC2nB,EAAlC,QAAkDyxB,GAAoB,EAC3F,MAAMn9C,EAAST,IACT2/C,GAAgBC,EAAAA,EAAAA,MAChB,sBAACC,EAAwB,GAAzB,qBAA6BC,IAAwB/7C,EAAAA,EAAAA,YAAWg8C,EAAAA,IAChE,WAAC3B,IAAcr6C,EAAAA,EAAAA,YAAWs6C,EAAAA,GAC1BC,GAAsBiC,EAAAA,EAAAA,IAA0Bp0B,EAAejnB,IAAKk5C,GACpEI,GAAmBC,EAAAA,EAAAA,IAA6BH,GAEhD2C,EACF,kBAACtmB,EAAA,EAAD,CACI71B,OAAO81B,EAAAA,EAAAA,KAAkBzO,GACzB0O,oBAAoBC,EAAAA,EAAAA,KAA0Bt2B,KAIhDN,GAAay5C,EAAAA,EAAAA,KAAmBn5C,GAChCL,EAAAA,IAAAA,mBACAA,EAAAA,IAAAA,iBAEN,OAAOy5C,GAAWY,EACd,yBACI99C,UAAWQ,GAAAA,CAAWR,EAAW,CAC7B,CAACo/C,GAAuBD,EAAsBx5C,SAAS8lB,EAAejnB,QAG1E,kBAACk5B,EAAA,EAAD,CACIt5B,MAAOqnB,EACP3nB,cAAeA,EACf6C,IAAK8kB,EAAejnB,IACpBxE,UAAWQ,GAAAA,CAAW,CAAC,CAACT,EAAOugD,qBAAsBpD,KAErD,0BACIl9C,UAAWQ,GAAAA,CAAWT,EAAO+9C,GAAmB,CAAC,CAACmB,EAAcM,WAAWhkB,EAAAA,EAAAA,KAAK9P,KAChF,iBAAe,0BAEd80B,KAKb,yBACIvgD,UAAWQ,GAAAA,CAAWR,EAAWD,EAAOuB,KAAMoO,EAAAA,EAAoC,CAC9E,CAAC0vC,GAAuBD,EAAsBx5C,SAAS8lB,EAAejnB,QAG1E,kBAACk5B,EAAA,EAAD,CAAiBt5B,MAAOqnB,EAAgB3nB,cAAeA,EAAe6C,IAAK8kB,EAAejnB,KACtF,0BACIxE,UAAWQ,GAAAA,CAAWT,EAAO0rB,eAAgB,CAAC,CAACwzB,EAAcM,WAAWhkB,EAAAA,EAAAA,KAAK9P,KAC7E,iBAAe,0BAEd80B,IAGT,kBAACpD,EAAA,EAAD,CACIn9C,UAAWD,EAAOsgD,kBAClB77C,IAAKinB,EAAejnB,IACpB3C,mBAAmBu7C,EAAAA,EAAAA,KAAwB55C,EAAY,CACnDgB,IAAKinB,EAAejnB,MAExBhB,WAAYA,O,iCCvFrB,MAAM07C,GAAmB3/C,E,SAAAA,IAAY2C,IAAD,CACvCq9C,QAASr9C,EAAMs+C,c,qFCoBZ,IAAK/C,G,SAAAA,GAAAA,EAAAA,gBAAAA,kBAAAA,EAAAA,gBAAAA,kBAAAA,EAAAA,gBAAAA,kB,CAAAA,IAAAA,EAAAA,KAML,MAAMD,EAAkD,CAC3D,CAACC,EAAkBF,iBAAkB,CACjCn7C,MAAO,WAEX,CAACq7C,EAAkBkC,iBAAkB,CACjClgD,gBAAiB,0BACjB2C,MAAO,WAEX,CAACq7C,EAAkBzsB,iBAAkB,CACjCvxB,gBAAiB,wBACjB2C,MAAO,YAIF27C,EAAgCl6C,IACzC,OAAQA,GACJ,IAAK,mBACD,OAAO45C,EAAkBkC,gBAC7B,IAAK,wBACL,IAAK,mBACD,OAAOlC,EAAkBF,gBAC7B,IAAK,mBACL,IAAK,mBACD,OAAOE,EAAkBzsB,gBAC7B,QACI,MAAO,KAIbyvB,EAAsB,IAEtBC,GAAYv/B,EAAAA,EAAAA,OAAKna,EAAAA,EAAAA,OAAMy5C,IAAsBre,EAAAA,EAAAA,gBAAcue,EAAAA,EAAAA,KAAI,GAAI,WAEnEpf,GAAepgB,EAAAA,EAAAA,OAAKna,EAAAA,EAAAA,OAAMy5C,IAAsB76C,EAAAA,EAAAA,OAAM,GAAI,IAAIuB,EAAAA,EAAAA,MAAKs5C,IAEnEG,GAAkCpN,EAAAA,EAAAA,QAAM,CAAChvC,EAAaq8C,KACjDn1C,EAAAA,EAAAA,MAAK,CACR,EAACi1B,EAAAA,EAAAA,KAAIn8B,IAAMmX,EAAAA,EAAAA,MAAKnX,IAChB,CAAC,IAAMk8C,EAAUl8C,GAAMo8C,EAAgCrf,EAAa/8B,MAFjEkH,CAGJm1C,KAGDC,EAAuBt8C,IAAgB2c,EAAAA,EAAAA,MAAKqM,EAAAA,MAAMmnB,EAAAA,EAAAA,MAAIzwC,EAAAA,EAAAA,YAAWM,EAAMi8C,KAEhEZ,EAA4B,WAAuD,IAAtDr7C,EAAsD,uDAAhD,GAAIq8C,EAA4C,uDAAP,GACrF,MAAMp6B,EAAQm6B,EAAgCp8C,EAAKq8C,GACnD,OAAIv/B,EAAAA,EAAAA,OAAMmF,GACCq6B,EAAoBt8C,EAApBs8C,CAAyBD,GAAW,mBAAqB,GAE7Dp6B,GAGEo3B,EAA8C,SACvDlxB,EACAvoB,GAFuD,UAGvDy8C,EAHuD,uDAGlB,GAHkB,OAItDA,MAAAA,GAJsD,UAItDA,EAAUl0B,UAJ4C,aAItD,EAAkBvoB,K,gDCnFhB,MAAMo7B,EAA2B,CAACwG,EAAAA,IAAAA,MAAAA,IAA2BA,EAAAA,IAAAA,KAAAA,M,iCCF7D,MAAMt2B,EAAqC,mC,4ECG3C,MAAMqxC,EAAoBrwC,IAAAA,cAAoB,CACjDsP,SAAS,EACTghC,mBAAoB,IAGxBD,EAAkBE,SAASx4B,UAAY,CACnCrkB,MAAOskB,IAAAA,MAAgB,CACnB1I,QAAS0I,IAAAA,KACTs4B,mBAAoBt4B,IAAAA,UAI5Bq4B,EAAkB1hD,YAAc,qB,gDCbzB,MAAMg4B,E,MAAiC3mB,GAAAA,eAAoB,GAElE2mB,EAA+Bh4B,YAAc,kC,+CCD7C,MAAM8b,EAAO,OAEA/Q,E,MAAuBsG,GAAAA,cA6BzB,CACCwwC,SAAU,GACVvuC,YAAa,KACbD,eAAgB,KAChBE,WAAYuI,EACZgmC,YAAa,IAAM,IAAIjkB,QAAc/hB,GACrCimC,iBAAkBjmC,EAClBnR,cAAe,IAAM,IAAIkzB,QAAc/hB,GACvCjR,YAAa,IAAM,IAAIgzB,QAAc/hB,GACrCpR,YAAa,IAAM,IAAImzB,QAAc/hB,GACrCxN,cAAewN,EACfvN,aAAcuN,EACdtI,oBAAqBsI,EACrBtN,cAAesN,EACflR,SAAS,EACTyH,SAAS,EACT2vC,UAAW,KACXpyC,YAAakM,EACbhR,UAAW,IAAM,IAAI+yB,QAAc/hB,KAG/C/Q,EAAqB/K,YAAc,wB,gDCpD5B,MAAMiE,E,MAAqBoN,GAAAA,cAAiC,IAEnEpN,EAAmBjE,YAAc,sB,+CCF1B,MAAM8+C,E,MAAgBztC,GAAAA,cAA4B,MAEzDytC,EAAc9+C,YAAc,iB,gDCHrB,MAAMggD,E,MAA2B3uC,GAAAA,cAGrC,CACCyuC,sBAAuB,GACvBC,qBAAsB,KAG1BC,EAAyBhgD,YAAc,4B,gDCPhC,MAAMs+C,E,MAAqBjtC,GAAAA,cAAiC,CAC/DgtC,gBAAYxnC,EACZqY,gBAAYrY,EACZ6vB,WAAO7vB,EACP2wB,UAAM3wB,IAGVynC,EAAmBt+C,YAAc,sB,gDCP1B,MAAMw+B,E,MAA2BntB,GAAAA,cAAyC,K,gDCD1E,MAAM6C,E,MAA2B7C,GAAAA,cAA8B,IAEtE6C,EAAyBlU,YAAc,4B,gDCDhC,MAAM0F,E,MAAe2L,GAAAA,cAA4B,IAExD3L,EAAa1F,YAAc,gB,0DCD3B,IAAIiiD,EAAY,EAET,MAAMliD,EAAgB,KACzB,MAAMmiD,GAAgBj0C,EAAAA,EAAAA,SAAO,IACvB,QAAC0S,EAAD,mBAAUghC,EAAqB,IAAK39C,EAAAA,EAAAA,YAAW09C,EAAAA,IAC9CS,EAAaC,IAAkBn3C,EAAAA,EAAAA,WAAU0V,GAAYA,GAAWshC,EAAYN,GAC/EO,EAAcp2C,SACdm2C,IAEJ,MAAMI,GAAWp0C,EAAAA,EAAAA,UAWjB,OAVApC,EAAAA,EAAAA,YAAU,KAEN,GADAo2C,KACKE,EAID,OAHAE,EAASv2C,QAAUytB,YAAW,KAC1B6oB,GAAe,KAChB,GACI,IAAME,aAAaD,EAASv2C,WAExC,IACHo2C,EAAcp2C,SAAU,EACjBq2C,I,yQCtBX,MA0BA,EA1B8D1hD,GAEtD,2BACI8G,MAAO,GACPC,OAAQ,GACRkJ,QAAQ,YACRC,MAAM,6BACNqM,WAAW,gCACPvc,GAEJ,8BACI,0BACImQ,EAAE,2HACFzH,GAAG,qBAGX,uBAAG3I,UAAU,mBAAmBgZ,OAAO,OAAOC,YAAa,EAAGjJ,KAAK,OAAOC,SAAS,WAC/E,0BAAMtH,GAAG,kBAAkBqH,KAAK,QAC5B,yBAAKyM,UAAU,sBAEnB,0BAAM1M,YAAa,IAAMC,KAAK,OAAO0M,KAAK,wBAAwBtM,EAAE","sources":["webpack://@reltio/remotes/../components/src/HOCs/withAsyncMount/withAsyncMount.js","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/styles.ts","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/ArrowExpandButton.tsx","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/BasicViewHeader.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/utils/index.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/CommentTarget.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/CommentContent.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/Avatar.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/TextFieldWithMentions.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/SendMessageArea.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/Comment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/RepliedComment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CollaborationItem.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/styles.ts","webpack://@reltio/remotes/../components/src/icons/CommentBubble.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/styles.ts","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/CommentButton.tsx","webpack://@reltio/remotes/../components/src/icons/AddComment.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/AddCommentButton.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/CollaborationPopup.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/CommentsContainer.tsx","webpack://@reltio/remotes/../components/src/components/DragAndDrop/DragAndDrop.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/styles.ts","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/DropDownMenuButton.tsx","webpack://@reltio/remotes/../components/src/components/EntityAvatar/EntityAvatar.tsx","webpack://@reltio/remotes/../components/src/components/EntityAvatar/no-photo.svg.ts","webpack://@reltio/remotes/../components/src/components/EntityTypeIcon/EntityTypeIcon.js","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorMessage.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorWrapper.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/styles.ts","webpack://@reltio/remotes/../components/src/components/Highlighter/styles.ts","webpack://@reltio/remotes/../components/src/components/Highlighter/Highlighter.tsx","webpack://@reltio/remotes/../components/src/icons/DefaultImage.tsx","webpack://@reltio/remotes/../components/src/components/Image/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/Image.tsx","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/CheckedIcon.tsx","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/ImageActionsOverlay.tsx","webpack://@reltio/remotes/../components/src/icons/Details.tsx","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/ImageGalleryDialog.tsx","webpack://@reltio/remotes/../components/src/components/InternalLink/styles.ts","webpack://@reltio/remotes/../components/src/components/InternalLink/InternalLink.tsx","webpack://@reltio/remotes/../components/src/components/LinearLoadIndicator/styles.ts","webpack://@reltio/remotes/../components/src/components/LinearLoadIndicator/LinearLoadIndicator.tsx","webpack://@reltio/remotes/../components/src/components/ModeSwitcher/styles.ts","webpack://@reltio/remotes/../components/src/components/ModeSwitcher/ModeSwitcher.tsx","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/styles.ts","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/PopupWithArrow.tsx","webpack://@reltio/remotes/../components/src/components/SearchInput/SearchInput.tsx","webpack://@reltio/remotes/../components/src/components/SearchInput/styles.ts","webpack://@reltio/remotes/../components/src/components/SelectionPopup/SelectionPopup.tsx","webpack://@reltio/remotes/../components/src/components/SelectionPopup/helpers.ts","webpack://@reltio/remotes/../components/src/components/SelectionPopup/styles.js","webpack://@reltio/remotes/../components/src/components/Title/styles.ts","webpack://@reltio/remotes/../components/src/components/Title/Title.tsx","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/styles.js","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/VirtualGroupedList.js","webpack://@reltio/remotes/../components/src/components/VirtualGroupedList/helpers.js","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/BranchDecorator.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/Thumbnails.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/ImageDetailsViewCarousel.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/constants/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/MetaInfoHeader.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/MetaInfoItem.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoList.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/MetaInfoForm.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/hooks/useEditMetaInfo.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/theme/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfo/MetaInfo.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/ImageDetailsViewSidebar.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/GalleryView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/HeaderLeft.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/HeaderRight.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/ImageAttributesGallery.tsx","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/helpers/imageAttributes.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/constants.ts","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/OvIcon.js","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/helpers.ts","webpack://@reltio/remotes/../components/src/icons/PivotingIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltipContent.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltip.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/AttributesList.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/CardinalityMessage.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/utils.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributeRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/EntityCreator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/EntityOption.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/SingleValue.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/ClearIndicator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/Group.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/EntitySelector.js","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/ImageByUrlField.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/constants/index.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/SelectImageButton/SelectImageButton.tsx","webpack://@reltio/remotes/../components/src/icons/UploadIcon.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/TargetBox.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/DividerWithText.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/ErrorSnackbar.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/UploadImageDialog.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/useMoreAttributesItems.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/MoreAttributesButton.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/parents.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/cache.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/SimpleAttributeEditor.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/getDependentLookupEditorContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/missedParentsMessage.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/utils.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/HasDeletionsContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/PinnedAttributesContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/helpers/attributesView.ts","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowLess.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowMore.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesList/AttributesList.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/OneLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/MultiLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/SpecialAttributesArray.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Role.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tag.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/cross.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/SimpleAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/helpers/commonStyles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/helpers/historyAppearance.ts","webpack://@reltio/remotes/../components/src/constants/attributes.ts","webpack://@reltio/remotes/../components/src/constants/classnames.ts","webpack://@reltio/remotes/../components/src/contexts/AsyncMountContext/index.js","webpack://@reltio/remotes/../components/src/contexts/BlockImageGalleryDialogContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/CollaborationContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntitiesMapContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntityContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HighlightedValuesContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HistoryAppearanceContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/PivotingAttributeContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/RelatedObjectUrisContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/UsersContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useAsyncMount.js","webpack://@reltio/remotes/../components/src/icons/Download.tsx"],"sourcesContent":["import React, {forwardRef} from 'react';\nimport {useAsyncMount} from '../../hooks/useAsyncMount';\n\nconst withAsyncMount = (Component, PlaceholderComponent = null) => {\n const WithAsyncMount = forwardRef((componentProps, ref) => {\n const shouldMount = useAsyncMount();\n return shouldMount ? (\n <Component {...componentProps} ref={ref} />\n ) : (\n PlaceholderComponent && <PlaceholderComponent {...componentProps} ref={ref} />\n );\n });\n\n WithAsyncMount.displayName = 'WithAsyncMount';\n return WithAsyncMount;\n};\n\nexport default withAsyncMount;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n expandButton: {\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n expandIcon: {\n transition: 'transform .15s ease'\n },\n expanded: {\n transform: 'rotate(90deg)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport SmallIconButton from '../SmallIconButton/SmallIconButton';\nimport ArrowRight from '@material-ui/icons/ArrowRight';\nimport {IconButtonProps} from '@material-ui/core/IconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n expanded: boolean;\n className?: string;\n} & Omit<IconButtonProps, 'size'>;\n\nconst ArrowExpandButton = (props: Props) => {\n const styles = useStyles();\n const {expanded, className, ...otherProps} = props;\n return (\n <SmallIconButton\n icon={ArrowRight}\n size=\"XXS\"\n disableRipple\n iconClassName={classnames(styles.expandIcon, {[styles.expanded]: expanded})}\n className={classnames(className, styles.expandButton)}\n {...otherProps}\n />\n );\n};\n\nexport default ArrowExpandButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n toolbar: {\n minHeight: '48px',\n padding: '8px 24px',\n lineHeight: '28px'\n },\n title: {\n fontSize: '18px',\n fontWeight: 'normal',\n lineHeight: 'inherit',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n});\n","import React from 'react';\nimport Toolbar, {ToolbarProps} from '@material-ui/core/Toolbar';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = ToolbarProps & {\n title?: string;\n classes?: Partial<Record<'root' | 'title', string>>;\n};\n\nconst BasicViewHeader = ({title, children = null, classes = {}, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={classes.root} classes={{root: styles.toolbar}} {...otherProps}>\n <Typography className={classes.title} classes={{root: styles.title}} variant=\"h6\">\n {title}\n </Typography>\n {children}\n </Toolbar>\n );\n};\n\nexport default BasicViewHeader;\n","import i18n from 'ui-i18n';\nimport {Comment} 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","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n title: {\n marginBottom: '10px',\n color: theme.palette.divider,\n fontSize: '12px',\n lineHeight: '14px'\n },\n label: {\n paddingLeft: '9px',\n borderLeft: '1px solid #D8D8D8',\n fontSize: '13px',\n color: theme.palette.text.primary,\n lineHeight: '15px'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {startsWith} from 'ramda';\nimport mdm from '@reltio/mdm-module';\nimport {Comment, Entity, CollaborationObjectTypes} from '@reltio/mdm-sdk';\nimport {\n findAttributeTypeByUri,\n getLabel,\n getEntityUriForLink,\n getEntityId,\n getAttributeTypeUriByValueUri\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {EntitiesMapContext} from '../../../contexts';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport {getRelatedEntityUri} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n comment: Pick<Comment, 'objectType' | 'objectId' | 'relatedObjectUris'>;\n className?: string;\n};\n\nexport const CommentTarget = ({comment, className}: Props) => {\n const styles = useStyles();\n\n const entity = useSelector(mdm.selectors.getEntity) as Entity;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const entitiesMap = useContext(EntitiesMapContext);\n\n const getContent = () => {\n switch (comment.objectType) {\n case CollaborationObjectTypes.ENTITY_ATTRIBUTE: {\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, entity.type);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION_ATTRIBUTE: {\n const relationTypeUri = comment.relatedObjectUris.find(startsWith('configuration/relationTypes'));\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, relationTypeUri);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.ENTITY: {\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected profile:')}</Typography>\n <EntityUriLink\n className={classnames(styles.label, styles.link)}\n value={getEntityUriForLink(entity)}\n >\n {getLabel(entity.label)}\n </EntityUriLink>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n ...(entitiesMap[relatedEntityUri] || {}),\n uri: relatedEntityUri\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected relation:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {relatedEntityUri && (\n <>\n {` ${i18n.text('to')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n case CollaborationObjectTypes.POTENTIAL_MATCH: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n uri: relatedEntityUri,\n label: entitiesMap[relatedEntityUri]?.label\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected potential match:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n\n {relatedEntityUri && (\n <>\n {` ${i18n.text('and')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n default: {\n return null;\n }\n }\n };\n\n return <Box className={className}>{getContent()}</Box>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n wordBreak: 'break-word'\n }\n}));\n","import React, {Fragment, useContext} from 'react';\nimport classnames from 'classnames';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport {UsersContext} from '../../../contexts';\nimport {processMentions} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n comment: Pick<Comment, 'content' | 'namedUsers'>;\n};\n\nexport const CommentContent = ({comment, className}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n return (\n <Typography className={classnames(styles.root, className)}>\n {processMentions(comment.content, comment.namedUsers, (mention) => {\n const user = users.find((user) => user.username === mention.slice(1));\n return user ? <Link href={`mailto:${user.email}`}>{mention}</Link> : mention;\n }).map((el, idx) => (\n <Fragment key={idx}>{el}</Fragment>\n ))}\n </Typography>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '32px',\n height: '32px',\n fontSize: '12px',\n color: theme.palette.text.secondary,\n backgroundColor: 'rgba(144, 164, 174, 0.2)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport MUIAvatar, {AvatarProps} from '@material-ui/core/Avatar';\nimport {getAbbreviationFromUserName} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = Omit<AvatarProps, 'children'> & {\n children: string;\n};\n\nexport const Avatar = ({className, children, ...props}: Props) => {\n const styles = useStyles();\n return (\n <MUIAvatar {...props} className={classnames(styles.root, className)}>\n {getAbbreviationFromUserName(children)}\n </MUIAvatar>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n backgroundColor: '#fff',\n fontFamily: 'Roboto',\n '&__control': {\n fontSize: '13px'\n },\n '&__highlighter': {\n padding: '10px 22px',\n border: '1px solid transparent !important'\n },\n '&__input': {\n borderRadius: '2px',\n border: '1px solid rgba(0,0,0,0.12)',\n padding: '10px 22px',\n outline: 0,\n overflow: 'auto !important'\n },\n '&__suggestions': {\n padding: '8px 0',\n borderRadius: '4px',\n backgroundColor: '#fafafa !important',\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2)',\n transform: 'translateY(-100%)'\n },\n '&__suggestions__list': {\n maxHeight: '200px',\n overflowY: 'scroll'\n },\n '&__suggestions__item': {\n padding: '6px 12px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n transition: theme.transitions.create(['background-color']),\n '&:hover, &--focused': {\n backgroundColor: 'rgba(0,0,0,0.04)'\n }\n }\n },\n mention: {\n position: 'relative',\n zIndex: 1,\n color: theme.palette.primary.main,\n textShadow: '1px 1px 1px white, 1px -1px 1px white, -1px 1px 1px white, -1px -1px 1px white',\n pointerEvents: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {uniq} from 'ramda';\nimport {MentionsInput, Mention, MentionsInputProps, MentionItem} from 'react-mentions';\nimport {UsersContext} from '../../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = Omit<MentionsInputProps, 'children' | 'onChange'> & {\n onChange?: (value: string, plainTextValue: string, mentions: string[]) => void;\n};\n\nexport const TextFieldWithMentions = ({onChange, className, ...props}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n const handleChange = (\n _: React.ChangeEvent<HTMLInputElement>,\n value: string,\n plainTextValue: string,\n mentions: MentionItem[]\n ) => {\n onChange(value, plainTextValue, uniq(mentions.map(({display}) => display.slice(1))));\n };\n\n return (\n <MentionsInput {...props} onChange={handleChange} className={classnames(styles.root, className)}>\n <Mention\n trigger=\"+\"\n data={users.map(({username}) => ({id: username, display: username}))}\n displayTransform={(_, username) => `+${username}`}\n appendSpaceOnAdd={true}\n className={styles.mention}\n />\n </MentionsInput>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n isEditing?: boolean;\n};\n\nexport const useStyles = makeStyles({\n root: ({isEditing}: StylesProps) => ({\n padding: isEditing ? '6px 6px 6px 0' : ' 6px 6px 6px 8px',\n borderRadius: '4px',\n backgroundColor: isEditing ? 'transparent' : 'rgba(0,114,206,0.06)'\n }),\n textField: ({isEditing}: StylesProps) => ({\n maxWidth: isEditing ? '100%' : 'calc(100% - 40px)'\n }),\n form: {\n marginBottom: 0\n },\n main: {\n display: 'flex',\n alignItems: 'center'\n },\n avatar: {\n marginRight: '8px'\n },\n buttons: ({isEditing}: StylesProps) => ({marginLeft: isEditing ? '0' : '40px', marginTop: '8px'}),\n button: {\n '& + $button': {\n marginLeft: '8px'\n }\n }\n});\n","import React, {useState, useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {always, cond, T} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {TextFieldWithMentions} from '../TextFieldWithMentions/TextFieldWithMentions';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {useStyles} from './styles';\nimport {useSafePromise} from '../../../hooks';\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'>;\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\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 username = useSelector(mdm.selectors.getUserName) as string;\n const {createReply, createComment, sending, editComment, editReply} = useContext(CollaborationContext);\n\n const [value, setValue] = useState('');\n const [plainTextValue, setPlainTextValue] = useState('');\n const [mentions, setMentions] = useState([]);\n const [focused, setFocused] = useState(false);\n\n const safePromise = useSafePromise();\n const hasValue = value.trim() !== '';\n const shouldShowButtons = focused || hasValue;\n const status = comment?.status;\n const updateValue = (value: string, plainTextValue: string, mentions: string[]) => {\n setMentions(mentions);\n setValue(value);\n setPlainTextValue(plainTextValue);\n };\n const clearValue = () => {\n onCancel?.();\n updateValue('', '', []);\n };\n\n const handleChange = (newValue: string, newPlainTextValue: string, mentions: string[]) => {\n updateValue(newValue, newPlainTextValue, mentions);\n };\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 safePromise(request()).then(clearValue).catch(console.log); //eslint-disable-line no-console\n };\n\n useEffect(() => {\n if (popperRef) {\n popperRef.current.update();\n }\n }, [popperRef, shouldShowButtons]);\n\n useEffect(() => {\n if (isEditingComment || isEditingReply) {\n if (isEditingComment) {\n setValue(comment.content);\n } else {\n setValue(reply.content);\n }\n } else {\n clearValue();\n }\n }, [isEditingComment, isEditingReply]);\n\n const buttonSize = isEditing ? 'small' : 'medium';\n return (\n <Box className={classnames(styles.root, className)}>\n <form onSubmit={handleSubmit} className={styles.form}>\n <Box className={styles.main}>\n {!isEditing && <Avatar classes={{root: styles.avatar}}>{username}</Avatar>}\n <TextFieldWithMentions\n className={styles.textField}\n disabled={sending}\n onChange={handleChange}\n inputRef={inputRef}\n value={value}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={getPlaceholder(status)}\n />\n </Box>\n {shouldShowButtons && (\n <Box className={styles.buttons}>\n <Button\n className={styles.button}\n variant=\"contained\"\n color=\"primary\"\n disabled={!hasValue || sending}\n type=\"submit\"\n size={buttonSize}\n >\n {getButtonText(status, isEditingComment, isEditingReply)}\n </Button>\n <Button\n disabled={sending}\n onClick={handleCancel}\n className={styles.button}\n variant=\"outlined\"\n color=\"primary\"\n size={buttonSize}\n >\n {i18n.text('Cancel')}\n </Button>\n </Box>\n )}\n </form>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n display: 'flex'\n },\n avatar: {\n marginRight: '8px'\n },\n username: {\n marginBottom: '1px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n createdAt: {\n marginTop: '3px',\n marginRight: '4px',\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n body: {\n marginLeft: '40px'\n },\n commentTarget: {\n marginTop: '-15px'\n },\n message: {\n marginTop: '12px'\n },\n dropdownMenu: {\n zIndex: '3000 !important' as any\n },\n buttons: {\n marginTop: '15px',\n marginBottom: '12px',\n display: 'flex',\n\n '& $button + $button': {\n marginLeft: '10px'\n }\n },\n button: {\n fontSize: '13px',\n lineHeight: '15px'\n }\n}));\n","import React, {useMemo, useContext, useState, useRef, useEffect} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {CommentTarget} from '../CommentTarget/CommentTarget';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {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 [isEditingComment, setIsEditingComment] = useState(false);\n const username: string = useSelector(mdm.selectors.getUserName);\n const {commentId, createdBy, createdTime} = comment;\n const canChangeComment = createdBy === username;\n const {resolveThread, reOpenThread, sending, deleteComment} = useContext(CollaborationContext);\n\n useEffect(() => {\n if (isEditingComment) {\n inputRef.current.focus();\n }\n }, [isEditingComment]);\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => setIsEditingComment(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteComment({uri, commentId})\n }\n ],\n [deleteComment, uri, commentId]\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={() => setIsEditingComment(false)}\n isEditingComment={isEditingComment}\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 {isEditingComment ? sendMessageArea : <CommentContent comment={comment} className={styles.message} />}\n <Box className={styles.buttons}>\n <Link className={styles.button} onClick={onReply} component=\"button\">\n {i18n.text('Reply')}\n </Link>\n {comment.status === 'open' && (\n <Link disabled={sending} className={styles.button} onClick={handleResolve} component=\"button\">\n {i18n.text('Resolve')}\n </Link>\n )}\n {comment.status === 'resolved' && (\n <Link disabled={sending} className={styles.button} onClick={handleReOpen} component=\"button\">\n {i18n.text('Re-open')}\n </Link>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n padding: '8px',\n borderRadius: '4px',\n backgroundColor: 'rgba(0,114,206,0.06)'\n },\n avatar: {\n marginRight: '8px'\n },\n header: {\n display: 'flex',\n marginBottom: '8px'\n },\n username: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n message: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px'\n },\n createdAt: {\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n marked: {\n marginLeft: '8px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n fontStyle: 'italic',\n lineHeight: '15px'\n }\n}));\n","import React, {useRef, useContext, useMemo, useState, useEffect} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Reply, Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {formatDate} from '../utils';\nimport {useStyles} from './styles';\nimport {CollaborationContext} from '../../../contexts';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {SendMessageArea} from '../SendMessageArea/SendMessageArea';\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 [isEditingReply, setIsEditingReply] = useState(false);\n const {createdBy, action, createdTime} = reply;\n const username: string = useSelector(mdm.selectors.getUserName);\n const canChangeReply = createdBy === username;\n\n const {deleteReply} = useContext(CollaborationContext);\n\n useEffect(() => {\n if (isEditingReply) {\n inputRef.current.focus();\n }\n }, [isEditingReply]);\n\n const styles = useStyles();\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => setIsEditingReply(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteReply({uri, commentId: comment.commentId, reply})\n }\n ],\n [deleteReply, uri, comment.commentId, reply]\n );\n\n const sendMessageArea = (\n <SendMessageArea\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n onCancel={() => setIsEditingReply(false)}\n isEditingReply={isEditingReply}\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 (isEditingReply ? sendMessageArea : <CommentContent className={styles.message} comment={reply} />)}\n <Typography className={styles.createdAt}>{formatDate(createdTime)}</Typography>\n </Box>\n {canChangeReply && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n tooltipTitle: i18n.text('Open menu')\n }}\n menuItems={menuItems}\n menuId=\"collaboration-comment-menu\"\n />\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n maxWidth: '100%',\n padding: '8px 4px 10px 16px'\n },\n messages: {},\n repliedComment: {\n marginBottom: '2px'\n },\n replies: {\n marginLeft: '40px'\n },\n sendMessageArea: {\n marginLeft: '40px'\n },\n comment: {}\n}));\n","import React, {useRef, memo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport {Comment} from './Comment/Comment';\nimport {RepliedComment} from './RepliedComment/RepliedComment';\nimport {SendMessageArea} from './SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Classes = Partial<ReturnType<typeof useStyles>>;\n\ntype Props = {\n classes?: Classes;\n uri: string;\n relatedObjectUris: CommentType['relatedObjectUris'];\n objectType: CommentType['objectType'];\n popperRef?: React.RefObject<any>;\n messagesRef?: React.RefCallback<HTMLDivElement>;\n comment?: CommentType;\n};\n\nexport const CollaborationItem = memo(\n ({uri, relatedObjectUris, objectType, classes, popperRef, messagesRef, comment}: Props) => {\n const inputRef = useRef<HTMLInputElement>();\n const styles = useStyles({classes});\n\n const handleReply = () => {\n inputRef.current.focus();\n };\n\n const sendMessageArea = (\n <SendMessageArea\n className={styles.sendMessageArea}\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n\n return (\n <Box className={styles.root}>\n {comment && (\n <>\n <div className={styles.messages} ref={messagesRef}>\n <Comment\n comment={comment}\n uri={uri}\n onReply={handleReply}\n className={styles.comment}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n />\n <Box className={styles.replies}>\n {comment.replies.map((reply) => (\n <RepliedComment\n key={reply.replyId}\n className={styles.repliedComment}\n reply={reply}\n uri={uri}\n comment={comment}\n />\n ))}\n </Box>\n </div>\n {sendMessageArea}\n </>\n )}\n {!comment && sendMessageArea}\n </Box>\n );\n }\n);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../constants/classnames';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n alignItems: 'start'\n },\n addButton: {\n visibility: 'hidden',\n '&$showAlways': {\n visibility: 'visible'\n },\n [`.${COMMENTS_CONTAINER_VISIBILITY_AREA}:hover &`]: {\n visibility: 'visible'\n }\n },\n showAlways: {}\n}));\n","import React from 'react';\n\nconst SvgCommentBubble: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 1h14.4c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1z\" />\n </svg>\n );\n};\n\nexport default SvgCommentBubble;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative',\n height: '18px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: '4px',\n cursor: 'pointer'\n },\n icon: {\n '&:hover': {\n fillOpacity: 0.7\n }\n },\n childrenWrapper: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n lineHeight: '15px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n top: '-2px',\n left: 0,\n right: 0,\n bottom: 0,\n color: 'white',\n fontSize: '10px',\n pointerEvents: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport CommentIcon from '../../../icons/CommentBubble';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst CommentButton = React.forwardRef(({children, onClick}: Props, ref: React.Ref<HTMLDivElement>) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Show comment')}>\n <div ref={ref} className={styles.root} onClick={onClick}>\n <CommentIcon className={styles.icon} />\n <div className={styles.childrenWrapper}>{children}</div>\n </div>\n </Tooltip>\n );\n});\n\nCommentButton.displayName = 'CommentButton';\n\nexport default CommentButton;\n","import React from 'react';\n\nconst SvgAddComment: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 14.653L3.853 13.6H17.2V2.8H2.8v11.853zM17.2 1c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1h14.4zm-6.3 3.6H9.1v2.699L6.4 7.3v1.8l2.7-.001V11.8h1.8V9.099l2.7.001V7.3l-2.7-.001V4.6z\" />\n </svg>\n );\n};\n\nexport default SvgAddComment;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport AddCommentIcon from '../../../icons/AddComment';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst AddCommentButton = ({className, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Add comment')}>\n <div className={classnames(styles.root, className)} onClick={onClick}>\n <AddCommentIcon className={styles.icon} />\n </div>\n </Tooltip>\n );\n};\n\nexport default AddCommentButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Props = {\n scrollWidth: number;\n hasScroll: boolean;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n paddingLeft: '16px',\n paddingRight: '8px'\n },\n headerInfo: {\n marginRight: 'auto',\n display: 'flex',\n alignItems: 'center'\n },\n title: {\n marginRight: '15px',\n color: theme.palette.text.primary,\n fontSize: '16px'\n },\n counter: {\n paddingLeft: '15px',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '24px'\n },\n resolveButton: {\n zIndex: 3000,\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n popper: {\n width: '424px',\n borderRadius: '0 0 4px 4px'\n },\n collaborationItem: {\n padding: '0 0 10px 0'\n },\n comment: ({hasScroll}: Props) => ({\n marginLeft: '16px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n replies: ({hasScroll}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n sendMessageArea: ({hasScroll, scrollWidth}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? scrollWidth + 2 : '8px'\n }),\n messages: {\n maxHeight: '400px',\n overflowY: 'auto'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport DoneIcon from '@material-ui/icons/Done';\nimport {CollaborationContext} from '../../contexts';\nimport {CollaborationItem} from '../CollaborationItem/CollaborationItem';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {PopupWithArrow} from '../PopupWithArrow/PopupWithArrow';\nimport {useStyles} from './styles';\n\ntype PopupWithArrowProps = React.ComponentPropsWithoutRef<typeof PopupWithArrow>;\n\ntype Props = Pick<PopupWithArrowProps, 'open' | 'anchorEl' | 'onClose'> & {\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n comment?: Comment;\n};\n\nexport const CollaborationPopup = ({uri, relatedObjectUris, objectType, anchorEl, onClose, open, comment}: Props) => {\n const [scrollWidth, setScrollWidth] = useState(0);\n const hasScroll = scrollWidth !== 0;\n const styles = useStyles({scrollWidth, hasScroll});\n\n const popperRef = useRef(null);\n const {resolveThread, loading, sending} = useContext(CollaborationContext);\n const itemsCount = 1 + comment?.replies.length;\n\n const handleResolve = () => {\n resolveThread({commentId: comment.commentId, uri});\n };\n\n return (\n <PopupWithArrow\n popperRef={popperRef}\n anchorEl={anchorEl}\n open={open}\n placement=\"right-start\"\n onClose={onClose}\n className={styles.popper}\n >\n <Box className={styles.header}>\n <Box className={styles.headerInfo}>\n <Typography className={styles.title}>{i18n.text('Comments')}</Typography>\n {comment && !loading && (\n <Typography className={styles.counter}>\n {i18n.number(itemsCount)} {itemsCount === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n )}\n </Box>\n {comment && !loading && (\n <SmallIconButtonWithTooltip\n className={styles.resolveButton}\n size=\"S\"\n onClick={handleResolve}\n disabled={sending}\n showForDisabled={true}\n tooltipTitle={i18n.text('Resolve')}\n icon={DoneIcon}\n color=\"primary\"\n />\n )}\n </Box>\n {!loading && (\n <CollaborationItem\n popperRef={popperRef}\n messagesRef={(node) => {\n if (node) {\n setScrollWidth(node.offsetWidth - node.clientWidth);\n }\n }}\n classes={{\n root: styles.collaborationItem,\n replies: styles.replies,\n sendMessageArea: styles.sendMessageArea,\n messages: styles.messages,\n comment: styles.comment\n }}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n )}\n </PopupWithArrow>\n );\n};\n","import React, {useContext, useMemo, useState} from 'react';\nimport {CollaborationObjectTypes, Comment} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nimport {useDidUpdateEffect} from '../../hooks';\nimport {CollaborationContext, RelatedObjectUrisContext} from '../../contexts';\nimport CommentButton from './buttons/CommentButton';\nimport AddCommentButton from './buttons/AddCommentButton';\nimport {CollaborationPopup} from '../CollaborationPopup/CollaborationPopup';\n\ntype Props = {\n className?: string;\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n allowOnlyOneComment?: boolean;\n showAlways?: boolean;\n onChangePopupVisibility?: (visibility: boolean) => void;\n};\n\nconst CommentsContainer = ({\n className,\n uri,\n objectType,\n relatedObjectUris,\n onChangePopupVisibility,\n allowOnlyOneComment = false,\n showAlways = false\n}: Props) => {\n const styles = useStyles();\n\n const [anchorEl, setAnchorEl] = useState<HTMLDivElement | null>(null);\n const [shouldOpenPopup, setShouldOpenPopup] = useState<boolean>(false);\n const isOpenPopup = shouldOpenPopup && Boolean(anchorEl);\n\n const {currentComment, commentsMap, getComment, clearCurrentComment, objectTypes} = useContext(\n CollaborationContext\n );\n const showComments =\n !!commentsMap && (!objectTypes || objectTypes.includes(objectType as CollaborationObjectTypes));\n const openComments = (commentsMap?.[uri] || []).filter(({status}) => status !== 'resolved').reverse();\n const shouldShowAddCommentButton = !allowOnlyOneComment || (allowOnlyOneComment && openComments.length === 0);\n const isOpenPopupWithNewComment = currentComment === null && isOpenPopup;\n\n const handleClickCommentButton = (commentId: string) => {\n getComment(commentId);\n setShouldOpenPopup(true);\n };\n\n const handleClickAddCommentButton = (event: React.MouseEvent<HTMLDivElement>) => {\n setAnchorEl(event.currentTarget);\n setShouldOpenPopup(true);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n clearCurrentComment();\n setShouldOpenPopup(false);\n };\n\n useDidUpdateEffect(() => {\n if (onChangePopupVisibility) {\n onChangePopupVisibility(isOpenPopup);\n }\n }, [isOpenPopup]);\n\n const additionalRelatedObjectUris = useContext(RelatedObjectUrisContext);\n const allRelatedObjectUris = useMemo(() => {\n return additionalRelatedObjectUris ? [...relatedObjectUris, ...additionalRelatedObjectUris] : relatedObjectUris;\n }, [additionalRelatedObjectUris, relatedObjectUris]);\n\n return (\n showComments && (\n <div className={classnames(styles.root, className)}>\n {shouldShowAddCommentButton && (\n <AddCommentButton\n className={classnames(styles.addButton, {\n [styles.showAlways]: showAlways || isOpenPopupWithNewComment\n })}\n onClick={handleClickAddCommentButton}\n />\n )}\n {openComments.map(({replies, commentId}) => {\n return (\n <CommentButton\n ref={commentId === currentComment?.commentId ? setAnchorEl : null}\n key={commentId}\n onClick={() => handleClickCommentButton(commentId)}\n >\n {1 + replies}\n </CommentButton>\n );\n })}\n <CollaborationPopup\n anchorEl={anchorEl}\n open={isOpenPopup}\n onClose={handleClose}\n uri={uri}\n relatedObjectUris={allRelatedObjectUris}\n objectType={objectType}\n comment={currentComment}\n />\n </div>\n )\n );\n};\n\nexport default CommentsContainer;\n","// This component fixes \"Cannot have two HTML5 backends at the same time\" error.\n// Check issue and solution https://github.com/react-dnd/react-dnd/issues/186#issuecomment-561631584\nimport {DndProvider, createDndContext} from 'react-dnd';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport React, {useRef} from 'react';\n\nconst RNDContext = createDndContext(HTML5Backend);\n\ntype Props = {\n children?: React.ReactNode;\n};\n\nconst useDNDProviderElement = (props: Props) => {\n const manager = useRef(RNDContext);\n\n if (!props.children) return null;\n\n return <DndProvider manager={manager.current.dragDropManager}>{props.children}</DndProvider>;\n};\n\nexport const DragAndDrop = (props: Props) => {\n const DNDElement = useDNDProviderElement(props);\n return <>{DNDElement}</>;\n};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n buttonRoot: {\n '&$selected': {\n color: theme.palette.action.active,\n backgroundColor: fade(theme.palette.action.active, 0.12),\n '&:hover': {\n backgroundColor: fade(theme.palette.action.active, 0.15)\n }\n }\n },\n selected: {},\n paper: {\n minWidth: '112px'\n },\n menuItem: {\n minHeight: '32px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n }\n}));\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport withTooltip from '../../HOCs/withTooltip/withTooltip';\nimport {DropDownMenuItem} from '../../types';\n\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\ntype Props = {\n item: DropDownMenuItem;\n onMenuClose?: (e) => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {disabled, text, tooltip, onClick, id = '', selectable, selected} = item;\n const handleClick = (e) => {\n onMenuClose(e);\n onClick(e);\n };\n\n return (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n data-modal\n data-reltio-id={`reltio-search-menu-item${id}`}\n >\n {selectable && <Checkbox checked={selected} color=\"primary\" />}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItemWithTooltip>\n );\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React, {useCallback, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport {identity} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport Menu, {MenuProps} from '@material-ui/core/Menu';\nimport {useDidUpdateEffect} from '../../hooks';\nimport DefaultMenuItemRenderer from './MenuItemRenderer';\nimport {useStyles} from './styles';\nimport {DropDownMenuItem} from '../../types';\n\ntype Props<T> = {\n className?: string;\n buttonComponent?: React.ElementType;\n buttonContent?: React.ReactNode;\n menuItems?: T[];\n buttonProps?: Record<string, unknown>;\n popoverProps?: Omit<MenuProps, 'open'>;\n menuId: string;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n MenuItemRenderer?: (props) => JSX.Element;\n};\n\nfunction DropDownMenuButton<T = DropDownMenuItem>({\n className,\n menuId,\n buttonComponent = Button,\n buttonContent,\n menuItems = [],\n buttonProps = {},\n popoverProps = {},\n onMenuOpen = identity,\n onMenuClose = identity,\n MenuItemRenderer = DefaultMenuItemRenderer\n}: Props<T>) {\n const ButtonComponent = buttonComponent;\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n useDidUpdateEffect(() => {\n isOpen ? onMenuOpen() : onMenuClose();\n }, [isOpen]);\n\n const handleToggle = useCallback((e) => {\n e?.stopPropagation();\n setIsOpen((open) => !open);\n }, []);\n\n const renderMenuItem = (item, index) => {\n return <MenuItemRenderer item={item} key={index} onMenuClose={handleToggle} />;\n };\n\n return (\n <>\n <ButtonComponent\n ref={buttonRef}\n className={classnames(\n styles.buttonRoot,\n {\n [styles.selected]: isOpen\n },\n className\n )}\n onClick={handleToggle}\n aria-pressed={isOpen}\n aria-controls={isOpen ? menuId : undefined}\n aria-haspopup=\"true\"\n {...buttonProps}\n >\n {buttonContent}\n </ButtonComponent>\n <Menu\n id={menuId}\n variant=\"menu\"\n open={isOpen}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={buttonRef.current}\n onClose={handleToggle}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{autoFocusItem: isOpen}}\n {...popoverProps}\n >\n {menuItems.map(renderMenuItem)}\n </Menu>\n </>\n );\n}\n\nDropDownMenuButton.displayName = 'DropDownMenuButton';\n\nexport default DropDownMenuButton;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\n\nimport {Avatar as Avatar} from '@material-ui/core';\nimport {DEFAULT_PROFILE_IMAGE} from './no-photo.svg';\nimport {getEntityImage, getEntityTypeImage, getAbsoluteImageUrl, Entity, svg2Url} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entity: Entity;\n avatarClassName?: string;\n imageClassName?: string;\n};\n\nconst EntityAvatar = ({entity, avatarClassName, imageClassName}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const absoluteImagePath = useSelector(mdmModule.selectors.getAbsoluteImagePath) || '';\n const entityImageSource = getEntityImage(metadata, absoluteImagePath, entity);\n const fallbackImage = getAbsoluteImageUrl(absoluteImagePath, getEntityTypeImage(metadata, entity.type));\n const onImageLoadFail = (e) => {\n e.target.onError = null;\n e.target.src = svg2Url(DEFAULT_PROFILE_IMAGE);\n };\n return (\n <Avatar\n className={classnames(avatarClassName, imageClassName)}\n src={entityImageSource}\n imgProps={{onError: onImageLoadFail}}\n >\n <img\n className={imageClassName}\n src={fallbackImage}\n alt=\"fallback entity avatar\"\n onError={onImageLoadFail}\n />\n </Avatar>\n );\n};\n\nexport default EntityAvatar;\n","export const DEFAULT_PROFILE_IMAGE = `\n<svg width=\"400px\" height=\"400px\" viewBox=\"0 0 400 400\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Group</title>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Group\" fill-rule=\"nonzero\">\n <rect id=\"Rectangle\" fill=\"#DFE5E9\" x=\"0\" y=\"0\" width=\"400\" height=\"400\"></rect>\n <path d=\"M0,387.023257 L0,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 0,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n <path d=\"M0,387.023257 L0,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 0,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n <path d=\"M5.68434189e-14,387.023257 L5.68434189e-14,399.918908 L400,399.918908 L400,386.023594 C366.631,377.336524 321.866,364.269931 315.979,359.161654 C308.985,353.083704 270.481,310.508063 270.481,310.508063 L270.481,286.186267 C270.481,286.186267 284.478,266.204006 284.478,261.854473 C284.478,257.515936 285.353,246.219746 291.481,241.011503 C297.61,235.792263 311.607,211.471466 312.481,206.253226 C313.355,201.043983 319.484,188.009379 312.481,185.400259 C305.478,182.801135 307.236,173.244359 308.984,168.026119 C310.733,162.817875 319.484,139.355788 322.981,133.277838 C326.488,127.199888 312.481,108.956041 312.481,108.956041 C312.481,108.956041 294.978,80.2857109 245.975,53.3547939 C196.971,26.4138803 168.967,42.9283105 168.967,42.9283105 L161.964,60.3024507 C161.964,60.3024507 138.341,64.6409874 123.46,77.6765909 C108.589,90.7121943 99.837,106.346921 98.963,115.903698 C98.088,125.460475 103.334,159.339048 105.966,164.557289 C108.589,169.765532 112.96,185.400259 112.96,185.400259 C112.96,185.400259 108.589,183.670842 105.966,188.879085 C103.334,194.097325 112.085,218.419122 112.96,220.159535 C113.834,221.897949 114.718,238.403382 119.963,237.532676 C125.218,236.663969 130.463,251.42799 130.463,251.42799 C130.463,251.42799 143.596,271.41125 144.47,275.759783 C145.344,280.09832 147.967,307.039233 147.967,307.039233 L126.967,331.36103 L102.46,355.682827 C102.459,355.682827 34.042,375.886013 5.68434189e-14,387.023257 Z\" id=\"Path\" fill=\"#B3BCC4\"></path>\n </g>\n </g>\n</svg>\n`;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport mdmModule from '@reltio/mdm-module';\nimport RC_EntityTypeIcon from 'react-components/dist/EntityTypeIcon/EntityTypeIcon';\n\nconst ensureSlashEnding = (str) => (str.endsWith('/') ? str : str + '/');\n\nconst EntityTypeIcon = (props) => {\n const absoluteImagePath = useSelector(mdmModule.selectors.getAbsoluteImagePath) || '';\n return <RC_EntityTypeIcon {...props} storagePath={ensureSlashEnding(absoluteImagePath)} />;\n};\n\nexport default EntityTypeIcon;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n message?: string;\n className?: string;\n};\n\nconst ErrorMessage = ({className, message}: Props) => {\n const styles = useStyles();\n if (!message) {\n return null;\n }\n\n return (\n <Typography variant=\"caption\" className={classnames(styles.caption, className)}>\n {message}\n </Typography>\n );\n};\n\nexport default ErrorMessage;\n","import classnames from 'classnames';\nimport ErrorMessage from './ErrorMessage';\nimport FormControl, {FormControlProps} from '@material-ui/core/FormControl';\nimport {FormHelperText as FormHelperText} from '@material-ui/core';\nimport React, {memo} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = FormControlProps & {\n errorMessage?: string;\n classes?: {\n root: string;\n helperText: string;\n };\n};\n\nconst ErrorWrapper = ({errorMessage, children, className, classes, ...otherProps}: Props) => {\n const styles = useStyles();\n const hasError = !!errorMessage;\n\n return (\n <FormControl className={classnames(styles.wrapper, className, classes?.root)} error {...otherProps}>\n {children}\n {hasError && (\n <FormHelperText className={classnames(styles.helperText, classes?.helperText)}>\n <ErrorMessage message={errorMessage} />\n </FormHelperText>\n )}\n </FormControl>\n );\n};\n\nexport default memo(ErrorWrapper);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n helperText: {\n margin: '3px 0 1px 12px'\n },\n caption: {\n display: 'flex',\n color: theme.palette.error.main,\n fontSize: '12px',\n lineHeight: '16px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n highlight: {\n fontWeight: 600\n }\n});\n","import React from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n text?: string;\n highlight?: string;\n className?: string;\n};\n\nconst Highlighter = ({text = '', highlight = '', className}: Props) => {\n const styles = useStyles();\n const parts = highlight && text.split(new RegExp(`(${highlight})`, 'gi'));\n\n return (\n <span>\n {highlight\n ? parts.map((part, i) => (\n <span\n key={i}\n className={\n part.toLocaleLowerCase() === highlight.toLocaleLowerCase()\n ? className || styles.highlight\n : ''\n }\n >\n {part}\n </span>\n ))\n : text}\n </span>\n );\n};\n\nexport default Highlighter;\n","import React from 'react';\n\nconst SvgDefaultImage: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <path d=\"M0 0h24v24H0z\" />\n <path\n d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zm-4.5-9l2.5 3.096V18H5l4.5-5.5 2.5 3.01L16.5 10zm-8-4a1.5 1.5 0 110 3 1.5 1.5 0 010-3z\"\n fillOpacity={0.12}\n fill=\"#000\"\n fillRule=\"nonzero\"\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDefaultImage;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\nimport {ImageSizeType} from './Image';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative'\n },\n image: ({imageWidth, imageHeight}: ImageSizeType) => ({\n width: imageWidth,\n height: imageHeight,\n objectFit: 'cover',\n verticalAlign: 'bottom'\n }),\n defaultContainer: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: 'rgb(247, 247, 247)'\n },\n defaultImage: {\n width: '40px',\n height: '40px',\n marginLeft: 'auto',\n marginRight: 'auto',\n color: theme.palette.text.secondary\n },\n hideImage: {\n display: 'none'\n }\n}));\n","import React, {memo, useState, useEffect} from 'react';\nimport classnames from 'classnames';\nimport NotAvailableImage from '@material-ui/icons/BrokenImage';\nimport DefaultImage from '../../icons/DefaultImage';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst ImageLoadingState = {\n LOADING: 'loading',\n LOADED: 'loaded',\n ERROR: 'error'\n};\n\nexport const ImageSizesStyles = {\n SMALL: {\n imageWidth: 114,\n imageHeight: 114\n },\n MEDIUM: {\n imageWidth: 162,\n imageHeight: 162\n },\n LARGE: {\n imageWidth: 192,\n imageHeight: 192\n },\n OVERRIDE: {\n imageWidth: 'unset',\n imageHeight: 'unset'\n }\n};\n\nexport type ImageSizeType = {\n imageWidth: number | string;\n imageHeight: number | string;\n};\n\ntype Props = {\n src: string;\n className?: string;\n containerClassName?: string;\n size?: ImageSizeType;\n overlay?: React.ReactNode;\n onClick?: () => void;\n};\n\nconst Image = (props: Props) => {\n const {src, className, containerClassName, size = ImageSizesStyles.SMALL, overlay = null, ...otherProps} = props;\n\n const sizeStyles = size || ImageSizesStyles.SMALL;\n const styles = useStyles(sizeStyles);\n const [imageLoadingState, setImageLoadingState] = useState<string>(ImageLoadingState.LOADING);\n\n useEffect(() => {\n setImageLoadingState(ImageLoadingState.LOADING);\n }, [src]);\n\n const onImageLoadFail = () => {\n setImageLoadingState(ImageLoadingState.ERROR);\n };\n\n const onImageLoad = () => {\n setImageLoadingState(ImageLoadingState.LOADED);\n };\n\n const imageIsLoading = imageLoadingState === ImageLoadingState.LOADING;\n const imageIsLoaded = imageLoadingState === ImageLoadingState.LOADED;\n const imageLoadingError = imageLoadingState === ImageLoadingState.ERROR;\n\n return imageLoadingError ? (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <NotAvailableImage className={styles.defaultImage} />\n </div>\n ) : (\n <div className={classnames(styles.root, containerClassName)}>\n {!isEmptyValue(src) && (\n <img\n src={src}\n className={classnames(styles.image, className, {\n [styles.hideImage]: imageIsLoading\n })}\n onLoad={onImageLoad}\n onError={onImageLoadFail}\n alt={'image'}\n {...otherProps}\n />\n )}\n {imageIsLoading && (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <DefaultImage className={styles.defaultImage} />\n </div>\n )}\n {imageIsLoaded && overlay}\n </div>\n );\n};\n\nexport default memo(Image);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n fontSize: '24px',\n color: '#fff'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport {useStyles} from './styles';\n\ntype Props = {\n checked: boolean;\n className?: string;\n onClick: (e) => void;\n};\n\nexport const CheckedIcon = ({checked, className, onClick}: Props) => {\n const styles = useStyles();\n const Icon = checked ? CheckCircleIcon : RadioButtonUncheckedIcon;\n return <Icon className={classnames(styles.root, className)} onClick={onClick} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: '0.2s linear all',\n '&:not($selected):not($selectionMode):hover': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n },\n userSelect: 'none'\n },\n selected: {\n backgroundColor: 'rgba(0,114,206,0.6)'\n },\n selectionMode: {\n cursor: 'pointer',\n '&:not($selected)': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n }\n },\n button: {\n padding: 0,\n width: '100px',\n height: '36px',\n color: '#fff',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px',\n border: '1px solid rgba(255,255,255,0.25)',\n backgroundColor: 'rgba(98,2,238,0)'\n },\n checkedIcon: {\n position: 'absolute',\n left: '4px',\n top: '4px',\n cursor: 'pointer'\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n position: 'absolute',\n top: '4px',\n right: '4px'\n },\n actionButton: {\n color: '#fff',\n fontSize: '24px'\n },\n dropDownMenuButton: {\n margin: '0 2px 0 8px'\n }\n}));\n","import React, {memo, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {ifElse, equals, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {CheckedIcon} from '../CheckedIcon/CheckedIcon';\nimport DownloadIcon from '../../../icons/Download';\nimport {noop} from '../../../core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n id: string;\n canBeSelected?: boolean;\n selected?: boolean;\n selectionMode?: boolean;\n onDeselect?: () => void;\n onSelect?: () => void;\n onShareLink?: () => void;\n onSetAsDefault?: () => void;\n onDelete?: () => void;\n onDownload?: () => void;\n onClick?: () => void;\n};\n\nconst ImageActionsOverlay = (props: Props) => {\n const {\n id,\n canBeSelected = false,\n selected = false,\n selectionMode = false,\n onDeselect = noop,\n onSelect = noop,\n onShareLink,\n onSetAsDefault,\n onDelete,\n onDownload = noop,\n onClick\n } = props;\n\n const styles = useStyles();\n const [hovered, setHovered] = useState<boolean>(false);\n\n const menuItems = useMemo(\n () =>\n [\n {\n text: i18n.text('Share link'),\n onClick: onShareLink\n },\n {\n text: i18n.text('Set as default'),\n onClick: onSetAsDefault\n },\n {\n text: i18n.text('Delete'),\n onClick: onDelete\n }\n ].filter(prop('onClick')),\n [onShareLink, onSetAsDefault, onDelete]\n );\n\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n const toggleSelected = (selected: boolean) => () => ifElse(equals(true), onDeselect, onSelect)(selected);\n\n const showCheckBox = canBeSelected && (selected || hovered || selectionMode);\n const showActions = !selectionMode && !selected && hovered;\n const showDeselectButton = canBeSelected && selected;\n\n const handleClick = (event) => {\n if (event.currentTarget === event.target) onClick();\n };\n\n return (\n <div\n className={classnames(styles.overlay, {\n [styles.selected]: selected,\n [styles.selectionMode]: selectionMode\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={selectionMode ? toggleSelected(selected) : handleClick}\n >\n {showCheckBox && (\n <CheckedIcon className={styles.checkedIcon} checked={selected} onClick={toggleSelected(selected)} />\n )}\n {showActions && (\n <div className={styles.actions}>\n <SmallIconButton onClick={onDownload} className={styles.actionButton} icon={DownloadIcon} />\n <DropDownMenuButton\n menuId={`image-overlay-actions-${id}`}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n className: classnames(styles.actionButton, styles.dropDownMenuButton)\n }}\n menuItems={menuItems}\n />\n </div>\n )}\n {showDeselectButton && (\n <Button className={styles.button} variant=\"outlined\" onClick={onDeselect}>\n {i18n.text('Deselect')}\n </Button>\n )}\n </div>\n );\n};\n\nexport default memo(ImageActionsOverlay);\n","import React from 'react';\n\nconst SvgDetails: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M14 5a1 1 0 011 1v12a1 1 0 01-1 1H4a1 1 0 01-1-1V6a1 1 0 011-1h10zm6 12v2h-3v-2h3zm2-4v2h-5v-2h5zm0-4v2h-5V9h5zm0-4v2h-5V5h5z\"\n id=\"Details_svg__a\"\n />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fillRule=\"evenodd\">\n <mask id=\"Details_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Details_svg__a\" />\n </mask>\n <path mask=\"url(#Details_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDetails;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n paper: {\n backgroundColor: 'rgba(0, 0, 0, .85)'\n },\n backdrop: {\n backgroundColor: 'transparent'\n },\n toolbar: {\n paddingLeft: '20px',\n paddingRight: '20px'\n },\n appBar: {\n position: 'relative',\n background: 'linear-gradient(180deg, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0) 100%)'\n },\n closeButton: {\n marginRight: '28px'\n },\n closeIcon: {\n fontSize: '24px',\n color: '#fff'\n },\n headerLeft: {\n display: 'flex',\n alignItems: 'center',\n flex: 2\n },\n headerCenter: {\n display: 'flex',\n justifyContent: 'center',\n flex: 1\n },\n headerRight: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center'\n },\n modeSwitcher: {\n backgroundColor: '#fff'\n },\n content: {\n padding: 0\n }\n}));\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {AppBar as AppBar} from '@material-ui/core';\nimport {Toolbar as Toolbar} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ViewComfyIcon from '@material-ui/icons/ViewComfy';\nimport DetailsIcon from '../../icons/Details';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport ModeSwitcher from '../ModeSwitcher/ModeSwitcher';\nimport {useStyles} from './styles';\n\nexport enum Mode {\n GALLERY_MODE = 'gallery',\n DETAILS_MODE = 'details'\n}\n\nexport type Props = {\n open: boolean;\n mode: Mode;\n onClose?: () => void;\n onChangeMode?: (mode: Mode) => void;\n children: React.ReactNode;\n header?: {\n left?: React.ReactNode;\n right?: React.ReactNode;\n };\n};\n\nexport const ImageGalleryDialog = ({open, mode, children, header, onClose, onChangeMode}: Props) => {\n const styles = useStyles();\n\n const modes = useMemo(\n () => [\n {\n id: Mode.GALLERY_MODE,\n title: i18n.text('Gallery'),\n Icon: ViewComfyIcon\n },\n {\n id: Mode.DETAILS_MODE,\n title: i18n.text('Details'),\n Icon: DetailsIcon\n }\n ],\n []\n );\n\n return (\n <Dialog classes={{paper: styles.paper}} open={open} BackdropProps={{className: styles.backdrop}} fullScreen>\n <AppBar classes={{colorPrimary: styles.appBar}}>\n <Toolbar className={styles.toolbar}>\n <Box className={styles.headerLeft}>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Close')}\n onClick={onClose}\n className={styles.closeButton}\n iconClassName={styles.closeIcon}\n icon={CloseIcon}\n />\n {header?.left}\n </Box>\n <Box className={styles.headerCenter}>\n <ModeSwitcher<Mode>\n modes={modes}\n modeId={mode}\n onChange={onChangeMode}\n className={styles.modeSwitcher}\n />\n </Box>\n <Box className={styles.headerRight}>{header?.right}</Box>\n </Toolbar>\n </AppBar>\n <DialogContent className={styles.content}>{children}</DialogContent>\n </Dialog>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport {useInRouterContext, Link} from 'react-router-dom';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst InternalLink = (props: React.AnchorHTMLAttributes<HTMLAnchorElement>) => {\n const styles = useStyles();\n const inRouterContext = useInRouterContext();\n const {href, className, ...otherProps} = props;\n const linkClassName = classnames(styles.link, className);\n return inRouterContext && href ? (\n <Link to={href.replace(window.location.origin, '')} className={linkClassName} {...otherProps} />\n ) : (\n <a href={href} className={linkClassName} {...otherProps} />\n );\n};\n\nexport default InternalLink;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n loadingOverlay: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n opacity: 0.37,\n zIndex: 10,\n backgroundColor: '#fff'\n },\n transparent: {\n backgroundColor: 'transparent'\n },\n relativePosition: {\n '&$loadingOverlay': {\n position: 'relative'\n }\n }\n});\n","import React from 'react';\n\nimport classnames from 'classnames';\nimport {LinearProgress as LinearProgress} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n transparent?: boolean;\n relativePosition?: boolean;\n className?: string;\n};\n\nconst LinearLoadIndicator = ({transparent = false, relativePosition = false, className}: Props) => {\n const styles = useStyles();\n return (\n <>\n <div\n className={classnames(styles.loadingOverlay, className, {\n [styles.transparent]: transparent,\n [styles.relativePosition]: relativePosition\n })}\n >\n <LinearProgress color=\"secondary\" />\n </div>\n </>\n );\n};\n\nexport default LinearLoadIndicator;\n","import {Theme} from '@material-ui/core';\nimport {fade, makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n button: {\n minWidth: '30px',\n padding: '8px 8px',\n justifyContent: 'start',\n fill: 'rgba(0,0,0,0.54)',\n textTransform: 'none',\n borderColor: 'rgba(0,0,0,0.12)'\n },\n icon: {\n color: 'rgba(0,0,0,0.54)',\n width: '20px',\n height: '20px',\n marginRight: '8px'\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n },\n current: {\n '& $icon': {\n color: theme.palette.primary.main\n },\n backgroundColor: fade(theme.palette.primary.main, 0.12),\n fill: theme.palette.primary.main,\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.primary.main, 0.24)\n }\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport {Button as Button} from '@material-ui/core';\nimport {ButtonGroup as ButtonGroup} from '@material-ui/core';\nimport classnames from 'classnames';\nimport withTooltip from '../../HOCs/withTooltip/withTooltip';\nimport useStyles from './styles';\n\nconst ButtonWithTooltip = withTooltip(Button);\n\ntype Props<T> = {\n className: string;\n classes?: {\n button?: string;\n };\n modes: {\n id: T;\n title?: string;\n tooltipTitle?: string;\n Icon?: React.ElementType;\n disabled?: boolean;\n }[];\n modeId: T;\n onChange?: (mode: T) => void;\n};\n\nconst ModeSwitcher = <T extends unknown>({className, classes = {}, modes = [], modeId, onChange}: Props<T>) => {\n const styles = useStyles();\n\n const getChangeModeHandler = (newMode) => () => onChange(newMode);\n\n return (\n <ButtonGroup className={className}>\n {modes.map(({id, title, tooltipTitle, Icon, disabled}) => {\n return (\n <ButtonWithTooltip\n disabled={disabled}\n showForDisabled={disabled && !!tooltipTitle}\n key={String(id)}\n className={classnames(styles.button, {[styles.current]: modeId === id}, classes.button)}\n tooltipTitle={tooltipTitle}\n onClick={getChangeModeHandler(id)}\n data-reltio-id={`reltio-search-mode-${id}`}\n >\n {Icon && <Icon className={styles.icon} />}\n {title && <div className={styles.title}>{title}</div>}\n </ButtonWithTooltip>\n );\n })}\n </ButtonGroup>\n );\n};\n\nexport default ModeSwitcher;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => {\n const color = theme.palette.background.paper;\n return {\n popoverRoot: {\n backgroundColor: color,\n maxWidth: 1000\n },\n popper: {\n '&[x-placement*=\"bottom\"] $arrow': {\n top: 0,\n left: 0,\n marginTop: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n '&[x-placement*=\"top\"] $arrow': {\n bottom: 0,\n left: 0,\n marginBottom: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n '&[x-placement*=\"right\"] $arrow': {\n left: 0,\n marginLeft: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '100% 100%'\n }\n },\n '&[x-placement*=\"left\"] $arrow': {\n right: 0,\n marginRight: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '0 0'\n }\n }\n },\n arrow: {\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color,\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n boxShadow: theme.shadows[1],\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n }\n };\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Paper as Paper} from '@material-ui/core';\nimport {ClickAwayListener as ClickAwayListener} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport Popper from '../Popper/Popper';\nimport {useStyles} from './styles';\n\ntype PopperProps = React.ComponentPropsWithoutRef<typeof Popper>;\n\ntype Props = Pick<PopperProps, 'anchorEl' | 'open' | 'placement' | 'popperRef'> & {\n children: React.ReactNode;\n onClose?: () => void;\n arrow?: boolean;\n className?: string;\n};\n\nconst isChildOfPortalModal = (child) =>\n Array.from(document.querySelectorAll('[data-modal]')).some((el) => el.contains(child));\n\nexport const PopupWithArrow = ({\n anchorEl,\n placement = 'top',\n arrow = true,\n open,\n onClose = () => {},\n children,\n className,\n popperRef\n}: Props) => {\n const styles = useStyles();\n const [arrowRef, setArrowRef] = React.useState<HTMLElement | null>(null);\n const onClickOutside = (e: React.MouseEvent<Document>) => {\n if (!isChildOfPortalModal(e.target)) {\n onClose();\n }\n };\n return (\n <Popper\n anchorEl={anchorEl}\n placement={placement}\n className={classnames(styles.popper, className)}\n modifiers={{\n preventOverflow: {\n enabled: true,\n boundariesElement: 'window'\n },\n arrow: {\n enabled: arrow,\n element: arrowRef\n }\n }}\n open={open}\n modal={false}\n popperRef={popperRef}\n >\n <Box>\n <ClickAwayListener onClickAway={onClickOutside}>\n <Paper className={styles.popoverRoot}>\n {arrow ? <span className={styles.arrow} ref={setArrowRef} /> : null}\n <Box>{children}</Box>\n </Paper>\n </ClickAwayListener>\n </Box>\n </Popper>\n );\n};\n","import classNames from 'classnames';\nimport {isNil, pipe, tap} from 'ramda';\nimport React, {memo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport Input, {InputProps} from '@material-ui/core/Input';\nimport {InputAdornment as InputAdornment} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport SearchIcon from '@material-ui/icons/Search';\nimport {getValue, noop} from '../../core';\nimport SmallIconButton from '../SmallIconButton/SmallIconButton';\nimport {useStyles} from './styles';\n\nexport type SearchInputProps = InputProps & {\n value?: string;\n autofocus: boolean;\n onSearch: (value?: string) => void;\n rootRef?: React.MutableRefObject<HTMLInputElement>;\n height: number;\n placeholder?: string;\n};\n\nconst SearchInput = ({\n value,\n autofocus,\n onSearch = noop,\n rootRef,\n classes = {},\n height,\n placeholder = i18n.text('Search'),\n ...otherProps\n}: SearchInputProps) => {\n const styles = useStyles({height});\n\n const [localValue, setLocalValue] = useState('');\n\n const updateValue = pipe(tap(onSearch), setLocalValue);\n const clearValue = () => updateValue('');\n\n const inputValue = isNil(value) ? localValue : value;\n\n return (\n <Input\n startAdornment={\n <InputAdornment position=\"start\">\n <SearchIcon className={styles.icon} />\n </InputAdornment>\n }\n endAdornment={\n <InputAdornment position=\"end\">\n {inputValue.length > 0 && (\n <SmallIconButton icon={CloseIcon} className={styles.clearButton} onClick={clearValue} />\n )}\n </InputAdornment>\n }\n autoFocus={autofocus}\n classes={{\n ...classes,\n input: classNames(styles.input, classes.input),\n root: classNames(styles.container, classes.root)\n }}\n placeholder={placeholder}\n value={inputValue}\n onChange={pipe(getValue, updateValue)}\n disableUnderline={true}\n ref={rootRef}\n {...otherProps}\n />\n );\n};\n\nexport default memo(SearchInput);\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n height?: number;\n};\n\nexport const useStyles = makeStyles(() => ({\n container: ({height = 36}: StylesProps) => {\n return {\n height: height,\n borderRadius: '2px',\n alignItems: 'center',\n backgroundColor: 'rgba(0,0,0,0.03)',\n minWidth: '100px'\n };\n },\n icon: {\n opacity: 0.67,\n marginLeft: '10px',\n marginRight: '6px'\n },\n input: {\n fontSize: '13px',\n width: '100%'\n },\n clearButton: {\n marginRight: '10px'\n },\n white: {\n backgroundColor: 'rgb(255, 255, 255)',\n boxShadow: '0 1px 3px 0 rgba(0,0,0,0.24)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport Popover, {PopoverProps} from '@material-ui/core/Popover';\n\nimport useStyles from './styles.js';\nimport SearchInput from '../SearchInput/SearchInput';\n\ntype Props = {\n title: string;\n containerWidth: number;\n containerHeight: number;\n children: React.ReactNode;\n PaperProps?: Record<string, unknown>;\n searchInputOnKeyDown: (event: React.KeyboardEvent) => void;\n onSearch: (value?: string) => void;\n className?: string;\n hideTitle?: boolean;\n hideSearchInput?: boolean;\n headerPlacement?: 'top' | 'bottom';\n searchInputRef?: React.Ref<unknown>;\n} & PopoverProps;\n\nconst SelectionPopup = ({\n title,\n className,\n onSearch,\n hideTitle,\n hideSearchInput,\n headerPlacement = 'top',\n containerWidth,\n containerHeight,\n searchInputOnKeyDown,\n children,\n searchInputRef,\n anchorOrigin = {\n vertical: 'top',\n horizontal: 'right'\n },\n transformOrigin = {\n vertical: 'top',\n horizontal: 'right'\n },\n ...otherProps\n}: Props) => {\n const classes = useStyles({containerWidth, containerHeight});\n const header = (\n <>\n {!hideTitle && <div className={classes.header}>{title}</div>}\n {!hideSearchInput && (\n <SearchInput\n onSearch={onSearch}\n autofocus={true}\n onKeyDown={searchInputOnKeyDown}\n inputRef={searchInputRef}\n classes={{root: classes.searchInputContainer}}\n placeholder={i18n.text('Search & add attributes')}\n height={40}\n />\n )}\n </>\n );\n return (\n <Popover anchorOrigin={anchorOrigin} transformOrigin={transformOrigin} {...otherProps}>\n <div className={classnames(classes.container, className)} style={{width: containerWidth}}>\n {headerPlacement === 'top' && header}\n <div className={classes.list}>{children}</div>\n {headerPlacement === 'bottom' && header}\n </div>\n </Popover>\n );\n};\n\nexport default SelectionPopup;\n","import React, {useState, useEffect, useRef, useCallback} from 'react';\nimport {isNil} from 'ramda';\nimport {isTitleItem} from '../VirtualGroupedList/VirtualGroupedList';\n\ntype Item = {\n titleItemIndex?: number;\n index: number;\n item: {\n item: Record<string, unknown>;\n moveTo?: number;\n };\n};\n\ntype FocusIndex = number | null;\n\ntype Props = {\n items: Item[];\n open: boolean;\n onSelectFocusedItem: (item: {item: Item['item']['item']; groupData: Item['item']}) => void;\n selectedItems: string[];\n onClose: (event: React.KeyboardEvent) => void;\n};\n\nconst useKeyboardNavigation = ({items, open, onSelectFocusedItem, selectedItems, onClose}: Props) => {\n const [focusIndex, setFocusIndex] = useState<FocusIndex>(null);\n const restoreFocusIndex = useRef<boolean>(false);\n\n const increaseFocusIndex = useCallback(\n (currentIndex: FocusIndex): number => {\n let newIndex = currentIndex === null ? increaseFocusIndex(-1) : currentIndex;\n while (\n currentIndex !== null &&\n newIndex < items.length &&\n (newIndex <= currentIndex || (newIndex >= 0 && isTitleItem(items[newIndex])))\n ) {\n newIndex += 1;\n }\n return newIndex !== items.length ? newIndex : increaseFocusIndex(-1);\n },\n [items]\n );\n\n const decreaseFocusIndex = useCallback(\n (currentIndex: FocusIndex): number => {\n let newIndex = currentIndex === null ? items.length - 1 : currentIndex;\n while (\n currentIndex !== null &&\n newIndex >= 0 &&\n (newIndex >= currentIndex || isTitleItem(items[newIndex]))\n ) {\n newIndex -= 1;\n }\n return newIndex < 0 ? items.length - 1 : newIndex;\n },\n [items]\n );\n\n const handleSelectFocusedItem = useCallback(() => {\n if (!isNil(focusIndex)) {\n const item = items[focusIndex].item;\n !item.item.notSelectable && onSelectFocusedItem({item: item.item, groupData: item});\n }\n }, [onSelectFocusedItem, items, focusIndex]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (items.length === 0) {\n return;\n }\n switch (event.key) {\n case 'Down': // IE/Edge specific value\n case 'ArrowDown':\n setFocusIndex(increaseFocusIndex);\n event.preventDefault();\n return false;\n case 'Up': // IE/Edge specific value\n case 'ArrowUp':\n setFocusIndex(decreaseFocusIndex);\n event.preventDefault();\n return false;\n case 'Enter':\n restoreFocusIndex.current = true;\n handleSelectFocusedItem();\n break;\n case 'Tab':\n onClose && onClose(event);\n break;\n default:\n return;\n }\n },\n [items, increaseFocusIndex, decreaseFocusIndex, handleSelectFocusedItem, onClose]\n );\n\n useEffect(() => {\n if (restoreFocusIndex.current) {\n restoreFocusIndex.current = false;\n const moveIndex = items.findIndex((listItem) => listItem.item.moveTo);\n moveIndex > -1 && setFocusIndex(moveIndex);\n } else {\n setFocusIndex(null);\n }\n }, [items, open, selectedItems]);\n\n return {focusIndex, handleKeyDown};\n};\n\nexport {useKeyboardNavigation};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst margin = '16px';\nconst useStyles = makeStyles(() => ({\n container: ({containerHeight = 553, containerWidth}) => {\n return {\n display: 'flex',\n flexDirection: 'column',\n height: containerHeight,\n width: containerWidth,\n flexGrow: 1\n };\n },\n header: {\n marginLeft: margin,\n marginTop: '16px',\n marginBottom: '12px',\n fontSize: '16px',\n fontWeight: 500,\n letterSpacing: '0.15px',\n lineHeight: '24px'\n },\n searchInputContainer: {\n margin: `0 ${margin} 12px ${margin}`,\n flexShrink: '0'\n },\n list: {\n flexGrow: 1,\n height: 0,\n overflow: 'hidden',\n width: '100%',\n position: 'relative',\n\n '& ul': {\n paddingBottom: 0,\n paddingTop: 0\n }\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n label: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '13px',\n lineHeight: '15px'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport RequiredMark from '../RequiredMark/RequiredMark';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n isRequired?: boolean;\n className?: string;\n};\n\nconst Title = ({label, isRequired, className, ...otherProps}: Props) => {\n const styles = useStyles();\n\n return (\n <Typography className={classnames(styles.label, className)} component=\"span\" {...otherProps}>\n {label}\n {isRequired && <RequiredMark />}\n </Typography>\n );\n};\n\nexport default Title;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n stickyTitlesWrapper: {\n position: 'absolute',\n top: 0,\n '& > div': {\n zIndex: 1,\n position: 'absolute',\n top: 0,\n width: '100%',\n visibility: 'hidden'\n }\n }\n});\n","import React, {useCallback, useEffect, useRef, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {VariableSizeList as List} from 'react-window';\nimport ReactResizeDetector from 'react-resize-detector';\n\nimport {useStyles} from './styles';\nimport {useScrollToFocusItem} from './helpers';\n\n/*\nitems = [\n {\n item: {\n item: {},\n level: number\n },\n titleItemIndex: number,\n index: number,\n moveTo: true|false,\n items: [...]\n ...\n }\n]\n*/\nconst OVERSCAN_COUNT = 5;\n\nconst isTitleItem = (listItem) => listItem.titleItemIndex === listItem.index;\n\nconst VirtualGroupedList = ({\n items,\n getItemSize,\n renderItem,\n renderGroupTitle,\n width = '100%',\n height,\n fixedTitle = true,\n itemKey = (i) => i,\n disableHorizontalScrollbar,\n hideSubtitles,\n focusIndex = null,\n onInnerContainerResize\n}) => {\n const styles = useStyles();\n\n const listRef = useRef(null);\n const itemsRef = useRef(null);\n const titlesRef = useRef(null);\n\n const itemOffsets = useRef([0]);\n const stepCalcOffset = 10;\n const stickyItemClass = 'stickyTitleItem';\n const currentTitleParams = {\n topMargin: 0\n };\n const isGroupHasSubTitles = (groupedItems) => (groupedItems || []).some((item) => item.titleItemIndex !== null);\n\n const hasSubTitles = useMemo(() => !hideSubtitles || isGroupHasSubTitles(items), [items, hideSubtitles]);\n\n const calcOffsetsToIndex = useCallback(\n (index) => {\n const curItemsLength = itemOffsets.current.length;\n let prevItemSize = 0;\n items.slice(curItemsLength - 1, index + 1).forEach((listItem, i) => {\n const realIndex = curItemsLength + i - 1;\n if (i > 0) itemOffsets.current[realIndex] = itemOffsets.current[realIndex - 1] + prevItemSize;\n\n prevItemSize = getItemSize(realIndex, listItem.item);\n });\n },\n [getItemSize, items]\n );\n\n const getTitleByIndex = useCallback((index) => items[index].titleItemIndex, [items]);\n const getItemByIndex = useCallback((index) => items[index], [items]);\n\n useEffect(() => {\n requestAnimationFrame(() => {\n listRef.current && listRef.current.scrollTo(0);\n });\n }, [items.length]);\n\n useEffect(() => {\n const calcMoveToOffset = (items) => {\n const indexItem = items.findIndex((listItem) => listItem.item.moveTo);\n if (indexItem > -1) {\n calcOffsetsToIndex(indexItem);\n const titleIndex = getTitleByIndex(indexItem);\n return {\n offset: itemOffsets.current[indexItem],\n titleHeight: getItemSize(titleIndex, getItemByIndex(titleIndex).item)\n };\n }\n };\n\n listRef.current && listRef.current.resetAfterIndex(0);\n\n setTitleWidth();\n\n const scrollToOffset = calcMoveToOffset(items);\n if (scrollToOffset && scrollToOffset.offset && listRef.current) {\n const {titleHeight} = scrollToOffset;\n const offset = scrollToOffset.offset - titleHeight;\n if (offset < listRef.current.state.scrollOffset || offset > listRef.current.state.scrollOffset + height) {\n requestAnimationFrame(() => {\n listRef.current && listRef.current.scrollTo(offset - (height - titleHeight) / 2);\n });\n }\n }\n }, [calcOffsetsToIndex, getItemByIndex, getItemSize, getTitleByIndex, height, itemOffsets, items, listRef]);\n\n const setTitleWidth = () => {\n if (titlesRef.current && itemsRef.current) {\n titlesRef.current.style.width = itemsRef.current.offsetWidth + 'px';\n }\n };\n\n const getNextTitleIndex = (fromIndex) =>\n items.findIndex((listItem, index) => isTitleItem(listItem) && fromIndex < index);\n\n const getItemByOffset = useCallback(\n (scrollOffset) => {\n let result = null;\n let offset = 0;\n\n items.some((listItem, index) => {\n calcOffsetsToIndex(index + stepCalcOffset);\n const nextOffset = itemOffsets.current[index + 1];\n\n if (scrollOffset >= offset && scrollOffset < nextOffset)\n result = {\n index,\n offset,\n listItem\n };\n\n offset = nextOffset;\n return result;\n });\n return result;\n },\n [calcOffsetsToIndex, itemOffsets, items]\n );\n\n const setTitleTopMargin = (topMargin) => {\n if (titlesRef.current) {\n currentTitleParams.topMargin = -topMargin;\n titlesRef.current.style.top = -topMargin + 'px';\n }\n };\n\n const setTitleByIndex = (index) => {\n titlesRef.current &&\n [...titlesRef.current.querySelectorAll('.' + stickyItemClass)].forEach((title) => {\n if (title.dataset.index === index.toString()) {\n title.style.visibility = 'visible';\n currentTitleParams.index = index;\n } else title.style.visibility = 'hidden';\n });\n };\n\n const getOffsetByIndex = (index) => {\n calcOffsetsToIndex(index);\n\n return itemOffsets.current[index];\n };\n\n const onScroll = ({scrollOffset, scrollDirection}) => {\n if (!fixedTitle || !hasSubTitles) return;\n\n const topItem = getItemByOffset(scrollOffset);\n const currentTitleIndex = topItem && getTitleByIndex(topItem.index);\n\n currentTitleIndex !== null && setTitleByIndex(currentTitleIndex);\n\n setTitleWidth();\n\n const titleHeight =\n currentTitleIndex !== null && getItemSize(currentTitleIndex, getItemByIndex(currentTitleIndex).item);\n const itemAfterTitle = getItemByOffset(scrollOffset + titleHeight + currentTitleParams.topMargin);\n\n let topMargin = 0;\n if (itemAfterTitle) {\n switch (scrollDirection) {\n case 'forward':\n if (itemAfterTitle.offset - scrollOffset > 0 && isTitleItem(itemAfterTitle.listItem))\n topMargin = titleHeight - (itemAfterTitle.offset - scrollOffset);\n break;\n case 'backward':\n {\n const nextTitleIndex = currentTitleIndex > -1 && getNextTitleIndex(currentTitleIndex);\n const nextTitleOffset = getOffsetByIndex(nextTitleIndex);\n\n if (\n nextTitleIndex > -1 &&\n scrollOffset < nextTitleOffset &&\n titleHeight >= nextTitleOffset - scrollOffset\n )\n topMargin = titleHeight - (nextTitleOffset - scrollOffset);\n }\n break;\n }\n setTitleTopMargin(topMargin);\n }\n };\n\n const _getItemSize = useCallback((index) => getItemSize(index, getItemByIndex(index).item), [\n getItemByIndex,\n getItemSize\n ]);\n\n const render = useCallback(\n ({index, style, data}) => {\n const listItem = getItemByIndex(index);\n return (\n listItem.item &&\n ((isTitleItem(listItem) && renderGroupTitle(style, listItem.item)) ||\n renderItem(style, listItem.item, index, data))\n );\n },\n [getItemByIndex, renderGroupTitle, renderItem]\n );\n\n const {handleOnItemsRendered} = useScrollToFocusItem({items, focusIndex, listRef});\n const renderTitles = useCallback(() => {\n const renderTitle = (listItem) => (\n <div\n className={stickyItemClass}\n style={{visibility: 'hidden'}}\n data-index={listItem.index}\n key={listItem.index}\n >\n {renderGroupTitle({height: getItemSize(listItem.index, listItem.item)}, listItem.item)}\n </div>\n );\n\n return items.filter((listItem) => isTitleItem(listItem)).map((listItem) => renderTitle(listItem));\n }, [getItemSize, items, renderGroupTitle]);\n\n return (\n <>\n <div ref={titlesRef} className={styles.stickyTitlesWrapper}>\n {fixedTitle && renderTitles()}\n </div>\n {onInnerContainerResize && itemsRef.current && (\n <ReactResizeDetector handleHeight onResize={onInnerContainerResize} targetDomEl={itemsRef.current} />\n )}\n <List\n ref={listRef}\n itemCount={items.length}\n itemSize={_getItemSize}\n width={width}\n height={height}\n itemKey={itemKey}\n innerRef={itemsRef}\n onScroll={onScroll}\n style={disableHorizontalScrollbar ? {overflowX: 'hidden'} : undefined}\n overscanCount={OVERSCAN_COUNT}\n onItemsRendered={handleOnItemsRendered}\n >\n {render}\n </List>\n </>\n );\n};\n\nVirtualGroupedList.propTypes = {\n items: PropTypes.arrayOf(PropTypes.object).isRequired,\n getItemSize: PropTypes.func.isRequired,\n renderItem: PropTypes.func.isRequired,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.number.isRequired,\n renderGroupTitle: PropTypes.func,\n fixedTitle: PropTypes.bool,\n hideSubtitles: PropTypes.bool,\n itemKey: PropTypes.func,\n disableHorizontalScrollbar: PropTypes.bool,\n focusIndex: PropTypes.number,\n onInnerContainerResize: PropTypes.func\n};\n\nexport default VirtualGroupedList;\nexport {isTitleItem};\n","import {flatten} from 'ramda';\nimport {useCallback, useEffect, useRef} from 'react';\n\nexport const SCROLL_COUNT = 3;\n\nconst flattenGroupedItemsData = (groupedItems) => {\n const getFlattenedItems = (items) =>\n flatten(items.map((item) => [item].concat(item.items ? getFlattenedItems(item.items) : [])));\n\n let titleItemIndex = null;\n const items = getFlattenedItems(groupedItems).map((item, index) => {\n if (item && item.items) {\n titleItemIndex = index;\n }\n return {item, index, titleItemIndex};\n });\n return items;\n};\n\nconst useScrollToFocusItem = ({focusIndex, listRef, items}) => {\n const visibleStartIndexRef = useRef(null);\n const visibleStopIndexRef = useRef(null);\n const handleOnItemsRendered = useCallback(({visibleStartIndex, visibleStopIndex}) => {\n visibleStartIndexRef.current = visibleStartIndex;\n visibleStopIndexRef.current = visibleStopIndex;\n }, []);\n useEffect(() => {\n if (!listRef.current || focusIndex === null || items.length === 0) {\n return;\n }\n\n if (focusIndex < Math.max(visibleStartIndexRef.current + SCROLL_COUNT, 0)) {\n listRef.current.scrollToItem(Math.max(focusIndex - SCROLL_COUNT, 0), 'start');\n } else if (focusIndex > Math.min(visibleStopIndexRef.current - SCROLL_COUNT, items.length - 1)) {\n listRef.current.scrollToItem(Math.min(focusIndex + SCROLL_COUNT, items.length - 1), 'end');\n }\n }, [focusIndex, items.length, listRef]);\n return {handleOnItemsRendered};\n};\n\nexport {flattenGroupedItemsData, useScrollToFocusItem};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst lineStyle = '1px solid #AFD4E9';\n\nconst horizontalLineWidth = 5;\nconst verticalNodeGap = 14;\nconst arrowWidth = 16;\n\nexport const useStyles = makeStyles({\n decorator: {\n marginLeft: arrowWidth / 2,\n borderLeft: lineStyle,\n '&:last-child': {\n borderLeft: 'none',\n '&:before': {\n borderLeft: lineStyle\n }\n },\n '&:before': {\n top: 0,\n height: verticalNodeGap,\n width: horizontalLineWidth,\n borderBottom: lineStyle,\n content: '\"\"',\n display: 'block',\n left: '0'\n },\n '&$plain': {\n '&:before': {\n width: 0\n }\n }\n },\n plain: {},\n wrapper: {\n marginLeft: horizontalLineWidth + 11,\n marginTop: -8\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n plain?: boolean;\n enabled?: boolean;\n};\n\nconst BranchDecorator = ({className, children, plain = false, enabled = false}: Props) => {\n const styles = useStyles();\n return enabled ? (\n <div className={classnames(styles.decorator, {[styles.plain]: plain}, className)}>\n <div className={styles.wrapper}>{children}</div>\n </div>\n ) : (\n <>{children}</>\n );\n};\n\nexport default BranchDecorator;\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: 'flex',\n alignContent: 'center',\n flexDirection: 'column'\n },\n main: {\n position: 'relative',\n padding: '0 86px',\n marginTop: 'auto'\n },\n mainImageContainer: {\n display: 'flex',\n alignContent: 'center',\n height: '100%',\n width: '100%'\n },\n mainImage: {\n maxWidth: 'calc(100vw - 512px)',\n maxHeight: 'calc(100vh - 192px)',\n margin: '0 auto',\n userSelect: 'none'\n },\n arrowButton: {\n backgroundColor: theme.palette.divider,\n color: 'white',\n '&:hover': {\n backgroundColor: theme.palette.divider\n }\n },\n arrowButtonPrev: {\n position: 'absolute',\n top: '50%',\n left: '16px',\n transform: 'translateY(-50%)'\n },\n arrowButtonNext: {\n position: 'absolute',\n top: '50%',\n right: '16px',\n transform: 'translateY(-50%)'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n thumbnails: {\n marginLeft: '12px',\n marginBottom: '12px',\n marginTop: 'auto',\n width: 'calc(100vw - 364px)',\n overflowX: 'auto',\n overflowY: 'hidden'\n },\n gridContainer: {\n width: '100%'\n },\n thumb: {\n width: '96px',\n height: '96px',\n cursor: 'pointer',\n userSelect: 'none'\n },\n inactiveThumb: {\n filter: 'brightness(0.5)'\n }\n}));\n","import React, {useEffect, useRef} from 'react';\nimport {Grid as Grid} from '@material-ui/core';\nimport {getImageAttributeOvThumbnailUrl, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image from '../../../Image/Image';\nimport {useStyles} from './styles';\n\nexport const IMAGE_WIDTH = 96;\nexport const IMAGE_PADDING = 16;\nexport const CONTAINER_MARGIN = 12;\n\ntype Props = {\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const Thumbnails = ({attributeValues, setAttributeValueIndex, attributeValueIndex}: Props) => {\n const styles = useStyles();\n const gridRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (gridRef?.current) {\n const containerScrollLeft = gridRef.current.scrollLeft;\n const containerOffsetWidth = gridRef.current.offsetWidth;\n const containerWidth = containerOffsetWidth + containerScrollLeft;\n const currentElementPosition =\n attributeValueIndex * IMAGE_WIDTH + attributeValueIndex * IMAGE_PADDING + CONTAINER_MARGIN;\n if (containerWidth < currentElementPosition) {\n if (gridRef.current.scroll) {\n if (currentElementPosition > containerWidth + IMAGE_WIDTH + IMAGE_PADDING) {\n gridRef.current.scroll(currentElementPosition, 0);\n } else {\n gridRef.current.scroll(IMAGE_WIDTH + IMAGE_PADDING + containerScrollLeft, 0);\n }\n }\n } else if (containerScrollLeft + IMAGE_WIDTH > currentElementPosition) {\n if (gridRef.current.scroll) {\n gridRef.current.scroll(currentElementPosition - IMAGE_WIDTH, 0);\n }\n }\n }\n }, [attributeValueIndex, gridRef]);\n\n return (\n <div ref={gridRef} className={styles.thumbnails}>\n <Grid container wrap=\"nowrap\" direction=\"row\" spacing={1} className={styles.gridContainer}>\n {attributeValues.map(({uri, value}, index) => (\n <Grid item key={uri}>\n <Image\n onClick={() => setAttributeValueIndex(index)}\n className={classnames(styles.thumb, {\n [styles.inactiveThumb]: attributeValueIndex !== index\n })}\n src={getImageAttributeOvThumbnailUrl({value})}\n />\n </Grid>\n ))}\n </Grid>\n </div>\n );\n};\n","import React from 'react';\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport {ImageAttributeValue, getImageAttributeOvPreviewUrl} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport {useStyles} from './styles';\nimport {Thumbnails} from './Thumbnails/Thumbnails';\n\ntype Props = {\n className?: string;\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const ImageDetailsViewCarousel = ({\n className,\n attributeValues,\n attributeValueIndex,\n setAttributeValueIndex\n}: Props) => {\n const styles = useStyles();\n const attributeValue = attributeValues[attributeValueIndex];\n const mainImageSrc = getImageAttributeOvPreviewUrl(attributeValue);\n\n const onPrevImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex - 1);\n };\n\n const onNextImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex + 1);\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <div className={styles.main}>\n {attributeValueIndex > 0 && (\n <SmallIconButton\n icon={NavigateBeforeIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonPrev)}\n onClick={onPrevImageButtonClick}\n size=\"XL\"\n />\n )}\n <Image\n containerClassName={styles.mainImageContainer}\n className={styles.mainImage}\n size={mainImageSrc && ImageSizesStyles.OVERRIDE}\n src={mainImageSrc}\n />\n {attributeValueIndex !== attributeValues.length - 1 && (\n <SmallIconButton\n icon={NavigateNextIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonNext)}\n onClick={onNextImageButtonClick}\n size=\"XL\"\n />\n )}\n </div>\n <Thumbnails\n attributeValues={attributeValues}\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={setAttributeValueIndex}\n />\n </div>\n );\n};\n","import i18n from 'ui-i18n';\n\nexport const SYSTEM_ATTRIBUTES_TITLES = {\n get CreationTime() {\n return i18n.text('Creation Time');\n },\n get CreationDate() {\n return i18n.text('Creation Date');\n },\n get Dimensions() {\n return i18n.text('Dimensions');\n },\n get MimeType() {\n return i18n.text('Mime Type');\n },\n get Size() {\n return i18n.text('Size');\n },\n get Url() {\n return i18n.text('Full image URL (S3)');\n },\n get UrlPreview() {\n return i18n.text('Preview image URL (S3)');\n },\n get UrlThumbnail() {\n return i18n.text('Small image URL (S3)');\n },\n get CdnUrl() {\n return i18n.text('Full image URL (CDN)');\n },\n get CdnUrlPreview() {\n return i18n.text('Preview image URL (CDN)');\n },\n get CdnUrlThumbnail() {\n return i18n.text('Small image URL (CDN)');\n }\n};\n","import {path} from 'ramda';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {ImageAttributeValue, AttributeType} from '@reltio/mdm-sdk';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {SYSTEM_ATTRIBUTES_TITLES} from '../constants';\n\nexport const getFormattedSystemImageAttributeValue = (\n {value}: ImageAttributeValue = {} as ImageAttributeValue,\n name: string\n) => {\n if (\n ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail', 'MimeType'].includes(name)\n ) {\n return path([name, 0, 'value'], value);\n }\n\n if (name === 'CreationDate' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('MM-DD-YYYY');\n }\n\n if (name === 'CreationTime' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('HH:mm:ss');\n }\n\n if (name === 'Dimensions' && path(['Height', 0, 'value'], value) && path(['Width', 0, 'value'], value)) {\n return `${value.Height[0].value} x ${value.Width[0].value} ${i18n.text('pixels')}`;\n }\n\n if (name === 'Size' && path(['Size', 0, 'value'], value)) {\n const size = (Number(value.Size[0].value) / 1000).toFixed(2);\n return `${size} KB`;\n }\n};\n\nconst filterByNotSystemAttributeTypes = (attrTypes: AttributeType[] = []) => {\n return attrTypes.filter(({system}) => !system);\n};\n\nexport const filterByFieldsOrder = (keys: string[], fieldsOrder: ImageAttributeFieldsOrder) => {\n const {includeNames = [], excludeNames = [], order = []} = fieldsOrder;\n\n const filteredKeys = includeNames.length\n ? keys.filter((key) => includeNames.includes(key))\n : keys.filter((key) => !excludeNames.includes(key));\n\n if (order.length === 0) {\n return filteredKeys;\n }\n\n return filteredKeys.sort((a, b) => {\n const indA = order.indexOf(a);\n const indB = order.indexOf(b);\n if (indA === -1 && indB !== -1) return 1;\n if (indB === -1 && indA !== -1) return -1;\n return indA - indB;\n });\n};\n\nexport const getMoreAttrTypes = (attrType: AttributeType) => {\n return filterByNotSystemAttributeTypes(attrType.attributes);\n};\n\nexport const getSystemAttributesList = (attrValue: ImageAttributeValue, fieldsOrder: ImageAttributeFieldsOrder) => {\n return filterByFieldsOrder(Object.keys(SYSTEM_ATTRIBUTES_TITLES), fieldsOrder)\n .map((key) => {\n const value = getFormattedSystemImageAttributeValue(attrValue, key);\n\n if (!value) {\n return null;\n }\n\n return {\n title: SYSTEM_ATTRIBUTES_TITLES[key],\n value: getFormattedSystemImageAttributeValue(attrValue, key),\n isLink: isLink(key)\n };\n })\n .filter(Boolean);\n};\n\nexport const getNotSystemAttributesList = (\n attrValue: ImageAttributeValue = {} as ImageAttributeValue,\n attrType: AttributeType,\n fieldsOrder: ImageAttributeFieldsOrder\n) => {\n const notSystemAttrTypes = filterByNotSystemAttributeTypes(attrType.attributes);\n\n return filterByFieldsOrder(Object.keys(attrValue.value || {}), fieldsOrder).reduce((result, key) => {\n const attrType = notSystemAttrTypes.find(({name}) => name === key);\n return attrType ? [...result, {attrType: attrType, values: attrValue.value[key]}] : result;\n }, []);\n};\n\nexport const isLink = (key: string) => {\n return ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail'].includes(key);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n title: {\n marginBottom: '10px',\n color: 'white',\n fontSize: '18px',\n lineHeight: '21px',\n '&$canAdd': {\n marginBottom: '3px'\n }\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n canAdd: {}\n});\n","import React, {Fragment} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {AttributeType, AttributeItem} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport MoreAttributesButton from '../../attributes/editMode/MoreAttributesButton';\nimport {getMoreAttrTypes} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n uri: string;\n onAddAttributes?: (items: AttributeItem[]) => void;\n};\n\nexport const MetaInfoHeader = ({attributeType, onAddAttributes, uri}: Props) => {\n const styles = useStyles();\n const moreAttrTypes = getMoreAttrTypes(attributeType);\n const canAdd = Boolean(onAddAttributes);\n\n const handleApply = (attrTypes: AttributeType[]) => {\n if (onAddAttributes) {\n onAddAttributes(attrTypes.map((attributeType) => ({attributeType, parentUri: uri})));\n }\n };\n\n return (\n <Box>\n <Typography className={classnames(styles.title, {[styles.canAdd]: canAdd})}>\n {i18n.text('Meta info')}\n </Typography>\n {canAdd && (\n <Fragment>\n <MoreAttributesButton\n label={i18n.text('Attributes')}\n data={moreAttrTypes}\n dense={false}\n onApply={handleApply}\n />\n <Divider className={styles.divider} />\n </Fragment>\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n marginBottom: '11px'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n marginRight: '12px',\n float: 'left'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n content?: string;\n isLink?: boolean;\n children?: React.ReactNode;\n};\n\nexport const MetaInfoItem = ({title, content, isLink, children}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n <span className={styles.title}>{title}</span>\n {isLink ? (\n <a className={styles.link} href={content}>\n {i18n.text('link')}\n </a>\n ) : (\n <span className={styles.content}>{content || children}</span>\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n padding: '10px 0'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n fontSize: '13px'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport AttributesPager from '../../attributes/readMode/AttributesPager';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoItem} from './MetaInfoItem/MetaInfoItem';\nimport {getNotSystemAttributesList, getSystemAttributesList} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ImageAttributeValue;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n};\n\nexport const MetaInfoList = ({attributeValue, attributeType, imageAttributeFieldsOrder}: Props) => {\n const styles = useStyles();\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n\n const systemAttributesList = getSystemAttributesList(attributeValue, imageAttributeFieldsOrder);\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n\n return (\n <Box className={styles.root}>\n {systemAttributesList.map(({title, value, isLink}) => (\n <MetaInfoItem key={title} isLink={isLink} title={title} content={value} />\n ))}\n {isViewMode &&\n notSystemAttributesList.map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={false}\n values={values}\n titleClassName={styles.title}\n contentClassName={styles.content}\n parentUri={attributeValue.uri}\n />\n ))}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {},\n form: {\n padding: '10px 0'\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n actions: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '4px'\n },\n cancelButton: {\n color: 'white',\n marginRight: '8px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, ImageAttributeValue, Mode, isTempUri, AttributeItem} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport AttributesPager from '../../attributes/editMode/AttributesPager';\nimport {getNotSystemAttributesList} from '../helpers';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeValue: ImageAttributeValue;\n hasChanges: boolean;\n onDeleteAttribute: (item: AttributeItem) => void;\n onChangeAttribute: (item: AttributeItem) => void;\n onAddAttributes: (items: AttributeItem[]) => void;\n onCancel: () => void;\n onApply: () => void;\n mode: Mode;\n};\n\nexport const MetaInfoForm = ({\n attributeType,\n imageAttributeFieldsOrder,\n attributeValue,\n hasChanges,\n onDeleteAttribute,\n onChangeAttribute,\n onAddAttributes,\n onCancel,\n onApply,\n mode\n}: Props) => {\n const styles = useStyles();\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n const shouldShowActionButtons =\n notSystemAttributesList.length !== 0 || (notSystemAttributesList.length === 0 && hasChanges);\n\n return (\n <Box className={styles.root}>\n <Box className={styles.form}>\n {notSystemAttributesList.map(({attrType, values}) => {\n return (\n <AttributesPager\n key={attrType.uri}\n parentUri={attributeValue.uri}\n attributeType={attrType}\n values={values}\n showEmptyEditors={isTempUri(attributeValue.uri)}\n mode={mode}\n drawLines={false}\n onDeleteAttribute={onDeleteAttribute}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n />\n );\n })}\n </Box>\n {shouldShowActionButtons && (\n <>\n <Divider className={styles.divider} />\n <Box className={styles.actions}>\n <Button disabled={!hasChanges} onClick={onCancel} className={styles.cancelButton}>\n {i18n.text('Cancel')}\n </Button>\n <Button disabled={!hasChanges} onClick={onApply} color=\"primary\">\n {i18n.text('Apply')}\n </Button>\n </Box>\n </>\n )}\n </Box>\n );\n};\n","import {useEffect, useState, useContext, useCallback} from 'react';\nimport {equals} from 'ramda';\nimport {useDispatch} from 'react-redux';\nimport {profile} from '@reltio/mdm-module';\nimport {\n addAttribute,\n editAttribute,\n removeAttribute,\n AttributeType,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '../../../contexts';\n\ntype Params = {\n initialAttributeValue: ImageAttributeValue;\n attributeType: AttributeType;\n};\n\nexport const useEditMetaInfo = ({initialAttributeValue, attributeType}: Params) => {\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const [attributeValue, setAttributeValue] = useState(initialAttributeValue);\n\n useEffect(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const nestingLevel = 1;\n const hasChanges = !equals(attributeValue, initialAttributeValue);\n\n const addAttributes = useCallback((attributes: AttributeItem[]) => {\n setAttributeValue((prevAttrValue) => {\n return attributes.reduce((attrValue, attribute) => {\n const {attributeType, parentUri, index} = attribute;\n return addAttribute({\n entity: attrValue,\n attributeType,\n parentUri,\n index,\n nestingLevel\n }) as ImageAttributeValue;\n }, prevAttrValue);\n });\n }, []);\n\n const changeAttribute = useCallback(({value, attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n editAttribute({\n entity: prevAttrValue,\n attributeType,\n uri,\n value,\n nestingLevel\n }) as ImageAttributeValue\n );\n }, []);\n\n const deleteAttribute = useCallback(({attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n removeAttribute({entity: prevAttrValue, attributeType, uri, nestingLevel}) as ImageAttributeValue\n );\n }, []);\n\n const clearLocalChanges = useCallback(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const applyLocalChanges = useCallback(() => {\n dispatch(\n profile.actions.modifyAttribute({\n value: attributeValue,\n attributeType: attributeType,\n uri: attributeValue.uri,\n viewId\n })\n );\n }, [attributeValue, attributeType, viewId, dispatch]);\n\n return {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n };\n};\n","import {theme} from '@reltio/mdm-sdk';\n\nconst darkTheme = {\n palette: {\n type: 'dark',\n primary: theme.palette.primary,\n secondary: theme.palette.secondary\n }\n} as const;\n\nexport {darkTheme};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {MuiThemeProvider, createMuiTheme} from '@material-ui/core/styles';\nimport {Box as Box} from '@material-ui/core';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoHeader} from '../MetaInfoHeader/MetaInfoHeader';\nimport {MetaInfoList} from '../MetaInfoList/MetaInfoList';\nimport {MetaInfoForm} from '../MetaInfoForm/MetaInfoForm';\nimport {useEditMetaInfo} from '../hooks/useEditMetaInfo';\nimport {darkTheme} from '../theme';\n\nconst darkMuiTheme = createMuiTheme(darkTheme);\n\ntype Props = {\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n attributeValue: ImageAttributeValue;\n};\n\nexport const MetaInfo = ({imageAttributeFieldsOrder, attributeType, attributeValue: initialAttributeValue}: Props) => {\n const {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n } = useEditMetaInfo({attributeType, initialAttributeValue});\n const mode = useSelector(mdm.selectors.getMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n return (\n <MuiThemeProvider theme={darkMuiTheme}>\n <Box>\n <MetaInfoHeader\n attributeType={attributeType}\n uri={attributeValue?.uri}\n onAddAttributes={isEditableMode ? addAttributes : undefined}\n />\n <MetaInfoList\n attributeType={attributeType}\n attributeValue={attributeValue}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n />\n {isEditableMode && (\n <MetaInfoForm\n mode={mode}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeType={attributeType}\n attributeValue={attributeValue}\n hasChanges={hasChanges}\n onDeleteAttribute={deleteAttribute}\n onChangeAttribute={changeAttribute}\n onAddAttributes={addAttributes}\n onCancel={clearLocalChanges}\n onApply={applyLocalChanges}\n />\n )}\n </Box>\n </MuiThemeProvider>\n );\n};\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative',\n backgroundColor: '#333',\n maxHeight: 'calc(100vh - 64px)',\n overflow: 'hidden'\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n paddingLeft: '16px',\n boxShadow: `0 1px 0 0 ${theme.palette.divider}`\n },\n headerTitle: {\n color: 'rgba(255, 255, 255, 0.87)',\n fontSize: '16px',\n lineHeight: '19px'\n },\n bodyWrapper: {\n maxHeight: 'calc(100% - 56px)',\n overflow: 'auto'\n },\n body: {\n padding: '16px'\n },\n formControlLabel: {\n marginLeft: 0,\n marginBottom: '27px'\n },\n checkboxLabel: {\n marginLeft: '8px',\n color: 'rgba(255,255,255,0.87)',\n fontSize: '13px',\n lineHeight: '15px'\n },\n checkbox: {\n color: 'white',\n padding: 0\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, Entity, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {MetaInfo} from '../MetaInfo/MetaInfo';\nimport {useStyles} from './styles';\n\nexport type ImageAttributeFieldsOrder = {\n order?: string[];\n excludeNames?: string[];\n includeNames?: string[];\n};\n\ntype Props = {\n className?: string;\n attributeValue: ImageAttributeValue;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsViewSidebar = ({className, attributeValue, handleSetAsDefault, attributeType}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const modifiedEntity =\n useSelector((state) => mdm.selectors.getModifiedEntity(state, entity?.uri)) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const entityToShow = isViewMode ? entity : modifiedEntity;\n const imageAttributeConfig = useSelector(mdm.selectors.getImageAttributesFieldsOrder) || {};\n const imageAttributeFieldsOrder: ImageAttributeFieldsOrder =\n imageAttributeConfig[entity?.type] || imageAttributeConfig?.default || {};\n\n const [isDefault, setIsDefault] = useState<boolean>(false);\n useEffect(() => {\n setIsDefault(entityToShow?.defaultProfilePic === attributeValue?.uri);\n }, [attributeValue?.uri, entityToShow]);\n\n const handleChange = useCallback(() => {\n handleSetAsDefault(attributeValue.uri);\n }, [attributeValue?.uri]);\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.header}>\n <Typography className={styles.headerTitle}>{i18n.text('Details')}</Typography>\n </Box>\n <Box className={styles.bodyWrapper}>\n <Box className={styles.body}>\n <FormControlLabel\n classes={{root: styles.formControlLabel, label: styles.checkboxLabel}}\n control={\n <Checkbox\n className={styles.checkbox}\n checked={isDefault}\n onChange={handleChange}\n color=\"default\"\n />\n }\n label={i18n.text('Set as default')}\n />\n <MetaInfo\n attributeType={attributeType}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeValue={attributeValue}\n />\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n width: '100%',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n main: {\n flex: '1 0 auto'\n },\n details: {\n width: '340px'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {ImageDetailsViewCarousel} from './ImageDetailsViewCarousel/ImageDetailsViewCarousel';\nimport {ImageDetailsViewSidebar} from './ImageDetailsViewSidebar/ImageDetailsViewSidebar';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n currentAttributeValueUri: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsView = ({\n attributeValues = [],\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n handleSetAsDefault,\n attributeType\n}: Props) => {\n const [attributeValueIndex, setAttributeValueIndex] = useState<number>(0);\n useEffect(() => {\n if (!currentAttributeValueUri) {\n onChangeAttributeValueIndex(0);\n } else {\n onChangeAttributeValueIndex(attributeValues.findIndex((value) => value.uri === currentAttributeValueUri));\n }\n }, [currentAttributeValueUri, attributeValues]);\n\n const onChangeAttributeValueIndex = useCallback(\n (index: number) => {\n setAttributeValueIndex(index);\n setCurrentAttributeValueUri(attributeValues[index]?.uri);\n },\n [attributeValues]\n );\n const styles = useStyles();\n\n return (\n <Box className={styles.root}>\n <ImageDetailsViewCarousel\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={onChangeAttributeValueIndex}\n attributeValues={attributeValues}\n className={styles.main}\n />\n <ImageDetailsViewSidebar\n handleSetAsDefault={handleSetAsDefault}\n attributeValue={attributeValues[attributeValueIndex]}\n className={styles.details}\n attributeType={attributeType}\n />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 24px',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n item: {\n padding: '2px'\n }\n}));\n","import React from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Grid as Grid} from '@material-ui/core';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport ImageActionsOverlay from '../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {useStyles} from './styles';\n\nexport type ImageItem = {\n id: string;\n src: string;\n};\n\ntype Props = {\n items: ImageItem[];\n selectedItems: string[];\n onSelectImage: (id: string) => void;\n onDeselectImage: (id: string) => void;\n onShareLink?: (id: string) => void;\n onSetAsDefault?: (id: string) => void;\n onDownload: (id: string) => void;\n onClickImage: (id: string) => void;\n onDelete?: (id: string) => void;\n};\n\nexport const GalleryView = ({\n items,\n selectedItems,\n onSelectImage,\n onDeselectImage,\n onShareLink,\n onSetAsDefault,\n onDownload,\n onClickImage,\n onDelete\n}: Props) => {\n const styles = useStyles();\n\n const renderImageActionsOverlay = (id: string) => {\n return (\n <ImageActionsOverlay\n id={id}\n selected={selectedItems.includes(id)}\n selectionMode={selectedItems.length !== 0}\n onSelect={() => onSelectImage(id)}\n onDeselect={() => onDeselectImage(id)}\n onShareLink={() => onShareLink(id)}\n onSetAsDefault={() => onSetAsDefault(id)}\n onDownload={() => onDownload(id)}\n onClick={() => onClickImage(id)}\n onDelete={onDelete ? () => onDelete(id) : undefined}\n canBeSelected\n />\n );\n };\n\n return (\n <Box className={styles.root}>\n <Grid container>\n {items.map(({id, src}) => (\n <Grid key={id} classes={{item: styles.item}} item>\n <Image\n size={ImageSizesStyles.LARGE}\n onClick={() => onClickImage(id)}\n src={src}\n overlay={renderImageActionsOverlay(id)}\n />\n </Grid>\n ))}\n </Grid>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n selectButton: {\n fontSize: '14px',\n fontWeight: 500,\n color: theme.palette.primary.main,\n textTransform: 'uppercase'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nimport type {ImageItem} from '../GalleryView/GalleryView';\n\ntype Props = {\n onSelectAll: () => void;\n onClearAll: () => void;\n selectedItems: unknown[];\n items: ImageItem[];\n};\n\nexport const HeaderLeft = ({selectedItems, items, onSelectAll, onClearAll}: Props) => {\n const styles = useStyles();\n const selectedAllItems = selectedItems.length === items.length;\n\n return (\n <Link\n component=\"button\"\n underline=\"none\"\n classes={{button: styles.selectButton}}\n onClick={selectedAllItems ? onClearAll : onSelectAll}\n >\n {selectedAllItems ? i18n.text('Clear selection') : i18n.text('Select all images')}\n </Link>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n downloadButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '30px'\n },\n shareButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '21px'\n },\n deleteButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '24px'\n },\n divider: {\n height: '31px',\n width: '1px',\n marginLeft: '10px',\n backgroundColor: 'rgba(255,255,255,0.38)'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport LinkIcon from '@material-ui/icons/Link';\nimport DownloadIcon from '../../../icons/Download';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n onDownload?: () => void;\n onShare?: () => void;\n onUpload?: () => void;\n onDelete?: () => void;\n};\n\nexport const HeaderRight = ({onDownload, onShare, onUpload, onDelete}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {onUpload && (\n <Button variant=\"contained\" color=\"primary\" onClick={onUpload} startIcon={<CloudUploadIcon />}>\n {i18n.text('Upload')}\n </Button>\n )}\n {onDownload && onUpload && <div className={styles.divider} />}\n {onDownload && (\n <SmallIconButtonWithTooltip\n className={styles.downloadButton}\n tooltipTitle={i18n.text('Download selected items')}\n icon={DownloadIcon}\n onClick={onDownload}\n />\n )}\n {onShare && (\n <SmallIconButtonWithTooltip\n className={styles.shareButton}\n tooltipTitle={i18n.text('Copy link')}\n icon={LinkIcon}\n onClick={onShare}\n />\n )}\n {onDelete && (\n <SmallIconButtonWithTooltip\n className={styles.deleteButton}\n tooltipTitle={i18n.text('Delete selected items')}\n icon={DeleteIcon}\n onClick={onDelete}\n />\n )}\n </>\n );\n};\n","/* eslint-disable indent */\nimport React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {filter, pipe, pluck, propEq} from 'ramda';\nimport {\n AttributeType,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ImageDetailsView} from '../ImageDetailsView/ImageDetailsView';\nimport {ImageGalleryDialog, Mode} from '../ImageGalleryDialog/ImageGalleryDialog';\nimport {GalleryView} from './GalleryView/GalleryView';\nimport {HeaderLeft} from './HeaderLeft/HeaderLeft';\nimport {HeaderRight} from './HeaderRight/HeaderRight';\n\nexport type Props = {\n attributeValues: ImageAttributeValue[];\n open: boolean;\n onClose?: () => void;\n currentAttributeValueUri?: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n attributeType: AttributeType;\n onDownload: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n};\n\nconst ImageAttributesGallery = ({\n attributeValues,\n open,\n onClose,\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n attributeType,\n onDownload,\n onShareLink,\n onSetAsDefault,\n onUpload,\n onDeleteAttribute\n}: Props) => {\n const [selectedItems, setSelectedItems] = useState<string[]>([]);\n const [mode, setMode] = useState<Mode>(Mode.GALLERY_MODE);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n\n useEffect(() => {\n setMode(currentAttributeValueUri ? Mode.DETAILS_MODE : Mode.GALLERY_MODE);\n }, [currentAttributeValueUri]);\n\n const imageItems = attributeValues.map((attribute) => ({\n src: getImageAttributeOvThumbnailUrl(attribute) as string,\n downloadURL: getImageAttributeOvUrl(attribute) as string,\n id: attribute.uri\n }));\n\n const handleSelect = (id: string) => {\n setSelectedItems((items) => [...items, id]);\n };\n\n const handleDeselect = (id: string) => {\n setSelectedItems((items) => items.filter((item) => item !== id));\n };\n\n const handleSelectAll = () => {\n setSelectedItems(pluck('id', imageItems));\n };\n\n const handleClearAll = () => {\n setSelectedItems([]);\n };\n\n const handleDownloadSelectedItems = () => {\n const downloadURLs = isGalleryMode\n ? pipe(\n filter(({id}) => selectedItems.includes(id)),\n pluck('downloadURL')\n )(imageItems)\n : [imageItems.find(propEq('id', currentAttributeValueUri)).downloadURL];\n onDownload(downloadURLs);\n };\n\n const handleDownload = (id: string) => {\n onDownload([imageItems.find(propEq('id', id)).downloadURL]);\n };\n\n const handleShareLink = (id: string) => {\n onShareLink(imageItems.find(propEq('id', id)).downloadURL);\n };\n\n const handleSharedCurrentItem = () => {\n handleShareLink(currentAttributeValueUri);\n };\n\n const handleSetAsDefault = (id: string) => {\n const attributeValue = attributeValues.find(({uri}) => uri === id);\n onSetAsDefault(attributeValue);\n };\n\n const handleDelete = (id: string) => {\n onDeleteAttribute({uri: id, attributeType});\n };\n\n const handleDeleteSelectedItems = () => {\n const deleteUris = isGalleryMode ? selectedItems : [currentAttributeValueUri];\n deleteUris.forEach((uri) => {\n handleDelete(uri);\n });\n if (selectedItems.length) setSelectedItems([]);\n };\n\n const isGalleryMode = mode === Mode.GALLERY_MODE;\n const isDetailsMode = mode === Mode.DETAILS_MODE;\n const hasSelectedItems = selectedItems.length > 0;\n const isHasSelectedItemsOrDetailsMode = isDetailsMode || (isGalleryMode && hasSelectedItems);\n\n const isShowDeleteButton = !isViewMode && isHasSelectedItemsOrDetailsMode;\n const isShowUploadButton = !isViewMode && (isDetailsMode || (isGalleryMode && !hasSelectedItems));\n\n const headerLeft = isGalleryMode && hasSelectedItems && (\n <HeaderLeft\n items={imageItems}\n selectedItems={selectedItems}\n onClearAll={handleClearAll}\n onSelectAll={handleSelectAll}\n />\n );\n\n const headerRight = (\n <HeaderRight\n onDelete={isShowDeleteButton ? handleDeleteSelectedItems : undefined}\n onDownload={isHasSelectedItemsOrDetailsMode ? handleDownloadSelectedItems : undefined}\n onShare={isDetailsMode ? handleSharedCurrentItem : undefined}\n onUpload={isShowUploadButton ? onUpload : undefined}\n />\n );\n\n const handleClickByImage = (id: string) => {\n setCurrentAttributeValueUri(id);\n setMode(Mode.DETAILS_MODE);\n };\n\n return (\n <ImageGalleryDialog\n mode={mode}\n open={open}\n onChangeMode={setMode}\n header={{\n left: headerLeft,\n right: headerRight\n }}\n onClose={onClose}\n >\n {isGalleryMode && (\n <GalleryView\n items={imageItems}\n selectedItems={selectedItems}\n onSelectImage={handleSelect}\n onDeselectImage={handleDeselect}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onDownload={handleDownload}\n onClickImage={handleClickByImage}\n onDelete={!isViewMode ? handleDelete : undefined}\n />\n )}\n {isDetailsMode && (\n <ImageDetailsView\n handleSetAsDefault={handleSetAsDefault}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeValues={attributeValues}\n attributeType={attributeType}\n />\n )}\n </ImageGalleryDialog>\n );\n};\n\nexport default ImageAttributesGallery;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {fade} from '@material-ui/core';\n\nexport type SIZES_TYPE = {\n imageMargin: number;\n imageWidth: number;\n imageHeight: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n imageBox: {\n position: 'relative',\n display: 'flex',\n width: '100%',\n flexGrow: 1,\n flexShrink: 0,\n flexWrap: 'nowrap',\n marginTop: '2px',\n overflow: 'hidden'\n },\n\n moreButtonContainer: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n position: 'absolute',\n right: 0,\n cursor: 'pointer'\n };\n },\n moreButton: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: imageWidth,\n height: imageHeight,\n backgroundColor: fade(theme.palette.primary.main, 0.06)\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n ImageAttributeValue,\n insertDefaultImageByAttrUri,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {BlockImageGalleryDialogContext} from '../../../contexts';\nimport ImageAttributesGallery from '../../ImageAttributesGallery/ImageAttributesGallery';\nimport {downloadImagesByURLs} from '../helpers/imageAttributes';\nimport {DEFAULT_IMAGE_SIZE, IMAGE_MIN_VISIBLE_WIDTH} from './constants';\nimport {SIZES_TYPE, useStyles} from './styles';\n\nexport type ImageRenderProps = {\n onDownload?: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onOpenImageGalleryDialog: (uri?: string) => void;\n};\n\nexport type RenderImage = (imageRenderProps?: ImageRenderProps) => (attributeValue: ImageAttributeValue) => JSX.Element;\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n renderImage: RenderImage;\n overlay?: boolean;\n countFixedItems?: number;\n children?: React.ReactNode;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n parentUri?: string;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n renderImage,\n overlay = false,\n countFixedItems = 0,\n children,\n onUpload,\n onDeleteAttribute,\n imageSize = DEFAULT_IMAGE_SIZE,\n paging,\n parentUri,\n showNonOv,\n requestNextPageOfAttributeValues\n}: Props) => {\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const dispatch = useDispatch();\n const styles = useStyles(imageSize);\n useEffect(() => {\n if (paging && requestNextPageOfAttributeValues) {\n const totalVisibleValues = showNonOv ? paging.totalOvValues : paging.totalValues;\n if (totalVisibleValues > attributeValues.length) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values: [],\n defaultMaxValues: totalVisibleValues\n });\n }\n }\n }, [paging, requestNextPageOfAttributeValues, attributeType, parentUri, attributeValues.length, showNonOv]);\n\n const lastWidth = useRef<number | null>();\n const [maxItems, setMaxItems] = useState<number>(0);\n const [hiddenItemsLength, setHiddenItemsLength] = useState<number>(0);\n\n const isBlockImageGalleryDialog = useContext(BlockImageGalleryDialogContext);\n const [isOpenDialog, setIsOpenDialog] = useState<boolean>(false);\n const [currentAttributeValueUri, setCurrentAttributeValueUri] = useState<string>();\n\n const adjustMaxItemsToScreenWidth = useCallback(\n (width: number) => {\n const {imageMargin, imageWidth} = imageSize;\n const maxItemsPerScreen = Math.floor((width + imageMargin) / (imageWidth + imageMargin)) - countFixedItems;\n const hasHiddenImage =\n width + imageMargin - (maxItemsPerScreen + countFixedItems) * (imageWidth + imageMargin) <\n IMAGE_MIN_VISIBLE_WIDTH;\n setMaxItems(maxItemsPerScreen);\n if (attributeValues.length > maxItemsPerScreen) {\n setHiddenItemsLength(attributeValues.length - maxItemsPerScreen + (hasHiddenImage ? 1 : 0));\n } else {\n setHiddenItemsLength(0);\n }\n },\n [attributeValues.length, countFixedItems, imageSize]\n );\n\n const handleResize = useCallback(\n (width) => {\n adjustMaxItemsToScreenWidth(width);\n lastWidth.current = width;\n },\n [adjustMaxItemsToScreenWidth]\n );\n\n useEffect(() => {\n if (lastWidth.current) {\n adjustMaxItemsToScreenWidth(lastWidth.current);\n }\n }, [attributeValues.length, adjustMaxItemsToScreenWidth]);\n\n const handleOpenImageGalleryDialog = useCallback(\n (uri?: string) => {\n if (!isBlockImageGalleryDialog) {\n setCurrentAttributeValueUri(uri);\n setIsOpenDialog(true);\n }\n },\n [isBlockImageGalleryDialog]\n );\n\n const handleCloseImageGalleryDialog = useCallback(() => {\n setIsOpenDialog(false);\n }, []);\n\n const handleDownload = (urls: string[]) => downloadImagesByURLs(urls);\n const handleShareLink = (url: string) => navigator.clipboard.writeText(url);\n\n const handleSetAsDefault = useCallback(\n (attributeValue: ImageAttributeValue) => {\n if (isViewMode) {\n insertDefaultImageByAttrUri(entity.uri, attributeValue.uri).then(({status}) => {\n if (status === 'success') {\n dispatch(profile.entity.actions.setDefaultProfilePic(attributeValue));\n }\n });\n } else {\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: attributeValue\n })\n );\n }\n },\n [isViewMode, entity.uri, dispatch]\n );\n\n const renderImageProps = {\n onOpenImageGalleryDialog: handleOpenImageGalleryDialog,\n ...(overlay && {\n onDownload: handleDownload,\n onShareLink: handleShareLink,\n onSetAsDefault: handleSetAsDefault\n })\n };\n\n return (\n <>\n <ReactResizeDetector handleWidth={true} onResize={handleResize} />\n <ImageAttributesGallery\n attributeValues={attributeValues}\n open={isOpenDialog}\n onClose={handleCloseImageGalleryDialog}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeType={attributeType}\n onDownload={handleDownload}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onUpload={onUpload}\n onDeleteAttribute={onDeleteAttribute}\n />\n <div className={styles.imageBox}>\n {children}\n {attributeValues.slice(0, maxItems).map(renderImage(renderImageProps))}\n {hiddenItemsLength > 0 && (\n <div className={styles.moreButtonContainer}>\n <div className={styles.moreButton} onClick={() => handleOpenImageGalleryDialog()}>\n <Typography className={styles.number}>{`+${hiddenItemsLength}`}</Typography>\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport default ImageAttributesLine;\n","const getFilenameFromURL = (url: string) => url.split('/').pop();\nconst isAbsoluteUrl = (url: string) => url.indexOf('://') > 0 || url.indexOf('//') === 0;\n\nconst isExternalUrl = (url: string) => {\n if (!isAbsoluteUrl(url)) return false;\n\n const urlParts = new URL(url);\n return urlParts.host !== location.host;\n};\n\nconst REMOVE_IFRAME_DELAY = 30000;\n\nexport const downloadImagesByURLs = (urls: string[]) => {\n urls.forEach((url, index) => {\n try {\n if (isExternalUrl(url)) {\n const iframe = document.createElement('iframe');\n iframe.setAttribute('style', 'display: none;');\n iframe.setAttribute('src', url);\n document.body.appendChild(iframe);\n setTimeout(() => document.body.removeChild(iframe), (index + 1) * REMOVE_IFRAME_DELAY);\n } else {\n const link = document.createElement('a');\n link.href = url;\n link.download = getFilenameFromURL(url);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n } catch (e) {\n console.error(e);\n }\n });\n};\n","import {ImageSizesStyles} from '../../Image/Image';\n\nexport const IMAGE_WIDTH = ImageSizesStyles.SMALL.imageWidth;\nexport const IMAGE_HEIGHT = ImageSizesStyles.SMALL.imageHeight;\nexport const IMAGE_MARGIN = 4;\nexport const IMAGE_MIN_VISIBLE_WIDTH = 8;\n\nexport const DEFAULT_IMAGE_SIZE = {imageMargin: IMAGE_MARGIN, imageWidth: IMAGE_WIDTH, imageHeight: IMAGE_HEIGHT};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n height: '16px',\n borderColor: fade(theme.palette.primary.main, 0.54)\n },\n label: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px',\n lineHeight: '11px',\n color: theme.palette.primary.main\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {Chip as Chip} from '@material-ui/core';\nimport {\n AttributeTypeType,\n getAttrDataTypeDefinition,\n getAttributeValue,\n isComplexAttribute,\n NestedAttributeValueType,\n getLabel,\n ReferenceAttributeValueType,\n SimpleAttributeValueType\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nimport DataTypeValue from '../../DataTypeValue/DataTypeValue';\nimport {withTooltip} from '../../../HOCs';\n\nexport const ChipWithTooltip = withTooltip(Chip);\n\nconst OvIcon = ({className, attributeType, nonOvValues = [], nonOvTotal}) => {\n const styles = useStyles();\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.label)\n ) : (\n <DataTypeValue\n value={getAttributeValue(value)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n rich={false}\n />\n )}\n </div>\n ))\n : null;\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n tooltipPlacement=\"top\"\n label={`+ ${nonOvTotal}`}\n variant=\"outlined\"\n classes={{\n root: classnames(styles.container, className),\n label: styles.label\n }}\n />\n );\n};\n\nOvIcon.propTypes = {\n className: PropTypes.string,\n nonOvTotal: PropTypes.number,\n attributeType: AttributeTypeType,\n nonOvValues: PropTypes.arrayOf(\n PropTypes.oneOfType([SimpleAttributeValueType, NestedAttributeValueType, ReferenceAttributeValueType])\n )\n};\n\nexport default OvIcon;\n","import {\n AttributeType,\n AttributeValue,\n DataTypes,\n findAttributeTypeByUri,\n isOv,\n Metadata,\n PivotingAttribute,\n RecordAttributesType,\n PrimitiveValue,\n getLastUriPart,\n PivotingValue\n} from '@reltio/mdm-sdk';\n\nconst getPivotingChildrenUris = (attributeType: AttributeType, pivotingAttributes: PivotingAttribute[]) => {\n const pivotingAttribute = pivotingAttributes.find((attribute) => {\n return attribute.uri === attributeType.uri;\n });\n\n return pivotingAttribute && Array.isArray(pivotingAttribute.children) ? pivotingAttribute.children : [];\n};\n\nexport const generatePivotingValue = (\n attributeType: AttributeType,\n value: RecordAttributesType,\n pivotingAttributes: PivotingAttribute[],\n metadata: Metadata\n): PivotingValue[] => {\n const pivotingChildrenUris = getPivotingChildrenUris(attributeType, pivotingAttributes);\n let pivotingChildren = attributeType?.attributes || attributeType?.analyticsAttributes || [];\n if (pivotingChildrenUris.length) {\n pivotingChildren = pivotingChildren.filter((attrType) => pivotingChildrenUris.includes(attrType.uri));\n }\n\n return pivotingChildren.reduce((acc, attribute) => {\n const values = valueToString(value[attribute.name] as AttributeValue[], metadata, pivotingAttributes);\n if (values && values.length) {\n if (Array.isArray(values[0])) {\n acc.push({[attribute.uri]: values[0]});\n } else {\n acc.push({[attribute.uri]: values});\n }\n }\n return acc;\n }, []);\n};\n\nexport const convertSimpleAttributePivotingValue = (attrType: AttributeType, value: PrimitiveValue) => [\n {[attrType.name]: value}\n];\nexport const convertNestedAttributePivotingValue = (values: PivotingValue[]) => {\n return values.map((value) => {\n return Object.fromEntries(Object.entries(value).map(([key, value]) => [getLastUriPart(key), value]));\n });\n};\n\nconst valueToString = (values: AttributeValue[], metadata: Metadata, pivotingAttributes: PivotingAttribute[]) => {\n if (!values || values.length === 0) return;\n\n return values.reduce((acc, valueContainer) => {\n if ('type' in valueContainer && valueContainer.type) {\n const value = 'lookupCode' in valueContainer ? valueContainer.lookupCode : valueContainer.value;\n const attributeType = findAttributeTypeByUri(metadata, valueContainer.type);\n if (value && typeof value !== 'object' && isOv(valueContainer)) {\n acc.push(preparePivotingAttributeValue(value, attributeType));\n } else if (value && typeof value === 'object' && !Array.isArray(value)) {\n acc.push(generatePivotingValue(attributeType, value, pivotingAttributes, metadata));\n }\n }\n return acc;\n }, []);\n};\n\nexport const preparePivotingAttributeValue = (value: PrimitiveValue, attributeType: AttributeType) => {\n switch (attributeType?.type) {\n case DataTypes.TYPE_DATE:\n return new Date(value as number).getTime();\n case DataTypes.TYPE_TIMESTAMP: {\n if (!isNaN(Number(value))) {\n return new Date(Number(value)).getTime();\n } else {\n return new Date(value as number).getTime();\n }\n }\n default:\n return value;\n }\n};\n","import React from 'react';\n\nconst SvgPivotingIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={11} height={11} viewBox=\"0 0 11 11\" {...props}>\n <path\n d=\"M2.514 5h2.314V3l2.5 2.5-2.5 2.5V6h-3.8a4.5 4.5 0 10.73-3H.6a5.5 5.5 0 11-.577 3H0V5H2.514z\"\n fill=\"#6CACE4\"\n stroke=\"none\"\n strokeWidth={1}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n};\n\nexport default SvgPivotingIcon;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n container: {\n backgroundColor: 'white',\n width: '360px',\n minWidth: '360px',\n maxWidth: '720px'\n },\n header: {\n display: 'flex',\n height: '48px',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingLeft: '16px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px'\n },\n entityTypeLabel: {\n color: 'rgba(0,0,0,0.67)',\n fontSize: '14px',\n paddingLeft: '16px',\n paddingBottom: '12px',\n lineHeight: '16px'\n },\n divider: {\n height: '24px',\n width: '1px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n headerCount: {\n color: theme.palette.text.secondary,\n fontSize: '14px',\n letterSpacing: '0.24px',\n lineHeight: '28px',\n width: '210px'\n },\n body: {\n borderBottom: '1px solid rgba(0,0,0,0.12)',\n padding: '0 16px 8px'\n },\n footer: {\n display: 'flex',\n alignItems: 'center',\n height: '31px',\n paddingLeft: '16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n profileIcon: {\n height: '16px',\n width: '16px'\n },\n entityContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px',\n textDecoration: 'none',\n paddingLeft: '8px'\n },\n icon: {\n margin: 'auto 8px auto 0'\n },\n content: {\n color: theme.palette.primary.main,\n cursor: 'pointer'\n },\n seeAllButton: {\n cursor: 'pointer'\n }\n}));\n\nexport const usePivotingTooltipStyles = makeStyles({\n tooltip: {\n backgroundColor: 'white',\n boxShadow: '0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.2)',\n padding: 0,\n borderRadius: '4px',\n maxWidth: 'none'\n },\n arrow: {\n '&::before': {\n backgroundColor: 'white'\n }\n }\n});\n","import React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n getEntityUriForLink,\n getFilteredEntities,\n getLabel,\n getTotals,\n GlobalSearchRequestOptions,\n PrimitiveValue,\n PivotingValue,\n convertPivotingValueToSearchFilters\n} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport {useSafePromise} from '../../../hooks';\nimport {useStyles} from './styles';\n\nconst MAX_ENTITIES_PIVOTING_TOOLTIP = 6;\n\nexport type Props = {\n value: PivotingValue[] | PrimitiveValue;\n attributeType: AttributeType;\n config: {\n label?: string;\n entityType?: string;\n };\n onSeeAllClick: () => void;\n};\n\nexport const PivotingTooltipContent = ({value, attributeType, config = {}, onSeeAllClick}: Props) => {\n const [entities, setEntities] = useState<Entity[]>([]);\n const [total, setTotal] = useState(0);\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const safePromise = useSafePromise();\n const styles = useStyles();\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions =\n useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {};\n const entityType = config.entityType || entity.type;\n\n const shouldShowSeeAllButton = total > MAX_ENTITIES_PIVOTING_TOOLTIP;\n\n useEffect(() => {\n const filters = convertPivotingValueToSearchFilters({value, attributeType, entityType});\n const options = {\n max: MAX_ENTITIES_PIVOTING_TOOLTIP,\n ...globalSearchRequestOptions\n };\n safePromise(Promise.all([getFilteredEntities(filters, options), getTotals(filters, options)]))\n .then((results) => {\n const [entities, {total}] = results;\n setEntities(Array.isArray(entities) ? entities : []);\n setTotal(total);\n })\n .catch(() => {\n setEntities([]);\n setTotal(0);\n });\n }, []);\n\n const hasEntityTypeLabel = Boolean(config.label);\n return (\n <div className={styles.container}>\n <div className={styles.header}>\n <div className={styles.title}>{i18n.text('Pivot profiles')}</div>\n <div className={styles.divider} />\n <div className={styles.headerCount}>\n {i18n.number(total, '0,0') + ' ' + (total === 1 ? i18n.text('item') : i18n.text('items'))}\n </div>\n </div>\n {hasEntityTypeLabel && <div className={styles.entityTypeLabel}>{config.label}</div>}\n <div className={styles.body}>\n {entities.map((visibleEntity) => (\n <div key={visibleEntity.uri} className={styles.entityContainer}>\n <EntityAvatar entity={visibleEntity} avatarClassName={styles.profileIcon} />\n <EntityUriLink className={styles.entityLabel} value={getEntityUriForLink(visibleEntity)}>\n {getLabel(visibleEntity.label)}\n </EntityUriLink>\n </div>\n ))}\n </div>\n {shouldShowSeeAllButton && (\n <div className={styles.footer}>\n <a className={styles.seeAllButton} onClick={onSeeAllClick}>\n {i18n.text('See all')}\n </a>\n </div>\n )}\n </div>\n );\n};\n","import React, {useContext} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport mdm, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n AttributeType,\n isNested,\n NestedAttributeValue,\n PrimitiveValue,\n RecordAttributesType,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {isNil} from 'ramda';\n\nimport {PivotingAttributeContext} from '../../../contexts';\nimport {\n convertNestedAttributePivotingValue,\n convertSimpleAttributePivotingValue,\n generatePivotingValue,\n preparePivotingAttributeValue\n} from './helpers';\nimport PivotingIcon from '../../../icons/PivotingIcon';\nimport {PivotingTooltipContent} from './PivotingTooltipContent';\nimport {usePivotingTooltipStyles, useStyles} from './styles';\n\ntype Props = {\n value: SimpleAttributeValue | NestedAttributeValue;\n attributeType: AttributeType;\n children?: React.ReactNode;\n className?: string;\n};\nexport const PivotingTooltip = ({value, attributeType, children, className}: Props) => {\n const styles = usePivotingTooltipStyles();\n const contentStyles = useStyles();\n const dispatch = useDispatch();\n const pivotingAttributesList = useContext(PivotingAttributeContext) || [];\n const isNestedAttribute = isNested(attributeType);\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n\n const pivotingValue = isNestedAttribute\n ? generatePivotingValue(attributeType, value.value as RecordAttributesType, pivotingAttributesList, metadata)\n : preparePivotingAttributeValue(\n (value as SimpleAttributeValue).lookupCode || (value.value as PrimitiveValue),\n attributeType\n );\n\n const isPivotingAttribute =\n pivotingAttributesList.some(({uri}) => uri === attributeType.uri) &&\n ((Array.isArray(pivotingValue) && pivotingValue.length) ||\n (!Array.isArray(pivotingValue) && !isNil(pivotingValue)));\n\n const pivotingAttribute = pivotingAttributesList.find(({uri}) => uri === attributeType.uri);\n\n const handleSeeAllClick = () => {\n const generatedValue = Array.isArray(pivotingValue)\n ? convertNestedAttributePivotingValue(pivotingValue)\n : convertSimpleAttributePivotingValue(attributeType, pivotingValue);\n\n dispatch(mdmModuleUi.actions.openPivotingPerspective({value: generatedValue, attributeType}));\n };\n\n return isPivotingAttribute ? (\n <Tooltip\n interactive\n arrow\n placement=\"right-start\"\n classes={styles}\n title={\n <PivotingTooltipContent\n value={pivotingValue}\n attributeType={attributeType}\n config={pivotingAttribute.popup}\n onSeeAllClick={handleSeeAllClick}\n />\n }\n >\n <span className={className}>\n <PivotingIcon className={contentStyles.icon} />\n <span className={contentStyles.content} onClick={handleSeeAllClick}>\n {children}\n </span>\n </span>\n </Tooltip>\n ) : (\n <>{children}</>\n );\n};\n","import EditModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return EditModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes, isReltioCrosswalk} from '@reltio/mdm-sdk';\nimport SimpleAttributeEditor from '../SimpleAttributeEditor/SimpleAttributeEditor';\nimport NestedAttribute from '../NestedAttribute/NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class EditModeAttributesFactory {\n static build(attributeType, props = {}) {\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n showEmptyEditors,\n onAddAttributes,\n lazy,\n errors,\n crosswalks,\n showNonOv,\n expanded,\n ...propsForSimpleAttribute\n } = props;\n /* eslint-enable @typescript-eslint/no-unused-vars */\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return (\n <SimpleAttributeEditor\n isReltioCrosswalk={isReltioCrosswalk(crosswalks, props.attributeValue)}\n {...propsForSimpleAttribute}\n />\n );\n }\n }\n}\n","import React, {memo, useCallback, useContext, useMemo, useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {\n getCreatableAttributeTypes,\n getAttributesListForEditMode,\n ModeType,\n getParentUri,\n checkCanCreateAttribute\n} from '@reltio/mdm-sdk';\nimport {path} from 'ramda';\n\nimport AttributesPager from '../AttributesPager';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport MoreAttributesButton from '../MoreAttributesButton';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\nimport {getMoreAttrTypes} from './helpers';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\n\nconst AttributesList = ({\n parentAttributeType,\n attrTypes,\n entity,\n parentUri,\n showEmptyEditors,\n mode,\n crosswalks,\n drawLines,\n children,\n className,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n onAddAttributes,\n onChangeAttribute,\n onDeleteAttribute,\n additionalControlsRenderer,\n showNonOv\n}) => {\n const {attributes = {}} = entity;\n const [hasDeletionsMap, setHasDeletionsMap] = useState({});\n const setHasDeletions = useCallback((attrTypeUri, value) => {\n setHasDeletionsMap((prevMap) => ({\n ...prevMap,\n [attrTypeUri]: value\n }));\n }, []);\n useEffect(() => {\n setHasDeletionsMap({});\n }, [parentUri]);\n const canCreateParentAttrType = useMemo(\n () => parentAttributeType && checkCanCreateAttribute({attributeType: parentAttributeType, mode}),\n [parentAttributeType, mode]\n );\n const creatableAttrTypes = useMemo(() => getCreatableAttributeTypes(mode, attrTypes), [attrTypes, mode]);\n const moreAttrTypes = getMoreAttrTypes(creatableAttrTypes, entity, showEmptyEditors, hasDeletionsMap);\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const pagersData = useMemo(\n () => getAttributesListForEditMode(attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes),\n [attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes]\n );\n\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const onAddMoreAttributes = useCallback(\n (attributeTypes) => {\n onAddAttributes(\n attributeTypes.map((attributeType) => ({\n attributeType,\n parentUri: attributeType === parentAttributeType ? getParentUri(parentUri) : parentUri\n }))\n );\n },\n [onAddAttributes, parentUri, parentAttributeType]\n );\n\n const decoratorProps = {\n enabled: drawLines\n };\n const hasDeletionsContextValue = useMemo(\n () => ({\n hasDeletionsMap,\n setHasDeletions\n }),\n [hasDeletionsMap, setHasDeletions]\n );\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n <BranchDecorator {...decoratorProps} plain={true}>\n {moreAttrTypes.length > 0 && (\n <MoreAttributesButton\n label={i18n.text('More attributes')}\n onApply={onAddMoreAttributes}\n dense={drawLines}\n data={moreAttrTypes}\n parent={canCreateParentAttrType && parentAttributeType}\n />\n )}\n </BranchDecorator>\n <HasDeletionsContext.Provider value={hasDeletionsContextValue}>\n {regularPagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], attributes)}\n parentUri={parentUri}\n showEmptyEditors={showEmptyEditors}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n />\n ))}\n </HasDeletionsContext.Provider>\n </div>\n );\n};\n\nAttributesList.propTypes = {\n parentAttributeType: PropTypes.object,\n attrTypes: PropTypes.array,\n entity: PropTypes.object,\n parentUri: PropTypes.string,\n children: PropTypes.node,\n showEmptyEditors: PropTypes.bool,\n mode: ModeType,\n crosswalks: PropTypes.array,\n drawLines: PropTypes.bool,\n showNonOv: PropTypes.bool,\n className: PropTypes.string,\n alwaysVisibleTypeUris: PropTypes.array,\n onAddAttributes: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n additionalControlsRenderer: PropTypes.func\n};\n\nexport default memo(AttributesList);\n","import {always, both, cond, has, T} from 'ramda';\nimport {\n AttributeType,\n Entity,\n isAnalyticAttribute,\n isRoleAttrType,\n isSpecialAttribute,\n isTagAttrType\n} from '@reltio/mdm-sdk';\n\nconst getSource = (\n attrType: AttributeType,\n entity: Entity\n): Entity | Entity['analyticsAttributes'] | Entity['attributes'] => {\n const {attributes = {}, analyticsAttributes = {}} = entity;\n return cond([\n [isSpecialAttribute, always(entity)],\n [both(isAnalyticAttribute, always(analyticsAttributes)), always(analyticsAttributes)],\n [T, always(attributes)]\n ])(attrType);\n};\n\nconst getNameProp = (attrType: AttributeType): string => {\n return isSpecialAttribute(attrType) ? 'uri' : 'name';\n};\n\nexport const getMoreAttrTypes = (\n attrTypes: AttributeType[],\n entity: Entity,\n showEmptyEditors?: boolean,\n hasDeletionsMap?: {[attrTypeUri: string]: boolean}\n): AttributeType[] => {\n return attrTypes.filter((attrType) => {\n const source = getSource(attrType, entity);\n const nameProp = getNameProp(attrType);\n return !(\n (attrType.singleValue || isRoleAttrType(attrType) || isTagAttrType(attrType)) &&\n (has(attrType[nameProp])(source) || (showEmptyEditors && !hasDeletionsMap?.[attrType.uri]))\n );\n });\n};\n","import React from 'react';\nimport {CardinalityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {allPass, always, cond, isNil, has, not, pipe, propSatisfies, T} from 'ramda';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\n\nconst valueCaption = (value) =>\n i18n.text('${value}', {\n value: value === 1 ? i18n.text('value') : i18n.text('values')\n });\n\nconst hasMinValue = has('minValue');\nconst hasMaxValue = has('maxValue');\nconst noMaxValue = pipe(hasMaxValue, not);\nconst minValueIsOne = propSatisfies((minValue) => minValue === 1, 'minValue');\nconst exactCardinality = ({minValue, maxValue}) => minValue && minValue === maxValue;\n\nconst generateMinCardinality = ({minValue}) =>\n i18n.text('This attribute can have minimum ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMaxCardinality = ({maxValue}) =>\n i18n.text('This attribute can have maximum ${maxValue} ${maxValueCaption}', {\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst generateExactCardinality = ({minValue}) =>\n i18n.text('This attribute should have ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMinMaxCardinality = ({minValue, maxValue}) =>\n i18n.text('${minCardinality} and maximum ${maxValue} ${maxValueCaption}', {\n minCardinality: generateMinCardinality({minValue}),\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst getCardinalityMessage = cond([\n [isNil, always('')],\n [exactCardinality, generateExactCardinality],\n [allPass([minValueIsOne, hasMaxValue]), generateMaxCardinality],\n [allPass([minValueIsOne, noMaxValue]), always('')],\n [allPass([hasMinValue, hasMaxValue]), generateMinMaxCardinality],\n [hasMaxValue, generateMaxCardinality],\n [hasMinValue, generateMinCardinality],\n [T, always('')]\n]);\n\nconst CardinalityMessage = ({cardinality}) => {\n const styles = useStyles();\n\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {getCardinalityMessage(cardinality)}\n </Typography>\n );\n};\n\nCardinalityMessage.propTypes = {\n cardinality: CardinalityType\n};\n\nexport default CardinalityMessage;\n","import {filter, propSatisfies} from 'ramda';\nimport {isTempUri} from '@reltio/mdm-sdk';\n\nconst filterNewValues = filter(propSatisfies(isTempUri, 'uri'));\n\nexport {filterNewValues};\n","import React, {useCallback, useRef, useState, useContext, useMemo} from 'react';\nimport {\n AttributeValue,\n createNewAttribute,\n getAttributeOwnError,\n isComplexAttribute,\n isEditableMode as checkIsEditableMode,\n isEmptyValue,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {add, always, has, ifElse, min, pipe, prop, T} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Title from '../../../Title/Title';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Cardinality from './CardinalityMessage';\nimport {AttributePagerProps} from './index';\nimport {useStyles} from './styles';\nimport {filterNewValues} from './utils';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport OvIcon from '../../OvIcon';\n\ntype Props = Required<Omit<AttributePagerProps, 'values'>> & {\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n nonVisibleValues: AttributeValue[];\n};\n\nconst AttributeRenderer = ({\n max,\n values,\n attributeType,\n parentUri,\n mode,\n drawLines,\n showEmptyEditors,\n errorMessage,\n errors,\n paging,\n crosswalks,\n showNonOv,\n nonVisibleValues,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n const [hadDeletions, setHadDeletions] = useState(false);\n const {label, required: isRequired, cardinality, name, uri: attributeTypeUri} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const isPinned = useMemo(() => pinnedAttributes?.includes(attributeTypeUri), [attributeTypeUri, pinnedAttributes]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = ((!hadDeletions && showEmptyEditors) || isRequired || isPinned) && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const onAddOneMore = useCallback(() => {\n setVisibleValuesCount(visibleValuesCount + 1);\n\n const attribute = {\n parentUri,\n index: visibleValuesCount,\n attributeType\n } as AttributeItem;\n\n return onAddAttributes(\n showEmpty && !isComplexAttribute(attributeType.type) ? [attribute, attribute] : [attribute]\n );\n }, [visibleValuesCount, onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const onDelete = useCallback(pipe(onDeleteAttribute, T, setHadDeletions), [onDeleteAttribute, setHadDeletions]);\n\n if (isEmptyValues && !showEmpty) {\n return null;\n }\n\n if (showEmpty && isEmptyValues) {\n values = [emptyEditorValue.current];\n }\n\n if (isEmptyValue(values)) {\n return null;\n }\n\n const newValuesCount = (filterNewValues(values) || []).length;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(\n has(totalProp),\n pipe(prop(totalProp), add(newValuesCount)),\n always(values.length)\n )(paging);\n\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues?.length;\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri,\n attributeTypeName: name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const lastIndex = shownValues ? shownValues.length - 1 : 0;\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <BranchDecorator enabled={drawLines}>\n <div className={styles.wrapper}>\n <div className={styles.titleWrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} className={styles.typeError} />}\n <div className={styles.attributesWrapper}>\n {shownValues.map((value, idx) => (\n <Attribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n errors={errors}\n ownError={getAttributeOwnError(value, idx, attributeType.uri, errors)}\n mode={mode}\n crosswalks={crosswalks}\n onAddOneMore={lastIndex === idx ? onAddOneMore : null}\n onAddAttributes={onAddAttributes}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n onDeactivateError={onDeactivateError}\n additionalControlsRenderer={additionalControlsRenderer}\n />\n ))}\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n </div>\n </BranchDecorator>\n );\n};\n\nexport default AttributeRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n roleContainer: {\n width: '100%'\n },\n\n valueContainer: {\n marginLeft: '8px',\n width: 0\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {prop, propEq} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {Metadata, Entity, EntityAttrTypes, getRolesForEntityType, getLastUriPart, AttributeItem} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport SimpleDropDownSelector from '../../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {MultiValueChip} from '../../..';\nimport {useStyles} from './styles';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\ntype Props = {\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst components = {MultiValue: MultiValueChip};\n\nexport const Roles = ({values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = entity.uri;\n\n const options = getRolesForEntityType(metadata, entity.type).map((role) => ({\n value: role.uri,\n label: role.label\n }));\n\n const formattedValues = (values || []).map((value) => {\n const label = options.find(propEq('value', value))?.label;\n\n return {\n value,\n label: label || getLastUriPart(value)\n };\n });\n\n const handleChange = useCallback(\n (values) => {\n const roles = values?.map(prop('value')) || [];\n onChange({\n value: roles,\n attributeType: EntityAttrTypes.roles,\n uri: entityUri\n });\n },\n [entityUri, onChange]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.roles});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <SimpleDropDownSelector\n label={''}\n height={40}\n isMulti={true}\n options={options}\n value={formattedValues}\n onChange={handleChange}\n components={components}\n classes={styles}\n className={styles.roleContainer}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getFacets, EntityAttrTypes, buildFilterQueryString, AttributeItem} from '@reltio/mdm-sdk';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport TypeaheadEditor from '../../../editors/TypeaheadEditor/TypeaheadEditor';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst filtersWithSearch = (searchQuery) => [\n {\n filter: 'containsWordStartingWith',\n fieldName: 'tags',\n values: [searchQuery]\n }\n];\n\nconst getQuery = (searchQuery) =>\n searchQuery ? `?filter=${buildFilterQueryString()(filtersWithSearch(searchQuery))}` : '';\n\nconst body = [\n {\n fieldName: 'tags',\n orderType: 'reversedCount'\n }\n];\n\nconst getSuggestions = (searchQuery) =>\n getFacets({query: getQuery(searchQuery), body}).then((response) => Object.keys(response.tags));\n\nconst Tags = ({className, values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const handleChange = useCallback(\n (tags) => {\n onChange({\n value: tags,\n attributeType: EntityAttrTypes.tags,\n uri: entityUri\n });\n },\n [onChange, entityUri]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.tags});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <TypeaheadEditor\n fullWidth\n multiple\n variant=\"filled\"\n className={className}\n value={values || []}\n onChange={handleChange}\n getSuggestions={getSuggestions}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n\nexport default Tags;\n","import React, {useCallback, useRef, useState} from 'react';\nimport {\n AttributeType,\n createNewAttribute,\n EntityAttrTypes,\n isEditableMode as checkIsEditableMode,\n Mode,\n isEmptyValue,\n isActivenessAttrType,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {pipe, T} from 'ramda';\nimport {Box as Box} from '@material-ui/core';\nimport Title from '../../../Title/Title';\nimport Cardinality from './CardinalityMessage';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Attribute from '../AttributesFactory/Attribute';\nimport {Roles} from '../Roles/Roles';\nimport Tags from '../Tags';\nimport {useStyles} from './styles';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\nimport {withContext} from '../../../../HOCs';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n parentUri: string;\n mode: Mode;\n errorMessage?: string;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n showEmptyEditors?: boolean;\n hasDeletions?: boolean;\n setHasDeletions?: (attrTypeUri: string, value: boolean) => void;\n};\n\nexport const SpecialRenderer = ({\n values,\n attributeType,\n parentUri,\n mode,\n errorMessage,\n onDeleteAttribute,\n onChangeAttribute,\n showEmptyEditors,\n hasDeletions: hasDeletionsProp,\n setHasDeletions,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const {label, required: isRequired, cardinality} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n const [hasDeletionsState, setHasDeletionsState] = useState(false);\n const updateHasDeletions = useCallback(\n (value: boolean) => {\n setHasDeletionsState(value);\n setHasDeletions?.(attributeType.uri, value);\n },\n [attributeType.uri, setHasDeletions]\n );\n const hasDeletions = hasDeletionsProp !== undefined ? hasDeletionsProp : hasDeletionsState;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onDelete = useCallback(pipe(onDeleteAttribute, T, updateHasDeletions), [\n onDeleteAttribute,\n updateHasDeletions\n ]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = !hasDeletions && showEmptyEditors && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const renderValue = () => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n case EntityAttrTypes.roles.uri:\n return <Roles values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n default: {\n //startDate, endDate\n const value = {\n ...emptyEditorValue.current,\n value: values[0] || ''\n };\n return (\n <Attribute\n attributeValue={value}\n attributeType={attributeType}\n mode={mode}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n {...otherProps}\n />\n );\n }\n }\n };\n\n if (isActivenessAttrType(attributeType) && isEmptyValues && !showEmpty) {\n return null;\n }\n\n return (\n <Box className={styles.wrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} />}\n <Box className={styles.attributesWrapper}>{renderValue()}</Box>\n </Box>\n );\n};\n\nexport default withContext(\n HasDeletionsContext,\n (contextValue, {attributeType}) => {\n const {hasDeletionsMap, setHasDeletions} = contextValue || {};\n return {\n hasDeletions: hasDeletionsMap ? Boolean(hasDeletionsMap[attributeType?.uri]) : undefined,\n setHasDeletions\n };\n },\n SpecialRenderer\n);\n","import React, {memo} from 'react';\nimport {\n ImageAttributeValue,\n isImage,\n isOv,\n isSpecialAttribute,\n Mode,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {always, cond, T, partition} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport AttributeRenderer from './AttributeRenderer';\nimport {AttributePagerProps} from './index';\nimport SpecialRenderer from './SpecialRenderer';\nimport {useStyles} from './styles';\nimport Title from '../../../Title/Title';\n\nenum RENDERER_TYPES {\n imageLine = 'imageLine',\n special = 'special',\n default = 'default'\n}\n\nconst AttributesPager = ({\n values,\n attributeType,\n mode = Mode.Viewing,\n crosswalks,\n drawLines,\n paging = {},\n parentUri,\n errors,\n errorMessage,\n max = Infinity,\n showEmptyEditors,\n showNonOv,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: AttributePagerProps) => {\n const styles = useStyles();\n const partitionByOv = partition(isOv);\n const [ovValues, nonOvValues] = partitionByOv(values);\n\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n\n const commonProps = {\n errorMessage,\n errors,\n mode,\n parentUri,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n showEmptyEditors\n };\n\n const renderAttribute = () => {\n const type: RENDERER_TYPES = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [T, always(RENDERER_TYPES.default)]\n ])(attributeType);\n\n switch (type) {\n case RENDERER_TYPES.special: {\n return (\n <BranchDecorator enabled={drawLines}>\n <SpecialRenderer\n values={visibleValues as string[] | number[]}\n attributeType={attributeType}\n {...commonProps}\n />\n </BranchDecorator>\n );\n }\n case RENDERER_TYPES.imageLine:\n return (\n <BranchDecorator enabled={drawLines}>\n <div className={styles.wrapper}>\n <Title label={attributeType?.label} data-reltio-id=\"reltio-attribute-label\" />\n <ImageAttributesLine\n attributeValues={visibleValues as ImageAttributeValue[]}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={onChangeAttribute}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </div>\n </BranchDecorator>\n );\n default:\n return (\n <AttributeRenderer\n values={\n visibleValues as (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[]\n }\n attributeType={attributeType}\n max={max}\n paging={paging}\n crosswalks={crosswalks}\n drawLines={drawLines}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n nonVisibleValues={nonVisibleValues}\n {...commonProps}\n />\n );\n }\n };\n\n return renderAttribute();\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeError,\n AttributeType,\n Crosswalk,\n getAttributePagerActiveTypeErrorMessage,\n ImageAttributeValue,\n Mode,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport AttributesPager from './AttributesPager';\nimport CardinalityMessage from './CardinalityMessage';\n\ntype StateProps = {\n errorMessage: string;\n errors: AttributeError[];\n max: number;\n};\n\ntype DispatchProps = {\n onDeactivateError: (id: string) => void;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\ntype OwnProps = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | ImageAttributeValue\n | string\n | number\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n mode?: Mode;\n crosswalks?: Crosswalk[];\n parentUri: string;\n drawLines: boolean;\n max?: number;\n showEmptyEditors: boolean;\n showNonOv?: boolean;\n onAddAttributes: (params: AttributeItem[]) => void;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n additionalControlsRenderer?: (props) => JSX.Element;\n};\n\nexport type AttributePagerProps = StateProps & DispatchProps & OwnProps;\n\nconst mapStateToProps = (state, {parentUri, attributeType, max}: OwnProps): StateProps => ({\n errors: mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType),\n errorMessage: getAttributePagerActiveTypeErrorMessage(\n parentUri,\n attributeType,\n mdmModule.selectors.getProfileErrors(state)\n ),\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps: DispatchProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {AttributesPager, CardinalityMessage};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n caption: {\n fontSize: '0.7rem',\n opacity: 0.54\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start'\n },\n attributesWrapper: {\n width: '100%',\n marginBottom: '10px'\n },\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n },\n title: {\n fontSize: '12px',\n lineHeight: '14px',\n paddingLeft: '12px',\n color: theme.palette.text.secondary\n },\n typeError: {\n marginLeft: '12px'\n },\n ovIcon: {\n marginLeft: '8px',\n marginTop: '-1px',\n textIndent: 0\n },\n titleWrapper: {\n flex: 1,\n paddingBottom: '3px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n editor: {\n display: 'flex',\n flex: 1,\n height: '36px',\n alignItems: 'center'\n },\n label: {\n flex: 1,\n marginLeft: '2px',\n marginTop: '2px',\n fontSize: '13px',\n lineHeight: '15px'\n },\n actions: {\n display: 'flex',\n alignItems: 'center'\n },\n titleContainer: {\n display: 'flex',\n flex: 1,\n minHeight: '20px'\n },\n expandButton: {\n marginTop: '2px'\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n },\n errorWrapperHelperText: {\n marginLeft: 0\n }\n}));\n","import React, {useMemo, useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {\n checkCanDeleteAttribute,\n isReltioCrosswalk,\n isTempUri,\n ComplexAttributeType,\n ReferenceAttributeValueType,\n NestedAttributeValueType,\n AttributeTypeType,\n getErrorMessage,\n hasAttributeDescendantsWithErrors,\n isAnalyticAttribute\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport AttributesList from '../AttributesList/AttributesList';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\n\nconst ComplexAttribute = ({\n label,\n attributeTypesList,\n attributeType,\n attributeValue,\n children,\n errors,\n ownError,\n mode,\n metadata,\n crosswalks,\n lazy,\n showEmptyEditors,\n onAddOneMore,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n additionalControlsRenderer,\n hideDeleteButton,\n state,\n showNonOv,\n expanded: expandedProp = false\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const uri = attributeValue.uri;\n const isNew = isTempUri(uri);\n const defaultExpand = isNew || expandedProp;\n const [expanded, setExpanded] = useState(defaultExpand);\n useEffect(() => {\n setExpanded(defaultExpand);\n }, [defaultExpand]);\n const canDelete = useMemo(\n () =>\n checkCanDeleteAttribute({\n attributeType,\n attributeValue,\n mode,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, metadata, crosswalks]\n );\n const showDeleteButton = !deleted && !hideDeleteButton && !!onDeleteAttribute && canDelete;\n const onDeleteThis = () => onDeleteAttribute({uri, attributeType, attributeValue});\n\n const hasDescendantsWithErrors = useMemo(() => hasAttributeDescendantsWithErrors(attributeValue, errors), [\n errors,\n attributeValue\n ]);\n useEffect(() => {\n if (hasDescendantsWithErrors) {\n setExpanded(true);\n }\n }, [errors, hasDescendantsWithErrors]);\n useEffect(() => {\n if (deleted) {\n setExpanded(false);\n }\n }, [deleted]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null\n }),\n [attributeValue, hasAnalyticValue]\n );\n\n const errorMessage =\n getErrorMessage(ownError) || (hasDescendantsWithErrors && i18n.text('Has an incorrect value')) || '';\n\n return lazy ? (\n <Button variant=\"text\" color=\"primary\" onClick={onAddOneMore}>\n Create attribute\n </Button>\n ) : (\n <>\n <div className={styles.editor}>\n <div className={styles.titleContainer}>\n <ArrowExpandButton\n onClick={() => setExpanded((value) => !value)}\n expanded={expanded}\n className={styles.expandButton}\n disabled={deleted}\n />\n <ErrorWrapper errorMessage={errorMessage} classes={{helperText: styles.errorWrapperHelperText}}>\n <div\n className={classnames(styles.label, {[styles.deleted]: deleted})}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </div>\n </ErrorWrapper>\n </div>\n <div className={styles.actions}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && <SmallIconButton icon={DeleteIcon} onClick={onDeleteThis} size=\"L\" />}\n </div>\n </div>\n {expanded && (\n <AttributesList\n parentAttributeType={attributeType}\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n showEmptyEditors={showEmptyEditors || isNew}\n drawLines={true}\n parentUri={uri}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </>\n );\n};\n\nComplexAttribute.propTypes = {\n label: PropTypes.string,\n children: PropTypes.node,\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n ...ComplexAttributeType\n};\n\nexport default ComplexAttribute;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AttributesList from '../AttributesList';\nimport {ModeType} from '@reltio/mdm-sdk';\n\nconst defaultAttributeTypesSelectionStrategy = (entityType) => entityType && entityType.attributes;\n\nconst EntityCreator = ({\n entity,\n entityType,\n attributeTypesSelectionStrategy = defaultAttributeTypesSelectionStrategy,\n mode,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute\n}) => {\n const attributeTypes = useMemo(() => attributeTypesSelectionStrategy(entityType), [\n attributeTypesSelectionStrategy,\n entityType\n ]);\n return entity ? (\n <AttributesList\n key={entity.uri}\n attrTypes={attributeTypes}\n entity={entity}\n showEmptyEditors={true}\n drawLines={true}\n parentUri={entity.uri}\n mode={mode}\n crosswalks={entity.crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n ) : null;\n};\n\nEntityCreator.propTypes = {\n entityUri: PropTypes.string, // used for connect\n parentUri: PropTypes.string, // used for validation\n entity: PropTypes.object,\n entityType: PropTypes.object,\n attributeTypesSelectionStrategy: PropTypes.func,\n mode: ModeType,\n onAddAttributes: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func\n};\n\nexport default EntityCreator;\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport EntityCreator from './EntityCreator';\n\nconst mapStateToProps = (state, ownProps) => ({\n entity: ownProps.entityUri && mdmModule.selectors.getModifiedEntity(state, ownProps.entityUri)\n});\n\nconst mapDispatchToProps = {\n onAddAttributes: profile.actions.addAttributes,\n onDeleteAttribute: profile.actions.removeAttribute,\n onChangeAttribute: profile.actions.modifyAttribute\n};\n\nexport {EntityCreator};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EntityCreator);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n entityContainer: {\n display: 'flex',\n alignItems: 'center',\n height: '32px',\n minHeight: '32px',\n padding: 0\n },\n entityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.87)',\n cursor: 'pointer',\n lineHeight: '15px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n emptyEntityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.6)',\n lineHeight: '15px',\n marginLeft: '16px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n cursor: 'default'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '8px',\n marginRight: '11px'\n },\n entitySecondaryLabel: {\n color: 'rgba(0,0,0,0.6)'\n }\n});\n\nexport const useSingleValueStyles = makeStyles((theme) => ({\n singleValue: {\n color: 'rgba(0, 0, 0, 0.87)',\n fontSize: '14px',\n paddingTop: '18px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n linkValue: {\n cursor: 'pointer',\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n\nexport const useGroupStyles = makeStyles((theme) => ({\n addLabel: {\n color: theme.palette.primary.main,\n display: 'flex',\n fontWeight: '500',\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n groupHeading: {\n fontSize: '13px',\n height: '36px',\n padding: '0 16px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n addIcon: {\n height: '18px',\n width: '18px',\n padding: '0 9px'\n }\n}));\n\nexport const useClearIconStyles = makeStyles({\n clearIcon: {\n cursor: 'pointer',\n height: '20px',\n width: '20px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst EntityOption = ({innerRef, innerProps, selectOption, data}) => {\n const styles = useStyles();\n const {uri, entityType, label, secondaryLabel} = data;\n if (uri !== '') {\n return (\n <MenuItem\n className={styles.entityContainer}\n ref={innerRef}\n key={uri}\n onClick={() => selectOption({label, uri, entityType})}\n {...innerProps}\n >\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <span className={styles.entityLabel}>\n {label}\n {secondaryLabel && <span className={styles.entitySecondaryLabel}>, {secondaryLabel}</span>}\n </span>\n </MenuItem>\n );\n } else {\n return (\n <MenuItem className={styles.entityContainer} ref={innerRef} key={uri} {...innerProps} disabled={true}>\n <span className={styles.emptyEntityLabel}>{i18n.text('No results found')}</span>\n </MenuItem>\n );\n }\n};\n\nEntityOption.propTypes = {\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n innerProps: PropTypes.object.isRequired,\n selectOption: PropTypes.func.isRequired,\n data: PropTypes.shape({\n uri: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n entityType: EntityType.isRequired\n })\n};\n\nexport default EntityOption;\n","import React, {useContext} from 'react';\nimport {always, pipe} from 'ramda';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {useSingleValueStyles} from './styles';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getEntityLink, getLabel, isTempUri} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ViewIdContext} from '../../../../../contexts/ViewIdContext';\n\nconst SingleValue = (props) => {\n const {\n selectProps: {currentEntityType, menuIsOpen, disableLinkClick},\n children,\n data\n } = props;\n\n const styles = useSingleValueStyles();\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n\n const handleOnMouseDown = (event) => {\n event.stopPropagation();\n if (!disableLinkClick) {\n pipe(always({uri: data.entityUri, viewId}), ui.actions.openEntity, dispatch)();\n }\n };\n\n const valueProps = isTempUri(data.entityUri)\n ? {\n className: styles.singleValue,\n component: 'span'\n }\n : {\n className: classnames(styles.singleValue, styles.linkValue),\n onMouseDown: handleOnMouseDown,\n onClick: (e) => e.preventDefault(),\n href: getEntityLink({uiPath, uri: data.entityUri}),\n component: 'a'\n };\n\n return (\n !menuIsOpen && (\n <Typography {...valueProps}>\n {isTempUri(data.entityUri)\n ? i18n.text(`New ${currentEntityType.label} will be created`)\n : getLabel(children)}\n </Typography>\n )\n );\n};\n\nSingleValue.propTypes = {\n children: PropTypes.string,\n data: PropTypes.object.isRequired,\n selectProps: PropTypes.object.isRequired\n};\n\nexport default SingleValue;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport {useClearIconStyles} from './styles';\nimport {IconButton as IconButton} from '@material-ui/core';\n\nconst ClearIndicator = (props) => {\n const {\n selectProps: {onClear}\n } = props;\n\n const styles = useClearIconStyles();\n\n return (\n <IconButton onClick={onClear}>\n <ClearIcon className={styles.clearIcon} />\n </IconButton>\n );\n};\n\nClearIndicator.propTypes = {\n selectProps: PropTypes.object.isRequired\n};\n\nexport default ClearIndicator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {components} from 'react-select';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useGroupStyles} from './styles';\n\nconst {Group: ComponentsGroup} = components;\n\nconst Group = (props) => {\n const {\n selectProps: {inputValue, onCreate},\n data,\n children\n } = props;\n\n const styles = useGroupStyles();\n\n return (\n <ComponentsGroup {...props}>\n <div className={styles.groupHeading}>\n <span>{data.label}</span>\n {onCreate && (\n <span onClick={() => onCreate(inputValue, data.entityType)} className={styles.addLabel}>\n <AddIcon className={styles.addIcon} />\n {i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${data.label}`)}\n </span>\n )}\n </div>\n {children}\n </ComponentsGroup>\n );\n};\n\nGroup.propTypes = {\n selectProps: PropTypes.object.isRequired,\n data: PropTypes.object,\n children: PropTypes.array\n};\n\nexport default Group;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n creatorWrapper: {\n marginTop: '20px'\n }\n});\n","import React, {useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {isEmpty, prop} from 'ramda';\nimport {\n getFilteredEntities,\n getEntityType,\n MetadataType,\n ConnectionEntityType,\n ModeType,\n isTempUri,\n getLastUriPart,\n getLabel\n} from '@reltio/mdm-sdk';\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\nimport EntityOption from './components/EntityOption';\nimport SingleValue from './components/SingleValue';\nimport ClearIndicator from './components/ClearIndicator';\nimport EntityCreator from '../EntityCreator';\nimport {EmptyStub} from '../../../../core';\nimport Group from './components/Group';\nimport {useStyles} from './styles';\n\nconst buildEntityOptions = (entityTypes, onCreate) => (entities) => {\n const newOptions = entities.map((entity) => ({\n ...entity,\n label: getLabel(entity.label),\n entityType: entityTypes.find(({uri}) => uri === entity.type)\n }));\n\n const addDummyOptionToEmptyOptionList = (options) =>\n isEmpty(options)\n ? [\n {\n label: '',\n uri: '',\n entityType: {}\n }\n ]\n : options;\n\n const filteredEntityTypes = onCreate\n ? entityTypes\n : entityTypes.filter((type) => {\n return newOptions.some((option) => option.type === type.uri);\n });\n\n return filteredEntityTypes.length > 1\n ? filteredEntityTypes.map((type) => {\n return {\n label: type.label,\n entityType: type.uri,\n options: addDummyOptionToEmptyOptionList(newOptions.filter((option) => option.type === type.uri))\n };\n })\n : addDummyOptionToEmptyOptionList(newOptions);\n};\n\nconst EntitySelector = ({\n entity = {},\n entityTypesUris = [],\n mode,\n max,\n onChange,\n onCreate,\n metadata,\n globalSearchRequestOptions,\n attributeTypesSelectionStrategy,\n disableLinkClick = false,\n ...otherProps\n}) => {\n const styles = useStyles();\n const [inputValue, setInputValue] = useState('');\n\n const entityTypes = useMemo(() => entityTypesUris.map((type) => getEntityType(metadata, type)), [\n entityTypesUris,\n metadata\n ]);\n\n const filters = [\n {\n filter: 'equals',\n fieldName: 'type',\n values: entityTypesUris.map(getLastUriPart)\n }\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 getFilteredEntities(filters, options, value).then(buildEntityOptions(entityTypes, onCreate));\n const currentEntityType = (isEmpty(entity) ? entityTypes[0] : getEntityType(metadata, entity.entityType)) || {};\n const createLabel =\n onCreate && i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${currentEntityType.label}`);\n const label = i18n.text(`Select ${entityTypes.length === 1 ? `${entityTypes[0].label} ` : ''}profile`);\n const isTempEntity = !isEmpty(entity) && isTempUri(entity.entityUri);\n const groupComponent = groupMode ? {Group, GroupHeading: EmptyStub} : {};\n const clearComponent = isTempEntity ? {ClearIndicator} : {};\n\n const {TextFieldProps, ...dropDownSelectorProps} = otherProps;\n\n const textFieldProps = useMemo(\n () => ({\n ...(TextFieldProps || {}),\n ['data-reltio-id']: 'reltio-entity-selector'\n }),\n [TextFieldProps]\n );\n return (\n <>\n <DropDownSelector\n value={!isEmpty(entity) ? entity : undefined}\n inputValue={inputValue}\n onInputChange={handleInputChange}\n getOptions={getOptions}\n getOptionLabel={prop('entityLabel')}\n onChange={handleChange}\n onCreate={handleCreate}\n onClear={handleClear}\n label={label}\n createLabel={createLabel}\n components={{\n Option: EntityOption,\n SingleValue: SingleValue,\n ...groupComponent,\n ...clearComponent\n }}\n currentEntityType={currentEntityType}\n isClearable={true}\n disableLinkClick={disableLinkClick}\n TextFieldProps={textFieldProps}\n {...dropDownSelectorProps}\n />\n {isTempEntity && (\n <div className={styles.creatorWrapper}>\n <EntityCreator\n mode={mode}\n attributeTypesSelectionStrategy={attributeTypesSelectionStrategy}\n entityType={currentEntityType}\n entityUri={entity.entityUri}\n />\n </div>\n )}\n </>\n );\n};\n\nEntitySelector.propTypes = {\n entity: ConnectionEntityType,\n entityTypesUris: PropTypes.arrayOf(PropTypes.string),\n max: PropTypes.number,\n mode: ModeType,\n dispatch: PropTypes.func,\n metadata: MetadataType,\n onChange: PropTypes.func.isRequired,\n onCreate: PropTypes.func,\n attributeTypesSelectionStrategy: PropTypes.func,\n globalSearchRequestOptions: PropTypes.object,\n disableLinkClick: PropTypes.bool\n};\n\nexport default EntitySelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '328px'\n },\n paper: {\n width: '100%',\n height: '40px',\n display: 'flex',\n alignItems: 'center',\n boxShadow: 'none',\n backgroundColor: 'rgba(0,0,0,0.03)'\n },\n inputRoot: {\n flex: 1\n },\n input: {\n padding: '0 12px',\n fontSize: '14px',\n '&:placeholder': {\n color: theme.palette.text.secondary\n }\n },\n errorMessage: {\n marginTop: '8px',\n fontSize: '12px',\n color: theme.palette.error.main\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Paper as Paper} from '@material-ui/core';\nimport {InputBase as InputBase} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n onSend: (url: string) => void;\n};\n\nconst isEmptyField = (value: string) => value.trim().length === 0;\n\nexport const ImageByUrlField = ({onSend}: Props) => {\n const styles = useStyles();\n\n const [value, setValue] = useState('');\n const [error, setError] = useState<string>(null);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n const regExp = new RegExp(/^(ftp|http|https):\\/\\/[^ \"]+$/);\n const isCorrectUrl = regExp.test(newValue);\n\n setValue(newValue);\n\n if (!isCorrectUrl && !isEmptyField(newValue)) {\n setError(i18n.text('URL is not correct'));\n } else {\n setError(null);\n }\n };\n\n const handleSend = () => {\n onSend(value);\n setValue('');\n setError(null);\n };\n\n return (\n <Box className={styles.root}>\n <Paper className={styles.paper}>\n <InputBase\n value={value}\n onChange={handleChange}\n classes={{root: styles.inputRoot, input: styles.input}}\n placeholder={i18n.text('Paste an image URL here')}\n />\n <Button\n disabled={Boolean(error) || isEmptyField(value)}\n variant=\"outlined\"\n color=\"primary\"\n onClick={handleSend}\n >\n {i18n.text('Send')}\n </Button>\n </Paper>\n {error && <Typography className={styles.errorMessage}>{error}</Typography>}\n </Box>\n );\n};\n","export const IMAGE_TYPES = ['image/png', 'image/jpeg', 'image/tiff', 'image/gif', 'image/bmp'];\nexport const MAX_IMAGE_SIZE = 20;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {IMAGE_TYPES} from '../constants';\n\ntype Props = {\n className?: string;\n onAppendFile?: (file: File) => void;\n};\n\nexport const SelectImageButton = ({className, onAppendFile}: Props) => {\n const handleInput = (e: React.FormEvent<HTMLInputElement>) => {\n if (onAppendFile) {\n onAppendFile(e.currentTarget.files[0]);\n }\n };\n\n return (\n <>\n <input\n onInput={handleInput}\n style={{display: 'none'}}\n accept={IMAGE_TYPES.join(',')}\n id=\"upload-image-button\"\n type=\"file\"\n />\n <label htmlFor=\"upload-image-button\">\n <Button className={className} variant=\"contained\" color=\"primary\" component=\"span\">\n {i18n.text('Select image')}\n </Button>\n </label>\n </>\n );\n};\n","import React from 'react';\n\nconst SvgUploadIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__c\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__d\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"67.572%\" y1=\"54.952%\" x2=\"15.212%\" y2=\"13.907%\" id=\"UploadIcon_svg__e\">\n <stop stopColor=\"#000\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#000\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__f\">\n <stop stopColor=\"#B8EDFF\" offset=\"0%\" />\n <stop stopColor=\"#53ACDE\" offset=\"100%\" />\n </linearGradient>\n <circle id=\"UploadIcon_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"UploadIcon_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#UploadIcon_svg__a\" />\n </mask>\n <use fillOpacity={0.1} fill=\"#0072CE\" xlinkHref=\"#UploadIcon_svg__a\" />\n <g mask=\"url(#UploadIcon_svg__b)\">\n <g strokeWidth={1} fill=\"none\" transform=\"translate(-1 9)\">\n <path\n d=\"M0 107.268c0 35.579 28.703 64.409 64.173 64.409h139.021c29.578 0 53.497-24.035 53.497-53.635 0-28.356-21.935-51.562-49.705-53.515C199.577 27.705 167.2 0 128.346 0 97.425 0 70.59 17.582 57.171 43.274 25.027 46.767 0 74.117 0 107.268z\"\n fill=\"#FFF\"\n opacity={0.3}\n />\n <ellipse\n fill=\"url(#UploadIcon_svg__c)\"\n opacity={0.4}\n cx={64.553}\n cy={107.664}\n rx={61.43}\n ry={62.336}\n />\n <path\n d=\"M127.979 8.91c38.773 0 70.206 31.895 70.206 71.24 0 39.346-31.433 71.241-70.206 71.241-6.067 0-11.954-.78-17.57-2.249 9.688-11.019 15.574-25.551 15.574-41.478 0-33.7-26.352-61.153-59.286-62.299C78.714 23.611 101.654 8.91 127.98 8.91z\"\n fill=\"url(#UploadIcon_svg__d)\"\n opacity={0.4}\n />\n </g>\n <path\n fill=\"url(#UploadIcon_svg__e)\"\n opacity={0.12}\n d=\"M82.093 128.474l38.374 37.966-10.666 18.958 72.714 71.94 63.578-57.537v-6.11l-71.107-70.352H97.22z\"\n transform=\"translate(-1 9)\"\n />\n <path\n fill=\"url(#UploadIcon_svg__f)\"\n d=\"M151.004 128.29v57.591h-40.836V128.29H81l49.5-49.409L180 128.29z\"\n transform=\"translate(-1 9)\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgUploadIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n padding: '36px 0 29px'\n },\n isActive: {\n backgroundColor: 'rgba(0,114,206,0.12)'\n },\n icon: {\n width: '190px',\n height: '190px',\n marginBottom: '24px'\n },\n title: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '24px'\n },\n description: {\n marginBottom: '24px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useDrop, DropTargetMonitor} from 'react-dnd';\nimport {NativeTypes} from 'react-dnd-html5-backend';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectImageButton} from '../SelectImageButton/SelectImageButton';\nimport UploadIcon from '../../../icons/UploadIcon';\nimport {MAX_IMAGE_SIZE} from '../constants';\nimport {useStyles} from './styles';\n\ntype Props = {\n onAppendFile: (file: File) => void;\n className?: string;\n};\n\nexport const TargetBox = ({onAppendFile, className}: Props) => {\n const styles = useStyles();\n\n const [{canDrop, isOver}, drop] = useDrop({\n accept: [NativeTypes.FILE],\n drop: (item) => {\n if (item) {\n // TODO remove after update react-dnd\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onAppendFile(item.files[0]);\n }\n },\n collect: (monitor: DropTargetMonitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n })\n });\n\n const isActive = canDrop && isOver;\n\n return (\n <div ref={drop} className={classnames(styles.root, {[styles.isActive]: isActive}, className)}>\n <UploadIcon className={styles.icon} />\n <Typography className={styles.title}>{i18n.text('Drag an image here')}</Typography>\n <Typography className={styles.description}>\n {i18n.text(\n 'Acceptable image types would include JPG, PNG, TIFF, GIF, BMP. Maximum image size: ${MAX_IMAGE_SIZE}Mb',\n {\n MAX_IMAGE_SIZE\n }\n )}\n </Typography>\n <SelectImageButton onAppendFile={onAppendFile} />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 30px',\n boxSizing: 'border-box'\n },\n border: {\n borderBottom: `1px solid ${theme.palette.text.primary}`,\n flex: 1,\n opacity: 0.12\n },\n text: {\n padding: '0 10px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: string;\n className?: string;\n};\n\nexport const DividerWithText = ({children, className}: Props) => {\n const styles = useStyles();\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.border} />\n <Typography className={styles.text}>{children}</Typography>\n <Box className={styles.border} />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n closeIcon: {\n color: '#fff'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {Snackbar as Snackbar} from '@material-ui/core';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n error: string | null;\n onClose?: () => void;\n};\n\nexport const ErrorSnackbar = ({error, onClose}: Props) => {\n const styles = useStyles();\n\n return (\n <Snackbar\n open={Boolean(error)}\n onClose={onClose}\n message={error}\n action={\n <SmallIconButtonWithTooltip\n className={styles.closeIcon}\n tooltipTitle={i18n.text('Close')}\n icon={CloseIcon}\n onClick={onClose}\n />\n }\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n dialogPaper: {\n position: 'relative',\n maxWidth: '480px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px',\n padding: '16px'\n },\n body: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '0 8px 49px',\n textAlign: 'center'\n },\n targetBox: {\n marginBottom: '8px'\n },\n divider: {\n marginBottom: '28px'\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {uploadImage as uploadImageRequest, ImageHostingItem} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport LinearLoadIndicator from '../LinearLoadIndicator/LinearLoadIndicator';\nimport {ImageByUrlField} from './ImageByUrlField/ImageByUrlField';\nimport {TargetBox} from './TargetBox/TargetBox';\nimport {DividerWithText} from './DividerWithText/DividerWithText';\nimport {ErrorSnackbar} from './ErrorSnackbar/ErrorSnackbar';\nimport {IMAGE_TYPES, MAX_IMAGE_SIZE} from './constants';\nimport {useStyles} from './styles';\nimport {DragAndDrop} from '../DragAndDrop/DragAndDrop';\n\ntype Props = {\n open: boolean;\n onUpload: (image: ImageHostingItem) => void;\n onClose?: () => void;\n};\n\nexport const UploadImageDialog = ({open, onClose, onUpload}: Props) => {\n const styles = useStyles();\n\n const imageServicePath = useSelector(mdm.selectors.getImageServicePath) as string;\n const environment = useSelector(mdm.selectors.getEnvironment) as string;\n const tenant = useSelector(mdm.selectors.getTenant) as string;\n\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string>(null);\n\n const uploadImage = (image: File | string) => {\n setLoading(true);\n uploadImageRequest({image, imageServicePath, environment, tenant})\n .then((res) => {\n onUpload(res);\n onClose();\n })\n .catch((err) => setError(err?.errorMessage || i18n.text('Something went wrong')))\n .finally(() => setLoading(false));\n };\n\n const handleAppendImage = (image: File) => {\n const size = Number((image.size / 1024 / 1024).toFixed(2));\n const isCorrectType = IMAGE_TYPES.includes(image.type);\n\n if (size > MAX_IMAGE_SIZE) {\n setError(i18n.text('File size exceeds configured max file size.'));\n } else if (!isCorrectType) {\n setError(i18n.text('File format is not supported.'));\n } else {\n uploadImage(image);\n }\n };\n\n const handleSendImage = (url: string) => {\n uploadImage(url);\n };\n\n return (\n <DragAndDrop>\n <Dialog open={open} onClose={onClose} classes={{paper: styles.dialogPaper}}>\n <Typography className={styles.title}>{i18n.text('Add new image')}</Typography>\n <Box className={styles.body}>\n <TargetBox className={styles.targetBox} onAppendFile={handleAppendImage} />\n <DividerWithText className={styles.divider}>{i18n.text('or')}</DividerWithText>\n <ImageByUrlField onSend={handleSendImage} />\n </Box>\n {loading && <LinearLoadIndicator />}\n <ErrorSnackbar error={error} onClose={() => setError(null)} />\n </Dialog>\n </DragAndDrop>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n width: '100%',\n marginBottom: '10px'\n },\n image: ({imageMargin}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n uploadContainer: ({imageMargin, imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n border: '1px dashed #0072CE',\n boxSizing: 'border-box',\n marginRight: imageMargin,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0\n };\n },\n uploadButton: {\n width: '50px',\n height: '50px'\n },\n uploadIcon: {\n fontSize: '36px'\n }\n}));\n","import ImageAttributesLine from './ImageAttributesLine';\n\nexport default ImageAttributesLine;\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n generateUri,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n ImageHostingItem,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport Image from '../../../Image/Image';\nimport ImageActionsOverlay from '../../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {SmallIconButton} from '../../../SmallIconButton';\nimport {UploadImageDialog} from '../../../UploadImageDialog/UploadImageDialog';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {ImageRenderProps, RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n parentUri: string;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType = {} as AttributeType,\n attributeValues = [],\n onDeleteAttribute,\n onChangeAttribute,\n requestNextPageOfAttributeValues,\n parentUri,\n paging,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const defaultProfilePic = useSelector((state) =>\n mdmModule.selectors.getModifiedEntityDefaultProfilePic(state, entity.uri)\n );\n const dispatch = useDispatch();\n const [isVisibleUploadDialog, setIsVisibleUploadDialog] = useState(false);\n\n const toggleVisibilityUploadDialog = useCallback(() => {\n setIsVisibleUploadDialog((visible) => !visible);\n }, []);\n\n const handleAddAttributes = useCallback(\n (image: ImageHostingItem) => {\n const uri = generateUri(parentUri, attributeType.name);\n const attributeValue: ImageAttributeValue['value'] = {};\n for (const key in image) {\n const attribute = (attributeType.attributes || []).find(({name}) => name === key);\n if (attribute) {\n attributeValue[key] = [\n {\n uri: generateUri(uri, attribute.name),\n ov: true,\n value: image[key],\n type: attribute.uri\n }\n ];\n }\n }\n onChangeAttribute({attributeType, uri, value: attributeValue});\n },\n [onChangeAttribute, parentUri, attributeType]\n );\n\n const handleDeleteAttribute = useCallback(\n (param: AttributeItem) => {\n onDeleteAttribute(param);\n if (defaultProfilePic === param.uri) {\n const newDefaultPic = attributeValues[0]?.uri === param.uri ? attributeValues[1] : attributeValues[0];\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: newDefaultPic || ({} as ImageAttributeValue)\n })\n );\n }\n },\n [onDeleteAttribute, entity, defaultProfilePic, attributeValues]\n );\n\n const renderImageActionsOverlay = (methods: ImageRenderProps, attribute: ImageAttributeValue) => {\n const {onOpenImageGalleryDialog, onDownload, onShareLink, onSetAsDefault} = methods;\n const imageUrl = getImageAttributeOvUrl(attribute);\n const {uri} = attribute;\n\n return (\n <ImageActionsOverlay\n id={uri}\n onShareLink={() => onShareLink(imageUrl)}\n onSetAsDefault={() => onSetAsDefault(attribute)}\n onDelete={() => handleDeleteAttribute({uri, attributeType})}\n onDownload={() => onDownload([imageUrl])}\n onClick={() => onOpenImageGalleryDialog(uri)}\n />\n );\n };\n\n const renderImage: RenderImage = (methods: ImageRenderProps) => {\n const renderImage = (attribute: ImageAttributeValue = {} as ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const {onOpenImageGalleryDialog} = methods;\n\n return (\n <div className={styles.image} key={uri}>\n <Image\n src={src}\n overlay={renderImageActionsOverlay(methods, attribute)}\n onClick={() => onOpenImageGalleryDialog(uri)}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n data-reltio-id=\"reltio-attribute-value\"\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <div className={styles.root}>\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n overlay\n countFixedItems={1}\n onUpload={toggleVisibilityUploadDialog}\n onDeleteAttribute={handleDeleteAttribute}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n >\n <div className={styles.uploadContainer} onClick={toggleVisibilityUploadDialog}>\n <SmallIconButton\n className={styles.uploadButton}\n iconClassName={styles.uploadIcon}\n icon={CloudUploadIcon}\n />\n </div>\n </ImageAttributesLineCommon>\n <UploadImageDialog\n open={isVisibleUploadDialog}\n onUpload={handleAddAttributes}\n onClose={toggleVisibilityUploadDialog}\n />\n </div>\n );\n};\n\nexport default ImageAttributesLine;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n moreAttributes: {\n display: 'flex',\n paddingBottom: '6px',\n '&$dense': {\n padding: 0\n }\n },\n dense: {},\n popupContainer: {},\n moreAttributesPopup: {\n '&$popupContainer': {}\n },\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n subHeader: {\n backgroundColor: 'rgb(245, 245, 245)',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n },\n noResultsCaptionContainer: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n }\n});\n","import {AttributeType} from '@reltio/mdm-sdk';\nimport {curry, filter, map, pipe} from 'ramda';\nimport {GroupedItem} from './useMoreAttributesItems';\n\nconst filterItems = curry((filterText: string, items: AttributeType[]): AttributeType[] => {\n return filter((item: AttributeType) => item.label.toLowerCase().includes(filterText.toLowerCase()))(items);\n});\n\ntype Props = {\n attrTypes: AttributeType[];\n filter?: string;\n};\n\nconst preparedGroupedItems = ({attrTypes, filter = ''}: Props): GroupedItem[] =>\n pipe(\n filterItems(filter),\n map((attrType: AttributeType) => ({\n item: {\n id: attrType.uri,\n label: attrType.label,\n attrType\n }\n }))\n )(attrTypes);\n\nexport {preparedGroupedItems};\n","import {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport {flattenGroupedItemsData} from '../../../VirtualGroupedList/helpers';\nimport {preparedGroupedItems} from './helpers';\n\nenum GROUP_NAMES {\n parent = 'parent',\n attributes = 'attributes'\n}\n\ntype Props = {\n data: AttributeType[];\n parent?: AttributeType;\n filter?: string;\n};\n\ntype Item = {\n id: string;\n label: string;\n attrType?: AttributeType;\n};\n\nexport type GroupedItem = {\n item: Item;\n items?: GroupedItem[];\n};\n\nexport const useMoreAttributesItems = ({data, parent, filter}: Props) => {\n const hasGroups = Boolean(parent);\n\n const preparedParentGroupItem = useMemo(\n () => (hasGroups ? preparedGroupedItems({attrTypes: [parent], filter}) : []),\n [hasGroups, parent, filter]\n );\n const parentGroup: GroupedItem[] = useMemo(\n () =>\n hasGroups && preparedParentGroupItem?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.parent,\n label: i18n.text('Parent')\n },\n items: preparedParentGroupItem\n }\n ]\n : [],\n [hasGroups, preparedParentGroupItem]\n );\n\n const preparedAttributesGroupItems = useMemo(\n () =>\n preparedGroupedItems({\n attrTypes: data,\n filter\n }),\n [data, filter]\n );\n\n const attributesGroup = useMemo(\n () =>\n hasGroups && preparedAttributesGroupItems?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.attributes,\n label: i18n.text('Attributes')\n },\n items: preparedAttributesGroupItems\n }\n ]\n : preparedAttributesGroupItems,\n [hasGroups, preparedAttributesGroupItems]\n );\n\n const items = useMemo(() => flattenGroupedItemsData((parentGroup || []).concat(attributesGroup)), [\n parentGroup,\n attributesGroup\n ]);\n\n const parentGroupLength = parentGroup.length;\n const attributesGroupLength = attributesGroup.length;\n return {items, hasGroups, parentGroupLength, attributesGroupLength};\n};\n","import React, {useCallback, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport {always, any, append, ifElse, not, pipe, pluck, propEq, reject} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nimport SelectionPopup from '../../../SelectionPopup/SelectionPopup';\nimport AttributeListItem from '../../../AttributeListItem/AttributeListItem';\n\nimport VirtualGroupedList from '../../../VirtualGroupedList/VirtualGroupedList';\nimport {useKeyboardNavigation} from '../../../SelectionPopup/helpers';\nimport AddIcon from '@material-ui/icons/Add';\nimport Highlighter from '../../../Highlighter/Highlighter';\nimport {useMoreAttributesItems} from './useMoreAttributesItems';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\nconst LIST_CONTAINER_WIDTH = 320;\nconst MAX_LIST_CONTAINER_HEIGHT = 255;\nconst MIN_CONTAINER_HEIGHT = 140;\nconst CONTAINER_HEADER_HEIGHT = 112;\n\nconst MoreAttributesButton = ({label, popupTitle = label, data, parent, dense, onApply}) => {\n const styles = useStyles();\n const inputRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const togglePopupOpen = () => setIsOpen(!isOpen);\n const closePopup = () => setIsOpen(false);\n\n const [filter, setFilter] = useState('');\n const clearFilter = () => setFilter('');\n\n const [selectedItems, setSelectedItems] = useState([]);\n const clearSelectedItems = () => setSelectedItems([]);\n\n const {items, hasGroups, parentGroupLength, attributesGroupLength} = useMoreAttributesItems({data, parent, filter});\n\n const addSelectedAttributes = () => {\n if (selectedItems.length > 0) {\n onApply(pluck('attrType', selectedItems));\n }\n };\n\n const handleListItemClick = useCallback(\n (item, checked) => {\n setSelectedItems(ifElse(always(checked), append(item), reject(propEq('id', item.id)))(selectedItems));\n },\n [selectedItems]\n );\n\n const getItemSize = useCallback((i, item) => (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT), []);\n\n const handleSearchOnEnter = useCallback(\n ({item}) => {\n handleListItemClick(item, not(any(propEq('id', item.id))(selectedItems)));\n },\n [handleListItemClick, selectedItems]\n );\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems\n });\n\n const focusIndexRef = useRef(null);\n focusIndexRef.current = focusIndex;\n\n const groupsCount = hasGroups ? (parentGroupLength ? 1 : 0) + (attributesGroupLength ? 1 : 0) : 0;\n const itemsCount = items.length - groupsCount;\n\n const listHeight = Math.min(\n MAX_LIST_CONTAINER_HEIGHT,\n ITEM_HEIGHT * itemsCount + ITEM_GROUP_TITLE_HEIGHT * groupsCount\n );\n const containerHeight = Math.max(MIN_CONTAINER_HEIGHT, listHeight + CONTAINER_HEADER_HEIGHT);\n\n const listItemRenderer = useCallback(\n (style, {item, level = 0}, index) => {\n const isChecked = any(propEq('id', item.id))(selectedItems);\n const isFocused = focusIndexRef.current === index;\n\n return (\n <AttributeListItem\n key={item.uri}\n onClick={handleListItemClick}\n checked={isChecked}\n level={level}\n data={item}\n label={<Highlighter text={item.label} highlight={filter} />}\n labelInText={item.label}\n style={style}\n isFocused={isFocused}\n isRequired={!!item.attrType?.required}\n LogoIcon={item.LogoIcon}\n />\n );\n },\n [filter, handleListItemClick, selectedItems]\n );\n\n const renderGroupTitle = useCallback(\n (style, item) => (\n <ListItem component={'div'} className={styles.subHeader} style={style} key={`group-${item.item.id}`}>\n {item.item.label}\n </ListItem>\n ),\n []\n );\n\n return (\n <div className={classnames(styles.moreAttributes, {[styles.dense]: dense})}>\n <Button color=\"primary\" onClick={togglePopupOpen} ref={inputRef} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{label}</div>\n </Button>\n <SelectionPopup\n open={isOpen}\n className={classnames(styles.moreAttributesPopup, styles.popupContainer)}\n anchorEl={inputRef.current}\n onClose={pipe(addSelectedAttributes, closePopup, clearFilter, clearSelectedItems)}\n onSearch={setFilter}\n containerHeight={containerHeight}\n title={popupTitle}\n containerWidth={LIST_CONTAINER_WIDTH}\n searchInputOnKeyDown={handleKeyDown}\n >\n <VirtualGroupedList\n getItemSize={getItemSize}\n renderItem={listItemRenderer}\n renderGroupTitle={renderGroupTitle}\n items={items}\n height={listHeight}\n containerWidth={LIST_CONTAINER_WIDTH}\n focusIndex={focusIndex}\n />\n {items.length === 0 && (\n <div className={styles.noResultsCaptionContainer}>\n <Typography variant=\"caption\" display=\"block\" gutterBottom>\n {i18n.text('No results found')}\n </Typography>\n </div>\n )}\n </SelectionPopup>\n </div>\n );\n};\n\nMoreAttributesButton.propTypes = {\n label: PropTypes.string,\n popupTitle: PropTypes.string,\n data: PropTypes.array,\n parent: PropTypes.object,\n dense: PropTypes.bool,\n onApply: PropTypes.func\n};\n\nexport default MoreAttributesButton;\n","import React, {memo} from 'react';\nimport {evaluateDeepEntityLabel, getLabel, NestedAttributeType} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\n\nconst NestedAttribute = (props) => {\n const {attributeValue, attributeType} = props;\n const label = evaluateDeepEntityLabel(attributeValue, attributeType.dataLabelPattern);\n\n return (\n <ComplexAttribute\n label={getLabel(label)}\n attributeTypesList={attributeType.attributes || attributeType.analyticsAttributes}\n {...props}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n item: {\n marginBottom: '20px'\n },\n dense: {\n marginBottom: 0\n }\n});\n","import React, {memo, useMemo, useCallback, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {identity, pipe, isEmpty} from 'ramda';\nimport {\n evaluateDeepEntityLabel,\n ReferenceAttributeType,\n referencedEntityAttributeTypesSelectionStrategy,\n getEntityType,\n getReferencedEntityFromAttrValue,\n getReferencedRelationFromAttrValue,\n getReferencedEntityUri,\n getReferencedEntityTypeUri,\n getReferencedEntityTypeUriFromAttrType,\n getReferencedRelationAttrTypesUris,\n findAttributeTypeByUri,\n getCreatableAttributeTypes,\n createTemporaryEntity,\n convertReferencedEntityForAttrValue,\n createReferencedRelationForAttrValue,\n addReferencedRelationCrosswalks,\n getReferencedEntityUriFromAttrValue,\n checkCanEditAttribute,\n checkMetadataForCreate,\n isReltioCrosswalk,\n getErrorMessage,\n EntityType,\n MetadataType,\n getErrorId,\n getReferencedEntityActiveError,\n isTempUri,\n getLabel\n} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport EntitySelector from '../EntitySelector/EntitySelector';\nimport {ErrorWrapper} from '../../../index';\nimport {useStyles} from './styles';\n\nconst ReferenceAttribute = (props) => {\n const styles = useStyles();\n const {\n modifiedEntity,\n metadata,\n globalSearchRequestOptions,\n onDeleteModifiedEntity,\n onUpdateModifiedEntity,\n onDeactivateError,\n ...ownProps\n } = props;\n const {attributeValue, attributeType, mode, crosswalks, errors, onChangeAttribute} = ownProps;\n const initialAttributeValue = useRef(attributeValue);\n const referencedEntity = getReferencedEntityFromAttrValue(attributeValue);\n const referencedRelation = getReferencedRelationFromAttrValue(attributeValue);\n const referencedEntityTypeUri = getReferencedEntityTypeUriFromAttrType(attributeType);\n const referencedEntityType = getEntityType(metadata, referencedEntityTypeUri);\n const label = modifiedEntity\n ? evaluateDeepEntityLabel(modifiedEntity, referencedEntityType.dataLabelPattern)\n : attributeValue.label;\n const entityTypesUris = useMemo(() => [referencedEntityTypeUri], [referencedEntityTypeUri]);\n\n const allCrosswalks = useMemo(() => addReferencedRelationCrosswalks(crosswalks, referencedRelation), [\n crosswalks,\n referencedRelation\n ]);\n\n const referencedEntityMissedError = useMemo(() => getReferencedEntityActiveError(attributeValue, errors), [\n attributeValue,\n errors\n ]);\n\n const selectedEntity = useMemo(\n () =>\n referencedEntity && {\n entityUri: getReferencedEntityUri(referencedEntity),\n entityType: getReferencedEntityTypeUri(referencedEntity),\n entityLabel: attributeValue.label\n },\n [referencedEntity, attributeValue.label]\n );\n\n const editableAttrTypes = useMemo(\n () =>\n getReferencedRelationAttrTypesUris(attributeType)\n .map((attrTypeUri) => findAttributeTypeByUri(metadata, attrTypeUri))\n .filter(identity),\n [attributeType, metadata]\n );\n\n const newEntityAttrTypesSelectionStrategy = useCallback(\n (entityType) => referencedEntityAttributeTypesSelectionStrategy(attributeType, entityType),\n [attributeType]\n );\n\n const onChangeEntity = useCallback(\n (entity) => {\n if (modifiedEntity) {\n onDeleteModifiedEntity(modifiedEntity.uri);\n }\n const initialAttrValue = initialAttributeValue.current;\n const isInitialEntity =\n !isEmpty(entity) && entity.uri === getReferencedEntityUriFromAttrValue(initialAttrValue);\n const modifiedValue = {\n ...attributeValue,\n label: entity.label,\n refEntity: isInitialEntity ? initialAttrValue.refEntity : convertReferencedEntityForAttrValue(entity),\n refRelation: isInitialEntity\n ? initialAttrValue.refRelation\n : createReferencedRelationForAttrValue(attributeValue)\n };\n onChangeAttribute({value: modifiedValue, attributeType, uri: attributeValue.uri});\n if (referencedEntityMissedError) {\n onDeactivateError(getErrorId(referencedEntityMissedError));\n }\n },\n [\n attributeValue,\n attributeType,\n modifiedEntity,\n onChangeAttribute,\n onDeleteModifiedEntity,\n onDeactivateError,\n referencedEntityMissedError\n ]\n );\n\n const onCreateEntity = useCallback(\n (entityTypeUri, initValue) => {\n const newEntityAttrTypes = pipe(\n newEntityAttrTypesSelectionStrategy,\n getCreatableAttributeTypes(mode)\n )(referencedEntityType);\n const newEntity = createTemporaryEntity({\n entityTypeUri,\n initValue,\n attributeTypes: newEntityAttrTypes,\n metadata,\n mode\n });\n onChangeEntity(newEntity);\n onUpdateModifiedEntity(newEntity);\n },\n [\n newEntityAttrTypesSelectionStrategy,\n mode,\n referencedEntityType,\n metadata,\n onChangeEntity,\n onUpdateModifiedEntity\n ]\n );\n\n const canChangeReferencedEntity = useMemo(\n () =>\n checkCanEditAttribute({\n attributeType,\n attributeValue,\n mode,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, crosswalks]\n );\n const canCreateReferencedEntity = useMemo(() => checkMetadataForCreate(mode, referencedEntityType), [\n mode,\n referencedEntityType\n ]);\n\n const errorMessage = getErrorMessage(referencedEntityMissedError);\n\n return (\n <ComplexAttribute\n {...ownProps}\n label={getLabel(label)}\n attributeTypesList={editableAttrTypes}\n crosswalks={allCrosswalks}\n metadata={metadata}\n >\n <ErrorWrapper errorMessage={errorMessage}>\n <EntitySelector\n className={classnames(styles.item, {\n [styles.dense]: errorMessage || (selectedEntity && isTempUri(selectedEntity.entityUri))\n })}\n entity={selectedEntity || {}}\n entityTypesUris={entityTypesUris}\n max={20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n mode={mode}\n onChange={canChangeReferencedEntity ? onChangeEntity : undefined}\n onCreate={canCreateReferencedEntity ? onCreateEntity : undefined}\n metadata={metadata}\n attributeTypesSelectionStrategy={newEntityAttrTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </ComplexAttribute>\n );\n};\n\nReferenceAttribute.propTypes = {\n ...ReferenceAttributeType,\n modifiedEntity: EntityType,\n metadata: MetadataType,\n globalSearchRequestOptions: PropTypes.object,\n onDeleteModifiedEntity: PropTypes.func,\n onUpdateModifiedEntity: PropTypes.func,\n onDeactivateError: PropTypes.func\n};\n\nexport default memo(ReferenceAttribute);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport {isTempUri, getReferencedEntityUriFromAttrValue} from '@reltio/mdm-sdk';\n\nconst mapStateToProps = (state, ownProps) => {\n const entityUri = getReferencedEntityUriFromAttrValue(ownProps.attributeValue);\n return {\n modifiedEntity: isTempUri(entityUri) ? mdmModule.selectors.getModifiedEntity(state, entityUri) : null,\n metadata: mdmModule.selectors.getMetadata(state),\n globalSearchRequestOptions: mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n };\n};\n\nconst mapDispatchToProps = {\n onDeleteModifiedEntity: profile.modifiedEntities.actions.entityDeleted,\n onUpdateModifiedEntity: profile.modifiedEntities.actions.entityCreated,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReferenceAttribute);\n","import {defaultTo, isNil, map, path, pipe, prepend, reject, uniq} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n areOneHierarchyUris,\n DependentLookupsParentForApi,\n DependentLookupsStructureNode,\n filterRelatedParentValuesForDependentLookupValueUri,\n getAttributeValuePath,\n getBaseUri\n} from '@reltio/mdm-sdk';\n\nimport {ExtendedParentValue} from '../types';\n\nexport const getParents = (state, valueUri: string, node: DependentLookupsStructureNode) => {\n const parentNodesValues: ExtendedParentValue[] = node.parents.flatMap((type) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, type);\n return parentNode.values.map((value) => ({\n ...value,\n type,\n dependentLookupCode: parentNode.attrType.dependentLookupCode\n }));\n });\n const modifiedEntities = mdmModule.selectors.getModifiedEntities(state);\n const entityUri = mdmModule.selectors.getEntityUri(state);\n const connections = mdmModule.selectors.getAllRelationsToAddAndEdit(state);\n const metadata = mdmModule.selectors.getMetadata(state);\n const ownParentNodesValues = filterRelatedParentValuesForDependentLookupValueUri<ExtendedParentValue>({\n parentValues: parentNodesValues,\n valueUri,\n entityUri,\n modifiedEntities,\n connections\n });\n const possibleParentBaseTypeUris: string[] = pipe(\n getAttributeValuePath,\n defaultTo([]),\n map(pipe(path(['valueType', 'uri']), getBaseUri)),\n prepend(modifiedEntities[entityUri]?.type),\n reject(isNil),\n uniq\n )(\n {\n entityUri,\n entitiesMap: modifiedEntities,\n connections,\n metadata\n },\n valueUri\n );\n const neededParentsAttributeTypes = node.parents\n .filter((typeUri) => possibleParentBaseTypeUris.some(areOneHierarchyUris(typeUri)))\n .map((typeUri) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, typeUri);\n return parentNode.attrType;\n });\n const missedParentsAttributeTypes = neededParentsAttributeTypes.filter(\n (attrType) => !ownParentNodesValues.some(({type, value}) => value && type === attrType.uri)\n );\n const parents = Object.values<DependentLookupsParentForApi>(\n ownParentNodesValues.reduce(\n (typesMap, parent) => ({\n ...typesMap,\n [parent.dependentLookupCode]: {\n type: parent.dependentLookupCode,\n codeValues: uniq([parent.value, ...(typesMap[parent.dependentLookupCode]?.codeValues || [])])\n .filter(Boolean)\n .sort()\n }\n }),\n {}\n )\n );\n return {parents, missedParentsAttributeTypes};\n};\n","import {equals} from 'ramda';\nimport {DependentLookupEditorContext} from '../types';\n\nconst DLEditorContextCache: {\n [valueUri: string]: DependentLookupEditorContext;\n} = {};\n\nexport const fromCache = (valueUri, context) => {\n const cachedContext = DLEditorContextCache[valueUri];\n if (equals(context, cachedContext)) {\n return cachedContext;\n } else {\n if (equals(cachedContext?.parents, context.parents)) {\n context.parents = cachedContext.parents;\n }\n DLEditorContextCache[valueUri] = context;\n return context;\n }\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst marginBottom = 10;\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n errorWrapper: {\n alignSelf: 'stretch'\n },\n editor: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: `${marginBottom}px`\n },\n 'editor-value': {\n flex: '1 1 auto'\n },\n 'editor-read-only-value': {\n marginLeft: '12px',\n display: 'flex',\n alignItems: 'center'\n },\n 'editor-actions': {\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '8px'\n },\n addButton: {\n marginRight: '-8px'\n },\n button: {\n color: theme.palette.text.secondary\n },\n placeholder: {\n height: `${40 + marginBottom}px`\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport AddIcon from '@material-ui/icons/Add';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {\n AttributeErrorType,\n AttributeTypeType,\n attributeUriToSearchUri,\n checkCanCreateAttribute,\n checkCanDeleteAttribute,\n checkCanEditAttribute,\n ErrorType,\n getAttributeValue,\n getAttrDataTypeDefinition,\n getErrorId,\n getErrorMessage,\n getErrorType,\n isDependentLookupAttrType,\n isEditableMode as checkIsEditableMode,\n ModeType,\n SimpleAttributeValueType\n} from '@reltio/mdm-sdk';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport DataTypeValueEditor from '../../../editors/DataTypeValueEditor/DataTypeValueEditor';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {attributeValueToEditorValue, prepareChangeData} from './utils';\nimport withAsyncMount from '../../../../HOCs/withAsyncMount/withAsyncMount';\nimport {getDependentLookupEditorContext} from './selectors/getDependentLookupEditorContext';\n\nimport {useStyles} from './styles';\n\nconst AsyncMountPlaceholder = () => {\n const styles = useStyles();\n return <div className={styles.placeholder} />;\n};\n\nconst SimpleAttributeEditor = ({\n className,\n attributeValue,\n attributeType,\n isReltioCrosswalk,\n ownError,\n mode,\n onAddOneMore,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n state,\n ...otherProps\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const isEditableMode = checkIsEditableMode(mode);\n const dataTypeDefinition = getAttrDataTypeDefinition(attributeType);\n const value = attributeValueToEditorValue(attributeValue, dataTypeDefinition);\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n const canEdit = checkCanEditAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const canDelete = checkCanDeleteAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const showToEdit = canEdit && isEditableMode;\n const errorMessage = getErrorMessage(ownError);\n const dependentLookupEditorContext = useSelector((state) =>\n isDependentLookupAttrType(attributeType)\n ? getDependentLookupEditorContext(state, attributeValue, attributeType?.uri)\n : null\n );\n const onDelete = () => {\n onDeleteAttribute({uri: attributeValue.uri, attributeType});\n if (getErrorType(ownError) !== ErrorType.missed) {\n deactivateError();\n }\n };\n\n const deactivateError = () => {\n if (ownError) {\n onDeactivateError(getErrorId(ownError));\n }\n };\n\n const showAddButton = !!onAddOneMore && canCreate && !attributeType.singleValue;\n const showDeleteButton = !deleted && !!onDeleteAttribute && canDelete;\n const hasError = !!errorMessage;\n const deletedProps = deleted ? {disabled: true} : {};\n\n return (\n <div className={classnames(styles.editor, className)}>\n <ErrorWrapper errorMessage={errorMessage} className={styles.errorWrapper}>\n <div\n className={classnames(\n styles['editor-value'],\n {[styles.deleted]: deleted},\n {[styles['editor-read-only-value']]: !showToEdit}\n )}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {showToEdit ? (\n <DataTypeValueEditor\n fieldName={attributeUriToSearchUri(attributeType.uri)}\n value={value}\n dataTypeDefinition={dataTypeDefinition}\n error={hasError}\n onChange={pipe(\n prepareChangeData(attributeValue, attributeType),\n onChangeAttribute,\n deactivateError\n )}\n fullWidth\n {...dependentLookupEditorContext}\n {...otherProps}\n {...deletedProps}\n />\n ) : (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={dataTypeDefinition}\n />\n )}\n </div>\n </ErrorWrapper>\n <div className={styles['editor-actions']}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {showAddButton && (\n <SmallIconButton\n icon={AddIcon}\n onClick={onAddOneMore}\n size=\"L\"\n className={classnames(styles.addButton, styles.button)}\n />\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && (\n <SmallIconButton className={styles.button} icon={DeleteIcon} onClick={onDelete} size=\"L\" />\n )}\n </div>\n </div>\n );\n};\n\nSimpleAttributeEditor.propTypes = {\n className: PropTypes.string,\n attributeValue: SimpleAttributeValueType,\n attributeType: AttributeTypeType,\n ownError: AttributeErrorType,\n isReltioCrosswalk: PropTypes.bool,\n state: PropTypes.oneOf(['deleted', 'edited']),\n mode: ModeType,\n onAddOneMore: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeactivateError: PropTypes.func,\n additionalControlsRenderer: PropTypes.func\n};\n\nexport default memo(withAsyncMount(SimpleAttributeEditor, AsyncMountPlaceholder));\n","import {DependentLookupsStructureNode, isAutopopulationEnabled, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\n\nimport {DependentLookupEditorContext} from './types';\nimport {getParents} from './helpers/parents';\nimport {buildMissedParentsMessage} from './helpers/missedParentsMessage';\nimport {fromCache} from './helpers/cache';\n\nexport const getDependentLookupEditorContext = (\n state,\n attributeValue: SimpleAttributeValue,\n attributeTypeUri: string\n) => {\n const node: DependentLookupsStructureNode = mdmModule.selectors.getDependentLookupsStructureNode(\n state,\n attributeTypeUri\n );\n if (node) {\n const valueUri = attributeValue.uri;\n const {parents, missedParentsAttributeTypes} = getParents(state, valueUri, node);\n const {isBlocked = false} = mdmModule.selectors.getDependentLookupEditorState(state, valueUri) || {};\n const missedParentsMessage = buildMissedParentsMessage(missedParentsAttributeTypes);\n const autocompleteConfig = mdmModule.selectors.getLookupAutocomplete(state);\n const autopopulationEnabled = isAutopopulationEnabled(autocompleteConfig, attributeTypeUri);\n const isEmptyValue = !attributeValue?.lookupCode && !attributeValue?.value;\n const placeholder =\n (isEmptyValue && isBlocked && i18n.text('Populating values...')) ||\n (isEmptyValue && missedParentsMessage) ||\n '';\n const context: DependentLookupEditorContext = {\n parents: missedParentsMessage ? null : parents,\n disabled: (!!missedParentsMessage && isEmptyValue) || isBlocked,\n placeholder,\n autopopulationId: autopopulationEnabled ? valueUri : null\n };\n if (placeholder) {\n context.value = null;\n }\n return fromCache(valueUri, context);\n }\n};\n","import {pipe, prop} from 'ramda';\nimport i18n from 'ui-i18n';\n\nconst joinWords = (words) =>\n words.reduce((result, word, i) => [result, word].join(i === words.length - 1 ? ` ${i18n.text('and')} ` : ', '));\n\nexport const buildMissedParentsMessage = (missedAttributeTypes) =>\n missedAttributeTypes.length\n ? i18n.text('Please select value for ${labels} ${attributes}.', {\n labels: joinWords(missedAttributeTypes.map(pipe(prop('label'), (label) => `'${label}'`))),\n attributes: missedAttributeTypes.length === 1 ? i18n.text('attribute') : i18n.text('attributes')\n })\n : '';\n","import moment from 'moment';\nimport {DataTypes, getAttrDataTypeDefinition, parseBoolean} from '@reltio/mdm-sdk';\nimport {curry} from 'ramda';\nimport {utils} from '@reltio/mdm-sdk';\n\nconst attributeValueToEditorValue = (attributeValue = {}, {type}) => {\n const {value, lookupCode} = attributeValue;\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED: {\n return parseBoolean(value);\n }\n case DataTypes.TYPE_DATE:\n return (value && utils.dates.toLocalDate(value)) || null;\n case DataTypes.TYPE_LOCAL_DATE:\n case DataTypes.TYPE_TIMESTAMP:\n case DataTypes.TYPE_ACTIVENESS_DATE: {\n return (value && new Date(value)) || null;\n }\n case DataTypes.TYPE_DEPENDENT_LOOKUP:\n case DataTypes.TYPE_LOOKUP: {\n return {value, lookupCode};\n }\n default:\n return value;\n }\n};\n\nconst editorValueToAttributeValue = (attributeType, editorValue) => {\n const {type} = getAttrDataTypeDefinition(attributeType);\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED:\n return editorValue.toString();\n case DataTypes.TYPE_DATE:\n return (editorValue && moment(editorValue).format('YYYY-MM-DD')) || '';\n case DataTypes.TYPE_TIMESTAMP: {\n return (editorValue && moment(editorValue).format()) || '';\n }\n case DataTypes.TYPE_ACTIVENESS_DATE:\n case DataTypes.TYPE_LOCAL_DATE:\n return editorValue && editorValue.valueOf();\n default:\n return editorValue || '';\n }\n};\n\nconst prepareChangeData = curry((attributeValue, attributeType, editorValue) => {\n const value = editorValueToAttributeValue(attributeType, editorValue);\n return {\n value,\n uri: attributeValue.uri,\n attributeType\n };\n});\n\nexport {attributeValueToEditorValue, editorValueToAttributeValue, prepareChangeData};\n","import React from 'react';\n\nexport const HasDeletionsContext = React.createContext<{\n hasDeletionsMap: {[attrTypeUri: string]: boolean};\n setHasDeletions: (attrTypeUri: string, value: boolean) => void;\n }>(null);\n","import React from 'react';\n\nexport const PinnedAttributesContext = React.createContext<string[]>(null);\n","import {\n __,\n concat,\n defaultTo,\n flatten,\n includes,\n isNil,\n partition,\n path,\n pipe,\n props,\n propEq,\n reject,\n values\n} from 'ramda';\nimport {\n AttributeType,\n EntityAttrTypes,\n getEntityType,\n Metadata,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\n\nexport const getFilteredAttrTypes = (\n metadata: Metadata,\n type: string,\n includeUris: string[],\n excludeUris: string[]\n) => {\n const attrTypes = pipe(\n getEntityType,\n defaultTo({}),\n props(['attributes', 'analyticsAttributes']),\n reject(isNil),\n flatten,\n concat(__, pipe(values, reject(propEq('uri', EntityAttrTypes.id.uri)))(EntityAttrTypes))\n )(metadata, type);\n\n return includeUris.length\n ? attrTypes.filter(({uri}) => includeUris.includes(uri))\n : attrTypes.filter(({uri}) => !excludeUris.includes(uri));\n};\n\ntype PagersData = {\n attrType: AttributeType;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue | string | number)[];\n};\n\nexport const splitPagersData = (\n alwaysVisibleTypeUris: string[],\n pagersData: PagersData[]\n): [PagersData[], PagersData[]] =>\n partition(pipe(path(['attrType', 'uri']), includes(__, alwaysVisibleTypeUris)), pagersData);\n","import KeyboardArrowUp from '@material-ui/icons/KeyboardArrowUp';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n};\n\nconst ShowLess = ({onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowUp className={styles['svg-icon__root']} />\n {i18n.text('Show less')}\n </Link>\n );\n};\n\nexport default ShowLess;\n","import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n moreNumber?: number;\n valueNumber?: number;\n onClick: () => void;\n};\n\nconst ShowMore = ({moreNumber, valueNumber, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowDownIcon className={styles['svg-icon__root']} />\n {moreNumber && valueNumber\n ? i18n.text('Show ${moreNumber} more of remaining ${valueNumber} value', {moreNumber, valueNumber})\n : i18n.text('Show more')}\n </Link>\n );\n};\n\nexport default ShowMore;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n }\n});\n","import ReadModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return ReadModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport SimpleAttribute from '../SimpleAttribute';\nimport NestedAttribute from '../NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class ReadModeAttributesFactory {\n static build(attributeType, props = {}) {\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return <SimpleAttribute {...props} />;\n }\n }\n}\n","import React, {memo, useMemo, useState} from 'react';\nimport {path} from 'ramda';\nimport {AttributeType, Entity, getAttributesListForReadMode, Relation} from '@reltio/mdm-sdk';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport AttributesPager from '../AttributesPager';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\n\ntype Props = {\n attrTypes: AttributeType[];\n entity: Partial<Entity> | Partial<Relation>;\n parentUri?: string;\n drawLines?: boolean;\n children?: React.ReactNode;\n className?: string;\n max?: number;\n alwaysVisibleTypeUris?: string[];\n showNonOv?: boolean;\n};\n\nconst AttributesList = ({\n attrTypes,\n entity,\n parentUri,\n drawLines,\n children,\n className,\n max,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n showNonOv\n}: Props) => {\n const [visibleValuesCount, setVisibleValuesCount] = useState(max || Infinity);\n const pagersData = useMemo(() => getAttributesListForReadMode(attrTypes, entity, showNonOv), [\n attrTypes,\n entity,\n showNonOv\n ]);\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const visibleAttributePagersData = regularPagersData.slice(0, visibleValuesCount);\n const showMore = max && visibleAttributePagersData.length < regularPagersData.length;\n const showLess =\n max && visibleAttributePagersData.length >= regularPagersData.length && max < visibleAttributePagersData.length;\n\n const decoratorProps = {\n enabled: drawLines\n };\n\n const onShowMore = () => {\n setVisibleValuesCount(Infinity);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n {visibleAttributePagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], entity.attributes)}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n ))}\n {showMore && <ShowMore onClick={onShowMore} />}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default memo(AttributesList);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst fontSize = '13px';\nconst lineHeight = '15px';\n\nconst commonStyles = {\n titleRow: {\n display: 'block',\n minHeight: '16px',\n textIndent: '-1em',\n paddingLeft: '1em'\n },\n title: {\n whiteSpace: 'nowrap'\n },\n ovIcon: {\n marginLeft: '8px',\n marginRight: '-3px',\n marginTop: '-1px',\n textIndent: 0\n }\n};\n\nexport const useStyles = makeStyles({\n paddingWrapper: {\n paddingTop: '3px',\n paddingBottom: '5px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n },\n paddingWrapperWithLines: {\n paddingBottom: '1px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n }\n});\n\nexport const useOneLineStyles = makeStyles({\n wrapper: {\n fontSize,\n lineHeight,\n flex: 1\n },\n collaborationWrapper: {\n display: 'flex',\n alignItems: 'start',\n minHeight: '18px'\n },\n attribute: {\n marginLeft: '8px',\n paddingLeft: '4px',\n paddingRight: '4px',\n display: 'inline',\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n titleIcon: {\n width: '16px',\n height: '16px',\n marginBottom: '-3px',\n marginRight: '8px',\n marginLeft: '1px',\n color: 'rgba(0, 0, 0, 0.38)'\n },\n ...commonStyles\n});\n\nexport const useMultiLineStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n fontSize,\n lineHeight\n },\n attribute: {\n '&:last-child': {\n marginBottom: 0\n },\n paddingLeft: '4px',\n paddingRight: '4px',\n marginLeft: '5px',\n marginBottom: '4px',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n attributes: {\n alignSelf: 'stretch'\n },\n ...commonStyles,\n titleRow: {\n ...commonStyles.titleRow,\n marginBottom: '3px'\n }\n});\n","import React from 'react';\nimport {\n AttributeType,\n AttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isRelationAttrType\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport Title from '../../../Title/Title';\nimport OvIcon from '../../OvIcon';\nimport Attribute from '../AttributesFactory/Attribute';\nimport {useOneLineStyles} from './styles';\n\ntype Props = {\n value: AttributeValue;\n attributeType: AttributeType;\n nonVisibleValues: AttributeValue[];\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n totalNonVisibleValues: number;\n};\n\nconst OneLineRenderer = ({\n value,\n nonVisibleValues,\n attributeType,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useOneLineStyles();\n const {label} = attributeType;\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={classnames(styles.collaborationWrapper, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n <Attribute\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n inlined\n />\n </div>\n <CommentsContainer\n uri={value.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: value.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default OneLineRenderer;\n","import React, {useState} from 'react';\nimport {min} from 'ramda';\nimport classnames from 'classnames';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {AttributeType, NestedAttributeValue, ReferenceAttributeValue, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport {useMultiLineStyles} from './styles';\n\nimport Attribute from '../AttributesFactory/Attribute';\nimport Title from '../../../Title/Title';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport OvIcon from '../../OvIcon';\n\ntype Props = {\n max: number;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n attributeType: AttributeType;\n totalVisibleValues: number;\n totalNonVisibleValues: number;\n nonVisibleValues: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n parentUri: string;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n};\n\nconst MultiLineRenderer = ({\n max,\n values,\n nonVisibleValues,\n totalVisibleValues,\n attributeType,\n parentUri,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useMultiLineStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n const {label} = attributeType;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.titleRow}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n <div className={styles.attributes}>\n {shownValues.map((value) => (\n <Attribute\n key={value.uri}\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n />\n ))}\n </div>\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default MultiLineRenderer;\n","import React, {Fragment} from 'react';\n\ntype Props = {\n className?: string;\n values: string[];\n Component: React.ElementType;\n dataReltioId?: string;\n};\n\nconst SpecialAttributesArray = ({className, values, Component, dataReltioId}: Props) => {\n return (\n <div className={className} data-reltio-id={dataReltioId}>\n {values.map((value, index) => (\n <Fragment key={value}>\n <Component value={value} />\n {index < values.length - 1 && ', '}\n </Fragment>\n ))}\n </div>\n );\n};\n\nexport default SpecialAttributesArray;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nexport const useCommonStyles = makeStyles({\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n});\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getRoleLabel, Metadata} from '@reltio/mdm-sdk';\n\nimport {HistoryDiffContext} from '../../../../../contexts/HistoryAppearanceContext';\nimport {\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '../../helpers/historyAppearance';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Role = ({value}: Props) => {\n const styles = useCommonStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('roles', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return <span className={styles[historyClassName]}>{getRoleLabel(metadata, value)}</span>;\n};\n\nexport default Role;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Role from './Role';\n\ntype Props = {\n className?: string;\n values: string[];\n};\n\nconst Roles = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Role}\n />\n);\n\nexport default Roles;\n","import React, {useContext} from 'react';\nimport InternalLink from '../../../../InternalLink/InternalLink';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getDataTenantEntityUri, getTagLink} from '@reltio/mdm-sdk';\n\nimport {EntityContext, HistoryDiffContext} from '../../../../../contexts';\nimport {\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '../../helpers/historyAppearance';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Tag = ({value}: Props) => {\n const styles = useCommonStyles();\n const uiPath: string = useSelector(mdmModule.selectors.getUIPath);\n const ownEntity: Entity = useContext(EntityContext);\n const currentEntity: Entity = useSelector(mdmModule.selectors.getEntity);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('tags', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const entity = ownEntity || currentEntity;\n\n return (\n <InternalLink\n className={styles[historyClassName]}\n href={getTagLink({\n uiPath,\n tag: value,\n entityUri: entity.dataTenant ? getDataTenantEntityUri(entity) : entity.uri\n })}\n >\n {value}\n </InternalLink>\n );\n};\n\nexport default Tag;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Tag from './Tag';\n\ntype Props = {\n className?: string;\n values: string[];\n dataReltioId?: string;\n};\n\nconst Tags = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Tag}\n />\n);\n\nexport default Tags;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {AttributeType, EntityAttrTypes} from '@reltio/mdm-sdk';\nimport TagIcon from '@material-ui/icons/LocalOffer';\n\nimport {useOneLineStyles} from './styles';\n\nimport Title from '../../../Title/Title';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Roles from '../SpecialAttributes/Roles';\nimport Tags from '../SpecialAttributes/Tags';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n};\n\nconst SpecialRenderer = ({values, attributeType}: Props) => {\n const styles = useOneLineStyles();\n const {label} = attributeType;\n\n const renderIcon = (className) => {\n return attributeType.uri === EntityAttrTypes.tags.uri ? <TagIcon className={className} /> : null;\n };\n\n const renderValue = (className) => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags className={className} values={values as string[]} />;\n case EntityAttrTypes.roles.uri: {\n return <Roles className={className} values={values as string[]} />;\n }\n default: {\n //startDate, endDate, \"crosswalk\" fake nested subattibutes\n return (\n <Attribute\n className={className}\n attributeValue={{value: values[0]}}\n attributeType={attributeType}\n inlined\n />\n );\n }\n }\n };\n\n return (\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n {renderIcon(styles.titleIcon)}\n <Title label={label} className={styles.title} data-reltio-id=\"reltio-attribute-label\" />\n {renderValue(styles.attribute)}\n </div>\n );\n};\n\nexport default SpecialRenderer;\n","import classnames from 'classnames';\nimport React, {memo} from 'react';\nimport {always, cond, has, ifElse, partition, prop, T} from 'ramda';\nimport {\n AttributeType,\n isComplexAttribute,\n isImage,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n isSpecialAttribute,\n isOv,\n ImageAttributeValue,\n AttributeValue\n} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {useStyles} from './styles';\nimport Title from '../../../Title/Title';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport OneLineRenderer from './OneLineRenderer';\nimport MultiLineRenderer from './MultiLineRenderer';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport SpecialRenderer from './SpecialRenderer';\n\nconst RENDERER_TYPES = {\n oneLine: 'oneLine',\n multiLine: 'multiLine',\n imageLine: 'imageLine',\n special: 'special'\n};\n\ntype Props = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | string\n | number\n | ImageAttributeValue\n | AttributeValue\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n parentUri?: string;\n drawLines: boolean;\n max?: number;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv?: boolean;\n};\n\nconst AttributesPager = ({\n values,\n attributeType,\n drawLines,\n paging = {},\n parentUri,\n max = Infinity,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n const partitionByOv = partition(isOv);\n if (!values || !values.length) {\n return null;\n }\n const [ovValues, nonOvValues] = partitionByOv(values);\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(visibleValues.length))(paging);\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n const isOneLineRender = totalVisibleValues === 1 && !isComplexAttribute(attributeType);\n\n const render = () => {\n const type = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [always(isOneLineRender), always(RENDERER_TYPES.oneLine)],\n [T, always(RENDERER_TYPES.multiLine)]\n ])(attributeType);\n switch (type) {\n case RENDERER_TYPES.oneLine:\n return (\n <OneLineRenderer\n value={visibleValues[0]}\n nonVisibleValues={nonVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.multiLine:\n return (\n <MultiLineRenderer\n values={visibleValues}\n nonVisibleValues={nonVisibleValues}\n totalVisibleValues={totalVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n parentUri={parentUri}\n max={max}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.imageLine:\n return (\n <>\n <Title label={attributeType?.label} data-reltio-id=\"reltio-attribute-label\" />\n <ImageAttributesLine\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </>\n );\n case RENDERER_TYPES.special:\n return <SpecialRenderer values={visibleValues} attributeType={attributeType} />;\n }\n };\n\n return (\n <BranchDecorator enabled={drawLines} className={classnames({[styles.paddingWrapperWithLines]: drawLines})}>\n <div className={classnames({[styles.paddingWrapper]: !drawLines})}>{render()}</div>\n </BranchDecorator>\n );\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\nimport AttributesPager from './AttributesPager';\n\nconst mapStateToProps = (state, {max = undefined}) => ({\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues\n};\n\nexport {AttributesPager};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n complexContainer: {\n marginTop: '1px'\n },\n labelContainer: {\n display: 'flex',\n minHeight: '18px'\n },\n label: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 'normal',\n paddingTop: '1px',\n marginLeft: '2px'\n },\n spacer: {\n flex: 1\n }\n});\n","import React, {useContext, useEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {\n AttributeTypeType,\n isAnalyticAttribute,\n NestedAttributeValueType,\n ReferenceAttributeValueType,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType,\n isSpecialAttribute\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport AttributesList from '../AttributesList/AttributesList';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\n\nimport {useStyles} from './styles';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\nconst ComplexAttribute = ({\n attributeTypesList,\n attributeValue,\n label,\n expanded: expandedProp = false,\n children,\n showNonOv,\n attributeType,\n LabelRenderer,\n RightSlot\n}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const uri = attributeValue.uri;\n const [expanded, setExpanded] = useState(false);\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n useEffect(() => {\n setExpanded(expandedProp);\n }, [expandedProp]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null,\n ...(isSpecialAttribute(attributeType) ? attributeValue.value : {})\n }),\n [attributeValue, hasAnalyticValue, attributeType]\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={styles.complexContainer}>\n <div className={classnames(styles.labelContainer, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <ArrowExpandButton onClick={() => setExpanded((value) => !value)} expanded={expanded} />\n {LabelRenderer ? (\n <LabelRenderer attributeType={attributeType} attributeValue={attributeValue} />\n ) : (\n <>\n <Typography\n component=\"span\"\n variant=\"body2\"\n classes={{body2: styles.label}}\n className={classnames({\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri),\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </Typography>\n <div className={styles.spacer} />\n {RightSlot && <RightSlot attributeType={attributeType} attributeValue={attributeValue} />}\n <CommentsContainer\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </>\n )}\n </div>\n {expanded && (\n <AttributesList\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n drawLines={true}\n parentUri={uri}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </div>\n );\n};\n\nComplexAttribute.propTypes = {\n children: PropTypes.node,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n expanded: PropTypes.bool,\n showNonOv: PropTypes.bool,\n attributeType: AttributeTypeType,\n LabelRenderer: PropTypes.elementType,\n RightSlot: PropTypes.elementType\n};\n\nexport default ComplexAttribute;\n","export const CROSS_ICON = `<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke: #D1051E; stroke-width: 1\" viewBox=\"0 0 114 114\">\n\t<line x1=\"5\" y1=\"109\" x2=\"109\" y2=\"5\" />\n</svg>`;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {CROSS_ICON} from './cross.inline.svg';\nimport {svg2Url} from '@reltio/mdm-sdk';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nconst BORDER_WIDTH = '3px';\n\nexport const useStyles = makeStyles((theme) => ({\n image: ({imageMargin, imageHeight, imageWidth}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n deleteAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n background: `url('${svg2Url(CROSS_ICON)}') no-repeat`,\n backgroundColor: historyPalettes[HistoryOperations.deleteAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n updateAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n backgroundColor: historyPalettes[HistoryOperations.updateAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n deleteAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.deleteAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n insertAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.insertAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n updateAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.updateAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n padding: '36px 8px',\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useContext} from 'react';\nimport {AttributeType, getImageAttributeOvThumbnailUrl, ImageAttributeValue, Paging} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport classnames from 'classnames';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport Image from '../../../Image/Image';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n parentUri?: string;\n showNonOv?: boolean;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n paging,\n parentUri,\n requestNextPageOfAttributeValues,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const {appearance} = useContext(HistoryDiffContext);\n\n const renderImage: RenderImage = ({onOpenImageGalleryDialog}) => {\n const renderImage = (attribute: ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const imageAppearance = getHistoryAppearanceByUri(uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(imageAppearance);\n return (\n <div\n className={classnames(styles.image, {\n [styles[historyAttributesClassName + 'Image']]: historyAttributesClassName\n })}\n key={uri}\n data-reltio-id=\"reltio-attribute-value\"\n >\n <Image\n onClick={() => onOpenImageGalleryDialog(uri)}\n className={styles[historyAttributesClassName]}\n src={src}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n );\n};\n\nexport default ImageAttributesLine;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nconst styles = makeStyles({\n label: {\n textDecoration: 'none'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n },\n pivotingTooltip: {\n marginLeft: '4px'\n }\n});\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {evaluateDeepEntityLabel, getAttributeTypeSubAttributes, getLabel, NestedAttributeType} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\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 {getLabel(label)}\n </Box>\n </PivotingTooltip>\n );\n }, [appearance, styles, attributeValue, attributeType]);\n\n return (\n <ComplexAttribute\n label={attributeLabel}\n attributeValue={attributeValue}\n attributeTypesList={getAttributeTypeSubAttributes({}, attributeType)}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nconst styles = makeStyles((theme) => ({\n relationshipLabel: {\n marginLeft: '4px',\n color: theme.palette.text.primary\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n}));\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n getAttributeTypeSubAttributes,\n getEntityLink,\n getLabel,\n getReferencedEntityUriFromAttrValue,\n isEmptyValue,\n isOv,\n ReferenceAttributeType\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport InternalLink from '../../../InternalLink/InternalLink';\n\nimport {useOvValueStyles} from '../helpers/commonStyles';\nimport useStyles from './styles';\n\nconst ReferenceAttribute = ({attributeValue, metadata, attributeType, uiPath, ...otherProps}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const refEntityURI = getReferencedEntityUriFromAttrValue(attributeValue);\n const attributeTypeList = useMemo(() => getAttributeTypeSubAttributes(metadata, attributeType), [\n attributeType,\n metadata\n ]);\n\n const {appearance} = useContext(HistoryDiffContext);\n\n const entityLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return (\n <InternalLink\n href={isEmptyValue(appearance) ? getEntityLink({uiPath, uri: refEntityURI}) : undefined}\n className={classnames(styles[historyAttributesClassName], {\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n >\n {getLabel(attributeValue.label)}\n {attributeValue.relationshipLabel && (\n <span className={styles.relationshipLabel}>{attributeValue.relationshipLabel}</span>\n )}\n </InternalLink>\n );\n }, [attributeValue, appearance, uiPath, refEntityURI, styles, ovValueStyles.ovFalse]);\n\n return (\n <ComplexAttribute\n attributeTypesList={attributeTypeList}\n attributeValue={attributeValue}\n label={entityLabel}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nReferenceAttribute.propTypes = ReferenceAttributeType;\n\nexport default memo(ReferenceAttribute);\n","import {connect} from 'react-redux';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport mdmModule from '@reltio/mdm-module';\n\nconst mapStateToProps = (state) => {\n return {\n metadata: mdmModule.selectors.getMetadata(state),\n uiPath: mdmModule.selectors.getUIPath(state)\n };\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps)(ReferenceAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '../helpers/historyAppearance';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'start',\n justifyContent: 'space-between'\n },\n commentsContainer: {\n height: '15px',\n marginRight: '-4px' // AttributesPager padding compensation\n },\n attributeValue: {\n flex: 1,\n wordBreak: 'break-all'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.updateAttribute].color\n }\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.insertAttribute].color\n }\n },\n deleteAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n textDecoration: 'line-through',\n ...historyPalettes[HistoryOperations.deleteAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.deleteAttribute].color\n }\n },\n multilineAttribute: {\n width: 'fit-content'\n }\n});\n","import React, {useContext} from 'react';\nimport {\n AttributeType,\n getAttrDataTypeDefinition,\n getAttributeValue,\n SimpleAttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\nimport {HistoryDiffContext} from '../../../../contexts/HistoryAppearanceContext';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\nimport {getHistoryAppearanceByUri, getHistoryAttributeClassName} from '../helpers/historyAppearance';\nimport {useStyles} from './styles';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\ntype Props = {\n className?: string;\n attributeValue: SimpleAttributeValue;\n attributeType: AttributeType;\n inlined?: boolean;\n};\n\nconst SimpleAttribute = ({className, attributeType = null, attributeValue, inlined}: Props) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const dataTypeValue = (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n />\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return inlined || historyClassName ? (\n <div\n className={classnames(className, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip\n value={attributeValue}\n attributeType={attributeType}\n key={attributeValue.uri}\n className={classnames({[styles.multilineAttribute]: !inlined})}\n >\n <span\n className={classnames(styles[historyClassName], {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n </div>\n ) : (\n <div\n className={classnames(className, styles.root, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip value={attributeValue} attributeType={attributeType} key={attributeValue.uri}>\n <span\n className={classnames(styles.attributeValue, {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n <CommentsContainer\n className={styles.commentsContainer}\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default SimpleAttribute;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useOvValueStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n ovFalse: theme.inactive\n}));\n","import {\n any,\n cond,\n curry,\n has,\n isNil,\n join,\n keys,\n lte,\n pipe,\n prop,\n propSatisfies,\n split,\n slice,\n startsWith\n} from 'ramda';\nimport {HistoryAppearanceActions, HistoryDiff} from '@reltio/mdm-sdk';\n\ntype historyColors = {\n backgroundColor?: string;\n color: string;\n};\n\nexport enum HistoryOperations {\n insertAttribute = 'insertAttribute',\n updateAttribute = 'updateAttribute',\n deleteAttribute = 'deleteAttribute'\n}\n\nexport const historyPalettes: {[key: string]: historyColors} = {\n [HistoryOperations.insertAttribute]: {\n color: '#599E0E'\n },\n [HistoryOperations.updateAttribute]: {\n backgroundColor: 'rgba(255, 187, 0, 0.12)',\n color: '#CC7500'\n },\n [HistoryOperations.deleteAttribute]: {\n backgroundColor: 'rgba(255, 50, 0, 0.2)',\n color: '#CF0E26'\n }\n};\n\nexport const getHistoryAttributeClassName = (type: HistoryAppearanceActions) => {\n switch (type) {\n case 'UPDATE_ATTRIBUTE':\n return HistoryOperations.updateAttribute;\n case 'UNDO_IGNORE_ATTRIBUTE':\n case 'INSERT_ATTRIBUTE':\n return HistoryOperations.insertAttribute;\n case 'IGNORE_ATTRIBUTE':\n case 'DELETE_ATTRIBUTE':\n return HistoryOperations.deleteAttribute;\n default:\n return '';\n }\n};\n\nconst ATTRIBUTE_DELIMITER = '/';\n\nconst hasParent = pipe(split(ATTRIBUTE_DELIMITER), propSatisfies(lte(2), 'length'));\n\nconst getParentUri = pipe(split(ATTRIBUTE_DELIMITER), slice(0, -2), join(ATTRIBUTE_DELIMITER));\n\nconst getParentHistoryAppearanceByUri = curry((uri: string, history: HistoryDiff['appearance']) => {\n return cond([\n [has(uri), prop(uri)],\n [() => hasParent(uri), getParentHistoryAppearanceByUri(getParentUri(uri))]\n ])(history);\n});\n\nconst hasModifiedChildren = (uri: string) => pipe(keys, any(startsWith(uri + ATTRIBUTE_DELIMITER)));\n\nexport const getHistoryAppearanceByUri = (uri = '', history: HistoryDiff['appearance'] = {}) => {\n const state = getParentHistoryAppearanceByUri(uri, history);\n if (isNil(state)) {\n return hasModifiedChildren(uri)(history) ? 'UPDATE_ATTRIBUTE' : '';\n }\n return state;\n};\n\nexport const getHistoryAppearanceBySpecialAttributeValue = (\n name: string,\n value: string,\n history: HistoryDiff['appearance'] = {}\n) => history?.[name]?.[value];\n","import {EntityAttrTypes} from '@reltio/mdm-sdk';\n\nexport const ALWAYS_VISIBLE_TYPE_URIS = [EntityAttrTypes.roles.uri, EntityAttrTypes.tags.uri];\n","export const COMMENTS_CONTAINER_VISIBILITY_AREA = 'commentsContainerVisibilityArea';\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const AsyncMountContext = React.createContext({\n enabled: false,\n queueSizeThreshold: 0\n});\n\nAsyncMountContext.Provider.propTypes = {\n value: PropTypes.shape({\n enabled: PropTypes.bool,\n queueSizeThreshold: PropTypes.number\n })\n};\n\nAsyncMountContext.displayName = 'AsyncMountContext';\n","import React from 'react';\n\nexport const BlockImageGalleryDialogContext = React.createContext(false);\n\nBlockImageGalleryDialogContext.displayName = 'BlockImageGalleryDialogContext';\n","import React from 'react';\nimport {CollaborationObjectTypes, Comment, CommentsMap, Reply} from '@reltio/mdm-sdk';\n\nconst noop = () => {};\n\nexport const CollaborationContext = React.createContext<{\n objectTypes?: CollaborationObjectTypes[];\n commentsMap: CommentsMap;\n comments: Comment[];\n currentComment: Comment;\n 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 getComment: noop,\n getComments: () => new Promise<void>(noop),\n getCommentsCount: noop,\n createComment: () => new Promise<void>(noop),\n editComment: () => new Promise<void>(noop),\n createReply: () => new Promise<void>(noop),\n resolveThread: noop,\n reOpenThread: noop,\n clearCurrentComment: noop,\n deleteComment: noop,\n sending: false,\n loading: false,\n pageToken: null,\n deleteReply: noop,\n editReply: () => new Promise<void>(noop)\n });\n\nCollaborationContext.displayName = 'CollaborationContext';\n","import {EntitiesMap} from '@reltio/mdm-sdk';\nimport React from 'react';\n\nexport const EntitiesMapContext = React.createContext<EntitiesMap>({});\n\nEntitiesMapContext.displayName = 'EntitiesMapContext';\n","import React from 'react';\nimport {Entity} from '@reltio/mdm-sdk';\n\nexport const EntityContext = React.createContext<Entity>(null);\n\nEntityContext.displayName = 'EntityContext';\n","import React from 'react';\n\nexport const HighlightedValuesContext = React.createContext<{\n highlightedValuesUris: string[];\n highlightedClassName: string;\n}>({\n highlightedValuesUris: [],\n highlightedClassName: ''\n});\n\nHighlightedValuesContext.displayName = 'HighlightedValuesContext';\n","import React from 'react';\nimport {HistoryDiff} from '@reltio/mdm-sdk';\n\nexport const HistoryDiffContext = React.createContext<HistoryDiff>({\n appearance: undefined,\n attributes: undefined,\n roles: undefined,\n tags: undefined\n});\n\nHistoryDiffContext.displayName = 'HistoryDiffContext';\n","import React from 'react';\nimport {PivotingAttribute} from '@reltio/mdm-sdk';\n\nexport const PivotingAttributeContext = React.createContext<PivotingAttribute[]>([]);\n","import React from 'react';\n\nexport const RelatedObjectUrisContext = React.createContext<string[]>([]);\n\nRelatedObjectUrisContext.displayName = 'RelatedObjectUrisContext';\n","import React from 'react';\nimport {User} from '@reltio/mdm-sdk';\n\nexport const UsersContext = React.createContext<User[]>([]);\n\nUsersContext.displayName = 'UsersContext';\n","import {useContext, useEffect, useState, useRef} from 'react';\n\nimport {AsyncMountContext} from '../contexts/AsyncMountContext';\n\nlet queueSize = 0;\n\nexport const useAsyncMount = () => {\n const isFirstRunRef = useRef(true);\n const {enabled, queueSizeThreshold = 0} = useContext(AsyncMountContext);\n const [shouldMount, setShouldMount] = useState(!enabled || (enabled && queueSize < queueSizeThreshold));\n if (isFirstRunRef.current) {\n queueSize++;\n }\n const timerRef = useRef();\n useEffect(() => {\n queueSize--;\n if (!shouldMount) {\n timerRef.current = setTimeout(() => {\n setShouldMount(true);\n }, 0);\n return () => clearTimeout(timerRef.current);\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n isFirstRunRef.current = false;\n return shouldMount;\n};\n","import React from 'react';\n\nconst SvgDownload: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 18 18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M19 16v3H5v-3H3v3c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-3h-2zm-6-3.33l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2v9.67z\"\n id=\"Download_svg__a\"\n />\n </defs>\n <g transform=\"translate(-3 -3)\" stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"Download_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Download_svg__a\" />\n </mask>\n <path fillOpacity={0.54} fill=\"#fff\" mask=\"url(#Download_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDownload;\n"],"names":["Component","PlaceholderComponent","WithAsyncMount","forwardRef","componentProps","ref","useAsyncMount","displayName","useStyles","makeStyles","expandButton","backgroundColor","expandIcon","transition","expanded","transform","props","styles","className","otherProps","SmallIconButton","icon","ArrowRight","size","disableRipple","iconClassName","classnames","toolbar","minHeight","padding","lineHeight","title","fontSize","fontWeight","whiteSpace","overflow","textOverflow","children","classes","Toolbar","root","Typography","variant","getRelatedEntityUri","comment","entityUri","index","relatedObjectUris","indexOf","formatDate","time","i18n","theme","marginBottom","color","palette","divider","label","paddingLeft","borderLeft","text","primary","link","main","textDecoration","CommentTarget","entity","useSelector","mdm","metadata","entitiesMap","useContext","EntitiesMapContext","Box","objectType","CollaborationObjectTypes","attributeTypeUri","getAttributeTypeUriByValueUri","objectId","type","attributeType","findAttributeTypeByUri","relationTypeUri","find","startsWith","EntityUriLink","value","getEntityUriForLink","getLabel","relatedEntityUri","uri","relatedEntity","getEntityId","getContent","wordBreak","CommentContent","users","UsersContext","mentions","processor","trigger","arr","currentStr","process","i","length","currentCharacter","nextCharacter","isLastCharacter","includes","slice","push","processMentions","content","namedUsers","mention","user","username","Link","href","email","map","el","idx","Fragment","key","width","height","secondary","Avatar","split","item","toUpperCase","join","fontFamily","border","borderRadius","outline","boxShadow","maxHeight","overflowY","transitions","create","position","zIndex","textShadow","pointerEvents","TextFieldWithMentions","onChange","_","plainTextValue","uniq","display","data","id","displayTransform","appendSpaceOnAdd","isEditing","textField","maxWidth","form","alignItems","avatar","marginRight","buttons","marginLeft","marginTop","button","getPlaceholder","status","SendMessageArea","inputRef","popperRef","reply","isEditingComment","isEditingReply","onCancel","createReply","createComment","sending","editComment","editReply","CollaborationContext","setValue","useState","setPlainTextValue","setMentions","focused","setFocused","safePromise","useSafePromise","hasValue","trim","shouldShowButtons","updateValue","clearValue","useEffect","current","update","buttonSize","onSubmit","e","preventDefault","request","cond","always","commentId","replies","replyId","T","action","then","catch","console","log","disabled","newValue","newPlainTextValue","onFocus","onBlur","placeholder","Button","getButtonText","onClick","header","createdAt","body","commentTarget","message","dropdownMenu","Comment","onReply","useRef","setIsEditingComment","createdBy","createdTime","canChangeComment","resolveThread","reOpenThread","deleteComment","focus","menuItems","useMemo","sendMessageArea","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","tooltipTitle","popoverProps","PopoverClasses","menuId","component","marked","fontStyle","RepliedComment","setIsEditingReply","canChangeReply","deleteReply","flexGrow","messages","repliedComment","CollaborationItem","memo","messagesRef","addButton","visibility","COMMENTS_CONTAINER_VISIBILITY_AREA","showAlways","fillOpacity","fill","fillRule","viewBox","xmlns","d","justifyContent","cursor","childrenWrapper","top","left","right","bottom","CommentButton","React","Tooltip","AddComment","paddingRight","headerInfo","counter","resolveButton","popper","collaborationItem","hasScroll","scrollWidth","CollaborationPopup","anchorEl","onClose","open","setScrollWidth","loading","itemsCount","PopupWithArrow","placement","showForDisabled","DoneIcon","node","offsetWidth","clientWidth","onChangePopupVisibility","allowOnlyOneComment","setAnchorEl","shouldOpenPopup","setShouldOpenPopup","isOpenPopup","Boolean","currentComment","commentsMap","getComment","clearCurrentComment","objectTypes","showComments","openComments","filter","reverse","shouldShowAddCommentButton","isOpenPopupWithNewComment","useDidUpdateEffect","additionalRelatedObjectUris","RelatedObjectUrisContext","allRelatedObjectUris","event","currentTarget","handleClickCommentButton","RNDContext","createDndContext","HTML5Backend","DragAndDrop","DNDElement","manager","DndProvider","dragDropManager","useDNDProviderElement","buttonRoot","active","fade","selected","paper","minWidth","menuItem","menuText","letterSpacing","MenuItemWithTooltip","withTooltip","MenuItem","MenuItemRenderer","onMenuClose","identity","tooltip","selectable","Checkbox","checked","buttonContent","onMenuOpen","DefaultMenuItemRenderer","ButtonComponent","buttonRef","isOpen","setIsOpen","handleToggle","useCallback","stopPropagation","undefined","Menu","autoFocus","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","avatarClassName","imageClassName","mdmModule","absoluteImagePath","entityImageSource","getEntityImage","fallbackImage","getAbsoluteImageUrl","getEntityTypeImage","onImageLoadFail","target","onError","src","svg2Url","imgProps","alt","storagePath","str","endsWith","caption","errorMessage","hasError","wrapper","error","FormHelperText","helperText","margin","highlight","parts","RegExp","part","toLocaleLowerCase","stroke","strokeWidth","image","imageWidth","imageHeight","objectFit","verticalAlign","defaultContainer","defaultImage","hideImage","ImageLoadingState","ImageSizesStyles","SMALL","MEDIUM","LARGE","OVERRIDE","containerClassName","overlay","sizeStyles","imageLoadingState","setImageLoadingState","imageIsLoading","imageIsLoaded","isEmptyValue","onLoad","DefaultImage","CheckedIcon","Icon","CheckCircleIcon","RadioButtonUncheckedIcon","userSelect","selectionMode","checkedIcon","actions","actionButton","dropDownMenuButton","canBeSelected","onDeselect","noop","onSelect","onShareLink","onSetAsDefault","onDelete","onDownload","hovered","setHovered","prop","toggleSelected","ifElse","equals","showCheckBox","showActions","showDeselectButton","onMouseEnter","onMouseLeave","DownloadIcon","xmlnsXlink","xlinkHref","mask","backdrop","appBar","background","closeButton","closeIcon","headerLeft","flex","headerCenter","headerRight","modeSwitcher","Mode","ImageGalleryDialog","mode","onChangeMode","modes","GALLERY_MODE","ViewComfyIcon","DETAILS_MODE","DetailsIcon","Dialog","BackdropProps","fullScreen","AppBar","colorPrimary","CloseIcon","ModeSwitcher","modeId","DialogContent","inRouterContext","useInRouterContext","linkClassName","to","replace","window","location","origin","loadingOverlay","opacity","transparent","relativePosition","LinearProgress","textTransform","borderColor","ButtonWithTooltip","ButtonGroup","String","newMode","popoverRoot","arrow","boxSizing","shadows","arrowRef","setArrowRef","Popper","modifiers","preventOverflow","enabled","boundariesElement","element","modal","ClickAwayListener","onClickAway","child","Array","from","document","querySelectorAll","some","contains","Paper","autofocus","onSearch","rootRef","localValue","setLocalValue","pipe","tap","inputValue","isNil","startAdornment","InputAdornment","endAdornment","clearButton","input","classNames","container","getValue","disableUnderline","white","hideTitle","hideSearchInput","headerPlacement","containerWidth","containerHeight","searchInputOnKeyDown","searchInputRef","onKeyDown","searchInputContainer","style","list","useKeyboardNavigation","items","onSelectFocusedItem","selectedItems","focusIndex","setFocusIndex","restoreFocusIndex","increaseFocusIndex","currentIndex","newIndex","isTitleItem","decreaseFocusIndex","handleSelectFocusedItem","notSelectable","groupData","handleKeyDown","moveIndex","findIndex","listItem","moveTo","flexDirection","flexShrink","paddingBottom","paddingTop","isRequired","RequiredMark","stickyTitlesWrapper","titleItemIndex","VirtualGroupedList","getItemSize","renderItem","renderGroupTitle","fixedTitle","itemKey","disableHorizontalScrollbar","hideSubtitles","onInnerContainerResize","listRef","itemsRef","titlesRef","itemOffsets","currentTitleParams","topMargin","hasSubTitles","calcOffsetsToIndex","curItemsLength","prevItemSize","forEach","realIndex","getTitleByIndex","getItemByIndex","requestAnimationFrame","scrollTo","resetAfterIndex","setTitleWidth","scrollToOffset","indexItem","titleIndex","offset","titleHeight","calcMoveToOffset","state","scrollOffset","getItemByOffset","result","nextOffset","_getItemSize","render","handleOnItemsRendered","useScrollToFocusItem","renderTitles","renderTitle","handleHeight","onResize","targetDomEl","itemCount","itemSize","innerRef","onScroll","scrollDirection","topItem","currentTitleIndex","dataset","toString","itemAfterTitle","nextTitleIndex","fromIndex","nextTitleOffset","getOffsetByIndex","setTitleTopMargin","overflowX","overscanCount","onItemsRendered","propTypes","PropTypes","flattenGroupedItemsData","groupedItems","getFlattenedItems","flatten","concat","visibleStartIndexRef","visibleStopIndexRef","visibleStartIndex","visibleStopIndex","Math","max","scrollToItem","min","lineStyle","decorator","arrowWidth","borderBottom","plain","horizontalLineWidth","alignContent","mainImageContainer","mainImage","arrowButton","arrowButtonPrev","arrowButtonNext","thumbnails","gridContainer","thumb","inactiveThumb","Thumbnails","attributeValues","setAttributeValueIndex","attributeValueIndex","gridRef","containerScrollLeft","scrollLeft","currentElementPosition","scroll","IMAGE_WIDTH","Grid","wrap","direction","spacing","Image","getImageAttributeOvThumbnailUrl","ImageDetailsViewCarousel","attributeValue","mainImageSrc","getImageAttributeOvPreviewUrl","NavigateBeforeIcon","NavigateNextIcon","SYSTEM_ATTRIBUTES_TITLES","CreationTime","CreationDate","Dimensions","MimeType","Size","Url","UrlPreview","UrlThumbnail","CdnUrl","CdnUrlPreview","CdnUrlThumbnail","getFormattedSystemImageAttributeValue","name","path","moment","CreationTimestamp","format","Height","Width","Number","toFixed","filterByNotSystemAttributeTypes","attrTypes","system","filterByFieldsOrder","keys","fieldsOrder","includeNames","excludeNames","order","filteredKeys","sort","a","b","indA","indB","getNotSystemAttributesList","attrValue","attrType","notSystemAttrTypes","attributes","Object","reduce","values","isLink","canAdd","MetaInfoHeader","onAddAttributes","moreAttrTypes","MoreAttributesButton","dense","onApply","parentUri","Divider","float","wordWrap","MetaInfoItem","MetaInfoList","imageAttributeFieldsOrder","isViewMode","systemAttributesList","notSystemAttributesList","AttributesPager","drawLines","titleClassName","contentClassName","cancelButton","MetaInfoForm","hasChanges","onDeleteAttribute","onChangeAttribute","shouldShowActionButtons","showEmptyEditors","isTempUri","darkTheme","darkMuiTheme","createMuiTheme","MetaInfo","initialAttributeValue","addAttributes","changeAttribute","deleteAttribute","clearLocalChanges","applyLocalChanges","dispatch","useDispatch","viewId","ViewIdContext","setAttributeValue","prevAttrValue","attribute","addAttribute","nestingLevel","editAttribute","removeAttribute","profile","useEditMetaInfo","isEditableMode","headerTitle","bodyWrapper","formControlLabel","checkboxLabel","checkbox","ImageDetailsViewSidebar","handleSetAsDefault","modifiedEntity","entityToShow","imageAttributeConfig","default","isDefault","setIsDefault","defaultProfilePic","handleChange","FormControlLabel","control","details","ImageDetailsView","currentAttributeValueUri","setCurrentAttributeValueUri","onChangeAttributeValueIndex","GalleryView","onSelectImage","onDeselectImage","onClickImage","renderImageActionsOverlay","ImageActionsOverlay","selectButton","HeaderLeft","onSelectAll","onClearAll","selectedAllItems","underline","downloadButton","shareButton","deleteButton","HeaderRight","onShare","onUpload","startIcon","CloudUpload","LinkIcon","DeleteIcon","setSelectedItems","setMode","imageItems","downloadURL","getImageAttributeOvUrl","handleShareLink","propEq","handleDelete","isGalleryMode","isDetailsMode","hasSelectedItems","isHasSelectedItemsOrDetailsMode","isShowDeleteButton","isShowUploadButton","pluck","downloadURLs","imageBox","flexWrap","moreButtonContainer","moreButton","number","textAlign","renderImage","countFixedItems","imageSize","DEFAULT_IMAGE_SIZE","paging","showNonOv","requestNextPageOfAttributeValues","totalVisibleValues","totalOvValues","totalValues","attributeTypeName","defaultMaxValues","lastWidth","maxItems","setMaxItems","hiddenItemsLength","setHiddenItemsLength","isBlockImageGalleryDialog","BlockImageGalleryDialogContext","isOpenDialog","setIsOpenDialog","adjustMaxItemsToScreenWidth","imageMargin","maxItemsPerScreen","floor","hasHiddenImage","IMAGE_MIN_VISIBLE_WIDTH","handleResize","handleOpenImageGalleryDialog","handleCloseImageGalleryDialog","handleDownload","urls","url","isAbsoluteUrl","URL","host","isExternalUrl","iframe","createElement","setAttribute","appendChild","setTimeout","removeChild","download","pop","getFilenameFromURL","click","downloadImagesByURLs","navigator","clipboard","writeText","insertDefaultImageByAttrUri","renderImageProps","onOpenImageGalleryDialog","handleWidth","IMAGE_HEIGHT","ChipWithTooltip","Chip","OvIcon","nonOvValues","nonOvTotal","isComplexAttribute","DataTypeValue","getAttributeValue","dataTypeDefinition","getAttrDataTypeDefinition","rich","tooltipPlacement","AttributeTypeType","SimpleAttributeValueType","NestedAttributeValueType","ReferenceAttributeValueType","generatePivotingValue","pivotingAttributes","pivotingChildrenUris","pivotingAttribute","isArray","getPivotingChildrenUris","pivotingChildren","analyticsAttributes","acc","valueToString","valueContainer","lookupCode","isOv","preparePivotingAttributeValue","DataTypes","Date","getTime","isNaN","entityTypeLabel","headerCount","footer","profileIcon","entityContainer","entityLabel","seeAllButton","usePivotingTooltipStyles","PivotingTooltipContent","config","onSeeAllClick","entities","setEntities","total","setTotal","globalSearchRequestOptions","entityType","shouldShowSeeAllButton","filters","convertPivotingValueToSearchFilters","options","Promise","all","getFilteredEntities","getTotals","results","hasEntityTypeLabel","visibleEntity","EntityAvatar","PivotingTooltip","contentStyles","pivotingAttributesList","PivotingAttributeContext","isNestedAttribute","isNested","pivotingValue","isPivotingAttribute","handleSeeAllClick","generatedValue","fromEntries","entries","getLastUriPart","convertSimpleAttributePivotingValue","mdmModuleUi","interactive","popup","PivotingIcon","lazy","errors","crosswalks","propsForSimpleAttribute","NestedAttribute","ReferenceAttribute","SimpleAttributeEditor","isReltioCrosswalk","build","AttributesList","parentAttributeType","alwaysVisibleTypeUris","ALWAYS_VISIBLE_TYPE_URIS","additionalControlsRenderer","hasDeletionsMap","setHasDeletionsMap","setHasDeletions","attrTypeUri","prevMap","canCreateParentAttrType","checkCanCreateAttribute","source","isSpecialAttribute","both","isAnalyticAttribute","getSource","nameProp","getNameProp","singleValue","isRoleAttrType","isTagAttrType","has","getMoreAttrTypes","getCreatableAttributeTypes","pinnedAttributes","PinnedAttributesContext","pagersData","getAttributesListForEditMode","alwaysVisiblePagersData","regularPagersData","splitPagersData","onAddMoreAttributes","attributeTypes","getParentUri","decoratorProps","hasDeletionsContextValue","BranchDecorator","parent","HasDeletionsContext","ModeType","valueCaption","hasMinValue","hasMaxValue","noMaxValue","not","minValueIsOne","propSatisfies","minValue","generateMinCardinality","minValueCaption","generateMaxCardinality","maxValue","maxValueCaption","getCardinalityMessage","allPass","minCardinality","CardinalityMessage","cardinality","CardinalityType","filterNewValues","nonVisibleValues","onDeactivateError","visibleValuesCount","setVisibleValuesCount","hadDeletions","setHadDeletions","required","checkIsEditableMode","isPinned","isEmptyValues","showEmpty","emptyEditorValue","createNewAttribute","onAddOneMore","newValuesCount","totalProp","add","totalNonVisibleValues","hasPaging","showMore","showLess","shownValues","lastIndex","hiddenValuesCount","titleWrapper","Title","ovIcon","ErrorMessage","typeError","attributesWrapper","Attribute","ownError","getAttributeOwnError","ShowMore","moreNumber","valueNumber","ShowLess","roleContainer","components","MultiValue","MultiValueChip","Roles","getRolesForEntityType","role","formattedValues","roles","EntityAttrTypes","SimpleDropDownSelector","isMulti","getQuery","searchQuery","buildFilterQueryString","fieldName","filtersWithSearch","orderType","getSuggestions","getFacets","query","response","tags","TypeaheadEditor","fullWidth","multiple","withContext","contextValue","hasDeletions","hasDeletionsProp","hasDeletionsState","setHasDeletionsState","updateHasDeletions","isActivenessAttrType","renderValue","RENDERER_TYPES","Infinity","partitionByOv","partition","ovValues","visibleValues","commonProps","special","isImage","imageLine","ImageAttributesLine","renderAttribute","mapDispatchToProps","connect","getAttributePagerActiveTypeErrorMessage","textIndent","editor","titleContainer","deleted","editedLabel","errorWrapperHelperText","ComplexAttribute","attributeTypesList","hideDeleteButton","expandedProp","edited","isNew","defaultExpand","setExpanded","canDelete","checkCanDeleteAttribute","showDeleteButton","hasDescendantsWithErrors","hasAttributeDescendantsWithErrors","hasAnalyticValue","attributeListEntity","getErrorMessage","ArrowExpandButton","ErrorWrapper","ComplexAttributeType","defaultAttributeTypesSelectionStrategy","EntityCreator","attributeTypesSelectionStrategy","ownProps","emptyEntityLabel","entityAvatar","entitySecondaryLabel","useSingleValueStyles","linkValue","useGroupStyles","addLabel","groupHeading","addIcon","useClearIconStyles","clearIcon","EntityOption","innerProps","selectOption","secondaryLabel","EntityTypeIcon","EntityType","SingleValue","selectProps","currentEntityType","menuIsOpen","disableLinkClick","uiPath","valueProps","onMouseDown","ui","getEntityLink","ClearIndicator","onClear","IconButton","Clear","Group","ComponentsGroup","onCreate","Add","creatorWrapper","EntitySelector","entityTypesUris","setInputValue","entityTypes","getEntityType","handleCreate","entityTypeUri","groupMode","isEmpty","createLabel","isTempEntity","groupComponent","GroupHeading","EmptyStub","clearComponent","TextFieldProps","dropDownSelectorProps","textFieldProps","DropDownSelector","onInputChange","getOptions","newOptions","addDummyOptionToEmptyOptionList","filteredEntityTypes","option","buildEntityOptions","getOptionLabel","Option","isClearable","ConnectionEntityType","MetadataType","inputRoot","isEmptyField","ImageByUrlField","onSend","setError","InputBase","isCorrectUrl","test","IMAGE_TYPES","SelectImageButton","onAppendFile","onInput","files","accept","htmlFor","x1","y1","x2","y2","stopColor","stopOpacity","cx","cy","r","rx","ry","isActive","description","TargetBox","canDrop","isOver","drop","useDrop","NativeTypes","FILE","collect","monitor","UploadIcon","MAX_IMAGE_SIZE","DividerWithText","ErrorSnackbar","Snackbar","dialogPaper","targetBox","UploadImageDialog","imageServicePath","environment","tenant","setLoading","uploadImage","uploadImageRequest","res","err","finally","isCorrectType","LinearLoadIndicator","uploadContainer","uploadButton","uploadIcon","isVisibleUploadDialog","setIsVisibleUploadDialog","toggleVisibilityUploadDialog","visible","handleAddAttributes","generateUri","ov","handleDeleteAttribute","param","newDefaultPic","methods","imageUrl","CloudUploadIcon","moreAttributes","popupContainer","moreAttributesPopup","buttonLabel","subHeader","noResultsCaptionContainer","filterItems","curry","filterText","toLowerCase","preparedGroupedItems","GROUP_NAMES","popupTitle","setFilter","hasGroups","parentGroupLength","attributesGroupLength","preparedParentGroupItem","parentGroup","preparedAttributesGroupItems","attributesGroup","useMoreAttributesItems","handleListItemClick","append","reject","handleSearchOnEnter","any","focusIndexRef","groupsCount","listHeight","listItemRenderer","level","isChecked","isFocused","AttributeListItem","Highlighter","labelInText","LogoIcon","ListItem","SelectionPopup","gutterBottom","evaluateDeepEntityLabel","dataLabelPattern","NestedAttributeType","onDeleteModifiedEntity","onUpdateModifiedEntity","referencedEntity","getReferencedEntityFromAttrValue","referencedRelation","getReferencedRelationFromAttrValue","referencedEntityTypeUri","getReferencedEntityTypeUriFromAttrType","referencedEntityType","allCrosswalks","addReferencedRelationCrosswalks","referencedEntityMissedError","getReferencedEntityActiveError","selectedEntity","getReferencedEntityUri","getReferencedEntityTypeUri","editableAttrTypes","getReferencedRelationAttrTypesUris","newEntityAttrTypesSelectionStrategy","referencedEntityAttributeTypesSelectionStrategy","onChangeEntity","initialAttrValue","isInitialEntity","getReferencedEntityUriFromAttrValue","modifiedValue","refEntity","convertReferencedEntityForAttrValue","refRelation","createReferencedRelationForAttrValue","getErrorId","onCreateEntity","initValue","newEntityAttrTypes","newEntity","createTemporaryEntity","canChangeReferencedEntity","checkCanEditAttribute","canCreateReferencedEntity","checkMetadataForCreate","ReferenceAttributeType","DLEditorContextCache","errorWrapper","alignSelf","attributeValueToEditorValue","canCreate","canEdit","showToEdit","dependentLookupEditorContext","isDependentLookupAttrType","valueUri","parents","missedParentsAttributeTypes","parentNodesValues","flatMap","parentNode","dependentLookupCode","modifiedEntities","connections","ownParentNodesValues","filterRelatedParentValuesForDependentLookupValueUri","parentValues","possibleParentBaseTypeUris","getAttributeValuePath","defaultTo","getBaseUri","prepend","typeUri","areOneHierarchyUris","typesMap","codeValues","getParents","isBlocked","missedParentsMessage","missedAttributeTypes","labels","words","word","autocompleteConfig","autopopulationEnabled","isAutopopulationEnabled","context","autopopulationId","cachedContext","fromCache","getDependentLookupEditorContext","deactivateError","showAddButton","deletedProps","DataTypeValueEditor","attributeUriToSearchUri","prepareChangeData","AddIcon","getErrorType","ErrorType","AttributeErrorType","withAsyncMount","parseBoolean","utils","editorValueToAttributeValue","editorValue","valueOf","getFilteredAttrTypes","includeUris","excludeUris","__","SimpleAttribute","getAttributesListForReadMode","visibleAttributePagersData","commonStyles","titleRow","paddingWrapper","paddingWrapperWithLines","useOneLineStyles","collaborationWrapper","titleIcon","useMultiLineStyles","isRelationAttrType","inlined","CommentsContainer","createRelatedObjectUris","dataReltioId","useCommonStyles","insertAttribute","historyPalettes","HistoryOperations","appearance","HistoryDiffContext","attributeAppearance","getHistoryAppearanceBySpecialAttributeValue","historyClassName","getHistoryAttributeClassName","getRoleLabel","Role","ownEntity","EntityContext","currentEntity","InternalLink","getTagLink","tag","dataTenant","getDataTenantEntityUri","Tag","isOneLineRender","complexContainer","labelContainer","spacer","LabelRenderer","RightSlot","ovValueStyles","useOvValueStyles","highlightedValuesUris","highlightedClassName","HighlightedValuesContext","body2","ovFalse","deleteAttributeImage","updateAttributeImage","outlineOffset","updateAttribute","imageAppearance","getHistoryAppearanceByUri","historyAttributesClassName","pivotingTooltip","attributeLabel","getAttributeTypeSubAttributes","relationshipLabel","refEntityURI","attributeTypeList","commentsContainer","multilineAttribute","dataTypeValue","inactive","ATTRIBUTE_DELIMITER","hasParent","lte","getParentHistoryAppearanceByUri","history","hasModifiedChildren","AsyncMountContext","queueSizeThreshold","Provider","comments","getComments","getCommentsCount","pageToken","queueSize","isFirstRunRef","shouldMount","setShouldMount","timerRef","clearTimeout"],"sourceRoot":""}
|